mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Enhancement #1880174: Delete tags in Tag Manager by pressing "delete" key
This commit is contained in:
parent
1e275fc669
commit
ef63b9bff9
@ -188,6 +188,7 @@ class TagListEditor(QDialog, Ui_TagListEditor):
|
||||
self.string_contains = contains
|
||||
|
||||
self.delete_button.clicked.connect(self.delete_tags)
|
||||
self.table.delete_pressed.connect(self.delete_pressed)
|
||||
self.rename_button.clicked.connect(self.rename_tag)
|
||||
self.undo_button.clicked.connect(self.undo_edit)
|
||||
self.table.itemDoubleClicked.connect(self._rename_tag)
|
||||
@ -452,6 +453,10 @@ class TagListEditor(QDialog, Ui_TagListEditor):
|
||||
else:
|
||||
self.table.editItem(item)
|
||||
|
||||
def delete_pressed(self):
|
||||
if self.table.currentColumn() == 0:
|
||||
self.delete_tags()
|
||||
|
||||
def delete_tags(self):
|
||||
deletes = self.table.selectedItems()
|
||||
if not deletes:
|
||||
@ -460,41 +465,26 @@ class TagListEditor(QDialog, Ui_TagListEditor):
|
||||
return
|
||||
|
||||
to_del = []
|
||||
to_undel = []
|
||||
for item in deletes:
|
||||
if item.is_deleted:
|
||||
to_undel.append(item)
|
||||
else:
|
||||
if not item.is_deleted:
|
||||
to_del.append(item)
|
||||
|
||||
if to_del:
|
||||
ct = ', '.join([unicode_type(item.text()) for item in to_del])
|
||||
if not confirm(
|
||||
'<p>'+_('Are you sure you want to delete the following items?')+'<br>'+ct,
|
||||
'tag_list_editor_delete'):
|
||||
return
|
||||
if to_undel:
|
||||
ct = ', '.join([unicode_type(item.text()) for item in to_undel])
|
||||
if not confirm(
|
||||
'<p>'+_('Are you sure you want to undelete the following items?')+'<br>'+ct,
|
||||
'tag_list_editor_undelete'):
|
||||
return
|
||||
|
||||
row = self.table.row(deletes[0])
|
||||
self.table.blockSignals(True)
|
||||
for item in deletes:
|
||||
if item.is_deleted:
|
||||
item.set_is_deleted(False)
|
||||
self.to_delete.discard(int(item.data(Qt.UserRole)))
|
||||
orig = self.table.item(item.row(), 2)
|
||||
self.table.blockSignals(True)
|
||||
orig.setData(Qt.DisplayRole, '')
|
||||
self.table.blockSignals(False)
|
||||
else:
|
||||
id = int(item.data(Qt.UserRole))
|
||||
self.to_delete.add(id)
|
||||
item.set_is_deleted(True)
|
||||
orig = self.table.item(item.row(), 2)
|
||||
self.table.blockSignals(True)
|
||||
orig.setData(Qt.DisplayRole, item.initial_text())
|
||||
self.table.blockSignals(False)
|
||||
id_ = int(item.data(Qt.UserRole))
|
||||
self.to_delete.add(id_)
|
||||
item.set_is_deleted(True)
|
||||
orig = self.table.item(item.row(), 2)
|
||||
orig.setData(Qt.DisplayRole, item.initial_text())
|
||||
self.table.blockSignals(False)
|
||||
if row >= self.table.rowCount():
|
||||
row = self.table.rowCount() - 1
|
||||
if row >= 0:
|
||||
|
@ -197,7 +197,7 @@
|
||||
</layout>
|
||||
</item>
|
||||
<item row="2" column="1" colspan="4">
|
||||
<widget class="QTableWidget" name="table">
|
||||
<widget class="TleTableWidget" name="table">
|
||||
<property name="alternatingRowColors">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
@ -224,6 +224,12 @@
|
||||
<extends>QLineEdit</extends>
|
||||
<header>calibre/gui2/widgets.h</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>TleTableWidget</class>
|
||||
<extends>QTableWidget</extends>
|
||||
<header>calibre/gui2/dialogs/tag_list_editor_table_widget.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources>
|
||||
<include location="../../../../resources/images.qrc"/>
|
||||
|
20
src/calibre/gui2/dialogs/tag_list_editor_table_widget.py
Normal file
20
src/calibre/gui2/dialogs/tag_list_editor_table_widget.py
Normal file
@ -0,0 +1,20 @@
|
||||
#!/usr/bin/env python2
|
||||
# vim:fileencoding=utf-8
|
||||
# License: GPLv3 Copyright: 2008, Kovid Goyal <kovid at kovidgoyal.net>
|
||||
from __future__ import absolute_import, division, print_function, unicode_literals
|
||||
|
||||
from PyQt5.Qt import (Qt, QTableWidget, pyqtSignal)
|
||||
|
||||
class TleTableWidget(QTableWidget):
|
||||
|
||||
delete_pressed = pyqtSignal()
|
||||
|
||||
def __init__(self, parent=None):
|
||||
QTableWidget.__init__(self, parent=parent)
|
||||
|
||||
def keyPressEvent(self, event):
|
||||
if event.key() == Qt.Key_Delete:
|
||||
self.delete_pressed.emit()
|
||||
event.accept()
|
||||
return
|
||||
return QTableWidget.keyPressEvent(self, event)
|
Loading…
x
Reference in New Issue
Block a user