summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohnathan Corgan <jcorgan@corganenterprises.com>2009-11-03 07:15:14 -0800
committerJohnathan Corgan <jcorgan@corganenterprises.com>2009-11-03 07:15:14 -0800
commit058edee5b4d1423b7ad88a9748bec073ff4963ff (patch)
treee1b48429dccb13587b04258c4e5c15b8f0660b98
parentf9c3bfb83af1048db54de941df1898f2ec7fb1fc (diff)
parent392b7f9002cb08dddc1ca0ced18f899a0958ba1f (diff)
Merge branch 'wip/term' of git@gnuradio.org:jcorgan
* 'wip/term' of git@gnuradio.org:jcorgan: gr-wxgui: cleanup for merge Consolidated termsink into one class Basic terminal window that takes raw text on input msgq and appends it Add placeholder panel for console, use old style window size Created skeleton wxgui term window component
-rw-r--r--gr-wxgui/src/python/Makefile.am13
-rw-r--r--gr-wxgui/src/python/termsink.py77
-rw-r--r--grc/blocks/Makefile.am1
-rw-r--r--grc/blocks/block_tree.xml1
-rw-r--r--grc/blocks/wxgui_termsink.xml55
5 files changed, 141 insertions, 6 deletions
diff --git a/gr-wxgui/src/python/Makefile.am b/gr-wxgui/src/python/Makefile.am
index e06298a2d0..2382d599c0 100644
--- a/gr-wxgui/src/python/Makefile.am
+++ b/gr-wxgui/src/python/Makefile.am
@@ -1,23 +1,23 @@
#
-# Copyright 2004,2005,2008 Free Software Foundation, Inc.
-#
+# Copyright 2004,2005,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.
-#
+#
include $(top_srcdir)/Makefile.common
@@ -53,6 +53,7 @@ ourpython_PYTHON = \
scopesink_nongl.py \
scopesink_gl.py \
scope_window.py \
+ termsink.py \
waterfallsink2.py \
waterfallsink_nongl.py \
waterfallsink_gl.py \
diff --git a/gr-wxgui/src/python/termsink.py b/gr-wxgui/src/python/termsink.py
new file mode 100644
index 0000000000..a0cfd575d6
--- /dev/null
+++ b/gr-wxgui/src/python/termsink.py
@@ -0,0 +1,77 @@
+#
+# 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.
+#
+
+from gnuradio import gru
+import wx
+
+DEFAULT_WIN_SIZE = (600, 300)
+APPEND_EVENT = wx.NewEventType()
+EVT_APPEND_EVENT = wx.PyEventBinder(APPEND_EVENT, 0)
+
+class AppendEvent(wx.PyEvent):
+ def __init__(self, text):
+ wx.PyEvent.__init__(self)
+ self.SetEventType(APPEND_EVENT)
+ self.text = text
+
+ def Clone(self):
+ self.__class__(self.GetId())
+
+class termsink(wx.Panel):
+ def __init__(self,
+ parent,
+ msgq,
+ size=DEFAULT_WIN_SIZE,
+ ):
+
+ wx.Panel.__init__(self,
+ parent,
+ size=size,
+ style=wx.SIMPLE_BORDER,
+ )
+
+ self.text_ctrl = wx.TextCtrl(self,
+ wx.ID_ANY,
+ value="",
+ size=size,
+ style=wx.TE_MULTILINE|wx.TE_READONLY,
+ )
+
+ main_sizer = wx.BoxSizer(wx.VERTICAL)
+ main_sizer.Add(self.text_ctrl, 1, wx.EXPAND)
+ self.SetSizerAndFit(main_sizer)
+
+ EVT_APPEND_EVENT(self, self.evt_append)
+ self.runner = gru.msgq_runner(msgq, self.handle_msg)
+
+ def handle_msg(self, msg):
+ # This gets called in the queue runner thread context
+ # For now, just add whatever the user sends to the text control
+ text = msg.to_string()
+
+ # Create a wxPython event and post it to the event queue
+ evt = AppendEvent(text)
+ wx.PostEvent(self, evt)
+ del evt
+
+ def evt_append(self, evt):
+ # This gets called by the wxPython event queue runner
+ self.text_ctrl.AppendText(evt.text)
diff --git a/grc/blocks/Makefile.am b/grc/blocks/Makefile.am
index 9194d99ec2..e436cc7645 100644
--- a/grc/blocks/Makefile.am
+++ b/grc/blocks/Makefile.am
@@ -230,6 +230,7 @@ dist_ourdata_DATA = \
wxgui_histosink2.xml \
wxgui_numbersink2.xml \
wxgui_scopesink2.xml \
+ wxgui_termsink.xml \
wxgui_waterfallsink2.xml \
xmlrpc_client.xml \
xmlrpc_server.xml
diff --git a/grc/blocks/block_tree.xml b/grc/blocks/block_tree.xml
index ffa52a1e7a..fc074cb691 100644
--- a/grc/blocks/block_tree.xml
+++ b/grc/blocks/block_tree.xml
@@ -46,6 +46,7 @@
<block>wxgui_constellationsink2</block>
<block>wxgui_waterfallsink2</block>
<block>wxgui_histosink2</block>
+ <block>wxgui_termsink</block>
</cat>
<cat>
<name>Operators</name>
diff --git a/grc/blocks/wxgui_termsink.xml b/grc/blocks/wxgui_termsink.xml
new file mode 100644
index 0000000000..985d89b58e
--- /dev/null
+++ b/grc/blocks/wxgui_termsink.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<!--
+###################################################
+##Terminal window
+###################################################
+ -->
+<block>
+ <name>Terminal Sink</name>
+ <key>wxgui_termsink</key>
+
+ <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>