category widget is accessible from all widgets

This commit is contained in:
iLLiCiTiT 2021-02-17 12:23:19 +01:00
parent 7d3445470c
commit 28e3c25f11
6 changed files with 41 additions and 21 deletions

View file

@ -4,7 +4,8 @@ from Qt import QtWidgets, QtGui, QtCore
class BaseWidget(QtWidgets.QWidget):
allow_actions = True
def __init__(self, entity, entity_widget):
def __init__(self, category_widget, entity, entity_widget):
self.category_widget = category_widget
self.entity = entity
self.entity_widget = entity_widget

View file

@ -93,42 +93,43 @@ class SettingsCategoryWidget(QtWidgets.QWidget):
self.create_ui()
@staticmethod
def create_ui_for_entity(entity, entity_widget):
def create_ui_for_entity(category_widget, entity, entity_widget):
args = (category_widget, entity, entity_widget)
if isinstance(entity, GUIEntity):
return GUIWidget(entity, entity_widget)
return GUIWidget(*args)
elif isinstance(entity, DictImmutableKeysEntity):
return DictImmutableKeysWidget(entity, entity_widget)
return DictImmutableKeysWidget(*args)
elif isinstance(entity, BoolEntity):
return BoolWidget(entity, entity_widget)
return BoolWidget(*args)
elif isinstance(entity, TextEntity):
return TextWidget(entity, entity_widget)
return TextWidget(*args)
elif isinstance(entity, NumberEntity):
return NumberWidget(entity, entity_widget)
return NumberWidget(*args)
elif isinstance(entity, RawJsonEntity):
return RawJsonWidget(entity, entity_widget)
return RawJsonWidget(*args)
elif isinstance(entity, EnumEntity):
return EnumeratorWidget(entity, entity_widget)
return EnumeratorWidget(*args)
elif isinstance(entity, PathEntity):
return PathWidget(entity, entity_widget)
return PathWidget(*args)
elif isinstance(entity, PathInput):
return PathInputWidget(entity, entity_widget)
return PathInputWidget(*args)
elif isinstance(entity, ListEntity):
return ListWidget(entity, entity_widget)
return ListWidget(*args)
elif isinstance(entity, DictMutableKeysEntity):
return DictMutableKeysWidget(entity, entity_widget)
return DictMutableKeysWidget(*args)
elif isinstance(entity, ListStrictEntity):
return ListStrictWidget(entity, entity_widget)
return ListStrictWidget(*args)
label = "<{}>: {} ({})".format(
entity.__class__.__name__, entity.path, entity.value
@ -298,7 +299,7 @@ class SettingsCategoryWidget(QtWidgets.QWidget):
def add_children_gui(self):
for child_obj in self.entity.children:
item = self.create_ui_for_entity(child_obj, self)
item = self.create_ui_for_entity(self, child_obj, self)
self.input_fields.append(item)
# Add spacer to stretch children guis

View file

@ -178,6 +178,10 @@ class ModifiableDictItem(QtWidgets.QWidget):
self.create_addible_ui()
self.update_style()
@property
def category_widget(self):
return self.entity_widget.category_widget
def create_addible_ui(self):
key_input = QtWidgets.QLineEdit(self)
key_input.setObjectName("DictKey")
@ -205,7 +209,9 @@ class ModifiableDictItem(QtWidgets.QWidget):
self.content_widget = self
self.content_layout = layout
self.input_field = self.create_ui_for_entity(self.entity, self)
self.input_field = self.create_ui_for_entity(
self.category_widget, self.entity, self
)
def add_widget_to_layout(self, widget, label=None):
self.content_layout.addWidget(widget, 1)
@ -288,7 +294,9 @@ class ModifiableDictItem(QtWidgets.QWidget):
self.content_widget = content_widget
self.content_layout = content_layout
self.input_field = self.create_ui_for_entity(self.entity, self)
self.input_field = self.create_ui_for_entity(
self.category_widget, self.entity, self
)
def get_style_state(self):
if self.is_invalid:

View file

@ -45,7 +45,9 @@ class DictImmutableKeysWidget(BaseWidget):
for child_obj in self.entity.children:
self.input_fields.append(
self.create_ui_for_entity(child_obj, self)
self.create_ui_for_entity(
self.category_widget, child_obj, self
)
)
self.entity_widget.add_widget_to_layout(self)
@ -508,7 +510,7 @@ class PathWidget(BaseWidget):
self.content_layout.setSpacing(5)
self.input_field = self.create_ui_for_entity(
self.entity.child_obj, self
self.category_widget, self.entity.child_obj, self
)
self.entity_widget.add_widget_to_layout(self, self.entity.label)

View file

@ -98,7 +98,9 @@ class ListItem(QtWidgets.QWidget):
self.content_widget = self
self.content_layout = layout
self.input_field = self.create_ui_for_entity(self.entity, self)
self.input_field = self.create_ui_for_entity(
self.category_widget, self.entity, self
)
self.input_field.set_entity_value()
spacer_widget = QtWidgets.QWidget(self)
@ -117,6 +119,10 @@ class ListItem(QtWidgets.QWidget):
self.spacer_widget = spacer_widget
@property
def category_widget(self):
return self.entity_widget.category_widget
@property
def is_invalid(self):
return self.input_field.is_invalid

View file

@ -35,7 +35,9 @@ class ListStrictWidget(BaseWidget):
for child_obj in self.entity.children:
self.input_fields.append(
self.create_ui_for_entity(child_obj, self)
self.create_ui_for_entity(
self.category_widget, child_obj, self
)
)
if self.entity.is_horizontal: