few modification to be able add new item

This commit is contained in:
iLLiCiTiT 2021-01-28 16:56:46 +01:00
parent c2b8372904
commit 4e30296c80
2 changed files with 22 additions and 4 deletions

View file

@ -633,7 +633,7 @@ class DictMutableKeysEntity(ItemEntity):
child_obj = self.children_by_key.pop(old_key)
self.children_by_key[new_key] = child_obj
def _add_child(self, key):
def add_new_key(self, key):
new_child = self.create_schema_object(self.item_schema, self, True)
self.children.append(new_child)
self.children_by_key[key] = new_child
@ -716,7 +716,7 @@ class DictMutableKeysEntity(ItemEntity):
# TODO Check for value type if is Settings entity?
child_obj = self.children_by_key.get(key)
if not child_obj:
child_obj = self._add_child(key)
child_obj = self.add_new_key(key)
child_obj.set_value(value)
@ -841,7 +841,7 @@ class DictMutableKeysEntity(ItemEntity):
# Create new children
for _key, _value in self._current_value.items():
child_obj = self._add_child(_key)
child_obj = self.add_new_key(_key)
child_obj.update_default_value(_value)
if using_overrides:
if state is OverrideState.STUDIO:

View file

@ -532,11 +532,29 @@ class DictMutableKeysWidget(BaseWidget):
# TODO implement
pass
def add_new_key(self, key, label=None, after_widget=None):
new_widget_index = 0
if self.input_fields:
if not after_widget:
after_widget = self.input_fields[-1]
for idx in self.content_layout.count():
item = self.content_layout.itemAt(idx)
if item.widget() is after_widget:
new_widget_index = idx
break
child_entity = self.entity.add_new_key(key)
widget = ModifiableDictItem(
self.entity.collapsible, child_entity, self
)
self.input_fields.append(widget)
self.content_layout.insertWidget(new_widget_index, widget)
return widget
def _on_entity_change(self):
print("_on_entity_change", self.__class__.__name__, self.entity.path)
class ModifiableDict(QtWidgets.QWidget):
def create_ui(self, label_widget=None):
if self.hightlight_content: