From 706526738bc6e9536e11ba2607c846464a4a80c6 Mon Sep 17 00:00:00 2001 From: Paulo Matias Date: Wed, 22 Jan 2014 12:02:42 -0200 Subject: [PATCH] Save hyphenation algorithm as cre document setting and add hyphenation restore to floating punctuation toggle workaround --- frontend/ui/reader/readerhyphenation.lua | 29 +++++++++++++++++++++--- frontend/ui/reader/readertypeset.lua | 1 + frontend/ui/readerui.lua | 6 +++-- 3 files changed, 31 insertions(+), 5 deletions(-) diff --git a/frontend/ui/reader/readerhyphenation.lua b/frontend/ui/reader/readerhyphenation.lua index 08c57c14d..bbf1a2daa 100644 --- a/frontend/ui/reader/readerhyphenation.lua +++ b/frontend/ui/reader/readerhyphenation.lua @@ -9,6 +9,14 @@ local ReaderHyphenation = InputContainer:new{ cur_hyph_idx = nil, } +function ReaderHyphenation:_changeSel(k) + if self.cur_hyph_idx then + self.hyph_table[self.cur_hyph_idx].selected = false + end + self.hyph_table[k].selected = true + self.cur_hyph_idx = k +end + function ReaderHyphenation:init() self.hyph_table = {} self.hyph_alg = cre.getSelectedHyphDict() @@ -19,13 +27,11 @@ function ReaderHyphenation:init() table.insert(self.hyph_table, { text = v, callback = function() - self.cur_hyph_idx = k self.hyph_alg = v UIManager:show(InfoMessage:new{ text = _("Change Hyphenation to ")..v, }) - self.hyph_table[k].selected = true - self.hyph_table[self.cur_hyph_idx].selected = false + self:_changeSel(k) cre.setHyphDictionary(v) end }) @@ -33,6 +39,23 @@ function ReaderHyphenation:init() self.ui.menu:registerToMainMenu(self) end +function ReaderHyphenation:onReadSettings(config) + local hyph_alg = config:readSetting("hyph_alg") + if hyph_alg then + cre.setHyphDictionary(hyph_alg) + end + self.hyph_alg = cre.getSelectedHyphDict() + for k,v in ipairs(self.hyph_table) do + if v.text == self.hyph_alg then + self:_changeSel(k) + end + end +end + +function ReaderHyphenation:onSaveSettings() + self.ui.doc_settings:saveSetting("hyph_alg", self.hyph_alg) +end + function ReaderHyphenation:addToMainMenu(tab_item_table) -- insert table to main reader menu table.insert(tab_item_table.typeset, { diff --git a/frontend/ui/reader/readertypeset.lua b/frontend/ui/reader/readertypeset.lua index 518d2ab37..047edacd3 100644 --- a/frontend/ui/reader/readertypeset.lua +++ b/frontend/ui/reader/readertypeset.lua @@ -121,6 +121,7 @@ function ReaderTypeset:toggleFloatingPunctuation() -- workaround: set again things unset by crengine after changing floating punctuation self.ui.document:setFontFace(self.ui.font.font_face or self.ui.doc_settings:readSetting("font_face")) + cre.setHyphDictionary(self.ui.hyphenation.hyph_alg) self:_setPageMargins() end diff --git a/frontend/ui/readerui.lua b/frontend/ui/readerui.lua index a11904afd..4256d1eac 100644 --- a/frontend/ui/readerui.lua +++ b/frontend/ui/readerui.lua @@ -228,11 +228,13 @@ function ReaderUI:init() ui = self } table.insert(self, self.font) -- hold reference to font menu - table.insert(self, ReaderHyphenation:new{ + -- hyphenation menu + self.hyphenation = ReaderHyphenation:new{ dialog = self.dialog, view = self[1], ui = self - }) + } + table.insert(self, self.hyphenation) -- hold reference to hyphenation menu -- rolling controller table.insert(self, ReaderRolling:new{ dialog = self.dialog,