From 506bf96379574f6fe5dfa3c7443700aaac5f9252 Mon Sep 17 00:00:00 2001 From: chrox Date: Wed, 15 Oct 2014 18:01:58 +0800 Subject: [PATCH] add menu entry to lookup input word in dictionary This should close #971. --- .../apps/reader/modules/readerdictionary.lua | 23 ++++++++++++++++--- .../apps/reader/modules/readerwikipedia.lua | 7 +++++- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/frontend/apps/reader/modules/readerdictionary.lua b/frontend/apps/reader/modules/readerdictionary.lua index 66f1ecb33..c624feb9e 100644 --- a/frontend/apps/reader/modules/readerdictionary.lua +++ b/frontend/apps/reader/modules/readerdictionary.lua @@ -1,13 +1,30 @@ -local EventListener = require("ui/widget/eventlistener") -local UIManager = require("ui/uimanager") +local InputContainer = require("ui/widget/container/inputcontainer") local DictQuickLookup = require("ui/widget/dictquicklookup") +local UIManager = require("ui/uimanager") 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{} +local ReaderDictionary = InputContainer:new{} + +function ReaderDictionary:init() + self.ui.menu:registerToMainMenu(self) +end + +function ReaderDictionary:addToMainMenu(tab_item_table) + table.insert(tab_item_table.plugins, { + text = _("Dictionary lookup"), + tap_input = { + title = _("Input word to lookup"), + type = "text", + callback = function(input) + self:onLookupWord(input) + end, + }, + }) +end function ReaderDictionary:onLookupWord(word, box, highlight) self.highlight = highlight diff --git a/frontend/apps/reader/modules/readerwikipedia.lua b/frontend/apps/reader/modules/readerwikipedia.lua index f1418eff8..ce34f8f31 100644 --- a/frontend/apps/reader/modules/readerwikipedia.lua +++ b/frontend/apps/reader/modules/readerwikipedia.lua @@ -11,12 +11,17 @@ local DEBUG = require("dbg") local _ = require("gettext") -- Wikipedia as a special dictionary -local ReaderWikipedia = ReaderDictionary:new{ +local ReaderWikipedia = ReaderDictionary:extend{ -- identify itself wiki = true, no_page = _("No wiki page found."), } +-- the super "class" ReaderDictionary has already registers a menu entry +-- we should override the init function in ReaderWikipedia +function ReaderWikipedia:init() +end + function ReaderWikipedia:onLookupWikipedia(word, box) -- detect language of the text local ok, lang = pcall(Translator.detect, Translator, word)