From 6f0685769f7a7728a779502435cd2dd17b8d65e2 Mon Sep 17 00:00:00 2001 From: Johnathan Corgan Date: Thu, 29 Oct 2009 07:26:39 -0700 Subject: [PATCH] Consolidated termsink into one class --- gr-wxgui/src/python/Makefile.am | 11 +++-- gr-wxgui/src/python/term_window.py | 70 ------------------------------ gr-wxgui/src/python/termsink.py | 56 +++++++++++++++++++----- grc/blocks/wxgui_termsink.xml | 8 ++-- 4 files changed, 55 insertions(+), 90 deletions(-) delete mode 100644 gr-wxgui/src/python/term_window.py diff --git a/gr-wxgui/src/python/Makefile.am b/gr-wxgui/src/python/Makefile.am index 0b4550b3..dfa156f6 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. -# +# # 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,7 +53,6 @@ ourpython_PYTHON = \ scopesink_nongl.py \ scopesink_gl.py \ scope_window.py \ - term_window.py \ termsink.py \ waterfallsink2.py \ waterfallsink_nongl.py \ diff --git a/gr-wxgui/src/python/term_window.py b/gr-wxgui/src/python/term_window.py deleted file mode 100644 index 77270b1f..00000000 --- a/gr-wxgui/src/python/term_window.py +++ /dev/null @@ -1,70 +0,0 @@ -# -# 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 - -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 term_window(wx.Panel): - def __init__(self, - parent, - 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) - - def append_text(self, text): - evt = AppendEvent(text) - wx.PostEvent(self, evt) - del evt - - def evt_append(self, evt): - print "appending", len(evt.text), "bytes" - self.text_ctrl.AppendText(evt.text) diff --git a/gr-wxgui/src/python/termsink.py b/gr-wxgui/src/python/termsink.py index addfa581..45a94e39 100644 --- a/gr-wxgui/src/python/termsink.py +++ b/gr-wxgui/src/python/termsink.py @@ -19,25 +19,61 @@ # Boston, MA 02110-1301, USA. # -import term_window from gnuradio import gru +import wx -class termsink(object): +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=term_window.DEFAULT_WIN_SIZE, + size=DEFAULT_WIN_SIZE, ): - - self.win = term_window.term_window( - parent=parent, - size=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): - # Just append text for now + # 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() print "handle_msg: received", len(text), "bytes" - self.win.append_text(text) + + # 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 + print "appending", len(evt.text), "bytes" + self.text_ctrl.AppendText(evt.text) diff --git a/grc/blocks/wxgui_termsink.xml b/grc/blocks/wxgui_termsink.xml index fce7577d..985d89b5 100644 --- a/grc/blocks/wxgui_termsink.xml +++ b/grc/blocks/wxgui_termsink.xml @@ -16,12 +16,12 @@ termsink.termsink( #if $win_size() size=$win_size, #end if - msgq=$(id)_msgq, + msgq=$(id)_msgq_in, ) #if not $grid_pos() -$(parent).Add(self.$(id).win) +$(parent).Add(self.$(id)) #else -$(parent).GridAdd(self.$(id).win, $(', '.join(map(str, $grid_pos())))) +$(parent).GridAdd(self.$(id), $(', '.join(map(str, $grid_pos())))) #end if @@ -51,5 +51,5 @@ $(parent).GridAdd(self.$(id).win, $(', '.join(map(str, $grid_pos())))) in msg - + -- 2.30.2