diff options
Diffstat (limited to 'gr-wxgui/grc')
-rw-r--r-- | gr-wxgui/grc/.gitignore | 2 | ||||
-rw-r--r-- | gr-wxgui/grc/Makefile.am | 45 | ||||
-rw-r--r-- | gr-wxgui/grc/__init__.py | 22 | ||||
-rw-r--r-- | gr-wxgui/grc/notebook.xml | 70 | ||||
-rw-r--r-- | gr-wxgui/grc/panel.py | 49 | ||||
-rw-r--r-- | gr-wxgui/grc/top_block_gui.py | 74 | ||||
-rw-r--r-- | gr-wxgui/grc/variable_check_box.xml | 85 | ||||
-rw-r--r-- | gr-wxgui/grc/variable_chooser.xml | 123 | ||||
-rw-r--r-- | gr-wxgui/grc/variable_slider.xml | 139 | ||||
-rw-r--r-- | gr-wxgui/grc/variable_static_text.xml | 98 | ||||
-rw-r--r-- | gr-wxgui/grc/variable_text_box.xml | 102 | ||||
-rw-r--r-- | gr-wxgui/grc/wxgui_constellationsink2.xml | 140 | ||||
-rw-r--r-- | gr-wxgui/grc/wxgui_fftsink2.xml | 233 | ||||
-rw-r--r-- | gr-wxgui/grc/wxgui_histosink2.xml | 78 | ||||
-rw-r--r-- | gr-wxgui/grc/wxgui_numbersink2.xml | 193 | ||||
-rw-r--r-- | gr-wxgui/grc/wxgui_scopesink2.xml | 187 | ||||
-rw-r--r-- | gr-wxgui/grc/wxgui_termsink.xml | 56 | ||||
-rw-r--r-- | gr-wxgui/grc/wxgui_waterfallsink2.xml | 190 |
18 files changed, 1886 insertions, 0 deletions
diff --git a/gr-wxgui/grc/.gitignore b/gr-wxgui/grc/.gitignore new file mode 100644 index 000000000..b336cc7ce --- /dev/null +++ b/gr-wxgui/grc/.gitignore @@ -0,0 +1,2 @@ +/Makefile +/Makefile.in diff --git a/gr-wxgui/grc/Makefile.am b/gr-wxgui/grc/Makefile.am new file mode 100644 index 000000000..d8c7b3471 --- /dev/null +++ b/gr-wxgui/grc/Makefile.am @@ -0,0 +1,45 @@ +# +# Copyright 2011 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# GNU Radio is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# GNU Radio is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. +# + +include $(top_srcdir)/Makefile.common + +grcblocksdir = $(grc_blocksdir) +dist_grcblocks_DATA = \ + notebook.xml \ + variable_check_box.xml \ + variable_chooser.xml \ + variable_slider.xml \ + variable_static_text.xml \ + variable_text_box.xml \ + wxgui_constellationsink2.xml \ + wxgui_fftsink2.xml \ + wxgui_histosink2.xml \ + wxgui_numbersink2.xml \ + wxgui_scopesink2.xml \ + wxgui_termsink.xml \ + wxgui_waterfallsink2.xml + +#The wxgui module contains a top_block + wxgui frame. +wxgui_pythondir = $(pythondir)/grc_gnuradio/wxgui +wxgui_python_PYTHON = \ + __init__.py \ + panel.py \ + top_block_gui.py diff --git a/gr-wxgui/grc/__init__.py b/gr-wxgui/grc/__init__.py new file mode 100644 index 000000000..81427253b --- /dev/null +++ b/gr-wxgui/grc/__init__.py @@ -0,0 +1,22 @@ +# Copyright 2008, 2009 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# GNU Radio is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# GNU Radio is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. +# + +from top_block_gui import top_block_gui +from panel import Panel diff --git a/gr-wxgui/grc/notebook.xml b/gr-wxgui/grc/notebook.xml new file mode 100644 index 000000000..bb3de51cb --- /dev/null +++ b/gr-wxgui/grc/notebook.xml @@ -0,0 +1,70 @@ +<?xml version="1.0"?> +<!-- +################################################### +##WX GUI Notebook +################################################### + --> +<block> + <name>WX GUI Notebook</name> + <key>notebook</key> + <category>WX GUI Widgets</category> + <import>from grc_gnuradio import wxgui as grc_wxgui</import> + <make>#set $parent = $notebook() and 'self.%s.GetPage(%s)'%$notebook() or 'self' +self.$(id) = wx.Notebook($(parent).GetWin(), style=$style) +#for $label in $labels() +self.$(id).AddPage(grc_wxgui.Panel(self.$(id)), "$label") +#end for +#if not $grid_pos() +$(parent).Add(self.$(id)) +#else +$(parent).GridAdd(self.$(id), $(', '.join(map(str, $grid_pos())))) +#end if</make> + <param> + <name>Tab Orientation</name> + <key>style</key> + <value>wx.NB_TOP</value> + <type>enum</type> + <option> + <name>Top</name> + <key>wx.NB_TOP</key> + </option> + <option> + <name>Right</name> + <key>wx.NB_RIGHT</key> + </option> + <option> + <name>Bottom</name> + <key>wx.NB_BOTTOM</key> + </option> + <option> + <name>Left</name> + <key>wx.NB_LEFT</key> + </option> + </param> + <param> + <name>Labels</name> + <key>labels</key> + <value>['tab1', 'tab2', 'tab3']</value> + <type>raw</type> + </param> + <param> + <name>Grid Position</name> + <key>grid_pos</key> + <value></value> + <type>grid_pos</type> + </param> + <param> + <name>Notebook</name> + <key>notebook</key> + <value></value> + <type>notebook</type> + </param> + <check>isinstance($labels, (list, tuple))</check> + <check>all(map(lambda x: isinstance(x, str), $labels))</check> + <check>len($labels) > 0</check> + <doc> +Use the Grid Position (row, column, row span, column span) to position the graphical element in the window. + +Use the Notebook Param (notebook-id, page-index) to place the graphical element inside of a notebook page. + </doc> +</block> diff --git a/gr-wxgui/grc/panel.py b/gr-wxgui/grc/panel.py new file mode 100644 index 000000000..e62133cac --- /dev/null +++ b/gr-wxgui/grc/panel.py @@ -0,0 +1,49 @@ +# Copyright 2009 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# GNU Radio is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# GNU Radio is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. +# + +import wx + +class Panel(wx.Panel): + def __init__(self, parent, orient=wx.VERTICAL): + wx.Panel.__init__(self, parent) + self._box = wx.BoxSizer(orient) + self._grid = wx.GridBagSizer(5, 5) + self.Add(self._grid) + self.SetSizer(self._box) + + def GetWin(self): return self + + def Add(self, win): + """ + Add a window to the wx vbox. + @param win the wx window + """ + self._box.Add(win, 0, wx.EXPAND) + + def GridAdd(self, win, row, col, row_span=1, col_span=1): + """ + Add a window to the wx grid at the given position. + @param win the wx window + @param row the row specification (integer >= 0) + @param col the column specification (integer >= 0) + @param row_span the row span specification (integer >= 1) + @param col_span the column span specification (integer >= 1) + """ + self._grid.Add(win, wx.GBPosition(row, col), wx.GBSpan(row_span, col_span), wx.EXPAND) diff --git a/gr-wxgui/grc/top_block_gui.py b/gr-wxgui/grc/top_block_gui.py new file mode 100644 index 000000000..333ccf1c1 --- /dev/null +++ b/gr-wxgui/grc/top_block_gui.py @@ -0,0 +1,74 @@ +# Copyright 2008, 2009 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# GNU Radio is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# GNU Radio is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. +# + +import wx +from gnuradio import gr +import panel + +default_gui_size = (200, 100) + +class top_block_gui(gr.top_block): + """gr top block with wx gui app and grid sizer.""" + + def __init__(self, title='', size=default_gui_size): + """ + Initialize the gr top block. + Create the wx gui elements. + @param title the main window title + @param size the main window size tuple in pixels + @param icon the file path to an icon or None + """ + #initialize + gr.top_block.__init__(self) + self._size = size + #create gui elements + self._app = wx.App() + self._frame = wx.Frame(None, title=title) + self._panel = panel.Panel(self._frame) + self.Add = self._panel.Add + self.GridAdd = self._panel.GridAdd + self.GetWin = self._panel.GetWin + + def SetIcon(self, *args, **kwargs): self._frame.SetIcon(*args, **kwargs) + + def Run(self, start=True): + """ + Setup the wx gui elements. + Start the gr top block. + Block with the wx main loop. + """ + #set minimal window size + self._frame.SetSizeHints(*self._size) + #create callback for quit + def _quit(event): + self.stop(); self.wait() + self._frame.Destroy() + #setup app + self._frame.Bind(wx.EVT_CLOSE, _quit) + self._sizer = wx.BoxSizer(wx.VERTICAL) + self._sizer.Add(self._panel, 0, wx.EXPAND) + self._frame.SetSizerAndFit(self._sizer) + self._frame.SetAutoLayout(True) + self._frame.Show(True) + self._app.SetTopWindow(self._frame) + #start flow graph + if start: self.start() + #blocking main loop + self._app.MainLoop() diff --git a/gr-wxgui/grc/variable_check_box.xml b/gr-wxgui/grc/variable_check_box.xml new file mode 100644 index 000000000..0c7bd1081 --- /dev/null +++ b/gr-wxgui/grc/variable_check_box.xml @@ -0,0 +1,85 @@ +<?xml version="1.0"?> +<!-- +################################################### +##Variable Check Box: +## a gui check box form +################################################### + --> +<block> + <name>WX GUI Check Box</name> + <key>variable_check_box</key> + <category>WX GUI Widgets</category> + <import>from gnuradio.wxgui import forms</import> + <var_make>self.$(id) = $(id) = $value</var_make> + <make>#set $parent = $notebook() and 'self.%s.GetPage(%s)'%$notebook() or 'self' +#set $win = 'self._%s_check_box'%$id +$win = forms.check_box( + parent=$(parent).GetWin(), + value=self.$id, + callback=self.set_$(id), + #if $label() + label=$label, + #else + label='$id', + #end if + true=$true, + false=$false, +) +#if not $grid_pos() +$(parent).Add($win) +#else +$(parent).GridAdd($win, $(', '.join(map(str, $grid_pos())))) +#end if</make> + <callback>self.set_$(id)($value)</callback> + <callback>self._$(id)_check_box.set_value($id)</callback> + <param> + <name>Label</name> + <key>label</key> + <value></value> + <type>string</type> + <hide>#if $label() then 'none' else 'part'#</hide> + </param> + <param> + <name>Default Value</name> + <key>value</key> + <value>True</value> + <type>raw</type> + </param> + <param> + <name>True</name> + <key>true</key> + <value>True</value> + <type>raw</type> + </param> + <param> + <name>False</name> + <key>false</key> + <value>False</value> + <type>raw</type> + </param> + <param> + <name>Grid Position</name> + <key>grid_pos</key> + <value></value> + <type>grid_pos</type> + </param> + <param> + <name>Notebook</name> + <key>notebook</key> + <value></value> + <type>notebook</type> + </param> + <check>$value in ($true, $false)</check> + <doc> +This block creates a variable with a check box form. \ +Leave the label blank to use the variable id as the label. + +A check box form can switch between two states; \ +the default being True and False. \ +Override True and False to use alternative states. + +Use the Grid Position (row, column, row span, column span) to position the graphical element in the window. + +Use the Notebook Param (notebook-id, page-index) to place the graphical element inside of a notebook page. + </doc> +</block> diff --git a/gr-wxgui/grc/variable_chooser.xml b/gr-wxgui/grc/variable_chooser.xml new file mode 100644 index 000000000..e16e88c5d --- /dev/null +++ b/gr-wxgui/grc/variable_chooser.xml @@ -0,0 +1,123 @@ +<?xml version="1.0"?> +<!-- +################################################### +##Variable Chooser: +## a gui form with enumerated choices +## radio buttons, drop down, or button +################################################### + --> +<block> + <name>WX GUI Chooser</name> + <key>variable_chooser</key> + <category>WX GUI Widgets</category> + <import>from gnuradio.wxgui import forms</import> + <var_make>self.$(id) = $(id) = $value</var_make> + <make>#set $parent = $notebook() and 'self.%s.GetPage(%s)'%$notebook() or 'self' +#set $win = 'self._%s_chooser'%$id +$win = forms.$(type)( + parent=$(parent).GetWin(), + value=self.$id, + callback=self.set_$(id), + #if $label() + label=$label, + #else + label='$id', + #end if + choices=$choices, + labels=$labels, +#if $type() == 'radio_buttons' + style=$style, +#end if +) +#if not $grid_pos() +$(parent).Add($win) +#else +$(parent).GridAdd($win, $(', '.join(map(str, $grid_pos())))) +#end if</make> + <callback>self.set_$(id)($value)</callback> + <callback>self._$(id)_chooser.set_value($id)</callback> + <param> + <name>Label</name> + <key>label</key> + <value></value> + <type>string</type> + <hide>#if $label() then 'none' else 'part'#</hide> + </param> + <param> + <name>Default Value</name> + <key>value</key> + <value>1</value> + <type>raw</type> + </param> + <param> + <name>Choices</name> + <key>choices</key> + <value>[1, 2, 3]</value> + <type>raw</type> + </param> + <param> + <name>Labels</name> + <key>labels</key> + <value>[]</value> + <type>raw</type> + </param> + <param> + <name>Type</name> + <key>type</key> + <value>drop_down</value> + <type>enum</type> + <option> + <name>Drop Down</name> + <key>drop_down</key> + </option> + <option> + <name>Radio Buttons</name> + <key>radio_buttons</key> + </option> + <option> + <name>Button</name> + <key>button</key> + </option> + </param> + <param> + <name>Style</name> + <key>style</key> + <value>wx.RA_HORIZONTAL</value> + <type>enum</type> + <hide>#if $type() == 'radio_buttons' then 'part' else 'all'#</hide> + <option> + <name>Horizontal</name> + <key>wx.RA_HORIZONTAL</key> + </option> + <option> + <name>Vertical</name> + <key>wx.RA_VERTICAL</key> + </option> + </param> + <param> + <name>Grid Position</name> + <key>grid_pos</key> + <value></value> + <type>grid_pos</type> + </param> + <param> + <name>Notebook</name> + <key>notebook</key> + <value></value> + <type>notebook</type> + </param> + <check>$value in $choices</check> + <check>not $labels or len($labels) == len($choices)</check> + <doc> +This block creates a variable with a drop down, radio buttons, or a button. \ +Leave the label blank to use the variable id as the label. \ +The value index is the index of a particular choice, \ +which defines the default choice when the flow graph starts. \ +The choices must be a list of possible values. \ +Leave labels empty to use the choices as the labels. + +Use the Grid Position (row, column, row span, column span) to position the graphical element in the window. + +Use the Notebook Param (notebook-id, page-index) to place the graphical element inside of a notebook page. + </doc> +</block> diff --git a/gr-wxgui/grc/variable_slider.xml b/gr-wxgui/grc/variable_slider.xml new file mode 100644 index 000000000..5e3c175aa --- /dev/null +++ b/gr-wxgui/grc/variable_slider.xml @@ -0,0 +1,139 @@ +<?xml version="1.0"?> +<!-- +################################################### +##Variable Slider: +## a combined slider and text box form +################################################### + --> +<block> + <name>WX GUI Slider</name> + <key>variable_slider</key> + <category>WX GUI Widgets</category> + <import>from gnuradio.wxgui import forms</import> + <var_make>self.$(id) = $(id) = $value</var_make> + <make>#set $parent = $notebook() and 'self.%s.GetPage(%s)'%$notebook() or 'self' +#set $win = '_%s_sizer'%$id +$win = wx.BoxSizer(wx.VERTICAL) +self._$(id)_text_box = forms.text_box( + parent=$(parent).GetWin(), + sizer=$win, + value=self.$id, + callback=self.set_$(id), + #if $label() + label=$label, + #else + label='$id', + #end if + converter=forms.$(converver)(), + proportion=0, +) +self._$(id)_slider = forms.slider( + parent=$(parent).GetWin(), + sizer=$win, + value=self.$id, + callback=self.set_$(id), + minimum=$min, + maximum=$max, + num_steps=$num_steps, + style=$style, + cast=$(converver.slider_cast), + proportion=1, +) +#if not $grid_pos() +$(parent).Add($win) +#else +$(parent).GridAdd($win, $(', '.join(map(str, $grid_pos())))) +#end if</make> + <callback>self.set_$(id)($value)</callback> + <callback>self._$(id)_slider.set_value($id)</callback> + <callback>self._$(id)_text_box.set_value($id)</callback> + <param> + <name>Label</name> + <key>label</key> + <value></value> + <type>string</type> + <hide>#if $label() then 'none' else 'part'#</hide> + </param> + <param> + <name>Default Value</name> + <key>value</key> + <value>50</value> + <type>real</type> + </param> + <param> + <name>Minimum</name> + <key>min</key> + <value>0</value> + <type>real</type> + </param> + <param> + <name>Maximum</name> + <key>max</key> + <value>100</value> + <type>real</type> + </param> + <param> + <name>Num Steps</name> + <key>num_steps</key> + <value>100</value> + <type>int</type> + <hide>part</hide> + </param> + <param> + <name>Style</name> + <key>style</key> + <value>wx.SL_HORIZONTAL</value> + <type>enum</type> + <hide>part</hide> + <option> + <name>Horizontal</name> + <key>wx.SL_HORIZONTAL</key> + </option> + <option> + <name>Vertical</name> + <key>wx.SL_VERTICAL</key> + </option> + </param> + <param> + <name>Converter</name> + <key>converver</key> + <value>float_converter</value> + <type>enum</type> + <option> + <name>Float</name> + <key>float_converter</key> + <opt>slider_cast:float</opt> + </option> + <option> + <name>Integer</name> + <key>int_converter</key> + <opt>slider_cast:int</opt> + </option> + </param> + <param> + <name>Grid Position</name> + <key>grid_pos</key> + <value></value> + <type>grid_pos</type> + </param> + <param> + <name>Notebook</name> + <key>notebook</key> + <value></value> + <type>notebook</type> + </param> + <check>$min <= $value <= $max</check> + <check>$min < $max</check> + <check>0 < $num_steps <= 1000</check> + <doc> +This block creates a variable with a slider. \ +Leave the label blank to use the variable id as the label. \ +The value must be a real number. \ +The value must be between the minimum and the maximum. \ +The number of steps must be between 0 and 1000. + +Use the Grid Position (row, column, row span, column span) to position the graphical element in the window. + +Use the Notebook Param (notebook-id, page-index) to place the graphical element inside of a notebook page. + </doc> +</block> diff --git a/gr-wxgui/grc/variable_static_text.xml b/gr-wxgui/grc/variable_static_text.xml new file mode 100644 index 000000000..cd122e76a --- /dev/null +++ b/gr-wxgui/grc/variable_static_text.xml @@ -0,0 +1,98 @@ +<?xml version="1.0"?> +<!-- +################################################### +##Variable Static Text: +## a gui static text form +################################################### + --> +<block> + <name>WX GUI Static Text</name> + <key>variable_static_text</key> + <category>WX GUI Widgets</category> + <import>from gnuradio.wxgui import forms</import> + <var_make>self.$(id) = $(id) = $value</var_make> + <make>#set $parent = $notebook() and 'self.%s.GetPage(%s)'%$notebook() or 'self' +#set $win = 'self._%s_static_text'%$id +$win = forms.static_text( + parent=$(parent).GetWin(), + value=self.$id, + callback=self.set_$(id), + #if $label() + label=$label, + #else + label='$id', + #end if + #if $formatter() + converter=forms.$(converver)(formatter=$formatter), + #else + converter=forms.$(converver)(), + #end if +) +#if not $grid_pos() +$(parent).Add($win) +#else +$(parent).GridAdd($win, $(', '.join(map(str, $grid_pos())))) +#end if</make> + <callback>self.set_$(id)($value)</callback> + <callback>self._$(id)_static_text.set_value($id)</callback> + <param> + <name>Label</name> + <key>label</key> + <value></value> + <type>string</type> + <hide>#if $label() then 'none' else 'part'#</hide> + </param> + <param> + <name>Default Value</name> + <key>value</key> + <value>0</value> + <type>raw</type> + </param> + <param> + <name>Converter</name> + <key>converver</key> + <value>float_converter</value> + <type>enum</type> + <option> + <name>Float</name> + <key>float_converter</key> + </option> + <option> + <name>Integer</name> + <key>int_converter</key> + </option> + <option> + <name>String</name> + <key>str_converter</key> + </option> + </param> + <param> + <name>Formatter</name> + <key>formatter</key> + <value>None</value> + <type>raw</type> + <hide>part</hide> + </param> + <param> + <name>Grid Position</name> + <key>grid_pos</key> + <value></value> + <type>grid_pos</type> + </param> + <param> + <name>Notebook</name> + <key>notebook</key> + <value></value> + <type>notebook</type> + </param> + <doc> +This block creates a variable with a static text form. \ +Leave the label blank to use the variable id as the label. + +Format should be a function/lambda that converts a value into a string or None for the default formatter. + +Use the Grid Position (row, column, row span, column span) to position the graphical element in the window. + +Use the Notebook Param (notebook-id, page-index) to place the graphical element inside of a notebook page. + </doc> +</block> diff --git a/gr-wxgui/grc/variable_text_box.xml b/gr-wxgui/grc/variable_text_box.xml new file mode 100644 index 000000000..afff839cf --- /dev/null +++ b/gr-wxgui/grc/variable_text_box.xml @@ -0,0 +1,102 @@ +<?xml version="1.0"?> +<!-- +################################################### +##Variable Text Box: +## a gui text box form +################################################### + --> +<block> + <name>WX GUI Text Box</name> + <key>variable_text_box</key> + <category>WX GUI Widgets</category> + <import>from gnuradio.wxgui import forms</import> + <var_make>self.$(id) = $(id) = $value</var_make> + <make>#set $parent = $notebook() and 'self.%s.GetPage(%s)'%$notebook() or 'self' +#set $win = 'self._%s_text_box'%$id +$win = forms.text_box( + parent=$(parent).GetWin(), + value=self.$id, + callback=self.set_$(id), + #if $label() + label=$label, + #else + label='$id', + #end if + #if $formatter() + converter=forms.$(converver)(formatter=$formatter), + #else + converter=forms.$(converver)(), + #end if +) +#if not $grid_pos() +$(parent).Add($win) +#else +$(parent).GridAdd($win, $(', '.join(map(str, $grid_pos())))) +#end if</make> + <callback>self.set_$(id)($value)</callback> + <callback>self._$(id)_text_box.set_value($id)</callback> + <param> + <name>Label</name> + <key>label</key> + <value></value> + <type>string</type> + <hide>#if $label() then 'none' else 'part'#</hide> + </param> + <param> + <name>Default Value</name> + <key>value</key> + <value>0</value> + <type>raw</type> + </param> + <param> + <name>Converter</name> + <key>converver</key> + <value>float_converter</value> + <type>enum</type> + <option> + <name>Float</name> + <key>float_converter</key> + </option> + <option> + <name>Integer</name> + <key>int_converter</key> + </option> + <option> + <name>String</name> + <key>str_converter</key> + </option> + <option> + <name>Evaluate</name> + <key>eval_converter</key> + </option> + </param> + <param> + <name>Formatter</name> + <key>formatter</key> + <value>None</value> + <type>raw</type> + <hide>part</hide> + </param> + <param> + <name>Grid Position</name> + <key>grid_pos</key> + <value></value> + <type>grid_pos</type> + </param> + <param> + <name>Notebook</name> + <key>notebook</key> + <value></value> + <type>notebook</type> + </param> + <doc> +This block creates a variable with a text box. \ +Leave the label blank to use the variable id as the label. + +Format should be a function/lambda that converts a value into a string or None for the default formatter. + +Use the Grid Position (row, column, row span, column span) to position the graphical element in the window. + +Use the Notebook Param (notebook-id, page-index) to place the graphical element inside of a notebook page. + </doc> +</block> diff --git a/gr-wxgui/grc/wxgui_constellationsink2.xml b/gr-wxgui/grc/wxgui_constellationsink2.xml new file mode 100644 index 000000000..c200790f9 --- /dev/null +++ b/gr-wxgui/grc/wxgui_constellationsink2.xml @@ -0,0 +1,140 @@ +<?xml version="1.0"?> +<!-- +################################################### +##Constellation Sink +################################################### + --> +<block> + <name>WX GUI Constellation Sink</name> + <key>wxgui_constellationsink2</key> + <category>WX GUI Widgets</category> + <import>from gnuradio.wxgui import constsink_gl</import> + <make>#set $parent = $notebook() and 'self.%s.GetPage(%s)'%$notebook() or 'self' +constsink_gl.const_sink_c( + $(parent).GetWin(), + title=$title, + sample_rate=$samp_rate, + frame_rate=$frame_rate, + const_size=$const_size, + M=$M, + theta=$theta, + alpha=$alpha, + fmax=$fmax, + mu=$mu, + gain_mu=$gain_mu, + symbol_rate=$symbol_rate, + omega_limit=$omega_limit, +#if $win_size() + size=$win_size, +#end if +) +#if not $grid_pos() +$(parent).Add(self.$(id).win) +#else +$(parent).GridAdd(self.$(id).win, $(', '.join(map(str, $grid_pos())))) +#end if</make> + <callback>set_sample_rate($samp_rate)</callback> + <param> + <name>Title</name> + <key>title</key> + <value>Constellation Plot</value> + <type>string</type> + </param> + <param> + <name>Sample Rate</name> + <key>samp_rate</key> + <value>samp_rate</value> + <type>real</type> + </param> + <param> + <name>Frame Rate</name> + <key>frame_rate</key> + <value>5</value> + <type>real</type> + </param> + <param> + <name>Constellation Size</name> + <key>const_size</key> + <value>2048</value> + <type>real</type> + </param> + <param> + <name>M</name> + <key>M</key> + <value>4</value> + <type>int</type> + </param> + <param> + <name>Theta</name> + <key>theta</key> + <value>0</value> + <type>real</type> + </param> + <param> + <name>Alpha</name> + <key>alpha</key> + <value>0.005</value> + <type>real</type> + </param> + <param> + <name>Max Freq</name> + <key>fmax</key> + <value>0.06</value> + <type>real</type> + </param> + <param> + <name>Mu</name> + <key>mu</key> + <value>0.5</value> + <type>real</type> + </param> + <param> + <name>Gain Mu</name> + <key>gain_mu</key> + <value>0.005</value> + <type>real</type> + </param> + <param> + <name>Symbol Rate</name> + <key>symbol_rate</key> + <value>samp_rate/4.</value> + <type>real</type> + </param> + <param> + <name>Omega Limit</name> + <key>omega_limit</key> + <value>0.005</value> + <type>real</type> + </param> + <param> + <name>Window Size</name> + <key>win_size</key> + <value></value> + <type>int_vector</type> + <hide>#if $win_size() then 'none' else 'part'#</hide> + </param> + <param> + <name>Grid Position</name> + <key>grid_pos</key> + <value></value> + <type>grid_pos</type> + </param> + <param> + <name>Notebook</name> + <key>notebook</key> + <value></value> + <type>notebook</type> + </param> + <check>not $win_size or len($win_size) == 2</check> + <sink> + <name>in</name> + <type>complex</type> + </sink> + <doc> +Leave the window blank for the default size, otherwise enter a tuple of (width, height) pixels. + +Use the Grid Position (row, column, row span, column span) to position the graphical element in the window. + +Use the Notebook Param (notebook-id, page-index) to place the graphical element inside of a notebook page. + </doc> +</block> diff --git a/gr-wxgui/grc/wxgui_fftsink2.xml b/gr-wxgui/grc/wxgui_fftsink2.xml new file mode 100644 index 000000000..9b35ab848 --- /dev/null +++ b/gr-wxgui/grc/wxgui_fftsink2.xml @@ -0,0 +1,233 @@ +<?xml version="1.0"?> +<!-- +################################################### +##FFT Sink +################################################### + --> +<block> + <name>WX GUI FFT Sink</name> + <key>wxgui_fftsink2</key> + <category>WX GUI Widgets</category> + <import>from gnuradio import window</import> + <import>from gnuradio.wxgui import fftsink2</import> + <make>#set $parent = $notebook() and 'self.%s.GetPage(%s)'%$notebook() or 'self' +fftsink2.$(type.fcn)( + $(parent).GetWin(), + baseband_freq=$baseband_freq, + y_per_div=$y_per_div, + y_divs=$y_divs, + ref_level=$ref_level, + ref_scale=$ref_scale, + sample_rate=$samp_rate, + fft_size=$fft_size, + fft_rate=$fft_rate, + average=$average, + avg_alpha=#if $avg_alpha() then $avg_alpha else 'None'#, + title=$title, + peak_hold=$peak_hold, +#if $win() + win=$win, +#end if +#if $win_size() + size=$win_size, +#end if +) +#if not $grid_pos() +$(parent).Add(self.$(id).win) +#else +$(parent).GridAdd(self.$(id).win, $(', '.join(map(str, $grid_pos())))) +#end if</make> + <callback>set_baseband_freq($baseband_freq)</callback> + <callback>set_sample_rate($samp_rate)</callback> + <param> + <name>Type</name> + <key>type</key> + <value>complex</value> + <type>enum</type> + <option> + <name>Complex</name> + <key>complex</key> + <opt>fcn:fft_sink_c</opt> + </option> + <option> + <name>Float</name> + <key>float</key> + <opt>fcn:fft_sink_f</opt> + </option> + </param> + <param> + <name>Title</name> + <key>title</key> + <value>FFT Plot</value> + <type>string</type> + </param> + <param> + <name>Sample Rate</name> + <key>samp_rate</key> + <value>samp_rate</value> + <type>real</type> + </param> + <param> + <name>Baseband Freq</name> + <key>baseband_freq</key> + <value>0</value> + <type>real</type> + </param> + <param> + <name>Y per Div</name> + <key>y_per_div</key> + <value>10</value> + <type>enum</type> + <option> + <name>1 dB</name> + <key>1</key> + </option> + <option> + <name>2 dB</name> + <key>2</key> + </option> + <option> + <name>5 dB</name> + <key>5</key> + </option> + <option> + <name>10 dB</name> + <key>10</key> + </option> + <option> + <name>20 dB</name> + <key>20</key> + </option> + </param> + <param> + <name>Y Divs</name> + <key>y_divs</key> + <value>10</value> + <type>int</type> + </param> + <param> + <name>Ref Level (dB)</name> + <key>ref_level</key> + <value>50</value> + <type>real</type> + </param> + <param> + <name>Ref Scale (p2p)</name> + <key>ref_scale</key> + <value>2.0</value> + <type>real</type> + </param> + <param> + <name>FFT Size</name> + <key>fft_size</key> + <value>1024</value> + <type>int</type> + </param> + <param> + <name>Refresh Rate</name> + <key>fft_rate</key> + <value>30</value> + <type>int</type> + </param> + <param> + <name>Peak Hold</name> + <key>peak_hold</key> + <value>False</value> + <type>enum</type> + <hide>#if $peak_hold() == 'True' then 'none' else 'part'#</hide> + <option> + <name>On</name> + <key>True</key> + </option> + <option> + <name>Off</name> + <key>False</key> + </option> + </param> + <param> + <name>Average</name> + <key>average</key> + <value>False</value> + <type>enum</type> + <hide>part</hide> + <option> + <name>On</name> + <key>True</key> + </option> + <option> + <name>Off</name> + <key>False</key> + </option> + </param> + <param> + <name>Average Alpha</name> + <key>avg_alpha</key> + <value>0</value> + <type>real</type> + <hide>#if $average() == 'True' then 'none' else 'all'#</hide> + </param> + <param> + <name>Window</name> + <key>win</key> + <value>None</value> + <type>raw</type> + <hide>#if $win() is None then 'part' else 'none'#</hide> + <option> + <name>Automatic</name> + <key>None</key> + </option> + <option> + <name>Blackman-Harris</name> + <key>window.blackmanharris</key> + </option> + <option> + <name>Hamming</name> + <key>window.hamming</key> + </option> + <option> + <name>Hanning</name> + <key>window.hanning</key> + </option> + <option> + <name>Rectangular</name> + <key>window.rectangular</key> + </option> + <option> + <name>Flattop</name> + <key>window.flattop</key> + </option> + </param> + <param> + <name>Window Size</name> + <key>win_size</key> + <value></value> + <type>int_vector</type> + <hide>#if $win_size() then 'none' else 'part'#</hide> + </param> + <param> + <name>Grid Position</name> + <key>grid_pos</key> + <value></value> + <type>grid_pos</type> + </param> + <param> + <name>Notebook</name> + <key>notebook</key> + <value></value> + <type>notebook</type> + </param> + <check>not $win_size or len($win_size) == 2</check> + <sink> + <name>in</name> + <type>$type</type> + </sink> + <doc> +Set Average Alpha to 0 for automatic setting. + +Leave the window blank for the default size, otherwise enter a tuple of (width, height) pixels. + +Use the Grid Position (row, column, row span, column span) to position the graphical element in the window. + +Use the Notebook Param (notebook-id, page-index) to place the graphical element inside of a notebook page. + </doc> +</block> diff --git a/gr-wxgui/grc/wxgui_histosink2.xml b/gr-wxgui/grc/wxgui_histosink2.xml new file mode 100644 index 000000000..f4f6a2959 --- /dev/null +++ b/gr-wxgui/grc/wxgui_histosink2.xml @@ -0,0 +1,78 @@ +<?xml version="1.0"?> +<!-- +################################################### +##Histogram Sink +################################################### + --> +<block> + <name>WX GUI Histo Sink</name> + <key>wxgui_histosink2</key> + <category>WX GUI Widgets</category> + <import>from gnuradio.wxgui import histosink_gl</import> + <make>#set $parent = $notebook() and 'self.%s.GetPage(%s)'%$notebook() or 'self' +histosink_gl.histo_sink_f( + $(parent).GetWin(), + title=$title, + num_bins=$num_bins, + frame_size=$frame_size, +#if $win_size() + size=$win_size, +#end if +) +#if not $grid_pos() +$(parent).Add(self.$(id).win) +#else +$(parent).GridAdd(self.$(id).win, $(', '.join(map(str, $grid_pos())))) +#end if</make> + <callback>set_num_bins($num_bins)</callback> + <callback>set_frame_size($frame_size)</callback> + <param> + <name>Title</name> + <key>title</key> + <value>Histogram Plot</value> + <type>string</type> + </param> + <param> + <name>Num Bins</name> + <key>num_bins</key> + <value>27</value> + <type>int</type> + </param> + <param> + <name>Frame Size</name> + <key>frame_size</key> + <value>1000</value> + <type>int</type> + </param> + <param> + <name>Window Size</name> + <key>win_size</key> + <value></value> + <type>int_vector</type> + <hide>#if $win_size() then 'none' else 'part'#</hide> + </param> + <param> + <name>Grid Position</name> + <key>grid_pos</key> + <value></value> + <type>grid_pos</type> + </param> + <param> + <name>Notebook</name> + <key>notebook</key> + <value></value> + <type>notebook</type> + </param> + <check>not $win_size or len($win_size) == 2</check> + <sink> + <name>in</name> + <type>float</type> + </sink> + <doc> +Leave the window blank for the default size, otherwise enter a tuple of (width, height) pixels. + +Use the Grid Position (row, column, row span, column span) to position the graphical element in the window. + +Use the Notebook Param (notebook-id, page-index) to place the graphical element inside of a notebook page. + </doc> +</block> diff --git a/gr-wxgui/grc/wxgui_numbersink2.xml b/gr-wxgui/grc/wxgui_numbersink2.xml new file mode 100644 index 000000000..255926610 --- /dev/null +++ b/gr-wxgui/grc/wxgui_numbersink2.xml @@ -0,0 +1,193 @@ +<?xml version="1.0"?> +<!-- +################################################### +##Number Sink +################################################### + --> +<block> + <name>WX GUI Number Sink</name> + <key>wxgui_numbersink2</key> + <category>WX GUI Widgets</category> + <import>from gnuradio.wxgui import numbersink2</import> + <make>#set $parent = $notebook() and 'self.%s.GetPage(%s)'%$notebook() or 'self' +numbersink2.$(type.fcn)( + $(parent).GetWin(), + unit=$units, + minval=$min_value, + maxval=$max_value, + factor=$factor, + decimal_places=$decimal_places, + ref_level=$ref_level, + sample_rate=$samp_rate, + number_rate=$number_rate, + average=$average, + avg_alpha=#if $avg_alpha() then $avg_alpha else 'None'#, + label=$title, + peak_hold=$peak_hold, + show_gauge=$show_gauge, +#if $win_size() + size=$win_size, +#end if +) +#if not $grid_pos() +$(parent).Add(self.$(id).win) +#else +$(parent).GridAdd(self.$(id).win, $(', '.join(map(str, $grid_pos())))) +#end if</make> + <param> + <name>Type</name> + <key>type</key> + <value>complex</value> + <type>enum</type> + <option> + <name>Complex</name> + <key>complex</key> + <opt>fcn:number_sink_c</opt> + </option> + <option> + <name>Float</name> + <key>float</key> + <opt>fcn:number_sink_f</opt> + </option> + </param> + <param> + <name>Title</name> + <key>title</key> + <value>Number Plot</value> + <type>string</type> + </param> + <param> + <name>Units</name> + <key>units</key> + <value>Units</value> + <type>string</type> + </param> + <param> + <name>Sample Rate</name> + <key>samp_rate</key> + <value>samp_rate</value> + <type>real</type> + </param> + <param> + <name>Min Value</name> + <key>min_value</key> + <value>-100</value> + <type>real</type> + </param> + <param> + <name>Max Value</name> + <key>max_value</key> + <value>100</value> + <type>real</type> + </param> + <param> + <name>Factor</name> + <key>factor</key> + <value>1.0</value> + <type>real</type> + </param> + <param> + <name>Decimal Places</name> + <key>decimal_places</key> + <value>10</value> + <type>int</type> + </param> + <param> + <name>Reference Level</name> + <key>ref_level</key> + <value>0</value> + <type>real</type> + </param> + <param> + <name>Number Rate</name> + <key>number_rate</key> + <value>15</value> + <type>int</type> + </param> + <param> + <name>Peak Hold</name> + <key>peak_hold</key> + <value>False</value> + <type>enum</type> + <hide>#if $peak_hold() == 'True' then 'none' else 'part'#</hide> + <option> + <name>On</name> + <key>True</key> + </option> + <option> + <name>Off</name> + <key>False</key> + </option> + </param> + <param> + <name>Average</name> + <key>average</key> + <value>False</value> + <type>enum</type> + <hide>part</hide> + <option> + <name>On</name> + <key>True</key> + </option> + <option> + <name>Off</name> + <key>False</key> + </option> + </param> + <param> + <name>Average Alpha</name> + <key>avg_alpha</key> + <value>0</value> + <type>real</type> + <hide>#if $average() == 'True' then 'none' else 'all'#</hide> + </param> + <param> + <name>Show Gauge</name> + <key>show_gauge</key> + <value>True</value> + <type>enum</type> + <option> + <name>Show</name> + <key>True</key> + </option> + <option> + <name>Hide</name> + <key>False</key> + </option> + </param> + <param> + <name>Window Size</name> + <key>win_size</key> + <value></value> + <type>int_vector</type> + <hide>#if $win_size() then 'none' else 'part'#</hide> + </param> + <param> + <name>Grid Position</name> + <key>grid_pos</key> + <value></value> + <type>grid_pos</type> + </param> + <param> + <name>Notebook</name> + <key>notebook</key> + <value></value> + <type>notebook</type> + </param> + <check>not $win_size or len($win_size) == 2</check> + <sink> + <name>in</name> + <type>$type</type> + </sink> + <doc> +Set Average Alpha to 0 for automatic setting. + +Leave the window blank for the default size, otherwise enter a tuple of (width, height) pixels. + +Use the Grid Position (row, column, row span, column span) to position the graphical element in the window. + +Use the Notebook Param (notebook-id, page-index) to place the graphical element inside of a notebook page. + +Incoming numbers are multiplied by the factor, and then added-to by the reference level. + </doc> +</block> diff --git a/gr-wxgui/grc/wxgui_scopesink2.xml b/gr-wxgui/grc/wxgui_scopesink2.xml new file mode 100644 index 000000000..dbf983e11 --- /dev/null +++ b/gr-wxgui/grc/wxgui_scopesink2.xml @@ -0,0 +1,187 @@ +<?xml version="1.0"?> +<!-- +################################################### +##Scope Sink +################################################### + --> +<block> + <name>WX GUI Scope Sink</name> + <key>wxgui_scopesink2</key> + <category>WX GUI Widgets</category> + <import>from gnuradio.wxgui import scopesink2</import> + <import>from gnuradio import gr</import> + <make>#set $parent = $notebook() and 'self.%s.GetPage(%s)'%$notebook() or 'self' +scopesink2.$(type.fcn)( + $(parent).GetWin(), + title=$title, + sample_rate=$samp_rate, + v_scale=$v_scale, + v_offset=$v_offset, + t_scale=$t_scale, + ac_couple=$ac_couple, + xy_mode=$xy_mode, + num_inputs=$num_inputs, + trig_mode=$trig_mode, + y_axis_label=$y_axis_label, +#if $win_size() + size=$win_size, +#end if +) +#if not $grid_pos() +$(parent).Add(self.$(id).win) +#else +$(parent).GridAdd(self.$(id).win, $(', '.join(map(str, $grid_pos())))) +#end if</make> + <callback>set_sample_rate($samp_rate)</callback> + <param> + <name>Type</name> + <key>type</key> + <value>complex</value> + <type>enum</type> + <option> + <name>Complex</name> + <key>complex</key> + <opt>fcn:scope_sink_c</opt> + </option> + <option> + <name>Float</name> + <key>float</key> + <opt>fcn:scope_sink_f</opt> + </option> + </param> + <param> + <name>Title</name> + <key>title</key> + <value>Scope Plot</value> + <type>string</type> + </param> + <param> + <name>Sample Rate</name> + <key>samp_rate</key> + <value>samp_rate</value> + <type>real</type> + </param> + <param> + <name>V Scale</name> + <key>v_scale</key> + <value>0</value> + <type>real</type> + <hide>#if $v_scale() then 'none' else 'part'#</hide> + </param> + <param> + <name>V Offset</name> + <key>v_offset</key> + <value>0</value> + <type>real</type> + <hide>#if $v_offset() then 'none' else 'part'#</hide> + </param> + <param> + <name>T Scale</name> + <key>t_scale</key> + <value>0</value> + <type>real</type> + <hide>#if $t_scale() then 'none' else 'part'#</hide> + </param> + <param> + <name>AC Couple</name> + <key>ac_couple</key> + <value>False</value> + <type>bool</type> + <hide>#if $ac_couple() then 'none' else 'part'#</hide> + <option> + <name>Off</name> + <key>False</key> + </option> + <option> + <name>On</name> + <key>True</key> + </option> + </param> + <param> + <name>XY Mode</name> + <key>xy_mode</key> + <value>False</value> + <type>enum</type> + <hide>#if $xy_mode() == 'True' then 'none' else 'part'#</hide> + <option> + <name>Off</name> + <key>False</key> + </option> + <option> + <name>On</name> + <key>True</key> + </option> + </param> + <param> + <name>Num Inputs</name> + <key>num_inputs</key> + <value>1</value> + <type>int</type> + </param> + <param> + <name>Window Size</name> + <key>win_size</key> + <value></value> + <type>int_vector</type> + <hide>#if $win_size() then 'none' else 'part'#</hide> + </param> + <param> + <name>Grid Position</name> + <key>grid_pos</key> + <value></value> + <type>grid_pos</type> + </param> + <param> + <name>Notebook</name> + <key>notebook</key> + <value></value> + <type>notebook</type> + </param> + <param> + <name>Trigger Mode</name> + <key>trig_mode</key> + <type>enum</type> + <option> + <name>Auto</name> + <key>gr.gr_TRIG_MODE_AUTO</key> + </option> + <option> + <name>Normal</name> + <key>gr.gr_TRIG_MODE_NORM</key> + </option> + <option> + <name>Freerun</name> + <key>gr.gr_TRIG_MODE_FREE</key> + </option> + <option> + <name>Stripchart</name> + <key>gr.gr_TRIG_MODE_STRIPCHART</key> + </option> + </param> + <param> + <name>Y Axis Label</name> + <key>y_axis_label</key> + <value>Counts</value> + <type>string</type> + </param> + <check>not $win_size or len($win_size) == 2</check> + <check>not $xy_mode or '$type' == 'complex' or $num_inputs != 1</check> + <sink> + <name>in</name> + <type>$type</type> + <nports>$num_inputs</nports> + </sink> + <doc> +Set the V Scale to 0 for the scope to auto-scale. + +Set the T Scale to 0 for automatic setting. + +XY Mode allows the scope to initialize as an XY plotter. + +Leave the window blank for the default size, otherwise enter a tuple of (width, height) pixels. + +Use the Grid Position (row, column, row span, column span) to position the graphical element in the window. + +Use the Notebook Param (notebook-id, page-index) to place the graphical element inside of a notebook page. + </doc> +</block> diff --git a/gr-wxgui/grc/wxgui_termsink.xml b/gr-wxgui/grc/wxgui_termsink.xml new file mode 100644 index 000000000..3e35c7578 --- /dev/null +++ b/gr-wxgui/grc/wxgui_termsink.xml @@ -0,0 +1,56 @@ +<?xml version="1.0"?> +<!-- +################################################### +##Terminal window +################################################### + --> +<block> + <name>WX GUI Terminal Sink</name> + <key>wxgui_termsink</key> + <category>WX GUI Widgets</category> + + <import>from gnuradio.wxgui import termsink</import> + + <make>#set $parent = $notebook() and 'self.%s.GetPage(%s)'%$notebook() or 'self' +termsink.termsink( + parent=$(parent).GetWin(), +#if $win_size() + size=$win_size, +#end if + msgq=$(id)_msgq_in, +) +#if not $grid_pos() +$(parent).Add(self.$(id)) +#else +$(parent).GridAdd(self.$(id), $(', '.join(map(str, $grid_pos())))) +#end if</make> + + <param> + <name>Window Size</name> + <key>win_size</key> + <value></value> + <type>int_vector</type> + <hide>#if $win_size() then 'none' else 'part'#</hide> + </param> + <param> + <name>Grid Position</name> + <key>grid_pos</key> + <value></value> + <type>grid_pos</type> + </param> + + <param> + <name>Notebook</name> + <key>notebook</key> + <value></value> + <type>notebook</type> + </param> + + <check>not $win_size or len($win_size) == 2</check> + + <sink> + <name>in</name> + <type>msg</type> + </sink> + +</block> diff --git a/gr-wxgui/grc/wxgui_waterfallsink2.xml b/gr-wxgui/grc/wxgui_waterfallsink2.xml new file mode 100644 index 000000000..7c646c3b2 --- /dev/null +++ b/gr-wxgui/grc/wxgui_waterfallsink2.xml @@ -0,0 +1,190 @@ +<?xml version="1.0"?> +<!-- +################################################### +##Waterfall Sink +################################################### + --> +<block> + <name>WX GUI Waterfall Sink</name> + <key>wxgui_waterfallsink2</key> + <category>WX GUI Widgets</category> + <import>from gnuradio import window</import> + <import>from gnuradio.wxgui import waterfallsink2</import> + <make>#set $parent = $notebook() and 'self.%s.GetPage(%s)'%$notebook() or 'self' +waterfallsink2.$(type.fcn)( + $(parent).GetWin(), + baseband_freq=$baseband_freq, + dynamic_range=$dynamic_range, + ref_level=$ref_level, + ref_scale=$ref_scale, + sample_rate=$samp_rate, + fft_size=$fft_size, + fft_rate=$fft_rate, + average=$average, + avg_alpha=#if $avg_alpha() then $avg_alpha else 'None'#, + title=$title, +#if $win() + win=$win, +#end if +#if $win_size() + size=$win_size, +#end if +) +#if not $grid_pos() +$(parent).Add(self.$(id).win) +#else +$(parent).GridAdd(self.$(id).win, $(', '.join(map(str, $grid_pos())))) +#end if</make> + <callback>set_baseband_freq($baseband_freq)</callback> + <callback>set_sample_rate($samp_rate)</callback> + <param> + <name>Type</name> + <key>type</key> + <value>complex</value> + <type>enum</type> + <option> + <name>Complex</name> + <key>complex</key> + <opt>fcn:waterfall_sink_c</opt> + </option> + <option> + <name>Float</name> + <key>float</key> + <opt>fcn:waterfall_sink_f</opt> + </option> + </param> + <param> + <name>Title</name> + <key>title</key> + <value>Waterfall Plot</value> + <type>string</type> + </param> + <param> + <name>Sample Rate</name> + <key>samp_rate</key> + <value>samp_rate</value> + <type>real</type> + </param> + <param> + <name>Baseband Freq</name> + <key>baseband_freq</key> + <value>0</value> + <type>real</type> + </param> + <param> + <name>Dynamic Range</name> + <key>dynamic_range</key> + <value>100</value> + <type>real</type> + </param> + <param> + <name>Reference Level</name> + <key>ref_level</key> + <value>50</value> + <type>real</type> + </param> + <param> + <name>Ref Scale (p2p)</name> + <key>ref_scale</key> + <value>2.0</value> + <type>real</type> + </param> + <param> + <name>FFT Size</name> + <key>fft_size</key> + <value>512</value> + <type>int</type> + </param> + <param> + <name>FFT Rate</name> + <key>fft_rate</key> + <value>15</value> + <type>int</type> + </param> + <param> + <name>Average</name> + <key>average</key> + <value>False</value> + <type>enum</type> + <hide>part</hide> + <option> + <name>On</name> + <key>True</key> + </option> + <option> + <name>Off</name> + <key>False</key> + </option> + </param> + <param> + <name>Average Alpha</name> + <key>avg_alpha</key> + <value>0</value> + <type>real</type> + <hide>#if $average() == 'True' then 'none' else 'all'#</hide> + </param> + <param> + <name>Window</name> + <key>win</key> + <value>None</value> + <type>raw</type> + <hide>#if $win() is None then 'part' else 'none'#</hide> + <option> + <name>Automatic</name> + <key>None</key> + </option> + <option> + <name>Blackman-Harris</name> + <key>window.blackmanharris</key> + </option> + <option> + <name>Hamming</name> + <key>window.hamming</key> + </option> + <option> + <name>Hanning</name> + <key>window.hanning</key> + </option> + <option> + <name>Rectangular</name> + <key>window.rectangular</key> + </option> + <option> + <name>Flattop</name> + <key>window.flattop</key> + </option> + </param> + <param> + <name>Window Size</name> + <key>win_size</key> + <value></value> + <type>int_vector</type> + <hide>#if $win_size() then 'none' else 'part'#</hide> + </param> + <param> + <name>Grid Position</name> + <key>grid_pos</key> + <value></value> + <type>grid_pos</type> + </param> + <param> + <name>Notebook</name> + <key>notebook</key> + <value></value> + <type>notebook</type> + </param> + <check>not $win_size or len($win_size) == 2</check> + <sink> + <name>in</name> + <type>$type</type> + </sink> + <doc> +Set Average Alpha to 0 for automatic setting. + +Leave the window blank for the default size, otherwise enter a tuple of (width, height) pixels. + +Use the Grid Position (row, column, row span, column span) to position the graphical element in the window. + +Use the Notebook Param (notebook-id, page-index) to place the graphical element inside of a notebook page. + </doc> +</block> |