@@ -32,7 +32,6 @@ def __init__(self, name: str = '', parent: QtWidgets.QWidget | None = None) -> N
3232
3333 self ._init_layout ()
3434 self ._init_ui ()
35- self ._init_defaults ()
3635
3736 if name :
3837 self .set_name (name )
@@ -43,26 +42,12 @@ def __repr__(self) -> str:
4342
4443 def _init_layout (self ) -> None :
4544 self ._layout = QtWidgets .QHBoxLayout ()
46- self .setLayout (self ._layout )
4745 self ._layout .setContentsMargins (0 , 0 , 0 , 0 )
46+ self .setLayout (self ._layout )
4847
4948 def _init_ui (self ) -> None :
5049 pass
5150
52- def _init_defaults (self ) -> None :
53- self .blockSignals (True )
54- attributes = dir (self .__class__ )
55- for name in attributes :
56- if not name .startswith ('_' ) or name .startswith ('__' ) or name == '_value' :
57- continue
58- try :
59- setter = getattr (self , f'set{ name } ' )
60- value = getattr (self , name )
61- except AttributeError :
62- continue
63- setter (value )
64- self .blockSignals (False )
65-
6651 def changeEvent (self , event : QtCore .QEvent ) -> None :
6752 if event .type () == QtCore .QEvent .Type .EnabledChange :
6853 self .enabled_changed .emit (self .isEnabled ())
@@ -120,11 +105,13 @@ class IntParameter(ParameterWidget):
120105 def _init_ui (self ) -> None :
121106 # Line
122107 self .line = IntLineEdit (self )
108+ self .line .set_value (self ._value )
123109 self .line .value_changed .connect (self ._line_value_changed )
124110 self ._layout .addWidget (self .line )
125111
126112 # Slider
127113 self .slider = IntSlider ()
114+ self .slider .set_maximum (self ._slider_max )
128115 self .slider .value_changed .connect (self ._slider_value_changed )
129116 # Prevent any size changes when slider shows
130117 self .slider .setMaximumHeight (self .line .minimumSizeHint ().height ())
@@ -225,10 +212,13 @@ def _init_ui(self) -> None:
225212 # line
226213 self .line = FloatLineEdit (self )
227214 self .line .value_changed .connect (self ._line_value_changed )
215+ self .line .set_value (self ._value )
216+ self .line .set_decimals (self ._decimals )
228217 self ._layout .addWidget (self .line )
229218
230219 # slider
231220 self .slider = FloatSlider ()
221+ self .slider .set_maximum (self ._slider_max )
232222 self .slider .value_changed .connect (self ._slider_value_changed )
233223 # prevent any size changes when slider shows
234224 self .slider .setMaximumHeight (self .line .minimumSizeHint ().height ())
@@ -646,9 +636,9 @@ def set_value(self, value: bool) -> None:
646636
647637
648638class MultiIntParameter (IntParameter ):
649- multi_count = 2
650639 value_changed : QtCore .Signal = QtCore .Signal (tuple )
651640
641+ _count : int = 2
652642 _value : tuple [int , ...] = (0 , 0 )
653643 _default : tuple [int , ...] = (0 , 0 )
654644 _keep_ratio : bool = True
@@ -659,18 +649,20 @@ def _init_ui(self) -> None:
659649 self .lines = []
660650 for i in range (self ._count ):
661651 line = IntLineEdit ()
652+ line .set_value (0 )
662653 line .value_changed .connect (self ._line_value_changed )
663654 self ._layout .addWidget (line )
664655 self .lines .append (line )
665656
666657 # Slider
667658 self .slider = IntSlider ()
659+ self .slider .set_maximum (self ._slider_max )
668660 self .slider .value_changed .connect (self ._slider_value_changed )
669661 # Prevent any size changes when slider shows
670662 line_height = self .lines [0 ].minimumSizeHint ().height ()
671663 self .slider .setMaximumHeight (line_height )
672664 self ._layout .addWidget (self .slider )
673- self ._layout .setStretch (self .multi_count , 1 )
665+ self ._layout .setStretch (self ._count , 1 )
674666
675667 # Keep ratio button
676668 self .keep_ratio_button = RatioButton ()
@@ -679,6 +671,7 @@ def _init_ui(self) -> None:
679671 self ._layout .addWidget (self .keep_ratio_button )
680672
681673 self .setFocusProxy (self .lines [0 ])
674+ self .set_keep_ratio (self ._keep_ratio )
682675
683676 def resizeEvent (self , event : QtGui .QResizeEvent ) -> None :
684677 QtWidgets .QWidget .resizeEvent (self , event )
@@ -730,14 +723,14 @@ def set_value(self, value: Sequence) -> None:
730723 if not all (values [0 ] == x for x in values ):
731724 self .set_keep_ratio (False )
732725 if self ._keep_ratio :
733- values = (values [0 ],) * self .multi_count
726+ values = (values [0 ],) * self ._count
734727 ParameterWidget .set_value (self , self ._cast_to_type (values ))
735728 self ._set_slider_value (values [0 ])
736729 self ._set_line_values (values )
737730
738731 def _line_value_changed (self , value : int ) -> None :
739732 if self ._keep_ratio :
740- values = (self .lines [0 ].value (),) * self .multi_count
733+ values = (self .lines [0 ].value (),) * self ._count
741734 for line in self .lines [1 :]:
742735 line .set_value (values [0 ])
743736 else :
@@ -748,7 +741,7 @@ def _line_value_changed(self, value: int) -> None:
748741 self ._set_slider_value (values [0 ])
749742
750743 def _slider_value_changed (self , value : int ) -> None :
751- values = (value ,) * self .multi_count
744+ values = (value ,) * self ._count
752745 value = self ._cast_to_type (values )
753746 ParameterWidget .set_value (self , value )
754747 self ._set_line_values (values )
@@ -765,6 +758,7 @@ def _cast_to_tuple(self, values: Any) -> tuple[int, ...]:
765758 def _cast_to_type (self , values : tuple [int , ...]) -> Any :
766759 return values
767760
761+
768762class MultiFloatParameter (MultiIntParameter ):
769763 _value : tuple [float , ...] = (0 , 0 )
770764 _default : tuple [float , ...] = (0 , 0 )
@@ -775,30 +769,34 @@ class MultiFloatParameter(MultiIntParameter):
775769 _decimals : int = 4
776770
777771 def _init_ui (self ) -> None :
778- # lines
772+ # Lines
779773 self .lines = []
780- for i in range (self .multi_count ):
774+ for i in range (self ._count ):
781775 line = FloatLineEdit ()
776+ line .set_value (0 )
777+ line .set_decimals (self ._decimals )
782778 line .value_changed .connect (self ._line_value_changed )
783779 self ._layout .addWidget (line )
784780 self .lines .append (line )
785781
786- # slider
782+ # Slider
787783 self .slider = FloatSlider ()
784+ self .slider .set_maximum (self ._slider_max )
788785 self .slider .value_changed .connect (self ._slider_value_changed )
789- # prevent any size changes when slider shows
786+ # Prevent any size changes when slider shows
790787 line_height = self .lines [0 ].minimumSizeHint ().height ()
791788 self .slider .setMaximumHeight (line_height )
792789 self ._layout .addWidget (self .slider )
793- self ._layout .setStretch (self .multi_count , 1 )
790+ self ._layout .setStretch (self ._count , 1 )
794791
795- # keep ratio button
792+ # Keep ratio button
796793 self .keep_ratio_button = RatioButton ()
797794 self .keep_ratio_button .setMaximumSize (line_height , line_height )
798795 self .keep_ratio_button .toggled .connect (self .set_keep_ratio )
799796 self ._layout .addWidget (self .keep_ratio_button )
800797
801798 self .setFocusProxy (self .lines [0 ])
799+ self .set_keep_ratio (self ._keep_ratio )
802800
803801 def decimals (self ) -> int :
804802 return self ._decimals
@@ -838,6 +836,7 @@ def value(self) -> tuple[float, ...]:
838836 def set_value (self , value : tuple [float , ...]) -> None :
839837 super ().set_value (value )
840838
839+
841840class PointParameter (MultiIntParameter ):
842841 value_changed : QtCore .Signal = QtCore .Signal (QtCore .QPoint )
843842
@@ -846,6 +845,11 @@ class PointParameter(MultiIntParameter):
846845 _slider_visible : bool = False
847846 _ratio_visible : bool = False
848847
848+ def _init_ui (self ) -> None :
849+ super ()._init_ui ()
850+ self .set_slider_visible (self ._slider_visible )
851+ self .set_ratio_visible (self ._ratio_visible )
852+
849853 def set_value (self , value : QtCore .QPoint | Sequence ) -> None :
850854 super ().set_value (value )
851855
@@ -867,6 +871,11 @@ class PointFParameter(MultiFloatParameter):
867871 _slider_visible : bool = False
868872 _ratio_visible : bool = False
869873
874+ def _init_ui (self ) -> None :
875+ super ()._init_ui ()
876+ self .set_slider_visible (self ._slider_visible )
877+ self .set_ratio_visible (self ._ratio_visible )
878+
870879 def set_value (self , value : QtCore .QPointF | Sequence ) -> None :
871880 super ().set_value (value ) # noqa
872881
@@ -919,9 +928,9 @@ def _cast_to_tuple(self, value: QtCore.QSizeF) -> tuple[float, ...]:
919928
920929
921930class ColorParameter (MultiFloatParameter ):
922- multi_count = 3
923931 value_changed : QtCore .Signal = QtCore .Signal (QtGui .QColor )
924932
933+ _count : int = 3
925934 _value : QtGui .QColor = QtGui .QColor (0 , 0 , 0 )
926935 _default : QtGui .QColor = QtGui .QColor (0 , 0 , 0 )
927936 _color_min : float | None = 0
@@ -930,6 +939,10 @@ class ColorParameter(MultiFloatParameter):
930939
931940 def _init_ui (self ) -> None :
932941 super ()._init_ui ()
942+
943+ for line in self .lines :
944+ line .set_maximum (self ._color_max )
945+
933946 self .button = QtWidgets .QPushButton ()
934947 self .button .clicked .connect (self .select_color )
935948 self .button .setFocusPolicy (QtCore .Qt .FocusPolicy .NoFocus )
@@ -1419,6 +1432,7 @@ def __init__(self, parent: QtWidgets.QWidget | None = None) -> None:
14191432 size = self .iconSize ().width ()
14201433 self .setMaximumSize (QtCore .QSize (size , size ))
14211434 self .setCheckable (True )
1435+ self ._checked_change (False )
14221436
14231437 def _checked_change (self , checked : bool ) -> None :
14241438 # BUG: fusion style does not recognize On/Off for QIcons
0 commit comments