Merge pull request #745 from chrox/master

show 'no definition found' message when no definition is found in dictionary lookup
pull/749/head v2014.07.27-nightly
Qingping Hou 10 years ago
commit f691a403ec

@ -5,6 +5,7 @@ local Geom = require("ui/geometry")
local Screen = require("ui/screen")
local JSON = require("JSON")
local DEBUG = require("dbg")
local _ = require("gettext")
local ReaderDictionary = EventListener:new{}
@ -24,10 +25,21 @@ function ReaderDictionary:stardictLookup(word, box)
local std_out = io.popen("./sdcv --utf8-input --utf8-output -nj "..("%q"):format(word), "r")
local results_str = nil
if std_out then results_str = std_out:read("*all") end
if results_str then
--DEBUG("result str:", word, results_str)
local ok, results = pcall(JSON.decode, JSON, results_str)
--DEBUG("lookup result table:", word, results)
--DEBUG("result str:", word, results_str)
local ok, results = pcall(JSON.decode, JSON, results_str)
if ok and results then
DEBUG("lookup result table:", word, results)
self:showDict(results, box)
else
-- dummy results
results = {
{
dict = "",
word = word,
definition = _("No definition found."),
}
}
DEBUG("dummy result table:", word, results)
self:showDict(results, box)
end
end

@ -1,15 +1,17 @@
local InputContainer = require("ui/widget/container/inputcontainer")
local CenterContainer = require("ui/widget/container/centercontainer")
local InfoMessage = require("ui/widget/infomessage")
local InputDialog = require("ui/widget/inputdialog")
local TouchMenu = require("ui/widget/touchmenu")
local GestureRange = require("ui/gesturerange")
local UIManager = require("ui/uimanager")
local Device = require("ui/device")
local GestureRange = require("ui/gesturerange")
local Geom = require("ui/geometry")
local Event = require("ui/event")
local Screen = require("ui/screen")
local Menu = require("ui/widget/menu")
local InfoMessage = require("ui/widget/infomessage")
local Language = require("ui/language")
local DEBUG = require("dbg")
local _ = require("gettext")
local ReaderMenu = InputContainer:new{
@ -81,6 +83,7 @@ function ReaderMenu:setUpdateItemTable()
G_reader_settings:saveSetting("night_mode", not night_mode)
end
})
table.insert(self.tab_item_table.main, self:genRefreshRateMenu())
table.insert(self.tab_item_table.main, {
text = _("Show advanced options"),
checked_func = function() return G_reader_settings:readSetting("show_advanced") end,
@ -108,6 +111,88 @@ function ReaderMenu:setUpdateItemTable()
})
end
function ReaderMenu:genRefreshRateMenu()
local custom_1 = function() return G_reader_settings:readSetting("refresh_rate_1") or 12 end
local custom_2 = function() return G_reader_settings:readSetting("refresh_rate_2") or 22 end
local custom_3 = function() return G_reader_settings:readSetting("refresh_rate_3") or 99 end
return {
text = _("E-ink full refresh rate"),
sub_item_table = {
{
text = _("Every page"),
checked_func = function() return UIManager:getRefreshRate() == 1 end,
callback = function() UIManager:setRefreshRate(1) end,
},
{
text = _("Every 6 pages"),
checked_func = function() return UIManager:getRefreshRate() == 6 end,
callback = function() UIManager:setRefreshRate(6) end,
},
{
text_func = function() return _("Custom ") .. "1: " .. custom_1() .. _(" pages") end,
checked_func = function() return UIManager:getRefreshRate() == custom_1() end,
callback = function() UIManager:setRefreshRate(custom_1()) end,
hold_callback = function() self:makeCustomRateDialog("refresh_rate_1") end,
},
{
text_func = function() return _("Custom ") .. "2: " .. custom_2() .. _(" pages") end,
checked_func = function() return UIManager:getRefreshRate() == custom_2() end,
callback = function() UIManager:setRefreshRate(custom_2()) end,
hold_callback = function() self:makeCustomRateDialog("refresh_rate_2") end,
},
{
text_func = function() return _("Custom ") .. "3: " .. custom_3() .. _(" pages") end,
checked_func = function() return UIManager:getRefreshRate() == custom_3() end,
callback = function() UIManager:setRefreshRate(custom_3()) end,
hold_callback = function() self:makeCustomRateDialog("refresh_rate_3") end,
},
}
}
end
function ReaderMenu:makeCustomRate(custom_rate)
local number = tonumber(self.custom_dialog:getInputText())
G_reader_settings:saveSetting(custom_rate, number)
end
function ReaderMenu:makeCustomRateDialog(custom_rate)
self.custom_dialog = InputDialog:new{
title = _("Input page number for a full refresh"),
input_hint = "(1 - 99)",
buttons = {
{
{
text = _("Cancel"),
callback = function()
self:closeMakeCustomDialog()
end,
},
{
text = _("OK"),
callback = function()
self:makeCustomRate(custom_rate)
self:closeMakeCustomDialog()
end,
},
},
},
input_type = "number",
enter_callback = function()
self:makeCustomRate(custom_rate)
self:closeMakeCustomDialog()
end,
width = Screen:getWidth() * 0.8,
height = Screen:getHeight() * 0.2,
}
self.custom_dialog:onShowKeyboard()
UIManager:show(self.custom_dialog)
end
function ReaderMenu:closeMakeCustomDialog()
self.custom_dialog:onClose()
UIManager:close(self.custom_dialog)
end
function ReaderMenu:onShowReaderMenu()
if #self.tab_item_table.main == 0 then
self:setUpdateItemTable()

@ -1,4 +1,6 @@
local InputContainer = require("ui/widget/container/inputcontainer")
local ConfirmBox = require("ui/widget/confirmbox")
local UIManager = require("ui/uimanager")
local Screen = require("ui/screen")
local Event = require("ui/event")
local DEBUG = require("dbg")
@ -33,9 +35,12 @@ function ReaderTypeset:onReadSettings(config)
self:onSetPageMargins(config:readSetting("copt_page_margins") or DCREREADER_CONFIG_MARGIN_SIZES_MEDIUM)
-- default to enable floating punctuation
-- the floating punctuation should not be boolean value for the following
-- expression otherwise a false value will never be returned but numerical
-- values will survive this expression
self.floating_punctuation = config:readSetting("floating_punctuation") or
G_reader_settings:readSetting("floating_punctuation") or true
self:toggleFloatingPunctuation(self.floating_punctuation and 1 or 0)
G_reader_settings:readSetting("floating_punctuation") or 1
self:toggleFloatingPunctuation(self.floating_punctuation)
end
function ReaderTypeset:onSaveSettings()
@ -113,6 +118,13 @@ function ReaderTypeset:toggleEmbeddedStyleSheet(toggle)
end
function ReaderTypeset:toggleFloatingPunctuation(toggle)
-- for some reason the toggle value read from history files may stay boolean
-- and there seems no more elegant way to convert boolean values to numbers
if toggle == true then
toggle = 1
elseif toggle == false then
toggle = 0
end
self.ui.document:setFloatingPunctuation(toggle)
self.ui:handleEvent(Event:new("UpdatePos"))
end
@ -125,11 +137,22 @@ function ReaderTypeset:addToMainMenu(tab_item_table)
})
table.insert(tab_item_table.typeset, {
text = _("Floating punctuation"),
checked_func = function() return self.floating_punctuation == true end,
checked_func = function() return self.floating_punctuation == 1 end,
callback = function()
self.floating_punctuation = not self.floating_punctuation
self:toggleFloatingPunctuation(self.floating_punctuation and 1 or 0)
end
self.floating_punctuation = self.floating_punctuation == 1 and 0 or 1
self:toggleFloatingPunctuation(self.floating_punctuation)
end,
hold_callback = function() self:makeDefaultFloatingPunctuation() end,
})
end
function ReaderTypeset:makeDefaultFloatingPunctuation()
local toggler = self.floating_punctuation == 1 and _("On") or _("Off")
UIManager:show(ConfirmBox:new{
text = _("Set default floating punctuation to ")..toggler.."?",
ok_callback = function()
G_reader_settings:saveSetting("floating_punctuation", self.floating_punctuation)
end,
})
end

@ -1,12 +1,13 @@
local TimeVal = require("ui/timeval")
local GestureRange = {
-- gesture matching type
ges = nil,
-- spatial range limits the gesture emitting position
range = nil,
-- temproal range limits the gesture emitting rate
rate = nil,
-- span limits of this gesture
-- scale limits of this gesture
scale = nil,
}
@ -22,11 +23,27 @@ function GestureRange:match(gs)
return false
end
if self.range then
if not self.range:contains(gs.pos) then
-- sometimes widget dimenension is not available when creating a gesturerage
-- for some action, now we accept a range function that will be later called
-- and the result of which will be used to check gesture match
-- e.g. range = function() return self.dimen end
-- for inputcontainer given that the x and y field of `self.dimen` is only
-- filled when the inputcontainer is painted into blitbuffer
local range = nil
if type(self.range) == "function" then
range = self.range()
else
range = self.range
end
if not range:contains(gs.pos) then
return false
end
end
if self.rate then
-- This filed restraints the upper limit rate(matches per second).
-- It's most useful for e-ink devices with less powerfull CPUs and
-- screens that cannot handle gesture events that otherwise will be
-- generated
local last_time = self.last_time or TimeVal:new{}
if gs.time - last_time > TimeVal:new{usec = 1000000 / self.rate} then
self.last_time = gs.time

@ -45,7 +45,7 @@ local UIManager = {
-- after each ui loop
partial_refresh = false,
-- trigger a full refresh when counter reaches FULL_REFRESH_COUNT
FULL_REFRESH_COUNT = DRCOUNTMAX,
FULL_REFRESH_COUNT = G_reader_settings:readSetting("full_refresh_count") or DRCOUNTMAX,
refresh_count = 0,
event_handlers = nil,
@ -222,6 +222,19 @@ function UIManager:removeZMQ(zeromq)
end
end
-- set full refresh rate for e-ink screen
-- and make the refresh rate persistant in global reader settings
function UIManager:setRefreshRate(rate)
DEBUG("set screen full refresh rate", rate)
self.FULL_REFRESH_COUNT = rate
G_reader_settings:saveSetting("full_refresh_count", rate)
end
-- get full refresh rate for e-ink screen
function UIManager:getRefreshRate(rate)
return self.FULL_REFRESH_COUNT
end
-- signal to quit
function UIManager:quit()
self._running = false

@ -239,6 +239,7 @@ function DictQuickLookup:changeToNextDict()
end
function DictQuickLookup:changeDictionary(index)
if not self.results[index] then return end
self.dict_index = index
self.dictionary = self.results[index].dict
self.lookupword = self.results[index].word
@ -306,4 +307,13 @@ function DictQuickLookup:onClose()
return true
end
function DictQuickLookup:onSwipe(arg, ges)
if ges.direction == "west" then
self:changeToNextDict()
elseif ges.direction == "east" then
self:changeToPrevDict()
end
return true
end
return DictQuickLookup

@ -50,10 +50,10 @@ function ScrollTextWidget:init()
self.dimen = Geom:new(self[1]:getSize())
if Device:isTouchDevice() then
self.ges_events = {
Swipe = {
ScrollText = {
GestureRange:new{
ges = "swipe",
range = self.dimen,
range = function() return self.dimen end,
},
},
}
@ -70,7 +70,7 @@ function ScrollTextWidget:updateScrollBar(text)
)
end
function ScrollTextWidget:onSwipe(arg, ges)
function ScrollTextWidget:onScrollText(arg, ges)
if ges.direction == "north" then
self.text_widget:scrollDown()
self:updateScrollBar(self.text_widget)
@ -79,7 +79,6 @@ function ScrollTextWidget:onSwipe(arg, ges)
self:updateScrollBar(self.text_widget)
end
UIManager:setDirty(self.dialog, "partial")
return true
end
return ScrollTextWidget

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: https://github.com/koreader/koreader-base/issues\n"
"POT-Creation-Date: 2014-07-17 14:32+0000\n"
"POT-Creation-Date: 2014-07-26 14:24+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -17,6 +17,13 @@ msgid ""
" others."
msgstr ""
#: frontend/apps/reader/modules/readermenu.lua:132
#: frontend/apps/reader/modules/readermenu.lua:138
#: frontend/apps/reader/modules/readermenu.lua:144
msgid ""
" pages"
msgstr ""
#: frontend/ui/widget/configdialog.lua:582
msgid ""
" to "
@ -58,7 +65,7 @@ msgid ""
"Apply"
msgstr ""
#: frontend/apps/reader/modules/readertypeset.lua:55
#: frontend/apps/reader/modules/readertypeset.lua:66
msgid ""
"Auto"
msgstr ""
@ -74,6 +81,7 @@ msgid ""
msgstr ""
#: frontend/apps/reader/modules/readergoto.lua:36
#: frontend/apps/reader/modules/readermenu.lua:165
#: frontend/ui/widget/confirmbox.lua:29
#: plugins/evernote.koplugin/main.lua:124
#: plugins/zsync.koplugin/main.lua:279
@ -117,17 +125,24 @@ msgid ""
"Copy"
msgstr ""
#: frontend/apps/reader/modules/readermenu.lua:132
#: frontend/apps/reader/modules/readermenu.lua:138
#: frontend/apps/reader/modules/readermenu.lua:144
msgid ""
"Custom "
msgstr ""
#: frontend/apps/filemanager/filemanager.lua:104
msgid ""
"Cut"
msgstr ""
#: frontend/apps/reader/modules/readerfont.lua:184
#: frontend/apps/reader/modules/readerfont.lua:185
msgid ""
"Decrease gamma to "
msgstr ""
#: frontend/apps/reader/modules/readerfont.lua:154
#: frontend/apps/reader/modules/readerfont.lua:155
msgid ""
"Decrease line space to "
msgstr ""
@ -164,11 +179,16 @@ msgid ""
"Document Language"
msgstr ""
#: frontend/apps/reader/modules/readermenu.lua:136
#: frontend/apps/reader/modules/readermenu.lua:221
msgid ""
"Document menu"
msgstr ""
#: frontend/apps/reader/modules/readermenu.lua:119
msgid ""
"E-ink full refresh rate"
msgstr ""
#: frontend/apps/reader/modules/readerhighlight.lua:194
msgid ""
"Edit"
@ -201,6 +221,16 @@ msgid ""
"Evernote"
msgstr ""
#: frontend/apps/reader/modules/readermenu.lua:127
msgid ""
"Every 6 pages"
msgstr ""
#: frontend/apps/reader/modules/readermenu.lua:122
msgid ""
"Every page"
msgstr ""
#: plugins/evernote.koplugin/main.lua:82
msgid ""
"Export all notes in this book"
@ -237,6 +267,11 @@ msgid ""
"Fine Tuning"
msgstr ""
#: frontend/apps/reader/modules/readertypeset.lua:139
msgid ""
"Floating punctuation"
msgstr ""
#: frontend/ui/data/strings.lua:24
msgid ""
"Font Weight"
@ -283,7 +318,7 @@ msgid ""
msgstr ""
#: frontend/apps/filemanager/filemanagermenu.lua:103
#: frontend/apps/reader/modules/readermenu.lua:102
#: frontend/apps/reader/modules/readermenu.lua:105
msgid ""
"Help"
msgstr ""
@ -304,12 +339,12 @@ msgid ""
"Hyphenation"
msgstr ""
#: frontend/apps/reader/modules/readerfont.lua:181
#: frontend/apps/reader/modules/readerfont.lua:182
msgid ""
"Increase gamma to "
msgstr ""
#: frontend/apps/reader/modules/readerfont.lua:158
#: frontend/apps/reader/modules/readerfont.lua:159
msgid ""
"Increase line space to "
msgstr ""
@ -319,6 +354,11 @@ msgid ""
"Indentation"
msgstr ""
#: frontend/apps/reader/modules/readermenu.lua:160
msgid ""
"Input page number for a full refresh"
msgstr ""
#: frontend/apps/reader/modules/readerhighlight.lua:93
msgid ""
"Invert"
@ -386,11 +426,16 @@ msgid ""
msgstr ""
#: frontend/apps/filemanager/filemanagermenu.lua:85
#: frontend/apps/reader/modules/readermenu.lua:76
#: frontend/apps/reader/modules/readermenu.lua:78
msgid ""
"Night mode"
msgstr ""
#: frontend/apps/reader/modules/readerdictionary.lua:39
msgid ""
"No definition found."
msgstr ""
#: reader.lua:95
msgid ""
"No reader engine for this file"
@ -402,11 +447,22 @@ msgid ""
msgstr ""
#: frontend/apps/reader/modules/readerfrontlight.lua:115
#: frontend/apps/reader/modules/readermenu.lua:171
#: frontend/ui/widget/confirmbox.lua:28
msgid ""
"OK"
msgstr ""
#: frontend/apps/reader/modules/readertypeset.lua:150
msgid ""
"Off"
msgstr ""
#: frontend/apps/reader/modules/readertypeset.lua:150
msgid ""
"On"
msgstr ""
#: reader.lua:85
msgid ""
"Opening file"
@ -438,7 +494,7 @@ msgid ""
msgstr ""
#: frontend/apps/filemanager/filemanagermenu.lua:106
#: frontend/apps/reader/modules/readermenu.lua:105
#: frontend/apps/reader/modules/readermenu.lua:108
msgid ""
"Please report bugs to \n"
"https://github.com/koreader/koreader/issues"
@ -469,7 +525,7 @@ msgid ""
"Received file:"
msgstr ""
#: frontend/apps/reader/modules/readerfont.lua:208
#: frontend/apps/reader/modules/readerfont.lua:209
msgid ""
"Redrawing with font "
msgstr ""
@ -504,7 +560,12 @@ msgid ""
"Set default "
msgstr ""
#: frontend/apps/reader/modules/readerfont.lua:223
#: frontend/apps/reader/modules/readertypeset.lua:152
msgid ""
"Set default floating punctuation to "
msgstr ""
#: frontend/apps/reader/modules/readerfont.lua:224
msgid ""
"Set default font to "
msgstr ""
@ -514,7 +575,7 @@ msgid ""
"Set default zoom mode to "
msgstr ""
#: frontend/apps/reader/modules/readerfont.lua:139
#: frontend/apps/reader/modules/readerfont.lua:140
msgid ""
"Set font size to "
msgstr ""
@ -524,7 +585,7 @@ msgid ""
"Set highlight drawer "
msgstr ""
#: frontend/apps/reader/modules/readertypeset.lua:9
#: frontend/apps/reader/modules/readertypeset.lua:11
msgid ""
"Set render style"
msgstr ""
@ -534,7 +595,7 @@ msgid ""
"Share"
msgstr ""
#: frontend/apps/reader/modules/readermenu.lua:85
#: frontend/apps/reader/modules/readermenu.lua:88
msgid ""
"Show advanced options"
msgstr ""
@ -630,7 +691,7 @@ msgid ""
msgstr ""
#: frontend/apps/filemanager/filemanagermenu.lua:95
#: frontend/apps/reader/modules/readermenu.lua:94
#: frontend/apps/reader/modules/readermenu.lua:97
msgid ""
"Version"
msgstr ""
@ -716,7 +777,7 @@ msgid ""
"bold"
msgstr ""
#: frontend/apps/reader/modules/readertypeset.lua:49
#: frontend/apps/reader/modules/readertypeset.lua:60
msgid ""
"clear all external styles"
msgstr ""

Loading…
Cancel
Save