mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-07 10:14:46 -04:00
Enhancement 2086748] Efficient Column Positioning in Column Manager
Added keyboard modifiers to the up/down buttons on the dialog. Click moves the row one place (as before). Shift-click moves the row 5 places. Ctrl-click moves the row 10 places. Ctrl-Shift-click moves the row to the top or bottom as appropriate.
This commit is contained in:
parent
37dd0f5c70
commit
d9bd244f06
@ -9,7 +9,7 @@ import copy
|
||||
import sys
|
||||
from contextlib import suppress
|
||||
|
||||
from qt.core import QAbstractItemView, QIcon, Qt, QTableWidgetItem
|
||||
from qt.core import QAbstractItemView, QApplication, QIcon, Qt, QTableWidgetItem
|
||||
|
||||
from calibre.gui2 import Application, error_dialog, gprefs, question_dialog
|
||||
from calibre.gui2.preferences import ConfigWidgetBase, test_widget
|
||||
@ -239,35 +239,51 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
|
||||
title = self.opt_columns.item(row, 2).text()
|
||||
self.setup_row(row, title, row, force_checked_to=checked)
|
||||
|
||||
def get_move_count(self):
|
||||
mods = QApplication.keyboardModifiers()
|
||||
if mods == Qt.KeyboardModifier.ShiftModifier:
|
||||
count = 5
|
||||
elif mods == Qt.KeyboardModifier.ControlModifier:
|
||||
count = 10
|
||||
elif mods == (Qt.KeyboardModifier.ShiftModifier | Qt.KeyboardModifier.ControlModifier):
|
||||
count = self.opt_columns.rowCount()
|
||||
else:
|
||||
count = 1
|
||||
return count
|
||||
|
||||
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()):
|
||||
lower = self.opt_columns.takeItem(row-1, i)
|
||||
upper = self.opt_columns.takeItem(row, i)
|
||||
self.opt_columns.setItem(row, i, lower)
|
||||
self.opt_columns.setItem(row-1, i, upper)
|
||||
self.recreate_row(row-1)
|
||||
self.recreate_row(row)
|
||||
self.opt_columns.setCurrentCell(row-1, 1)
|
||||
self.changed_signal.emit()
|
||||
self.opt_columns.setSortingEnabled(True)
|
||||
count = self.get_move_count()
|
||||
for _ in range(0, count):
|
||||
row = self.opt_columns.currentRow()
|
||||
if row > 0:
|
||||
self.opt_columns.setSortingEnabled(False)
|
||||
for i in range(0, self.opt_columns.columnCount()):
|
||||
lower = self.opt_columns.takeItem(row-1, i)
|
||||
upper = self.opt_columns.takeItem(row, i)
|
||||
self.opt_columns.setItem(row, i, lower)
|
||||
self.opt_columns.setItem(row-1, i, upper)
|
||||
self.recreate_row(row-1)
|
||||
self.recreate_row(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()):
|
||||
lower = self.opt_columns.takeItem(row, i)
|
||||
upper = self.opt_columns.takeItem(row+1, i)
|
||||
self.opt_columns.setItem(row+1, i, lower)
|
||||
self.opt_columns.setItem(row, i, upper)
|
||||
self.recreate_row(row+1)
|
||||
self.recreate_row(row)
|
||||
self.opt_columns.setCurrentCell(row+1, 1)
|
||||
self.changed_signal.emit()
|
||||
self.opt_columns.setSortingEnabled(True)
|
||||
count = self.get_move_count()
|
||||
for _ in range(0, count):
|
||||
row = self.opt_columns.currentRow()
|
||||
if row < self.opt_columns.rowCount()-1:
|
||||
self.opt_columns.setSortingEnabled(False)
|
||||
for i in range(0, self.opt_columns.columnCount()):
|
||||
lower = self.opt_columns.takeItem(row, i)
|
||||
upper = self.opt_columns.takeItem(row+1, i)
|
||||
self.opt_columns.setItem(row+1, i, lower)
|
||||
self.opt_columns.setItem(row, i, upper)
|
||||
self.recreate_row(row+1)
|
||||
self.recreate_row(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
|
||||
|
@ -39,7 +39,8 @@
|
||||
<item>
|
||||
<widget class="QToolButton" name="column_up">
|
||||
<property name="toolTip">
|
||||
<string>Move column up</string>
|
||||
<string><p>Click to move the row up 1. Shift+click to move the row up 5.
|
||||
Ctrl+click to move the row up 10. Ctrl+Shift+click to move the row to the top.</p></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>...</string>
|
||||
@ -171,7 +172,8 @@
|
||||
<item>
|
||||
<widget class="QToolButton" name="column_down">
|
||||
<property name="toolTip">
|
||||
<string>Move column down</string>
|
||||
<string><p>Click to move the row down 1. Shift+click to move the row down 5.
|
||||
Ctrl+click to move the row down 10. Ctrl+Shift+click to move the row to the bottom.</p></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>...</string>
|
||||
|
Loading…
x
Reference in New Issue
Block a user