diff --git a/src/calibre/gui2/metadata/single.py b/src/calibre/gui2/metadata/single.py index 4f66e0d2ba..cba877b249 100644 --- a/src/calibre/gui2/metadata/single.py +++ b/src/calibre/gui2/metadata/single.py @@ -521,7 +521,7 @@ class MetadataSingleDialog(MetadataSingleDialogBase): # {{{ # }}} -class MetadataSingleDialogAlt(MetadataSingleDialogBase): # {{{ +class MetadataSingleDialogAlt1(MetadataSingleDialogBase): # {{{ cc_two_column = False one_line_comments_toolbar = True @@ -654,10 +654,14 @@ class MetadataSingleDialogAlt(MetadataSingleDialogBase): # {{{ # }}} +editors = {'default': MetadataSingleDialog, 'alt1': MetadataSingleDialogAlt1} def edit_metadata(db, row_list, current_row, parent=None, view_slot=None, set_current_callback=None): - d = MetadataSingleDialog(db, parent) + cls = db.prefs.get('edit_metadata_single_layout', '') + if cls not in editors: + cls = 'default' + d = editors[cls](db, parent) d.start(row_list, current_row, view_slot=view_slot, set_current_callback=set_current_callback) return d.changed, d.rows_to_refresh diff --git a/src/calibre/gui2/preferences/columns.py b/src/calibre/gui2/preferences/columns.py index 03a50e6f3a..7c57054253 100644 --- a/src/calibre/gui2/preferences/columns.py +++ b/src/calibre/gui2/preferences/columns.py @@ -13,6 +13,7 @@ from calibre.gui2.preferences import ConfigWidgetBase, test_widget from calibre.gui2.preferences.columns_ui import Ui_Form from calibre.gui2.preferences.create_custom_column import CreateCustomColumn from calibre.gui2 import error_dialog, question_dialog, ALL_COLUMNS +from calibre.utils.config import test_eight_code class ConfigWidget(ConfigWidgetBase, Ui_Form): @@ -33,6 +34,14 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form): signal = getattr(self.opt_columns, 'item'+signal) signal.connect(self.columns_changed) + if test_eight_code: + r = self.register + choices = [(_('Default'), 'default'), (_('Compact Metadata'), 'alt1')] + r('edit_metadata_single_layout', db.prefs, choices=choices) + r('bools_are_tristate', db.prefs) + else: + self.items_in_v_eight.setVisible(False) + def initialize(self): ConfigWidgetBase.initialize(self) self.init_columns() diff --git a/src/calibre/gui2/preferences/columns.ui b/src/calibre/gui2/preferences/columns.ui index a9d82530ec..685a5ab847 100644 --- a/src/calibre/gui2/preferences/columns.ui +++ b/src/calibre/gui2/preferences/columns.ui @@ -197,6 +197,67 @@ + + + + + + Related Options + + + + + + Edit metadata layout: + + + opt_edit_metadata_single_layout + + + + + + + Choose varying layouts in the Edit Metadata Single dialog. + + + + + + + Boolean columns are tristate: + + + opt_bools_are_tristate + + + + + + + If checked, boolean columns values can be Yes, No, and Unknown. +If not checked, the values can be Yes and No. + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + diff --git a/src/calibre/library/database2.py b/src/calibre/library/database2.py index 042899adbe..e560ac7c6e 100644 --- a/src/calibre/library/database2.py +++ b/src/calibre/library/database2.py @@ -213,6 +213,8 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): defs = self.prefs.defaults defs['gui_restriction'] = defs['cs_restriction'] = '' defs['categories_using_hierarchy'] = [] + defs['edit_metadata_single_layout'] = 'default' + defs['bools_are_tristate'] = tweaks['bool_custom_columns_are_tristate'] # Migrate saved search and user categories to db preference scheme def migrate_preference(key, default):