class IntegerEditPanel(wx.Panel): edits = Integral def __init__(self, *args, **kwargs): super(IntegerEditPanel, self).__init__(*args, **kwargs) sizer = wx.BoxSizer(wx.HORIZONTAL) self.intspin = wx.SpinCtrl(self, style=wx.ALIGN_RIGHT | wx.SP_ARROW_KEYS) self.intctrl = IntCtrl(self, limited=True, allow_long=True, style=wx.ALIGN_RIGHT) self.floatctrl = wx.TextCtrl(self, style=wx.ALIGN_RIGHT) self.floatchk = wx.CheckBox(self, label='Treat as floating-point') sizer.Add(self.intspin, flag=wx.ALIGN_CENTER_VERTICAL) sizer.Add(self.intctrl, flag=wx.ALIGN_CENTER_VERTICAL) sizer.Add(self.floatctrl, flag=wx.ALIGN_CENTER_VERTICAL) sizer.Add(self.floatchk, flag=wx.ALIGN_CENTER_VERTICAL | wx.LEFT, border=10) self.Bind(wx.EVT_CHECKBOX, self.OnFloatToggle, self.floatchk) self.SetSizer(sizer) def SetValue(self, value, kind): self.kind = kind self.Freeze() self.floatchk.Value = False self.floatctrl.Hide() if type(value).maxval > sys.maxsize: self.intspin.Hide() self.intctrl.Show() self.intctrl.SetBounds(type(value).minval, type(value).maxval) self.intctrl.SetValue(long(value)) else: self.intctrl.Hide() self.intspin.Show() self.intspin.SetRange(type(value).minval, type(value).maxval) self.intspin.SetValue(value) if kind.size in (4, 8): self.floatchk.Show() self.intfmt = kind.format[False] self.floatfmt = FLOAT32.format[ False] if kind.size == 4 else FLOAT64.format[False] else: self.floatchk.Hide() self.Layout() self.Thaw() def GetValue(self): if self.intspin.Shown: return self.kind(self.intspin.GetValue()) elif self.intctrl.Shown: try: return self.kind(self.intctrl.GetValue()) except ValueError, e: raise ValueError, "%r" % e else:
def script_addTextButton(self, r_text, g_text, b_text, r_button, g_button, b_button, button_text, command, data): x_text, y_text, w_text, h_text = self._getColoredRect(r_text, g_text, b_text) if x_text < 0: return x_button, y_button, w_button, h_button = self._getColoredRect(r_button, g_button, b_button) if x_button < 0: return from wx.lib.intctrl import IntCtrl text = IntCtrl(self, -1) text.SetBounds(0, 300) text.SetPosition((x_text, y_text)) text.SetSize((w_text, h_text)) button = wx.Button(self, -1, _(button_text)) button.SetPosition((x_button, y_button)) button.SetSize((w_button, h_button)) button.command = command button.data = data self._buttonList.append(button) self.Bind(wx.EVT_BUTTON, lambda e: command(data % text.GetValue()), button)
class TemperatureField(wx.Panel): def __init__(self, parent, callback): super(TemperatureField, self).__init__(parent) self.callback = callback self.SetBackgroundColour(wx.WHITE) self.text = IntCtrl(self, -1) self.text.SetBounds(0, 300) self.text.SetSize((60, 28)) self.unit = wx.StaticBitmap(self, -1, wx.BitmapFromImage(wx.Image( resources.getPathForImage('print-window-temperature-unit.png'))), (0, 0)) self.button = wx.Button(self, -1, _("Set")) self.button.SetSize((35, 25)) self.Bind(wx.EVT_BUTTON, lambda e: self.callback(self.text.GetValue()), self.button) self.text.SetPosition((0, 0)) self.unit.SetPosition((60, 0)) self.button.SetPosition((90, 0))