mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-27 14:22:37 +01:00
category widget is accessible from all widgets
This commit is contained in:
parent
7d3445470c
commit
28e3c25f11
6 changed files with 41 additions and 21 deletions
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue