Merge commit 'v3.3.1' into try-3.3.1
[debian/gnuradio] / gr-wxgui / src / python / scope_window.py
index aace8688f2a2e46ed65bace7e711b493bd019b8e..89a808cec055e9250ed2c0c46819747d5d69354c 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright 2008 Free Software Foundation, Inc.
+# Copyright 2008,2010 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -36,8 +36,9 @@ import forms
 # Constants
 ##################################################
 DEFAULT_FRAME_RATE = gr.prefs().get_long('wxgui', 'scope_rate', 30)
-ANALOG_ALPHA_MIN_EXP, ANALOG_ALPHA_MAX_EXP = -2, 0
+PERSIST_ALPHA_MIN_EXP, PERSIST_ALPHA_MAX_EXP = -2, 0
 SLIDER_STEPS = 100
+DEFAULT_TRIG_MODE = gr.prefs().get_long('wxgui', 'trig_mode', gr.gr_TRIG_MODE_AUTO)
 DEFAULT_WIN_SIZE = (600, 300)
 COUPLING_MODES = (
        ('DC', False),
@@ -47,6 +48,7 @@ TRIGGER_MODES = (
        ('Freerun', gr.gr_TRIG_MODE_FREE),
        ('Auto', gr.gr_TRIG_MODE_AUTO),
        ('Normal', gr.gr_TRIG_MODE_NORM),
+       ('Stripchart', gr.gr_TRIG_MODE_STRIPCHART),
 )
 TRIGGER_SLOPES = (
        ('Pos +', gr.gr_TRIG_SLOPE_POS),
@@ -92,34 +94,34 @@ class control_panel(wx.Panel):
                control_box = wx.BoxSizer(wx.VERTICAL)
 
                ##################################################
-               # Emulate Analog
+               # Persistence
                ##################################################
 
                forms.check_box(
-                       sizer=control_box, parent=self, label='Emulate Analog',
-                       ps=parent, key=EMULATE_ANALOG_KEY,
+                       sizer=control_box, parent=self, label='Persistence',
+                       ps=parent, key=USE_PERSISTENCE_KEY,
                )
                #static text and slider for analog alpha
-               analog_alpha_text = forms.static_text(
+               persist_alpha_text = forms.static_text(
                        sizer=control_box, parent=self, label='Analog Alpha',
                        converter=forms.float_converter(lambda x: '%.4f'%x),
-                       ps=parent, key=ANALOG_ALPHA_KEY, width=50,
+                       ps=parent, key=PERSIST_ALPHA_KEY, width=50,
                )
-               analog_alpha_slider = forms.log_slider(
+               persist_alpha_slider = forms.log_slider(
                        sizer=control_box, parent=self,
-                       min_exp=ANALOG_ALPHA_MIN_EXP,
-                       max_exp=ANALOG_ALPHA_MAX_EXP,
+                       min_exp=PERSIST_ALPHA_MIN_EXP,
+                       max_exp=PERSIST_ALPHA_MAX_EXP,
                        num_steps=SLIDER_STEPS,
-                       ps=parent, key=ANALOG_ALPHA_KEY,
+                       ps=parent, key=PERSIST_ALPHA_KEY,
                )
-               for widget in (analog_alpha_text, analog_alpha_slider):
-                       parent.subscribe(EMULATE_ANALOG_KEY, widget.Enable)
-                       widget.Enable(parent[EMULATE_ANALOG_KEY])
-                       parent.subscribe(EMULATE_ANALOG_KEY, widget.ShowItems)
+               for widget in (persist_alpha_text, persist_alpha_slider):
+                       parent.subscribe(USE_PERSISTENCE_KEY, widget.Enable)
+                       widget.Enable(parent[USE_PERSISTENCE_KEY])
+                       parent.subscribe(USE_PERSISTENCE_KEY, widget.ShowItems)
                         #allways show initially, so room is reserved for them
-                       widget.ShowItems(True) # (parent[EMULATE_ANALOG_KEY])
+                       widget.ShowItems(True) # (parent[USE_PERSISTENCE_KEY])
                
-                parent.subscribe(EMULATE_ANALOG_KEY, self._update_layout)
+                parent.subscribe(USE_PERSISTENCE_KEY, self._update_layout)
 
                ##################################################
                # Axes Options
@@ -430,8 +432,10 @@ class scope_window(wx.Panel, pubsub.pubsub):
                trigger_channel_key,
                decimation_key,
                msg_key,
-                emulate_analog,
-                analog_alpha,
+                use_persistence,
+                persist_alpha,
+               trig_mode,
+               y_axis_label,
        ):
                pubsub.pubsub.__init__(self)
                #check num inputs
@@ -468,14 +472,20 @@ class scope_window(wx.Panel, pubsub.pubsub):
                self[T_DIVS_KEY] = 8
                self[X_DIVS_KEY] = 8
                self[Y_DIVS_KEY] = 8
+               self[Y_AXIS_LABEL] = y_axis_label
                self[FRAME_RATE_KEY] = frame_rate
                self[TRIGGER_LEVEL_KEY] = 0
                self[TRIGGER_CHANNEL_KEY] = 0
-               self[TRIGGER_MODE_KEY] = gr.gr_TRIG_MODE_AUTO
+               self[TRIGGER_MODE_KEY] = trig_mode
+               
                self[TRIGGER_SLOPE_KEY] = gr.gr_TRIG_SLOPE_POS
                self[T_FRAC_OFF_KEY] = 0.5
-               self[EMULATE_ANALOG_KEY] = emulate_analog
-               self[ANALOG_ALPHA_KEY] = analog_alpha
+               self[USE_PERSISTENCE_KEY] = use_persistence
+               self[PERSIST_ALPHA_KEY] = persist_alpha
+               
+               if self[TRIGGER_MODE_KEY] == gr.gr_TRIG_MODE_STRIPCHART:
+                       self[T_FRAC_OFF_KEY] = 0.0
+
                for i in range(num_inputs):
                        self.proxy(common.index_key(AC_COUPLE_KEY, i), controller, common.index_key(ac_couple_key, i))
                #init panel and plot
@@ -486,8 +496,8 @@ class scope_window(wx.Panel, pubsub.pubsub):
                self.plotter.enable_legend(True)
                self.plotter.enable_point_label(True)
                self.plotter.enable_grid_lines(True)
-                self.plotter.set_emulate_analog(emulate_analog)
-                self.plotter.set_analog_alpha(analog_alpha)
+                self.plotter.set_use_persistence(use_persistence)
+                self.plotter.set_persist_alpha(persist_alpha)
                #setup the box with plot and controls
                self.control_panel = control_panel(self)
                main_box = wx.BoxSizer(wx.HORIZONTAL)
@@ -506,8 +516,8 @@ class scope_window(wx.Panel, pubsub.pubsub):
                        TRIGGER_SHOW_KEY, XY_MARKER_KEY, X_CHANNEL_KEY, Y_CHANNEL_KEY,
                ]: self.subscribe(key, self.update_grid)
                 #register events for plotter settings
-               self.subscribe(EMULATE_ANALOG_KEY, self.plotter.set_emulate_analog)
-               self.subscribe(ANALOG_ALPHA_KEY, self.plotter.set_analog_alpha)
+               self.subscribe(USE_PERSISTENCE_KEY, self.plotter.set_use_persistence)
+               self.subscribe(PERSIST_ALPHA_KEY, self.plotter.set_persist_alpha)
                #initial update
                self.update_grid()
 
@@ -668,7 +678,7 @@ class scope_window(wx.Panel, pubsub.pubsub):
                        self.plotter.set_x_label('Time', 's')
                        self.plotter.set_x_grid(self.get_t_min(), self.get_t_max(), self[T_PER_DIV_KEY], True)
                        #update the y axis
-                       self.plotter.set_y_label('Counts')
+                       self.plotter.set_y_label(self[Y_AXIS_LABEL])
                        self.plotter.set_y_grid(self.get_y_min(), self.get_y_max(), self[Y_PER_DIV_KEY])
                #redraw current sample
                self.handle_samples()