def __init__(self, *args, **kw): super().__init__(*args, **kw) self.text_width = masked.NumCtrl(self, -1, 200, integerWidth=5, allowNegative=False) self.text_height = masked.NumCtrl(self, -1, 200, integerWidth=5, allowNegative=False) label = wx.StaticText(self, -1, "x") hs = wx.BoxSizer(wx.HORIZONTAL) hs.Add(self.text_width, 1, wx.ALL | wx.EXPAND, 0) hs.AddSpacer(10) hs.Add(label, 0, wx.ALIGN_BOTTOM, 0) hs.AddSpacer(10) hs.Add(self.text_height, 1, wx.ALL | wx.EXPAND, 0) box = wx.StaticBoxSizer(wx.VERTICAL, self, "Minimum Resolution Size (width, height)") box.Add(hs, 1, wx.EXPAND | wx.ALL, 0) self.SetSizer(box)
def CreatePanel(self, parent): ''' Create a panel to represent the variable ''' rows = 2 if self.editable else 1 sizer = wx.FlexGridSizer(rows=rows, cols=2) panel = wx.Panel(parent) panel.SetSizer(sizer) sizer.Add( wx.StaticText(panel, label=self.name + ' (' + self.units + '):')) self.monitorTextCtrl = masked.NumCtrl( panel, value=0, integerWidth=cfg.numIntegerPartWidth, fractionWidth=cfg.numFractionPartWidth, min=self.range[0], max=self.range[1], style=wx.TE_CENTRE | wx.TE_READONLY) sizer.Add(self.monitorTextCtrl) if self.editable: sizer.Add(wx.StaticText(panel, label='Set to:')) editTextCtrl = masked.NumCtrl( panel, value=0, integerWidth=cfg.numIntegerPartWidth, fractionWidth=cfg.numFractionPartWidth, min=self.range[0], max=self.range[1], style=wx.TE_CENTRE | wx.WANTS_CHARS) editTextCtrl.Bind(wx.EVT_KEY_DOWN, self.OnEdit) sizer.Add(editTextCtrl) return panel
def test_numctrlCtor(self): t1 = m.NumCtrl(self.frame) t2 = m.NumCtrl(self.frame, -1, "10") t3 = m.NumCtrl(self.frame, value='32', style=wx.TE_READONLY, min=32, max=72) t3.ChangeValue("16") self.assertTrue(not t3.IsValid())
def create_crop_panel(self, vbs): # crop bit bs=wx.StaticBoxSizer(wx.StaticBox(self, -1, "Crop"), wx.VERTICAL) hbs=wx.BoxSizer(wx.HORIZONTAL) hbs.Add(wx.StaticText(self, -1, "Current Position"), 0, wx.ALL|wx.ALIGN_CENTRE_VERTICAL, 5) self.positionlabel=wx.StaticText(self, -1, "0 ") hbs.Add(self.positionlabel, 0, wx.ALL, 5) hbs.Add(wx.StaticText(self, -1, "Est. Clip File length"), 0, wx.ALL|wx.ALIGN_CENTRE_VERTICAL, 5) self.lengthlabel=wx.StaticText(self, -1, "0 ") hbs.Add(self.lengthlabel, 0, wx.ALL, 5) bs.Add(hbs, 0, wx.ALL, 5) # the start & end manual entry items hbs=wx.GridSizer(-1, 2, 0, 0) hbs.Add(wx.StaticText(self, -1, 'Clip Start (sec):'), 0, wx.EXPAND|wx.ALL, 5) self.clip_start=masked.NumCtrl(self, wx.NewId(), fractionWidth=2) hbs.Add(self.clip_start, 1, wx.EXPAND|wx.ALL, 5) hbs.Add(wx.StaticText(self, -1, 'Clip Duration (sec):'), 0, wx.EXPAND|wx.ALL, 5) self.clip_duration=masked.NumCtrl(self, wx.NewId(), fractionWidth=2) hbs.Add(self.clip_duration, 1, wx.EXPAND|wx.ALL, 5) hbs.Add(wx.StaticText(self, -1, 'Volume Adjustment (dB):'), 0, wx.EXPAND|wx.ALL, 5) self.clip_volume=masked.NumCtrl(self, wx.NewId(), fractionWidth=1) hbs.Add(self.clip_volume, 1, wx.EXPAND|wx.ALL, 5) clip_set_btn=wx.Button(self, wx.NewId(), 'Set') hbs.Add(clip_set_btn, 0, wx.EXPAND|wx.ALL, 5) bs.Add(hbs, 0, wx.EXPAND|wx.ALL, 5) hbs=wx.BoxSizer(wx.HORIZONTAL) self.slider=rangedslider.RangedSlider(self, id=self.ID_SLIDER, size=(-1, 30)) hbs.Add(self.slider, 1, wx.EXPAND|wx.ALL, 5) bs.Add(hbs, 1, wx.EXPAND|wx.ALL, 5) hbs=wx.BoxSizer(wx.HORIZONTAL) hbs.Add(wx.Button(self, self.ID_STOP, "Stop"), 0, wx.ALL, 5) hbs.Add(wx.Button(self, self.ID_PLAY, "Play Position"), 0, wx.ALL, 5) hbs.Add(wx.Button(self, self.ID_PLAY_CLIP, "Play Clip"), 0, wx.ALL, 5) bs.Add(hbs, 0, wx.ALL|wx.ALIGN_RIGHT, 5) vbs.Add(bs, 0, wx.EXPAND|wx.ALL, 5) wx.EVT_BUTTON(self, self.ID_PLAY, self.OnPlayPosition) wx.EVT_BUTTON(self, self.ID_PLAY_CLIP, self.OnPlayClip) wx.EVT_BUTTON(self, self.ID_STOP, self.OnStop) wx.EVT_BUTTON(self, clip_set_btn.GetId(), self.OnSetClip) rangedslider.EVT_POS_CHANGED(self, self.ID_SLIDER, self.OnSliderCurrentChanged) rangedslider.EVT_CHANGING(self, self.ID_SLIDER, self.OnSliderChanging) self.cropids=[self.ID_SLIDER, self.ID_STOP, self.ID_PLAY, self.ID_PLAY_CLIP, self.clip_start.GetId(), self.clip_duration.GetId(), self.clip_volume.GetId(), clip_set_btn.GetId()]
def __init__(self, fpb, fp, param, obj): self.param = param min = param.attributes['min'].value max = param.attributes['max'].value val = param.attributes['def'].value self.panel = wx.Panel(fp) self.floatNum = mask.NumCtrl(self.panel, value=val, integerWidth=4, fractionWidth=2) self.floatNum.SetBounds(float(min), float(max)) self.minText = wx.StaticText(self.panel, label=min) self.valSldr = wx.Slider(self.panel, value=float(val) * 100.0, minValue=float(min) * 100.0, maxValue=float(max) * 100.0) self.maxText = wx.StaticText(self.panel, label=max) self.LoadParam(obj) sizer = wx.BoxSizer() sizer.Add(self.floatNum, 0, wx.EXPAND | wx.LEFT, 2) sizer.Add(self.minText, 0, wx.EXPAND | wx.LEFT, 2) sizer.Add(self.valSldr, 1, wx.EXPAND) sizer.Add(self.maxText, 0, wx.EXPAND | wx.RIGHT, 2) self.panel.SetSizer(sizer) fpb.AddFoldPanelWindow(fp, self.panel, fpbar.FPB_ALIGN_WIDTH) self.panel.Bind(wx.EVT_TEXT, self.OnText, self.floatNum) self.panel.Bind(wx.EVT_SCROLL, self.OnScroll, self.valSldr)
def __init__(self, fpb, fp, param, obj, renderPanel): self.param = param self.renderPanel = renderPanel keys = [ 'keyFrameVal0.x', 'keyFrameVal0.y', 'keyFrameVal0.z', 'keyFrameVal1.x', 'keyFrameVal1.y', 'keyFrameVal1.z', 'keyFrameVal2.x', 'keyFrameVal2.y', 'keyFrameVal2.z', 'keyFrameVal3.x', 'keyFrameVal3.y', 'keyFrameVal3.z', 'KeyFramePos1', 'KeyFramePos2' ] self.curveData = [] self.panel = wx.Panel(fp) self.keyChoice = wx.Choice(self.panel, choices=keys) self.keyChoice.SetSelection(0) self.floatNum = mask.NumCtrl(self.panel, value=0.0, integerWidth=2, fractionWidth=2) self.floatNum.SetBounds(0.0, 1.0) self.tuneBtn = wx.Button(self.panel, label='Tune', size=(29, 19)) self.LoadParam(obj) sizer = wx.BoxSizer() sizer.Add(self.keyChoice, 0, wx.EXPAND | wx.LEFT, 2) sizer.Add(self.floatNum, 1, wx.EXPAND | wx.LEFT | wx.RIGHT, 2) sizer.Add(self.tuneBtn, 0, wx.EXPAND | wx.RIGHT, 2) self.panel.SetSizer(sizer) fpb.AddFoldPanelWindow(fp, self.panel, fpbar.FPB_ALIGN_WIDTH) self.panel.Bind(wx.EVT_CHOICE, self.OnChoice, self.keyChoice) self.panel.Bind(wx.EVT_TEXT, self.OnText, self.floatNum) self.panel.Bind(wx.EVT_BUTTON, self.OnButton, self.tuneBtn)
def __init__(self, parent, log): self.log = log self.enabled = True wx.Panel.__init__(self, parent, -1) self.sizer_1_staticbox = wx.StaticBox(self, -1, "ZoomBar Options") self.zoomSpin = wx.SpinCtrl(self, -1, "3", min=1, max=5) self.colourzoom = wx.ColourPickerCtrl(self, colour=wx.Colour(97, 97, 97)) self.buttonSize = masked.NumCtrl(self, value=32, allowNegative=False, min=32, max=72) self.centerZoom = wx.CheckBox(self, -1, "Center Zoom") self.showReflections = wx.CheckBox(self, -1, "Show Reflections") self.showLabels = wx.CheckBox(self, -1, "Show Labels") self.enableButton = wx.Button(self, -1, "Disable First Button") self.zbp = ZB.ZoomBar(self, -1) standard = glob.glob(bitmapDir + "/*96.png") reflections = glob.glob(bitmapDir + "/*96Flip40.png") separatorImage = bitmapDir + "/separator.gif" separatorReflection = bitmapDir + "/separatorFlip.png" count = 0 for std, ref in zip(standard, reflections): if random.randint(0, 1) == 1 and count > 0: sep1 = wx.Bitmap(separatorImage, wx.BITMAP_TYPE_GIF) sep2 = wx.Bitmap(separatorReflection, wx.BITMAP_TYPE_PNG) self.zbp.AddSeparator(sep1, sep2) bname = os.path.split(std)[1][0:-6] self.zbp.AddButton(wx.Bitmap(std, wx.BITMAP_TYPE_PNG), wx.Bitmap(ref, wx.BITMAP_TYPE_PNG), bname) count += 1 self.zbp.ResetSize() self.SetProperties() self.DoLayout() self.Bind(wx.EVT_SPINCTRL, self.OnZoomFactor, self.zoomSpin) self.Bind(wx.EVT_CHECKBOX, self.OnCenterZoom, self.centerZoom) self.Bind(wx.EVT_CHECKBOX, self.OnShowReflections, self.showReflections) self.Bind(wx.EVT_CHECKBOX, self.OnShowLabels, self.showLabels) self.Bind(wx.EVT_BUTTON, self.OnEnable, self.enableButton) self.Bind(masked.EVT_NUM, self.OnButtonSize, self.buttonSize) self.colourzoom.Bind(wx.EVT_COLOURPICKER_CHANGED, self.OnZoomColour) self.Bind(ZB.EVT_ZOOMBAR, self.OnZoomBar)
def __init__(self, fpb, fp, param, obj, renderPanel): self.param = param self.renderPanel = renderPanel keys = [ 'KeyFrameVal0', 'KeyFrameVal1', 'KeyFrameVal2', 'KeyFrameVal3', 'KeyFramePos1', 'KeyFramePos2', 'Frequency', 'Amplitude' ] min = self.param.attributes['min'].value max = self.param.attributes['max'].value self.curveData = param.attributes['def'].value.split() self.panel = wx.Panel(fp) self.keyChoice = wx.Choice(self.panel, choices=keys) self.keyChoice.SetSelection(0) self.floatNum = mask.NumCtrl(self.panel, value=self.curveData[0], integerWidth=4, fractionWidth=2) self.floatNum.SetBounds(float(min), float(max)) self.tuneBtn = wx.Button(self.panel, label='Tune', size=(29, 19)) self.LoadParam(obj) sizer = wx.BoxSizer() sizer.Add(self.keyChoice, 0, wx.EXPAND | wx.LEFT, 2) sizer.Add(self.floatNum, 1, wx.EXPAND | wx.LEFT | wx.RIGHT, 2) sizer.Add(self.tuneBtn, 0, wx.EXPAND | wx.RIGHT, 2) self.panel.SetSizer(sizer) fpb.AddFoldPanelWindow(fp, self.panel, fpbar.FPB_ALIGN_WIDTH) self.panel.Bind(wx.EVT_CHOICE, self.OnChoice, self.keyChoice) self.panel.Bind(wx.EVT_TEXT, self.OnText, self.floatNum) self.panel.Bind(wx.EVT_BUTTON, self.OnButton, self.tuneBtn)
def __init__(self, fpb, fp, param, obj): self.param = param vec = param.attributes['def'].value.split() self.panel1 = wx.Panel(fp) self.xText = wx.StaticText(self.panel1, label='X') self.xNum = mask.NumCtrl(self.panel1, value=vec[0], integerWidth=4, fractionWidth=2) self.yText = wx.StaticText(self.panel1, label='Y') self.yNum = mask.NumCtrl(self.panel1, value=vec[1], integerWidth=4, fractionWidth=2) self.panel2 = wx.Panel(fp) self.zText = wx.StaticText(self.panel2, label='Z') self.zNum = mask.NumCtrl(self.panel2, value=vec[2], integerWidth=4, fractionWidth=2) self.wText = wx.StaticText(self.panel2, label='W') self.wNum = mask.NumCtrl(self.panel2, value=vec[3], integerWidth=4, fractionWidth=2) self.LoadParam(obj) sizer1 = wx.BoxSizer() sizer1.Add(self.xText, 0, wx.EXPAND | wx.LEFT, 2) sizer1.Add(self.xNum, 0, wx.EXPAND | wx.LEFT | wx.RIGHT, 2) sizer1.Add(self.yText, 0, wx.EXPAND | wx.LEFT | wx.RIGHT, 2) sizer1.Add(self.yNum, 0, wx.EXPAND | wx.RIGHT, 2) self.panel1.SetSizer(sizer1) fpb.AddFoldPanelWindow(fp, self.panel1, fpbar.FPB_ALIGN_WIDTH) sizer2 = wx.BoxSizer() sizer2.Add(self.zText, 0, wx.EXPAND | wx.LEFT, 2) sizer2.Add(self.zNum, 0, wx.EXPAND | wx.LEFT | wx.RIGHT, 2) sizer2.Add(self.wText, 0, wx.EXPAND | wx.LEFT | wx.RIGHT, 2) sizer2.Add(self.wNum, 0, wx.EXPAND | wx.RIGHT, 2) self.panel2.SetSizer(sizer2) fpb.AddFoldPanelWindow(fp, self.panel2, fpbar.FPB_ALIGN_WIDTH) self.panel1.Bind(wx.EVT_TEXT, self.OnText, self.xNum) self.panel1.Bind(wx.EVT_TEXT, self.OnText, self.yNum) self.panel2.Bind(wx.EVT_TEXT, self.OnText, self.zNum) self.panel2.Bind(wx.EVT_TEXT, self.OnText, self.wNum)
def test_numctrlProperties(self): t = m.NumCtrl(self.frame) t.DefaultStyle t.NumberOfLines t.Hint t.InsertionPoint t.LastPosition t.Margins t.StringSelection t.Value
def createControl(self, parent, value, idx, sizeX, constraints): self.editorCtrl = masked.NumCtrl(parent, pos=(-2, idx * oiLineHeight - 2), size=(sizeX, oiLineHeight + 3), value=value, integerWidth=constraints[0], fractionWidth=constraints[1], allowNegative=constraints[2], min=constraints[3], max=constraints[4], limited=constraints[5], autoSize=constraints[6])
def __init__(self, parent, curveData): pre = wx.PreDialog() pre.Create(parent, title='Edit Envelop Curve', size=(800, 480)) self.PostCreate(pre) keys = [ 'keyFrame\nValue0.x', 'keyFrame\nValue0.y', 'keyFrame\nValue0.z', 'keyFrame\nValue1.x', 'keyFrame\nValue1.y', 'keyFrame\nValue1.z', 'keyFrame\nValue2.x', 'keyFrame\nValue2.y', 'keyFrame\nValue2.z', 'keyFrame\nValue3.x', 'keyFrame\nValue3.y', 'keyFrame\nValue3.z', 'KeyFrame\nPosition1', 'KeyFrame\nPosition2' ] self.sliders = [] self.floatNums = [] sizer1 = wx.BoxSizer() for i in range(14): slider = wx.Slider(self, value=curveData[i] * 100.0, minValue=0, maxValue=100, size=(-1, 350), style=wx.SL_VERTICAL | wx.SL_INVERSE) keyText = wx.StaticText(self, label=keys[i], style=wx.ALIGN_CENTRE) floatNum = mask.NumCtrl(self, value=curveData[i], integerWidth=2, fractionWidth=2) self.sliders.append(slider) self.floatNums.append(floatNum) sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(slider, 1, wx.ALIGN_CENTRE) sizer.Add(keyText, 0, wx.ALIGN_CENTRE | wx.BOTTOM, 2) sizer.Add(floatNum, 0, wx.ALIGN_CENTRE | wx.BOTTOM, 2) sizer1.Add(sizer, wx.EXPAND | wx.ALL, 10) self.Bind(wx.EVT_SCROLL, self.OnScroll, slider) self.Bind(wx.EVT_TEXT, self.OnText, keyText) okBtn = wx.Button(self, wx.ID_OK) cancelBtn = wx.Button(self, wx.ID_CANCEL) okBtn.SetDefault() sizer2 = wx.BoxSizer() sizer2.Add((0, 0), 1) sizer2.Add(okBtn, 0, wx.ALIGN_CENTRE) sizer2.Add((0, 0), 1) sizer2.Add(cancelBtn, 0, wx.ALIGN_CENTRE) sizer2.Add((0, 0), 1) sizer3 = wx.BoxSizer(wx.VERTICAL) sizer3.Add(sizer1, 0, wx.EXPAND | wx.ALL, 10) sizer3.Add(sizer2, 0, wx.EXPAND) self.SetSizer(sizer3)
def __init__(self, parent, freq, callbackCal): self.callback = callbackCal self.cal = 0 wx.Dialog.__init__(self, parent=parent, title="Auto Calibration", style=wx.CAPTION) self.Bind(wx.EVT_CLOSE, self.__on_close) title = wx.StaticText(self, label="Calibrate to a known stable signal") font = title.GetFont() font.SetPointSize(font.GetPointSize() + 2) title.SetFont(font) text = wx.StaticText(self, label="Frequency (MHz)") self.textFreq = masked.NumCtrl(self, value=freq, fractionWidth=3, min=F_MIN, max=F_MAX) self.buttonCal = wx.Button(self, label="Calibrate") if len(parent.devicesRtl) == 0: self.buttonCal.Disable() self.buttonCal.Bind(wx.EVT_BUTTON, self.__on_cal) self.textResult = wx.StaticText(self) self.buttonOk = wx.Button(self, wx.ID_OK, 'OK') self.buttonOk.Disable() self.buttonCancel = wx.Button(self, wx.ID_CANCEL, 'Cancel') self.buttonOk.Bind(wx.EVT_BUTTON, self.__on_close) self.buttonCancel.Bind(wx.EVT_BUTTON, self.__on_close) buttons = wx.StdDialogButtonSizer() buttons.AddButton(self.buttonOk) buttons.AddButton(self.buttonCancel) buttons.Realize() sizer = wx.GridBagSizer(10, 10) sizer.Add(title, pos=(0, 0), span=(1, 2), flag=wx.ALIGN_CENTRE | wx.ALL, border=10) sizer.Add(text, pos=(1, 0), flag=wx.ALL, border=10) sizer.Add(self.textFreq, pos=(1, 1), flag=wx.ALL, border=5) sizer.Add(self.buttonCal, pos=(2, 0), span=(1, 2), flag=wx.ALIGN_CENTRE | wx.ALL | wx.EXPAND, border=10) sizer.Add(self.textResult, pos=(3, 0), span=(1, 2), flag=wx.ALL, border=10) sizer.Add(buttons, pos=(4, 0), span=(1, 2), flag=wx.ALL | wx.ALIGN_RIGHT, border=10) self.SetSizerAndFit(sizer)
def setRepeatPanel(self, parent): ''' Set and return the repeat panel ''' sizer = wx.BoxSizer(wx.HORIZONTAL) panel = wx.Panel(parent) panel.SetSizer(sizer) self.maskedTextCtrl = masked.NumCtrl( panel, value=self.repeat, integerWidth=cfg.numIntegerPartWidth, fractionWidth=0, min=0) self.maskedTextCtrl.Bind(wx.EVT_KEY_UP, self.onKeyPress) sizer.Add(self.maskedTextCtrl, 0, wx.EXPAND) return panel
def makeNumCtrl(self, parent, value, integerWidth=6, fractionWidth=0, min=0, max=None, size=wx.DefaultSize): if size != wx.DefaultSize: autoSize = False else: autoSize = True return masked.NumCtrl(parent, value=value, size=size, integerWidth=integerWidth, fractionWidth=fractionWidth, allowNegative=False, min=min, max=max, groupDigits=False, useFixedWidthFont=False, autoSize=autoSize)
def DoCreateResource(self): integerWidth = int(self.GetParamValue('integerwidth')) if self.HasParam('integerwidth') else 4 fractionWidth = int(self.GetParamValue('fractionwidth')) if self.HasParam('fractionwidth') else 3 ctrl = masked.NumCtrl( self.GetParentAsWindow(), self.GetID(), allowNegative=False, integerWidth=integerWidth, fractionWidth=fractionWidth, groupChar=' ', allowNone=False, decimalChar=locale.localeconv()['decimal_point']) self.SetupWindow(ctrl) self.CreateChildren(ctrl) return ctrl
def __init__(self, message, value=0): pre = wx.PreDialog() pre.Create(None, -1, "InVesalius 3", size=wx.DefaultSize, pos=wx.DefaultPosition, style=wx.DEFAULT_DIALOG_STYLE) self.PostCreate(pre) # Static text which contains message to user label = wx.StaticText(self, -1, message) # Numeric value to be changed by user num_ctrl = masked.NumCtrl(self, value=value, integerWidth=3, fractionWidth=2, allowNegative=True, signedForegroundColour = "Black") self.num_ctrl = num_ctrl # Buttons btn_ok = wx.Button(self, wx.ID_OK) btn_ok.SetHelpText(_("Value will be applied.")) btn_ok.SetDefault() btn_cancel = wx.Button(self, wx.ID_CANCEL) btn_cancel.SetHelpText(_("Value will not be applied.")) btnsizer = wx.StdDialogButtonSizer() btnsizer.AddButton(btn_ok) btnsizer.AddButton(btn_cancel) btnsizer.Realize() sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(label, 0, wx.ALIGN_CENTRE|wx.ALL, 5) sizer.Add(num_ctrl, 0, wx.ALIGN_CENTRE|wx.ALL, 5) sizer.Add(btnsizer, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5) self.SetSizer(sizer) sizer.Fit(self) self.Centre()
def KelvinCtrl(self): self.savedKelvin = wx.Colour(*KelvinToRGB(1700)) self.kelvinECtrl = self.panel.CheckBox(False) self.savedkelvinECtrl = False self.kelvinCtrl = masked.NumCtrl( self.panel, -1, 1700, min=1700, max=27000, fractionWidth=0, limited=False, invalidBackgroundColour=wx.RED, ) self.kelvinCtrl.Enable(False) self.returnColour = None self.kelvinECtrl.Bind(wx.EVT_CHECKBOX, self.onEKelvin) self.kelvinCtrl.Bind(masked.EVT_NUM, self.onKelvin) return self.kelvinECtrl, self.kelvinCtrl
def __init__(self, parent): wx.Dialog.__init__(self, parent, wx.ID_ANY, name='update_event') #set some frame properties self.Bind(wx.EVT_CLOSE, self.OnExit) self.SetIcon(wx.Icon(wx.GetApp().engine.icon, wx.BITMAP_TYPE_ICO)) p = wx.Panel(self) #widgets self.stSupplier = wx.StaticText(p, wx.ID_ANY, 'Company') self.cbSuppliers = wx.ComboBox(p, ID_SUPPLIERS, size=(wx.GetApp().engine.get_font() * 20, -1), style=wx.CB_READONLY) self.cbSuppliers.SetToolTipString('Select a supplier.') self.stCategory = wx.StaticText(p, wx.ID_ANY, 'Category') self.cbCategories = wx.ComboBox(p, ID_CATEGORIES, size=(wx.GetApp().engine.get_font() * 20, -1), style=wx.CB_READONLY) self.cbCategories.SetToolTipString('Select a category.') self.stReference = wx.StaticText(p, wx.ID_ANY, 'Reference') self.txReference = wx.TextCtrl(p, wx.ID_ANY, 'No', size=(wx.GetApp().engine.get_font() * 20, -1)) self.txReference.SetMaxLength(30) message = 'Insert reference.\nMax 30 chars.' self.txReference.SetToolTipString(message) #to fix...in debian 8 jessie i get an error with wx.Color call try: self.txReference.SetForegroundColour(wx.Color(255, 0, 0)) except: pass self.stDescription = wx.StaticText(p, wx.ID_ANY, 'Description') self.txDescription = wx.TextCtrl(p, wx.ID_ANY, 'No', size=(wx.GetApp().engine.get_font() * 20, -1)) self.stBill = wx.StaticText(p, wx.ID_ANY, 'Bill') self.txBill = masked.NumCtrl(p, wx.ID_ANY, integerWidth=4, fractionWidth=2, size=(wx.GetApp().engine.get_font() * 12, -1)) self.txBill.SetToolTipString('Price.') self.stIssued = wx.StaticText(p, wx.ID_ANY, "Issued") self.dpcIssued = wx.DatePickerCtrl( p, size=(wx.GetApp().engine.get_font() * 12, -1), style=wx.DP_DROPDOWN | wx.DP_SHOWCENTURY) self.dpcIssued.SetToolTipString('Issued date!') self.stExpiration = wx.StaticText(p, -1, "Expiration") self.dpcExpiration = wx.DatePickerCtrl( p, wx.ID_ANY, size=(wx.GetApp().engine.get_font() * 12, -1), style=wx.DP_DROPDOWN | wx.DP_SHOWCENTURY) self.dpcExpiration.SetToolTipString('Expiration date!') self.stFlow = wx.StaticText(p, wx.ID_ANY, 'Flow') self.ckFlow = wx.CheckBox(p, wx.ID_ANY) self.ckFlow.SetToolTipString('Select = In\nDeselect = Out') self.stSettled = wx.StaticText(p, wx.ID_ANY, 'Settled') self.ckSettled = wx.CheckBox(p, wx.ID_ANY) self.ckSettled.SetToolTipString( 'Select = settled\nDeselect = unsettle') self.stEnable = wx.StaticText(p, wx.ID_ANY, 'Enable') self.ckEnable = wx.CheckBox(p, wx.ID_ANY) sbb = wx.StaticBox(p, wx.ID_ANY, "") bts = [ (wx.ID_SAVE, '&Save', 'save data!'), (wx.ID_CLOSE, '&Close', 'close frame'), ] for (id, label, help_text) in bts: b = wx.Button( p, id, label, ) b.SetToolTipString(help_text) b.Bind(wx.EVT_BUTTON, self.OnClick) #sizers s0 = wx.BoxSizer(wx.HORIZONTAL) s1 = wx.FlexGridSizer(cols=2, hgap=5, vgap=5) s2 = wx.StaticBoxSizer(sbb, wx.VERTICAL) w = ( self.stSupplier, self.cbSuppliers, self.stCategory, self.cbCategories, self.stReference, self.txReference, self.stDescription, self.txDescription, self.stBill, self.txBill, self.stIssued, self.dpcIssued, self.stExpiration, self.dpcExpiration, self.stFlow, self.ckFlow, self.stSettled, self.ckSettled, self.stEnable, self.ckEnable, ) for i in w: s1.Add(i, 0, wx.ALL, 1) for i in p.GetChildren(): if type(i) in (wx.Button, ): s2.Add(i, 0, wx.EXPAND | wx.ALL, 5) w = (s1, s2) for i in w: s0.Add(i, 0, wx.ALL, 10) p.SetSizer(s0) s0.Fit(self) s0.SetSizeHints(self)
def __init__(self, parent): aui.AuiToolBar.__init__(self, parent) self._parent = parent self._numFreq = masked.NumCtrl(self, integerWidth=4, fractionWidth=3, value=1, min=1, max=9999, limited=True) self._numFreq.SetToolTipString('Centre frequency (MHz)') self.AddControl(self._numFreq) self.AddLabel(wx.ID_ANY, 'MHz', get_text_size('MHz', self._numFreq.GetFont())[0]) self._choiceGain = wx.Choice(self) self._choiceGain.SetToolTipString('Gain (dB)') self.AddControl(self._choiceGain) self.AddLabel(wx.ID_ANY, 'dB', get_text_size('dB', self._numFreq.GetFont())[0]) self._numCal = masked.NumCtrl(self, integerWidth=4, fractionWidth=3, value=0, min=-1000, max=1000, allowNegative=True, limited=True) self._numCal.SetToolTipString('Calibration (ppm)') self.AddControl(self._numCal) self.AddLabel(wx.ID_ANY, 'ppm', get_text_size('ppm', self._numFreq.GetFont())[0]) self.AddSeparator() self._spinDyn = wx.SpinCtrl(self, min=0, max=99, size=(50, -1)) self._spinDyn.SetToolTipString('Dynamic noise level (percentile)') self.AddControl(self._spinDyn) self.AddSeparator() self._buttonStart = wx.Button(self, label='Start') self._buttonStart.SetToolTipString('Start monitoring') self.AddControl(self._buttonStart) self._buttonRec = wx.ToggleButton(self, label='Record') self._buttonRec.SetToolTipString('Toggle recording') self.AddControl(self._buttonRec) self._buttonStop = wx.Button(self, label='Stop') self._buttonStop.SetToolTipString('Stop monitoring') self.AddControl(self._buttonStop) self.AddSeparator() self.AddStretchSpacer() self._buttonAdd = wx.Button(self, label='+', style=wx.BU_EXACTFIT) self._buttonAdd.SetToolTipString('Add monitor') self.AddControl(self._buttonAdd) self.Realize() self._on_freq = None self._on_start = None self._on_rec = None self._on_stop = None self._on_add = None self._dynPercentile = 0 self.Bind(masked.EVT_NUM, self.__on_freq, self._numFreq) self.Bind(wx.EVT_CHOICE, self.__on_change, self._choiceGain) self.Bind(masked.EVT_NUM, self.__on_change, self._numCal) self.Bind(wx.EVT_SPINCTRL, self.__on_dynamic, self._spinDyn) self.Bind(wx.EVT_BUTTON, self.__on_start, self._buttonStart) self.Bind(wx.EVT_TOGGLEBUTTON, self.__on_rec, self._buttonRec) self.Bind(wx.EVT_BUTTON, self.__on_stop, self._buttonStop) self.Bind(wx.EVT_BUTTON, self.__on_add, self._buttonAdd)
def Configure(self, selector=None, power=None, color=None, brightness=None, duration=None): kelvin = 1700 panel = eg.ConfigPanel(self) selectorCtrl = SelectorCtrl(panel, selector) powerECtrl = panel.CheckBox(power is not None) powerCtrl = panel.Choice( SetState.pwrCh.index(power) if power is not None else 0, SetState.pwrCh) colorECtrl = panel.CheckBox(color is not None) colorCtrl = ColorPickerCtrl(panel, color) kelvinECtrl = panel.CheckBox(False) kelvinCtrl = masked.NumCtrl(panel, -1, kelvin, min=1700, max=27000, integerWidth=5, fractionWidth=0, limited=False, invalidBackgroundColour=wx.RED) brightnessECtrl = panel.CheckBox(brightness is not None) brightnessCtrl = panel.SpinNumCtrl(brightness, min=0, max=1.0, increment=0.01) durationECtrl = panel.CheckBox(duration is not None) durationCtrl = panel.SpinNumCtrl(duration) panel.AddLine('Selector: ', selectorCtrl) panel.AddLine(powerECtrl, 'Power: ', powerCtrl) panel.AddLine(colorECtrl, 'Color: ', colorCtrl) panel.AddLine(kelvinECtrl, 'Color Temp (Kelvin): ', kelvinCtrl) panel.AddLine(brightnessECtrl, 'Brightness: ', brightnessCtrl) panel.AddLine(durationECtrl, 'Duration: ', durationCtrl) kelvinCtrl.Enable(False) def onKelvin(evt): val = kelvinCtrl.GetValue() if val >= 1700 and val <= 27000: colorCtrl.SetColour( wx.Colour(*KelvinToRGB(kelvinCtrl.GetValue()))) evt.Skip() def onEKelvin(evt): flag = kelvinECtrl.GetValue() kelvinCtrl.Enable(flag) if flag: self.selectedcolour = colorCtrl.GetValue() val = kelvinCtrl.GetValue() if val < 1700: kelvinCtrl.SetValue(1700) if val > 27000: kelvinCtrl.SetValue(27000) colorCtrl.SetColour( wx.Colour(*KelvinToRGB(kelvinCtrl.GetValue()))) else: colorCtrl.SetColour(self.selectedcolour) kelvinCtrl.Enable(flag) colorECtrl.SetValue(not flag) evt.Skip() def onEColor(evt): flag = colorECtrl.GetValue() if flag: kelvinECtrl.SetValue(not flag) kelvinCtrl.Enable(not flag) evt.Skip() colorECtrl.Bind(wx.EVT_CHECKBOX, onEColor) kelvinECtrl.Bind(wx.EVT_CHECKBOX, onEKelvin) kelvinCtrl.Bind(masked.EVT_NUM, onKelvin) while panel.Affirmed(): panel.SetResult( selectorCtrl.GetValue(), SetState.pwrCh[powerCtrl.GetValue()] if powerECtrl.GetValue() else None, colorCtrl.GetValue() if colorECtrl.GetValue() and not kelvinECtrl.GetValue() \ else wx.Colour(*KelvinToRGB(kelvinCtrl.GetValue())) if kelvinECtrl.GetValue() \ else None, durationCtrl.GetValue() if durationECtrl.GetValue() else None )
def __init__(self, parent, id=-1, value=0.0, pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.TE_RIGHT, validator=wx.DefaultValidator, name="eg.SpinNumCtrl", **kwargs): if "increment" in kwargs: self.increment = kwargs["increment"] del kwargs["increment"] else: self.increment = 1 tmp = self._defaultArgs.copy() tmp.update(kwargs) kwargs = tmp minValue = kwargs.pop("min") if minValue < 0: kwargs["allowNegative"] = True if "max" not in kwargs: kwargs["max"] = ((10**kwargs["integerWidth"]) - (10**-kwargs["fractionWidth"])) wx.Window.__init__(self, parent, id, pos, size, 0) self.SetThemeEnabled(True) numCtrl = masked.NumCtrl( self, -1, 0, # Can't set value here, to avoid bug in NumCtrl pos, size, style, validator, name, allowNone=True, #**kwargs # Can't set kwargs here, to avoid bug in NumCtrl ) numCtrl.SetParameters(**kwargs) # To avoid bug in NumCtrl numCtrl.SetValue(value) # To avoid bug in NumCtrl numCtrl.SetMin(minValue) self.numCtrl = numCtrl numCtrl.SetCtrlParameters( validBackgroundColour=GetColour(wx.SYS_COLOUR_WINDOW), emptyBackgroundColour=GetColour(wx.SYS_COLOUR_WINDOW), foregroundColour=GetColour(wx.SYS_COLOUR_WINDOWTEXT), ) numCtrl.SetLimited(True) height = numCtrl.GetSize()[1] spinbutton = wx.SpinButton(self, -1, style=wx.SP_VERTICAL, size=(height * 2 / 3, height)) spinbutton.MoveBeforeInTabOrder(numCtrl) self.spinbutton = spinbutton numCtrl.Bind(wx.EVT_CHAR, self.OnChar) spinbutton.Bind(wx.EVT_SPIN_UP, self.OnSpinUp) spinbutton.Bind(wx.EVT_SPIN_DOWN, self.OnSpinDown) sizer = self.sizer = wx.BoxSizer(wx.HORIZONTAL) sizer.Add(numCtrl, 1, wx.ALIGN_CENTER_VERTICAL | wx.EXPAND) sizer.Add(spinbutton, 0, wx.ALIGN_CENTER) self.SetSizerAndFit(sizer) self.Layout() self.SetMinSize(self.GetSize()) self.Bind(wx.EVT_SIZE, self.OnSize) self.Bind(wx.EVT_SET_FOCUS, self.OnSetFocus) wx.CallAfter(numCtrl.SetSelection, -1, -1)
def __init__(self, parent, id=-1, value=0.0, pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.TE_RIGHT, validator=wx.DefaultValidator, name="eg.SpinNumCtrl", **kwargs): self.increment = kwargs.pop("increment", 1) min_val = kwargs.pop('min', None) max_val = kwargs.pop('max', None) allow_negative = kwargs.pop("allowNegative", False) tmp = self._defaultArgs.copy() tmp.update(kwargs) kwargs = tmp if max_val is None and min_val is None: if value < 0: raise NegativeValueError elif min_val is None and max_val is not None: if value > max_val: raise MaxValueError(value, max_val) if max_val < 0: allow_negative = True elif max_val is None and min_val is not None: if value < min_val: raise MinValueError(value, min_val) if min_val < 0: allow_negative = True else: if min_val > max_val: raise MinMaxValueError(min_val, max_val) if value < min_val: raise MinValueError(value, min_val) if value > max_val: raise MaxValueError(value, max_val) if min_val < 0: allow_negative = True if max_val is None: max_val = ((10**kwargs["integerWidth"]) - (10**-kwargs["fractionWidth"])) wx.Window.__init__(self, parent, id, pos, size, 0) self.SetThemeEnabled(True) numCtrl = masked.NumCtrl(self, -1, value, pos, size, style, validator, name, allowNone=True, allowNegative=allow_negative, min=min_val, max=max_val, **kwargs) self.numCtrl = numCtrl numCtrl.SetCtrlParameters( validBackgroundColour=GetColour(wx.SYS_COLOUR_WINDOW), emptyBackgroundColour=GetColour(wx.SYS_COLOUR_WINDOW), foregroundColour=GetColour(wx.SYS_COLOUR_WINDOWTEXT), ) height = numCtrl.GetSize()[1] spinbutton = wx.SpinButton(self, -1, style=wx.SP_VERTICAL, size=(height * 2 / 3, height)) spinbutton.MoveBeforeInTabOrder(numCtrl) self.spinbutton = spinbutton numCtrl.Bind(wx.EVT_CHAR, self.OnChar) spinbutton.Bind(wx.EVT_SPIN_UP, self.OnSpinUp) spinbutton.Bind(wx.EVT_SPIN_DOWN, self.OnSpinDown) sizer = self.sizer = wx.BoxSizer(wx.HORIZONTAL) sizer.Add(numCtrl, 1, wx.ALIGN_CENTER_VERTICAL | wx.EXPAND) sizer.Add(spinbutton, 0, wx.ALIGN_CENTER) self.SetSizerAndFit(sizer) self.Layout() self.SetMinSize(self.GetSize()) self.Bind(wx.EVT_SIZE, self.OnSize) self.Bind(wx.EVT_SET_FOCUS, self.OnSetFocus) wx.CallAfter(numCtrl.SetSelection, -1, -1)
def __init__(self, parent, main): self.main = main wx.Dialog.__init__(self, parent=parent, title="Plot Range") self.checkAuto = wx.CheckBox(self, wx.ID_ANY, "Auto Range") self.checkAuto.SetValue(self.main.settings.yAuto) self.Bind(wx.EVT_CHECKBOX, self.on_auto, self.checkAuto) textMax = wx.StaticText(self, label="Maximum (dB)") self.yMax = masked.NumCtrl(self, value=int(self.main.settings.yMax), fractionWidth=0, min=-100, max=20) textMin = wx.StaticText(self, label="Minimum (dB)") self.yMin = masked.NumCtrl(self, value=int(self.main.settings.yMin), fractionWidth=0, min=-100, max=20) self.set_enabled(not self.main.settings.yAuto) sizerButtons = wx.StdDialogButtonSizer() buttonOk = wx.Button(self, wx.ID_OK) buttonCancel = wx.Button(self, wx.ID_CANCEL) sizerButtons.AddButton(buttonOk) sizerButtons.AddButton(buttonCancel) sizerButtons.Realize() self.Bind(wx.EVT_BUTTON, self.on_ok, buttonOk) sizer = wx.GridBagSizer(10, 10) sizer.Add(self.checkAuto, pos=(0, 0), span=(1, 1), flag=wx.ALIGN_CENTER | wx.ALL, border=10) sizer.Add(textMax, pos=(1, 0), span=(1, 1), flag=wx.ALIGN_CENTER | wx.ALL, border=10) sizer.Add(self.yMax, pos=(1, 1), span=(1, 1), flag=wx.ALIGN_CENTER | wx.ALL, border=10) sizer.Add(textMin, pos=(2, 0), span=(1, 1), flag=wx.ALIGN_CENTER | wx.ALL, border=10) sizer.Add(self.yMin, pos=(2, 1), span=(1, 1), flag=wx.ALIGN_CENTER | wx.ALL, border=10) sizer.Add(sizerButtons, pos=(3, 0), span=(1, 2), flag=wx.ALIGN_CENTER | wx.ALL, border=10) self.SetSizerAndFit(sizer)
def __init__( self, parent, log ): wx.Panel.__init__( self, parent, -1 ) self.log = log panel = wx.Panel( self, -1 ) header = wx.StaticText(panel, -1, """\ This shows the various options for masked.NumCtrl. The controls at the top reconfigure the resulting control at the bottom. """) header.SetForegroundColour( "Blue" ) intlabel = wx.StaticText( panel, -1, "Integer width:" ) self.integerwidth = masked.NumCtrl( panel, value=10, integerWidth=2, allowNegative=False ) fraclabel = wx.StaticText( panel, -1, "Fraction width:" ) self.fractionwidth = masked.NumCtrl( panel, value=0, integerWidth=2, allowNegative=False ) groupcharlabel = wx.StaticText( panel,-1, "Grouping char:" ) self.groupchar = masked.TextCtrl( panel, -1, value=',', mask='&', excludeChars = '-()', formatcodes='F', emptyInvalid=True, validRequired=True ) decimalcharlabel = wx.StaticText( panel,-1, "Decimal char:" ) self.decimalchar = masked.TextCtrl( panel, -1, value='.', mask='&', excludeChars = '-()', formatcodes='F', emptyInvalid=True, validRequired=True ) self.set_min = wx.CheckBox( panel, -1, "Set minimum value:" ) # Create this masked.NumCtrl using factory, to show how: self.min = masked.Ctrl( panel, integerWidth=5, fractionWidth=2, controlType=masked.controlTypes.NUMBER ) self.min.Enable( False ) self.set_max = wx.CheckBox( panel, -1, "Set maximum value:" ) self.max = masked.NumCtrl( panel, integerWidth=5, fractionWidth=2 ) self.max.Enable( False ) self.limit_target = wx.CheckBox( panel, -1, "Limit control" ) self.allow_none = wx.CheckBox( panel, -1, "Allow empty control" ) self.group_digits = wx.CheckBox( panel, -1, "Group digits" ) self.group_digits.SetValue( True ) self.allow_negative = wx.CheckBox( panel, -1, "Allow negative values" ) self.allow_negative.SetValue( True ) self.use_parens = wx.CheckBox( panel, -1, "Use parentheses" ) self.select_on_entry = wx.CheckBox( panel, -1, "Select on entry" ) self.select_on_entry.SetValue( True ) label = wx.StaticText( panel, -1, "Resulting numeric control:" ) font = label.GetFont() font.SetWeight(wx.BOLD) label.SetFont(font) self.target_ctl = masked.NumCtrl( panel, -1, name="target control" ) label_numselect = wx.StaticText( panel, -1, """\ Programmatically set the above value entry ctrl:""") self.numselect = wx.ComboBox(panel, -1, choices = [ '0', '111', '222.22', '-3', '54321.666666666', '-1353.978', '1234567', '-1234567', '123456789', '-123456789.1', '1234567890.', '-9876543210.9' ]) grid1 = wx.FlexGridSizer( 0, 4, 0, 0 ) grid1.Add( intlabel, 0, wx.ALIGN_LEFT|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5) grid1.Add( self.integerwidth, 0, wx.ALIGN_LEFT|wx.ALL, 5 ) grid1.Add( groupcharlabel, 0, wx.ALIGN_LEFT|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5) grid1.Add( self.groupchar, 0, wx.ALIGN_LEFT|wx.ALL, 5 ) grid1.Add( fraclabel, 0, wx.ALIGN_LEFT|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 ) grid1.Add( self.fractionwidth, 0, wx.ALIGN_LEFT|wx.ALL, 5 ) grid1.Add( decimalcharlabel, 0, wx.ALIGN_LEFT|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5) grid1.Add( self.decimalchar, 0, wx.ALIGN_LEFT|wx.ALL, 5 ) grid1.Add( self.set_min, 0, wx.ALIGN_LEFT|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 ) grid1.Add( self.min, 0, wx.ALIGN_LEFT|wx.ALL, 5 ) grid1.Add( (5,5), 0, wx.ALIGN_LEFT|wx.ALL, 5) grid1.Add( (5,5), 0, wx.ALIGN_LEFT|wx.ALL, 5) grid1.Add( self.set_max, 0, wx.ALIGN_LEFT|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 ) grid1.Add( self.max, 0, wx.ALIGN_LEFT|wx.ALL, 5 ) grid1.Add( (5,5), 0, wx.ALIGN_LEFT|wx.ALL, 5) grid1.Add( (5,5), 0, wx.ALIGN_LEFT|wx.ALL, 5) grid1.Add( self.limit_target, 0, wx.ALIGN_LEFT|wx.ALL, 5 ) grid1.Add( self.allow_none, 0, wx.ALIGN_LEFT|wx.ALL, 5 ) hbox1 = wx.BoxSizer( wx.HORIZONTAL ) hbox1.Add( (17,5), 0, wx.ALIGN_LEFT|wx.ALL, 5) hbox1.Add( self.group_digits, 0, wx.ALIGN_LEFT|wx.LEFT, 5 ) grid1.Add( hbox1, 0, wx.ALIGN_LEFT|wx.ALL, 5) grid1.Add( (5,5), 0, wx.ALIGN_LEFT|wx.ALL, 5) grid1.Add( self.allow_negative, 0, wx.ALIGN_LEFT|wx.ALL, 5 ) grid1.Add( self.use_parens, 0, wx.ALIGN_LEFT|wx.ALL, 5 ) hbox2 = wx.BoxSizer( wx.HORIZONTAL ) hbox2.Add( (17,5), 0, wx.ALIGN_LEFT|wx.ALL, 5) hbox2.Add( self.select_on_entry, 0, wx.ALIGN_LEFT|wx.LEFT, 5 ) grid1.Add( hbox2, 0, wx.ALIGN_LEFT|wx.ALL, 5) grid1.Add( (5,5), 0, wx.ALIGN_LEFT|wx.ALL, 5) grid2 = wx.FlexGridSizer( 0, 2, 0, 0 ) grid2.Add( label, 0, wx.ALIGN_LEFT|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 ) grid2.Add( self.target_ctl, 0, wx.ALIGN_LEFT|wx.ALL, 5 ) grid2.Add( (5,5), 0, wx.ALIGN_LEFT|wx.ALL, 5) grid2.Add( (5,5), 0, wx.ALIGN_LEFT|wx.ALL, 5) grid2.Add( label_numselect, 0, wx.ALIGN_LEFT|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 ) grid2.Add( self.numselect, 0, wx.ALIGN_LEFT|wx.ALL, 5 ) grid2.Add( (5,5), 0, wx.ALIGN_LEFT|wx.ALL, 5) grid2.Add( (5,5), 0, wx.ALIGN_LEFT|wx.ALL, 5) grid2.AddGrowableCol(1) self.outer_box = wx.BoxSizer( wx.VERTICAL ) self.outer_box.Add(header, 0, wx.ALIGN_LEFT|wx.TOP|wx.LEFT, 20) self.outer_box.Add( grid1, 0, wx.ALIGN_CENTRE|wx.LEFT|wx.BOTTOM|wx.RIGHT, 20 ) self.outer_box.Add( grid2, 0, wx.ALIGN_LEFT|wx.ALL, 20 ) self.grid2 = grid2 panel.SetAutoLayout( True ) panel.SetSizer( self.outer_box ) self.outer_box.Fit( panel ) panel.Move( (50,10) ) self.panel = panel self.Bind(masked.EVT_NUM, self.OnSetIntWidth, self.integerwidth ) self.Bind(masked.EVT_NUM, self.OnSetFractionWidth, self.fractionwidth ) self.Bind(wx.EVT_TEXT, self.OnSetGroupChar, self.groupchar ) self.Bind(wx.EVT_TEXT, self.OnSetDecimalChar, self.decimalchar ) self.Bind(wx.EVT_CHECKBOX, self.OnSetMin, self.set_min ) self.Bind(wx.EVT_CHECKBOX, self.OnSetMax, self.set_max ) self.Bind(masked.EVT_NUM, self.SetTargetMinMax, self.min ) self.Bind(masked.EVT_NUM, self.SetTargetMinMax, self.max ) self.Bind(wx.EVT_CHECKBOX, self.SetTargetMinMax, self.limit_target ) self.Bind(wx.EVT_CHECKBOX, self.OnSetAllowNone, self.allow_none ) self.Bind(wx.EVT_CHECKBOX, self.OnSetGroupDigits, self.group_digits ) self.Bind(wx.EVT_CHECKBOX, self.OnSetAllowNegative, self.allow_negative ) self.Bind(wx.EVT_CHECKBOX, self.OnSetUseParens, self.use_parens ) self.Bind(wx.EVT_CHECKBOX, self.OnSetSelectOnEntry, self.select_on_entry ) self.Bind(masked.EVT_NUM, self.OnTargetChange, self.target_ctl ) self.Bind(wx.EVT_COMBOBOX, self.OnNumberSelect, self.numselect )
def test_numctrlCtor(self): t = m.NumCtrl(self.frame) t = m.NumCtrl(self.frame, -1, "10") t = m.NumCtrl(self.frame, style=wx.TE_READONLY)
def __init__(self, parent, id, title, size): # First, call the base class' __init__ method to create the frame wx.Frame.__init__(self, parent, id, title, size=(600, 600)) # Test MFC self.mfc1 = MFC('COM12', 'Ar') # Main panel topPanel = wx.Panel(self, -1, style=wx.SUNKEN_BORDER) # Status items flowRateLabel = wx.StaticText(topPanel, -1, "Flow Rate:") self.flowRateCtrl = wx.TextCtrl(topPanel, -1, "", size=(120, 22), style=wx.TE_READONLY) getSetpointLabel = wx.StaticText(topPanel, -1, "Setpoint:") self.getSetpointPercentageCtrl = wx.TextCtrl(topPanel, -1, "", size=(120, 22), style=wx.TE_READONLY) self.getSetpointUnitCtrl = wx.TextCtrl(topPanel, -1, "", size=(120, 22), style=wx.TE_READONLY) comPortStatusLabel = wx.StaticText(topPanel, -1, "COM Status:") self.comPortStatusLED = LED(topPanel) valveStatusLabel = wx.StaticText(topPanel, -1, "Valve Status:") self.valveStatusLED = LED(topPanel) # Timers self.statusTimer = wx.Timer(self) self.timerToggleBtn = wx.Button(topPanel, wx.ID_ANY, "Toggle timer") statusTimerLabel = wx.StaticText(topPanel, -1, "Timer Status:") self.statusTimerLED = LED(topPanel) self.uiTimer = wx.Timer(self) self.uiTimer.Start(100) # Control items self.closeSerialBut = wx.Button(topPanel, wx.ID_ANY, 'Close serialport') self.openSerialBut = wx.Button(topPanel, wx.ID_ANY, 'Open serialport') self.setSetpointBut = wx.Button(topPanel, wx.ID_ANY, 'SET') self.setSetpointCtrl = masked.NumCtrl(topPanel, -1, integerWidth=3, fractionWidth=2, min=0.00, max=100.00) valveOverrideLabel = wx.StaticText(topPanel, wx.ID_ANY, 'Valve Override:') self.setValveOverrideOffBut = wx.Button(topPanel, wx.ID_ANY, 'OFF') self.setValveOverrideOpenBut = wx.Button(topPanel, wx.ID_ANY, 'OPEN') self.setValveOverrideCloseBut = wx.Button(topPanel, wx.ID_ANY, 'CLOSE') # Layout vbox = wx.BoxSizer(wx.VERTICAL) hbox1 = wx.BoxSizer(wx.HORIZONTAL) hbox1.Add(flowRateLabel, flag=wx.RIGHT, border=8) hbox1.Add(self.flowRateCtrl, proportion=1) vbox.Add(hbox1, flag=wx.LEFT | wx.RIGHT | wx.TOP, border=10) vbox.Add((-1, 10)) hbox6 = wx.BoxSizer(wx.HORIZONTAL) hbox6.Add(getSetpointLabel, flag=wx.RIGHT, border=8) hbox6.Add(self.getSetpointPercentageCtrl, proportion=1) hbox6.Add(self.getSetpointUnitCtrl, proportion=1) vbox.Add(hbox6, flag=wx.LEFT | wx.RIGHT | wx.TOP, border=10) vbox.Add((-1, 10)) hbox2 = wx.BoxSizer(wx.HORIZONTAL) hbox2.Add(comPortStatusLabel) hbox2.Add(self.comPortStatusLED) vbox.Add(hbox2, flag=wx.LEFT | wx.TOP, border=10) vbox.Add((-1, 10)) hbox3 = wx.BoxSizer(wx.HORIZONTAL) hbox3.Add(valveStatusLabel) hbox3.Add(self.valveStatusLED) vbox.Add(hbox3, flag=wx.LEFT | wx.TOP, border=10) vbox.Add((-1, 10)) hbox4 = wx.BoxSizer(wx.HORIZONTAL) hbox4.Add(statusTimerLabel) hbox4.Add(self.statusTimerLED) vbox.Add(hbox4, flag=wx.LEFT | wx.TOP, border=10) vbox.Add((-1, 10)) hbox5 = wx.BoxSizer(wx.HORIZONTAL | wx.ALIGN_LEFT) hbox5.Add(valveOverrideLabel) hbox5.Add(self.setValveOverrideOffBut) hbox5.Add((10, -1)) hbox5.Add(self.setValveOverrideOpenBut) hbox5.Add((10, -1)) hbox5.Add(self.setValveOverrideCloseBut) vbox.Add(hbox5, flag=wx.LEFT | wx.TOP, border=10) vbox.Add((-1, 10)) hbox7 = wx.BoxSizer(wx.HORIZONTAL | wx.ALIGN_LEFT) hbox7.Add(self.timerToggleBtn) hbox7.Add((10, -1)) hbox7.Add(self.closeSerialBut) hbox7.Add((10, -1)) hbox7.Add(self.openSerialBut) vbox.Add(hbox7, flag=wx.LEFT | wx.TOP, border=10) vbox.Add((-1, 10)) hbox8 = wx.BoxSizer(wx.HORIZONTAL) hbox8.Add(self.setSetpointCtrl) hbox8.Add((10, -1)) hbox8.Add(self.setSetpointBut) vbox.Add(hbox8, flag=wx.LEFT | wx.TOP, border=10) vbox.Add((-1, 10)) topPanel.SetSizer(vbox) # Bindings self.Bind(wx.EVT_BUTTON, self.OnOpenSerialPort, self.openSerialBut) self.Bind(wx.EVT_BUTTON, self.OnCloseSerialPort, self.closeSerialBut) self.Bind(wx.EVT_BUTTON, self.OnSetSetpoint, self.setSetpointBut) self.Bind(wx.EVT_BUTTON, self.OnTimerToggle, self.timerToggleBtn) self.Bind(wx.EVT_TIMER, self.OnUIUpdate, self.uiTimer) self.Bind(wx.EVT_TIMER, self.OnStatusUpdate, self.statusTimer) self.Bind(wx.EVT_BUTTON, self.OnSetValveOverrideOff, self.setValveOverrideOffBut) self.Bind(wx.EVT_BUTTON, self.OnSetValveOverrideOpen, self.setValveOverrideOpenBut) self.Bind(wx.EVT_BUTTON, self.OnSetValveOverrideClose, self.setValveOverrideCloseBut) self.OnTimerToggle(wx.EVT_TIMER) self.OnSetValveOverrideClose(wx.EVT_BUTTON)
def MacroCardFunc(parent, call_fit=True, set_sizer=True): item0 = wx.FlexGridSizer(0, 1, 0, 0) item2 = wx.StaticBox(parent, -1, "Macro per personalizzazione") item1 = wx.StaticBoxSizer(item2, wx.VERTICAL) item3 = wx.FlexGridSizer(1, 0, 0, 0) item4 = wx.FlexGridSizer(0, 1, 0, 0) item5 = wx.StaticText(parent, ID_TEXT, "Codice:", wx.DefaultPosition, [60, -1], 0) item4.Add(item5, 0, wx.ALIGN_CENTER_VERTICAL, 0) item6 = wx.TextCtrl(parent, ID_TXT_CODICE, "", wx.DefaultPosition, [80, -1], 0) item6.SetName("codice") item4.Add(item6, 0, wx.ALIGN_CENTER_VERTICAL, 0) item4.AddGrowableCol(0) item3.Add(item4, 0, wx.GROW | wx.ALIGN_CENTER_VERTICAL, 5) item7 = wx.FlexGridSizer(0, 1, 0, 0) item8 = wx.StaticText(parent, ID_TEXT, "ID:", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_RIGHT) item7.Add(item8, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL | wx.LEFT, 5) item9 = masked.NumCtrl(parent, integerWidth=6, allowNegative=False, groupDigits=False) item9.SetName("id") item9.SetEditable(False) item7.Add(item9, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL, 5) item7.AddGrowableCol(0) item3.Add(item7, 0, wx.GROW | wx.ALIGN_CENTER_VERTICAL, 5) item3.AddGrowableCol(0) item3.AddGrowableCol(1) item1.Add(item3, 0, wx.GROW | wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5) item10 = wx.BoxSizer(wx.VERTICAL) item11 = wx.StaticText(parent, ID_TXT_DESCRIZ, "Descrizione:", wx.DefaultPosition, [90, -1], 0) item10.Add(item11, 0, wx.ALIGN_CENTER_VERTICAL, 5) item12 = wx.TextCtrl(parent, ID_TXT_DESCRIZ, "", wx.DefaultPosition, [220, -1], 0) item12.SetName("descriz") item10.Add(item12, 0, wx.GROW | wx.ALIGN_CENTER_VERTICAL, 0) item1.Add(item10, 0, wx.GROW | wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5) item0.Add(item1, 0, wx.GROW | wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5) item13 = wx.StaticText(parent, ID_LABELMACRO, "Espressione:", wx.DefaultPosition, wx.DefaultSize, 0) item0.Add(item13, 0, wx.GROW | wx.ALIGN_CENTER_VERTICAL | wx.LEFT | wx.RIGHT | wx.TOP, 5) item14 = wx.TextCtrl(parent, ID_MACRO, "", wx.DefaultPosition, [450, 320], wx.TE_MULTILINE) item14.SetFont(wx.Font(10, wx.MODERN, wx.NORMAL, wx.NORMAL)) item14.SetName("macro") item0.Add( item14, 0, wx.GROW | wx.ALIGN_CENTER_VERTICAL | wx.LEFT | wx.RIGHT | wx.BOTTOM, 5) item0.AddGrowableCol(0) item0.AddGrowableRow(2) if set_sizer == True: parent.SetSizer(item0) if call_fit == True: item0.SetSizeHints(parent) return item0
def __init__(self, parent, id=-1, value=0, pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.TE_RIGHT, validator=wx.DefaultValidator, name="eg.SpinNumCtrl", min_val=0, max_val=100, allowNegative=False, groupDigits=False, fractionWidth=0, integerWidth=5, **kwargs): limited = True groupChar = THOUSANDS_SEP decimalChar = DECIMAL_POINT self.increment = 1 if max_val is None: max_val = ((10**integerWidth) - (10**-fractionWidth)) wx.Window.__init__(self, parent, id, pos, size, 0) self.SetThemeEnabled(True) numCtrl = masked.NumCtrl( parent=self, id=-1, value=value, pos=pos, size=size, style=style, validator=validator, name=name, allowNone=True, allowNegative=allowNegative, groupDigits=groupDigits, fractionWidth=fractionWidth, integerWidth=integerWidth, min=min_val, max=max_val, limited=limited, groupChar=groupChar, decimalChar=decimalChar, ) self.numCtrl = numCtrl numCtrl.SetCtrlParameters( validBackgroundColour=GetColour(wx.SYS_COLOUR_WINDOW), emptyBackgroundColour=GetColour(wx.SYS_COLOUR_WINDOW), foregroundColour=GetColour(wx.SYS_COLOUR_WINDOWTEXT), ) height = numCtrl.GetSize()[1] spinbutton = wx.SpinButton(self, -1, style=wx.SP_VERTICAL, size=(height * 2 / 3, height)) spinbutton.MoveBeforeInTabOrder(numCtrl) self.spinbutton = spinbutton numCtrl.Bind(wx.EVT_CHAR, self.OnChar) spinbutton.Bind(wx.EVT_SPIN_UP, self.OnSpinUp) spinbutton.Bind(wx.EVT_SPIN_DOWN, self.OnSpinDown) sizer = self.sizer = wx.BoxSizer(wx.HORIZONTAL) sizer.Add(numCtrl, 1, wx.ALIGN_CENTER_VERTICAL | wx.EXPAND) sizer.Add(spinbutton, 0, wx.ALIGN_CENTER) self.SetSizerAndFit(sizer) self.Layout() self.SetMinSize(self.GetSize()) self.Bind(wx.EVT_SIZE, self.OnSize) self.Bind(wx.EVT_SET_FOCUS, self.OnSetFocus) wx.CallAfter(numCtrl.SetSelection, -1, -1)
def __init__(self, fpb, fp, param, obj): self.param = param rgba = param.attributes['def'].value.split() self.panel1 = wx.Panel(fp) self.rText = wx.StaticText(self.panel1, label='R') self.rNum = mask.NumCtrl(self.panel1, value=rgba[0], integerWidth=2, fractionWidth=1) self.rNum.SetBounds(0.0, 1.0) self.gText = wx.StaticText(self.panel1, label='G') self.gNum = mask.NumCtrl(self.panel1, value=rgba[1], integerWidth=2, fractionWidth=1) self.gNum.SetBounds(0.0, 1.0) self.bText = wx.StaticText(self.panel1, label='B') self.bNum = mask.NumCtrl(self.panel1, value=rgba[2], integerWidth=2, fractionWidth=1) self.bNum.SetBounds(0.0, 1.0) color = wx.Colour( float(rgba[0]) * 255.0, float(rgba[1]) * 255.0, float(rgba[2]) * 255.0) self.rgbSel = csel.ColourSelect(self.panel1, -1, colour=color, size=(29, 19)) self.panel2 = wx.Panel(fp) self.aText = wx.StaticText(self.panel2, label='A') self.aNum = mask.NumCtrl(self.panel2, value=rgba[3], integerWidth=2, fractionWidth=1) self.aNum.SetBounds(0.0, 1.0) self.aSldr = wx.Slider(self.panel2, value=int(float(rgba[3]) * 100.0), minValue=0, maxValue=100) self.LoadParam(obj) sizer1 = wx.BoxSizer() sizer1.Add(self.rText, 0, wx.EXPAND | wx.LEFT, 2) sizer1.Add(self.rNum, 0, wx.EXPAND | wx.LEFT | wx.RIGHT, 2) sizer1.Add(self.gText, 0, wx.EXPAND | wx.LEFT | wx.RIGHT, 2) sizer1.Add(self.gNum, 0, wx.EXPAND | wx.LEFT | wx.RIGHT, 2) sizer1.Add(self.bText, 0, wx.EXPAND | wx.LEFT | wx.RIGHT, 2) sizer1.Add(self.bNum, 0, wx.EXPAND | wx.LEFT | wx.RIGHT, 2) sizer1.Add((0, 0), 1, wx.EXPAND) sizer1.Add(self.rgbSel, 0, wx.EXPAND | wx.RIGHT, 2) self.panel1.SetSizer(sizer1) fpb.AddFoldPanelWindow(fp, self.panel1, fpbar.FPB_ALIGN_WIDTH) sizer2 = wx.BoxSizer() sizer2.Add(self.aText, 0, wx.EXPAND | wx.LEFT, 2) sizer2.Add(self.aNum, 0, wx.EXPAND | wx.LEFT | wx.RIGHT, 2) sizer2.Add(self.aSldr, 1, wx.EXPAND) self.panel2.SetSizer(sizer2) fpb.AddFoldPanelWindow(fp, self.panel2, fpbar.FPB_ALIGN_WIDTH) self.panel1.Bind(wx.EVT_TEXT, self.OnText, self.rNum) self.panel1.Bind(wx.EVT_TEXT, self.OnText, self.gNum) self.panel2.Bind(wx.EVT_TEXT, self.OnText, self.bNum) self.panel1.Bind(csel.EVT_COLOURSELECT, self.OnSelColor, self.rgbSel) self.panel2.Bind(wx.EVT_TEXT, self.OnText, self.aNum) self.panel2.Bind(wx.EVT_SCROLL, self.OnScroll, self.aSldr)