mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Changes for enhancement #1731750
1) make the bulk custom and standard series column editors behave similarly 2) allow zero as an increment so that all the books can be set to the same series number (standard and bulk) The enhancement request suggested that the "Apply changes" checkbox be removed for custom series. I didn't do that because that checkbox is used for all custom columns.
This commit is contained in:
parent
ed2662af7b
commit
0a8e26071a
@ -975,29 +975,87 @@ class BulkSeries(BulkBase):
|
||||
layout = QHBoxLayout(w)
|
||||
layout.setContentsMargins(0, 0, 0, 0)
|
||||
self.remove_series = QCheckBox(parent)
|
||||
self.remove_series.setText(_('Remove series'))
|
||||
self.remove_series.setText(_('Clear series'))
|
||||
layout.addWidget(self.remove_series)
|
||||
self.idx_widget = QCheckBox(parent)
|
||||
self.idx_widget.setText(_('Automatically number books'))
|
||||
self.idx_widget.setToolTip('<p>' +
|
||||
_('If not checked, the series number for the books will be set to 1. '
|
||||
'If checked, selected books will be automatically numbered, '
|
||||
'in the order you selected them. So if you selected '
|
||||
'Book A and then Book B, Book A will have series number 1 '
|
||||
'and Book B series number 2.') + '</p>')
|
||||
layout.addWidget(self.idx_widget)
|
||||
self.force_number = QCheckBox(parent)
|
||||
self.force_number.setText(_('Force numbers to start with '))
|
||||
self.force_number.setToolTip('<p>' +
|
||||
_('Series will normally be renumbered from the highest '
|
||||
'number in the database for that series. Checking this '
|
||||
'box will tell calibre to start numbering from the value '
|
||||
'in the box') + '</p>')
|
||||
layout.addWidget(self.force_number)
|
||||
self.series_start_number = QSpinBox(parent)
|
||||
self.series_start_number.setMinimum(1)
|
||||
self.series_start_number.setMaximum(9999999)
|
||||
self.series_start_number.setProperty("value", 1)
|
||||
self.series_start_number = QDoubleSpinBox(parent)
|
||||
self.series_start_number.setMinimum(0.0)
|
||||
self.series_start_number.setMaximum(9999999.0)
|
||||
self.series_start_number.setProperty("value", 1.0)
|
||||
layout.addWidget(self.series_start_number)
|
||||
self.series_increment = QDoubleSpinBox(parent)
|
||||
self.series_increment.setMinimum(0.00)
|
||||
self.series_increment.setMaximum(99999.0)
|
||||
self.series_increment.setProperty("value", 1.0)
|
||||
self.series_increment.setToolTip('<p>' +
|
||||
_('The amount by which to increment the series number '
|
||||
'for successive books. Only applicable when using '
|
||||
'force series numbers.') + '</p>')
|
||||
self.series_increment.setPrefix('+')
|
||||
layout.addWidget(self.series_increment)
|
||||
layout.addItem(QSpacerItem(20, 10, QSizePolicy.Expanding, QSizePolicy.Minimum))
|
||||
self.widgets.append(w)
|
||||
self.idx_widget.stateChanged.connect(self.check_changed_checkbox)
|
||||
self.force_number.stateChanged.connect(self.check_changed_checkbox)
|
||||
self.series_start_number.valueChanged.connect(self.check_changed_checkbox)
|
||||
self.remove_series.stateChanged.connect(self.check_changed_checkbox)
|
||||
self.idx_widget.stateChanged.connect(self.a_c_checkbox_changed)
|
||||
self.force_number.stateChanged.connect(self.a_c_checkbox_changed)
|
||||
self.series_start_number.valueChanged.connect(self.a_c_checkbox_changed)
|
||||
self.series_increment.valueChanged.connect(self.a_c_checkbox_changed)
|
||||
self.remove_series.stateChanged.connect(self.a_c_checkbox_changed)
|
||||
self.main_widget
|
||||
self.ignore_change_signals = False
|
||||
|
||||
def check_changed_checkbox(self):
|
||||
self.a_c_checkbox.setChecked(True)
|
||||
def a_c_checkbox_changed(self):
|
||||
def disable_numbering_checkboxes(idx_widget_enable):
|
||||
if idx_widget_enable:
|
||||
self.idx_widget.setEnabled(True)
|
||||
else:
|
||||
self.idx_widget.setChecked(False)
|
||||
self.idx_widget.setEnabled(False)
|
||||
self.force_number.setChecked(False)
|
||||
self.force_number.setEnabled(False)
|
||||
self.series_start_number.setEnabled(False)
|
||||
self.series_increment.setEnabled(False)
|
||||
|
||||
if self.ignore_change_signals:
|
||||
return
|
||||
self.ignore_change_signals = True
|
||||
apply_changes = False
|
||||
if self.remove_series.isChecked():
|
||||
self.main_widget.setText('')
|
||||
self.main_widget.setEnabled(False)
|
||||
disable_numbering_checkboxes(idx_widget_enable=False)
|
||||
apply_changes = True
|
||||
elif self.main_widget.text():
|
||||
self.remove_series.setEnabled(False);
|
||||
disable_numbering_checkboxes(idx_widget_enable=True)
|
||||
apply_changes = True
|
||||
else: # no text, no clear. Basically reinitialize
|
||||
self.main_widget.setEnabled(True)
|
||||
self.remove_series.setEnabled(True);
|
||||
disable_numbering_checkboxes(idx_widget_enable=False)
|
||||
apply_changes = False
|
||||
|
||||
self.force_number.setEnabled(self.idx_widget.isChecked())
|
||||
self.series_start_number.setEnabled(self.force_number.isChecked())
|
||||
self.series_increment.setEnabled(self.force_number.isChecked())
|
||||
|
||||
self.ignore_change_signals = False
|
||||
self.a_c_checkbox.setChecked(apply_changes)
|
||||
|
||||
def initialize(self, book_id):
|
||||
self.idx_widget.setChecked(False)
|
||||
@ -1008,16 +1066,17 @@ class BulkSeries(BulkBase):
|
||||
|
||||
def getter(self):
|
||||
n = unicode(self.main_widget.currentText()).strip()
|
||||
i = self.idx_widget.checkState()
|
||||
f = self.force_number.checkState()
|
||||
s = self.series_start_number.value()
|
||||
r = self.remove_series.checkState()
|
||||
return n, i, f, s, r
|
||||
autonumber = self.idx_widget.checkState()
|
||||
force = self.force_number.checkState()
|
||||
start = self.series_start_number.value()
|
||||
remove = self.remove_series.checkState()
|
||||
increment = self.series_increment.value()
|
||||
return n, autonumber, force, start, remove, increment
|
||||
|
||||
def commit(self, book_ids, notify=False):
|
||||
if not self.a_c_checkbox.isChecked():
|
||||
return
|
||||
val, update_indices, force_start, at_value, clear = self.gui_val
|
||||
val, update_indices, force_start, at_value, clear, increment = self.gui_val
|
||||
val = None if clear else self.normalize_ui_val(val)
|
||||
if clear or val != '':
|
||||
extras = []
|
||||
@ -1028,7 +1087,7 @@ class BulkSeries(BulkBase):
|
||||
if update_indices:
|
||||
if force_start:
|
||||
s_index = at_value
|
||||
at_value += 1
|
||||
at_value += increment
|
||||
elif tweaks['series_index_auto_increment'] != 'const':
|
||||
s_index = self.db.get_next_cc_series_num_for(val, num=self.col_id)
|
||||
else:
|
||||
|
@ -489,7 +489,7 @@ from the value in the box</string>
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<double>1.000000000000000</double>
|
||||
<double>0.000000000000000</double>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<double>99000000.000000000000000</double>
|
||||
@ -511,7 +511,10 @@ from the value in the box</string>
|
||||
<string>+ </string>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<double>0.010000000000000</double>
|
||||
<double>0.000000000000000</double>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<double>99999.0</double>
|
||||
</property>
|
||||
<property name="value">
|
||||
<double>1.000000000000000</double>
|
||||
|
Loading…
x
Reference in New Issue
Block a user