2
0
mirror of https://github.com/koreader/koreader synced 2024-11-11 19:11:14 +00:00
koreader/reader.lua
Qingping Hou ae6c4bd03a Merge branch 'new_ui_code' of github.com:hwhw/kindlepdfviewer into rotate
Conflicts:
	frontend/ui/reader/readerconfig.lua
2013-02-04 15:00:17 +08:00

189 lines
3.8 KiB
Lua
Executable File

#!./kpdfview
package.path = "./frontend/?.lua"
require "ui/ui"
require "ui/readerui"
require "ui/filechooser"
require "ui/infomessage"
require "ui/button"
require "document/document"
HomeMenu = InputContainer:new{
item_table = {},
ges_events = {
TapShowMenu = {
GestureRange:new{
ges = "tap",
range = Geom:new{
x = 0, y = 0,
w = Screen:getWidth(),
h = 25,
}
}
},
},
}
function HomeMenu:setUpdateItemTable()
table.insert(self.item_table, {
text = "Exit",
callback = function()
os.exit(0)
end
})
end
function HomeMenu:onTapShowMenu()
if #self.item_table == 0 then
self:setUpdateItemTable()
end
local home_menu = Menu:new{
title = "Home menu",
item_table = self.item_table,
width = Screen:getWidth() - 100,
}
local menu_container = CenterContainer:new{
ignore = "height",
dimen = Screen:getSize(),
home_menu,
}
home_menu.close_callback = function ()
UIManager:close(menu_container)
end
UIManager:show(menu_container)
return true
end
function showReader(file, pass)
local document = DocumentRegistry:openDocument(file)
if not document then
UIManager:show(InfoMessage:new{ text = "No reader engine for this file" })
return
end
local reader = ReaderUI:new{
dialog = readerwindow,
dimen = Screen:getSize(),
document = document,
password = pass
}
UIManager:show(reader)
end
function showHomePage(path)
local FileManager = FileChooser:new{
title = "FileManager",
path = path,
width = Screen:getWidth(),
height = Screen:getHeight(),
is_borderless = true,
has_close_button = false,
filter = function(filename)
if DocumentRegistry:getProvider(filename) then
return true
end
end
}
local HomePage = InputContainer:new{
FileManager,
HomeMenu,
}
function FileManager:onFileSelect(file)
showReader(file)
return true
end
function FileManager:onClose()
--UIManager:quit()
return true
end
UIManager:show(HomePage)
end
-- option parsing:
longopts = {
debug = "d",
help = "h",
}
function showusage()
print("usage: ./reader.lua [OPTION] ... path")
print("Read all the books on your E-Ink reader")
print("")
print("-d start in debug mode")
print("-h show this usage help")
print("")
print("If you give the name of a directory instead of a file path, a file")
print("chooser will show up and let you select a file")
print("")
print("If you don't pass any path, the last viewed document will be opened")
print("")
print("This software is licensed under the GPLv3.")
print("See http://github.com/hwhw/kindlepdfviewer for more info.")
return
end
if ARGV[1] == "-h" then
return showusage()
end
local argidx = 1
if ARGV[1] == "-d" then
argidx = argidx + 1
else
DEBUG = function() end
end
if Device:hasNoKeyboard() then
-- remove menu item shortcut for K4
Menu.is_enable_shortcut = false
end
-- set up reader's setting: font
G_reader_settings = DocSettings:open(".reader")
fontmap = G_reader_settings:readSetting("fontmap")
if fontmap ~= nil then
Font.fontmap = fontmap
end
local last_file = G_reader_settings:readSetting("lastfile")
--@TODO we can read version here, refer to commit in master tree: (houqp)
--87712cf0e43fed624f8a9f610be42b1fe174b9fe
if ARGV[argidx] then
if lfs.attributes(ARGV[argidx], "mode") == "directory" then
showHomePage(ARGV[argidx])
elseif lfs.attributes(ARGV[argidx], "mode") == "file" then
showReader(ARGV[argidx])
end
UIManager:run()
elseif last_file and lfs.attributes(last_file, "mode") == "file" then
showReader(last_file)
UIManager:run()
else
return showusage()
end
input.closeAll()
if util.isEmulated()==0 then
if Device:isKindle3() or (Device:getModel() == "KindleDXG") then
-- send double menu key press events to trigger screen refresh
os.execute("echo 'send 139' > /proc/keypad;echo 'send 139' > /proc/keypad")
end
end