child modified attribute added

This commit is contained in:
iLLiCiTiT 2020-07-24 15:22:23 +02:00
parent 355d60c3b4
commit 6b42c7bdc1
2 changed files with 68 additions and 24 deletions

View file

@ -34,6 +34,7 @@ QLabel[state="overriden"] {
}
QWidget[input-state="original"] {}
QWidget[input-state="modified"] {
border-color: #137cbd;
}
@ -83,6 +84,10 @@ QPushButton[btn-type="expand-toggle"] {
background: #1d272f;
}
#ModifiableDict[state="child-modified"] {
border-color: #137cbd;
}
#TextListSubWidget {
border: 1px solid #455c6e;
border-radius: 3px;

View file

@ -1,5 +1,5 @@
import json
from Qt import QtWidgets, QtCore, QtGui
from Qt import QtWidgets, QtCore
from . import config
from .base import PypeConfigurationWidget, TypeToKlass
from .widgets import (
@ -67,6 +67,10 @@ class BooleanWidget(QtWidgets.QWidget, PypeConfigurationWidget):
def clear_value(self):
self.reset_value()
@property
def child_modified(self):
return self.is_modified
@property
def is_overidable(self):
return self._parent.is_overidable
@ -148,6 +152,10 @@ class IntegerWidget(QtWidgets.QWidget, PypeConfigurationWidget):
self.int_input.valueChanged.connect(self._on_value_change)
@property
def child_modified(self):
return self.is_modified
@property
def is_overidable(self):
return self._parent.is_overidable
@ -253,6 +261,10 @@ class FloatWidget(QtWidgets.QWidget, PypeConfigurationWidget):
self.float_input.valueChanged.connect(self._on_value_change)
@property
def child_modified(self):
return self.is_modified
@property
def is_overidable(self):
return self._parent.is_overidable
@ -342,6 +354,10 @@ class TextSingleLineWidget(QtWidgets.QWidget, PypeConfigurationWidget):
self.text_input.textChanged.connect(self._on_value_change)
@property
def child_modified(self):
return self.is_modified
@property
def is_overidable(self):
return self._parent.is_overidable
@ -427,6 +443,10 @@ class TextMultiLineWidget(QtWidgets.QWidget, PypeConfigurationWidget):
self.text_input.textChanged.connect(self._on_value_change)
@property
def child_modified(self):
return self.is_modified
@property
def is_overidable(self):
return self._parent.is_overidable
@ -671,6 +691,10 @@ class TextListWidget(QtWidgets.QWidget, PypeConfigurationWidget):
self.origin_value = self.item_value()
@property
def child_modified(self):
return self.is_modified
@property
def is_overidable(self):
return self._parent.is_overidable
@ -808,17 +832,11 @@ class DictExpandWidget(QtWidgets.QWidget, PypeConfigurationWidget):
self.content_widget.updateGeometry()
@property
def is_overriden(self):
return self._is_overriden
@property
def is_modified(self):
_is_modified = False
def child_modified(self):
for input_field in self.input_fields:
if input_field.is_modified:
_is_modified = True
break
return _is_modified
if input_field.child_modified:
return True
return False
def item_value(self):
output = {}
@ -885,17 +903,11 @@ class DictInvisible(QtWidgets.QWidget, PypeConfigurationWidget):
return self._parent.is_overidable
@property
def is_overriden(self):
return self._is_overriden
@property
def is_modified(self):
_is_modified = False
def child_modified(self):
for input_field in self.input_fields:
if input_field.is_modified:
_is_modified = True
break
return _is_modified
if input_field.child_modified:
return True
return False
def item_value(self):
output = {}
@ -930,6 +942,8 @@ class DictFormWidget(QtWidgets.QWidget):
def __init__(
self, input_data, values, parent_keys, parent, label_widget=None
):
self._parent = parent
self.is_modified = False
self.is_overriden = False
self.is_group = False
@ -952,6 +966,13 @@ class DictFormWidget(QtWidgets.QWidget):
output.update(input_field.config_value())
return output
@property
def child_modified(self):
for input_field in self.input_fields:
if input_field.child_modified:
return True
return False
@property
def is_overidable(self):
return self._parent.is_overidable
@ -1086,14 +1107,23 @@ class ModifiableDictItem(QtWidgets.QWidget, PypeConfigurationWidget):
def is_overidable(self):
return self._parent.is_overidable
def is_key_modified(self):
return self._key() != self.origin_key
def is_value_modified(self):
return self.value_input.is_modified
@property
def is_modified(self):
return self.is_value_modified() or self.is_key_modified()
def _update_style(self):
is_modified = self._key() != self.origin_key
# if self._is_overidable and self.is_overriden:
# if is_modified:
# state = "overriden-modified"
# else:
# state = "overriden"
if is_modified:
if self.is_key_modified():
state = "modified"
else:
state = "original"
@ -1230,6 +1260,7 @@ class ModifiableDict(ExpandingWidget, PypeConfigurationWidget):
self._parent = parent
self.is_modified = False
self.child_modified = False
self.is_overriden = False
self.is_group = input_data.get("is_group", False)
@ -1249,7 +1280,7 @@ class ModifiableDict(ExpandingWidget, PypeConfigurationWidget):
self.origin_value = self.item_value()
def _on_value_change(self, value=None):
self.is_modified = self.item_value() != self.origin_value
self.child_modified = self.item_value() != self.origin_value
self.is_overriden = True
self._update_style()
@ -1259,6 +1290,14 @@ class ModifiableDict(ExpandingWidget, PypeConfigurationWidget):
return self._parent.is_overidable
def _update_style(self):
if self.child_modified:
widget_state = "child-modified"
else:
widget_state = ""
self.setProperty("state", widget_state)
self.style().polish(self)
if self.is_overidable and self.is_overriden:
if self.is_modified:
state = "overriden-modified"