Parcourir la source

wxGUI/GConsole: removing Modeler specific code, Modeler now uses events (co-author: annakrat)

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@53925 15284696-431f-4ddb-bdfa-cd5b030d7da7
Vaclav Petras il y a 12 ans
Parent
commit
dc65ac9f48
2 fichiers modifiés avec 32 ajouts et 30 suppressions
  1. 6 2
      gui/wxpython/gmodeler/frame.py
  2. 26 28
      gui/wxpython/gui_core/goutput.py

+ 6 - 2
gui/wxpython/gmodeler/frame.py

@@ -34,7 +34,8 @@ import wx.lib.flatnotebook    as FN
 
 from core                 import globalvar
 from gui_core.widgets     import GNotebook
-from gui_core.goutput     import GConsole, EVT_OUTPUT_TEXT
+from gui_core.goutput     import GConsole, \
+    EVT_CMD_RUN, EVT_CMD_DONE, EVT_CMD_PREPARE, EVT_OUTPUT_TEXT
 from core.debug           import Debug
 from core.gcmd            import GMessage, GException, GWarning, GError, RunCommand
 from gui_core.dialogs     import GetImageHandlers
@@ -106,7 +107,10 @@ class ModelFrame(wx.Frame):
         
         self.goutput = GConsole(parent = self, frame = self)
         self.goutput.Bind(EVT_OUTPUT_TEXT, self.OnOutputText)
-        
+        self.Bind(EVT_CMD_RUN, self.OnCmdRun)
+        self.Bind(EVT_CMD_DONE, self.OnCmdDone)
+        self.Bind(EVT_CMD_PREPARE, self.OnCmdPrepare)
+
         self.notebook.AddPage(page = self.canvas, text=_('Model'), name = 'model')
         self.notebook.AddPage(page = self.itemPanel, text=_('Items'), name = 'items')
         self.notebook.AddPage(page = self.variablePanel, text=_('Variables'), name = 'variables')

+ 26 - 28
gui/wxpython/gui_core/goutput.py

@@ -67,7 +67,10 @@ def GrassCmd(cmd, env = None, stdout = None, stderr = None):
 class CmdThread(threading.Thread):
     """!Thread for GRASS commands"""
     requestId = 0
-    def __init__(self, parent, requestQ = None, resultQ = None, **kwds):
+    def __init__(self, receiver, requestQ = None, resultQ = None, **kwds):
+        """!
+        @param receiver event receiver (used in PostEvent)
+        """
         threading.Thread.__init__(self, **kwds)
         
         if requestQ is None:
@@ -82,7 +85,7 @@ class CmdThread(threading.Thread):
         
         self.setDaemon(True)
         
-        self.parent = parent # GConsole
+        self.receiver = receiver
         self._want_abort_all = False
         
         self.start()
@@ -128,13 +131,13 @@ class CmdThread(threading.Thread):
                                  pid = requestId,
                                  onPrepare = vars()['onPrepare'],
                                  userData = vars()['userData'])
-            wx.PostEvent(self.parent, event)
+            wx.PostEvent(self.receiver, event)
             
             # run command
             event = wxCmdRun(cmd = args[0],
                              pid = requestId)
             
-            wx.PostEvent(self.parent, event)
+            wx.PostEvent(self.receiver, event)
             
             time.sleep(.1)
             self.requestCmd = vars()['callable'](*args, **kwds)
@@ -190,7 +193,7 @@ class CmdThread(threading.Thread):
                               userData = vars()['userData'])
             
             # send event
-            wx.PostEvent(self.parent, event)
+            wx.PostEvent(self.receiver, event)
             
     def abort(self, abortall = True):
         """!Abort command(s)"""
@@ -249,11 +252,10 @@ class GConsole(wx.SplitterWindow):
         self.cmdOutput = GStc(parent = self.panelOutput, id = wx.ID_ANY, margin = margin,
                                wrap = None) 
         self.cmdOutputTimer = wx.Timer(self.cmdOutput, id = wx.ID_ANY)
-        self.cmdOutput.Bind(EVT_CMD_OUTPUT, self.OnCmdOutput)
-        self.cmdOutput.Bind(wx.EVT_TIMER, self.OnProcessPendingOutputWindowEvents)
+        self.Bind(EVT_CMD_OUTPUT, self.OnCmdOutput)
+        self.Bind(wx.EVT_TIMER, self.OnProcessPendingOutputWindowEvents)
         self.Bind(EVT_CMD_RUN,     self.OnCmdRun)
         self.Bind(EVT_CMD_DONE,    self.OnCmdDone)
-        self.Bind(EVT_CMD_PREPARE, self.OnCmdPrepare)
 
         # information about available modules
         modulesData = ModulesData()
@@ -817,24 +819,14 @@ class GConsole(wx.SplitterWindow):
         
     def OnCmdRun(self, event):
         """!Run command"""
-        if self.frame.GetName() == 'Modeler':
-            self.frame.OnCmdRun(event)
-        
         self.WriteCmdLog('(%s)\n%s' % (str(time.ctime()), ' '.join(event.cmd)))
         self.btnCmdAbort.Enable()
 
-    def OnCmdPrepare(self, event):
-        """!Prepare for running command"""
-        if self.frame.GetName() == 'Modeler':
-            self.frame.OnCmdPrepare(event)
-        
         event.Skip()
-        
+
     def OnCmdDone(self, event):
         """!Command done (or aborted)"""
-        if self.frame.GetName() == 'Modeler':
-            self.frame.OnCmdDone(event)
-            
+
         # Process results here
         try:
             ctime = time.time() - event.time
@@ -998,8 +990,11 @@ class GStdout:
     Copyright: (c) 2005-2007 Jean-Michel Fauth
     Licence:   GPL
     """
-    def __init__(self, parent):
-        self.parent = parent # GConsole
+    def __init__(self, receiver):
+        """!
+        @param receiver event receiver (used in PostEvent)
+        """
+        self.receiver = receiver
 
     def write(self, s):
         if len(s) == 0 or s == '\n':
@@ -1011,7 +1006,7 @@ class GStdout:
             
             evt = wxCmdOutput(text = line + '\n',
                               type = '')
-            wx.PostEvent(self.parent.cmdOutput, evt)
+            wx.PostEvent(self.receiver, evt)
         
 class GStderr:
     """!GConsole standard error output
@@ -1024,8 +1019,11 @@ class GStderr:
     Copyright: (c) 2005-2007 Jean-Michel Fauth
     Licence:   GPL
     """
-    def __init__(self, parent):
-        self.parent = parent # GConsole
+    def __init__(self, receiver):
+        """!
+        @param receiver event receiver (used in PostEvent)
+        """
+        self.receiver = receiver
         
         self.type = ''
         self.message = ''
@@ -1067,14 +1065,14 @@ class GStderr:
                     continue
                 evt = wxCmdOutput(text = line,
                                   type = '')
-                wx.PostEvent(self.parent.cmdOutput, evt)
+                wx.PostEvent(self.receiver, evt)
             elif len(line) > 0:
                 self.message += line.strip() + '\n'
 
             if self.printMessage and len(self.message) > 0:
                 evt = wxCmdOutput(text = self.message,
                                   type = self.type)
-                wx.PostEvent(self.parent.cmdOutput, evt)
+                wx.PostEvent(self.receiver, evt)
 
                 self.type = ''
                 self.message = ''
@@ -1084,7 +1082,7 @@ class GStderr:
         if progressValue > -1:
             # self.gmgauge.SetValue(progressValue)
             evt = wxCmdProgress(value = progressValue)
-            wx.PostEvent(self.parent.progressbar, evt)
+            wx.PostEvent(self.receiver, evt)
             
 class GStc(stc.StyledTextCtrl):
     """!Styled text control for GRASS stdout and stderr.