def __init__(self, parent, monitor): self.method = 'auto' self.nPoints = 8 assert isinstance(monitor, monitors.Monitor) self.useBits = monitor.getUseBits() wx.Dialog.__init__(self, parent, -1, _translate('Gamma Calibration'), style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER) mainSizer = wx.FlexGridSizer(cols=2, hgap=1, vgap=1) # select method of calib (auto, semi-auto, manual) # todo: make the input tablefor manual method self.methodChoiceBx = wx.Choice(self, -1, choices=['auto', 'semi']) self.methodChoiceBx.SetStringSelection('auto') wx.EVT_CHOICE(self, self.methodChoiceBx.GetId(), self.onMethodChange) self.ctrlUseBits = wx.CheckBox(self, -1, _translate('Use Bits++')) self.ctrlUseBits.SetValue(self.useBits) msg = _translate('Number of calibration points:') self.labelNPoints = wx.StaticText(self, -1, msg) self.ctrlNPoints = intctrl.IntCtrl(self, -1, value=8) msg = _translate('Screen number (primary is 1)') self.labelScrN = wx.StaticText(self, -1, msg) self.ctrlScrN = intctrl.IntCtrl(self, -1, value=1) msg = _translate('Patch size (fraction of screen):') self.labelStimSize = wx.StaticText(self, -1, msg) self.ctrlStimSize = wx.TextCtrl(self, -1, '0.3') pad = 5 mainSizer.Add((0, 0), 1, wx.ALL, pad) mainSizer.Add(self.methodChoiceBx, 1, wx.ALL, pad) mainSizer.Add(self.labelScrN, 1, wx.ALL, pad) mainSizer.Add(self.ctrlScrN, 1, wx.ALL, pad) mainSizer.Add(self.labelNPoints, 1, wx.ALL, pad) mainSizer.Add(self.ctrlNPoints, 1, wx.ALL, pad) mainSizer.Add(self.labelStimSize, 1, wx.ALL, pad) mainSizer.Add(self.ctrlStimSize, 1, wx.ALL, pad) mainSizer.Add((0, 0), 1, wx.ALL, pad) mainSizer.Add(self.ctrlUseBits, 1, wx.ALL, pad) btnOK = wx.Button(self, wx.ID_OK, _translate(" OK ")) btnOK.SetDefault() mainSizer.Add(btnOK, 1, wx.TOP | wx.BOTTOM | wx.ALIGN_RIGHT, pad) btnCANC = wx.Button(self, wx.ID_CANCEL, _translate(" Cancel ")) mainSizer.Add(btnCANC, 1, wx.TOP | wx.BOTTOM | wx.RIGHT | wx.ALIGN_RIGHT, pad) self.Center() # mainSizer.Fit(self) self.SetAutoLayout(True) self.SetSizerAndFit(mainSizer)
def init_UI(self): pnl = wx.Panel(self) pnl_sizer = wx.BoxSizer(wx.VERTICAL) hbox1 = wx.BoxSizer(wx.HORIZONTAL) hbox1.Add(wx.StaticText(pnl, label='Port')) self.port_input = intctrl.IntCtrl(pnl, min=1, max=2**16, value=8080) hbox1.Add(self.port_input) pnl_sizer.Add(hbox1) self.http_forward_checkbox = wx.CheckBox(pnl, label='HTTP Forward') pnl_sizer.Add(self.http_forward_checkbox) pnl.SetSizer(pnl_sizer) hbox2 = wx.BoxSizer(wx.HORIZONTAL) okButton = wx.Button(self, label='Start') closeButton = wx.Button(self, label='Cancel') hbox2.Add(okButton) hbox2.Add(closeButton, flag=wx.LEFT, border=5) vbox = wx.BoxSizer(wx.VERTICAL) vbox.Add(pnl, proportion=1, flag=wx.ALL | wx.EXPAND, border=5) vbox.Add(hbox2, flag=wx.ALIGN_CENTER | wx.TOP | wx.BOTTOM, border=10) self.SetSizer(vbox) okButton.Bind(wx.EVT_BUTTON, self.on_ok) closeButton.Bind(wx.EVT_BUTTON, self.OnClose)
def add_slider(self, initial_value=0, min_value=0, max_value=10): slider1 = wx.Slider(self, value=initial_value, minValue=min_value, maxValue=max_value, style=wx.SL_HORIZONTAL | wx.SL_MIN_MAX_LABELS) tc_qZone1 = intctrl.IntCtrl(self, 0, value=initial_value, size=wx.Size(20, 20), style=wx.TE_CENTER | wx.TE_PROCESS_ENTER) tc_qZone1.SetMaxLength(2) slider1.Bind( wx.EVT_SLIDER, lambda event: self.slider_update(event, slider1, tc_qZone1)) tc_qZone1.Bind( wx.EVT_TEXT_ENTER, lambda event: self.textctrl_slider_update( event, slider1, tc_qZone1)) slider_sizer = wx.BoxSizer(wx.HORIZONTAL) slider_sizer.Add(slider1, 1, wx.ALL | wx.EXPAND, 5) slider_sizer.Add(tc_qZone1, 0, wx.ALL, 5) self.topSizer.Add(slider_sizer, 0, wx.ALL | wx.EXPAND, 5) SLIDERS.append(slider1)
def __init__(self, parent): togwin.ChildToggableDialog.__init__(self, "Variable and command watcher", parent) # controls self.cmds_sizer_staticbox = wx.StaticBox(self, -1, "Command watches") self.refresh_sizer_staticbox = wx.StaticBox(self, -1, "Refresh settings") self.vars_sizer_staticbox = wx.StaticBox(self, -1, "Variable watches") self.list_vars = wx.ListCtrl(self, -1, style=wx.LC_REPORT|wx.LC_HRULES|wx.LC_VRULES| \ wx.LC_SORT_ASCENDING|wx.SUNKEN_BORDER) self.label_filter = wx.StaticText(self, -1, "Filter:") self.text_filter = wx.TextCtrl(self, -1, "") self.list_cmds = wx.ListCtrl(self, -1, style=wx.LC_REPORT|wx.LC_EDIT_LABELS|wx.LC_HRULES|wx.LC_VRULES| \ wx.SUNKEN_BORDER) self.button_add_cmd = wx.Button(self, -1, "Add command watch") self.button_del_cmd = wx.Button(self, -1, "Delete command watch") self.check_refresh = wx.CheckBox(self, -1, "Refresh all watches each") self.int_refresh = intctrl.IntCtrl(self, size=(50, -1), style=wx.TE_RIGHT) self.label_milliseconds = wx.StaticText(self, -1, "milliseconds") self.button_refresh = wx.Button(self, -1, "&Refresh all watches now") # refresh timer self.timer_refresh = wx.PyTimer(self.__refresh_values) self.__set_properties() self.__do_layout() self.__bind_events()
def __init__(self, parent, mod_list, style): scrolledpanel.ScrolledPanel.__init__(self, parent, style=style) self.mod_list = mod_list self.log_server = servers.get_log_server() # module enable controls self.check_box_mod_list = [] self.int_ctrl_mod_list = [] self.log_group_mod_list = [] for mod in mod_list: check_box = wx.CheckBox(self, -1, self.log_server.getdescription(mod), name=mod) colour = get_colour_for_log_with_index(self.mod_list.index(mod)) check_box.SetForegroundColour(colour) self.check_box_mod_list.append(check_box) int_ctrl = intctrl.IntCtrl(parent=self, limited=True, value=0, min=0, max=99, size=(25, -1), style=wx.TE_RIGHT, name=mod) self.int_ctrl_mod_list.append(int_ctrl) log_group_button = wx.Button(self, -1, "Edit...", style=wx.BU_EXACTFIT, name=mod) self.log_group_mod_list.append(log_group_button) self.set_properties() self.__do_layout() self.__bind_events()
def __init__(self, parent, wxId, id): base.Widget.__init__(self, intctrl.IntCtrl(parent, wxId, limited=False, allow_none=True)) self.widgetId = id # Clear the widget by default. self.getWxWidget().SetValue(None) # The default font looks the best. self.getWxWidget().SetFont(wx.NORMAL_FONT) # If True, a value-changed notification will cause the field # to change. self.reactToNotify = True # We want focus notifications. self.setFocusId(id) # Listen for changes. intctrl.EVT_INT(parent, wxId, self.onChange) # Listen to value changes. self.addValueChangeListener() self.addProfileChangeListener()
def __init__(self, *args, **kwds): PrefsPanel.__init__(self, *args, **kwds) self.staticbox_angle_group = wx.StaticBox(self, -1, "Angle snapping") self.staticbox_size_group = wx.StaticBox(self, -1, "Size snapping") self.staticbox_grid_group = wx.StaticBox(self, -1, "Grid") self.label_grid_1 = wx.StaticText(self, -1, "Minor grid line every") self.float_grid_cell_size = floatctrl.FloatCtrl(self, size=wx.Size(40, -1), style=wx.TE_RIGHT) self.label_grid_2 = wx.StaticText(self, -1, "world units") self.label_grid_3 = wx.StaticText(self, -1, "Major grid line every") self.int_grid_line_grouping = intctrl.IntCtrl(self, size=wx.Size(40, -1), style=wx.TE_RIGHT) self.label_grid_4 = wx.StaticText(self, -1, "minor grid lines") self.label_grid_5 = wx.StaticText(self, -1, "Minor grid line color") self.color_grid_minor = wx.lib.colourselect.ColourSelect(self, -1) self.label_grid_6 = wx.StaticText(self, -1, "Major grid line color") self.color_grid_major = wx.lib.colourselect.ColourSelect(self, -1) self.label_angle_1 = wx.StaticText(self, -1, "Angle snap") self.float_angle = floatctrl.FloatCtrl(self, size=wx.Size(40, -1), style=wx.TE_RIGHT) self.label_angle_2 = wx.StaticText(self, -1, "degrees") self.label_size_1 = wx.StaticText(self, -1, "Size snap") self.float_size = floatctrl.FloatCtrl(self, size=wx.Size(40, -1), style=wx.TE_RIGHT) self.label_size_2 = wx.StaticText(self, -1, "world units") self.__set_properties() self.__do_layout() self.__bind_events()
def __init__(self, parent, rate=None, out_dir=None, in_dir=None): super(FFmpegConvertDialog, self).__init__(parent=parent, title="pyjam Audio Converter", style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER) self.in_dir = in_dir self.game_rate = intctrl.IntCtrl(self) game_rate_text = wx.StaticText(self, label="Audio rate") if rate is not None: self.game_rate.SetValue(rate) self.volume = wx.SpinCtrl(self, initial=85) volume_text = wx.StaticText(self, label="Volume %") self.in_picker = wx.FilePickerCtrl(self, style=wx.FLP_USE_TEXTCTRL) in_picker_text = wx.StaticText(self, label="Input file names (manually changing them has no effect)") self.in_files = [] # the dumbest thing i've done all year (i'm overriding the controls of the PickerBase) for child in self.in_picker.GetChildren(): if isinstance(child, wx.Button): child.Bind(wx.EVT_BUTTON, self.browse) self.out_dir = wx.DirPickerCtrl(self, name="Output directory") out_dir_text = wx.StaticText(self, label="Output directory") if out_dir is not None: self.out_dir.SetPath(out_dir) top_sizer = wx.BoxSizer(wx.VERTICAL) top_row = wx.BoxSizer(wx.HORIZONTAL) rate_sizer = wx.BoxSizer(wx.VERTICAL) vol_sizer = wx.BoxSizer(wx.VERTICAL) dir_sizer = wx.BoxSizer(wx.VERTICAL) button_sizer = self.CreateButtonSizer(wx.OK | wx.CANCEL) rate_sizer.Add(game_rate_text, 0, wx.ALL ^ wx.BOTTOM | wx.ALIGN_LEFT, 5) rate_sizer.Add(self.game_rate, 0, wx.ALL | wx.ALIGN_LEFT, 5) vol_sizer.Add(volume_text, 0, wx.ALL ^ wx.BOTTOM | wx.ALIGN_LEFT, 5) vol_sizer.Add(self.volume, 0, wx.ALL | wx.ALIGN_LEFT, 5) top_row.Add(rate_sizer) top_row.Add(vol_sizer) dir_sizer.Add(in_picker_text, 0, wx.ALL ^ wx.LEFT | wx.ALIGN_LEFT, 3) dir_sizer.Add(self.in_picker, 0, wx.ALL ^ wx.LEFT ^ wx.TOP | wx.ALIGN_LEFT | wx.EXPAND, 5) dir_sizer.Add(out_dir_text, 0, wx.ALL ^ wx.LEFT | wx.ALIGN_LEFT, 3) dir_sizer.Add(self.out_dir, 0, wx.ALL ^ wx.LEFT ^ wx.TOP | wx.ALIGN_LEFT | wx.EXPAND, 5) top_sizer.Add(top_row) top_sizer.Add(dir_sizer, 1, wx.ALL | wx.EXPAND | wx.ALIGN_TOP, 5) top_sizer.Add(button_sizer, 0, wx.ALL | wx.ALIGN_CENTER, 5) self.Bind(wx.EVT_BUTTON, self.on_ok, id=wx.ID_OK) self.Bind(wx.EVT_BUTTON, self.on_cancel, id=wx.ID_CANCEL) self.converter = None self.progress_dialog = None self.num_songs = 0 self.SetSizer(top_sizer) # self.SetSize(400, 250) self.Center() self.ShowModal()
class ireLogCtrl(wx.Panel): def __init__(self, parent, id, title='', style=wx.TE_READONLY | wx.HSCROLL | wx.TE_MULTILINE | wx.TE_RICH): wx.Panel.__init__(self, parent, id) self.SetBackgroundColour(wx.BLUE) Font = wx.Font(10, wx.FONTFAMILY_ROMAN, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL) self.Text = wx.StaticText(self, -1, title, style=wx.ALIGN_LEFT) self.Text.SetForegroundColour(wx.WHITE) self.Text.SetFont(Font) self.EnableBox = wx.CheckBox(self, -1, 'Enabled') self.EnableBox.SetForegroundColour(wx.WHITE) self.EnableBox.SetFont(Font) self.ChannelMaskText = wx.StaticText(self, -1, 'Channel Mask: ') self.ChannelMaskText.SetForegroundColour(wx.WHITE) self.ChannelMaskText.SetFont(Font) self.Bind(EVT_UPDATE_LOG, self.OnUpdateLog) Mask = CMN_LOG_ALLOW_ALL if ireEmbedded: Mask = ireLogger.GetMask() # use the IntCtrl control to get the log mask. Since this is now a mask, # rather than a log level, it would make more sense to have a different # interface (e.g., check boxes to enable/disable each type of log message). self.ChannelMask= intctrl.IntCtrl(self, -1, Mask, min=CMN_LOG_ALLOW_NONE, max=CMN_LOG_ALLOW_ALL, limited=True) if not ireEmbedded: self.EnableBox.Enable(False) self.ChannelMaskText.Enable(False) self.ChannelMask.Enable(False) self.HeaderSizer = wx.BoxSizer(wx.HORIZONTAL) self.HeaderSizer.Add(self.Text, 0, wx.ALIGN_LEFT) self.HeaderSizer.Add((0,0),3) # Add a stretchable space self.HeaderSizer.Add(self.EnableBox, 0, wx.ALIGN_LEFT) self.HeaderSizer.Add((0,0),3) # Add a stretchable space self.HeaderSizer.Add(self.ChannelMaskText, 0, wx.ALIGN_RIGHT) self.HeaderSizer.Add(self.ChannelMask, 0, wx.ALIGN_LEFT) self.HeaderSizer.Add((0,0),1) # Add a smaller stretchable space self.logText = wx.TextCtrl(self, -1, style=style) self.LogSizer = wx.BoxSizer(wx.VERTICAL) self.LogSizer.Add(self.HeaderSizer, 0, wx.EXPAND) self.LogSizer.Add(self.logText, 1, wx.EXPAND) self.SetSizer(self.LogSizer) self.Bind(wx.EVT_CHECKBOX, self.OnEnableBox, self.EnableBox) self.Bind(intctrl.EVT_INT, self.OnChannelMask, self.ChannelMask)
def __init__(self, parent, text1, text2, title): wx.Dialog.__init__(self, parent, title=title) # Draw the window lbl1 = wx.StaticText(self, label=text1) lbl2 = wx.StaticText(self, label=text2) self.txt1 = lib.IntCtrl(self, value=10, min = 2, max=30, limited = False, oob_color=wx.Colour(255, 50, 50)) self.txt2 = lib.IntCtrl(self, value=3, min = 2, max=30, limited = False, oob_color=wx.Colour(255, 50, 50)) sizer1 = wx.BoxSizer(wx.HORIZONTAL) sizer1.Add(lbl1, 0, wx.ALIGN_LEFT) sizer1.AddStretchSpacer(1) sizer1.Add(self.txt1, 1, wx.TOP | wx.ALIGN_RIGHT) sizer2 = wx.BoxSizer(wx.HORIZONTAL) sizer2.Add(lbl2, 0, wx.ALIGN_LEFT) sizer2.AddStretchSpacer(1) sizer2.Add(self.txt2, 1, wx.TOP | wx.ALIGN_RIGHT) sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(sizer1, 0, wx.TOP|wx.LEFT|wx.RIGHT|wx.EXPAND) sizer.AddStretchSpacer(1) sizer.Add(sizer2, 0, wx.TOP | wx.LEFT | wx.RIGHT | wx.EXPAND) ok = wx.Button(self, label="Ok") cancel = wx.Button(self, label="Cancel") sizer3 = wx.BoxSizer(wx.HORIZONTAL) sizer3.AddStretchSpacer(1) sizer3.Add(cancel, 0, wx.ALIGN_RIGHT) sizer3.Add(ok, 0, wx.ALIGN_RIGHT) sizer.Add(sizer3, 0, wx.ALIGN_RIGHT) self.Bind(wx.EVT_BUTTON, self.OnOk, ok) self.Bind(wx.EVT_BUTTON, self.OnCancel, cancel) self.SetSizer(sizer) sizer.Layout()
def _draw_controls(self): self.gradient_slider = GradientSlider(self, -1, self.min_range, self.max_range, self.minimun, self.maximun, self.colour) self.spin_min = intctrl.IntCtrl(self, size=(40, 20), style=wx.TE_PROCESS_ENTER) self.spin_min.SetValue(self.minimun) if sys.platform != 'win32': self.spin_min.SetWindowVariant(wx.WINDOW_VARIANT_SMALL) self.spin_max = intctrl.IntCtrl(self, size=(40, 20), style=wx.TE_PROCESS_ENTER) self.spin_max.SetValue(self.maximun) if sys.platform != 'win32': self.spin_max.SetWindowVariant(wx.WINDOW_VARIANT_SMALL) sizer = wx.BoxSizer(wx.HORIZONTAL) sizer.Add(self.spin_min, 0, wx.EXPAND | wx.RIGHT, 2) sizer.Add(self.gradient_slider, 1, wx.EXPAND) sizer.Add(self.spin_max, 0, wx.EXPAND | wx.LEFT, 2) self.sizer.Add(sizer, 1, wx.EXPAND)
def __init__(self, *args, **kwds): PrefsPanel.__init__(self, *args, **kwds) self.label_terrain_material = wx.StaticText( self, -1, "Terrain material resolution") self.int_terrain_material = intctrl.IntCtrl(self, -1, limited=True, value=32, min=1, max=1000, size=wx.Size(40, -1), style=wx.TE_RIGHT) self.__set_properties() self.__do_layout() self.__bind_events()
def __init__(self, parent): togwin.ChildToggableDialog.__init__( self, "Variable monitor", parent ) self.stats_enabled = False self.win_graphs = wx.ScrolledWindow(self, -1, style=wx.SUNKEN_BORDER|wx.TAB_TRAVERSAL) self.label_current = wx.StaticText(self, -1, "Current graph stats:") self.combo_current = wx.ComboBox(self, -1, style=wx.CB_READONLY) self.label_min = wx.StaticText(self, -1, "Min:") self.float_min = wx.StaticText(self, -1, "", size=(50,-1)) self.label_max = wx.StaticText(self, -1, "Max:") self.float_max = wx.StaticText(self, -1, "", size=(50,-1)) self.label_mean = wx.StaticText(self, -1, "Mean:") self.float_mean = wx.StaticText(self, -1, "", size=(50,-1)) self.label_last = wx.StaticText(self, -1, "Last:") self.float_last = wx.StaticText(self, -1, "", size=(50,-1)) self.line1 = wx.StaticLine(self, -1, style=wx.LI_HORIZONTAL) self.label_var = wx.StaticText(self, -1, "Variable to monitorize:") self.choice_var = wx.ComboBox(self, -1, style=wx.CB_READONLY|wx.CB_SORT) self.button_add = wx.Button(self, -1, "Add variable") self.line2 = wx.StaticLine(self, -1, style=wx.LI_HORIZONTAL) self.label_period = wx.StaticText(self, -1, "Global history period:") self.int_period = intctrl.IntCtrl( self, value=10, min=1, max=99, limited=True, size=wx.Size(40,-1), style=wx.TE_RIGHT ) self.label_seconds = wx.StaticText(self, -1, "seconds") self.line3 = wx.StaticLine(self, -1, style=wx.LI_VERTICAL) self.button_show = wx.ToggleButton(self, -1, "Show graphs") self.button_fullscreen = wx.ToggleButton(self, -1, "Fullscreen") self.graphs = [] self.__set_properties() self.__do_layout() self.__bind_events() # Add current graph found in the monitor server monitor_server = servers.get_monitor_server() for i in range( monitor_server.getnumgraphs() ): self.__add_graph_bar( monitor_server.getgraphvarname(i) ) # Timer to update the current graph stats self.stats_timer = wx.PyTimer(self.update_current_stats) self.stats_timer.Start(50)
def __init__(self, name, pref_item, size, parent=None): ''' The constructor. Parameters ---------- name : String The name of the field. It is used as the field label. pref_item : :class:`~psysmon.core.preferences.PrefItem` The key of the base option edited by this field. size : tuple (width, height) The size of the field. parent : The parent wxPyton window of this field. ''' Field.__init__(self, parent=parent, name=name, pref_item=pref_item, size=size) # Create the field label. self.labelElement = StaticText(parent=self, ID=wx.ID_ANY, label=self.label, style=wx.ALIGN_RIGHT) # Create the field spincontrol. self.controlElement = intctrl.IntCtrl(self, wx.ID_ANY) # Add the gui elements to the field. self.addLabel(self.labelElement) self.addControl(self.controlElement) # Set the value of the control element. self.setControlElementValue() # Bind the events. self.Bind(intctrl.EVT_INT, self.onValueChange, self.controlElement)
def add_cell(self, value): font = wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.NORMAL) if value == levels.CELL_NONE: cell = wx.StaticText(self.puzzle_panel, style=wx.ALIGN_CENTRE_HORIZONTAL, label="") elif value == levels.CELL_EMPTY: cell = intctrl.IntCtrl(self.puzzle_panel, style=wx.TE_CENTRE, limited=True, min=1, allow_none=True, value=None) else: cell = wx.StaticText(self.puzzle_panel, style=wx.ALIGN_CENTRE_HORIZONTAL | wx.BORDER_SIMPLE, label=value) cell.SetFont(font) cell.SetMinSize(wx.Size(30, 30)) self.puzzle_sizer.Add(cell, 0, wx.EXPAND)
def __init__(self, parent, var_name, parent_graphs): wx.PyControl.__init__(self, parent, style=wx.NO_BORDER|wx.TAB_TRAVERSAL) self.var_name = var_name self.parent_graphs = parent_graphs parent_graphs.append(self) # controls self.checkbox_enable = wx.CheckBox(self, -1, var_name) self.color = wx.lib.colourselect.ColourSelect(self, -1) self.label_frequency = wx.StaticText(self, -1, "Sampling frequency:") self.int_frequency = intctrl.IntCtrl( self, value=1000, min=1, max=100000, limited=True, size=wx.Size(40,-1), style=wx.TE_RIGHT ) self.label_milliseconds = wx.StaticText(self, -1, "milliseconds") self.slider_smooth = floatslider.FloatSlider( self, -1, "Smoothness:", 0.5, 0.0, 1.0, precision=1000.0 ) self.button_remove = wx.Button(self, -1, "Remove", style=wx.BU_EXACTFIT) self.__set_properties() self.__do_layout() self.__bind_events()
def __DoLayout(self): """Layout the controls""" msizer = wx.BoxSizer(wx.VERTICAL) sbox = wx.StaticBox(self, label=_("Text Colors")) boxsz = wx.StaticBoxSizer(sbox, wx.VERTICAL) # Launch Config cfg = Profile_Get(handlers.CONFIG_KEY, default=dict()) # Actions Configuration clear_cb = wx.CheckBox(self, ID_AUTOCLEAR, _("Automatically clear output buffer between runs")) clear_cb.SetValue(cfg.get('autoclear', False)) error_cb = wx.CheckBox(self, ID_ERROR_BEEP, _("Audible feedback when errors are detected")) error_cb.SetValue(cfg.get('errorbeep', False)) wrap_cb = wx.CheckBox(self, ID_WRAP_OUTPUT, _("Wrap lines in output buffer")) wrap_cb.SetValue(cfg.get('wrapoutput', False)) buff_sz = wx.BoxSizer(wx.HORIZONTAL) buff_sz.Add(wx.StaticText(self, label=_("Line Buffering:")), 0, wx.ALIGN_CENTER_VERTICAL) self._bufftxt = intctrl.IntCtrl(self, min=0, max=50000, allow_none=True) self._bufftxt.ToolTip = wx.ToolTip(_("0-50000 (0 unlimited)")) lbufcfg = max(0, cfg.get('linebuffer', DEFAULT_LINEBUFFER)) self._bufftxt.Value = unicode(lbufcfg) buff_sz.Add(self._bufftxt, 0, wx.ALL, 5) # Colors colors = dict() for btn in COLOR_MAP.iteritems(): cbtn = eclib.ColorSetter(self, btn[0], color=cfg.get(btn[1], wx.WHITE)) colors[btn[0]] = cbtn flexg = wx.FlexGridSizer(5, 5, 5, 5) flexg.AddGrowableCol(1, 1) flexg.AddGrowableCol(3, 1) flexg.AddMany([# First Row ((5, 5), 0), ((5, 5), 1), (wx.StaticText(self, label=_("Foreground")), 0, wx.ALIGN_CENTER), ((5, 5), 1), (wx.StaticText(self, label=_("Background")), 0, wx.ALIGN_CENTER), # Second Row (wx.StaticText(self, label=_("Plain Text") + u":"), 0, wx.ALIGN_CENTER_VERTICAL), ((5, 5), 1), (colors[ID_DEF_FORE], 0, wx.EXPAND), ((5, 5), 1), (colors[ID_DEF_BACK], 0, wx.EXPAND), # Third Row (wx.StaticText(self, label=_("Error Text") + u":"), 0, wx.ALIGN_CENTER_VERTICAL), ((5, 5), 1), (colors[ID_ERR_FORE], 0, wx.EXPAND), ((5, 5), 1), (colors[ID_ERR_BACK], 0, wx.EXPAND), # Fourth Row (wx.StaticText(self, label=_("Info Text") + u":"), 0, wx.ALIGN_CENTER_VERTICAL), ((5, 5), 1), (colors[ID_INFO_FORE], 0, wx.EXPAND), ((5, 5), 1), (colors[ID_INFO_BACK], 0, wx.EXPAND), # Fifth Row (wx.StaticText(self, label=_("Warning Text") + u":"), 0, wx.ALIGN_CENTER_VERTICAL), ((5, 5), 1), (colors[ID_WARN_FORE], 0, wx.EXPAND), ((5, 5), 1), (colors[ID_WARN_BACK], 0, wx.EXPAND)]) boxsz.Add(flexg, 0, wx.EXPAND) # Layout msizer.AddMany([((5, 5), 0), (wx.StaticText(self, label=("Actions") + u":"), 0), ((5, 5), 0), (clear_cb, 0), ((5, 5), 0), (error_cb, 0), ((5, 5), 0), (wrap_cb, 0), ((5, 5), 0), (buff_sz, 0), ((10, 10), 0), (wx.StaticLine(self), 0, wx.EXPAND), ((10, 10), 0), (boxsz, 1, wx.EXPAND)]) hsizer = wx.BoxSizer(wx.HORIZONTAL) hsizer.AddMany([((5, 5), 0), (msizer, 1, wx.EXPAND), ((5, 5), 0)]) self.SetSizer(hsizer)
def test_canSetValueToNone(self): t1 = IC.IntCtrl(self.frame, allow_none=True, value=None) assert t1.GetValue() is None t2 = IC.IntCtrl(self.frame, allow_none=True) t2.SetValue(None) assert t2.GetValue() is None
def __init__(self, parent, id=wx.ID_ANY): wx.Dialog.__init__(self, parent, id, "Advanced Setup", style=wx.DEFAULT_DIALOG_STYLE | wx.TAB_TRAVERSAL) ''' Impinj.TagPopulation = None # Size of a group to read. Impinj.ReceiverSensitivity = None Impinj.TransmitPower = None Impinj.ConnectionTimeoutSeconds = 1 # Interval for connection timeout Impinj.KeepaliveSeconds = 2 # Interval to request a Keepalive message Impinj.RepeatSeconds = 2 # Interval in which a tag is considered a repeat read. Impinj.ProcessingMethod = QuadraticRegressionMethod Impinj.AntennaChoice = MostReadsChoice ''' bs = wx.GridBagSizer(vgap=5, hgap=5) row = 0 border = 8 bs.Add(wx.StaticText(self, label='Advanced Reader Options:'), pos=(0, 0), span=(1, 2), border=border, flag=wx.ALL) row += 1 bs.Add(wx.StaticText(self, label='Report Method'), pos=(row, 0), span=(1, 1), border=border, flag=wx.LEFT | wx.TOP | wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL) self.ReportMethod = wx.Choice(self, choices=MethodNames) self.ReportMethod.SetSelection(Impinj.ProcessingMethod) bs.Add(self.ReportMethod, pos=(row, 1), span=(1, 1), border=border, flag=wx.TOP | wx.ALIGN_CENTER_VERTICAL) sb = wx.StaticBox(self, label='QR Only Options') sbSizer = wx.StaticBoxSizer(sb, wx.VERTICAL) self.RemoveOutliers = wx.CheckBox(self, label='Remove Outliers') self.RemoveOutliers.SetValue(Impinj.RemoveOutliers) sbSizer.Add(self.RemoveOutliers, flag=wx.ALL, border=2) hs = wx.BoxSizer(wx.HORIZONTAL) hs.Add(wx.StaticText(self, label='Antenna Choice'), flag=wx.ALIGN_CENTER_VERTICAL | wx.LEFT, border=4) self.AntennaChoice = wx.Choice(self, choices=AntennaChoiceNames) self.AntennaChoice.SetSelection(Impinj.AntennaChoice) hs.Add(self.AntennaChoice, flag=wx.ALIGN_CENTER_VERTICAL | wx.LEFT, border=4) sbSizer.Add(hs, flag=wx.ALL, border=2) bs.Add(sbSizer, pos=(row, 2), span=(1, 1), border=border, flag=wx.TOP) row += 1 bs.Add(wx.StaticText( self, label='\n'.join([ '**Quad Regression**: return an estimated time when the tag is closest to an antenna by combining', 'multiple reads and signal strength (high accuracy, high processing).', 'The Antenna Choice option controls which antenna is selected for the regression.' 'Recommended for high-speed finishes (cycling).', '**Strongest Read**: return the time of the strongest read signal (lower accuracy, low processing).', 'Recommended for slow finishes with highly variable tag alignment reads (running).', '**First Read Time**: return the first time the tag is read by any antenna (lowest accuracy, lowest processing).', 'Recommended for extremely large fields (Gran Fondo).', ])), pos=(row, 1), span=(1, 2), border=border, flag=wx.TOP | wx.RIGHT | wx.ALIGN_CENTER_VERTICAL) row += 1 bs.Add(wx.StaticLine(self), pos=(row, 0), span=(1, 3), flag=wx.EXPAND) row += 1 bs.Add(wx.StaticText(self, label='Tag Population'), pos=(row, 0), span=(1, 1), border=border, flag=wx.LEFT | wx.TOP | wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL) self.TagPopulation = intctrl.IntCtrl(self, min=0, max=500, limited=True, allow_none=True, value=Impinj.TagPopulation, size=(100, -1), style=wx.TE_RIGHT) bs.Add(self.TagPopulation, pos=(row, 1), span=(1, 1), border=border, flag=wx.TOP) bs.Add(wx.StaticText( self, label= 'Expected number of tags in range of the antennas at the finish line.\nSuggestions: 4=TimeTrial/MTB, 16=Small Criterium/Road Race, 100=Large Criterium/Road Race.' ), pos=(row, 2), span=(1, 1), border=border, flag=wx.TOP | wx.RIGHT | wx.ALIGN_CENTER_VERTICAL) row += 1 bs.Add(wx.StaticLine(self), pos=(row, 0), span=(1, 3), flag=wx.EXPAND) row += 1 bs.Add(wx.StaticText(self, label='Transmit Power'), pos=(row, 0), span=(1, 1), border=border, flag=wx.LEFT | wx.TOP | wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL) self.TransmitPower = intctrl.IntCtrl(self, min=0, max=10000, limited=True, allow_none=True, value=Impinj.TransmitPower, size=(100, -1), style=wx.TE_RIGHT) bs.Add(self.TransmitPower, pos=(row, 1), span=(1, 1), border=border, flag=wx.TOP) bs.Add(wx.StaticText( self, label='Check reader for details. Leave blank for full power.'), pos=(row, 2), span=(1, 1), border=border, flag=wx.TOP | wx.RIGHT | wx.ALIGN_CENTER_VERTICAL) row += 1 bs.Add(wx.StaticText(self, label='Receiver Sensitivity'), pos=(row, 0), span=(1, 1), border=border, flag=wx.LEFT | wx.TOP | wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL) self.ReceiverSensitivity = intctrl.IntCtrl( self, min=0, max=500, limited=True, allow_none=True, value=Impinj.ReceiverSensitivity, size=(100, -1), style=wx.TE_RIGHT) bs.Add(self.ReceiverSensitivity, pos=(row, 1), span=(1, 1), border=border, flag=wx.TOP) bs.Add(wx.StaticText( self, label='Check reader for details. Leave blank for full sensitivity.' ), pos=(row, 2), span=(1, 1), border=border, flag=wx.TOP | wx.RIGHT | wx.ALIGN_CENTER_VERTICAL) row += 1 bs.Add(wx.StaticLine(self), pos=(row, 0), span=(1, 3), flag=wx.EXPAND) row += 1 bs.Add(wx.StaticText(self, label='Connection Timeout Seconds'), pos=(row, 0), span=(1, 1), border=border, flag=wx.LEFT | wx.TOP | wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL) self.ConnectionTimeoutSeconds = intctrl.IntCtrl( self, min=1, max=60, limited=True, value=Impinj.ConnectionTimeoutSeconds, size=(100, -1), style=wx.TE_RIGHT) bs.Add(self.ConnectionTimeoutSeconds, pos=(row, 1), span=(1, 1), border=border, flag=wx.TOP) bs.Add(wx.StaticText( self, label='Maximum seconds to wait for a reader response.'), pos=(row, 2), span=(1, 1), border=border, flag=wx.TOP | wx.RIGHT | wx.ALIGN_CENTER_VERTICAL) row += 1 bs.Add(wx.StaticText(self, label='Keepalive Seconds'), pos=(row, 0), span=(1, 1), border=border, flag=wx.LEFT | wx.TOP | wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL) self.KeepaliveSeconds = intctrl.IntCtrl(self, min=1, max=60, limited=True, value=Impinj.KeepaliveSeconds, size=(100, -1), style=wx.TE_RIGHT) bs.Add(self.KeepaliveSeconds, pos=(row, 1), span=(1, 1), border=border, flag=wx.TOP) bs.Add(wx.StaticText( self, label= 'Frequency of "heartbeat" messages indicating the reader is still connected.' ), pos=(row, 2), span=(1, 1), border=border, flag=wx.TOP | wx.RIGHT | wx.ALIGN_CENTER_VERTICAL) row += 1 bs.Add(wx.StaticText(self, label='Repeat Seconds'), pos=(row, 0), span=(1, 1), border=border, flag=wx.LEFT | wx.TOP | wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL) self.RepeatSeconds = intctrl.IntCtrl(self, min=1, max=120, limited=True, value=Impinj.RepeatSeconds, size=(100, -1), style=wx.TE_RIGHT) bs.Add(self.RepeatSeconds, pos=(row, 1), span=(1, 1), border=border, flag=wx.TOP) bs.Add(wx.StaticText( self, label= 'Interval in which multiple tag reads are considered "repeats" and not reported.' ), pos=(row, 2), span=(1, 1), border=border, flag=wx.TOP | wx.RIGHT | wx.ALIGN_CENTER_VERTICAL) self.fields = [ 'ConnectionTimeoutSeconds', 'KeepaliveSeconds', 'RepeatSeconds', 'TagPopulation', 'TransmitPower', 'ReceiverSensitivity', 'RemoveOutliers', ] row += 1 bs.Add(wx.StaticLine(self), pos=(row, 0), span=(1, 3), flag=wx.EXPAND) row += 1 self.playSoundsCheckbox = wx.CheckBox(self, label='Beep on Read') self.playSoundsCheckbox.SetValue(Utils.playBell) bs.Add(self.playSoundsCheckbox, pos=(row, 1), span=(1, 3), border=border, flag=wx.TOP | wx.LEFT | wx.RIGHT) row += 1 bs.Add(wx.StaticLine(self), pos=(row, 0), span=(1, 3), flag=wx.EXPAND) row += 1 self.restoreDefaultButton = wx.Button(self, label='Restore Defaults') self.restoreDefaultButton.Bind(wx.EVT_BUTTON, self.onRestoreDefault) bs.Add(self.restoreDefaultButton, pos=(row, 0), span=(1, 3), border=border, flag=wx.TOP | wx.RIGHT | wx.ALIGN_CENTER) row += 1 bs.Add(wx.StaticText( self, label='Reminder: Press "Reset" for these changes to take effect.'), pos=(row, 0), span=(1, 3), border=border, flag=wx.TOP | wx.RIGHT | wx.ALIGN_RIGHT) self.okBtn = wx.Button(self, wx.ID_OK) self.Bind(wx.EVT_BUTTON, self.onOK, self.okBtn) self.cancelBtn = wx.Button(self, wx.ID_CANCEL) self.Bind(wx.EVT_BUTTON, self.onCancel, self.cancelBtn) row += 1 hs = wx.BoxSizer(wx.HORIZONTAL) hs.Add(self.okBtn, border=border, flag=wx.ALL) self.okBtn.SetDefault() hs.Add(self.cancelBtn, border=border, flag=wx.ALL) bs.Add(hs, pos=(row, 0), span=(1, 3), flag=wx.ALIGN_RIGHT) self.SetSizerAndFit(bs) bs.Fit(self) self.CentreOnParent(wx.BOTH) self.SetFocus()
def __init__(self, parent, id=wx.ID_ANY, size=(200, 200)): super(Configure, self).__init__(parent, id, size=size) self.SetBackgroundColour(wx.WHITE) self.SetDoubleBuffered(True) self.inRefresh = False #----------------------------------------------------------------------- self.vbs = wx.BoxSizer(wx.VERTICAL) self.gbs = wx.GridBagSizer(4, 4) #-------------------------------------------------------------------------------------------------------------- label = wx.StaticText(self, label=u'Race Name:') self.gbs.Add(label, pos=(0, 0), flag=wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL | wx.LEFT, border=16) ctrl = wx.TextCtrl(self, style=wx.TE_PROCESS_ENTER) ctrl.Bind(wx.EVT_TEXT, self.onChange) self.gbs.Add(ctrl, pos=(0, 1), span=(1, 5), flag=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL | wx.EXPAND) self.nameLabel = label self.nameCtrl = ctrl hs = wx.BoxSizer(wx.HORIZONTAL) label = wx.StaticText(self, label=u'Date:') hs.Add(label, flag=wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL | wx.LEFT, border=16) ctrl = wx.adv.DatePickerCtrl(self, style=wx.adv.DP_DROPDOWN | wx.adv.DP_SHOWCENTURY, size=(132, -1)) ctrl.Bind(wx.adv.EVT_DATE_CHANGED, self.onChange) hs.Add(ctrl, flag=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL | wx.LEFT, border=4) self.dateLabel = label self.dateCtrl = ctrl label = wx.StaticText(self, label=u'Communiqu\u00E9:') hs.Add(label, flag=wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL | wx.LEFT, border=16) ctrl = wx.TextCtrl(self, style=wx.TE_PROCESS_ENTER) ctrl.Bind(wx.EVT_TEXT, self.onChange) hs.Add(ctrl, flag=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL | wx.LEFT, border=4) self.communiqueLabel = label self.communiqueCtrl = ctrl self.gbs.Add(hs, pos=(0, 6), span=(1, 3)) #-------------------------------------------------------------------------------------------------------------- label = wx.StaticText(self, label=u'Category:') self.gbs.Add(label, pos=(1, 0), flag=wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL | wx.LEFT, border=16) ctrl = wx.TextCtrl(self, style=wx.TE_PROCESS_ENTER) ctrl.Bind(wx.EVT_TEXT, self.onChange) self.gbs.Add(ctrl, pos=(1, 1), span=(1, 5), flag=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL | wx.EXPAND) self.categoryLabel = label self.categoryCtrl = ctrl label = wx.StaticText(self, label=u'Rank By:', style=wx.ALIGN_RIGHT) self.gbs.Add(label, pos=(1, 6), flag=wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL | wx.LEFT, border=16) ctrl = wx.Choice( self, choices=[ u'Points then Finish Order', u'Laps Completed, Points then Finish Order', u'Laps Completed, Points, Num Wins then Finish Order' ]) ctrl.SetSelection(0) self.Bind(wx.EVT_CHOICE, self.onChange, ctrl) self.gbs.Add(ctrl, pos=(1, 7), span=(1, 2), flag=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.rankByLabel = label self.rankByCtrl = ctrl #-------------------------------------------------------------------------------------------------------------- label = wx.StaticText(self, label=u'Total:') self.gbs.Add(label, pos=(2, 0), flag=wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL | wx.LEFT, border=16) ctrl = IC.IntCtrl(self, min=1, max=300, value=1, limited=True, style=wx.ALIGN_RIGHT, size=(40, -1)) ctrl.Bind(IC.EVT_INT, self.onChange) self.gbs.Add(ctrl, pos=(2, 1), flag=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) unitsLabel = wx.StaticText(self, label='laps') self.gbs.Add(unitsLabel, pos=(2, 2), flag=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.lapsLabel = label self.lapsUnitsLabel = unitsLabel self.lapsCtrl = ctrl #-------------------------------------------------------------------------------------------------------------- label = wx.StaticText(self, label=u'Start Laps:') self.gbs.Add(label, pos=(2, 3), flag=wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL | wx.LEFT, border=16) ctrl = IC.IntCtrl(self, min=0, max=300, value=0, limited=True, style=wx.ALIGN_RIGHT, size=(40, -1)) ctrl.Bind(IC.EVT_INT, self.onChange) self.gbs.Add(ctrl, pos=(2, 4), flag=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.startLapsLabel = label self.startLapsCtrl = ctrl ctrl = wx.StaticText(self, -1, u'Distance: 10.0m') self.gbs.Add(ctrl, pos=(2, 5), flag=wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL) self.distanceCtrl = ctrl label = wx.StaticText(self, label=u'Points for Place:', style=wx.ALIGN_RIGHT) self.gbs.Add(label, pos=(2, 6), flag=wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL | wx.LEFT, border=16) ctrl = wx.TextCtrl(self) self.gbs.Add(ctrl, pos=(2, 7), flag=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.pointsForPlaceLabel = label self.pointsForPlaceCtrl = ctrl label = wx.CheckBox(self, label=u'Double Points on Last Sprint') self.gbs.Add(label, pos=(2, 8), flag=wx.ALIGN_CENTER_VERTICAL | wx.LEFT, border=16) ctrl = label ctrl.Bind(wx.EVT_CHECKBOX, self.onChange) self.doublePointsForLastSprintLabel = label self.doublePointsForLastSprintCtrl = ctrl #-------------------------------------------------------------------------------------------------------------- label = wx.StaticText(self, label=u'Sprint Every:') self.gbs.Add(label, pos=(3, 0), flag=wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL | wx.LEFT, border=16) ctrl = IC.IntCtrl(self, min=1, max=300, value=1, limited=True, style=wx.ALIGN_RIGHT, size=(40, -1)) ctrl.Bind(IC.EVT_INT, self.onChange) self.gbs.Add(ctrl, pos=(3, 1), flag=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) unitsLabel = wx.StaticText(self, label='laps') self.gbs.Add(unitsLabel, pos=(3, 2), flag=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.sprintEveryLabel = label self.sprintEveryCtrl = ctrl self.sprintEveryUnitsLabel = unitsLabel label = wx.StaticText(self, label=u'Course Len:') self.gbs.Add(label, pos=(3, 3), flag=wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL | wx.LEFT, border=16) ctrl = NC.NumCtrl(self, min=0, integerWidth=3, fractionWidth=2, style=wx.ALIGN_RIGHT, size=(24, -1), useFixedWidthFont=False) ctrl.SetAllowNegative(False) ctrl.Bind(wx.EVT_TEXT, self.onChange) self.gbs.Add(ctrl, pos=(3, 4), flag=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) unitCtrl = wx.Choice(self, choices=[u'm', u'km']) unitCtrl.SetSelection(0) unitCtrl.Bind(wx.EVT_CHOICE, self.onChange) self.gbs.Add(unitCtrl, pos=(3, 5), flag=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.courseLengthLabel = label self.courseLengthCtrl = ctrl self.courseLengthUnitCtrl = unitCtrl label = wx.StaticText(self, label=u'+/- Lap Points:') self.gbs.Add(label, pos=(3, 6), flag=wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL | wx.LEFT, border=16) ctrl = IC.IntCtrl(self, min=0, max=100, value=0, limited=True, style=wx.ALIGN_RIGHT, size=(32, -1)) ctrl.Bind(IC.EVT_INT, self.onChange) self.gbs.Add(ctrl, pos=(3, 7), flag=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) self.pointsForLappingLabel = label self.pointsForLappingCtrl = ctrl label = wx.CheckBox(self, label=u'Snowball') self.gbs.Add(label, pos=(3, 8), flag=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL | wx.LEFT, border=16) ctrl = label ctrl.Bind(wx.EVT_CHECKBOX, self.onChange) self.snowballLabel = label self.snowballCtrl = ctrl branding = wx.adv.HyperlinkCtrl( self, id=wx.ID_ANY, label=u"Powered by CrossMgr", url=u"http://www.sites.google.com/site/crossmgrsoftware/") branding.SetBackgroundColour(wx.WHITE) self.gbs.Add(branding, pos=(3, 9), flag=wx.ALIGN_LEFT | wx.ALIGN_CENTER_VERTICAL) #----------------------------------------------------------------------------------------------------------- self.vbs.Add(self.gbs, flag=wx.ALL, border=4) self.SetSizerAndFit(self.vbs) self.ConfigurePointsRace() self.refresh()
def __create_objects(self): # Menu Bar self.frame_1_menubar = wx.MenuBar() # File menu self.file_menu = wx.Menu() self.import_file = wx.MenuItem(self.file_menu, -1, "Import", "Import timeseries from data file") self.file_menu.AppendItem(self.import_file) self.frame_1_menubar.Append(self.file_menu, "File") # Help Menu self.help_menu = wx.Menu() self.help_book = wx.MenuItem(self.help_menu, -1, "Help Index", "How to use this software.") self.about = wx.MenuItem(self.help_menu, -1, "About", "About this software.") self.help_menu.AppendItem(self.about) self.frame_1_menubar.Append(self.help_menu, "Help") # Set Menu Bar self.SetMenuBar(self.frame_1_menubar) # Menu Bar end # Status Bar self.frame_1_statusbar = self.CreateStatusBar(1, 0) # Status Bar end # Tool Bar self.frame_1_toolbar = wx.ToolBar(self, -1, style=wx.TB_HORIZONTAL | wx.TB_3DBUTTONS) self.SetToolBar(self.frame_1_toolbar) self.frame_1_toolbar.AddLabelTool( wx.NewId(), "new", wx.Bitmap("stock_new.png", wx.BITMAP_TYPE_ANY), wx.NullBitmap, wx.ITEM_NORMAL, "", "") self.frame_1_toolbar.AddLabelTool( wx.NewId(), "open", wx.Bitmap("stock_open.png", wx.BITMAP_TYPE_ANY), wx.NullBitmap, wx.ITEM_NORMAL, "", "") self.frame_1_toolbar.AddLabelTool( wx.NewId(), "save", wx.Bitmap("stock_save.png", wx.BITMAP_TYPE_ANY), wx.NullBitmap, wx.ITEM_NORMAL, "", "") self.frame_1_toolbar.AddLabelTool( wx.NewId(), "exit", wx.Bitmap("stock_exit.png", wx.BITMAP_TYPE_ANY), wx.NullBitmap, wx.ITEM_NORMAL, "", "") # Tool Bar end # Top level sizers self.sizer_1 = wx.BoxSizer(wx.HORIZONTAL) self.sizer_3 = wx.BoxSizer(wx.VERTICAL) # Splitter self.splitter = wx.SplitterWindow(self, -1, style=wx.SP_3DSASH | wx.SP_3DBORDER) # TS panel widgets self.sizer_ts = wx.BoxSizer(wx.VERTICAL) self.sizer_control_ts = wx.BoxSizer(wx.HORIZONTAL) self.ts_control_panel = wx.Panel(self.splitter, -1) self.list_box_1 = wx.ListBox(self.ts_control_panel, -1, choices=[], style=wx.LB_MULTIPLE | wx.LB_NEEDED_SB) self.ts_plot_button = wx.Button(self.ts_control_panel, -1, 'Plot Timeseries') self.ts_remove_button = wx.Button(self.ts_control_panel, -1, 'Remove') # Notebook self.notebook_1 = wx.Notebook(self.splitter, -1, style=wx.NB_LEFT) self.notebook_1_pane_1 = wx.Panel(self.notebook_1, -1) self.notebook_1_pane_2 = wx.Panel(self.notebook_1, -1) self.notebook_1_pane_3 = wx.Panel(self.notebook_1, -1) self.notebook_1_pane_4 = wx.Panel(self.notebook_1, -1) self.notebook_1_pane_5 = wx.Panel(self.notebook_1, -1) self.notebook_1_pane_6 = wx.Panel(self.notebook_1, -1) # Text results panel self.results_panel = wx.Panel(self, -1, style=wx.SIMPLE_BORDER) self.results_panel_text = wx.StaticText(self.results_panel, -1, label="Numerical Results Here") # Graphing panel self.plot_panel = wxmpl.PlotPanel(self, -1) # Analysis widgets self.analysis_sizer = wx.BoxSizer(wx.VERTICAL) self.stat_button = wx.Button(self.notebook_1_pane_1, -1, 'Statistics') self.hist_button = wx.Button(self.notebook_1_pane_1, -1, 'Histogram') self.weibull_button = wx.Button(self.notebook_1_pane_1, -1, 'Weibull Params') self.corr_button = wx.Button(self.notebook_1_pane_1, -1, 'Correlate') self.corr_panel = wx.Panel(self.notebook_1_pane_1, -1, style=wx.RAISED_BORDER) self.corr_panel_btn = wx.Button(self.notebook_1_pane_1, -1, '>>', name='corr') self.corr_sizer = wx.BoxSizer(wx.HORIZONTAL) self.rad_autocorr = wx.RadioButton(self.corr_panel, -1, 'Auto', style=wx.RB_GROUP) self.rad_crosscorr = wx.RadioButton(self.corr_panel, -1, 'Cross') self.corr_lag_int = intctrl.IntCtrl(self.corr_panel, -1, value=15, min=0) self.lag_label = wx.StaticText(self.corr_panel, -1, 'No. lags') self.block_button = wx.Button(self.notebook_1_pane_1, -1, 'Block Average') self.block_panel = wx.Panel(self.notebook_1_pane_1, -1, style=wx.RAISED_BORDER) self.block_panel_btn = wx.Button(self.notebook_1_pane_1, -1, '>>', name='block') self.block_sizer = wx.BoxSizer(wx.HORIZONTAL) self.block_new_freq = wx.Choice(self.block_panel, -1, choices=[ 'YEARLY', 'QUARTERLY', 'MONTHLY', 'WEEKLY', 'DAILY', 'HOURLY', 'MINUTELY' ]) self.psd_button = wx.Button(self.notebook_1_pane_1, -1, 'Power Spectral Density') # End Analysis widgets # Synthesis widgets self.synthesis_sizer = wx.BoxSizer(wx.VERTICAL) self.arma_button = wx.Button(self.notebook_1_pane_2, -1, 'ARMA') self.arma_panel = wx.Panel(self.notebook_1_pane_2, -1, style=wx.RAISED_BORDER) self.arma_panel_btn = wx.Button(self.notebook_1_pane_2, -1, '>>', name='arma') self.arma_sizer = wx.BoxSizer(wx.HORIZONTAL) self.mean_lbl = wx.StaticText(self.arma_panel, -1, 'Mean:') self.stdev_lbl = wx.StaticText(self.arma_panel, -1, 'STDEV:') self.npoints_lbl = wx.StaticText(self.arma_panel, -1, 'No. points:') self.autocorr_lbl = wx.StaticText(self.arma_panel, -1, 'Autocorr:') self.mean_ctrl = wx.TextCtrl(self.arma_panel, -1, '') self.stdev_ctrl = wx.TextCtrl(self.arma_panel, -1, '') self.npoints_ctrl = wx.TextCtrl(self.arma_panel, -1, '') self.autocorr_ctrl = wx.TextCtrl(self.arma_panel, -1, '')
def __init__(self, parent): wx.Dialog.__init__(self, parent, id=wx.ID_ANY, title=u"编辑车辆信息", pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.DEFAULT_DIALOG_STYLE) self.data = None border = wx.BoxSizer(wx.VERTICAL) # load customer combo data self.customer_data = service.search_customer(None, None) # load insurance company combo data self.company_data = service.search_dict(1) # load authorization self.current_user = auth.Auth.logon_user # new box ------------------------------------------------------------------------- box = wx.StaticBox(self, -1, u"客户信息") box.SetForegroundColour((119, 136, 153)) box_sizer = wx.StaticBoxSizer(box, wx.VERTICAL) border.Add(box_sizer, 0, wx.GROW | wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5) # new line ######################################################################## sizer = wx.BoxSizer(wx.HORIZONTAL) box_sizer.Add(sizer) # 客户姓名 label = wx.StaticText(self, wx.ID_ANY, u"* 姓名:", size=(60, -1), style=wx.ALIGN_RIGHT) label.SetForegroundColour(wx.RED) sizer.Add(label, 0, wx.ALIGN_CENTRE | wx.ALL, 5) self.customerCombobox =\ wx.ComboBox(self, wx.ID_ANY, size=wx.Size(120, -1), choices=[], style=wx.CB_DROPDOWN) for customer in self.customer_data: self.customerCombobox.Append(customer[0], customer[6]) sizer.Add(self.customerCombobox, 1, wx.ALIGN_CENTRE | wx.ALL, 5) self.Bind(wx.EVT_COMBOBOX, self.select_customer, self.customerCombobox) self.Bind(wx.EVT_TEXT, self.filter_customer, self.customerCombobox) self.Bind(wx.EVT_CHAR, self.enable_filter, self.customerCombobox) self.ignoreEvtText = False # 客户性别 label = wx.StaticText(self, wx.ID_ANY, u"性别:", size=(60, -1), style=wx.ALIGN_RIGHT) sizer.Add(label, 0, wx.ALIGN_CENTRE | wx.ALL, 5) self.customerGenderPanel =\ wx.StaticText(self, wx.ID_ANY, size=wx.Size(120, -1)) sizer.Add(self.customerGenderPanel, 1, wx.ALIGN_CENTRE | wx.ALL, 5) # 身份证号 label = wx.StaticText(self, wx.ID_ANY, u"身份证号:", size=(60, -1), style=wx.ALIGN_RIGHT) sizer.Add(label, 0, wx.ALIGN_CENTRE | wx.ALL, 5) self.customerIdNumberPanel =\ wx.StaticText(self, wx.ID_ANY, size=wx.Size(130, -1)) sizer.Add(self.customerIdNumberPanel, 1, wx.ALIGN_CENTRE | wx.ALL, 5) # 客户电话 label = wx.StaticText(self, wx.ID_ANY, u"电话:", size=(60, -1), style=wx.ALIGN_RIGHT) sizer.Add(label, 0, wx.ALIGN_CENTRE | wx.ALL, 5) self.customerPhonePanel =\ wx.StaticText(self, wx.ID_ANY, size=wx.Size(120, -1)) sizer.Add(self.customerPhonePanel, 1, wx.ALIGN_CENTRE | wx.ALL, 5) # new box ------------------------------------------------------------------------- box = wx.StaticBox(self, -1, u"车辆信息") box.SetForegroundColour((119, 136, 153)) box_sizer = wx.StaticBoxSizer(box, wx.VERTICAL) border.Add(box_sizer, 0, wx.GROW | wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5) # new line ######################################################################## sizer = wx.BoxSizer(wx.HORIZONTAL) box_sizer.Add(sizer) # 车牌号 label = wx.StaticText(self, wx.ID_ANY, u"* 车牌号:", size=(110, -1), style=wx.ALIGN_RIGHT) label.SetForegroundColour(wx.RED) sizer.Add(label, 0, wx.ALIGN_CENTRE | wx.ALL, 5) self.vehiclePlateNumInput =\ wx.TextCtrl(self, wx.ID_ANY, "", size=wx.Size(230, -1), validator=platenumvalidator.PlateNumValidator(None)) sizer.Add(self.vehiclePlateNumInput, 1, wx.ALIGN_CENTRE | wx.ALL, 5) # 车辆型号 label = wx.StaticText(self, wx.ID_ANY, u"* 车辆型号:", size=(110, -1), style=wx.ALIGN_RIGHT) label.SetForegroundColour(wx.RED) sizer.Add(label, 0, wx.ALIGN_CENTRE | wx.ALL, 5) self.vehicleModelInput =\ wx.TextCtrl(self, wx.ID_ANY, "", size=wx.Size(230, -1), validator=textvalidator.TextValidator(u"车辆型号")) sizer.Add(self.vehicleModelInput, 1, wx.ALIGN_CENTRE | wx.ALL, 5) # new line ######################################################################## sizer = wx.BoxSizer(wx.HORIZONTAL) box_sizer.Add(sizer) # 车辆登记日期 label = wx.StaticText(self, wx.ID_ANY, u"* 车辆登记日期:", size=(110, -1), style=wx.ALIGN_RIGHT) label.SetForegroundColour(wx.RED) sizer.Add(label, 0, wx.ALIGN_CENTRE | wx.ALL, 5) self.vehicleRegDate =\ wx.adv.DatePickerCtrl(self, wx.ID_ANY, size=wx.Size(230, -1), style=wx.adv.DP_DROPDOWN | wx.adv.DP_SHOWCENTURY) sizer.Add(self.vehicleRegDate, 1, wx.ALIGN_CENTRE | wx.ALL, 5) # 公里数 label = wx.StaticText(self, wx.ID_ANY, u"公里数:", size=(110, -1), style=wx.ALIGN_RIGHT) sizer.Add(label, 0, wx.ALIGN_CENTRE | wx.ALL, 5) self.mileageInput =\ intctrl.IntCtrl(self, wx.ID_ANY, size=wx.Size(230, -1)) sizer.Add(self.mileageInput, 1, wx.ALIGN_CENTRE | wx.ALL, 5) # new line ######################################################################## sizer = wx.BoxSizer(wx.HORIZONTAL) box_sizer.Add(sizer) # 过户次数 label = wx.StaticText(self, wx.ID_ANY, u"* 过户次数:", size=(110, -1), style=wx.ALIGN_RIGHT) label.SetForegroundColour(wx.RED) sizer.Add(label, 0, wx.ALIGN_CENTRE | wx.ALL, 5) self.transCountInput =\ intctrl.IntCtrl(self, wx.ID_ANY, 1, size=wx.Size(230, -1), min=0) sizer.Add(self.transCountInput, 1, wx.ALIGN_CENTRE | wx.ALL, 5) # new box ------------------------------------------------------------------------- box = wx.StaticBox(self, -1, u"贷款信息") box.SetForegroundColour((119, 136, 153)) box_sizer = wx.StaticBoxSizer(box, wx.VERTICAL) border.Add(box_sizer, 0, wx.GROW | wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5) # new line ######################################################################## sizer = wx.BoxSizer(wx.HORIZONTAL) box_sizer.Add(sizer) # 贷款产品、期次 label = wx.StaticText(self, wx.ID_ANY, u"* 贷款产品:", size=(110, -1), style=wx.ALIGN_RIGHT) label.SetForegroundColour(wx.RED) sizer.Add(label, 0, wx.ALIGN_CENTRE | wx.ALL, 5) self.loanProductInput =\ wx.TextCtrl(self, wx.ID_ANY, "", size=wx.Size(230, -1), validator=textvalidator.TextValidator(u"贷款产品")) sizer.Add(self.loanProductInput, 1, wx.ALIGN_CENTRE | wx.ALL, 5) label = wx.StaticText(self, wx.ID_ANY, u"* 期次:", size=(110, -1), style=wx.ALIGN_RIGHT) label.SetForegroundColour(wx.RED) sizer.Add(label, 0, wx.ALIGN_CENTRE | wx.ALL, 5) self.loanPeriodInput =\ wx.TextCtrl(self, wx.ID_ANY, "", size=wx.Size(230, -1), validator=textvalidator.TextValidator(u"期次")) sizer.Add(self.loanPeriodInput, 1, wx.ALIGN_CENTRE | wx.ALL, 5) # new line ######################################################################## sizer = wx.BoxSizer(wx.HORIZONTAL) box_sizer.Add(sizer) # 贷款年限 label = wx.StaticText(self, wx.ID_ANY, u"* 贷款年限:", size=(110, -1), style=wx.ALIGN_RIGHT) label.SetForegroundColour(wx.RED) sizer.Add(label, 0, wx.ALIGN_CENTRE | wx.ALL, 5) self.loanTermInput =\ intctrl.IntCtrl(self, wx.ID_ANY, 1, size=wx.Size(230, -1), min=1) sizer.Add(self.loanTermInput, 1, wx.ALIGN_CENTRE | wx.ALL, 5) # 贷款金额 label = wx.StaticText(self, wx.ID_ANY, u"贷款金额:", size=(110, -1), style=wx.ALIGN_RIGHT) sizer.Add(label, 0, wx.ALIGN_CENTRE | wx.ALL, 5) self.loanValueInput =\ intctrl.IntCtrl(self, wx.ID_ANY, 1, size=wx.Size(230, -1)) sizer.Add(self.loanValueInput, 1, wx.ALIGN_CENTRE | wx.ALL, 5) # new line ######################################################################## sizer = wx.BoxSizer(wx.HORIZONTAL) box_sizer.Add(sizer) # 贷款提报日期 label = wx.StaticText(self, wx.ID_ANY, u"贷款提报日期:", size=(110, -1), style=wx.ALIGN_RIGHT) sizer.Add(label, 0, wx.ALIGN_CENTRE | wx.ALL, 5) self.loanReportDate = \ wx.adv.DatePickerCtrl(self, wx.ID_ANY, size=wx.Size(230, -1), style=wx.adv.DP_DROPDOWN | wx.adv.DP_SHOWCENTURY | wx.adv.DP_ALLOWNONE) sizer.Add(self.loanReportDate, 1, wx.ALIGN_CENTRE | wx.ALL, 5) # 贷款通过日期 label = wx.StaticText(self, wx.ID_ANY, u"贷款通过日期:", size=(110, -1), style=wx.ALIGN_RIGHT) sizer.Add(label, 0, wx.ALIGN_CENTRE | wx.ALL, 5) self.loanPassedDate = \ wx.adv.DatePickerCtrl(self, wx.ID_ANY, size=wx.Size(230, -1), style=wx.adv.DP_DROPDOWN | wx.adv.DP_SHOWCENTURY | wx.adv.DP_ALLOWNONE) sizer.Add(self.loanPassedDate, 1, wx.ALIGN_CENTRE | wx.ALL, 5) # new line ######################################################################## sizer = wx.BoxSizer(wx.HORIZONTAL) box_sizer.Add(sizer) # 放款日期 label = wx.StaticText(self, wx.ID_ANY, u"* 放款日期:", size=(110, -1), style=wx.ALIGN_RIGHT) label.SetForegroundColour(wx.RED) sizer.Add(label, 0, wx.ALIGN_CENTRE | wx.ALL, 5) self.loanDate = \ wx.adv.DatePickerCtrl(self, wx.ID_ANY, size=wx.Size(230, -1), style=wx.adv.DP_DROPDOWN | wx.adv.DP_SHOWCENTURY) sizer.Add(self.loanDate, 1, wx.ALIGN_CENTRE | wx.ALL, 5) # new box ------------------------------------------------------------------------- box = wx.StaticBox(self, -1, u"投保信息") box.SetForegroundColour((119, 136, 153)) box_sizer = wx.StaticBoxSizer(box, wx.VERTICAL) border.Add(box_sizer, 0, wx.GROW | wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5) # new line ######################################################################## sizer = wx.BoxSizer(wx.HORIZONTAL) box_sizer.Add(sizer) # 承保公司 label = wx.StaticText(self, wx.ID_ANY, u"承保公司:", size=(110, -1), style=wx.ALIGN_RIGHT) sizer.Add(label, 0, wx.ALIGN_CENTRE | wx.ALL, 5) self.insuranceCompanyCombobox = \ wx.ComboBox(self, wx.ID_ANY, size=wx.Size(230, -1), choices=[], style=wx.CB_DROPDOWN | wx.CB_READONLY) sizer.Add(self.insuranceCompanyCombobox, 1, wx.ALIGN_CENTRE | wx.ALL, 5) for company in self.company_data: self.insuranceCompanyCombobox.Append(company[1], company[0]) # 险种 label = wx.StaticText(self, wx.ID_ANY, u"险种:", size=(110, -1), style=wx.ALIGN_RIGHT) sizer.Add(label, 0, wx.ALIGN_CENTRE | wx.ALL, 5) self.insuranceTypeInput =\ wx.TextCtrl(self, wx.ID_ANY, "", size=wx.Size(230, -1)) sizer.Add(self.insuranceTypeInput, 1, wx.ALIGN_CENTRE | wx.ALL, 5) # new line ######################################################################## sizer = wx.BoxSizer(wx.HORIZONTAL) box_sizer.Add(sizer) # 保险生效日期 label = wx.StaticText(self, wx.ID_ANY, u"* 保险生效日期:", size=(110, -1), style=wx.ALIGN_RIGHT) label.SetForegroundColour(wx.RED) sizer.Add(label, 0, wx.ALIGN_CENTRE | wx.ALL, 5) self.insuranceStartDate = \ wx.adv.DatePickerCtrl(self, wx.ID_ANY, size=wx.Size(230, -1), style=wx.adv.DP_DROPDOWN | wx.adv.DP_SHOWCENTURY) sizer.Add(self.insuranceStartDate, 1, wx.ALIGN_CENTRE | wx.ALL, 5) self.Bind(wx.adv.EVT_DATE_CHANGED, self.get_end, self.insuranceStartDate) # 保险到期日期 label = wx.StaticText(self, wx.ID_ANY, u"* 保险到期日期:", size=(110, -1), style=wx.ALIGN_RIGHT) label.SetForegroundColour(wx.RED) sizer.Add(label, 0, wx.ALIGN_CENTRE | wx.ALL, 5) self.insuranceEndDate = \ wx.adv.DatePickerCtrl(self, wx.ID_ANY, size=wx.Size(230, -1), style=wx.adv.DP_DROPDOWN | wx.adv.DP_SHOWCENTURY) sizer.Add(self.insuranceEndDate, 1, wx.ALIGN_CENTRE | wx.ALL, 5) # new line ######################################################################## sizer = wx.BoxSizer(wx.HORIZONTAL) border.Add(sizer, 0, wx.GROW | wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5) # 备注 label = wx.StaticText(self, wx.ID_ANY, u"备注:", size=(110, -1), style=wx.ALIGN_RIGHT) sizer.Add(label, 0, wx.ALIGN_CENTRE | wx.ALL, 5) self.remarkInput =\ wx.TextCtrl(self, wx.ID_ANY, "", size=wx.Size(470, -1), style=wx.TE_MULTILINE) sizer.Add(self.remarkInput, 1, wx.ALIGN_CENTRE | wx.ALL, 5) line = wx.StaticLine(self, -1, size=wx.DefaultSize, style=wx.HORIZONTAL) border.Add(line, 0, wx.GROW | wx.ALIGN_CENTER_VERTICAL | wx.TOP, 5) # 按钮 buttons = wx.StdDialogButtonSizer() btn = wx.Button(self, wx.ID_OK, u"保存") btn.SetDefault() buttons.Add(btn) btn = wx.Button(self, wx.ID_CANCEL, u"取消") buttons.Add(btn) buttons.Realize() border.Add(buttons, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5) self.SetSizer(border) border.Fit(self)
def __init__(self, parent, id=wx.ID_ANY): wx.Dialog.__init__(self, parent, id, "Advanced Setup", style=wx.DEFAULT_DIALOG_STYLE | wx.TAB_TRAVERSAL) ''' Impinj.TagPopulation = None # Size of a group to read. Impinj.ReceiverSensitivity = None Impinj.TransmitPower = None Impinj.ConnectionTimeoutSeconds = 1 # Interval for connection timeout Impinj.KeepaliveSeconds = 2 # Interval to request a Keepalive message Impinj.RepeatSeconds = 2 # Interval in which a tag is considered a repeat read. ''' bs = wx.GridBagSizer(vgap=5, hgap=5) row = 0 border = 8 bs.Add(wx.StaticText(self, label='Advanced Reader Options:'), pos=(0, 0), span=(1, 2), border=border, flag=wx.ALL) row += 1 bs.Add(wx.StaticText(self, label='Tag Population'), pos=(row, 0), span=(1, 1), border=border, flag=wx.LEFT | wx.TOP | wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL) self.TagPopulation = intctrl.IntCtrl(self, min=0, max=500, limited=True, allow_none=True, value=Impinj.TagPopulation, size=(100, -1), style=wx.TE_RIGHT) bs.Add(self.TagPopulation, pos=(row, 1), span=(1, 1), border=border, flag=wx.TOP) bs.Add(wx.StaticText( self, label= 'Expected number of tags in range of the antennas at the finish line.\nSuggestions: 4=TimeTrial/MTB, 16=Small Criterium/Road Race, 100=Large Criterium/Road Race.' ), pos=(row, 2), span=(1, 1), border=border, flag=wx.TOP | wx.RIGHT | wx.ALIGN_CENTER_VERTICAL) row += 1 bs.Add(wx.StaticLine(self), pos=(row, 0), span=(1, 3), flag=wx.EXPAND) row += 1 bs.Add(wx.StaticText(self, label='Transmit Power'), pos=(row, 0), span=(1, 1), border=border, flag=wx.LEFT | wx.TOP | wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL) self.TransmitPower = intctrl.IntCtrl(self, min=0, max=10000, limited=True, allow_none=True, value=Impinj.TransmitPower, size=(100, -1), style=wx.TE_RIGHT) bs.Add(self.TransmitPower, pos=(row, 1), span=(1, 1), border=border, flag=wx.TOP) bs.Add(wx.StaticText( self, label='Check reader for details. Leave blank for full power.'), pos=(row, 2), span=(1, 1), border=border, flag=wx.TOP | wx.RIGHT | wx.ALIGN_CENTER_VERTICAL) row += 1 bs.Add(wx.StaticText(self, label='Receiver Sensitivity'), pos=(row, 0), span=(1, 1), border=border, flag=wx.LEFT | wx.TOP | wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL) self.ReceiverSensitivity = intctrl.IntCtrl( self, min=0, max=500, limited=True, allow_none=True, value=Impinj.ReceiverSensitivity, size=(100, -1), style=wx.TE_RIGHT) bs.Add(self.ReceiverSensitivity, pos=(row, 1), span=(1, 1), border=border, flag=wx.TOP) bs.Add(wx.StaticText( self, label='Check reader for details. Leave blank for full sensitivity.' ), pos=(row, 2), span=(1, 1), border=border, flag=wx.TOP | wx.RIGHT | wx.ALIGN_CENTER_VERTICAL) row += 1 bs.Add(wx.StaticLine(self), pos=(row, 0), span=(1, 3), flag=wx.EXPAND) row += 1 bs.Add(wx.StaticText(self, label='Connection Timeout Seconds'), pos=(row, 0), span=(1, 1), border=border, flag=wx.LEFT | wx.TOP | wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL) self.ConnectionTimeoutSeconds = intctrl.IntCtrl( self, min=1, max=60, limited=True, value=Impinj.ConnectionTimeoutSeconds, size=(100, -1), style=wx.TE_RIGHT) bs.Add(self.ConnectionTimeoutSeconds, pos=(row, 1), span=(1, 1), border=border, flag=wx.TOP) bs.Add(wx.StaticText( self, label='Maximum seconds to wait for a reader response.'), pos=(row, 2), span=(1, 1), border=border, flag=wx.TOP | wx.RIGHT | wx.ALIGN_CENTER_VERTICAL) row += 1 bs.Add(wx.StaticText(self, label='Keepalive Seconds'), pos=(row, 0), span=(1, 1), border=border, flag=wx.LEFT | wx.TOP | wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL) self.KeepaliveSeconds = intctrl.IntCtrl(self, min=1, max=60, limited=True, value=Impinj.KeepaliveSeconds, size=(100, -1), style=wx.TE_RIGHT) bs.Add(self.KeepaliveSeconds, pos=(row, 1), span=(1, 1), border=border, flag=wx.TOP) bs.Add(wx.StaticText( self, label= 'Frequency of "heartbeat" messages indicating the reader is still connected.' ), pos=(row, 2), span=(1, 1), border=border, flag=wx.TOP | wx.RIGHT | wx.ALIGN_CENTER_VERTICAL) row += 1 bs.Add(wx.StaticText(self, label='Repeat Seconds'), pos=(row, 0), span=(1, 1), border=border, flag=wx.LEFT | wx.TOP | wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL) self.RepeatSeconds = intctrl.IntCtrl(self, min=1, max=120, limited=True, value=Impinj.RepeatSeconds, size=(100, -1), style=wx.TE_RIGHT) bs.Add(self.RepeatSeconds, pos=(row, 1), span=(1, 1), border=border, flag=wx.TOP) bs.Add(wx.StaticText( self, label= 'Interval in which multiple tag reads are considered "repeats" and not reported.' ), pos=(row, 2), span=(1, 1), border=border, flag=wx.TOP | wx.RIGHT | wx.ALIGN_CENTER_VERTICAL) self.fields = [ 'ConnectionTimeoutSeconds', 'KeepaliveSeconds', 'RepeatSeconds', 'TagPopulation', 'TransmitPower', 'ReceiverSensitivity', ] row += 1 bs.Add(wx.StaticLine(self), pos=(row, 0), span=(1, 3), flag=wx.EXPAND) row += 1 self.playSoundsCheckbox = wx.CheckBox(self, label='Beep on Read') self.playSoundsCheckbox.SetValue(Utils.playBell) bs.Add(self.playSoundsCheckbox, pos=(row, 1), span=(1, 3), border=border, flag=wx.TOP | wx.LEFT | wx.RIGHT) row += 1 bs.Add(wx.StaticLine(self), pos=(row, 0), span=(1, 3), flag=wx.EXPAND) row += 1 self.restoreDefaultButton = wx.Button(self, label='Restore Defaults') self.restoreDefaultButton.Bind(wx.EVT_BUTTON, self.onRestoreDefault) bs.Add(self.restoreDefaultButton, pos=(row, 0), span=(1, 3), border=border, flag=wx.TOP | wx.RIGHT | wx.ALIGN_CENTER) row += 1 bs.Add(wx.StaticText( self, label='Reminder: Press "Reset" for these changes to take effect.'), pos=(row, 0), span=(1, 3), border=border, flag=wx.TOP | wx.RIGHT | wx.ALIGN_RIGHT) self.okBtn = wx.Button(self, wx.ID_OK) self.Bind(wx.EVT_BUTTON, self.onOK, self.okBtn) self.cancelBtn = wx.Button(self, wx.ID_CANCEL) self.Bind(wx.EVT_BUTTON, self.onCancel, self.cancelBtn) row += 1 hs = wx.BoxSizer(wx.HORIZONTAL) hs.Add(self.okBtn, border=border, flag=wx.ALL) self.okBtn.SetDefault() hs.Add(self.cancelBtn, border=border, flag=wx.ALL) bs.Add(hs, pos=(row, 0), span=(1, 3), flag=wx.ALIGN_RIGHT) self.SetSizerAndFit(bs) bs.Fit(self) self.CentreOnParent(wx.BOTH) self.SetFocus()
def test_intctrlCtor(self): t1 = IC.IntCtrl(self.frame) t2 = IC.IntCtrl(self.frame, -1, 10) t3 = IC.IntCtrl(self.frame, value=32, min=32, max=72) t3.ChangeValue(16) self.assertTrue(not t3.IsInBounds())
def initUI(self): panel = wx.Panel(self) sizer = wx.GridBagSizer(6, 5) # Destination settings dst_box = wx.StaticBox(panel, label="File System") dst_sizer = wx.StaticBoxSizer(dst_box, wx.VERTICAL) dst_grid = wx.GridBagSizer(3, 5) lbl_Source = wx.StaticText(panel, label="Source") self.txt_Source = wx.TextCtrl(panel) self.btn_Source = wx.Button( panel, label="Browse...", size=(-1, 20), ) lbl_Destination = wx.StaticText(panel, label="Local/ Temp") self.txt_Destination = wx.TextCtrl(panel) self.btn_Destination = wx.Button(panel, label="Browse...", size=(-1, 20)) lbl_ssh_key = wx.StaticText(panel, label="SCP Key") self.txt_ssh_key = wx.TextCtrl(panel) self.btn_ssh_key = wx.Button(panel, label="Browse...", size=(-1, 20)) lbl_ssh_host = wx.StaticText(panel, label="SCP Host") self.txt_ssh_host = wx.TextCtrl(panel) lbl_username = wx.StaticText(panel, label="SCP User") self.txt_ssh_user = wx.TextCtrl(panel) lbl_password = wx.StaticText(panel, label="SCP Password") self.txt_ssh_pw = wx.TextCtrl(panel, style=wx.TE_PASSWORD) dst_grid.Add(lbl_Source, pos=(0, 0), flag=wx.LEFT | wx.ALIGN_CENTER_VERTICAL, border=5) dst_grid.Add(self.txt_Source, pos=(0, 1), span=(1, 3), flag=wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, border=5) dst_grid.Add(self.btn_Source, pos=(0, 4), flag=wx.RIGHT | wx.ALIGN_CENTER_VERTICAL, border=5) dst_grid.Add(lbl_Destination, pos=(1, 0), flag=wx.LEFT | wx.ALIGN_CENTER_VERTICAL, border=5) dst_grid.Add(self.txt_Destination, pos=(1, 1), span=(1, 3), flag=wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, border=5) dst_grid.Add(self.btn_Destination, pos=(1, 4), flag=wx.RIGHT | wx.ALIGN_CENTER_VERTICAL, border=5) dst_grid.Add(lbl_ssh_host, pos=(2, 0), flag=wx.LEFT | wx.ALIGN_CENTER_VERTICAL, border=5) dst_grid.Add(self.txt_ssh_host, pos=(2, 1), span=(1, 1), flag=wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, border=5) dst_grid.Add(lbl_ssh_key, pos=(2, 2), flag=wx.LEFT | wx.ALIGN_CENTER_VERTICAL, border=5) dst_grid.Add(self.txt_ssh_key, pos=(2, 3), span=(1, 1), flag=wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, border=5) dst_grid.Add(self.btn_ssh_key, pos=(2, 4), flag=wx.RIGHT | wx.ALIGN_CENTER_VERTICAL, border=5) dst_grid.Add(lbl_username, pos=(3, 0), flag=wx.LEFT | wx.ALIGN_CENTER_VERTICAL, border=5) dst_grid.Add(self.txt_ssh_user, pos=(3, 1), span=(1, 1), flag=wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, border=5) dst_grid.Add(lbl_password, pos=(3, 2), flag=wx.LEFT | wx.ALIGN_CENTER_VERTICAL, border=5) dst_grid.Add(self.txt_ssh_pw, pos=(3, 3), span=(1, 1), flag=wx.EXPAND | wx.ALIGN_CENTER_VERTICAL, border=5) dst_grid.AddGrowableCol(1) dst_grid.AddGrowableCol(3) dst_sizer.Add(dst_grid, flag=wx.EXPAND) sizer.Add(dst_sizer, pos=(0, 0), span=(1, 5), flag=wx.EXPAND | wx.TOP | wx.LEFT | wx.RIGHT, border=0) # Run params run_box = wx.StaticBox(panel, label="Run") run_sizer = wx.StaticBoxSizer(run_box, wx.VERTICAL) run_grid = wx.GridSizer(3, 4, 5, 5) lbl_cell_id = wx.StaticText(panel, label="Flo-Cell ID") self.txt_cell_id = wx.TextCtrl(panel, style=wx.TE_RIGHT, size=(80, -1), value=self.app.cell_id) lbl_cell_type = wx.StaticText(panel, label="Flo-Cell Type") self.txt_cell_type = wx.TextCtrl(panel, style=wx.TE_RIGHT, size=(80, -1), value=self.app.cell_type) lbl_kit = wx.StaticText(panel, label="Sequencing Kit") self.txt_kit = wx.TextCtrl(panel, style=wx.TE_RIGHT, size=(80, -1), value=self.app.kit) lbl_usr1 = wx.StaticText(panel, label="User Field 1") self.txt_usr1 = wx.TextCtrl(panel, style=wx.TE_RIGHT, size=(60, -1), value=self.app.usr1) lbl_usr2 = wx.StaticText(panel, label="User Field 2") self.txt_usr2 = wx.TextCtrl(panel, style=wx.TE_RIGHT, size=(60, -1), value=self.app.usr2) run_grid.Add(lbl_cell_id, flag=wx.ALIGN_CENTER_VERTICAL, border=5) run_grid.Add(self.txt_cell_id) run_grid.Add(lbl_usr1, flag=wx.ALIGN_CENTER_VERTICAL, border=5) run_grid.Add(self.txt_usr1) run_grid.Add(lbl_cell_type, flag=wx.ALIGN_CENTER_VERTICAL, border=5) run_grid.Add(self.txt_cell_type) run_grid.Add(lbl_usr2, flag=wx.ALIGN_CENTER_VERTICAL, border=5) run_grid.Add(self.txt_usr2) run_grid.Add(lbl_kit, flag=wx.ALIGN_CENTER_VERTICAL, border=5) run_grid.Add(self.txt_kit) run_sizer.Add(run_grid, flag=wx.EXPAND) sizer.Add(run_sizer, pos=(1, 0), span=(1, 5), flag=wx.EXPAND | wx.TOP | wx.LEFT | wx.RIGHT, border=0) # Options opt_box = wx.StaticBox(panel, label="Options") opt_sizer = wx.StaticBoxSizer(opt_box, wx.VERTICAL) opt_grid = wx.GridSizer(4, 4, 5, 5) self.chk_recursive = wx.CheckBox(panel, label="Recursive") self.chk_igexist = wx.CheckBox(panel, label="Ignore Existing") lbl_batch_size = wx.StaticText(panel, label="Batch size") lbl_batch_offset = wx.StaticText(panel, label="Batch offset") lbl_delay = wx.StaticText(panel, label="Delay") self.int_batch_size = intctrl.IntCtrl(panel, style=wx.TE_RIGHT, size=(80, -1), value=self.app.batch_size) self.int_batch_offset = intctrl.IntCtrl(panel, style=wx.TE_RIGHT, size=(60, -1), value=self.app.batch_offset) self.int_delay = intctrl.IntCtrl(panel, style=wx.TE_RIGHT, size=(80, -1), value=self.app.delay) lbl_file_regex = wx.StaticText(panel, label="File regex") lbl_batch_prefix = wx.StaticText(panel, label="Batch prefix") self.txt_file_regex = wx.TextCtrl(panel, style=wx.TE_RIGHT, size=(80, -1), value=self.app.regex) self.txt_batch_prefix = wx.TextCtrl(panel, style=wx.TE_RIGHT, size=(60, -1), value=self.app.batch_prefix) opt_grid.Add(self.chk_recursive, flag=wx.ALIGN_CENTER_VERTICAL, border=5) opt_grid.Add(self.chk_igexist, flag=wx.ALIGN_CENTER_VERTICAL, border=5) opt_grid.Add(wx.StaticText(panel)) opt_grid.Add(wx.StaticText(panel)) opt_grid.Add(lbl_batch_size, flag=wx.ALIGN_CENTER_VERTICAL, border=5) opt_grid.Add(self.int_batch_size, flag=wx.ALIGN_CENTER_VERTICAL, border=5) opt_grid.Add(lbl_batch_offset, flag=wx.ALIGN_CENTER_VERTICAL, border=5) opt_grid.Add(self.int_batch_offset, flag=wx.ALIGN_CENTER_VERTICAL, border=5) opt_grid.Add(lbl_file_regex, flag=wx.ALIGN_CENTER_VERTICAL, border=5) opt_grid.Add(self.txt_file_regex, flag=wx.ALIGN_CENTER_VERTICAL, border=5) opt_grid.Add(lbl_batch_prefix, flag=wx.ALIGN_CENTER_VERTICAL, border=5) opt_grid.Add(self.txt_batch_prefix, flag=wx.ALIGN_CENTER_VERTICAL, border=5) opt_grid.Add(lbl_delay, flag=wx.ALIGN_CENTER_VERTICAL, border=5) opt_grid.Add(self.int_delay, flag=wx.ALIGN_CENTER_VERTICAL, border=5) opt_sizer.Add(opt_grid, flag=wx.EXPAND) sizer.Add(opt_sizer, pos=(2, 0), span=(1, 5), flag=wx.EXPAND | wx.TOP | wx.LEFT | wx.RIGHT, border=0) # Log self.txt_log = wx.TextCtrl(panel, style=wx.TE_MULTILINE) self.txt_log.Disable() sizer.Add(self.txt_log, pos=(3, 0), span=(1, 5), flag=wx.EXPAND, border=5) # Flow Control self.btn_Start = wx.Button(panel, label="Start") sizer.Add(self.btn_Start, pos=(4, 3)) self.btn_Stop = wx.Button(panel, label="Stop") self.btn_Stop.Disable() sizer.Add(self.btn_Stop, pos=(4, 4), span=(1, 1), flag=wx.BOTTOM | wx.RIGHT, border=5) sizer.AddGrowableCol(2) sizer.AddGrowableRow(3) panel.SetSizer(sizer) self.panel = panel
def __init__(self, parent, id=wx.ID_ANY, title='', size=(200, 200)): wx.Frame.__init__(self, parent, id, title, size=size) self.config = wx.Config( appName="CrossMgrAlien", vendorName="SmartCyclingSolutions", #style=wx.CONFIG_USE_LOCAL_FILE ) self.SetBackgroundColour(wx.Colour(232, 232, 232)) self.LightGreen = wx.Colour(153, 255, 153) self.LightRed = wx.Colour(255, 153, 153) font = self.GetFont() bigFont = wx.Font(font.GetPointSize() * 1.5, font.GetFamily(), font.GetStyle(), wx.FONTWEIGHT_BOLD) titleFont = wx.Font(bigFont.GetPointSize() * 2.2, bigFont.GetFamily(), bigFont.GetStyle(), bigFont.GetWeight()) self.vbs = wx.BoxSizer(wx.VERTICAL) bs = wx.BoxSizer(wx.HORIZONTAL) self.reset = RoundButton(self, wx.ID_ANY, 'Reset', size=(80, 80)) self.reset.SetBackgroundColour(wx.WHITE) self.reset.SetForegroundColour(wx.Colour(0, 128, 128)) self.reset.SetFontToFitLabel( ) # Use the button's default font, but change the font size to fit the label. self.reset.Bind(wx.EVT_BUTTON, self.doReset) self.reset.Refresh() bs.Add(self.reset, border=8, flag=wx.LEFT | wx.ALIGN_CENTER_VERTICAL) bs.Add(setFont(titleFont, wx.StaticText(self, wx.ID_ANY, 'CrossMgrAlien')), border=8, flag=wx.LEFT | wx.ALIGN_CENTER_VERTICAL) bs.AddStretchSpacer() bitmap = wx.Bitmap(clipboard_xpm) self.copyToClipboard = wx.BitmapButton(self, wx.ID_ANY, bitmap) self.copyToClipboard.SetToolTip( wx.ToolTip('Copy Configuration and Logs to Clipboard...')) self.copyToClipboard.Bind(wx.EVT_BUTTON, self.doCopyToClipboard) bs.Add(self.copyToClipboard, border=32, flag=wx.LEFT | wx.ALIGN_CENTER_VERTICAL) self.tStart = datetime.datetime.now() bs.Add(setFont( bigFont, wx.StaticText( self, wx.ID_ANY, 'Last Reset: {}'.format(self.tStart.strftime('%H:%M:%S')))), border=10, flag=wx.LEFT | wx.ALIGN_CENTER_VERTICAL) self.runningTime = setFont(bigFont, wx.StaticText(self, wx.ID_ANY, '00:00:00')) bs.Add(self.runningTime, border=20, flag=wx.LEFT | wx.ALIGN_CENTER_VERTICAL) bs.Add(setFont(bigFont, wx.StaticText(self, wx.ID_ANY, ' / ')), flag=wx.ALIGN_CENTER_VERTICAL) self.time = setFont(bigFont, wx.StaticText(self, wx.ID_ANY, '00:00:00')) bs.Add(self.time, flag=wx.ALIGN_CENTER_VERTICAL) self.vbs.Add(bs, flag=wx.ALL | wx.EXPAND, border=4) fgs = wx.FlexGridSizer(rows=0, cols=2, vgap=4, hgap=4) fgs.AddGrowableRow(1) fgs.AddGrowableCol(0) fgs.AddGrowableCol(1) fgs.SetFlexibleDirection(wx.BOTH) self.vbs.Add(fgs, flag=wx.EXPAND, proportion=5) #------------------------------------------------------------------------------------------------ # Alien configuration. # gbs = wx.GridBagSizer(4, 4) fgs.Add(gbs, flag=wx.EXPAND | wx.ALL, border=4) iRow = 0 hs = wx.BoxSizer(wx.HORIZONTAL) hs.Add(setFont(bigFont, wx.StaticText(self, wx.ID_ANY, 'Alien Configuration:')), flag=wx.ALIGN_CENTER_VERTICAL) self.autoDetectButton = wx.Button(self, wx.ID_ANY, 'Auto Detect') self.autoDetectButton.Bind(wx.EVT_BUTTON, self.doAutoDetect) hs.Add(self.autoDetectButton, flag=wx.ALIGN_CENTER_VERTICAL | wx.LEFT, border=6) self.advancedButton = wx.Button(self, wx.ID_ANY, 'Advanced...') self.advancedButton.Bind(wx.EVT_BUTTON, self.doAdvanced) hs.Add(self.advancedButton, flag=wx.LEFT, border=6) gbs.Add(hs, pos=(iRow, 0), span=(1, 2), flag=wx.ALIGN_LEFT) iRow += 1 gbs.Add(wx.StaticText(self, wx.ID_ANY, 'Antennas:'), pos=(iRow, 0), span=(1, 1), flag=wx.ALIGN_RIGHT | wx.ALIGN_BOTTOM) gs = wx.GridSizer(rows=0, cols=4, hgap=2, vgap=2) self.antennas = [] for i in range(4): gs.Add(wx.StaticText(self, wx.ID_ANY, '{}'.format(i)), flag=wx.ALIGN_CENTER) for i in range(4): cb = wx.CheckBox(self, wx.ID_ANY, '') if i < 2: cb.SetValue(True) cb.Bind(wx.EVT_CHECKBOX, lambda x: self.getAntennaStr()) gs.Add(cb, flag=wx.ALIGN_CENTER) self.antennas.append(cb) gbs.Add(gs, pos=(iRow, 1), span=(1, 1), flag=wx.ALIGN_CENTER_VERTICAL) iRow += 1 gbs.Add(wx.StaticText(self, wx.ID_ANY, 'Notify Address:'), pos=(iRow, 0), span=(1, 1), flag=wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL) hb = wx.BoxSizer(wx.HORIZONTAL) ips = Utils.GetAllIps() self.notifyHost = wx.Choice(self, choices=ips) hb.Add(self.notifyHost) hb.Add(wx.StaticText(self, label=' : {}'.format(NotifyPort)), flag=wx.ALIGN_CENTER_VERTICAL) gbs.Add(hb, pos=(iRow, 1), span=(1, 1)) iRow += 1 self.listenForHeartbeat = wx.CheckBox( self, label='Listen for Alien Heartbeat on Port: {}'.format( HeartbeatPort), style=wx.ALIGN_LEFT) self.listenForHeartbeat.SetValue(True) gbs.Add(self.listenForHeartbeat, pos=(iRow, 0), span=(1, 2)) iRow += 1 gbs.Add(wx.StaticText(self, label='Alien Cmd Address:'), pos=(iRow, 0), span=(1, 1), flag=wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL) hb = wx.BoxSizer(wx.HORIZONTAL) self.cmdHost = IpAddrCtrl(self, wx.ID_ANY, style=wx.TE_PROCESS_TAB) hb.Add(self.cmdHost) hb.Add(wx.StaticText(self, label=' : '), flag=wx.ALIGN_CENTER_VERTICAL) self.cmdPort = intctrl.IntCtrl(self, size=(50, -1), min=0, max=999999) hb.Add(self.cmdPort, flag=wx.ALIGN_CENTER_VERTICAL) gbs.Add(hb, pos=(iRow, 1), span=(1, 1), flag=wx.ALIGN_LEFT) iRow += 1 gbs.Add(wx.StaticText(self, label='Backup File:'), pos=(iRow, 0), span=(1, 1), flag=wx.ALIGN_RIGHT) self.backupFile = wx.StaticText(self, label='') gbs.Add(self.backupFile, pos=(iRow, 1), span=(1, 1), flag=wx.ALIGN_LEFT) #------------------------------------------------------------------------------------------------ # CrossMgr configuration. # gbs = wx.GridBagSizer(4, 4) fgs.Add(gbs, flag=wx.EXPAND | wx.ALL, border=4) gbs.Add(setFont(bigFont, wx.StaticText(self, label='CrossMgr Configuration:')), pos=(0, 0), span=(1, 2), flag=wx.ALIGN_LEFT) gbs.Add(wx.StaticText(self, label='CrossMgr Address:'), pos=(1, 0), span=(1, 1), flag=wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL) hb = wx.BoxSizer(wx.HORIZONTAL) self.crossMgrHost = IpAddrCtrl(self, style=wx.TE_PROCESS_TAB) hb.Add(self.crossMgrHost, flag=wx.ALIGN_LEFT) hb.Add(wx.StaticText(self, label=' : 53135'), flag=wx.ALIGN_CENTER_VERTICAL) gbs.Add(hb, pos=(1, 1), span=(1, 1), flag=wx.ALIGN_LEFT) #------------------------------------------------------------------------------------------------ # Add messages # self.alienMessagesText = wx.TextCtrl(self, style=wx.TE_READONLY | wx.TE_MULTILINE | wx.HSCROLL, size=(-1, 400)) fgs.Add(self.alienMessagesText, flag=wx.EXPAND, proportion=2) self.alienMessages = MessageManager(self.alienMessagesText) self.crossMgrMessagesText = wx.TextCtrl(self, style=wx.TE_READONLY | wx.TE_MULTILINE | wx.HSCROLL, size=(-1, 400)) fgs.Add(self.crossMgrMessagesText, flag=wx.EXPAND, proportion=2) self.crossMgrMessages = MessageManager(self.crossMgrMessagesText) self.fgs = fgs #------------------------------------------------------------------------------------------------ # Create a timer to update the messages. # self.timer = wx.Timer() self.timer.Bind(wx.EVT_TIMER, self.updateMessages) self.timer.Start(1000, False) self.Bind(wx.EVT_CLOSE, self.onCloseWindow) self.readOptions() self.SetSizer(self.vbs) self.start()
def __init__(self, parent, id=wx.ID_ANY): wx.Dialog.__init__(self, parent, id, "Advanced Setup", style=wx.DEFAULT_DIALOG_STYLE | wx.TAB_TRAVERSAL) ''' Alien.ConnectionTimeoutSeconds = 1 # Interval for connection timeout Alien.KeepaliveSeconds = 2 # Interval to request a Keepalive message Alien.RepeatSeconds = 2 # Interval in which a tag is considered a repeat read. ''' bs = wx.GridBagSizer(vgap=5, hgap=5) border = 8 bs.Add(wx.StaticText(self, wx.ID_ANY, 'Advanced Reader Options:'), pos=(0, 0), span=(1, 2), border=border, flag=wx.ALL) row = 1 bs.Add(wx.StaticText(self, wx.ID_ANY, 'Repeat Seconds'), pos=(row, 0), span=(1, 1), border=border, flag=wx.LEFT | wx.TOP | wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL) self.RepeatSeconds = intctrl.IntCtrl(self, wx.ID_ANY, min=1, max=120, limited=True, value=Alien.RepeatSeconds, size=(32, -1)) bs.Add(self.RepeatSeconds, pos=(row, 1), span=(1, 1), border=border, flag=wx.TOP) bs.Add(wx.StaticText( self, wx.ID_ANY, 'interval in which multiple tag reads are considered "repeats" and not reported' ), pos=(row, 2), span=(1, 1), border=border, flag=wx.TOP | wx.RIGHT | wx.ALIGN_CENTER_VERTICAL) row += 1 self.playSoundsCheckbox = wx.CheckBox(self, wx.ID_ANY, 'Beep on Read') self.playSoundsCheckbox.SetValue(Utils.playBell) bs.Add(self.playSoundsCheckbox, pos=(row, 0), span=(1, 3), border=border, flag=wx.TOP | wx.LEFT | wx.RIGHT) row += 1 self.restoreDefaultButton = wx.Button(self, wx.ID_ANY, 'Restore Defaults') self.restoreDefaultButton.Bind(wx.EVT_BUTTON, self.onRestoreDefault) bs.Add(self.restoreDefaultButton, pos=(row, 0), span=(1, 3), border=border, flag=wx.TOP | wx.RIGHT | wx.ALIGN_CENTER) row += 1 bs.Add(wx.StaticText( self, wx.ID_ANY, 'Reminder: Press "Reset" for these changes to take effect.'), pos=(row, 0), span=(1, 3), border=border, flag=wx.TOP | wx.RIGHT | wx.ALIGN_RIGHT) self.okBtn = wx.Button(self, wx.ID_OK) self.Bind(wx.EVT_BUTTON, self.onOK, self.okBtn) self.cancelBtn = wx.Button(self, wx.ID_CANCEL) self.Bind(wx.EVT_BUTTON, self.onCancel, self.cancelBtn) row += 1 hs = wx.BoxSizer(wx.HORIZONTAL) hs.Add(self.okBtn, border=border, flag=wx.ALL) self.okBtn.SetDefault() hs.Add(self.cancelBtn, border=border, flag=wx.ALL) bs.Add(hs, pos=(row, 0), span=(1, 3), flag=wx.ALIGN_RIGHT) self.SetSizerAndFit(bs) bs.Fit(self) self.CentreOnParent(wx.BOTH) self.SetFocus()
def InitUI(self): self.file_object = file_object() ############## ## Menu Bar ############## menubar = wx.MenuBar() fileMenu = wx.Menu() ## Add items to file menu. open_item = fileMenu.Append(wx.ID_OPEN, "&Open", "Open Excel or .csv File") self.Bind(wx.EVT_MENU, self.OnOpen, open_item) fileMenu.AppendSeparator() quit_item = fileMenu.Append(wx.ID_EXIT, '&Quit', 'Quit Application') self.Bind(wx.EVT_MENU, self.OnQuit, quit_item) ## Add file menu to the menu bar. menubar.Append(fileMenu, "&File") ## Put menu bar in frame. self.SetMenuBar(menubar) panel = wx.Panel(self) vbox = wx.BoxSizer(wx.VERTICAL) settings_flexbox = wx.FlexGridSizer(3, 2, 10, 10) ## Add a status bar to the bottom for reporting messages. #self.statusbar = self.CreateStatusBar() ############## ## Current File Display ############## current_file_header = wx.StaticText(panel, label="Current File:") self.current_file_label = wx.StaticText(panel, label="") vbox.Add(current_file_header, flag=wx.ALIGN_LEFT | wx.LEFT | wx.TOP, border=10) vbox.Add(self.current_file_label, flag=wx.ALIGN_LEFT | wx.LEFT, border=10) ############## ## Current Sheet Name ############## current_sheet_header = wx.StaticText(panel, label="Current Sheet:") self.current_sheet_label = wx.StaticText(panel, label="") vbox.Add(current_sheet_header, flag=wx.ALIGN_LEFT | wx.LEFT | wx.TOP, border=10) vbox.Add(self.current_sheet_label, flag=wx.ALIGN_LEFT | wx.LEFT, border=10) ############## ## Start Row ############## start_row_label = wx.StaticText(panel, label="Start Row:") self.start_row_entry = INTCTRL.IntCtrl( panel, value=self.file_object.start_row, min=1, limited=True) #self.start_row_entry.Bind(wx.EVT_TEXT, self.On_Start_Row) #vbox.Add(start_row_label, flag=wx.ALIGN_LEFT | wx.LEFT | wx.TOP, border=10) #vbox.Add(self.start_row_entry, flag=wx.ALIGN_LEFT | wx.LEFT, border=10) ############## ## Columns Type ############## columns_type_label = wx.StaticText(panel, label="Type of Columns:") self.columns_type_entry = wx.TextCtrl(panel, value="Compounds") #self.columns_type_entry.Bind(wx.EVT_TEXT, self.On_Columns_Type) #vbox.Add(columns_type_label, flag=wx.ALIGN_LEFT | wx.LEFT | wx.TOP, border=10) #vbox.Add(self.columns_type_entry, flag=wx.ALIGN_LEFT | wx.LEFT, border=10) ############## ## Values Type ############## values_type_label = wx.StaticText(panel, label="Type of Values:") self.values_type_entry = wx.TextCtrl(panel, value="Concentration") #self.values_type_entry.Bind(wx.EVT_TEXT, self.On_Values_Type) #vbox.Add(values_type_label, flag=wx.ALIGN_LEFT | wx.LEFT | wx.TOP, border=10) #vbox.Add(self.values_type_entry, flag=wx.ALIGN_LEFT | wx.LEFT, border=10) settings_flexbox.AddMany([ (start_row_label, wx.ALIGN_BOTTOM | wx.EXPAND), (self.start_row_entry), (columns_type_label, wx.ALIGN_BOTTOM | wx.EXPAND), (self.columns_type_entry), (values_type_label, wx.ALIGN_BOTTOM | wx.EXPAND), (self.values_type_entry) ]) vbox.Add(settings_flexbox, flag=wx.ALIGN_CENTER | wx.ALL, border=10) ############## ## Linearize Data Button ############## linearize_button = wx.Button(panel, label="Linearize Data") linearize_button.Bind(wx.EVT_BUTTON, self.OnLinearize) vbox.Add(linearize_button, flag=wx.ALIGN_CENTER | wx.ALL, border=10) panel.SetSizer(vbox) panel.Fit()
def make_main_controls(self): """Create the controls on the frame """ opt = self.options_data grid = wx.GridBagSizer(vgap=0, hgap=0) grid.SetFlexibleDirection(direction=wx.BOTH) grid.SetNonFlexibleGrowMode(mode=wx.FLEX_GROWMODE_SPECIFIED) choice_text = wx.StaticText( self, id=wx.ID_ANY, label=u"Choose type of lottery: ", pos=wx.Point(x=-1, y=-1), size=wx.DefaultSize, style=0, ) choice_text.Wrap(width=-1) grid.Add( choice_text, pos=wx.GBPosition(row=1, col=1), span=wx.GBSpan(rowspan=1, colspan=1), flag=wx.ALIGN_CENTER_VERTICAL | wx.ALL, border=5, ) lottery_combo = wx.ComboBox( self, id=self.ID_LOTTERY_TYPE, value=C.LOTTERY_CHOICES[opt.lottery_type], pos=wx.DefaultPosition, size=wx.DefaultSize, choices=C.LOTTERY_CHOICES, style=wx.CB_READONLY, ) grid.Add( lottery_combo, pos=wx.GBPosition(row=1, col=2), span=wx.GBSpan(rowspan=1, colspan=1), flag=wx.ALIGN_BOTTOM | wx.ALIGN_CENTER_VERTICAL, border=5, ) lines_text = wx.StaticText( self, id=wx.ID_ANY, label=u"Lines: ", pos=wx.Point(x=-1, y=-1), size=wx.DefaultSize, style=0, ) lines_text.Wrap(width=-1) grid.Add( lines_text, pos=wx.GBPosition(row=2, col=1), span=wx.GBSpan(rowspan=1, colspan=1), flag=wx.ALIGN_CENTER_VERTICAL | wx.ALL, border=5, ) lines_control = intctrl.IntCtrl( parent=self, value=opt.number_of_lines, pos=wx.DefaultPosition, size=wx.DefaultSize, style=0, validator=wx.DefaultValidator, min=1, max=99, limited=True, allow_none=False, allow_long=False, ) lines_control.SetMaxLength(len=2) lines_control.SetMaxSize(size=wx.Size(30, -1)) grid.Add( lines_control, pos=wx.GBPosition(row=2, col=2), span=wx.GBSpan(rowspan=1, colspan=1), flag=wx.ALIGN_CENTER_VERTICAL | wx.ALL, border=5, ) radio_box = wx.RadioBox( self, id=wx.ID_ANY, label=u"Options", pos=wx.DefaultPosition, size=wx.DefaultSize, choices=C.OPTIONS_CHOICES, majorDimension=1, style=wx.RA_SPECIFY_ROWS | wx.BORDER_RAISED, ) radio_box.SetSelection(n=opt.option) flags = wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL | wx.ALL grid.Add( radio_box, pos=wx.GBPosition(row=3, col=1), span=wx.GBSpan(rowspan=1, colspan=2), flag=flags, border=5, ) button_sizer = wx.StdDialogButtonSizer() ok_button = wx.Button(parent=self, id=wx.ID_OK) button_sizer.AddButton(button=ok_button) cancel_button = wx.Button(parent=self, id=wx.ID_CANCEL) button_sizer.AddButton(button=cancel_button) button_sizer.Realize() grid.Add( button_sizer, pos=wx.GBPosition(row=5, col=1), span=wx.GBSpan(rowspan=1, colspan=2), flag=wx.ALIGN_CENTER_HORIZONTAL, border=5, ) self.SetSizer(grid) lottery_combo.Bind(event=wx.EVT_COMBOBOX, handler=self.on_type_combo, id=self.ID_LOTTERY_TYPE) self.Bind(event=intctrl.EVT_INT, handler=self.on_line_control, source=lines_control) radio_box.Bind(event=wx.EVT_RADIOBOX, handler=self.on_radiobox) self.Bind(event=wx.EVT_BUTTON, handler=self.on_ok, source=ok_button, id=wx.ID_OK) self.Bind( event=wx.EVT_BUTTON, handler=self.on_cancel, source=cancel_button, id=wx.ID_CANCEL, )
def __init__(self, parent, size, listener): wx.Panel.__init__(self, parent, size=size) self.listener = listener ## Header self.header = wx.StaticText(self, -1, "Controls") headerFont = wx.Font(16, wx.DECORATIVE, wx.NORMAL, wx.BOLD) self.header.SetFont(headerFont) ## Config input configFileText = wx.StaticText(self, -1, "Config:") self.configFilename = wx.FilePickerCtrl( self, path=os.path.abspath(DEFAULT_CONFIG_FILENAME), size=(200, -1)) configFileSizer = wx.BoxSizer(wx.HORIZONTAL) configFileSizer.Add(configFileText) # label configFileSizer.Add((20, -1), proportion=1) # spacing configFileSizer.Add(self.configFilename) ## Start button self.startButton = wx.Button(self, id=ID_START, label="&Initialize") self.Bind(wx.EVT_BUTTON, self.listener.OnStart, self.startButton) ## Run rounds, steps inputs rounds_label = wx.StaticText(self, -1, "Rounds: ") self.rounds_input = intctrl.IntCtrl(self, size=(40, -1), value=0, min=0) steps_label = wx.StaticText(self, -1, "Steps: ") self.steps_input = intctrl.IntCtrl(self, size=(40, -1), value=1, min=0) ## Run button self.runButton = wx.Button(self, id=ID_RUN, label="&Run") self.Bind(wx.EVT_BUTTON, self.OnRun, self.runButton) runConfigSizer = wx.BoxSizer(wx.HORIZONTAL) runConfigSizer.Add(rounds_label) runConfigSizer.Add(self.rounds_input) runConfigSizer.Add((10, -1)) # padding runConfigSizer.Add(steps_label) runConfigSizer.Add(self.steps_input) runConfigSizer.Add((20, -1), proportion=1) # padding runConfigSizer.Add(self.runButton) ## Stop button self.stopButton = wx.Button(self, id=ID_STOP, label="S&top") self.Bind(wx.EVT_BUTTON, self.listener.OnStop, self.stopButton) # Sizer controlsSizer = wx.BoxSizer(wx.VERTICAL) controlsSizer.Add(self.header) controlsSizer.Add(configFileSizer) controlsSizer.Add(self.startButton) controlsSizer.Add(runConfigSizer) controlsSizer.Add(self.stopButton) self.SetSizerAndFit(controlsSizer) self.reset_buttons()