mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-02 08:54:53 +01:00
base widgets moved to base.py
This commit is contained in:
parent
e8d629b736
commit
7896113e5a
2 changed files with 94 additions and 91 deletions
94
pype/tools/settings/settings/widgets/base.py
Normal file
94
pype/tools/settings/settings/widgets/base.py
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
from Qt import QtWidgets
|
||||
|
||||
|
||||
class BaseWidget(QtWidgets.QWidget):
|
||||
def __init__(self, entity, entity_widget):
|
||||
self.entity = entity
|
||||
self.entity_widget = entity_widget
|
||||
|
||||
self.ignore_input_changes = entity_widget.ignore_input_changes
|
||||
|
||||
self._style_state = None
|
||||
|
||||
super(BaseWidget, self).__init__(entity_widget.content_widget)
|
||||
|
||||
self.entity.on_change_callbacks.append(self._on_entity_change)
|
||||
|
||||
self.label_widget = None
|
||||
self.create_ui()
|
||||
|
||||
@staticmethod
|
||||
def get_style_state(
|
||||
is_invalid, is_modified, has_project_override, has_studio_override
|
||||
):
|
||||
"""Return stylesheet state by intered booleans."""
|
||||
if is_invalid:
|
||||
return "invalid"
|
||||
if is_modified:
|
||||
return "modified"
|
||||
if has_project_override:
|
||||
return "overriden"
|
||||
if has_studio_override:
|
||||
return "studio"
|
||||
return ""
|
||||
|
||||
def show_actions_menu(self, event):
|
||||
print("Show actions for {}".format(self.entity.path))
|
||||
|
||||
|
||||
class InputWidget(BaseWidget):
|
||||
def update_style(self):
|
||||
state = self.get_style_state(
|
||||
self.entity.is_invalid,
|
||||
self.entity.has_unsaved_changes,
|
||||
self.entity.has_project_override,
|
||||
self.entity.has_studio_override
|
||||
)
|
||||
if self._style_state == state:
|
||||
return
|
||||
|
||||
self._style_state = state
|
||||
|
||||
self.input_field.setProperty("input-state", state)
|
||||
self.input_field.style().polish(self.input_field)
|
||||
if self.label_widget:
|
||||
self.label_widget.setProperty("state", state)
|
||||
self.label_widget.style().polish(self.label_widget)
|
||||
|
||||
|
||||
class GUIWidget(BaseWidget):
|
||||
separator_height = 2
|
||||
|
||||
def create_ui(self):
|
||||
entity_type = self.entity["type"]
|
||||
if entity_type == "label":
|
||||
self._create_label_ui()
|
||||
elif entity_type in ("separator", "splitter"):
|
||||
self._create_separator_ui()
|
||||
else:
|
||||
raise KeyError("Unknown GUI type {}".format(entity_type))
|
||||
|
||||
self.entity_widget.add_widget_to_layout(self)
|
||||
|
||||
def _create_label_ui(self):
|
||||
self.setObjectName("LabelWidget")
|
||||
|
||||
label = self.entity["label"]
|
||||
label_widget = QtWidgets.QLabel(label, self)
|
||||
|
||||
layout = QtWidgets.QHBoxLayout(self)
|
||||
layout.setContentsMargins(0, 5, 0, 5)
|
||||
layout.addWidget(label_widget)
|
||||
|
||||
def _create_separator_ui(self):
|
||||
splitter_item = QtWidgets.QWidget(self)
|
||||
splitter_item.setObjectName("SplitterItem")
|
||||
splitter_item.setMinimumHeight(self.separator_height)
|
||||
splitter_item.setMaximumHeight(self.separator_height)
|
||||
|
||||
layout = QtWidgets.QHBoxLayout(self)
|
||||
layout.setContentsMargins(5, 5, 5, 5)
|
||||
layout.addWidget(splitter_item)
|
||||
|
||||
def _on_entity_change(self):
|
||||
pass
|
||||
|
|
@ -31,97 +31,6 @@ from .lib import CHILD_OFFSET
|
|||
BTN_FIXED_SIZE = 20
|
||||
|
||||
|
||||
class BaseWidget(QtWidgets.QWidget):
|
||||
def __init__(self, entity, entity_widget):
|
||||
self.entity = entity
|
||||
self.entity_widget = entity_widget
|
||||
|
||||
self.ignore_input_changes = entity_widget.ignore_input_changes
|
||||
|
||||
self._style_state = None
|
||||
|
||||
super(BaseWidget, self).__init__(entity_widget.content_widget)
|
||||
|
||||
self.entity.on_change_callbacks.append(self._on_entity_change)
|
||||
|
||||
self.label_widget = None
|
||||
self.create_ui()
|
||||
|
||||
@staticmethod
|
||||
def get_style_state(
|
||||
is_invalid, is_modified, has_project_override, has_studio_override
|
||||
):
|
||||
"""Return stylesheet state by intered booleans."""
|
||||
if is_invalid:
|
||||
return "invalid"
|
||||
if is_modified:
|
||||
return "modified"
|
||||
if has_project_override:
|
||||
return "overriden"
|
||||
if has_studio_override:
|
||||
return "studio"
|
||||
return ""
|
||||
|
||||
def show_actions_menu(self, event):
|
||||
print("Show actions for {}".format(self.entity.path))
|
||||
|
||||
|
||||
class InputWidget(BaseWidget):
|
||||
def update_style(self):
|
||||
state = self.get_style_state(
|
||||
self.entity.is_invalid,
|
||||
self.entity.has_unsaved_changes,
|
||||
self.entity.has_project_override,
|
||||
self.entity.has_studio_override
|
||||
)
|
||||
if self._style_state == state:
|
||||
return
|
||||
|
||||
self._style_state = state
|
||||
|
||||
self.input_field.setProperty("input-state", state)
|
||||
self.input_field.style().polish(self.input_field)
|
||||
if self.label_widget:
|
||||
self.label_widget.setProperty("state", state)
|
||||
self.label_widget.style().polish(self.label_widget)
|
||||
|
||||
|
||||
class GUIWidget(BaseWidget):
|
||||
separator_height = 2
|
||||
|
||||
def create_ui(self):
|
||||
entity_type = self.entity["type"]
|
||||
if entity_type == "label":
|
||||
self._create_label_ui()
|
||||
elif entity_type in ("separator", "splitter"):
|
||||
self._create_separator_ui()
|
||||
else:
|
||||
raise KeyError("Unknown GUI type {}".format(entity_type))
|
||||
|
||||
self.entity_widget.add_widget_to_layout(self)
|
||||
|
||||
def _create_label_ui(self):
|
||||
self.setObjectName("LabelWidget")
|
||||
|
||||
label = self.entity["label"]
|
||||
label_widget = QtWidgets.QLabel(label, self)
|
||||
|
||||
layout = QtWidgets.QHBoxLayout(self)
|
||||
layout.setContentsMargins(0, 5, 0, 5)
|
||||
layout.addWidget(label_widget)
|
||||
|
||||
def _create_separator_ui(self):
|
||||
splitter_item = QtWidgets.QWidget(self)
|
||||
splitter_item.setObjectName("SplitterItem")
|
||||
splitter_item.setMinimumHeight(self.separator_height)
|
||||
splitter_item.setMaximumHeight(self.separator_height)
|
||||
|
||||
layout = QtWidgets.QHBoxLayout(self)
|
||||
layout.setContentsMargins(5, 5, 5, 5)
|
||||
layout.addWidget(splitter_item)
|
||||
|
||||
def _on_entity_change(self):
|
||||
pass
|
||||
|
||||
|
||||
class DictImmutableKeysWidget(BaseWidget):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue