fix updates of the label

This commit is contained in:
Jakub Trllo 2025-11-07 10:20:38 +01:00
parent 4bf0bbe6c3
commit 0f480ee410

View file

@ -288,6 +288,8 @@ class InstanceCardWidget(CardWidget):
self._last_product_name = None self._last_product_name = None
self._last_variant = None self._last_variant = None
self._last_label = None self._last_label = None
self._last_folder_path = None
self._last_task_name = None
icon_widget = IconValuePixmapLabel(group_icon, self) icon_widget = IconValuePixmapLabel(group_icon, self)
icon_widget.setObjectName("ProductTypeIconLabel") icon_widget.setObjectName("ProductTypeIconLabel")
@ -384,15 +386,18 @@ class InstanceCardWidget(CardWidget):
self._context_warning.setVisible(not valid) self._context_warning.setVisible(not valid)
@staticmethod @staticmethod
def _get_card_widget_sub_label(folder_path, task_name): def _get_card_widget_sub_label(
folder_path: Optional[str],
task_name: Optional[str],
) -> str:
parts = [] parts = []
if folder_path: if folder_path:
folder_name = folder_path.split("/")[-1] folder_name = folder_path.split("/")[-1]
parts.append(f"<b>{folder_name}</b>") parts.append(f"<b>{folder_name}</b>")
if task_name: if task_name:
parts.append(folder_name) parts.append(task_name)
if not parts: if not parts:
return None return ""
sublabel = " - ".join(parts) sublabel = " - ".join(parts)
return f"<span style=\"font-size: 8pt;\">{sublabel}</span>" return f"<span style=\"font-size: 8pt;\">{sublabel}</span>"
@ -400,25 +405,30 @@ class InstanceCardWidget(CardWidget):
variant = self.instance.variant variant = self.instance.variant
product_name = self.instance.product_name product_name = self.instance.product_name
label = self.instance.label label = self.instance.label
folder_path = self.instance.get_folder_path() folder_path = self.instance.folder_path
task_name = self.instance.get_task_name() task_name = self.instance.task_name
if ( if (
variant == self._last_variant variant == self._last_variant
and product_name == self._last_product_name and product_name == self._last_product_name
and label == self._last_label and label == self._last_label
and folder_path == self._last_folder_path
and task_name == self._last_task_name
): ):
return return
self._last_variant = variant self._last_variant = variant
self._last_product_name = product_name self._last_product_name = product_name
self._last_label = label self._last_label = label
self._last_folder_path = folder_path
self._last_task_name = task_name
# Make `variant` bold # Make `variant` bold
label = html_escape(self.instance.label) label = html_escape(self.instance.label)
found_parts = set(re.findall(variant, label, re.IGNORECASE)) found_parts = set(re.findall(variant, label, re.IGNORECASE))
if found_parts: if found_parts:
for part in found_parts: for part in found_parts:
replacement = "<b>{}</b>".format(part) replacement = f"<b>{part}</b>"
label = label.replace(part, replacement) label = label.replace(part, replacement)
sublabel = self._get_card_widget_sub_label(folder_path, task_name) sublabel = self._get_card_widget_sub_label(folder_path, task_name)
if sublabel: if sublabel: