Tag Tooltips in the Importer UI

Changed several DB methods to return dictionaries with description and similar tag data instead which allows the importer to also create the tooltip texts which gives more detailed info about a tag in EVERY tag frame without needing to query for each tag specifically.
dev
Peery 1 year ago
parent d209f32133
commit 1596faee7f

@ -416,8 +416,9 @@ class ArtNetManager:
self.all_images[self.curr_image_index], self.all_images[self.curr_image_index],
art_ID, image_link, file_name=s[-1], description=image_description, art_ID, image_link, file_name=s[-1], description=image_description,
collections=collections) collections=collections)
self.curr_active_window.set_tag_list( tmp = [self.db_connection.get_tag_by_ID(x) for x in self.db_connection.get_art_tags_by_ID(art_ID)]
[self.db_connection.get_tag_by_ID(x)[0][1].strip() for x in self.db_connection.get_art_tags_by_ID(art_ID)]) tags = [{"id": int(t[0][0]), "name": t[0][1].strip(), "description": t[0][2].strip(), "category": t[0][3]} for t in tmp]
self.curr_active_window.set_tag_list(tags)
self.curr_active_window.data_changed = False self.curr_active_window.data_changed = False
self.curr_active_window.setting_up_data = False self.curr_active_window.setting_up_data = False

@ -931,7 +931,8 @@ class DBAdapter:
for tag_ID in collected_tags: for tag_ID in collected_tags:
tag_data = self.get_tag_by_ID(tag_ID) tag_data = self.get_tag_by_ID(tag_ID)
if len(tag_data) != 0: if len(tag_data) != 0:
result.append(tag_data[0][1].strip()) result.append({"name": tag_data[0][1].strip(), "id": int(tag_data[0][0]),
"description": tag_data[0][2].strip(), "category": int(tag_data[0][3])})
return result return result
def get_all_tag_impliers_by_ID(self, ID: int) -> list: def get_all_tag_impliers_by_ID(self, ID: int) -> list:

@ -499,18 +499,20 @@ class ImporterWindow(ArtnetMainWindow):
:param tags: :param tags:
:return: :return:
""" """
tags.sort() tags.sort(key=lambda x: x["name"])
item_model = QStandardItemModel(self.ui.search_result_list) item_model = QStandardItemModel(self.ui.search_result_list)
for tag in tags: for tag in tags:
item = QStandardItem(tag) tag_name = tag["name"]
item = QStandardItem(tag_name)
flags = Qt.ItemIsEnabled flags = Qt.ItemIsEnabled
if tag not in self.curr_implied_tags: if tag_name not in self.curr_implied_tags:
# new tag and not implied yet # new tag and not implied yet
item.setData(Qt.Unchecked, Qt.CheckStateRole) item.setData(Qt.Unchecked, Qt.CheckStateRole)
item.setToolTip(f"Tag ID: {tag['id']}\n\n"+tag["description"]+f"\nCategory: {tag['category']}")
flags |= Qt.ItemIsUserCheckable flags |= Qt.ItemIsUserCheckable
if self.curr_tags is not None and tag in (self.curr_tags + self.curr_implied_tags + self.curr_tag_aliases): if self.curr_tags is not None and tag_name in (self.curr_tags + self.curr_implied_tags + self.curr_tag_aliases):
# already selected, implied or aliased tags # already selected, implied or aliased tags
item.setCheckState(Qt.Checked) item.setCheckState(Qt.Checked)
item.setFlags(flags) item.setFlags(flags)
@ -534,28 +536,30 @@ class ImporterWindow(ArtnetMainWindow):
:param no_implication: not used :param no_implication: not used
:return: :return:
""" """
tags.sort() tags.sort(key=lambda x: x["name"])
self.curr_tags = tags self.curr_tags = tags
item_model = QStandardItemModel(self.ui.tag_list) item_model = QStandardItemModel(self.ui.tag_list)
implied_tags = [] implied_tags = []
for x in self.curr_tags: for x in self.curr_tags:
# collect all implied tags into a list # collect all implied tags into a list
implied_tags += self.main.db_connection.get_all_tag_implications_by_name(x) implied_tags += self.main.db_connection.get_all_tag_implications_by_name(x["name"])
self.set_implied_list(implied_tags) self.set_implied_list(implied_tags)
for tag in tags: for tag in tags:
item = QStandardItem(tag) tag_name = tag["name"]
item = QStandardItem(tag_name)
flags = Qt.ItemIsEnabled flags = Qt.ItemIsEnabled
if tag not in self.curr_implied_tags: if tag_name not in self.curr_implied_tags:
# new tag and not implied yet # new tag and not implied yet
item.setData(Qt.Unchecked, Qt.CheckStateRole) item.setData(Qt.Unchecked, Qt.CheckStateRole)
item.setToolTip(f"Tag ID: {tag['id']}\n\n" + tag["description"] + f"\nCategory: {tag['category']}")
flags |= Qt.ItemIsUserCheckable flags |= Qt.ItemIsUserCheckable
if set_checked: if set_checked:
if tag not in self.curr_implied_tags: if tag_name not in self.curr_implied_tags:
item.setCheckState(Qt.Checked) item.setCheckState(Qt.Checked)
else: else:
item.setCheckState(Qt.Unchecked) item.setCheckState(Qt.Unchecked)
@ -578,11 +582,13 @@ class ImporterWindow(ArtnetMainWindow):
item_model = QStandardItemModel(self.ui.implied_tag_list) item_model = QStandardItemModel(self.ui.implied_tag_list)
done = [] done = []
for tag in tags: for tag in tags:
if tag in done: tag_name = tag["name"]
if tag_name in done:
continue continue
else: else:
done.append(tag) done.append(tag_name)
item = QStandardItem(tag) item = QStandardItem(tag_name)
item.setToolTip(f"Tag ID: {tag['id']}\n\n"+tag["description"]+f"\nCategory: {tag['category']}")
item_model.appendRow(item) item_model.appendRow(item)
self.ui.implied_tag_list.setModel(item_model) self.ui.implied_tag_list.setModel(item_model)
@ -1081,7 +1087,7 @@ class ImporterWindow(ArtnetMainWindow):
result = [] result = []
for tag_name, tag_desc, tag_category, tag_id in tags: for tag_name, tag_desc, tag_category, tag_id in tags:
result.append(tag_name) result.append({"name": tag_name, "description": tag_desc, "category": tag_category, "id": tag_id})
self.set_tag_search_result_list(result) self.set_tag_search_result_list(result)

Loading…
Cancel
Save