def spinctrl(element, instance: wx.SpinCtrl): props = element['props'] set_basic_props(instance, props) instance.SetMax(props.get('max', 100)) instance.SetMin(props.get('min', 0)) instance.Unbind(wx.EVT_SPINCTRL) if 'on_change' in props: instance.Bind(wx.EVT_SLIDER, props['on_change']) return instance
def __init__(self, parent: Window, displayText: str, valueChangedCallback: Callable, minValue: int = DEFAULT_MIN_VALUE, maxValue: int = DEFAULT_MAX_VALUE): """ Args: parent The parent window displayText: The text to display as the static box title valueChangedCallback: The method to call when the value changes; The method should expect the first parameter to be an object of type SpinnerValues minValue: The minimum value for the width/height maxValue: The maximum value for the width/height """ self.logger: Logger = getLogger(__name__) self.__callback: Callable = valueChangedCallback box: StaticBox = StaticBox(parent, ID_ANY, displayText) super().__init__(box, HORIZONTAL) self._wxValue0SpinnerId: int = wxNewIdRef() self._wxValue1SpinnerId: int = wxNewIdRef() self._scValue0: SpinCtrl = SpinCtrl(parent, self._wxValue0SpinnerId, "", (SPINNER_WIDTH, SPINNER_HEIGHT)) self._scValue1: SpinCtrl = SpinCtrl(parent, self._wxValue1SpinnerId, "", (SPINNER_WIDTH, SPINNER_HEIGHT)) self.Add(self._scValue0, 0, ALL, DualSpinnerContainer.HORIZONTAL_GAP) self.Add(self._scValue1, 0, ALL, DualSpinnerContainer.HORIZONTAL_GAP) self._scValue0.SetRange(minValue, maxValue) self._scValue1.SetRange(minValue, maxValue) parent.Bind(EVT_SPINCTRL, self.__onSpinnerValueChanged, id=self._wxValue0SpinnerId) parent.Bind(EVT_SPINCTRL, self.__onSpinnerValueChanged, id=self._wxValue1SpinnerId) self._spinnerValues: SpinnerValues = SpinnerValues(minValue, minValue)
def __createSimpleGridOptions(self) -> BoxSizer: szrSimple: BoxSizer = BoxSizer(VERTICAL) cbEnableBackgroundGrid: CheckBox = CheckBox( self, self.enableBackgroundGridID, _('Enable Background Grid')) cbSnapToGrid: CheckBox = CheckBox(self, self.snapToGridID, _('Snap to Grid')) box: StaticBox = StaticBox(self, ID_ANY, _("Grid Interval")) szrGridInterval: StaticBoxSizer = StaticBoxSizer( box, HORIZONTAL | ALIGN_LEFT) scGridInterval: SpinCtrl = SpinCtrl(self, self.scGridIntervalID, "") szrGridInterval.Add(scGridInterval, 0, LEFT | RIGHT, BackgroundPreferences.HORIZONTAL_GAP) szrSimple.Add(cbEnableBackgroundGrid, 0, LEFT | RIGHT, BackgroundPreferences.VERTICAL_GAP) szrSimple.Add(cbSnapToGrid, 0, LEFT | BOTTOM, BackgroundPreferences.VERTICAL_GAP) szrSimple.AddSpacer(BackgroundPreferences.VERTICAL_GAP) szrSimple.Add(szrGridInterval, 0, LEFT | RIGHT | TOP, BackgroundPreferences.VERTICAL_GAP) self._cbEnableBackgroundGrid: CheckBox = cbEnableBackgroundGrid self._cbSnapToGrid: CheckBox = cbSnapToGrid self._scGridInterval: SpinCtrl = scGridInterval return szrSimple
def __layoutImagePadding(self) -> StaticBoxSizer: box: StaticBox = StaticBox(self, ID_ANY, "Shape Padding") szrImagePaddingSizer: StaticBoxSizer = StaticBoxSizer(box, HORIZONTAL) hGap: int = self._imageOptions.horizontalGap vGap: int = self._imageOptions.verticalGap horizontalGap: SpinCtrl = SpinCtrl( self, id=self.__horizontalGapId, value=str(hGap), min=DlgImageOptions.MIN_UML_SHAPE_GAP, max=DlgImageOptions.MAX_UML_SHAPE_GAP) verticalGap: SpinCtrl = SpinCtrl(self, id=self.__verticalGapId, value=str(vGap), min=DlgImageOptions.MIN_UML_SHAPE_GAP, max=DlgImageOptions.MAX_UML_SHAPE_GAP) szrImagePaddingSizer.Add(horizontalGap, flag=ALL, border=5) szrImagePaddingSizer.Add(verticalGap, flag=ALL, border=5) return szrImagePaddingSizer
def __createAppPositionControls(self) -> StaticBoxSizer: scAppPosX = SpinCtrl(self, self.__scAppPosXID, "", (30, 50)) scAppPosY = SpinCtrl(self, self.__scAppPosYID, "", (30, 50)) scAppPosX.SetRange(0, 4096) scAppPosY.SetRange(0, 4096) scAppPosX.SetValue(self.__prefs.appStartupPosition[0]) scAppPosY.SetValue(self.__prefs.appStartupPosition[1]) box: StaticBox = StaticBox(self, ID_ANY, "Startup Position") szrAppPosition: StaticBoxSizer = StaticBoxSizer(box, HORIZONTAL) szrAppPosition.Add(scAppPosX, 0, ALL, DlgPyutPreferences.HORIZONTAL_GAP) szrAppPosition.Add(scAppPosY, 0, ALL, DlgPyutPreferences.HORIZONTAL_GAP) self.__scAppPosX = scAppPosX self.__scAppPosY = scAppPosY self.__setPositionControls() return szrAppPosition
def construct_entry_control(self, entry): """Creates the primary entry control""" if 'boolean' == entry.var_type: control = CheckBox( self.scrolled_panel, name=entry.key_name ) control.SetValue(entry.current) elif 'number' == entry.var_type: control = SpinCtrl( self.scrolled_panel, name=entry.key_name, ) control.SetValue(entry.current) else: control = TextCtrl( self.scrolled_panel, value=str(entry.current), name=entry.key_name, size=(-1, -1) ) self.grid_sizer.Add(control, -1, EXPAND)
def __createAppSizeControls(self) -> StaticBoxSizer: scAppWidth = SpinCtrl(self, self.__scAppWidthID, "", (30, 50)) scAppHeight = SpinCtrl(self, self.__scAppHeightID, "", (30, 50)) scAppWidth.SetRange(960, 4096) scAppHeight.SetRange(480, 4096) box: StaticBox = StaticBox(self, ID_ANY, "Startup Width/Height") szrAppSize: StaticBoxSizer = StaticBoxSizer(box, HORIZONTAL) szrAppSize.Add(scAppWidth, 0, ALL, DlgPyutPreferences.HORIZONTAL_GAP) szrAppSize.Add(scAppHeight, 0, ALL, DlgPyutPreferences.HORIZONTAL_GAP) self.__scAppWidth = scAppWidth self.__scAppHeight = scAppHeight return szrAppSize
def __layoutImageSizeControls(self) -> StaticBoxSizer: imageWidth = SpinCtrl(self, self.__imageWidthId, value=str(self._imageOptions.imageWidth)) imageHeight = SpinCtrl(self, self.__imageHeightId, value=str(self._imageOptions.imageHeight)) imageWidth.SetRange(500, 3000) imageHeight.SetRange(500, 3000) box: StaticBox = StaticBox(self, ID_ANY, "Layout Width/Height") szrAppSize: StaticBoxSizer = StaticBoxSizer(box, HORIZONTAL) szrAppSize.Add(imageWidth, 0, ALL, DlgImageOptions.HORIZONTAL_GAP) szrAppSize.Add(imageHeight, 0, ALL, DlgImageOptions.HORIZONTAL_GAP) return szrAppSize
def __createLayoutSizeControls(self) -> StaticBoxSizer: layoutWidth = SpinCtrl(self, self.__layoutWidthID, "", (30, 50)) layoutHeight = SpinCtrl(self, self.__layoutHeightID, "", (30, 50)) layoutWidth.SetRange(500, 3000) layoutHeight.SetRange(500, 3000) box: StaticBox = StaticBox(self, ID_ANY, "Layout Width/Height") szrAppSize: StaticBoxSizer = StaticBoxSizer(box, HORIZONTAL) szrAppSize.Add(layoutWidth, 0, ALL, DlgLayoutSize.HORIZONTAL_GAP) szrAppSize.Add(layoutHeight, 0, ALL, DlgLayoutSize.HORIZONTAL_GAP) self.__layoutWidth = layoutWidth self.__layoutHeight = layoutHeight self.__layoutWidth.SetValue(self._layoutWidth) self.__layoutHeight.SetValue(self._layoutHeight) return szrAppSize
def on_spin_control_changed(event: wx.KeyEvent, spin_control: wx.SpinCtrl, callback: Callable): callback(spin_control.GetValue())