def __init__(self, parent): """ Create a new control panel. @param parent the wx parent window """ self.parent = parent wx.Panel.__init__(self, parent, style=wx.SUNKEN_BORDER) parent[constants.SHOW_CONTROL_PANEL_KEY] = True parent.subscribe(constants.SHOW_CONTROL_PANEL_KEY, self.Show) control_box = wx.BoxSizer(wx.VERTICAL) control_box.AddStretchSpacer() #checkboxes for average and peak hold options_box = forms.static_box_sizer( parent=self, sizer=control_box, label='Trace Options', bold=True, orient=wx.VERTICAL, ) forms.check_box( sizer=options_box, parent=self, label='Peak Hold', ps=parent, key=constants.PEAK_HOLD_KEY, ) forms.check_box( sizer=options_box, parent=self, label='Average', ps=parent, key=constants.AVERAGE_KEY, ) #static text and slider for averaging avg_alpha_text = forms.static_text( sizer=options_box, parent=self, label='Avg Alpha', converter=forms.float_converter(lambda x: '%.4f'%x), ps=parent, key=constants.AVG_ALPHA_KEY, width=50, ) avg_alpha_slider = forms.log_slider( sizer=options_box, parent=self, min_exp=AVG_ALPHA_MIN_EXP, max_exp=AVG_ALPHA_MAX_EXP, num_steps=SLIDER_STEPS, ps=parent, key=constants.AVG_ALPHA_KEY, ) for widget in (avg_alpha_text, avg_alpha_slider): parent.subscribe(constants.AVERAGE_KEY, widget.Enable) widget.Enable(parent[constants.AVERAGE_KEY]) parent.subscribe(constants.AVERAGE_KEY, widget.ShowItems) #allways show initially, so room is reserved for them widget.ShowItems(True) # (parent[AVERAGE_KEY]) parent.subscribe(constants.AVERAGE_KEY, self._update_layout) forms.check_box( sizer=options_box, parent=self, label='Persistence', ps=parent, key=constants.USE_PERSISTENCE_KEY, ) #static text and slider for persist alpha persist_alpha_text = forms.static_text( sizer=options_box, parent=self, label='Persist Alpha', converter=forms.float_converter(lambda x: '%.4f'%x), ps=parent, key=constants.PERSIST_ALPHA_KEY, width=50, ) persist_alpha_slider = forms.log_slider( sizer=options_box, parent=self, min_exp=PERSIST_ALPHA_MIN_EXP, max_exp=PERSIST_ALPHA_MAX_EXP, num_steps=SLIDER_STEPS, ps=parent, key=constants.PERSIST_ALPHA_KEY, ) for widget in (persist_alpha_text, persist_alpha_slider): parent.subscribe(constants.USE_PERSISTENCE_KEY, widget.Enable) widget.Enable(parent[constants.USE_PERSISTENCE_KEY]) parent.subscribe(constants.USE_PERSISTENCE_KEY, widget.ShowItems) #allways show initially, so room is reserved for them widget.ShowItems(True) # (parent[USE_PERSISTENCE_KEY]) parent.subscribe(constants.USE_PERSISTENCE_KEY, self._update_layout) #trace menu for trace in TRACES: trace_box = wx.BoxSizer(wx.HORIZONTAL) options_box.Add(trace_box, 0, wx.EXPAND) forms.check_box( sizer=trace_box, parent=self, ps=parent, key=constants.TRACE_SHOW_KEY+trace, label='Trace %s'%trace, ) trace_box.AddSpacer(10) forms.single_button( sizer=trace_box, parent=self, ps=parent, key=constants.TRACE_STORE_KEY+trace, label='Store', style=wx.BU_EXACTFIT, ) trace_box.AddSpacer(10) #radio buttons for div size control_box.AddStretchSpacer() y_ctrl_box = forms.static_box_sizer( parent=self, sizer=control_box, label='Axis Options', bold=True, orient=wx.VERTICAL, ) forms.incr_decr_buttons( parent=self, sizer=y_ctrl_box, label='dB/Div', on_incr=self._on_incr_db_div, on_decr=self._on_decr_db_div, ) #ref lvl buttons forms.incr_decr_buttons( parent=self, sizer=y_ctrl_box, label='Ref Level', on_incr=self._on_incr_ref_level, on_decr=self._on_decr_ref_level, ) y_ctrl_box.AddSpacer(2) #autoscale forms.single_button( sizer=y_ctrl_box, parent=self, label='Autoscale', callback=self.parent.autoscale, ) #run/stop control_box.AddStretchSpacer() forms.toggle_button( sizer=control_box, parent=self, true_label='Stop', false_label='Run', ps=parent, key=constants.RUNNING_KEY, ) #set sizer self.SetSizerAndFit(control_box) def on_mouse_wheel(event): """ Mouse wheel event """ if event.GetWheelRotation() < 0: self._on_incr_ref_level(event) else: self._on_decr_ref_level(event) parent.plotter.Bind(wx.EVT_MOUSEWHEEL, on_mouse_wheel)
def __init__(self, parent): """ Create a new control panel. Args: parent: the wx parent window """ self.parent = parent wx.Panel.__init__(self, parent, style=wx.SUNKEN_BORDER) parent[SHOW_CONTROL_PANEL_KEY] = True parent.subscribe(SHOW_CONTROL_PANEL_KEY, self.Show) control_box = wx.BoxSizer(wx.VERTICAL) control_box.AddStretchSpacer() options_box = forms.static_box_sizer( parent=self, sizer=control_box, label="Options", bold=True, orient=wx.VERTICAL ) # average # forms.check_box( # sizer=options_box, parent=self, label='Average', # ps=parent, key=AVERAGE_KEY, # ) # avg_alpha_text = forms.static_text( # sizer=options_box, parent=self, label='Avg Alpha', # converter=forms.float_converter(lambda x: '%.4f'%x), # ps=parent, key=AVG_ALPHA_KEY, width=50, # ) # avg_alpha_slider = forms.log_slider( # sizer=options_box, parent=self, # min_exp=AVG_ALPHA_MIN_EXP, # max_exp=AVG_ALPHA_MAX_EXP, # num_steps=SLIDER_STEPS, # ps=parent, key=AVG_ALPHA_KEY, # ) # for widget in (avg_alpha_text, avg_alpha_slider): # parent.subscribe(AVERAGE_KEY, widget.Enable) # widget.Enable(parent[AVERAGE_KEY]) # begin axes box control_box.AddStretchSpacer() axes_box = forms.static_box_sizer( parent=self, sizer=control_box, label="Axes Options", bold=True, orient=wx.VERTICAL ) # num lines buttons # forms.incr_decr_buttons( # parent=self, sizer=axes_box, label='Time Scale', # on_incr=self._on_incr_time_scale, on_decr=self._on_decr_time_scale, # ) # dyanmic range buttons forms.incr_decr_buttons( parent=self, sizer=axes_box, label="Dyn Range", on_incr=self._on_incr_dynamic_range, on_decr=self._on_decr_dynamic_range, ) # ref lvl buttons forms.incr_decr_buttons( parent=self, sizer=axes_box, label="Ref Level", on_incr=self._on_incr_ref_level, on_decr=self._on_decr_ref_level, ) # color mode forms.drop_down( parent=self, sizer=axes_box, width=100, ps=parent, key=COLOR_MODE_KEY, label="Color", choices=map(lambda x: x[1], COLOR_MODES), labels=map(lambda x: x[0], COLOR_MODES), ) # autoscale forms.single_button(parent=self, sizer=axes_box, label="Autoscale", callback=self.parent.autoscale) # clear control_box.AddStretchSpacer() forms.single_button(parent=self, sizer=control_box, label="Clear", callback=self._on_clear_button) # run/stop forms.toggle_button( sizer=control_box, parent=self, true_label="Stop", false_label="Run", ps=parent, key=RUNNING_KEY ) # set sizer self.SetSizerAndFit(control_box)
def __init__(self, parent): """ Create a new control panel. Args: parent: the wx parent window """ self.parent = parent wx.Panel.__init__(self, parent, style=wx.SUNKEN_BORDER) parent[SHOW_CONTROL_PANEL_KEY] = True parent.subscribe(SHOW_CONTROL_PANEL_KEY, self.Show) control_box = wx.BoxSizer(wx.VERTICAL) control_box.AddStretchSpacer() options_box = forms.static_box_sizer( parent=self, sizer=control_box, label='Options', bold=True, orient=wx.VERTICAL, ) #average #forms.check_box( # sizer=options_box, parent=self, label='Average', # ps=parent, key=AVERAGE_KEY, #) #avg_alpha_text = forms.static_text( # sizer=options_box, parent=self, label='Avg Alpha', # converter=forms.float_converter(lambda x: '%.4f'%x), # ps=parent, key=AVG_ALPHA_KEY, width=50, #) #avg_alpha_slider = forms.log_slider( # sizer=options_box, parent=self, # min_exp=AVG_ALPHA_MIN_EXP, # max_exp=AVG_ALPHA_MAX_EXP, # num_steps=SLIDER_STEPS, # ps=parent, key=AVG_ALPHA_KEY, #) #for widget in (avg_alpha_text, avg_alpha_slider): # parent.subscribe(AVERAGE_KEY, widget.Enable) # widget.Enable(parent[AVERAGE_KEY]) #begin axes box control_box.AddStretchSpacer() axes_box = forms.static_box_sizer( parent=self, sizer=control_box, label='Axes Options', bold=True, orient=wx.VERTICAL, ) #num lines buttons #forms.incr_decr_buttons( # parent=self, sizer=axes_box, label='Time Scale', # on_incr=self._on_incr_time_scale, on_decr=self._on_decr_time_scale, #) #dyanmic range buttons forms.incr_decr_buttons( parent=self, sizer=axes_box, label='Dyn Range', on_incr=self._on_incr_dynamic_range, on_decr=self._on_decr_dynamic_range, ) #ref lvl buttons forms.incr_decr_buttons( parent=self, sizer=axes_box, label='Ref Level', on_incr=self._on_incr_ref_level, on_decr=self._on_decr_ref_level, ) #color mode forms.drop_down( parent=self, sizer=axes_box, width=100, ps=parent, key=COLOR_MODE_KEY, label='Color', choices=map(lambda x: x[1], COLOR_MODES), labels=map(lambda x: x[0], COLOR_MODES), ) #autoscale forms.single_button( parent=self, sizer=axes_box, label='Autoscale', callback=self.parent.autoscale, ) #clear control_box.AddStretchSpacer() forms.single_button( parent=self, sizer=control_box, label='Clear', callback=self._on_clear_button, ) #run/stop forms.toggle_button( sizer=control_box, parent=self, true_label='Stop', false_label='Run', ps=parent, key=RUNNING_KEY, ) #set sizer self.SetSizerAndFit(control_box)