mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-08 18:54:09 -04:00
...
This commit is contained in:
commit
7c42571c4a
@ -465,8 +465,7 @@ class GenericRulesTable(QTableWidget):
|
||||
self.db = db
|
||||
QTableWidget.__init__(self)
|
||||
self.setObjectName(object_name)
|
||||
self.layout = QHBoxLayout()
|
||||
parent_gb.setLayout(self.layout)
|
||||
self.layout = parent_gb.layout()
|
||||
|
||||
# Add ourselves to the layout
|
||||
#print("verticalHeader: %s" % dir(self.verticalHeader()))
|
||||
@ -537,7 +536,7 @@ class GenericRulesTable(QTableWidget):
|
||||
|
||||
def create_blank_row_data(self):
|
||||
'''
|
||||
ovverride
|
||||
override
|
||||
'''
|
||||
pass
|
||||
|
||||
@ -570,6 +569,9 @@ class GenericRulesTable(QTableWidget):
|
||||
self.clearSelection()
|
||||
|
||||
def get_data(self):
|
||||
'''
|
||||
override
|
||||
'''
|
||||
pass
|
||||
|
||||
def move_row_down(self):
|
||||
@ -597,6 +599,7 @@ class GenericRulesTable(QTableWidget):
|
||||
|
||||
# Populate it with the saved data
|
||||
self.populate_table_row(src_row, saved_data)
|
||||
|
||||
self.blockSignals(False)
|
||||
scroll_to_row = last_sel_row + 1
|
||||
if scroll_to_row < self.rowCount() - 1:
|
||||
@ -650,23 +653,21 @@ class GenericRulesTable(QTableWidget):
|
||||
self.selectRow(row)
|
||||
self.scrollToItem(self.currentItem())
|
||||
|
||||
def tweak_height(self, height=4):
|
||||
for i in range(min(3,self.rowCount())):
|
||||
height += self.rowHeight(i)
|
||||
height += self.verticalHeader().sizeHint().height()
|
||||
print("computed table height for %d rows: %d" % (self.rowCount(),height, ))
|
||||
self.setMinimumSize(QSize(16777215, height))
|
||||
self.setMaximumSize(QSize(16777215, height))
|
||||
|
||||
class ExclusionRules(GenericRulesTable):
|
||||
|
||||
COLUMNS = { 'ENABLED':{'ordinal': 0, 'name': ''},
|
||||
'NAME': {'ordinal': 1, 'name': 'Name'},
|
||||
'FIELD': {'ordinal': 2, 'name': 'Field'},
|
||||
'PATTERN': {'ordinal': 3, 'name': 'Value'},}
|
||||
|
||||
def __init__(self, parent_gb_hl, object_name, rules, eligible_custom_fields, db):
|
||||
super(ExclusionRules, self).__init__(parent_gb_hl, object_name, rules, eligible_custom_fields, db)
|
||||
self._init_table_widget()
|
||||
self._initialize()
|
||||
|
||||
def _init_table_widget(self):
|
||||
header_labels = ['','Name','Field','Value']
|
||||
header_labels = [self.COLUMNS[index]['name'] \
|
||||
for index in sorted(self.COLUMNS.keys(), key=lambda c: self.COLUMNS[c]['ordinal'])]
|
||||
self.setColumnCount(len(header_labels))
|
||||
self.setHorizontalHeaderLabels(header_labels)
|
||||
self.setSortingEnabled(False)
|
||||
@ -682,10 +683,10 @@ class ExclusionRules(GenericRulesTable):
|
||||
def convert_row_to_data(self, row):
|
||||
data = self.create_blank_row_data()
|
||||
data['ordinal'] = row
|
||||
data['enabled'] = self.item(row,0).checkState() == Qt.Checked
|
||||
data['name'] = unicode(self.cellWidget(row,1).text()).strip()
|
||||
data['field'] = unicode(self.cellWidget(row,2).currentText()).strip()
|
||||
data['pattern'] = unicode(self.cellWidget(row,3).currentText()).strip()
|
||||
data['enabled'] = self.item(row,self.COLUMNS['ENABLED']['ordinal']).checkState() == Qt.Checked
|
||||
data['name'] = unicode(self.cellWidget(row,self.COLUMNS['NAME']['ordinal']).text()).strip()
|
||||
data['field'] = unicode(self.cellWidget(row,self.COLUMNS['FIELD']['ordinal']).currentText()).strip()
|
||||
data['pattern'] = unicode(self.cellWidget(row,self.COLUMNS['PATTERN']['ordinal']).currentText()).strip()
|
||||
return data
|
||||
|
||||
def create_blank_row_data(self):
|
||||
@ -740,18 +741,18 @@ class ExclusionRules(GenericRulesTable):
|
||||
# Entry point
|
||||
self.blockSignals(True)
|
||||
|
||||
# Column 0: Enabled
|
||||
self.setItem(row, 0, CheckableTableWidgetItem(data['enabled']))
|
||||
# Enabled
|
||||
self.setItem(row, self.COLUMNS['ENABLED']['ordinal'], CheckableTableWidgetItem(data['enabled']))
|
||||
|
||||
# Column 1: Rule name
|
||||
set_rule_name_in_row(row, 1, name=data['name'])
|
||||
# Rule name
|
||||
set_rule_name_in_row(row, self.COLUMNS['NAME']['ordinal'], name=data['name'])
|
||||
|
||||
# Column 2: Source field
|
||||
source_combo = set_source_field_in_row(row, 2, field=data['field'])
|
||||
# Source field
|
||||
source_combo = set_source_field_in_row(row, self.COLUMNS['FIELD']['ordinal'], field=data['field'])
|
||||
|
||||
# Column 3: Pattern
|
||||
# Pattern
|
||||
# The contents of the Pattern field is driven by the Source field
|
||||
self.source_index_changed(source_combo, row, 3, pattern=data['pattern'])
|
||||
self.source_index_changed(source_combo, row, self.COLUMNS['PATTERN']['ordinal'], pattern=data['pattern'])
|
||||
|
||||
self.blockSignals(False)
|
||||
|
||||
@ -775,17 +776,24 @@ class ExclusionRules(GenericRulesTable):
|
||||
values = ['any date','unspecified']
|
||||
|
||||
values_combo = ComboBox(self, values, pattern)
|
||||
self.setCellWidget(row, 3, values_combo)
|
||||
self.setCellWidget(row, self.COLUMNS['PATTERN']['ordinal'], values_combo)
|
||||
|
||||
class PrefixRules(GenericRulesTable):
|
||||
|
||||
COLUMNS = { 'ENABLED':{'ordinal': 0, 'name': ''},
|
||||
'NAME': {'ordinal': 1, 'name': 'Name'},
|
||||
'PREFIX': {'ordinal': 2, 'name': 'Prefix'},
|
||||
'FIELD': {'ordinal': 3, 'name': 'Field'},
|
||||
'PATTERN':{'ordinal': 4, 'name': 'Value'},}
|
||||
|
||||
def __init__(self, parent_gb_hl, object_name, rules, eligible_custom_fields, db):
|
||||
super(PrefixRules, self).__init__(parent_gb_hl, object_name, rules, eligible_custom_fields, db)
|
||||
self._init_table_widget()
|
||||
self._initialize()
|
||||
|
||||
def _init_table_widget(self):
|
||||
header_labels = ['','Name','Prefix','Field','Value']
|
||||
header_labels = [self.COLUMNS[index]['name'] \
|
||||
for index in sorted(self.COLUMNS.keys(), key=lambda c: self.COLUMNS[c]['ordinal'])]
|
||||
self.setColumnCount(len(header_labels))
|
||||
self.setHorizontalHeaderLabels(header_labels)
|
||||
self.setSortingEnabled(False)
|
||||
@ -803,10 +811,10 @@ class PrefixRules(GenericRulesTable):
|
||||
data = self.create_blank_row_data()
|
||||
data['ordinal'] = row
|
||||
data['enabled'] = self.item(row,0).checkState() == Qt.Checked
|
||||
data['name'] = unicode(self.cellWidget(row,1).text()).strip()
|
||||
data['prefix'] = unicode(self.cellWidget(row,2).currentText()).strip()
|
||||
data['field'] = unicode(self.cellWidget(row,3).currentText()).strip()
|
||||
data['pattern'] = unicode(self.cellWidget(row,4).currentText()).strip()
|
||||
data['name'] = unicode(self.cellWidget(row,self.COLUMNS['NAME']['ordinal']).text()).strip()
|
||||
data['prefix'] = unicode(self.cellWidget(row,self.COLUMNS['PREFIX']['ordinal']).currentText()).strip()
|
||||
data['field'] = unicode(self.cellWidget(row,self.COLUMNS['FIELD']['ordinal']).currentText()).strip()
|
||||
data['pattern'] = unicode(self.cellWidget(row,self.COLUMNS['PATTERN']['ordinal']).currentText()).strip()
|
||||
return data
|
||||
|
||||
def create_blank_row_data(self):
|
||||
@ -1003,22 +1011,21 @@ class PrefixRules(GenericRulesTable):
|
||||
self.blockSignals(True)
|
||||
#print("prefix_rules_populate_table_row processing rule:\n%s\n" % data)
|
||||
|
||||
# Column 0: Enabled
|
||||
self.setItem(row, 0, CheckableTableWidgetItem(data['enabled']))
|
||||
# Enabled
|
||||
self.setItem(row, self.COLUMNS['ENABLED']['ordinal'], CheckableTableWidgetItem(data['enabled']))
|
||||
|
||||
# Column 1: Rule name
|
||||
#rule_name = QTableWidgetItem(data['name'])
|
||||
set_rule_name_in_row(row, 1, name=data['name'])
|
||||
# Rule name
|
||||
set_rule_name_in_row(row, self.COLUMNS['NAME']['ordinal'], name=data['name'])
|
||||
|
||||
# Column 2: Prefix
|
||||
set_prefix_field_in_row(row, 2, field=data['prefix'])
|
||||
# Prefix
|
||||
set_prefix_field_in_row(row, self.COLUMNS['PREFIX']['ordinal'], field=data['prefix'])
|
||||
|
||||
# Column 3: Source field
|
||||
source_combo = set_source_field_in_row(row, 3, field=data['field'])
|
||||
# Source field
|
||||
source_combo = set_source_field_in_row(row, self.COLUMNS['FIELD']['ordinal'], field=data['field'])
|
||||
|
||||
# Column 4: Pattern
|
||||
# Pattern
|
||||
# The contents of the Pattern field is driven by the Source field
|
||||
self.source_index_changed(source_combo, row, 4, pattern=data['pattern'])
|
||||
self.source_index_changed(source_combo, row, self.COLUMNS['PATTERN']['ordinal'], pattern=data['pattern'])
|
||||
|
||||
self.blockSignals(False)
|
||||
|
||||
@ -1044,5 +1051,5 @@ class PrefixRules(GenericRulesTable):
|
||||
values = ['any date','unspecified']
|
||||
|
||||
values_combo = ComboBox(self, values, pattern)
|
||||
self.setCellWidget(row, 4, values_combo)
|
||||
self.setCellWidget(row, self.COLUMNS['PATTERN']['ordinal'], values_combo)
|
||||
|
||||
|
@ -210,6 +210,11 @@ The default pattern \[.+\]|\+ excludes tags of the form [tag], e.g., [Test book]
|
||||
<property name="title">
|
||||
<string>Excluded books</string>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
@ -221,11 +226,16 @@ The default pattern \[.+\]|\+ excludes tags of the form [tag], e.g., [Test book]
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>The first enabled matching rule will be used to add a prefix to book listings in the generated catalog.</string>
|
||||
<string>The first matching prefix rule applies a prefix to book listings in the generated catalog.</string>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Prefix rules</string>
|
||||
<string>Prefixes</string>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_8">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_6"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
|
Loading…
x
Reference in New Issue
Block a user