From 0b18f1cce3238665bc7f97ffd8de550eed23ac90 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 27 Nov 2020 19:01:25 +0100 Subject: [PATCH] fixed few issues of loaded data --- pype/settings/lib.py | 2 ++ pype/tools/settings/settings/widgets/item_types.py | 6 +++++- pype/tools/settings/settings/widgets/lib.py | 13 ++++++++++++- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/pype/settings/lib.py b/pype/settings/lib.py index a50d7793b5..ebd0d86df4 100644 --- a/pype/settings/lib.py +++ b/pype/settings/lib.py @@ -9,6 +9,8 @@ log = logging.getLogger(__name__) M_OVERRIDEN_KEY = "__overriden_keys__" # Metadata key for storing information about environments M_ENVIRONMENT_KEY = "__environment_keys__" +# Metadata key for storing dynamic created labels +M_DYNAMIC_KEY_LABEL = "__dynamic_keys_labels__" # NOTE key popping not implemented yet M_POP_KEY = "__pop_key__" diff --git a/pype/tools/settings/settings/widgets/item_types.py b/pype/tools/settings/settings/widgets/item_types.py index 5a02497f71..ca4d28ccbc 100644 --- a/pype/tools/settings/settings/widgets/item_types.py +++ b/pype/tools/settings/settings/widgets/item_types.py @@ -2034,7 +2034,6 @@ class ModifiableDictItem(QtWidgets.QWidget, SettingObject): add_btn.setFixedSize(self._btn_size, self._btn_size) edit_btn = None - remove_btn = None if self.labeled_items: edit_btn = IconButton( "fa.edit", QtCore.Qt.lightGray, QtCore.Qt.white @@ -2049,6 +2048,9 @@ class ModifiableDictItem(QtWidgets.QWidget, SettingObject): remove_btn.setFixedSize(self._btn_size, self._btn_size) if self.labeled_items: + add_btn.setVisible(False) + remove_btn.setVisible(False) + wrapper_widget.add_widget_before_label(add_btn) wrapper_widget.add_widget_before_label(edit_btn) wrapper_widget.add_widget_after_label(key_input) @@ -2422,6 +2424,8 @@ class ModifiableDict(QtWidgets.QWidget, InputObject): previous_inputs = tuple(self.input_fields) for item_key, item_value in value.items(): self.add_row(key=item_key, value=item_value) + if self.labeled_items: + self.add_row(is_empty=True) for input_field in previous_inputs: self.remove_row(input_field) diff --git a/pype/tools/settings/settings/widgets/lib.py b/pype/tools/settings/settings/widgets/lib.py index f112a6e975..9a6331009b 100644 --- a/pype/tools/settings/settings/widgets/lib.py +++ b/pype/tools/settings/settings/widgets/lib.py @@ -2,7 +2,11 @@ import os import re import json import copy -from pype.settings.lib import M_OVERRIDEN_KEY, M_ENVIRONMENT_KEY +from pype.settings.lib import ( + M_OVERRIDEN_KEY, + M_ENVIRONMENT_KEY, + M_DYNAMIC_KEY_LABEL +) from queue import Queue @@ -35,6 +39,8 @@ def convert_gui_data_with_metadata(data, ignored_keys=None): if key == "environments": output[M_ENVIRONMENT_KEY] = value + elif key == "dynamic_key_label": + output[M_DYNAMIC_KEY_LABEL] = value else: raise KeyError("Unknown metadata key \"{}\"".format(key)) @@ -51,6 +57,11 @@ def convert_data_to_gui_data(data, first=True): if M_ENVIRONMENT_KEY in data: data.pop(M_ENVIRONMENT_KEY) + if M_DYNAMIC_KEY_LABEL in data: + if METADATA_KEY not in data: + data[METADATA_KEY] = {} + data[METADATA_KEY]["dynamic_key_label"] = data.pop(M_DYNAMIC_KEY_LABEL) + for key, value in data.items(): output[key] = convert_data_to_gui_data(value, False)