Exemplo n.º 1
0
    def Run(self, event = None, wait = None, return_queue=None):
        '''
        setup thread
        event combination
        '''
        self._initialize_waitlist()

        if wait is not None: return_queue = Queue.Queue()   
        t, queue = get_thread(return_queue)
        t._verbose = self._run_verbose
        trigger = t.bind_init(self, self._doJob1)
        t_list = self.set_background(False)._setup_jobchain(t, [t])

        if event is not None: 
             w = event.GetEventObject()
        else:
             w = self.get_app()
        for t in t_list:
            ifigure.events.SendThreadStartEvent(self, w=w, thread=t)
        #print 'thread list', t_list

        send_event(trigger)

        if wait is not None:
            t = threading.current_thread()
            if t.name == 'MainThread':
                while return_queue.empty():
                    wx.Yield()
            else:
                return_queue.get()
        if return_queue is not None: return [t.name for t in t_list]
Exemplo n.º 2
0
    def Run(self, event=None, wait=None, return_queue=None):
        '''
        setup thread
        event combination
        '''
        self._initialize_waitlist()

        if wait is not None: return_queue = Queue.Queue()
        t, queue = get_thread(return_queue)
        t._verbose = self._run_verbose
        trigger = t.bind_init(self, self._doJob1)
        t_list = self.set_background(False)._setup_jobchain(t, [t])

        if event is not None:
            w = event.GetEventObject()
        else:
            w = self.get_app()
        for t in t_list:
            ifigure.events.SendThreadStartEvent(self, w=w, thread=t)
        #print 'thread list', t_list

        send_event(trigger)

        if wait is not None:
            t = threading.current_thread()
            if t.name == 'MainThread':
                while return_queue.empty():
                    wx.Yield()
            else:
                return_queue.get()
        if return_queue is not None: return [t.name for t in t_list]
Exemplo n.º 3
0
    def _doJob1(self, event):
        # check conditions
        if event in self._waitlist1:
           self._waitlist1[event] = True
        v = True 
        for key in self._waitlist1: v = v and self._waitlist1[key]
        if not v: return False

        name = self.get_full_path()
        if self._run_verbose:
            print('performing ' + name + '.job1 in ' + c_thread().name)
        self._status = 'running...'
        app = wx.GetApp().TopWindow
#        print 'in do job1', self, threading.current_thread().name
        wx.CallAfter(app.proj_tree_viewer.update_widget_request2)

        self.do_run()
        send_event(name + '.job1_done')

#        for key in self._waitlist1: self._waitlist1[key] = False
        return True
Exemplo n.º 4
0
    def _doJob2(self, event):
        if event in self._waitlist2:
           self._waitlist2[event] = True
        v = True 
        for key in self._waitlist2: v = v and self._waitlist2[key]

        if not v: return False

        name = self.get_full_path()
        if self._run_verbose:
            print('performing ' + name + '.job2 in ' + c_thread().name)

        send_event(name + '.job2_done')

        self._status = ''
#        print 'in do job2', self, threading.current_thread().name
#        if self._return_queue is not None: self._return_queue.put('done')
        app = wx.GetApp().TopWindow
        wx.CallAfter(app.proj_tree_viewer.update_widget_request2)

#        for key in self._waitlist2: self._waitlist2[key] = False
        return True
Exemplo n.º 5
0
    def _doJob1(self, event):
        # check conditions
        if event in self._waitlist1:
            self._waitlist1[event] = True
        v = True
        for key in self._waitlist1:
            v = v and self._waitlist1[key]
        if not v: return False

        name = self.get_full_path()
        if self._run_verbose:
            print('performing ' + name + '.job1 in ' + c_thread().name)
        self._status = 'running...'
        app = wx.GetApp().TopWindow
        #        print 'in do job1', self, threading.current_thread().name
        wx.CallAfter(app.proj_tree_viewer.update_widget_request2)

        self.do_run()
        send_event(name + '.job1_done')

        #        for key in self._waitlist1: self._waitlist1[key] = False
        return True
Exemplo n.º 6
0
    def _doJob2(self, event):
        if event in self._waitlist2:
            self._waitlist2[event] = True
        v = True
        for key in self._waitlist2:
            v = v and self._waitlist2[key]

        if not v: return False

        name = self.get_full_path()
        if self._run_verbose:
            print('performing ' + name + '.job2 in ' + c_thread().name)

        send_event(name + '.job2_done')

        self._status = ''
        #        print 'in do job2', self, threading.current_thread().name
        #        if self._return_queue is not None: self._return_queue.put('done')
        app = wx.GetApp().TopWindow
        wx.CallAfter(app.proj_tree_viewer.update_widget_request2)

        #        for key in self._waitlist2: self._waitlist2[key] = False
        return True