mirror of
https://github.com/koreader/koreader.git
synced 2025-12-18 12:02:09 +01:00
'Set typography language' action in Dispatcher (#14465)
This commit is contained in:
@@ -234,6 +234,10 @@ When the book's language tag is not among our presets, no specific features will
|
|||||||
end
|
end
|
||||||
return text
|
return text
|
||||||
end,
|
end,
|
||||||
|
checked_func = function()
|
||||||
|
return self.text_lang_tag == lang_tag
|
||||||
|
end,
|
||||||
|
radio = true,
|
||||||
callback = function()
|
callback = function()
|
||||||
-- We use an InfoMessage because the text might be too long for a Notification.
|
-- We use an InfoMessage because the text might be too long for a Notification.
|
||||||
-- Use a small timeout (but long enough to read) as this might be bothering.
|
-- Use a small timeout (but long enough to read) as this might be bothering.
|
||||||
@@ -241,10 +245,7 @@ When the book's language tag is not among our presets, no specific features will
|
|||||||
text = T(_("Changed language for typography rules to %1."), BD.wrap(lang_name)),
|
text = T(_("Changed language for typography rules to %1."), BD.wrap(lang_name)),
|
||||||
timeout = 2,
|
timeout = 2,
|
||||||
})
|
})
|
||||||
self.text_lang_tag = lang_tag
|
self:onSetTypographyLanguage(lang_tag)
|
||||||
self.ui.document:setTextMainLang(lang_tag)
|
|
||||||
self.ui:handleEvent(Event:new("TypographyLanguageChanged"))
|
|
||||||
self.ui:handleEvent(Event:new("UpdatePos"))
|
|
||||||
end,
|
end,
|
||||||
hold_callback = function(touchmenu_instance)
|
hold_callback = function(touchmenu_instance)
|
||||||
UIManager:show(MultiConfirmBox:new{
|
UIManager:show(MultiConfirmBox:new{
|
||||||
@@ -268,9 +269,6 @@ When the book's language tag is not among our presets, no specific features will
|
|||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
end,
|
end,
|
||||||
checked_func = function()
|
|
||||||
return self.text_lang_tag == lang_tag
|
|
||||||
end,
|
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -456,6 +454,7 @@ These settings will apply to all books with any hyphenation dictionary.
|
|||||||
return self.hyphenation and not self.hyph_soft_hyphens_only
|
return self.hyphenation and not self.hyph_soft_hyphens_only
|
||||||
and not self.hyph_force_algorithmic
|
and not self.hyph_force_algorithmic
|
||||||
end,
|
end,
|
||||||
|
radio = true,
|
||||||
enabled_func = function()
|
enabled_func = function()
|
||||||
return self.hyphenation
|
return self.hyphenation
|
||||||
end,
|
end,
|
||||||
@@ -493,6 +492,7 @@ These settings will apply to all books with any hyphenation dictionary.
|
|||||||
-- so have that check even if we reset them above)
|
-- so have that check even if we reset them above)
|
||||||
return self.hyphenation and not self.hyph_soft_hyphens_only and self.hyph_force_algorithmic
|
return self.hyphenation and not self.hyph_soft_hyphens_only and self.hyph_force_algorithmic
|
||||||
end,
|
end,
|
||||||
|
radio = true,
|
||||||
enabled_func = function()
|
enabled_func = function()
|
||||||
return self.hyphenation
|
return self.hyphenation
|
||||||
end,
|
end,
|
||||||
@@ -528,6 +528,7 @@ These settings will apply to all books with any hyphenation dictionary.
|
|||||||
checked_func = function()
|
checked_func = function()
|
||||||
return self.hyphenation and self.hyph_soft_hyphens_only
|
return self.hyphenation and self.hyph_soft_hyphens_only
|
||||||
end,
|
end,
|
||||||
|
radio = true,
|
||||||
enabled_func = function()
|
enabled_func = function()
|
||||||
return self.hyphenation
|
return self.hyphenation
|
||||||
end,
|
end,
|
||||||
@@ -578,6 +579,29 @@ function ReaderTypography:addToMainMenu(menu_items)
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function ReaderTypography:onSetTypographyLanguage(lang_tag)
|
||||||
|
if lang_tag == true then -- book language, from Dispatcher
|
||||||
|
lang_tag = self.book_lang_tag
|
||||||
|
or G_reader_settings:readSetting("text_lang_fallback")
|
||||||
|
or G_reader_settings:readSetting("text_lang_default")
|
||||||
|
end
|
||||||
|
if lang_tag then
|
||||||
|
self.text_lang_tag = lang_tag
|
||||||
|
self.ui.document:setTextMainLang(lang_tag)
|
||||||
|
self.ui:handleEvent(Event:new("TypographyLanguageChanged"))
|
||||||
|
self.ui:handleEvent(Event:new("UpdatePos"))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function ReaderTypography.getLangTags() -- for Dispatcher
|
||||||
|
local tags, names = { true }, { _("book language") }
|
||||||
|
for i, v in ipairs(LANGUAGES) do
|
||||||
|
tags[i + 1] = v[1]
|
||||||
|
names[i + 1] = v[4]
|
||||||
|
end
|
||||||
|
return tags, names
|
||||||
|
end
|
||||||
|
|
||||||
function ReaderTypography:onToggleFloatingPunctuation(toggle)
|
function ReaderTypography:onToggleFloatingPunctuation(toggle)
|
||||||
-- for some reason the toggle value read from history files may stay boolean
|
-- 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
|
-- and there seems no more elegant way to convert boolean values to numbers
|
||||||
@@ -785,23 +809,20 @@ function ReaderTypography:onPreRenderDocument(config)
|
|||||||
-- user can see it and switch from and back to it easily
|
-- user can see it and switch from and back to it easily
|
||||||
table.insert(self.language_submenu, 1, {
|
table.insert(self.language_submenu, 1, {
|
||||||
text = T(_("Book language: %1"), self.book_lang_tag or _("N/A")),
|
text = T(_("Book language: %1"), self.book_lang_tag or _("N/A")),
|
||||||
callback = function()
|
|
||||||
UIManager:show(InfoMessage:new{
|
|
||||||
text = T(_("Changed language for typography rules to book language: %1."), BD.wrap(self.book_lang_tag)),
|
|
||||||
timeout = 2,
|
|
||||||
})
|
|
||||||
self.text_lang_tag = self.book_lang_tag
|
|
||||||
self.ui.doc_settings:saveSetting("text_lang", self.text_lang_tag)
|
|
||||||
self.ui.document:setTextMainLang(self.text_lang_tag)
|
|
||||||
self.ui:handleEvent(Event:new("TypographyLanguageChanged"))
|
|
||||||
self.ui:handleEvent(Event:new("UpdatePos"))
|
|
||||||
end,
|
|
||||||
enabled_func = function()
|
enabled_func = function()
|
||||||
return self.book_lang_tag ~= nil
|
return self.book_lang_tag ~= nil
|
||||||
end,
|
end,
|
||||||
checked_func = function()
|
checked_func = function()
|
||||||
return self.text_lang_tag == self.book_lang_tag
|
return self.text_lang_tag == self.book_lang_tag
|
||||||
end,
|
end,
|
||||||
|
radio = true,
|
||||||
|
callback = function()
|
||||||
|
UIManager:show(InfoMessage:new{
|
||||||
|
text = T(_("Changed language for typography rules to book language: %1."), BD.wrap(self.book_lang_tag)),
|
||||||
|
timeout = 2,
|
||||||
|
})
|
||||||
|
self:onSetTypographyLanguage(self.book_lang_tag)
|
||||||
|
end,
|
||||||
separator = true,
|
separator = true,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ local Notification = require("ui/widget/notification")
|
|||||||
local ReaderDictionary = require("apps/reader/modules/readerdictionary")
|
local ReaderDictionary = require("apps/reader/modules/readerdictionary")
|
||||||
local ReaderFooter = require("apps/reader/modules/readerfooter")
|
local ReaderFooter = require("apps/reader/modules/readerfooter")
|
||||||
local ReaderHighlight = require("apps/reader/modules/readerhighlight")
|
local ReaderHighlight = require("apps/reader/modules/readerhighlight")
|
||||||
|
local ReaderTypography = require("apps/reader/modules/readertypography")
|
||||||
local ReaderZooming = require("apps/reader/modules/readerzooming")
|
local ReaderZooming = require("apps/reader/modules/readerzooming")
|
||||||
local Screen = Device.screen
|
local Screen = Device.screen
|
||||||
local UIManager = require("ui/uimanager")
|
local UIManager = require("ui/uimanager")
|
||||||
@@ -218,6 +219,7 @@ local settingsList = {
|
|||||||
export_annotations = {category="none", event="ExportAnnotations", title=_("Export annotations"), reader=true},
|
export_annotations = {category="none", event="ExportAnnotations", title=_("Export annotations"), reader=true},
|
||||||
|
|
||||||
-- Reflowable documents
|
-- Reflowable documents
|
||||||
|
set_typography_lang = {category="string", event="SetTypographyLanguage", title=_("Set typography language"), args_func=ReaderTypography.getLangTags, rolling=true, separator=true},
|
||||||
set_font = {category="string", event="SetFont", title=_("Font face"), rolling=true, args_func=require("fontlist").getFontArgFunc,},
|
set_font = {category="string", event="SetFont", title=_("Font face"), rolling=true, args_func=require("fontlist").getFontArgFunc,},
|
||||||
increase_font = {category="incrementalnumber", event="IncreaseFontSize", min=0.5, max=255, step=0.5, title=_("Increase font size"), rolling=true},
|
increase_font = {category="incrementalnumber", event="IncreaseFontSize", min=0.5, max=255, step=0.5, title=_("Increase font size"), rolling=true},
|
||||||
decrease_font = {category="incrementalnumber", event="DecreaseFontSize", min=0.5, max=255, step=0.5, title=_("Decrease font size"), rolling=true},
|
decrease_font = {category="incrementalnumber", event="DecreaseFontSize", min=0.5, max=255, step=0.5, title=_("Decrease font size"), rolling=true},
|
||||||
@@ -462,6 +464,8 @@ local dispatcher_menu_order = {
|
|||||||
"export_annotations",
|
"export_annotations",
|
||||||
|
|
||||||
-- Reflowable documents
|
-- Reflowable documents
|
||||||
|
"set_typography_lang",
|
||||||
|
----
|
||||||
"set_font",
|
"set_font",
|
||||||
"increase_font",
|
"increase_font",
|
||||||
"decrease_font",
|
"decrease_font",
|
||||||
@@ -941,6 +945,7 @@ function Dispatcher:_addItem(caller, menu, location, settings, section)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
radio = true,
|
||||||
callback = function()
|
callback = function()
|
||||||
setValue(k, settingsList[k].args[i])
|
setValue(k, settingsList[k].args[i])
|
||||||
end,
|
end,
|
||||||
|
|||||||
Reference in New Issue
Block a user