mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
move "Look & Feel/Edit_metadata" to its own widget
This commit is contained in:
parent
b32e1beaf4
commit
78bfa97e03
@ -5,80 +5,20 @@ __license__ = 'GPL v3'
|
|||||||
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'
|
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'
|
||||||
__docformat__ = 'restructuredtext en'
|
__docformat__ = 'restructuredtext en'
|
||||||
|
|
||||||
from functools import partial
|
|
||||||
|
|
||||||
from qt.core import QIcon, QKeySequence, QListWidgetItem, Qt
|
from qt.core import QIcon, QKeySequence, QListWidgetItem, Qt
|
||||||
|
|
||||||
from calibre.gui2 import gprefs
|
|
||||||
from calibre.gui2.custom_column_widgets import get_field_list as em_get_field_list
|
|
||||||
from calibre.gui2.preferences import ConfigWidgetBase, test_widget
|
from calibre.gui2.preferences import ConfigWidgetBase, test_widget
|
||||||
from calibre.gui2.preferences.coloring import EditRules
|
from calibre.gui2.preferences.coloring import EditRules
|
||||||
from calibre.gui2.preferences.look_feel_tabs import (
|
from calibre.gui2.preferences.look_feel_tabs import selected_rows_metadatas
|
||||||
DisplayedFields,
|
|
||||||
export_layout,
|
|
||||||
import_layout,
|
|
||||||
move_field_down,
|
|
||||||
move_field_up,
|
|
||||||
reset_layout,
|
|
||||||
selected_rows_metadatas,
|
|
||||||
)
|
|
||||||
from calibre.gui2.preferences.look_feel_ui import Ui_Form
|
from calibre.gui2.preferences.look_feel_ui import Ui_Form
|
||||||
from calibre.gui2.widgets import BusyCursor
|
from calibre.gui2.widgets import BusyCursor
|
||||||
|
|
||||||
|
|
||||||
class EMDisplayedFields(DisplayedFields): # {{{
|
|
||||||
def __init__(self, db, parent=None):
|
|
||||||
DisplayedFields.__init__(self, db, parent)
|
|
||||||
|
|
||||||
def initialize(self, use_defaults=False, pref_data_override=None):
|
|
||||||
self.beginResetModel()
|
|
||||||
self.fields = [[x[0], x[1]] for x in
|
|
||||||
em_get_field_list(self.db, use_defaults=use_defaults, pref_data_override=pref_data_override)]
|
|
||||||
self.endResetModel()
|
|
||||||
self.changed = True
|
|
||||||
|
|
||||||
def commit(self):
|
|
||||||
if self.changed:
|
|
||||||
self.db.new_api.set_pref('edit_metadata_custom_columns_to_display', self.fields)
|
|
||||||
# }}}
|
|
||||||
|
|
||||||
|
|
||||||
class ConfigWidget(ConfigWidgetBase, Ui_Form):
|
class ConfigWidget(ConfigWidgetBase, Ui_Form):
|
||||||
|
|
||||||
def genesis(self, gui):
|
def genesis(self, gui):
|
||||||
self.gui = gui
|
self.gui = gui
|
||||||
|
|
||||||
db = gui.library_view.model().db
|
|
||||||
|
|
||||||
r = self.register
|
|
||||||
|
|
||||||
choices = [(_('Default'), 'default'), (_('Compact metadata'), 'alt1'),
|
|
||||||
(_('All on 1 tab'), 'alt2')]
|
|
||||||
r('edit_metadata_single_layout', gprefs,
|
|
||||||
choices=[(_('Default'), 'default'), (_('Compact metadata'), 'alt1'),
|
|
||||||
(_('All on 1 tab'), 'alt2')])
|
|
||||||
r('edit_metadata_ignore_display_order', db.prefs)
|
|
||||||
r('edit_metadata_elision_point', gprefs,
|
|
||||||
choices=[(_('Left'), 'left'), (_('Middle'), 'middle'),
|
|
||||||
(_('Right'), 'right')])
|
|
||||||
r('edit_metadata_elide_labels', gprefs)
|
|
||||||
r('edit_metadata_single_use_2_cols_for_custom_fields', gprefs)
|
|
||||||
r('edit_metadata_bulk_cc_label_length', gprefs)
|
|
||||||
r('edit_metadata_single_cc_label_length', gprefs)
|
|
||||||
r('edit_metadata_templates_only_F2_on_booklist', gprefs)
|
|
||||||
|
|
||||||
self.em_display_model = EMDisplayedFields(self.gui.current_db, self.em_display_order)
|
|
||||||
self.em_display_model.dataChanged.connect(self.changed_signal)
|
|
||||||
self.em_display_order.setModel(self.em_display_model)
|
|
||||||
mu = partial(move_field_up, self.em_display_order, self.em_display_model)
|
|
||||||
md = partial(move_field_down, self.em_display_order, self.em_display_model)
|
|
||||||
self.em_display_order.set_movement_functions(mu, md)
|
|
||||||
self.em_up_button.clicked.connect(mu)
|
|
||||||
self.em_down_button.clicked.connect(md)
|
|
||||||
self.em_export_layout_button.clicked.connect(partial(export_layout, self, model=self.em_display_model))
|
|
||||||
self.em_import_layout_button.clicked.connect(partial(import_layout, self, model=self.em_display_model))
|
|
||||||
self.em_reset_layout_button.clicked.connect(partial(reset_layout, model=self.em_display_model))
|
|
||||||
|
|
||||||
self.edit_rules = EditRules(self.tabWidget)
|
self.edit_rules = EditRules(self.tabWidget)
|
||||||
self.edit_rules.changed.connect(self.changed_signal)
|
self.edit_rules.changed.connect(self.changed_signal)
|
||||||
self.tabWidget.addTab(self.edit_rules, QIcon.ic('format-fill-color.png'), _('Column &coloring'))
|
self.tabWidget.addTab(self.edit_rules, QIcon.ic('format-fill-color.png'), _('Column &coloring'))
|
||||||
@ -108,7 +48,6 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
|
|||||||
def initialize(self):
|
def initialize(self):
|
||||||
ConfigWidgetBase.initialize(self)
|
ConfigWidgetBase.initialize(self)
|
||||||
|
|
||||||
self.em_display_model.initialize()
|
|
||||||
db = self.gui.current_db
|
db = self.gui.current_db
|
||||||
mi = selected_rows_metadatas()
|
mi = selected_rows_metadatas()
|
||||||
self.edit_rules.initialize(db.field_metadata, db.prefs, mi, 'column_color_rules')
|
self.edit_rules.initialize(db.field_metadata, db.prefs, mi, 'column_color_rules')
|
||||||
@ -116,14 +55,12 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
|
|||||||
|
|
||||||
def restore_defaults(self):
|
def restore_defaults(self):
|
||||||
ConfigWidgetBase.restore_defaults(self)
|
ConfigWidgetBase.restore_defaults(self)
|
||||||
self.em_display_model.restore_defaults()
|
|
||||||
self.edit_rules.clear()
|
self.edit_rules.clear()
|
||||||
self.icon_rules.clear()
|
self.icon_rules.clear()
|
||||||
self.changed_signal.emit()
|
self.changed_signal.emit()
|
||||||
|
|
||||||
def commit(self, *args):
|
def commit(self, *args):
|
||||||
with BusyCursor():
|
with BusyCursor():
|
||||||
self.em_display_model.commit()
|
|
||||||
self.edit_rules.commit(self.gui.current_db.prefs)
|
self.edit_rules.commit(self.gui.current_db.prefs)
|
||||||
self.icon_rules.commit(self.gui.current_db.prefs)
|
self.icon_rules.commit(self.gui.current_db.prefs)
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@
|
|||||||
<string>&Book details</string>
|
<string>&Book details</string>
|
||||||
</attribute>
|
</attribute>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QWidget" name="edit_metadata_tab">
|
<widget class="EditMetadataTab" name="edit_metadata_tab">
|
||||||
<attribute name="icon">
|
<attribute name="icon">
|
||||||
<iconset resource="../../../../resources/images.qrc">
|
<iconset resource="../../../../resources/images.qrc">
|
||||||
<normaloff>:/images/edit_input.png</normaloff>:/images/edit_input.png</iconset>
|
<normaloff>:/images/edit_input.png</normaloff>:/images/edit_input.png</iconset>
|
||||||
@ -54,257 +54,6 @@
|
|||||||
<attribute name="title">
|
<attribute name="title">
|
||||||
<string>Edit &metadata</string>
|
<string>Edit &metadata</string>
|
||||||
</attribute>
|
</attribute>
|
||||||
<layout class="QVBoxLayout" name="vbox_layout_61">
|
|
||||||
<item>
|
|
||||||
<layout class="QFormLayout">
|
|
||||||
<item row="0" column="0">
|
|
||||||
<widget class="QLabel" name="edit_metadata_single_label">
|
|
||||||
<property name="text">
|
|
||||||
<string>Edit metadata (single) &layout:</string>
|
|
||||||
</property>
|
|
||||||
<property name="buddy">
|
|
||||||
<cstring>opt_edit_metadata_single_layout</cstring>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="1">
|
|
||||||
<widget class="QComboBox" name="opt_edit_metadata_single_layout">
|
|
||||||
<property name="toolTip">
|
|
||||||
<string>Choose a different layout for the Edit metadata dialog. The compact metadata layout favors editing custom metadata over changing covers and formats.</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QGroupBox" name="groupBox">
|
|
||||||
<property name="title">
|
|
||||||
<string>Select the custom columns (for this library) to display in the edit metadata dialogs and their order:</string>
|
|
||||||
</property>
|
|
||||||
<layout class="QGridLayout" name="gridLayout_3">
|
|
||||||
<item row="3" column="1">
|
|
||||||
<widget class="QToolButton" name="em_down_button">
|
|
||||||
<property name="toolTip">
|
|
||||||
<string>Move down. Keyboard shortcut: Ctrl-Down arrow</string>
|
|
||||||
</property>
|
|
||||||
<property name="icon">
|
|
||||||
<iconset resource="../../../../resources/images.qrc">
|
|
||||||
<normaloff>:/images/arrow-down.png</normaloff>:/images/arrow-down.png</iconset>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1">
|
|
||||||
<widget class="QToolButton" name="em_up_button">
|
|
||||||
<property name="toolTip">
|
|
||||||
<string>Move up. Keyboard shortcut: Ctrl-Up arrow</string>
|
|
||||||
</property>
|
|
||||||
<property name="icon">
|
|
||||||
<iconset resource="../../../../resources/images.qrc">
|
|
||||||
<normaloff>:/images/arrow-up.png</normaloff>:/images/arrow-up.png</iconset>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="1">
|
|
||||||
<spacer name="verticalSpacer_5">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Vertical</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>20</width>
|
|
||||||
<height>40</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="0" rowspan="3">
|
|
||||||
<widget class="ListViewWithMoveByKeyPress" name="em_display_order">
|
|
||||||
<property name="alternatingRowColors">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="5" column="0">
|
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="em_reset_layout_button">
|
|
||||||
<property name="toolTip">
|
|
||||||
<string>Click this button to reset the list to its default order.</string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Reset list</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="em_import_layout_button">
|
|
||||||
<property name="toolTip">
|
|
||||||
<string><p>Click this button to set the list to one
|
|
||||||
previously exported. This could be useful if you have several libraries with
|
|
||||||
similar structure and you want to use the same column order for each one. Columns
|
|
||||||
in the imported list that aren't in the current library are ignored. Columns in
|
|
||||||
the library that are not in the imported list are put at the end and marked
|
|
||||||
as displayable.</p></string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Import list</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="em_export_layout_button">
|
|
||||||
<property name="toolTip">
|
|
||||||
<string><p>Click this button to write the current display
|
|
||||||
settings to a file. This could be useful if you have several libraries with similar
|
|
||||||
structure and you want to use the same column order for each one.</p></string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Export list</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<spacer name="horizontalSpacer">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>40</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<layout class="QHBoxLayout">
|
|
||||||
<item>
|
|
||||||
<layout class="QFormLayout">
|
|
||||||
<item row="0" column="0" colspan="2">
|
|
||||||
<widget class="QCheckBox" name="opt_edit_metadata_ignore_display_order">
|
|
||||||
<property name="toolTip">
|
|
||||||
<string><p>Check this box to make the edit metadata dialogs ignore the
|
|
||||||
above specifications, showing all the columns in the default order. This is
|
|
||||||
useful for temporarily seeing all your columns in the dialogs without losing
|
|
||||||
the display and order specifications.</p></string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Show &all columns in default order when editing metadata</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="0" colspan="2">
|
|
||||||
<widget class="QCheckBox" name="opt_edit_metadata_elide_labels">
|
|
||||||
<property name="toolTip">
|
|
||||||
<string>If checked then labels wider than the label width
|
|
||||||
will be elided, otherwise they will be word wrapped.</string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>&Elide labels when editing custom columns</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="0">
|
|
||||||
<widget class="QLabel" name="label_1023">
|
|
||||||
<property name="text">
|
|
||||||
<string/>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="1">
|
|
||||||
<layout class="QHBoxLayout">
|
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="label_102">
|
|
||||||
<property name="text">
|
|
||||||
<string>Elision point:</string>
|
|
||||||
</property>
|
|
||||||
<property name="buddy">
|
|
||||||
<cstring>opt_edit_metadata_elision_point</cstring>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QComboBox" name="opt_edit_metadata_elision_point">
|
|
||||||
<property name="toolTip">
|
|
||||||
<string>Choose where in the label to put the...</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
<item row="3" column="0" colspan="2">
|
|
||||||
<widget class="QCheckBox" name="opt_edit_metadata_templates_only_F2_on_booklist">
|
|
||||||
<property name="toolTip">
|
|
||||||
<string><p>Check this box to allow only the F2 (Edit) key to
|
|
||||||
open the template editor in the book list for a "Column built from other
|
|
||||||
columns". Editing with mouse clicks and the Tab key will be disabled.</p></string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Only the &F2 (Edit) key edits column templates in the book list</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<layout class="QFormLayout">
|
|
||||||
<item row="0" column="0" colspan="2">
|
|
||||||
<widget class="QCheckBox" name="opt_edit_metadata_single_use_2_cols_for_custom_fields">
|
|
||||||
<property name="text">
|
|
||||||
<string>Use &two columns for custom columns in the Default layout</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="0">
|
|
||||||
<widget class="QLabel" name="label_102">
|
|
||||||
<property name="text">
|
|
||||||
<string>&Bulk edit custom column label length:</string>
|
|
||||||
</property>
|
|
||||||
<property name="buddy">
|
|
||||||
<cstring>opt_edit_metadata_bulk_cc_label_length</cstring>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1">
|
|
||||||
<widget class="QSpinBox" name="opt_edit_metadata_bulk_cc_label_length">
|
|
||||||
<property name="toolTip">
|
|
||||||
<string>The maximum width of a custom column label for the bulk metadata edit dialog in average characters.</string>
|
|
||||||
</property>
|
|
||||||
<property name="suffix">
|
|
||||||
<string> chars</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="0">
|
|
||||||
<widget class="QLabel" name="label_1022">
|
|
||||||
<property name="text">
|
|
||||||
<string>&Single edit custom column label length:</string>
|
|
||||||
</property>
|
|
||||||
<property name="buddy">
|
|
||||||
<cstring>opt_edit_metadata_single_cc_label_length</cstring>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="1">
|
|
||||||
<widget class="QSpinBox" name="opt_edit_metadata_single_cc_label_length">
|
|
||||||
<property name="toolTip">
|
|
||||||
<string>The maximum width of a custom column label for the single metadata edit dialog in average characters.</string>
|
|
||||||
</property>
|
|
||||||
<property name="suffix">
|
|
||||||
<string> chars</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QTabWidget" name="tag_browser_tab">
|
<widget class="QTabWidget" name="tag_browser_tab">
|
||||||
<attribute name="icon">
|
<attribute name="icon">
|
||||||
@ -368,11 +117,6 @@ columns". Editing with mouse clicks and the Tab key will be disabled.</p
|
|||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<customwidgets>
|
<customwidgets>
|
||||||
<customwidget>
|
|
||||||
<class>ListViewWithMoveByKeyPress</class>
|
|
||||||
<extends>QListView</extends>
|
|
||||||
<header>calibre/gui2/preferences.h</header>
|
|
||||||
</customwidget>
|
|
||||||
<customwidget>
|
<customwidget>
|
||||||
<class>ScrollingTabWidget</class>
|
<class>ScrollingTabWidget</class>
|
||||||
<extends>QTabWidget</extends>
|
<extends>QTabWidget</extends>
|
||||||
@ -399,6 +143,11 @@ columns". Editing with mouse clicks and the Tab key will be disabled.</p
|
|||||||
<extends>ConfigWidgetBase</extends>
|
<extends>ConfigWidgetBase</extends>
|
||||||
<header>calibre/gui2/preferences/look_feel_tabs/book_details.h</header>
|
<header>calibre/gui2/preferences/look_feel_tabs/book_details.h</header>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
|
<customwidget>
|
||||||
|
<class>EditMetadataTab</class>
|
||||||
|
<extends>ConfigWidgetBase</extends>
|
||||||
|
<header>calibre/gui2/preferences/look_feel_tabs/edit_metadata.h</header>
|
||||||
|
</customwidget>
|
||||||
<customwidget>
|
<customwidget>
|
||||||
<class>TbDisplayTab</class>
|
<class>TbDisplayTab</class>
|
||||||
<extends>ConfigWidgetBase</extends>
|
<extends>ConfigWidgetBase</extends>
|
||||||
|
77
src/calibre/gui2/preferences/look_feel_tabs/edit_metadata.py
Normal file
77
src/calibre/gui2/preferences/look_feel_tabs/edit_metadata.py
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
__license__ = 'GPL v3'
|
||||||
|
__copyright__ = '2025, Kovid Goyal <kovid@kovidgoyal.net>'
|
||||||
|
__docformat__ = 'restructuredtext en'
|
||||||
|
|
||||||
|
|
||||||
|
from functools import partial
|
||||||
|
|
||||||
|
from calibre.gui2 import gprefs
|
||||||
|
from calibre.gui2.custom_column_widgets import get_field_list as em_get_field_list
|
||||||
|
from calibre.gui2.preferences import LazyConfigWidgetBase
|
||||||
|
from calibre.gui2.preferences.look_feel_tabs import DisplayedFields, export_layout, import_layout, move_field_down, move_field_up, reset_layout
|
||||||
|
from calibre.gui2.preferences.look_feel_tabs.edit_metadata_ui import Ui_Form
|
||||||
|
from calibre.gui2.widgets import BusyCursor
|
||||||
|
|
||||||
|
|
||||||
|
class EMDisplayedFields(DisplayedFields):
|
||||||
|
def __init__(self, db, parent=None):
|
||||||
|
DisplayedFields.__init__(self, db, parent)
|
||||||
|
|
||||||
|
def initialize(self, use_defaults=False, pref_data_override=None):
|
||||||
|
self.beginResetModel()
|
||||||
|
self.fields = [[x[0], x[1]] for x in
|
||||||
|
em_get_field_list(self.db, use_defaults=use_defaults, pref_data_override=pref_data_override)]
|
||||||
|
self.endResetModel()
|
||||||
|
self.changed = True
|
||||||
|
|
||||||
|
def commit(self):
|
||||||
|
if self.changed:
|
||||||
|
self.db.new_api.set_pref('edit_metadata_custom_columns_to_display', self.fields)
|
||||||
|
|
||||||
|
|
||||||
|
class EditMetadataTab(LazyConfigWidgetBase, Ui_Form):
|
||||||
|
|
||||||
|
def genesis(self, gui):
|
||||||
|
self.gui = gui
|
||||||
|
db = self.gui.library_view.model().db
|
||||||
|
r = self.register
|
||||||
|
|
||||||
|
r('edit_metadata_single_layout', gprefs,
|
||||||
|
choices=[(_('Default'), 'default'), (_('Compact metadata'), 'alt1'),
|
||||||
|
(_('All on 1 tab'), 'alt2')])
|
||||||
|
r('edit_metadata_ignore_display_order', db.prefs)
|
||||||
|
r('edit_metadata_elision_point', gprefs,
|
||||||
|
choices=[(_('Left'), 'left'), (_('Middle'), 'middle'),
|
||||||
|
(_('Right'), 'right')])
|
||||||
|
r('edit_metadata_elide_labels', gprefs)
|
||||||
|
r('edit_metadata_single_use_2_cols_for_custom_fields', gprefs)
|
||||||
|
r('edit_metadata_bulk_cc_label_length', gprefs)
|
||||||
|
r('edit_metadata_single_cc_label_length', gprefs)
|
||||||
|
r('edit_metadata_templates_only_F2_on_booklist', gprefs)
|
||||||
|
|
||||||
|
self.em_display_model = EMDisplayedFields(self.gui.current_db, self.em_display_order)
|
||||||
|
self.em_display_model.dataChanged.connect(self.changed_signal)
|
||||||
|
self.em_display_order.setModel(self.em_display_model)
|
||||||
|
mu = partial(move_field_up, self.em_display_order, self.em_display_model)
|
||||||
|
md = partial(move_field_down, self.em_display_order, self.em_display_model)
|
||||||
|
self.em_display_order.set_movement_functions(mu, md)
|
||||||
|
self.em_up_button.clicked.connect(mu)
|
||||||
|
self.em_down_button.clicked.connect(md)
|
||||||
|
self.em_export_layout_button.clicked.connect(partial(export_layout, self, model=self.em_display_model))
|
||||||
|
self.em_import_layout_button.clicked.connect(partial(import_layout, self, model=self.em_display_model))
|
||||||
|
self.em_reset_layout_button.clicked.connect(partial(reset_layout, model=self.em_display_model))
|
||||||
|
|
||||||
|
def lazy_initialize(self):
|
||||||
|
self.em_display_model.initialize()
|
||||||
|
|
||||||
|
def commit(self):
|
||||||
|
with BusyCursor():
|
||||||
|
self.em_display_model.commit()
|
||||||
|
return LazyConfigWidgetBase.commit(self)
|
||||||
|
|
||||||
|
def restore_defaults(self):
|
||||||
|
LazyConfigWidgetBase.restore_defaults(self)
|
||||||
|
self.em_display_model.restore_defaults()
|
||||||
|
self.changed_signal.emit()
|
274
src/calibre/gui2/preferences/look_feel_tabs/edit_metadata.ui
Normal file
274
src/calibre/gui2/preferences/look_feel_tabs/edit_metadata.ui
Normal file
@ -0,0 +1,274 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>Form</class>
|
||||||
|
<widget class="QWidget" name="edit_metadata_tab">
|
||||||
|
<attribute name="icon">
|
||||||
|
<iconset resource="../../../../resources/images.qrc">
|
||||||
|
<normaloff>:/images/edit_input.png</normaloff>:/images/edit_input.png</iconset>
|
||||||
|
</attribute>
|
||||||
|
<attribute name="title">
|
||||||
|
<string>Edit &metadata</string>
|
||||||
|
</attribute>
|
||||||
|
<layout class="QVBoxLayout" name="vbox_layout_61">
|
||||||
|
<item>
|
||||||
|
<layout class="QFormLayout">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="edit_metadata_single_label">
|
||||||
|
<property name="text">
|
||||||
|
<string>Edit metadata (single) &layout:</string>
|
||||||
|
</property>
|
||||||
|
<property name="buddy">
|
||||||
|
<cstring>opt_edit_metadata_single_layout</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QComboBox" name="opt_edit_metadata_single_layout">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Choose a different layout for the Edit metadata dialog. The compact metadata layout favors editing custom metadata over changing covers and formats.</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="groupBox">
|
||||||
|
<property name="title">
|
||||||
|
<string>Select the custom columns (for this library) to display in the edit metadata dialogs and their order:</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout_3">
|
||||||
|
<item row="3" column="1">
|
||||||
|
<widget class="QToolButton" name="em_down_button">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Move down. Keyboard shortcut: Ctrl-Down arrow</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../../../../resources/images.qrc">
|
||||||
|
<normaloff>:/images/arrow-down.png</normaloff>:/images/arrow-down.png</iconset>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QToolButton" name="em_up_button">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Move up. Keyboard shortcut: Ctrl-Up arrow</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../../../../resources/images.qrc">
|
||||||
|
<normaloff>:/images/arrow-up.png</normaloff>:/images/arrow-up.png</iconset>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1">
|
||||||
|
<spacer name="verticalSpacer_5">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0" rowspan="3">
|
||||||
|
<widget class="ListViewWithMoveByKeyPress" name="em_display_order">
|
||||||
|
<property name="alternatingRowColors">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="5" column="0">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="em_reset_layout_button">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Click this button to reset the list to its default order.</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Reset list</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="em_import_layout_button">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><p>Click this button to set the list to one
|
||||||
|
previously exported. This could be useful if you have several libraries with
|
||||||
|
similar structure and you want to use the same column order for each one. Columns
|
||||||
|
in the imported list that aren't in the current library are ignored. Columns in
|
||||||
|
the library that are not in the imported list are put at the end and marked
|
||||||
|
as displayable.</p></string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Import list</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="em_export_layout_button">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><p>Click this button to write the current display
|
||||||
|
settings to a file. This could be useful if you have several libraries with similar
|
||||||
|
structure and you want to use the same column order for each one.</p></string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Export list</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout">
|
||||||
|
<item>
|
||||||
|
<layout class="QFormLayout">
|
||||||
|
<item row="0" column="0" colspan="2">
|
||||||
|
<widget class="QCheckBox" name="opt_edit_metadata_ignore_display_order">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><p>Check this box to make the edit metadata dialogs ignore the
|
||||||
|
above specifications, showing all the columns in the default order. This is
|
||||||
|
useful for temporarily seeing all your columns in the dialogs without losing
|
||||||
|
the display and order specifications.</p></string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Show &all columns in default order when editing metadata</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0" colspan="2">
|
||||||
|
<widget class="QCheckBox" name="opt_edit_metadata_elide_labels">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>If checked then labels wider than the label width
|
||||||
|
will be elided, otherwise they will be word wrapped.</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>&Elide labels when editing custom columns</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<widget class="QLabel" name="label_1023">
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1">
|
||||||
|
<layout class="QHBoxLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_102">
|
||||||
|
<property name="text">
|
||||||
|
<string>Elision point:</string>
|
||||||
|
</property>
|
||||||
|
<property name="buddy">
|
||||||
|
<cstring>opt_edit_metadata_elision_point</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QComboBox" name="opt_edit_metadata_elision_point">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Choose where in the label to put the...</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="0" colspan="2">
|
||||||
|
<widget class="QCheckBox" name="opt_edit_metadata_templates_only_F2_on_booklist">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><p>Check this box to allow only the F2 (Edit) key to
|
||||||
|
open the template editor in the book list for a "Column built from other
|
||||||
|
columns". Editing with mouse clicks and the Tab key will be disabled.</p></string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Only the &F2 (Edit) key edits column templates in the book list</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QFormLayout">
|
||||||
|
<item row="0" column="0" colspan="2">
|
||||||
|
<widget class="QCheckBox" name="opt_edit_metadata_single_use_2_cols_for_custom_fields">
|
||||||
|
<property name="text">
|
||||||
|
<string>Use &two columns for custom columns in the Default layout</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QLabel" name="label_102">
|
||||||
|
<property name="text">
|
||||||
|
<string>&Bulk edit custom column label length:</string>
|
||||||
|
</property>
|
||||||
|
<property name="buddy">
|
||||||
|
<cstring>opt_edit_metadata_bulk_cc_label_length</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QSpinBox" name="opt_edit_metadata_bulk_cc_label_length">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>The maximum width of a custom column label for the bulk metadata edit dialog in average characters.</string>
|
||||||
|
</property>
|
||||||
|
<property name="suffix">
|
||||||
|
<string> chars</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<widget class="QLabel" name="label_1022">
|
||||||
|
<property name="text">
|
||||||
|
<string>&Single edit custom column label length:</string>
|
||||||
|
</property>
|
||||||
|
<property name="buddy">
|
||||||
|
<cstring>opt_edit_metadata_single_cc_label_length</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1">
|
||||||
|
<widget class="QSpinBox" name="opt_edit_metadata_single_cc_label_length">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>The maximum width of a custom column label for the single metadata edit dialog in average characters.</string>
|
||||||
|
</property>
|
||||||
|
<property name="suffix">
|
||||||
|
<string> chars</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<customwidgets>
|
||||||
|
<customwidget>
|
||||||
|
<class>ListViewWithMoveByKeyPress</class>
|
||||||
|
<extends>QListView</extends>
|
||||||
|
<header>calibre/gui2/preferences.h</header>
|
||||||
|
</customwidget>
|
||||||
|
</customwidgets>
|
||||||
|
<resources>
|
||||||
|
<include location="../../../../resources/images.qrc"/>
|
||||||
|
</resources>
|
||||||
|
</ui>
|
Loading…
x
Reference in New Issue
Block a user