Skip to content

Commit

Permalink
move EditRules from "Look & Feel" to their own widgets
Browse files Browse the repository at this point in the history
  • Loading branch information
un-pogaz committed Feb 1, 2025
1 parent 78bfa97 commit 7a91da1
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 27 deletions.
28 changes: 1 addition & 27 deletions src/calibre/gui2/preferences/look_feel.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,28 +5,17 @@
__copyright__ = '2010, Kovid Goyal <[email protected]>'
__docformat__ = 'restructuredtext en'

from qt.core import QIcon, QKeySequence, QListWidgetItem, Qt
from qt.core import QKeySequence, QListWidgetItem, Qt

from calibre.gui2.preferences import ConfigWidgetBase, test_widget
from calibre.gui2.preferences.coloring import EditRules
from calibre.gui2.preferences.look_feel_tabs import selected_rows_metadatas
from calibre.gui2.preferences.look_feel_ui import Ui_Form
from calibre.gui2.widgets import BusyCursor


class ConfigWidget(ConfigWidgetBase, Ui_Form):

def genesis(self, gui):
self.gui = gui

self.edit_rules = EditRules(self.tabWidget)
self.edit_rules.changed.connect(self.changed_signal)
self.tabWidget.addTab(self.edit_rules, QIcon.ic('format-fill-color.png'), _('Column &coloring'))

self.icon_rules = EditRules(self.tabWidget)
self.icon_rules.changed.connect(self.changed_signal)
self.tabWidget.addTab(self.icon_rules, QIcon.ic('icon_choose.png'), _('Column &icons'))

self.tabWidget.setCurrentIndex(0)
self.tabWidget.tabBar().setVisible(False)
keys = [QKeySequence('F11', QKeySequence.SequenceFormat.PortableText), QKeySequence(
Expand All @@ -45,25 +34,10 @@ def genesis(self, gui):
def initial_tab_changed(self):
self.sections_view.setCurrentRow(self.tabWidget.currentIndex())

def initialize(self):
ConfigWidgetBase.initialize(self)

db = self.gui.current_db
mi = selected_rows_metadatas()
self.edit_rules.initialize(db.field_metadata, db.prefs, mi, 'column_color_rules')
self.icon_rules.initialize(db.field_metadata, db.prefs, mi, 'column_icon_rules')

def restore_defaults(self):
ConfigWidgetBase.restore_defaults(self)
self.edit_rules.clear()
self.icon_rules.clear()
self.changed_signal.emit()

def commit(self, *args):
with BusyCursor():
self.edit_rules.commit(self.gui.current_db.prefs)
self.icon_rules.commit(self.gui.current_db.prefs)

def refresh_gui(self, gui):
m = gui.library_view.model()
m.update_db_prefs_cache()
Expand Down
28 changes: 28 additions & 0 deletions src/calibre/gui2/preferences/look_feel.ui
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,24 @@
<string>&amp;Quickview</string>
</attribute>
</widget>
<widget class="ColumnColorRules" name="edit_rules">
<attribute name="icon">
<iconset resource="../../../../resources/images.qrc">
<normaloff>:/images/format-fill-color.png</normaloff>:/images/format-fill-color.png</iconset>
</attribute>
<attribute name="title">
<string>Column &amp;coloring</string>
</attribute>
</widget>
<widget class="ColumnIconRules" name="icon_rules">
<attribute name="icon">
<iconset resource="../../../../resources/images.qrc">
<normaloff>:/images/icon_choose.png</normaloff>:/images/icon_choose.png</iconset>
</attribute>
<attribute name="title">
<string>Column &amp;icons</string>
</attribute>
</widget>
</widget>
</item>
<item row="0" column="0">
Expand Down Expand Up @@ -178,6 +196,16 @@
<extends>ConfigWidgetBase</extends>
<header>calibre/gui2/preferences/look_feel_tabs/quickview.h</header>
</customwidget>
<customwidget>
<class>ColumnColorRules</class>
<extends>ConfigWidgetBase</extends>
<header>calibre/gui2/preferences/look_feel_tabs.h</header>
</customwidget>
<customwidget>
<class>ColumnIconRules</class>
<extends>ConfigWidgetBase</extends>
<header>calibre/gui2/preferences/look_feel_tabs.h</header>
</customwidget>
</customwidgets>
<resources>
<include location="../../../../resources/images.qrc"/>
Expand Down
43 changes: 43 additions & 0 deletions src/calibre/gui2/preferences/look_feel_tabs/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
from calibre.ebooks.metadata.book.render import DEFAULT_AUTHOR_LINK
from calibre.gui2 import choose_files, choose_save_file, error_dialog
from calibre.gui2.book_details import get_field_list
from calibre.gui2.preferences import LazyConfigWidgetBase
from calibre.gui2.preferences.coloring import EditRules
from calibre.gui2.ui import get_gui


Expand Down Expand Up @@ -167,6 +169,47 @@ def move(self, idx, delta):
return idx


class LazyEditRulesBase(LazyConfigWidgetBase):

rule_set_name = None

def __init__(self, parent=None):
super().__init__(parent)
self.rules_editor = EditRules(parent)
self.setLayout(self.rules_editor.layout())

def genesis(self, gui):
self.gui = gui
self.rules_editor.changed.connect(self.changed_signal)

def lazy_initialize(self):
if not self.rule_set_name:
raise NotImplementedError('You must define the attribut "rule_set_name" in LazyEditRulesBase subclasses')
self.load_rule_set(self.rule_set_name)

def load_rule_set(self, name):
db = self.gui.current_db
mi = selected_rows_metadatas()
self.rules_editor.initialize(db.field_metadata, db.prefs, mi, name)

def commit(self):
self.rules_editor.commit(self, self.gui.current_db.prefs)
return LazyConfigWidgetBase.commit(self)

def restore_defaults(self):
LazyConfigWidgetBase.restore_defaults(self)
self.rules_editor.clear(self)
self.changed_signal.emit()


class ColumnColorRules(LazyEditRulesBase):
rule_set_name = 'column_color_rules'


class ColumnIconRules(LazyEditRulesBase):
rule_set_name = 'column_icon_rules'


def export_layout(in_widget, model=None):
filename = choose_save_file(in_widget, 'look_feel_prefs_import_export_field_list',
_('Save column list to file'),
Expand Down

0 comments on commit 7a91da1

Please sign in to comment.