Basic terminal window that takes raw text on input msgq and appends it
[debian/gnuradio] / gr-wxgui / src / python / term_window.py
1 #
2 # Copyright 2009 Free Software Foundation, Inc.
3 #
4 # This file is part of GNU Radio
5 #
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)
9 # any later version.
10 #
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.
15 #
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.
20 #
21
22 import wx
23
24 DEFAULT_WIN_SIZE = (600, 300)
25 APPEND_EVENT = wx.NewEventType()
26 EVT_APPEND_EVENT = wx.PyEventBinder(APPEND_EVENT, 0)
27
28 class AppendEvent(wx.PyEvent):
29     def __init__(self, text):
30         wx.PyEvent.__init__(self)
31         self.SetEventType(APPEND_EVENT)
32         self.text = text
33
34     def Clone(self): 
35         self.__class__(self.GetId())
36
37
38 class term_window(wx.Panel):
39         def __init__(self,
40                      parent,
41                      size,
42                      ):
43
44                 wx.Panel.__init__(self,
45                                   parent,
46                                   size=size,
47                                   style=wx.SIMPLE_BORDER,
48                                   )
49
50                 self.text_ctrl = wx.TextCtrl(self,
51                                              wx.ID_ANY,
52                                              value="",
53                                              size=size,
54                                              style=wx.TE_MULTILINE|wx.TE_READONLY,
55                                         )
56
57                 main_sizer = wx.BoxSizer(wx.VERTICAL)
58                 main_sizer.Add(self.text_ctrl, 1, wx.EXPAND)
59                 self.SetSizerAndFit(main_sizer)
60
61                 EVT_APPEND_EVENT(self, self.evt_append)
62
63         def append_text(self, text):
64             evt = AppendEvent(text)
65             wx.PostEvent(self, evt)
66             del evt
67
68         def evt_append(self, evt):
69             print "appending", len(evt.text), "bytes"
70             self.text_ctrl.AppendText(evt.text)