コード例 #1
0
    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)
コード例 #2
0
    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
コード例 #3
0
 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())
コード例 #4
0
ファイル: ringers.py プロジェクト: deosai/bitpim
    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()]
コード例 #5
0
    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)
コード例 #6
0
    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)
コード例 #7
0
ファイル: ZoomBar.py プロジェクト: iubica/tickerscrape
    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)
コード例 #8
0
    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)
コード例 #9
0
    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)
コード例 #10
0
    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
コード例 #11
0
 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])
コード例 #12
0
    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)
コード例 #13
0
    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)
コード例 #14
0
 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
コード例 #15
0
ファイル: utility.py プロジェクト: zzmjohn/tribler
 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)
コード例 #16
0
ファイル: xrchandlers.py プロジェクト: spence707/RF-Monitor
    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
コード例 #17
0
    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
コード例 #19
0
ファイル: update_data.py プロジェクト: ra2003/pyggybank
    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)
コード例 #20
0
ファイル: toolbar.py プロジェクト: spence707/RF-Monitor
    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)
コード例 #21
0
    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
            )
コード例 #22
0
ファイル: SpinNumCtrl.py プロジェクト: WoLpH/EventGhost
    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)
コード例 #23
0
ファイル: SpinNumCtrl.py プロジェクト: Mutini/EventGhost
    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)
コード例 #24
0
    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)
コード例 #25
0
    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 )
コード例 #26
0
 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)
コード例 #27
0
    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)
コード例 #28
0
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
コード例 #29
0
    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)
コード例 #30
0
    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)