mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-08 10:44:09 -04:00
Merge branch 'master' of https://github.com/cbhaley/calibre
This commit is contained in:
commit
37334d19cc
@ -37,7 +37,7 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
|
||||
self.add_custcol_button.clicked.connect(self.add_custcol)
|
||||
self.add_col_button.clicked.connect(self.add_custcol)
|
||||
self.edit_custcol_button.clicked.connect(self.edit_custcol)
|
||||
self.opt_columns.currentCellChanged.connect(self.current_cell_changed)
|
||||
self.opt_columns.currentItemChanged.connect(self.set_up_down_enabled)
|
||||
for signal in ('Activated', 'Changed', 'DoubleClicked', 'Clicked'):
|
||||
signal = getattr(self.opt_columns, 'item'+signal)
|
||||
signal.connect(self.columns_changed)
|
||||
@ -89,18 +89,22 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
|
||||
CreateCustomColumn.column_types))
|
||||
|
||||
for row, key in enumerate(colmap):
|
||||
self.setup_row(row, key)
|
||||
self.setup_row(row, key, row)
|
||||
self.initial_row_count = row
|
||||
self.opt_columns.setSortingEnabled(True)
|
||||
self.opt_columns.horizontalHeader().setSortIndicator(0, Qt.AscendingOrder)
|
||||
self.opt_columns.horizontalHeader().setSortIndicator(0, Qt.SortOrder.AscendingOrder)
|
||||
self.restore_geometry()
|
||||
self.opt_columns.cellDoubleClicked.connect(self.row_double_clicked)
|
||||
self.opt_columns.setCurrentCell(0, 1)
|
||||
self.set_up_down_enabled(self.opt_columns.currentItem(), None)
|
||||
self.opt_columns.blockSignals(False)
|
||||
|
||||
def current_cell_changed(self, current_row, current_col, prev_row, prev_col):
|
||||
if self.opt_columns.horizontalHeader().sortIndicatorSection() == 0:
|
||||
self.column_up.setEnabled(current_row > 0 and current_row <= self.initial_row_count)
|
||||
self.column_down.setEnabled(current_row < self.initial_row_count)
|
||||
def set_up_down_enabled(self, current_item, _):
|
||||
h = self.opt_columns.horizontalHeader()
|
||||
row = current_item.row()
|
||||
if h.sortIndicatorSection() == 0 and h.sortIndicatorOrder() == Qt.SortOrder.AscendingOrder:
|
||||
self.column_up.setEnabled(row > 0 and row <= self.initial_row_count)
|
||||
self.column_down.setEnabled(row < self.initial_row_count)
|
||||
|
||||
def columns_changed(self, *args):
|
||||
self.changed_signal.emit()
|
||||
@ -111,9 +115,12 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
|
||||
return self.gui.library_view.get_state()
|
||||
|
||||
def table_sorted(self, column):
|
||||
self.column_up.setEnabled(column == 0)
|
||||
self.column_down.setEnabled(column == 0)
|
||||
h = self.opt_columns.horizontalHeader()
|
||||
enabled = column == 0 and h.sortIndicatorOrder() == Qt.SortOrder.AscendingOrder
|
||||
self.column_up.setEnabled(enabled)
|
||||
self.column_down.setEnabled(enabled)
|
||||
self.opt_columns.scrollTo(self.opt_columns.currentIndex())
|
||||
self.set_up_down_enabled(self.opt_columns.currentItem(), _)
|
||||
|
||||
def row_double_clicked(self, r, c):
|
||||
self.edit_custcol()
|
||||
@ -127,7 +134,7 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
|
||||
return
|
||||
self.opt_columns.resizeColumnsToContents()
|
||||
|
||||
def setup_row(self, row, key):
|
||||
def setup_row(self, row, key, order):
|
||||
flags = Qt.ItemFlag.ItemIsEnabled | Qt.ItemFlag.ItemIsSelectable
|
||||
|
||||
if self.is_custom_key(key):
|
||||
@ -137,9 +144,10 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
|
||||
cc = self.field_metadata[key]
|
||||
original_key = key
|
||||
|
||||
self.opt_columns.setSortingEnabled(False)
|
||||
item = QTableWidgetItem()
|
||||
item.setData(Qt.ItemDataRole.DisplayRole, row)
|
||||
item.setToolTip(str(row))
|
||||
item.setData(Qt.ItemDataRole.DisplayRole, order)
|
||||
item.setToolTip(str(order))
|
||||
item.setData(Qt.ItemDataRole.UserRole, key)
|
||||
item.setFlags(flags)
|
||||
self.opt_columns.setItem(row, 0, item)
|
||||
@ -203,8 +211,10 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
|
||||
item.setToolTip(col_status)
|
||||
item.setFlags(flags)
|
||||
self.opt_columns.setItem(row, 5, item)
|
||||
self.opt_columns.setSortingEnabled(True)
|
||||
|
||||
def up_column(self):
|
||||
self.opt_columns.setSortingEnabled(False)
|
||||
row = self.opt_columns.currentRow()
|
||||
if row > 0:
|
||||
for i in range(0, self.opt_columns.columnCount()):
|
||||
@ -212,12 +222,14 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
|
||||
upper = self.opt_columns.takeItem(row, i)
|
||||
self.opt_columns.setItem(row, i, lower)
|
||||
self.opt_columns.setItem(row-1, i, upper)
|
||||
self.setup_row(row-1, self.opt_columns.item(row-1, 2).text())
|
||||
self.setup_row(row, self.opt_columns.item(row, 2).text())
|
||||
self.opt_columns.setCurrentCell(row-1, 0)
|
||||
self.setup_row(row-1, self.opt_columns.item(row-1, 2).text(), row-1)
|
||||
self.setup_row(row, self.opt_columns.item(row, 2).text(), row)
|
||||
self.opt_columns.setCurrentCell(row-1, 1)
|
||||
self.changed_signal.emit()
|
||||
self.opt_columns.setSortingEnabled(True)
|
||||
|
||||
def down_column(self):
|
||||
self.opt_columns.setSortingEnabled(False)
|
||||
row = self.opt_columns.currentRow()
|
||||
if row < self.opt_columns.rowCount()-1:
|
||||
for i in range(0, self.opt_columns.columnCount()):
|
||||
@ -225,10 +237,11 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
|
||||
upper = self.opt_columns.takeItem(row+1, i)
|
||||
self.opt_columns.setItem(row+1, i, lower)
|
||||
self.opt_columns.setItem(row, i, upper)
|
||||
self.setup_row(row+1, self.opt_columns.item(row+1, 2).text())
|
||||
self.setup_row(row, self.opt_columns.item(row, 2).text())
|
||||
self.opt_columns.setCurrentCell(row+1, 0)
|
||||
self.setup_row(row+1, self.opt_columns.item(row+1, 2).text(), row+1)
|
||||
self.setup_row(row, self.opt_columns.item(row, 2).text(), row)
|
||||
self.opt_columns.setCurrentCell(row+1, 1)
|
||||
self.changed_signal.emit()
|
||||
self.opt_columns.setSortingEnabled(True)
|
||||
|
||||
def is_new_custom_column(self, cc):
|
||||
return 'colnum' in cc and cc['colnum'] >= self.initial_created_count
|
||||
@ -255,7 +268,7 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
|
||||
self.opt_columns.removeRow(row)
|
||||
else:
|
||||
self.custcols[key]['*deleted'] = True
|
||||
self.setup_row(row, key)
|
||||
self.setup_row(row, key, self.column_order_val(row))
|
||||
self.changed_signal.emit()
|
||||
|
||||
def add_custcol(self):
|
||||
@ -267,8 +280,15 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
|
||||
self.set_new_custom_column(cc)
|
||||
cc['original_key'] = self.cc_column_key
|
||||
row = self.opt_columns.rowCount()
|
||||
self.opt_columns.setRowCount(row + 1)
|
||||
self.setup_row(row, self.cc_column_key)
|
||||
o = self.opt_columns
|
||||
o.setRowCount(row + 1)
|
||||
self.setup_row(row, self.cc_column_key, row)
|
||||
# We need to find the new item after sorting
|
||||
for i in range(0, o.rowCount()):
|
||||
if self.column_order_val(i) == row:
|
||||
o.setCurrentCell(i, 1)
|
||||
o.scrollTo(o.currentIndex())
|
||||
break;
|
||||
self.changed_signal.emit()
|
||||
|
||||
def label_to_lookup_name(self, label):
|
||||
@ -277,6 +297,9 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
|
||||
def is_custom_key(self, key):
|
||||
return key.startswith('#')
|
||||
|
||||
def column_order_val(self, row):
|
||||
return int(self.opt_columns.item(row, 0).text())
|
||||
|
||||
def edit_custcol(self):
|
||||
model = self.gui.library_view.model()
|
||||
row = self.opt_columns.currentRow()
|
||||
@ -292,7 +315,7 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
|
||||
_('The column is to be deleted. Do you want to undelete it?'),
|
||||
show_copy_button=False):
|
||||
cc.pop('*deleted', None)
|
||||
self.setup_row(row, key)
|
||||
self.setup_row(row, key, self.column_order_val(row))
|
||||
return
|
||||
CreateCustomColumn(self.gui, self,
|
||||
self.label_to_lookup_name(self.custcols[key]['label']),
|
||||
@ -306,7 +329,8 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
|
||||
cc = self.custcols[new_key]
|
||||
if self.is_new_custom_column(cc):
|
||||
cc.pop('*edited', None)
|
||||
self.setup_row(row, new_key)
|
||||
self.setup_row(row, new_key, self.column_order_val(row))
|
||||
self.opt_columns.scrollTo(self.opt_columns.currentIndex())
|
||||
self.changed_signal.emit()
|
||||
except:
|
||||
import traceback
|
||||
|
Loading…
x
Reference in New Issue
Block a user