def test_ComboBoxCtors(self): c = m.ComboBox(self.frame, value='value', choices="one two three four".split()) c = m.ComboBox(self.frame, -1, 'value', wx.Point(10,10), wx.Size(80,-1), "one two three four".split(), 0) c = m.ComboBox(self.frame, -1, "", (10,10), (80,-1), "one two three four".split(), 0) self.assertTrue(c.GetCount() == 4)
def __init__(self, parent, log): self.log = log scroll.ScrolledPanel.__init__(self, parent, -1) self.sizer = wx.BoxSizer(wx.VERTICAL) labelMaskedCombos = wx.StaticText( self, -1, """\ These are some examples of masked.ComboBox:""") labelMaskedCombos.SetForegroundColour("Blue") label_statecode = wx.StaticText( self, -1, """\ A state selector; only "legal" values can be entered:""") statecode = masked.ComboBox(self, -1, masked.states[0], choices=masked.states, autoformat="USSTATE") label_statename = wx.StaticText( self, -1, """\ A state name selector, with auto-select:""") # Create this one using factory function: statename = masked.Ctrl(self, -1, masked.state_names[0], controlType=masked.controlTypes.COMBO, choices=masked.state_names, autoformat="USSTATENAME", autoSelect=True) statename.SetCtrlParameters(formatcodes='F!V_') numerators = [str(i) for i in range(1, 4)] denominators = [ string.ljust(str(i), 2) for i in [2, 3, 4, 5, 8, 16, 32, 64] ] fieldsDict = { 0: masked.Field(choices=numerators, choiceRequired=False), 1: masked.Field(choices=denominators, choiceRequired=True) } choices = [] for n in numerators: for d in denominators: if n != d: choices.append('%s/%s' % (n, d)) label_fraction = wx.StaticText( self, -1, """\ A masked ComboBox for fraction selection. Choices for each side of the fraction can be selected with PageUp/Down:""") fraction = masked.Ctrl(self, -1, "", controlType=masked.controlTypes.COMBO, choices=choices, choiceRequired=True, mask="#/##", formatcodes="F_", validRegex="^\d\/\d\d?", fields=fieldsDict) label_code = wx.StaticText( self, -1, """\ A masked ComboBox to validate text from a list of numeric codes:""") choices = ["91", "136", "305", "4579"] code = masked.ComboBox(self, -1, choices[0], choices=choices, choiceRequired=True, formatcodes="F_r", mask="####") label_selector = wx.StaticText( self, -1, """\ Programmatically set choice sets:""") self.list_selector = wx.ComboBox(self, -1, '', choices=['list1', 'list2', 'list3']) self.dynamicbox = masked.Ctrl( self, -1, ' ', controlType=masked.controlTypes.COMBO, mask='XXXX', formatcodes='F_', # these are to give dropdown some initial height, # as base control apparently only sets that size # during initial construction <sigh>: choices=['', '1', '2', '3', '4', '5']) self.dynamicbox.Clear( ) # get rid of initial choices used to size the dropdown labelIpAddrs = wx.StaticText( self, -1, """\ Here are some examples of IpAddrCtrl, a control derived from masked.TextCtrl:""" ) labelIpAddrs.SetForegroundColour("Blue") label_ipaddr1 = wx.StaticText(self, -1, "An empty control:") ipaddr1 = masked.IpAddrCtrl(self, -1, style=wx.TE_PROCESS_TAB) label_ipaddr2 = wx.StaticText(self, -1, "A restricted mask:") ipaddr2 = masked.IpAddrCtrl(self, -1, mask=" 10. 1.109.###") label_ipaddr3 = wx.StaticText( self, -1, """\ A control with restricted legal values: 10. (1|2) . (129..255) . (0..255)""") ipaddr3 = masked.Ctrl(self, -1, controlType=masked.controlTypes.IPADDR, mask=" 10. #.###.###") ipaddr3.SetFieldParameters( 0, validRegex="1|2", validRequired=False) # requires entry to match or not allowed # This allows any value in penultimate field, but colors anything outside of the range invalid: ipaddr3.SetFieldParameters(1, validRange=(129, 255), validRequired=False) labelNumerics = wx.StaticText( self, -1, """\ Here are some useful configurations of a masked.TextCtrl for integer and floating point input that still treat the control as a text control. (For a true numeric control, check out the masked.NumCtrl class!)""" ) labelNumerics.SetForegroundColour("Blue") label_intctrl1 = wx.StaticText( self, -1, """\ An integer entry control with shifting insert enabled:""") self.intctrl1 = masked.TextCtrl(self, -1, name='intctrl', mask="#{9}", formatcodes='_-,F>') label_intctrl2 = wx.StaticText( self, -1, """\ Right-insert integer entry:""") self.intctrl2 = masked.TextCtrl(self, -1, name='intctrl', mask="#{9}", formatcodes='_-,Fr') label_floatctrl = wx.StaticText( self, -1, """\ A floating point entry control with right-insert for ordinal:""") self.floatctrl = masked.TextCtrl(self, -1, name='floatctrl', mask="#{9}.#{2}", formatcodes="F,_-R", useParensForNegatives=False) self.floatctrl.SetFieldParameters( 0, formatcodes='r<', validRequired=True ) # right-insert, require explicit cursor movement to change fields self.floatctrl.SetFieldParameters( 1, defaultValue='00') # don't allow blank fraction label_numselect = wx.StaticText( self, -1, """\ <= Programmatically set the value of the float entry ctrl:""") numselect = wx.ComboBox(self, -1, choices=[ '', '111', '222.22', '-3', '54321.666666666', '-1353.978', '1234567', '-1234567', '123456789', '-123456789.1', '1234567890.', '-1234567890.1' ]) parens_check = wx.CheckBox( self, -1, "Use () to indicate negatives in above controls") gridCombos = wx.FlexGridSizer(cols=4, vgap=10, hgap=10) gridCombos.Add(label_statecode, 0, wx.ALIGN_LEFT) gridCombos.Add(statecode, 0, wx.ALIGN_LEFT) gridCombos.Add(label_fraction, 0, wx.ALIGN_LEFT) gridCombos.Add(fraction, 0, wx.ALIGN_LEFT) gridCombos.Add(label_statename, 0, wx.ALIGN_LEFT) gridCombos.Add(statename, 0, wx.ALIGN_LEFT) gridCombos.Add(label_code, 0, wx.ALIGN_LEFT) gridCombos.Add(code, 0, wx.ALIGN_LEFT) gridCombos.Add(label_selector, 0, wx.ALIGN_LEFT) hbox = wx.BoxSizer(wx.HORIZONTAL) hbox.Add(self.list_selector, 0, wx.ALIGN_LEFT) hbox.Add(wx.StaticText(self, -1, ' => '), 0, wx.ALIGN_LEFT) hbox.Add(self.dynamicbox, 0, wx.ALIGN_LEFT) gridCombos.Add(hbox, 0, wx.ALIGN_LEFT) gridIpAddrs = wx.FlexGridSizer(cols=4, vgap=10, hgap=15) gridIpAddrs.Add(label_ipaddr1, 0, wx.ALIGN_LEFT) gridIpAddrs.Add(ipaddr1, 0, wx.ALIGN_LEFT) gridIpAddrs.Add(label_ipaddr2, 0, wx.ALIGN_LEFT) gridIpAddrs.Add(ipaddr2, 0, wx.ALIGN_LEFT) gridIpAddrs.Add(label_ipaddr3, 0, wx.ALIGN_LEFT) gridIpAddrs.Add(ipaddr3, 0, wx.ALIGN_LEFT) gridNumerics = wx.FlexGridSizer(cols=4, vgap=10, hgap=10) gridNumerics.Add(label_intctrl1, 0, wx.ALIGN_LEFT) gridNumerics.Add(self.intctrl1, 0, wx.ALIGN_LEFT) gridNumerics.Add(label_intctrl2, 0, wx.ALIGN_RIGHT) gridNumerics.Add(self.intctrl2, 0, wx.ALIGN_LEFT) gridNumerics.Add(label_floatctrl, 0, wx.ALIGN_LEFT) gridNumerics.Add(self.floatctrl, 0, wx.ALIGN_LEFT) gridNumerics.Add(label_numselect, 0, wx.ALIGN_RIGHT) gridNumerics.Add(numselect, 0, wx.ALIGN_LEFT) self.sizer.Add(labelMaskedCombos, 0, wx.ALIGN_LEFT | wx.ALL, 5) self.sizer.Add(gridCombos, 0, wx.ALIGN_LEFT | wx.ALL, border=5) self.sizer.Add(wx.StaticLine(self, -1), 0, wx.EXPAND | wx.TOP | wx.BOTTOM, border=8) self.sizer.Add(labelIpAddrs, 0, wx.ALIGN_LEFT | wx.ALL, 5) self.sizer.Add(gridIpAddrs, 0, wx.ALIGN_LEFT | wx.ALL, border=5) self.sizer.Add(wx.StaticLine(self, -1), 0, wx.EXPAND | wx.TOP | wx.BOTTOM, border=8) self.sizer.Add(labelNumerics, 0, wx.ALIGN_LEFT | wx.ALL, 5) self.sizer.Add(gridNumerics, 0, wx.ALIGN_LEFT | wx.ALL, border=5) self.sizer.Add(parens_check, 0, wx.ALIGN_LEFT | wx.ALL, 5) self.SetSizer(self.sizer) self.SetAutoLayout(1) self.SetupScrolling() self.Bind(wx.EVT_COMBOBOX, self.OnComboSelection, id=fraction.GetId()) self.Bind(wx.EVT_COMBOBOX, self.OnComboSelection, id=code.GetId()) self.Bind(wx.EVT_COMBOBOX, self.OnComboSelection, id=statecode.GetId()) self.Bind(wx.EVT_COMBOBOX, self.OnComboSelection, id=statename.GetId()) self.Bind(wx.EVT_TEXT, self.OnTextChange, id=code.GetId()) self.Bind(wx.EVT_TEXT, self.OnTextChange, id=statecode.GetId()) self.Bind(wx.EVT_TEXT, self.OnTextChange, id=statename.GetId()) self.Bind(wx.EVT_COMBOBOX, self.OnListSelection, id=self.list_selector.GetId()) self.Bind(wx.EVT_TEXT, self.OnTextChange, id=self.intctrl1.GetId()) self.Bind(wx.EVT_TEXT, self.OnTextChange, id=self.intctrl2.GetId()) self.Bind(wx.EVT_TEXT, self.OnTextChange, id=self.floatctrl.GetId()) self.Bind(wx.EVT_COMBOBOX, self.OnNumberSelect, id=numselect.GetId()) self.Bind(wx.EVT_CHECKBOX, self.OnParensCheck, id=parens_check.GetId()) self.Bind(wx.EVT_TEXT, self.OnIpAddrChange, id=ipaddr1.GetId()) self.Bind(wx.EVT_TEXT, self.OnIpAddrChange, id=ipaddr2.GetId()) self.Bind(wx.EVT_TEXT, self.OnIpAddrChange, id=ipaddr3.GetId())