diff options
Diffstat (limited to 'gr-wxgui')
-rw-r--r-- | gr-wxgui/src/python/common.py | 28 | ||||
-rw-r--r-- | gr-wxgui/src/python/const_window.py | 6 | ||||
-rw-r--r-- | gr-wxgui/src/python/constsink_gl.py | 2 | ||||
-rw-r--r-- | gr-wxgui/src/python/fft_window.py | 10 | ||||
-rw-r--r-- | gr-wxgui/src/python/fftsink_gl.py | 2 | ||||
-rw-r--r-- | gr-wxgui/src/python/fftsink_nongl.py | 2 | ||||
-rw-r--r-- | gr-wxgui/src/python/number_window.py | 8 | ||||
-rw-r--r-- | gr-wxgui/src/python/numbersink2.py | 2 | ||||
-rw-r--r-- | gr-wxgui/src/python/plotter/channel_plotter.py | 16 | ||||
-rw-r--r-- | gr-wxgui/src/python/plotter/plotter_base.py | 40 | ||||
-rw-r--r-- | gr-wxgui/src/python/plotter/waterfall_plotter.py | 22 | ||||
-rw-r--r-- | gr-wxgui/src/python/pubsub.py | 2 | ||||
-rw-r--r-- | gr-wxgui/src/python/scope_window.py | 10 | ||||
-rw-r--r-- | gr-wxgui/src/python/scopesink_gl.py | 2 | ||||
-rw-r--r-- | gr-wxgui/src/python/waterfall_window.py | 10 | ||||
-rw-r--r-- | gr-wxgui/src/python/waterfallsink_gl.py | 2 |
16 files changed, 82 insertions, 82 deletions
diff --git a/gr-wxgui/src/python/common.py b/gr-wxgui/src/python/common.py index 21f741c98..429764882 100644 --- a/gr-wxgui/src/python/common.py +++ b/gr-wxgui/src/python/common.py @@ -34,7 +34,7 @@ class prop_setter(object): # Input Watcher Thread ################################################## class input_watcher(threading.Thread): - """! + """ Input watcher thread runs forever. Read messages from the message queue. Forward messages to the message handler. @@ -54,7 +54,7 @@ class input_watcher(threading.Thread): # WX Shared Classes ################################################## class LabelText(wx.StaticText): - """! + """ Label text to give the wx plots a uniform look. Get the default label text and set the font bold. """ @@ -65,11 +65,11 @@ class LabelText(wx.StaticText): self.SetFont(font) class IncrDecrButtons(wx.BoxSizer): - """! + """ A horizontal box sizer with a increment and a decrement button. """ def __init__(self, parent, on_incr, on_decr): - """! + """ @param parent the parent window @param on_incr the event handler for increment @param on_decr the event handler for decrement @@ -114,7 +114,7 @@ class CheckBoxController(wx.CheckBox): self._controller[self._control_key] = bool(e.IsChecked()) class LogSliderController(wx.BoxSizer): - """! + """ Log slider controller with display label and slider. Gives logarithmic scaling to slider operation. """ @@ -146,12 +146,12 @@ class LogSliderController(wx.BoxSizer): self._label.Disable() class DropDownController(wx.BoxSizer): - """! + """ Drop down controller with label and chooser. Srop down selection from a set of choices. """ def __init__(self, parent, label, choices, controller, control_key, size=(-1, -1)): - """! + """ @param parent the parent window @param label the label for the drop down @param choices a list of tuples -> (label, value) @@ -185,7 +185,7 @@ class DropDownController(wx.BoxSizer): # Shared Functions ################################################## def get_exp(num): - """! + """ Get the exponent of the number in base 10. @param num the floating point number @return the exponent as an integer @@ -194,7 +194,7 @@ def get_exp(num): return int(math.floor(math.log10(abs(num)))) def get_clean_num(num): - """! + """ Get the closest clean number match to num with bases 1, 2, 5. @param num the number @return the closest number @@ -207,7 +207,7 @@ def get_clean_num(num): return sign*nums[numpy.argmin(numpy.abs(nums - abs(num)))] def get_clean_incr(num): - """! + """ Get the next higher clean number with bases 1, 2, 5. @param num the number @return the next higher number @@ -225,7 +225,7 @@ def get_clean_incr(num): }[coeff]*(10**exp) def get_clean_decr(num): - """! + """ Get the next lower clean number with bases 1, 2, 5. @param num the number @return the next lower number @@ -243,7 +243,7 @@ def get_clean_decr(num): }[coeff]*(10**exp) def get_min_max(samples): - """! + """ Get the minimum and maximum bounds for an array of samples. @param samples the array of real values @return a tuple of min, max @@ -256,7 +256,7 @@ def get_min_max(samples): return min, max def get_si_components(num): - """! + """ Get the SI units for the number. Extract the coeff and exponent of the number. The exponent will be a multiple of 3. @@ -281,7 +281,7 @@ def get_si_components(num): return coeff, exp, prefix def label_format(num): - """! + """ Format a floating point number into a presentable string. If the number has an small enough exponent, use regular decimal. Otherwise, format the number with floating point notation. diff --git a/gr-wxgui/src/python/const_window.py b/gr-wxgui/src/python/const_window.py index 366242cb0..0aea5b596 100644 --- a/gr-wxgui/src/python/const_window.py +++ b/gr-wxgui/src/python/const_window.py @@ -52,11 +52,11 @@ DEFAULT_MARKER_TYPE = 2.0 # Constellation window control panel ################################################## class control_panel(wx.Panel): - """! + """ A control panel with wx widgits to control the plotter. """ def __init__(self, parent): - """! + """ Create a new control panel. @param parent the wx parent window """ @@ -152,7 +152,7 @@ class const_window(wx.Panel, pubsub.pubsub, common.prop_setter): self.update_grid() def handle_msg(self, msg): - """! + """ Plot the samples onto the complex grid. @param msg the array of complex samples """ diff --git a/gr-wxgui/src/python/constsink_gl.py b/gr-wxgui/src/python/constsink_gl.py index 2e1f3c5a0..64666e462 100644 --- a/gr-wxgui/src/python/constsink_gl.py +++ b/gr-wxgui/src/python/constsink_gl.py @@ -32,7 +32,7 @@ from constants import * # Constellation sink block (wrapper for old wxgui) ################################################## class const_sink_c(gr.hier_block2, common.prop_setter): - """! + """ A constellation block with a gui window. """ diff --git a/gr-wxgui/src/python/fft_window.py b/gr-wxgui/src/python/fft_window.py index 5f48e8324..a8c66dc89 100644 --- a/gr-wxgui/src/python/fft_window.py +++ b/gr-wxgui/src/python/fft_window.py @@ -46,12 +46,12 @@ NO_PEAK_VALS = list() # FFT window control panel ################################################## class control_panel(wx.Panel): - """! + """ A control panel with wx widgits to control the plotter and fft block chain. """ def __init__(self, parent): - """! + """ Create a new control panel. @param parent the wx parent window """ @@ -192,7 +192,7 @@ class fft_window(wx.Panel, pubsub.pubsub, common.prop_setter): self.update_grid() def autoscale(self, *args): - """! + """ Autoscale the fft plot to the last frame. Set the dynamic range and reference level. """ @@ -211,7 +211,7 @@ class fft_window(wx.Panel, pubsub.pubsub, common.prop_setter): def _reset_peak_vals(self): self.peak_vals = NO_PEAK_VALS def handle_msg(self, msg): - """! + """ Handle the message from the fft sink message queue. If complex, reorder the fft samples so the negative bins come first. If real, keep take only the positive bins. @@ -248,7 +248,7 @@ class fft_window(wx.Panel, pubsub.pubsub, common.prop_setter): self.plotter.update() def update_grid(self, *args): - """! + """ Update the plotter grid. This update method is dependent on the variables below. Determine the x and y axis grid parameters. diff --git a/gr-wxgui/src/python/fftsink_gl.py b/gr-wxgui/src/python/fftsink_gl.py index db402618e..7dd200d93 100644 --- a/gr-wxgui/src/python/fftsink_gl.py +++ b/gr-wxgui/src/python/fftsink_gl.py @@ -32,7 +32,7 @@ from constants import * # FFT sink block (wrapper for old wxgui) ################################################## class _fft_sink_base(gr.hier_block2, common.prop_setter): - """! + """ An fft block with real/complex inputs and a gui window. """ diff --git a/gr-wxgui/src/python/fftsink_nongl.py b/gr-wxgui/src/python/fftsink_nongl.py index f4e9143f1..d455ddc27 100644 --- a/gr-wxgui/src/python/fftsink_nongl.py +++ b/gr-wxgui/src/python/fftsink_nongl.py @@ -278,7 +278,7 @@ class control_panel(wx.Panel): self.update() def update(self): - """! + """ Read the state of the fft plot settings and update the control panel. """ #update checkboxes diff --git a/gr-wxgui/src/python/number_window.py b/gr-wxgui/src/python/number_window.py index 8572b7c4a..83f19f6eb 100644 --- a/gr-wxgui/src/python/number_window.py +++ b/gr-wxgui/src/python/number_window.py @@ -42,12 +42,12 @@ DEFAULT_GAUGE_RANGE = 1000 # Number window control panel ################################################## class control_panel(wx.Panel): - """! + """ A control panel with wx widgits to control the averaging. """ def __init__(self, parent): - """! + """ Create a new control panel. @param parent the wx parent window """ @@ -136,7 +136,7 @@ class number_window(wx.Panel, pubsub.pubsub, common.prop_setter): self.ext_controller.subscribe(msg_key, self.handle_msg) def show_gauges(self, show_gauge): - """! + """ Show or hide the gauges. If this is real, never show the imaginary gauge. @param show_gauge true to show @@ -147,7 +147,7 @@ class number_window(wx.Panel, pubsub.pubsub, common.prop_setter): else: self.gauge_imag.Hide() def handle_msg(self, msg): - """! + """ Handle a message from the message queue. Convert the string based message into a float or complex. If more than one number was read, only take the last number. diff --git a/gr-wxgui/src/python/numbersink2.py b/gr-wxgui/src/python/numbersink2.py index 4b232d81d..9e52745d8 100644 --- a/gr-wxgui/src/python/numbersink2.py +++ b/gr-wxgui/src/python/numbersink2.py @@ -32,7 +32,7 @@ from constants import * # Number sink block (wrapper for old wxgui) ################################################## class _number_sink_base(gr.hier_block2, common.prop_setter): - """! + """ An decimator block with a number window display """ diff --git a/gr-wxgui/src/python/plotter/channel_plotter.py b/gr-wxgui/src/python/plotter/channel_plotter.py index e7e83e5fa..8fa28410b 100644 --- a/gr-wxgui/src/python/plotter/channel_plotter.py +++ b/gr-wxgui/src/python/plotter/channel_plotter.py @@ -41,7 +41,7 @@ MARKERY_KEY = 'marker' class channel_plotter(grid_plotter_base): def __init__(self, parent): - """! + """ Create a new channel plotter. """ #init @@ -50,14 +50,14 @@ class channel_plotter(grid_plotter_base): self.enable_legend(False) def _gl_init(self): - """! + """ Run gl initialization tasks. """ glEnableClientState(GL_VERTEX_ARRAY) self._grid_compiled_list_id = glGenLists(1) def enable_legend(self, enable=None): - """! + """ Enable/disable the legend. @param enable true to enable @return the enable state when None @@ -69,7 +69,7 @@ class channel_plotter(grid_plotter_base): self.unlock() def draw(self): - """! + """ Draw the grid and waveforms. """ self.lock() @@ -100,7 +100,7 @@ class channel_plotter(grid_plotter_base): self.unlock() def _draw_waveforms(self): - """! + """ Draw the waveforms for each channel. Scale the waveform data to the grid using gl matrix operations. """ @@ -134,7 +134,7 @@ class channel_plotter(grid_plotter_base): glPopMatrix() def _populate_point_label(self, x_val, y_val): - """! + """ Get the text the will populate the point label. Give X and Y values for the current point. Give values for the channel at the X coordinate. @@ -164,7 +164,7 @@ class channel_plotter(grid_plotter_base): return label_str def _draw_legend(self): - """! + """ Draw the legend in the upper right corner. For each channel, draw a rectangle out of the channel color, and overlay the channel text on top of the rectangle. @@ -189,7 +189,7 @@ class channel_plotter(grid_plotter_base): x_off -= w + 4*LEGEND_BOX_PADDING def set_waveform(self, channel, samples, color_spec, marker=None): - """! + """ Set the waveform for a given channel. @param channel the channel key @param samples the waveform samples diff --git a/gr-wxgui/src/python/plotter/plotter_base.py b/gr-wxgui/src/python/plotter/plotter_base.py index bc42eed1e..6d5349a5f 100644 --- a/gr-wxgui/src/python/plotter/plotter_base.py +++ b/gr-wxgui/src/python/plotter/plotter_base.py @@ -42,12 +42,12 @@ POINT_LABEL_PADDING = 3 # OpenGL WX Plotter Canvas ################################################## class _plotter_base(wx.glcanvas.GLCanvas): - """! + """ Plotter base class for all plot types. """ def __init__(self, parent): - """! + """ Create a new plotter base. Initialize the GLCanvas with double buffering. Initialize various plotter flags. @@ -68,14 +68,14 @@ class _plotter_base(wx.glcanvas.GLCanvas): def unlock(self): self._global_lock.release() def _on_size(self, event): - """! + """ Flag the resize event. The paint event will handle the actual resizing. """ self._resized_flag = True def _on_paint(self, event): - """! + """ Respond to paint events, call update. Initialize GL if this is the first paint event. """ @@ -101,7 +101,7 @@ class _plotter_base(wx.glcanvas.GLCanvas): self.draw() def update(self): - """! + """ Force a paint event. Record the timestamp. """ @@ -111,7 +111,7 @@ class _plotter_base(wx.glcanvas.GLCanvas): def clear(self): glClear(GL_COLOR_BUFFER_BIT) def changed(self, state=None): - """! + """ Set the changed flag if state is not None. Otherwise return the changed flag. """ @@ -140,7 +140,7 @@ class grid_plotter_base(_plotter_base): self.Bind(wx.EVT_LEAVE_WINDOW, self._on_leave_window) def _on_motion(self, event): - """! + """ Mouse motion, record the position X, Y. """ self.lock() @@ -150,7 +150,7 @@ class grid_plotter_base(_plotter_base): self.unlock() def _on_leave_window(self, event): - """! + """ Mouse leave window, set the position to None. """ self.lock() @@ -159,7 +159,7 @@ class grid_plotter_base(_plotter_base): self.unlock() def enable_point_label(self, enable=None): - """! + """ Enable/disable the point label. @param enable true to enable @return the enable state when None @@ -171,7 +171,7 @@ class grid_plotter_base(_plotter_base): self.unlock() def set_title(self, title): - """! + """ Set the title. @param title the title string """ @@ -181,7 +181,7 @@ class grid_plotter_base(_plotter_base): self.unlock() def set_x_label(self, x_label, x_units=''): - """! + """ Set the x label and units. @param x_label the x label string @param x_units the x units string @@ -193,7 +193,7 @@ class grid_plotter_base(_plotter_base): self.unlock() def set_y_label(self, y_label, y_units=''): - """! + """ Set the y label and units. @param y_label the y label string @param y_units the y units string @@ -205,7 +205,7 @@ class grid_plotter_base(_plotter_base): self.unlock() def set_x_grid(self, x_min, x_max, x_step, x_scalar=1.0): - """! + """ Set the x grid parameters. @param x_min the left-most value @param x_max the right-most value @@ -221,7 +221,7 @@ class grid_plotter_base(_plotter_base): self.unlock() def set_y_grid(self, y_min, y_max, y_step, y_scalar=1.0): - """! + """ Set the y grid parameters. @param y_min the bottom-most value @param y_max the top-most value @@ -237,7 +237,7 @@ class grid_plotter_base(_plotter_base): self.unlock() def _draw_grid(self): - """! + """ Draw the border, grid, title, and units. """ ################################################## @@ -306,7 +306,7 @@ class grid_plotter_base(_plotter_base): ) def _get_tick_label(self, tick): - """! + """ Format the tick value and create a gl text. @param tick the floating point tick value @return the tick label text @@ -315,7 +315,7 @@ class grid_plotter_base(_plotter_base): return gltext.Text(tick_str, font_size=TICK_TEXT_FONT_SIZE) def _get_ticks(self, min, max, step, scalar): - """! + """ Determine the positions for the ticks. @param min the lower bound @param max the upper bound @@ -337,7 +337,7 @@ class grid_plotter_base(_plotter_base): return [i*step*scalar for i in range(start, stop+1)] def _draw_line(self, coor1, coor2): - """! + """ Draw a line from coor1 to coor2. @param corr1 a tuple of x, y, z @param corr2 a tuple of x, y, z @@ -348,7 +348,7 @@ class grid_plotter_base(_plotter_base): glEnd() def _draw_rect(self, x, y, width, height, fill=True): - """! + """ Draw a rectangle on the x, y plane. X and Y are the top-left corner. @param x the left position of the rectangle @@ -365,7 +365,7 @@ class grid_plotter_base(_plotter_base): glEnd() def _draw_point_label(self): - """! + """ Draw the point label for the last mouse motion coordinate. The mouse coordinate must be an X, Y tuple. The label will be drawn at the X, Y coordinate. diff --git a/gr-wxgui/src/python/plotter/waterfall_plotter.py b/gr-wxgui/src/python/plotter/waterfall_plotter.py index 42c17da86..4dc19f672 100644 --- a/gr-wxgui/src/python/plotter/waterfall_plotter.py +++ b/gr-wxgui/src/python/plotter/waterfall_plotter.py @@ -38,7 +38,7 @@ PADDING = 35, 60, 40, 60 #top, right, bottom, left ceil_log2 = lambda x: 2**int(math.ceil(math.log(x)/math.log(2))) def _get_rbga(red_pts, green_pts, blue_pts, alpha_pts=[(0, 0), (1, 0)]): - """! + """ Get an array of 256 rgba values where each index maps to a color. The scaling for red, green, blue, alpha are specified in piece-wise functions. The piece-wise functions consist of a set of x, y coordinates. @@ -87,7 +87,7 @@ COLORS = { ################################################## class waterfall_plotter(grid_plotter_base): def __init__(self, parent): - """! + """ Create a new channel plotter. """ #init @@ -103,14 +103,14 @@ class waterfall_plotter(grid_plotter_base): self.set_color_mode(COLORS.keys()[0]) def _gl_init(self): - """! + """ Run gl initialization tasks. """ self._grid_compiled_list_id = glGenLists(1) self._waterfall_texture = glGenTextures(1) def draw(self): - """! + """ Draw the grid and waveforms. """ self.lock() @@ -133,7 +133,7 @@ class waterfall_plotter(grid_plotter_base): self.unlock() def _draw_waterfall(self): - """! + """ Draw the waterfall from the texture. The texture is circularly filled and will wrap around. Use matrix modeling to shift and scale the texture onto the coordinate plane. @@ -176,7 +176,7 @@ class waterfall_plotter(grid_plotter_base): glDisable(GL_TEXTURE_2D) def _populate_point_label(self, x_val, y_val): - """! + """ Get the text the will populate the point label. Give the X value for the current point. @param x_val the current x value @@ -186,7 +186,7 @@ class waterfall_plotter(grid_plotter_base): return '%s: %s %s'%(self.x_label, common.label_format(x_val), self.x_units) def _draw_legend(self): - """! + """ Draw the color scale legend. """ if not self._color_mode: return @@ -213,7 +213,7 @@ class waterfall_plotter(grid_plotter_base): txt.draw_text(wx.Point(x, y)) def _resize_texture(self, flag=None): - """! + """ Create the texture to fit the fft_size X num_lines. @param flag the set/unset or update flag """ @@ -230,7 +230,7 @@ class waterfall_plotter(grid_plotter_base): self._resize_texture_flag = False def set_color_mode(self, color_mode): - """! + """ Set the color mode. New samples will be converted to the new color mode. Old samples will not be recolorized. @@ -244,7 +244,7 @@ class waterfall_plotter(grid_plotter_base): self.unlock() def set_num_lines(self, num_lines): - """! + """ Set number of lines. Powers of two only. @param num_lines the new number of lines @@ -256,7 +256,7 @@ class waterfall_plotter(grid_plotter_base): self.unlock() def set_samples(self, samples, minimum, maximum): - """! + """ Set the samples to the waterfall. Convert the samples to color data. @param samples the array of floats diff --git a/gr-wxgui/src/python/pubsub.py b/gr-wxgui/src/python/pubsub.py index 18aa60603..cc8ea5ccc 100644 --- a/gr-wxgui/src/python/pubsub.py +++ b/gr-wxgui/src/python/pubsub.py @@ -20,7 +20,7 @@ # Boston, MA 02110-1301, USA. # -"""! +""" Abstract GNU Radio publisher/subscriber interface This is a proof of concept implementation, will likely change significantly. diff --git a/gr-wxgui/src/python/scope_window.py b/gr-wxgui/src/python/scope_window.py index f587f3447..2b220c9a7 100644 --- a/gr-wxgui/src/python/scope_window.py +++ b/gr-wxgui/src/python/scope_window.py @@ -70,11 +70,11 @@ DEFAULT_MARKER_TYPE = None # Scope window control panel ################################################## class control_panel(wx.Panel): - """! + """ A control panel with wx widgits to control the plotter and scope block. """ def __init__(self, parent): - """! + """ Create a new control panel. @param parent the wx parent window """ @@ -333,7 +333,7 @@ class scope_window(wx.Panel, pubsub.pubsub, common.prop_setter): #self.update_grid() def handle_msg(self, msg): - """! + """ Handle the message from the scope sink message queue. Plot the list of arrays of samples onto the grid. Each samples array gets its own channel. @@ -354,7 +354,7 @@ class scope_window(wx.Panel, pubsub.pubsub, common.prop_setter): self.frame_rate_ts = time.time() def handle_samples(self): - """! + """ Handle the cached samples from the scope input. Perform ac coupling, triggering, and auto ranging. """ @@ -449,7 +449,7 @@ class scope_window(wx.Panel, pubsub.pubsub, common.prop_setter): self.plotter.update() def update_grid(self, *args): - """! + """ Update the grid to reflect the current settings: xy divisions, xy offset, xy mode setting """ diff --git a/gr-wxgui/src/python/scopesink_gl.py b/gr-wxgui/src/python/scopesink_gl.py index 8236708b3..36d8d8b8a 100644 --- a/gr-wxgui/src/python/scopesink_gl.py +++ b/gr-wxgui/src/python/scopesink_gl.py @@ -32,7 +32,7 @@ from constants import * # Scope sink block (wrapper for old wxgui) ################################################## class _scope_sink_base(gr.hier_block2, common.prop_setter): - """! + """ A scope block with a gui window. """ diff --git a/gr-wxgui/src/python/waterfall_window.py b/gr-wxgui/src/python/waterfall_window.py index 3831fca90..51bd01881 100644 --- a/gr-wxgui/src/python/waterfall_window.py +++ b/gr-wxgui/src/python/waterfall_window.py @@ -50,12 +50,12 @@ COLOR_MODES = ( # Waterfall window control panel ################################################## class control_panel(wx.Panel): - """! + """ A control panel with wx widgits to control the plotter and fft block chain. """ def __init__(self, parent): - """! + """ Create a new control panel. @param parent the wx parent window """ @@ -214,7 +214,7 @@ class waterfall_window(wx.Panel, pubsub.pubsub, common.prop_setter): self.update_grid() def autoscale(self, *args): - """! + """ Autoscale the waterfall plot to the last frame. Set the dynamic range and reference level. Does not affect the current data in the waterfall. @@ -231,7 +231,7 @@ class waterfall_window(wx.Panel, pubsub.pubsub, common.prop_setter): self.set_dynamic_range(peak_level - noise_floor) def handle_msg(self, msg): - """! + """ Handle the message from the fft sink message queue. If complex, reorder the fft samples so the negative bins come first. If real, keep take only the positive bins. @@ -255,7 +255,7 @@ class waterfall_window(wx.Panel, pubsub.pubsub, common.prop_setter): self.plotter.update() def update_grid(self, *args): - """! + """ Update the plotter grid. This update method is dependent on the variables below. Determine the x and y axis grid parameters. diff --git a/gr-wxgui/src/python/waterfallsink_gl.py b/gr-wxgui/src/python/waterfallsink_gl.py index 0b36e1048..dd8e45753 100644 --- a/gr-wxgui/src/python/waterfallsink_gl.py +++ b/gr-wxgui/src/python/waterfallsink_gl.py @@ -32,7 +32,7 @@ from constants import * # Waterfall sink block (wrapper for old wxgui) ################################################## class _waterfall_sink_base(gr.hier_block2, common.prop_setter): - """! + """ An fft block with real/complex inputs and a gui window. """ |