Esempio n. 1
0
    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)
Esempio n. 2
0
    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)
Esempio n. 3
0
    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)