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.string_contains = contains
|
||||||
|
|
||||||
self.delete_button.clicked.connect(self.delete_tags)
|
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.rename_button.clicked.connect(self.rename_tag)
|
||||||
self.undo_button.clicked.connect(self.undo_edit)
|
self.undo_button.clicked.connect(self.undo_edit)
|
||||||
self.table.itemDoubleClicked.connect(self._rename_tag)
|
self.table.itemDoubleClicked.connect(self._rename_tag)
|
||||||
@ -452,6 +453,10 @@ class TagListEditor(QDialog, Ui_TagListEditor):
|
|||||||
else:
|
else:
|
||||||
self.table.editItem(item)
|
self.table.editItem(item)
|
||||||
|
|
||||||
|
def delete_pressed(self):
|
||||||
|
if self.table.currentColumn() == 0:
|
||||||
|
self.delete_tags()
|
||||||
|
|
||||||
def delete_tags(self):
|
def delete_tags(self):
|
||||||
deletes = self.table.selectedItems()
|
deletes = self.table.selectedItems()
|
||||||
if not deletes:
|
if not deletes:
|
||||||
@ -460,39 +465,24 @@ class TagListEditor(QDialog, Ui_TagListEditor):
|
|||||||
return
|
return
|
||||||
|
|
||||||
to_del = []
|
to_del = []
|
||||||
to_undel = []
|
|
||||||
for item in deletes:
|
for item in deletes:
|
||||||
if item.is_deleted:
|
if not item.is_deleted:
|
||||||
to_undel.append(item)
|
|
||||||
else:
|
|
||||||
to_del.append(item)
|
to_del.append(item)
|
||||||
|
|
||||||
if to_del:
|
if to_del:
|
||||||
ct = ', '.join([unicode_type(item.text()) for item in to_del])
|
ct = ', '.join([unicode_type(item.text()) for item in to_del])
|
||||||
if not confirm(
|
if not confirm(
|
||||||
'<p>'+_('Are you sure you want to delete the following items?')+'<br>'+ct,
|
'<p>'+_('Are you sure you want to delete the following items?')+'<br>'+ct,
|
||||||
'tag_list_editor_delete'):
|
'tag_list_editor_delete'):
|
||||||
return
|
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])
|
row = self.table.row(deletes[0])
|
||||||
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)
|
self.table.blockSignals(True)
|
||||||
orig.setData(Qt.DisplayRole, '')
|
for item in deletes:
|
||||||
self.table.blockSignals(False)
|
id_ = int(item.data(Qt.UserRole))
|
||||||
else:
|
self.to_delete.add(id_)
|
||||||
id = int(item.data(Qt.UserRole))
|
|
||||||
self.to_delete.add(id)
|
|
||||||
item.set_is_deleted(True)
|
item.set_is_deleted(True)
|
||||||
orig = self.table.item(item.row(), 2)
|
orig = self.table.item(item.row(), 2)
|
||||||
self.table.blockSignals(True)
|
|
||||||
orig.setData(Qt.DisplayRole, item.initial_text())
|
orig.setData(Qt.DisplayRole, item.initial_text())
|
||||||
self.table.blockSignals(False)
|
self.table.blockSignals(False)
|
||||||
if row >= self.table.rowCount():
|
if row >= self.table.rowCount():
|
||||||
|
@ -197,7 +197,7 @@
|
|||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="1" colspan="4">
|
<item row="2" column="1" colspan="4">
|
||||||
<widget class="QTableWidget" name="table">
|
<widget class="TleTableWidget" name="table">
|
||||||
<property name="alternatingRowColors">
|
<property name="alternatingRowColors">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
@ -224,6 +224,12 @@
|
|||||||
<extends>QLineEdit</extends>
|
<extends>QLineEdit</extends>
|
||||||
<header>calibre/gui2/widgets.h</header>
|
<header>calibre/gui2/widgets.h</header>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
|
<customwidget>
|
||||||
|
<class>TleTableWidget</class>
|
||||||
|
<extends>QTableWidget</extends>
|
||||||
|
<header>calibre/gui2/dialogs/tag_list_editor_table_widget.h</header>
|
||||||
|
<container>1</container>
|
||||||
|
</customwidget>
|
||||||
</customwidgets>
|
</customwidgets>
|
||||||
<resources>
|
<resources>
|
||||||
<include location="../../../../resources/images.qrc"/>
|
<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