#!/usr/bin/python ######################################################################### # # Spinners to control and display information # ######################################################################### import sys import os import wx from Utility.constants import * #IGNORE:W0611 class ABCSpinner(wx.Panel): def __init__(self, parent, label, unitlabel = None): self.parent = parent self.utility = parent.utility style = wx.CLIP_CHILDREN wx.Panel.__init__(self, parent, -1, style = style) sizer = wx.BoxSizer(wx.HORIZONTAL) self.labeltext = self.utility.lang.get(label) if unitlabel is not None: self.unitlabeltext = self.utility.lang.get(unitlabel) else: self.unitlabeltext = None self.spinner = wx.SpinCtrl(self, size = wx.Size(60, -1)) self.spinner.SetRange(0, 1000) self.spinner.Bind(wx.EVT_SPINCTRL, self.changeSpinner) self.spinner.Bind(wx.EVT_TEXT, self.changeSpinner) self.label = wx.StaticText(self, -1, self.labeltext) self.current = wx.StaticText(self, -1, "", size = wx.Size(20, -1)) sizer.Add(self.label, 0, wx.ALIGN_CENTER_VERTICAL) sizer.Add(self.current, 0, wx.ALIGN_CENTER_VERTICAL|wx.LEFT, 5) sizer.Add(wx.StaticText(self, -1, " / "), 0, wx.ALIGN_CENTER_VERTICAL|wx.LEFT, 5) sizer.Add(self.spinner, 0, wx.ALIGN_CENTER_VERTICAL|wx.LEFT, 5) if self.unitlabeltext is not None: self.unitlabel = wx.StaticText(self, -1, self.unitlabeltext) sizer.Add(self.unitlabel, 0, wx.ALIGN_CENTER_VERTICAL|wx.LEFT, 5) self.SetSizerAndFit(sizer) def changeSpinner(self, event = None): pass def updateCounter(self, event = None): pass def enableSpinner(self, enable = True): self.Enable(enable) def enforceMinMax(self): newval = self.spinner.GetValue() spinnermin = self.spinner.GetMin() spinnermax = self.spinner.GetMax() if newval < spinnermin: newval = spinnermin self.spinner.SetValue(spinnermin) elif newval > spinnermax: newval = spinnermax self.spinner.SetValue(spinnermax) if newval > 1000: newval = 1000 return newval