Bug 1828986: searching in manage tags throws away all changes

This commit is contained in:
Charles Haley 2019-05-14 12:48:35 +01:00
parent b1925a344a
commit 8fd98e6eb0

View File

@ -114,6 +114,11 @@ class TagListEditor(QDialog, Ui_TagListEditor):
pass pass
# initialization # initialization
self.to_rename = {}
self.to_delete = set([])
self.all_tags = {}
self.original_names = {}
self.ordered_tags = [] self.ordered_tags = []
self.sorter = sorter self.sorter = sorter
self.get_book_ids = get_book_ids self.get_book_ids = get_book_ids
@ -172,14 +177,11 @@ class TagListEditor(QDialog, Ui_TagListEditor):
self.fill_in_table(None, None) self.fill_in_table(None, None)
def fill_in_table(self, tags, tag_to_match): def fill_in_table(self, tags, tag_to_match):
self.to_rename = {}
self.to_delete = set([])
self.all_tags = {}
self.original_names = {}
data = self.get_book_ids(self.apply_vl_checkbox.isChecked()) data = self.get_book_ids(self.apply_vl_checkbox.isChecked())
self.all_tags = {}
for k,v,count in data: for k,v,count in data:
self.all_tags[v] = {'key': k, 'count': count, 'cur_name': v, 'is_deleted': False} self.all_tags[v] = {'key': k, 'count': count, 'cur_name': v,
'is_deleted': k in self.to_delete}
self.original_names[k] = v self.original_names[k] = v
self.ordered_tags = sorted(self.all_tags.keys(), key=self.sorter) self.ordered_tags = sorted(self.all_tags.keys(), key=self.sorter)
if tags is None: if tags is None:
@ -204,9 +206,13 @@ class TagListEditor(QDialog, Ui_TagListEditor):
for row,tag in enumerate(tags): for row,tag in enumerate(tags):
item = NameTableWidgetItem() item = NameTableWidgetItem()
item.set_is_deleted(self.all_tags[tag]['is_deleted']) item.set_is_deleted(self.all_tags[tag]['is_deleted'])
item.setText(self.all_tags[tag]['cur_name']) _id = self.all_tags[tag]['key']
item.setData(Qt.UserRole, _id)
item.set_initial_text(tag) item.set_initial_text(tag)
item.setData(Qt.UserRole, self.all_tags[tag]['key']) if _id in self.to_rename:
item.setText(self.to_rename[_id])
else:
item.setText(tag)
item.setFlags(item.flags() | Qt.ItemIsSelectable | Qt.ItemIsEditable) item.setFlags(item.flags() | Qt.ItemIsSelectable | Qt.ItemIsEditable)
self.table.setItem(row, 0, item) self.table.setItem(row, 0, item)
if tag == tag_to_match: if tag == tag_to_match:
@ -219,7 +225,7 @@ class TagListEditor(QDialog, Ui_TagListEditor):
item = QTableWidgetItem() item = QTableWidgetItem()
item.setFlags(item.flags() & ~(Qt.ItemIsSelectable|Qt.ItemIsEditable)) item.setFlags(item.flags() & ~(Qt.ItemIsSelectable|Qt.ItemIsEditable))
if tag != self.all_tags[tag]['cur_name'] or self.all_tags[tag]['is_deleted']: if _id in self.to_rename or _id in self.to_delete:
item.setData(Qt.DisplayRole, tag) item.setData(Qt.DisplayRole, tag)
self.table.setItem(row, 2, item) self.table.setItem(row, 2, item)
self.table.blockSignals(False) self.table.blockSignals(False)