diff options
author | Nick Foster | 2011-04-13 17:18:14 -0700 |
---|---|---|
committer | Nick Foster | 2011-04-13 17:18:14 -0700 |
commit | 9b7d444aaebbe0708e9703bce30c63b63bc81825 (patch) | |
tree | 29121aa250decfb1ed9ca7876e1857eec8779d83 /gr-wxgui/grc/top_block_gui.py | |
parent | 258186d5ca2e811ced7ea637fd16e3ed3bb5573e (diff) | |
parent | e8ff9ef4bb77517428e1208ff4b3551a38107bbd (diff) | |
download | gnuradio-9b7d444aaebbe0708e9703bce30c63b63bc81825.tar.gz gnuradio-9b7d444aaebbe0708e9703bce30c63b63bc81825.tar.bz2 gnuradio-9b7d444aaebbe0708e9703bce30c63b63bc81825.zip |
Merge branch 'master' of http://gnuradio.org/git/gnuradio into cpuid
Conflicts:
volk/Makefile.common
volk/lib/qa_utils.cc
Diffstat (limited to 'gr-wxgui/grc/top_block_gui.py')
-rw-r--r-- | gr-wxgui/grc/top_block_gui.py | 74 |
1 files changed, 74 insertions, 0 deletions
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() |