2 # Copyright 2009 Free Software Foundation, Inc.
4 # This file is part of GNU Radio
6 # GNU Radio is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 3, or (at your option)
11 # GNU Radio is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License
17 # along with GNU Radio; see the file COPYING. If not, write to
18 # the Free Software Foundation, Inc., 51 Franklin Street,
19 # Boston, MA 02110-1301, USA.
22 from gnuradio import gru
25 DEFAULT_WIN_SIZE = (600, 300)
26 APPEND_EVENT = wx.NewEventType()
27 EVT_APPEND_EVENT = wx.PyEventBinder(APPEND_EVENT, 0)
29 class AppendEvent(wx.PyEvent):
30 def __init__(self, text):
31 wx.PyEvent.__init__(self)
32 self.SetEventType(APPEND_EVENT)
36 self.__class__(self.GetId())
38 class termsink(wx.Panel):
42 size=DEFAULT_WIN_SIZE,
45 wx.Panel.__init__(self,
48 style=wx.SIMPLE_BORDER,
51 self.text_ctrl = wx.TextCtrl(self,
55 style=wx.TE_MULTILINE|wx.TE_READONLY,
58 main_sizer = wx.BoxSizer(wx.VERTICAL)
59 main_sizer.Add(self.text_ctrl, 1, wx.EXPAND)
60 self.SetSizerAndFit(main_sizer)
62 EVT_APPEND_EVENT(self, self.evt_append)
63 self.runner = gru.msgq_runner(msgq, self.handle_msg)
65 def handle_msg(self, msg):
66 # This gets called in the queue runner thread context
67 # For now, just add whatever the user sends to the text control
68 text = msg.to_string()
70 # Create a wxPython event and post it to the event queue
71 evt = AppendEvent(text)
72 wx.PostEvent(self, evt)
75 def evt_append(self, evt):
76 # This gets called by the wxPython event queue runner
77 self.text_ctrl.AppendText(evt.text)