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