Show current and default values in config dialog (pdf) (#3973)

pull/3989/head
Robert 6 years ago committed by Frans de Jonge
parent 56549d5397
commit 895372f781

@ -1,11 +1,8 @@
local Device = require("device")
local InfoMessage = require("ui/widget/infomessage")
local S = require("ui/data/strings")
local UIManager = require("ui/uimanager")
local Screen = Device.screen
local T = require("ffi/util").template
local optionsutil = require("ui/data/optionsutil")
local _ = require("gettext")
local Screen = Device.screen
-- add multiply operator to Aa dict
local Aa = setmetatable({"Aa"}, {
@ -18,125 +15,6 @@ local Aa = setmetatable({"Aa"}, {
end
})
local function enable_if_equals(configurable, option, value)
return configurable[option] == value
end
local function showValues(configurable, option)
local default = G_reader_settings:readSetting("copt_"..option.name)
local current = configurable[option.name]
local value_default, value_current
local suffix = option.name_text_suffix or ""
if option.name == "screen_mode" then
current = Screen:getScreenMode()
end
local arg_table = {}
if option.toggle and option.values then
for i=1,#option.toggle do
arg_table[option.values[i]] = option.toggle[i]
end
end
if not default then
default = "not set"
if option.toggle and option.values then
value_current = current
current = arg_table[current]
end
elseif option.toggle and option.values then
value_current = current
value_default = default
default = arg_table[default]
current = arg_table[current]
end
if option.labels and option.values then
for i=1,#option.labels do
if default == option.values[i] then
default = option.labels[i]
break
end
end
for i=1,#option.labels do
if current == option.values[i] then
current = option.labels[i]
break
end
end
end
if option.name_text_true_values and option.toggle and option.values and value_default then
UIManager:show(InfoMessage:new{
text = T(_("%1:\nCurrent value: %2 (%5%4)\nDefault value: %3 (%6%4)"), option.name_text,
current, default, suffix, value_current, value_default)
})
elseif option.name_text_true_values and option.toggle and option.values and not value_default then
UIManager:show(InfoMessage:new{
text = T(_("%1:\nCurrent value: %2 (%5%4)\nDefault value: %3"), option.name_text,
current, default, suffix, value_current)
})
else
UIManager:show(InfoMessage:new{
text = T(_("%1:\nCurrent value: %2%4\nDefault value: %3%4"), option.name_text, current,
default, suffix)
})
end
end
local function tableComp(a,b)
if #a ~= #b then return false end
for i=1,#a do
if a[i] ~= b[i] then return false end
end
return true
end
local function showValuesMargins(configurable, option)
local default = G_reader_settings:readSetting("copt_"..option.name)
local current = configurable[option.name]
local current_string
for i=1,#option.toggle do
if tableComp(current, option.values[i]) then
current_string = option.toggle[i]
break
end
end
if not default then
UIManager:show(InfoMessage:new{
text = T(_([[
%1:
Current value: %2
left: %3
top: %4
right: %5
bottom: %6
Default value: not set]]),
option.name_text, current_string, current[1], current[2], current[3], current[4])
})
else
local default_string
for i=1,#option.toggle do
if tableComp(default, option.values[i]) then
default_string = option.toggle[i]
break
end
end
UIManager:show(InfoMessage:new{
text = T(_([[
%1:
Current value: %2
left: %3
top: %4
right: %5
bottom: %6
Default value: %7
left: %8
top: %9
right: %10
bottom: %11]]),
option.name_text, current_string, current[1], current[2], current[3], current[4],
default_string, default[1], default[2], default[3], default[4])
})
end
end
local CreOptions = {
prefix = 'copt',
{
@ -151,7 +29,7 @@ local CreOptions = {
default_arg = "portrait",
current_func = function() return Screen:getScreenMode() end,
event = "ChangeScreenMode",
name_text_hold_callback = showValues,
name_text_hold_callback = optionsutil.showValues,
}
}
},
@ -167,7 +45,7 @@ local CreOptions = {
args = {"scroll", "page"},
default_arg = "page",
event = "SetViewMode",
name_text_hold_callback = showValues,
name_text_hold_callback = optionsutil.showValues,
},
{
name = "line_spacing",
@ -185,7 +63,7 @@ local CreOptions = {
DCREREADER_CONFIG_LINE_SPACE_PERCENT_MEDIUM,
DCREREADER_CONFIG_LINE_SPACE_PERCENT_LARGE,
},
name_text_hold_callback = showValues,
name_text_hold_callback = optionsutil.showValues,
-- used by showValues
name_text_suffix = "%",
name_text_true_values = true,
@ -206,7 +84,7 @@ local CreOptions = {
DCREREADER_CONFIG_MARGIN_SIZES_MEDIUM,
DCREREADER_CONFIG_MARGIN_SIZES_LARGE,
},
name_text_hold_callback = showValuesMargins,
name_text_hold_callback = optionsutil.showValuesMargins,
},
}
},
@ -232,13 +110,13 @@ local CreOptions = {
event = "ChangeSize",
args = {"decrease", "increase"},
alternate = false,
name_text_hold_callback = function(configurable)
name_text_hold_callback = function(configurable, __, prefix)
local opt = {
name = "font_size",
name_text = _("Font Size"),
}
showValues(configurable, opt)
end
optionsutil.showValues(configurable, opt, prefix)
end,
}
}
},
@ -253,7 +131,7 @@ local CreOptions = {
default_value = 0,
args = {0, 1},
event = "ToggleFontBolder",
name_text_hold_callback = showValues,
name_text_hold_callback = optionsutil.showValues,
},
{
name = "font_gamma",
@ -266,7 +144,7 @@ local CreOptions = {
args = {10, 15, 25, 30, 36, 43, 49, 56},
-- gamma values for these indexes are:
labels = {0.8, 1.0, 1.45, 1.90, 2.50, 4.0, 8.0, 15.0},
name_text_hold_callback = showValues,
name_text_hold_callback = optionsutil.showValues,
},
{
name = "font_hinting",
@ -276,7 +154,7 @@ local CreOptions = {
default_value = 2,
args = {0, 1, 2},
event = "SetFontHinting",
name_text_hold_callback = showValues,
name_text_hold_callback = optionsutil.showValues,
}
}
},
@ -292,7 +170,7 @@ local CreOptions = {
args = {0, 1},
default_arg = DCREREADER_PROGRESS_BAR,
event = "SetStatusLine",
name_text_hold_callback = showValues,
name_text_hold_callback = optionsutil.showValues,
},
{
name = "embedded_css",
@ -303,7 +181,7 @@ local CreOptions = {
args = {true, false},
default_arg = nil,
event = "ToggleEmbeddedStyleSheet",
name_text_hold_callback = showValues,
name_text_hold_callback = optionsutil.showValues,
},
{
name = "embedded_fonts",
@ -315,9 +193,9 @@ local CreOptions = {
default_arg = nil,
event = "ToggleEmbeddedFonts",
enabled_func = function(configurable)
return enable_if_equals(configurable, "embedded_css", 1)
return optionsutil.enableIfEquals(configurable, "embedded_css", 1)
end,
name_text_hold_callback = showValues,
name_text_hold_callback = optionsutil.showValues,
},
},
},

@ -1,12 +1,9 @@
local Device = require("device")
local S = require("ui/data/strings")
local optionsutil = require("ui/data/optionsutil")
local _ = require("gettext")
local Screen = Device.screen
local function enable_if_equals(configurable, option, value)
return configurable[option] == value
end
local KoptOptions = {
prefix = 'kopt',
{
@ -21,6 +18,7 @@ local KoptOptions = {
default_arg = "portrait",
current_func = function() return Screen:getScreenMode() end,
event = "SetScreenMode",
name_text_hold_callback = optionsutil.showValues,
}
}
},
@ -37,6 +35,7 @@ local KoptOptions = {
enabled_func = Device.isTouchDevice,
event = "PageCrop",
args = {"manual", "auto", "semi-auto"},
name_text_hold_callback = optionsutil.showValues,
}
}
},
@ -51,6 +50,7 @@ local KoptOptions = {
default_value = DSCROLL_MODE,
event = "SetScrollMode",
args = {true, false},
name_text_hold_callback = optionsutil.showValues,
},
{
name = "full_screen",
@ -61,6 +61,7 @@ local KoptOptions = {
event = "SetFullScreen",
args = {true, false},
show = false,
name_text_hold_callback = optionsutil.showValues,
},
{
name = "page_margin",
@ -69,6 +70,7 @@ local KoptOptions = {
values = {0.05, 0.10, 0.25},
default_value = DKOPTREADER_CONFIG_PAGE_MARGIN,
event = "MarginUpdate",
name_text_hold_callback = optionsutil.showValues,
},
{
name = "line_spacing",
@ -77,6 +79,7 @@ local KoptOptions = {
values = {1.0, 1.2, 1.4},
default_value = DKOPTREADER_CONFIG_LINE_SPACING,
advanced = true,
name_text_hold_callback = optionsutil.showValues,
},
{
name = "max_columns",
@ -89,8 +92,9 @@ local KoptOptions = {
values = {1,2,3},
default_value = DKOPTREADER_CONFIG_MAX_COLUMNS,
enabled_func = function(configurable)
return enable_if_equals(configurable, "text_wrap", 1)
return optionsutil.enableIfEquals(configurable, "text_wrap", 1)
end,
name_text_hold_callback = optionsutil.showValues,
},
{
name = "justification",
@ -106,8 +110,10 @@ local KoptOptions = {
default_value = DKOPTREADER_CONFIG_JUSTIFICATION,
advanced = true,
enabled_func = function(configurable)
return enable_if_equals(configurable, "text_wrap", 1)
return optionsutil.enableIfEquals(configurable, "text_wrap", 1)
end,
labels = {S.AUTO, S.LEFT, S.CENTER, S.RIGHT, S.JUSTIFY},
name_text_hold_callback = optionsutil.showValues,
},
}
},
@ -125,7 +131,7 @@ local KoptOptions = {
default_value = DKOPTREADER_CONFIG_FONT_SIZE,
event = "FontSizeUpdate",
enabled_func = function(configurable)
return enable_if_equals(configurable, "text_wrap", 1)
return optionsutil.enableIfEquals(configurable, "text_wrap", 1)
end,
},
{
@ -139,8 +145,15 @@ local KoptOptions = {
args = {-0.05, 0.05},
alternate = false,
enabled_func = function(configurable)
return enable_if_equals(configurable, "text_wrap", 1)
return optionsutil.enableIfEquals(configurable, "text_wrap", 1)
end,
name_text_hold_callback = function(configurable, __, prefix)
local opt = {
name = "font_size",
name_text = _("Font Size"),
}
optionsutil.showValues(configurable, opt, prefix)
end
}
}
},
@ -156,6 +169,8 @@ local KoptOptions = {
default_value = DKOPTREADER_CONFIG_CONTRAST,
event = "GammaUpdate",
args = {0.8, 1.0, 1.5, 2.0, 3.0, 4.0, 6.0, 9.0},
labels = {0.8, 1.0, 1.5, 2.0, 3.0, 4.0, 6.0, 9.0},
name_text_hold_callback = optionsutil.showValues,
}
}
},
@ -178,7 +193,8 @@ local KoptOptions = {
{
event = "InitScrollPageStates",
},
}
},
name_text_hold_callback = optionsutil.showValues,
},
{
name = "page_opt",
@ -186,6 +202,7 @@ local KoptOptions = {
toggle = {S.ON, S.OFF},
values = {1, 0},
default_value = 0,
name_text_hold_callback = optionsutil.showValues,
},
{
name="doc_language",
@ -195,6 +212,7 @@ local KoptOptions = {
default_value = DKOPTREADER_CONFIG_DOC_DEFAULT_LANG_CODE,
event = "DocLangUpdate",
args = DKOPTREADER_CONFIG_DOC_LANGS_CODE,
name_text_hold_callback = optionsutil.showValues,
},
{
name = "word_spacing",
@ -203,8 +221,9 @@ local KoptOptions = {
values = DKOPTREADER_CONFIG_WORD_SPACINGS,
default_value = DKOPTREADER_CONFIG_DEFAULT_WORD_SPACING,
enabled_func = function(configurable)
return enable_if_equals(configurable, "text_wrap", 1)
return optionsutil.enableIfEquals(configurable, "text_wrap", 1)
end,
name_text_hold_callback = optionsutil.showValues,
},
{
name = "writing_direction",
@ -213,8 +232,9 @@ local KoptOptions = {
values = {0, 1, 2},
default_value = 0,
enabled_func = function(configurable)
return enable_if_equals(configurable, "text_wrap", 1)
return optionsutil.enableIfEquals(configurable, "text_wrap", 1)
end,
name_text_hold_callback = optionsutil.showValues,
},
{
name = "quality",
@ -224,8 +244,9 @@ local KoptOptions = {
default_value = DKOPTREADER_CONFIG_RENDER_QUALITY,
advanced = true,
enabled_func = function(configurable)
return enable_if_equals(configurable, "text_wrap", 1)
return optionsutil.enableIfEquals(configurable, "text_wrap", 1)
end,
name_text_hold_callback = optionsutil.showValues,
},
{
name = "forced_ocr",
@ -234,6 +255,7 @@ local KoptOptions = {
values = {1, 0},
default_value = 0,
advanced = true,
name_text_hold_callback = optionsutil.showValues,
},
{
name = "defect_size",
@ -244,8 +266,9 @@ local KoptOptions = {
event = "DefectSizeUpdate",
show = false,
enabled_func = function(configurable)
return enable_if_equals(configurable, "text_wrap", 1)
return optionsutil.enableIfEquals(configurable, "text_wrap", 1)
end,
name_text_hold_callback = optionsutil.showValues,
},
{
name = "auto_straighten",
@ -255,8 +278,9 @@ local KoptOptions = {
default_value = DKOPTREADER_CONFIG_AUTO_STRAIGHTEN,
show = false,
enabled_func = function(configurable)
return enable_if_equals(configurable, "text_wrap", 1)
return optionsutil.enableIfEquals(configurable, "text_wrap", 1)
end,
name_text_hold_callback = optionsutil.showValues,
},
{
name = "detect_indent",
@ -266,8 +290,9 @@ local KoptOptions = {
default_value = DKOPTREADER_CONFIG_DETECT_INDENT,
show = false,
enabled_func = function(configurable)
return enable_if_equals(configurable, "text_wrap", 1)
return optionsutil.enableIfEquals(configurable, "text_wrap", 1)
end,
name_text_hold_callback = optionsutil.showValues,
},
}
},

@ -0,0 +1,133 @@
--[[--
This module contains miscellaneous helper functions for the creoptions and koptoptions.
]]
local Device = require("device")
local InfoMessage = require("ui/widget/infomessage")
local UIManager = require("ui/uimanager")
local _ = require("gettext")
local Screen = Device.screen
local T = require("ffi/util").template
local optionsutil = {}
function optionsutil.enableIfEquals(configurable, option, value)
return configurable[option] == value
end
function optionsutil.showValues(configurable, option, prefix)
local default = G_reader_settings:readSetting(prefix.."_"..option.name)
local current = configurable[option.name]
local value_default, value_current
local suffix = option.name_text_suffix or ""
if option.name == "screen_mode" then
current = Screen:getScreenMode()
end
local arg_table = {}
if option.toggle and option.values then
for i=1,#option.toggle do
arg_table[option.values[i]] = option.toggle[i]
end
end
if not default then
default = "not set"
if option.toggle and option.values then
value_current = current
current = arg_table[current]
end
elseif option.toggle and option.values then
value_current = current
value_default = default
default = arg_table[default]
current = arg_table[current]
end
if option.labels and option.values then
for i=1,#option.labels do
if default == option.values[i] then
default = option.labels[i]
break
end
end
for i=1,#option.labels do
if current == option.values[i] then
current = option.labels[i]
break
end
end
end
if option.name_text_true_values and option.toggle and option.values and value_default then
UIManager:show(InfoMessage:new{
text = T(_("%1:\nCurrent value: %2 (%5%4)\nDefault value: %3 (%6%4)"), option.name_text,
current, default, suffix, value_current, value_default)
})
elseif option.name_text_true_values and option.toggle and option.values and not value_default then
UIManager:show(InfoMessage:new{
text = T(_("%1:\nCurrent value: %2 (%5%4)\nDefault value: %3"), option.name_text,
current, default, suffix, value_current)
})
else
UIManager:show(InfoMessage:new{
text = T(_("%1:\nCurrent value: %2%4\nDefault value: %3%4"), option.name_text, current,
default, suffix)
})
end
end
local function tableComp(a,b)
if #a ~= #b then return false end
for i=1,#a do
if a[i] ~= b[i] then return false end
end
return true
end
function optionsutil.showValuesMargins(configurable, option)
local default = G_reader_settings:readSetting("copt_"..option.name)
local current = configurable[option.name]
local current_string
for i=1,#option.toggle do
if tableComp(current, option.values[i]) then
current_string = option.toggle[i]
break
end
end
if not default then
UIManager:show(InfoMessage:new{
text = T(_([[
%1:
Current value: %2
left: %3
top: %4
right: %5
bottom: %6
Default value: not set]]),
option.name_text, current_string, current[1], current[2], current[3], current[4])
})
else
local default_string
for i=1,#option.toggle do
if tableComp(default, option.values[i]) then
default_string = option.toggle[i]
break
end
end
UIManager:show(InfoMessage:new{
text = T(_([[
%1:
Current value: %2
left: %3
top: %4
right: %5
bottom: %6
Default value: %7
left: %8
top: %9
right: %10
bottom: %11]]),
option.name_text, current_string, current[1], current[2], current[3], current[4],
default_string, default[1], default[2], default[3], default[4])
})
end
end
return optionsutil

@ -64,5 +64,9 @@ S.TBRTL = _("TBRTL")
S.TBLTR = _("TBLTR")
S.FULL = _("full")
S.MINI = _("mini")
S.LEFT = _("left")
S.CENTER = _("center")
S.RIGHT = _("right")
S.JUSTIFY = _("justify")
return S

@ -235,7 +235,8 @@ function ConfigOption:init()
text_font_bold = false,
hold_callback = function()
if self.options[c].name_text_hold_callback then
self.options[c].name_text_hold_callback(self.config.configurable, self.options[c])
self.options[c].name_text_hold_callback(self.config.configurable, self.options[c],
self.config.config_options.prefix)
end
end,
}

Loading…
Cancel
Save