Changeset 1461

Show
Ignore:
Timestamp:
07/07/08 07:41:07 (8 weeks ago)
Author:
rob
Message:

Changed from idle processing to polling timer to get output from subprocesses

Location:
trunk/peppy
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/peppy/lib/processmanager.py

    r1441 r1461  
    4949        _GlobalProcessManager = _ProcessManager() 
    5050        wx.GetApp().Bind(wx.EVT_END_PROCESS, ProcessManager().OnProcessEnded) 
     51        wx.GetApp().Bind(wx.EVT_TIMER, ProcessManager().OnUpdateOutput) 
    5152 
    5253    return _GlobalProcessManager 
     
    209210    debuglevel = 0 
    210211    autoclean = True 
     212    timer = None 
    211213     
    212214    jobs = [] 
     
    217219            if job.process: 
    218220                job.readStreams() 
     221     
     222    def OnUpdateOutput(self, evt): 
     223        self.idle() 
    219224     
    220225    def run(self, cmd, working_dir, job_output, input=""): 
     
    226231            self.job_lookup[job.pid] = job 
    227232            Publisher().sendMessage('peppy.processmanager.started', job) 
     233        if not self.timer: 
     234            self.__class__.timer = wx.Timer(wx.GetApp()) 
     235            self.__class__.timer.Start(500) 
    228236        return job 
    229237 
     
    255263        if self.autoclean: 
    256264            self.removeJob(job) 
     265        if not self.jobs: 
     266            self.__class__.timer.Stop() 
     267            self.__class__.timer = None 
    257268        self.finished(job) 
    258269 
  • trunk/peppy/main.py

    r1452 r1461  
    411411        wx.SetDefaultPyEncoding(self.classprefs.default_text_encoding) 
    412412         
    413         self.Bind(wx.EVT_IDLE, self.OnIdle) 
    414413        self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown) 
    415414 
    416415        return True 
    417416     
    418     def OnIdle(self, evt): 
    419         """Application-wide idle update events are processed here. 
    420         """ 
    421         # The process manager is a global, so it should be updated here 
    422         ProcessManager().idle() 
    423         evt.Skip() 
    424  
    425417    def OnKeyDown(self, evt): 
    426418        """Last chance to handle keystroke processing.