[feat, UX] SDL: add Gtk3 filechooser (#3827)

The specifics for other implementations are easy to change in the backend.
pull/3828/head
Frans de Jonge 6 years ago committed by GitHub
parent 7f4be45d4e
commit 086ced07f9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -114,6 +114,7 @@ local Input = {
-- keyboard state:
modifiers = {
Alt = false,
Ctrl = false,
Shift = false,
},
@ -301,9 +302,22 @@ function Input:handleKeyBoardEv(ev)
end
end
local FileChooser = self.file_chooser
if FileChooser and self:isEvKeyPress(ev)
and self.modifiers["Ctrl"] and keycode == "O" then
logger.dbg("Opening FileChooser:", FileChooser.type)
local file_path = FileChooser:open()
if file_path then
local ReaderUI = require("apps/reader/readerui")
ReaderUI:doShowReader(file_path)
end
return
end
-- quit on Alt + F4
-- this is also emitted by the close event in SDL
if self.modifiers["Alt"] and keycode == "F4" then
if self:isEvKeyPress(ev) and self.modifiers["Alt"] and keycode == "F4" then
local Device = require("frontend/device")
local UIManager = require("ui/uimanager")

@ -49,6 +49,7 @@ function Device:init()
-- SDL events can remain cdata but are almost completely transparent
local SDL_MOUSEWHEEL = 1027
local SDL_MULTIGESTURE = 2050
local SDL_DROPFILE = 4096
local SDL_WINDOWEVENT_RESIZED = 5
@ -99,6 +100,9 @@ function Device:init()
UIManager:broadcastEvent(fake_pan_ev)
UIManager:broadcastEvent(fake_release_ev)
end
elseif ev.code == SDL_MULTIGESTURE then
-- no-op for now
do end -- luacheck: ignore 541
elseif ev.code == SDL_DROPFILE then
local dropped_file_path = ev.value
if dropped_file_path and dropped_file_path ~= "" then
@ -132,6 +136,7 @@ function Device:init()
setClipboardText = function(text)
return input.setClipboardText(text)
end,
file_chooser = input.file_chooser,
}
else
self.screen = require("ffi/framebuffer_SDL1_2"):new{device = self, debug = logger.dbg}

@ -32,4 +32,7 @@ return {
[81] = "Down", -- arrow down
[78] = "RPgFwd", -- normal PageDown
[76] = "Del", -- Delete
[101] = "ContextMenu", -- Context menu key
[224] = "Ctrl", -- Left Ctrl
[228] = "Ctrl", -- Right Ctrl
}

Loading…
Cancel
Save