2
0
mirror of https://github.com/koreader/koreader synced 2024-11-13 19:11:25 +00:00
koreader/frontend/ui/data/koptoptions.lua

316 lines
12 KiB
Lua
Raw Normal View History

local Device = require("device")
2013-10-18 20:38:07 +00:00
local S = require("ui/data/strings")
local optionsutil = require("ui/data/optionsutil")
2013-10-18 20:38:07 +00:00
local _ = require("gettext")
local Screen = Device.screen
2013-10-18 20:38:07 +00:00
local KoptOptions = {
2014-03-13 13:52:43 +00:00
prefix = 'kopt',
needs_redraw_on_change = true,
2014-03-13 13:52:43 +00:00
{
icon = "resources/icons/appbar.transform.rotate.right.large.png",
options = {
{
name = "screen_mode",
name_text = S.SCREEN_MODE,
toggle = {S.PORTRAIT, S.LANDSCAPE},
alternate = false,
args = {"portrait", "landscape"},
default_arg = "portrait",
current_func = function() return Screen:getScreenMode() end,
event = "SwapScreenMode",
name_text_hold_callback = optionsutil.showValues,
2014-03-13 13:52:43 +00:00
}
}
},
{
icon = "resources/icons/appbar.crop.large.png",
options = {
{
name = "trim_page",
name_text = S.PAGE_CROP,
toggle = {S.MANUAL, S.AUTO, S.SEMIAUTO, S.NONE},
2014-03-13 13:52:43 +00:00
alternate = false,
values = {0, 1, 2, 3},
2014-03-13 13:52:43 +00:00
default_value = DKOPTREADER_CONFIG_TRIM_PAGE,
enabled_func = Device.isTouchDevice,
2014-03-13 13:52:43 +00:00
event = "PageCrop",
args = {"manual", "auto", "semi-auto", "none"},
name_text_hold_callback = optionsutil.showValues,
2014-03-13 13:52:43 +00:00
}
}
},
{
icon = "resources/icons/appbar.column.two.large.png",
options = {
{
name = "page_scroll",
name_text = S.VIEW_MODE,
toggle = {S.VIEW_SCROLL, S.VIEW_PAGE},
2014-03-13 13:52:43 +00:00
values = {1, 0},
default_value = DSCROLL_MODE,
event = "SetScrollMode",
2014-03-13 13:52:43 +00:00
args = {true, false},
name_text_hold_callback = optionsutil.showValues,
2014-03-13 13:52:43 +00:00
},
{
name = "full_screen",
name_text = S.PROGRESS_BAR,
toggle = {S.OFF, S.ON},
values = {1, 0},
default_value = DFULL_SCREEN,
event = "SetFullScreen",
args = {true, false},
show = false,
name_text_hold_callback = optionsutil.showValues,
2014-03-13 13:52:43 +00:00
},
{
name = "page_margin",
name_text = S.PAGE_MARGIN,
toggle = {S.SMALL, S.MEDIUM, S.LARGE},
values = {0.05, 0.10, 0.25},
2014-03-13 13:52:43 +00:00
default_value = DKOPTREADER_CONFIG_PAGE_MARGIN,
event = "MarginUpdate",
name_text_hold_callback = optionsutil.showValues,
2014-03-13 13:52:43 +00:00
},
{
name = "line_spacing",
name_text = S.LINE_SPACING,
toggle = {S.SMALL, S.MEDIUM, S.LARGE},
values = {1.0, 1.2, 1.4},
default_value = DKOPTREADER_CONFIG_LINE_SPACING,
advanced = true,
name_text_hold_callback = optionsutil.showValues,
2014-03-13 13:52:43 +00:00
},
{
name = "max_columns",
name_text = S.COLUMNS,
item_icons = {
"resources/icons/appbar.column.one.png",
"resources/icons/appbar.column.two.png",
"resources/icons/appbar.column.three.png",
},
values = {1,2,3},
default_value = DKOPTREADER_CONFIG_MAX_COLUMNS,
enabled_func = function(configurable)
return optionsutil.enableIfEquals(configurable, "text_wrap", 1)
end,
name_text_hold_callback = optionsutil.showValues,
},
{
name = "justification",
name_text = S.TEXT_ALIGN,
item_icons = {
"resources/icons/appbar.align.auto.png",
"resources/icons/appbar.align.left.png",
"resources/icons/appbar.align.center.png",
"resources/icons/appbar.align.right.png",
"resources/icons/appbar.align.justify.png",
},
values = {-1,0,1,2,3},
default_value = DKOPTREADER_CONFIG_JUSTIFICATION,
advanced = true,
enabled_func = function(configurable)
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,
},
2014-03-13 13:52:43 +00:00
}
},
{
icon = "resources/icons/appbar.text.size.large.png",
options = {
{
name = "font_size",
item_text = {"Aa","Aa","Aa","Aa","Aa","Aa","Aa","Aa"},
2014-03-13 13:52:43 +00:00
item_align_center = 1.0,
spacing = 15,
height = 60,
item_font_size = {24,28,32,34,36,38,42,46},
values = {0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.6, 2.0},
2014-03-13 13:52:43 +00:00
default_value = DKOPTREADER_CONFIG_FONT_SIZE,
event = "FontSizeUpdate",
enabled_func = function(configurable)
return optionsutil.enableIfEquals(configurable, "text_wrap", 1)
end,
2014-03-13 13:52:43 +00:00
},
{
name = "font_fine_tune",
name_text = S.FONTSIZE_FINE_TUNING,
toggle = Device:isTouchDevice() and {S.DECREASE, S.INCREASE} or nil,
item_text = not Device:isTouchDevice() and {S.DECREASE, S.INCREASE} or nil,
2014-03-13 13:52:43 +00:00
values = {-0.05, 0.05},
default_value = 0.05,
event = "FineTuningFontSize",
args = {-0.05, 0.05},
alternate = false,
enabled_func = function(configurable)
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
2014-03-13 13:52:43 +00:00
}
}
},
{
icon = "resources/icons/appbar.grade.b.large.png",
options = {
{
name = "contrast",
name_text = S.CONTRAST,
buttonprogress = true,
values = {1/0.8, 1/1.0, 1/1.5, 1/2.0, 1/3.0, 1/4.0, 1/6.0, 1/9.0},
default_pos = 2,
2014-03-13 13:52:43 +00:00
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,
2014-03-13 13:52:43 +00:00
}
}
},
{
icon = "resources/icons/appbar.settings.large.png",
options = {
{
name = "text_wrap",
name_text = S.REFLOW,
2014-03-13 13:52:43 +00:00
toggle = {S.ON, S.OFF},
values = {1, 0},
default_value = DKOPTREADER_CONFIG_TEXT_WRAP,
events = {
{
event = "RedrawCurrentPage",
},
{
event = "RestoreZoomMode",
},
{
event = "InitScrollPageStates",
},
},
name_text_hold_callback = optionsutil.showValues,
2014-03-13 13:52:43 +00:00
},
{
name = "page_opt",
name_text = S.DEWATERMARK,
toggle = {S.ON, S.OFF},
values = {1, 0},
default_value = 0,
name_text_hold_callback = optionsutil.showValues,
help_text = _([[Remove watermarks from the rendered document.
This can also be used to remove some gray background or to convert a grayscale or color document to black & white and get more contrast for easier reading.]]),
},
2014-03-13 13:52:43 +00:00
{
name="doc_language",
name_text = S.DOC_LANG,
toggle = DKOPTREADER_CONFIG_DOC_LANGS_TEXT,
values = DKOPTREADER_CONFIG_DOC_LANGS_CODE,
default_value = DKOPTREADER_CONFIG_DOC_DEFAULT_LANG_CODE,
event = "DocLangUpdate",
args = DKOPTREADER_CONFIG_DOC_LANGS_CODE,
name_text_hold_callback = optionsutil.showValues,
help_text = _([[(Used by the OCR engine.)]]),
2014-03-13 13:52:43 +00:00
},
{
name = "word_spacing",
name_text = S.WORD_GAP,
toggle = {S.SMALL, S.AUTO, S.LARGE},
values = DKOPTREADER_CONFIG_WORD_SPACINGS,
default_value = DKOPTREADER_CONFIG_DEFAULT_WORD_SPACING,
enabled_func = function(configurable)
return optionsutil.enableIfEquals(configurable, "text_wrap", 1)
end,
name_text_hold_callback = optionsutil.showValues,
2014-03-13 13:52:43 +00:00
},
{
name = "writing_direction",
name_text = S.WRITING_DIR,
toggle = {S.LTR, S.RTL, S.TBRTL},
values = {0, 1, 2},
default_value = 0,
enabled_func = function(configurable)
return optionsutil.enableIfEquals(configurable, "text_wrap", 1)
end,
name_text_hold_callback = optionsutil.showValues,
2014-03-13 13:52:43 +00:00
},
{
name = "quality",
name_text = S.RENDER_QUALITY,
toggle = {S.LOW, S.DEFAULT, S.HIGH},
values={0.5, 1.0, 1.5},
default_value = DKOPTREADER_CONFIG_RENDER_QUALITY,
advanced = true,
enabled_func = function(configurable)
return optionsutil.enableIfEquals(configurable, "text_wrap", 1)
end,
name_text_hold_callback = optionsutil.showValues,
Enable HW dithering in a few key places (#4541) * Enable HW dithering on supported devices (Clara HD, Forma; Oasis 2, PW4) * FileManager and co. (where appropriate, i.e., when covers are shown) * Book Status * Reader, where appropriate: * CRe: on pages whith image content (for over 7.5% of the screen area, should hopefully leave stuff like bullet points or small scene breaks alone). * Other engines: on user-request (in the gear tab of the bottom menu), via the new "Dithering" knob (will only appear on supported devices). * ScreenSaver * ImageViewer * Minimize repaints when flash_ui is enabled (by, almost everywhere, only repainting the flashing element, and not the toplevel window which hosts it). (The first pass of this involved fixing a few Button instances whose show_parent was wrong, in particular, chevrons in the FM & TopMenu). * Hunted down a few redundant repaints (unneeded setDirty("all") calls), either by switching the widget to nil when only a refresh was needed, and not a repaint, or by passing the appropritate widget to setDirty. (Note to self: Enable *verbose* debugging to catch broken setDirty calls via its post guard). There were also a few instances of 'em right behind a widget close. * Don't repaint the underlying widget when initially showing TopMenu & ConfigDialog. We unfortunately do need to do it when switching tabs, because of their variable heights. * On Kobo, disabled the extra and completely useless full refresh before suspend/reboot/poweroff, as well as on resume. No more double refreshes! * Fix another debug guard in Kobo sysfs_light * Switch ImageWidget & ImageViewer mostly to "ui" updates, which will be better suited to image content pretty much everywhere, REAGL or not. PS: (Almost :100: commits! :D)
2019-02-07 00:14:37 +00:00
},
{
name = "hw_dithering",
name_text = S.HW_DITHERING,
toggle = {S.ON, S.OFF},
values = {1, 0},
default_value = 0,
advanced = true,
show = Device:hasEinkScreen() and Device:canHWDither(),
name_text_hold_callback = optionsutil.showValues,
2014-03-13 13:52:43 +00:00
},
{
name = "forced_ocr",
name_text = S.FORCED_OCR,
toggle = {S.ON, S.OFF},
values = {1, 0},
default_value = 0,
advanced = true,
name_text_hold_callback = optionsutil.showValues,
},
2014-03-13 13:52:43 +00:00
{
name = "defect_size",
name_text = S.DEFECT_SIZE,
toggle = {S.SMALL, S.MEDIUM, S.LARGE},
values = {1.0, 3.0, 5.0},
default_value = DKOPTREADER_CONFIG_DEFECT_SIZE,
event = "DefectSizeUpdate",
show = false,
enabled_func = function(configurable)
return optionsutil.enableIfEquals(configurable, "text_wrap", 1)
end,
name_text_hold_callback = optionsutil.showValues,
2014-03-13 13:52:43 +00:00
},
{
name = "auto_straighten",
name_text = S.AUTO_STRAIGHTEN,
toggle = {S.ZERO_DEG, S.FIVE_DEG, S.TEN_DEG},
values = {0, 5, 10},
default_value = DKOPTREADER_CONFIG_AUTO_STRAIGHTEN,
show = false,
enabled_func = function(configurable)
return optionsutil.enableIfEquals(configurable, "text_wrap", 1)
end,
name_text_hold_callback = optionsutil.showValues,
2014-03-13 13:52:43 +00:00
},
{
name = "detect_indent",
name_text = S.INDENTATION,
toggle = {S.ON, S.OFF},
values = {1, 0},
default_value = DKOPTREADER_CONFIG_DETECT_INDENT,
show = false,
enabled_func = function(configurable)
return optionsutil.enableIfEquals(configurable, "text_wrap", 1)
end,
name_text_hold_callback = optionsutil.showValues,
2014-03-13 13:52:43 +00:00
},
}
},
}
2013-10-18 20:38:07 +00:00
return KoptOptions