mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Button to easily restore default settings on the preferences panel
This commit is contained in:
parent
471cf7741c
commit
c1d41d5eab
@ -4,6 +4,8 @@
|
||||
from dom import clear
|
||||
from elementmaker import E
|
||||
from book_list.globals import get_session_data
|
||||
from widgets import create_button
|
||||
from gettext import gettext as _
|
||||
|
||||
# from book_list.theme import get_font_size, get_color
|
||||
|
||||
@ -47,13 +49,20 @@ class ConfigItem:
|
||||
get_session_data().set(self.item_data.name, val)
|
||||
|
||||
def defval(self):
|
||||
return get_session_data().defval(self.item_data.name)
|
||||
val = get_session_data().defval(self.item_data.name)
|
||||
if self.item_data.from_storage:
|
||||
val = self.item_data.from_storage(val)
|
||||
return val
|
||||
|
||||
def ui_value_changed(self):
|
||||
if self.ignore_ui_value_changed:
|
||||
return
|
||||
self.to_storage(self.from_ui())
|
||||
|
||||
def reset_to_default(self):
|
||||
self.to_ui(self.defval())
|
||||
self.ui_value_changed()
|
||||
|
||||
def to_ui(self, val):
|
||||
pass
|
||||
|
||||
@ -95,6 +104,7 @@ class CheckBox(ConfigItem):
|
||||
control = div.firstChild
|
||||
control.addEventListener('change', self.ui_value_changed.bind(self))
|
||||
control.addEventListener('focus', onfocus)
|
||||
div.lastChild.addEventListener('click', self.toggle.bind(self))
|
||||
|
||||
@property
|
||||
def control(self):
|
||||
@ -106,6 +116,10 @@ class CheckBox(ConfigItem):
|
||||
def from_ui(self):
|
||||
return bool(self.control.checked)
|
||||
|
||||
def toggle(self):
|
||||
self.to_ui(not self.from_ui())
|
||||
self.ui_value_changed()
|
||||
|
||||
class SpinBox(ConfigItem):
|
||||
|
||||
def __init__(self, item_data, container, onfocus):
|
||||
@ -211,3 +225,14 @@ class PrefsPanel:
|
||||
else:
|
||||
cls = LineEdit
|
||||
self.widgets.append((new cls(item, div.firstChild, onfocus(item.name))).initialize())
|
||||
if self.widgets.length:
|
||||
c.appendChild(
|
||||
E.div(
|
||||
style='margin:1ex 1em; padding: 1em; text-align:center',
|
||||
create_button(_('Restore default settings'), 'refresh', self.reset_to_defaults.bind(self))
|
||||
)
|
||||
)
|
||||
|
||||
def reset_to_defaults(self):
|
||||
for w in self.widgets:
|
||||
w.reset_to_default()
|
||||
|
@ -90,14 +90,19 @@ class UI:
|
||||
self.panel_map['booklist-sort-menu'] = UIState(ClosePanelBar(_('Sort books')), panel_data=def():
|
||||
return self.books_view.sort_panel_data(create_item)
|
||||
)
|
||||
self.panel_map['booklist-config-tb'] = UIState(
|
||||
ClosePanelBar(_('Configure Tag Browser'), close_callback=self.search_panel.apply_prefs.bind(self.search_panel)),
|
||||
main_panel=self.prefs_panel, panel_data=self.search_panel.get_prefs.bind(self.search_panel))
|
||||
self.panel_map['booklist-config-tb'] = self.create_prefences_panel(
|
||||
_('Configure Tag Browser'), close_callback=self.search_panel.apply_prefs.bind(self.search_panel),
|
||||
panel_data=self.search_panel.get_prefs.bind(self.search_panel))
|
||||
|
||||
bss = ClosePanelBar(_('Search for books'))
|
||||
bss.add_button(icon_name='cogs', tooltip=_('Configure Tag Browser'), action=show_panel_action('booklist-config-tb'))
|
||||
self.panel_map['booklist-search'] = UIState(bss, main_panel=self.search_panel)
|
||||
|
||||
def create_prefences_panel(self, title, close_callback=None, panel_data=None):
|
||||
ans = UIState(ClosePanelBar(title), close_callback=close_callback, main_panel=self.prefs_panel, panel_data=panel_data)
|
||||
ans.add_button(icon_name='refresh', tooltip=_('Restore default settings'), action=self.prefs_panel.reset_to_defaults.bind(self.prefs_panel))
|
||||
return ans
|
||||
|
||||
def on_resize(self):
|
||||
pass
|
||||
|
||||
|
@ -120,6 +120,9 @@ class UserSessionData(SessionData):
|
||||
self.set(key, saved_data[key])
|
||||
self.echo_changes = True
|
||||
|
||||
def defval(self, key):
|
||||
return defaults[key]
|
||||
|
||||
def get(self, key, defval):
|
||||
if defval is undefined:
|
||||
defval = defaults[key]
|
||||
|
Loading…
x
Reference in New Issue
Block a user