mirror of https://github.com/chriskiehl/Gooey.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
2.3 KiB
75 lines
2.3 KiB
import wx # type: ignore
|
|
|
|
from gooey.gui import formatters
|
|
from gooey.gui.components.widgets.bases import TextContainer
|
|
from gooey.python_bindings import types as t
|
|
|
|
class IntegerField(TextContainer):
|
|
"""
|
|
An integer input field
|
|
"""
|
|
widget_class = wx.SpinCtrl
|
|
def getWidget(self, *args, **options):
|
|
widget = self.widget_class(self,
|
|
value='',
|
|
min=self._options.get('min', 0),
|
|
max=self._options.get('max', 100))
|
|
return widget
|
|
|
|
def getWidgetValue(self):
|
|
return self.widget.GetValue()
|
|
|
|
def setValue(self, value):
|
|
self.widget.SetValue(int(value))
|
|
|
|
def formatOutput(self, metatdata, value):
|
|
# casting to string so that the generic formatter
|
|
# doesn't treat 0 as false/None
|
|
return formatters.general(metatdata, str(value))
|
|
|
|
def getUiState(self) -> t.FormField:
|
|
widget: wx.SpinCtrl = self.widget
|
|
return t.IntegerField(
|
|
id=self._id,
|
|
type=self.widgetInfo['type'],
|
|
value=self.getWidgetValue(),
|
|
min=widget.GetMin(),
|
|
max=widget.GetMax(),
|
|
error=self.error.GetLabel() or None,
|
|
enabled=self.IsEnabled(),
|
|
visible=self.IsShown()
|
|
)
|
|
|
|
class DecimalField(IntegerField):
|
|
"""
|
|
A decimal input field
|
|
"""
|
|
widget_class = wx.SpinCtrlDouble
|
|
|
|
def getWidget(self, *args, **options):
|
|
widget = self.widget_class(self,
|
|
value='',
|
|
min=self._options.get('min', 0),
|
|
max=self._options.get('max', 100),
|
|
inc=self._options.get('increment', 0.01))
|
|
widget.SetDigits(self._options.get('precision', widget.GetDigits()))
|
|
return widget
|
|
|
|
|
|
def setValue(self, value):
|
|
self.widget.SetValue(value)
|
|
|
|
def getUiState(self) -> t.FormField:
|
|
widget: wx.SpinCtrlDouble = self.widget
|
|
return t.IntegerField(
|
|
id=self._id,
|
|
type=self.widgetInfo['type'],
|
|
value=self.getWidgetValue(),
|
|
min=widget.GetMin(),
|
|
max=widget.GetMax(),
|
|
error=self.error.GetLabel() or None,
|
|
enabled=self.IsEnabled(),
|
|
visible=self.IsShown()
|
|
)
|
|
|
|
|