Exemplo n.º 1
0
 def showStatusMsg(self,context,msg):        
     context_id=self.statusbar.get_context_id(context)        
     msg_id=self.statusbar.push(context_id,msg)
     timeout=tasklet.WaitForTimeout(1000)
     yield timeout
     self.statusbar.remove(context_id,msg_id)
     tasklet.get_event()
Exemplo n.º 2
0
 def task_func():
     callback = tasklet.WaitForCall()
     register_callback(callback)
     yield callback
     tasklet.get_event()
     callback.return_value = False
     mainloop.quit()
     raise StopIteration((callback.args, callback.kwargs))
Exemplo n.º 3
0
 def task_func():
     callback = tasklet.WaitForCall()
     register_callback(callback)
     yield callback
     tasklet.get_event()
     callback.return_value = False
     mainloop.quit()
     raise StopIteration((callback.args, callback.kwargs))
Exemplo n.º 4
0
 def showStatusMsg(self,context,msg):        
     context_id=self.statusbar.get_context_id(context)        
     msg_id=self.statusbar.push(context_id,msg)
     timeout=tasklet.WaitForTimeout(1000)
     yield timeout
     self.statusbar.remove(context_id,msg_id) # See >>>
     # "remove" depreciated in later GTK version, so in future use >>> 
     #self.statusbar.remove_message(context_id,msg_id)
     tasklet.get_event()
Exemplo n.º 5
0
 def refreshSensors(self):
     while self.burstModeOnOff:
         timeout = tasklet.WaitForTimeout(self.refreshRate)
         for i in range(8):
             if self.checkbuttonSensors[i].get_active() and self.burstModeOnOff:
                 value=self.get_sensor_value(i)
                 if value>-1:
                     self.sensorValues[i]=value
                     self.entrySensors[i].set_text(self.get_sensor_text(i,value))
                     self.sensorBars[i].set_fraction(self.sensorValues[i]/1023.0)
         yield timeout
         tasklet.get_event()
Exemplo n.º 6
0
 def refreshSensors(self):
     while self.burstModeOnOff:
         timeout = tasklet.WaitForTimeout(self.refreshRate)
         for i in range(8):
             if self.checkbuttonSensors[i].get_active() and self.burstModeOnOff:
                 value=self.get_sensor_value(i)
                 if value>-1:
                     self.sensorValues[i]=value
                     self.entrySensors[i].set_text(self.get_sensor_text(i,value))
                     self.sensorBars[i].set_fraction(self.sensorValues[i]/1023.0)
         yield timeout
         tasklet.get_event()
Exemplo n.º 7
0
def main():
    parser = OptionParser(usage="usage: %prog command")
    (options, args) = parser.parse_args()
    if len(args) != 1:
        parser.print_help()
        sys.exit(1)

    win = gtk.Window()
    textview = gtk.TextView()
    textview.modify_font(pango.FontDescription("Monospace"))
    textview.show()
    sw = gtk.ScrolledWindow()
    sw.add(textview)
    sw.show()
    win.add(sw)
    win.set_default_size(gtk.gdk.screen_width() * 2 / 3,
                         gtk.gdk.screen_height() * 2 / 3)
    win.show()

    ## launch process
    proc = subprocess.Popen(args[0],
                            shell=True,
                            stdout=subprocess.PIPE,
                            bufsize=1,
                            close_fds=True)
    win.set_title("%s (running)" % args[0])
    # print proc.stdout, type(proc.stdout), dir(proc.stdout)
    chan = gobject.IOChannel(filedes=proc.stdout.fileno())
    chan.set_flags(gobject.IO_FLAG_NONBLOCK)
    sink = tasklet.run(
        process_stdout_sink(chan, textview.get_buffer(), textview))

    ## child watch
    yield (tasklet.WaitForProcess(proc.pid),
           tasklet.WaitForSignal(win, "destroy"))

    if isinstance(tasklet.get_event(), tasklet.WaitForSignal):
        killproc(proc.pid)
        gtk.main_quit()
    else:
        ## stop reader
        yield tasklet.Message("quit", dest=sink)
        win.set_title("%s (completed)" % args[0])
        yield tasklet.WaitForSignal(win, "destroy")
        tasklet.get_event()
        gtk.main_quit()
Exemplo n.º 8
0
 def echoer():
     yield tasklet.WaitForMessages(accept='echo-request')
     msg = tasklet.get_event()
     assert isinstance(msg, tasklet.Message)
     assert msg.sender is not None
     yield tasklet.Message('echo-reply',
                           dest=msg.sender,
                           value=msg.value)
Exemplo n.º 9
0
def process_stdout_sink(chan, buffer, view):
    timeout = tasklet.WaitForTimeout(200)
    iowait = tasklet.WaitForIO(chan, priority=1000)
    msgwait = tasklet.WaitForMessages(accept='quit')
    while True:
        yield iowait, msgwait
        ev = tasklet.get_event()
        if isinstance(ev, tasklet.Message) and ev.name == 'quit':
            return
        assert ev is iowait
        text = chan.read()
        buffer.insert(buffer.get_end_iter(), text)
        view.scroll_to_mark(buffer.get_insert(), 0)
        ## Now wait for some time, don't let process output "drown"
        ## the TextView updates
        yield timeout, tasklet.WaitForMessages(defer='quit')
        ev = tasklet.get_event()
        assert ev is timeout
Exemplo n.º 10
0
def process_stdout_sink(chan, buffer, view):
    timeout = tasklet.WaitForTimeout(200)
    iowait = tasklet.WaitForIO(chan, priority=1000)
    msgwait = tasklet.WaitForMessages(accept='quit')
    while True:
        yield iowait, msgwait
        ev = tasklet.get_event()
        if isinstance(ev, tasklet.Message) and ev.name == 'quit':
            return
        assert ev is iowait
        text = chan.read()
        buffer.insert(buffer.get_end_iter(), text)
        view.scroll_to_mark(buffer.get_insert(), 0)
        ## Now wait for some time, don't let process output "drown"
        ## the TextView updates
        yield timeout, tasklet.WaitForMessages(defer='quit')
        ev = tasklet.get_event()
        assert ev is timeout
Exemplo n.º 11
0
def main():
    parser = OptionParser(usage="usage: %prog command")
    (options, args) = parser.parse_args()
    if len(args) != 1:
        parser.print_help()
        sys.exit(1)

    win = gtk.Window()
    textview = gtk.TextView()
    textview.modify_font(pango.FontDescription("Monospace"))
    textview.show()
    sw = gtk.ScrolledWindow()
    sw.add(textview)
    sw.show()
    win.add(sw)
    win.set_default_size(gtk.gdk.screen_width()*2/3,
                         gtk.gdk.screen_height()*2/3)
    win.show()

    ## launch process
    proc = subprocess.Popen(args[0], shell=True, stdout=subprocess.PIPE,
                            bufsize=1, close_fds=True)
    win.set_title("%s (running)" % args[0])
    #print proc.stdout, type(proc.stdout), dir(proc.stdout)
    chan = gobject.IOChannel(filedes=proc.stdout.fileno())
    chan.set_flags(gobject.IO_FLAG_NONBLOCK)
    sink = tasklet.run(process_stdout_sink(chan, textview.get_buffer(),
                                           textview))

    ## child watch
    yield (tasklet.WaitForProcess(proc.pid),
           tasklet.WaitForSignal(win, "destroy"))

    if isinstance(tasklet.get_event(), tasklet.WaitForSignal):
        killproc(proc.pid)
        gtk.main_quit()
    else:
        ## stop reader
        yield tasklet.Message("quit", dest=sink)
        win.set_title("%s (completed)" % args[0])
        yield tasklet.WaitForSignal(win, "destroy")
        tasklet.get_event()
        gtk.main_quit()
Exemplo n.º 12
0
 def run(self):
     '''Execute the task.'''
     import random
     for i in range(self.count):
         print(">> _count_some_numbers2", i)
         yield (WaitForTimeout(random.randint(70, self.timeout)),
                WaitForMessages(accept='quit'))
         event = get_event()
         if isinstance(event, Message) and event.name == 'quit':
             ## this would be the place to do some cleanup.
             return
     raise StopIteration(self.count * 2)
Exemplo n.º 13
0
 def run(self):
     '''Execute the task.'''
     import random
     for i in range(self.count):
         print(">> _count_some_numbers2", i)
         yield (WaitForTimeout(random.randint(70, self.timeout)),
                WaitForMessages(accept='quit'))
         event = get_event()
         if isinstance(event, Message) and event.name == 'quit':
             ## this would be the place to do some cleanup.
             return
     raise StopIteration(self.count * 2)
Exemplo n.º 14
0
    def run(self):
        timeout = tasklet.WaitForTimeout(1000)
        msgwait = tasklet.WaitForMessages(accept='quit')

        for i in range(10, 0, -1):
            self.dialog.format_secondary_markup(
                "Time left: <b>%i</b> seconds" % i)

            yield timeout, msgwait
            ev = tasklet.get_event()

            if isinstance(ev, tasklet.Message) and ev.name == 'quit':
                return
            elif ev is timeout:
                pass
            else:
                raise AssertionError
Exemplo n.º 15
0
    def run(self):
        timeout = tasklet.WaitForTimeout(1000)
        msgwait = tasklet.WaitForMessages(accept='quit')

        for i in range(10, 0, -1):
            self.dialog.format_secondary_markup(
                "Time left: <b>%i</b> seconds" % i)

            yield timeout, msgwait
            ev = tasklet.get_event()

            if isinstance(ev, tasklet.Message) and ev.name == 'quit':
                return
            elif ev is timeout:
                pass
            else:
                raise AssertionError
Exemplo n.º 16
0
def _count_some_numbers1(count):
    '''Counts numbers with at fixed time spacings'''
    timeout = WaitForTimeout(500)
    for i in range(count):
        print("_count_some_numbers1", i)
        task2 = _CountSomeNumbers2(10, 70)
        yield timeout, task2
        event = get_event()
        if event is timeout:
            print(">>> Got tired of waiting for task!! Canceling!")
            ## send a message asking the tasklet to stop
            yield Message('quit', dest=task2)
        elif isinstance(event, WaitForTasklet):
            print(">>> task returned %r, good task!" % event.retval)
            ## restart timeout from scratch, otherwise it keeps
            ## running and we end up giving the next task too little
            ## time.
            timeout.restart()
        else:
            assert False, "strange event"

    raise SystemExit
Exemplo n.º 17
0
def _count_some_numbers1(count):
    '''Counts numbers with at fixed time spacings'''
    timeout = WaitForTimeout(500)
    for i in range(count):
        print("_count_some_numbers1", i)
        task2 = _CountSomeNumbers2(10, 70)
        yield timeout, task2
        event = get_event()
        if event is timeout:
            print(">>> Got tired of waiting for task!! Canceling!")
            ## send a message asking the tasklet to stop
            yield Message('quit', dest=task2)
        elif isinstance(event, WaitForTasklet):
            print(">>> task returned %r, good task!" % event.retval)
            ## restart timeout from scratch, otherwise it keeps
            ## running and we end up giving the next task too little
            ## time.
            timeout.restart()
        else:
            assert False, "strange event"

    raise SystemExit
Exemplo n.º 18
0
 def echoer():
     yield tasklet.WaitForMessages(accept='echo-request')
     msg = tasklet.get_event()
     assert isinstance(msg, tasklet.Message)
     assert msg.sender is not None
     yield tasklet.Message('echo-reply', dest=msg.sender, value=msg.value)
Exemplo n.º 19
0
 def pinger(remote, value):
     yield tasklet.Message('echo-request', dest=remote, value=value)
     yield tasklet.WaitForMessages(accept='echo-reply')
     msg = tasklet.get_event()
     raise StopIteration(msg.value)
Exemplo n.º 20
0
 def some_task():
     yield tasklet.WaitForTimeout(100)
     tasklet.get_event()
     raise StopIteration("return-val")
Exemplo n.º 21
0
 def some_task():
     yield tasklet.WaitForSignal(C, 'my-signal')
     tasklet.get_event()
     raise StopIteration("return-val")
Exemplo n.º 22
0
 def task_waiter():
     yield quick_task()
     taskwait = tasklet.get_event()
     raise StopIteration(taskwait.retval)
Exemplo n.º 23
0
 def pipe_reader(chan):
     assert chan.get_flags() & GObject.IO_FLAG_IS_READABLE
     yield tasklet.WaitForIO(chan, GObject.IO_IN)
     tasklet.get_event()
     c = chan.read(1)
     raise StopIteration(c)
Exemplo n.º 24
0
 def pipe_reader(chan):
     assert chan.get_flags() & gobject.IO_FLAG_IS_READABLE
     yield tasklet.WaitForIO(chan, gobject.IO_IN)
     tasklet.get_event()
     c = chan.read(1)
     raise StopIteration(c)
Exemplo n.º 25
0
 def pipe_writer(chan, c):
     assert chan.get_flags() & gobject.IO_FLAG_IS_WRITEABLE
     yield tasklet.WaitForIO(chan, gobject.IO_OUT)
     tasklet.get_event()
     chan.write(c)
Exemplo n.º 26
0
 def task_waiter():
     yield quick_task()
     taskwait = tasklet.get_event()
     raise StopIteration(taskwait.retval)
Exemplo n.º 27
0
 def some_task():
     yield tasklet.WaitForSignal(C, 'my-signal')
     tasklet.get_event()
     raise StopIteration("return-val")
Exemplo n.º 28
0
 def some_task():
     yield tasklet.WaitForTimeout(100)
     tasklet.get_event()
     raise StopIteration("return-val")
Exemplo n.º 29
0
def main():
    dialog = Gtk.MessageDialog(parent=None, flags=0, type=Gtk.MessageType.QUESTION,
                               buttons=Gtk.ButtonsType.YES_NO,
                               message_format="Please answer Yes or No")
    dialog.format_secondary_markup("Time left: <b>??</b> seconds")
    dialog.show()

    counter = Counter(dialog)

    yield (tasklet.WaitForTasklet(counter),
           tasklet.WaitForSignal(dialog, "response"),
           tasklet.WaitForSignal(dialog, "close"))

    event = tasklet.get_event()
    if isinstance(event, tasklet.WaitForSignal):
        print("signal '%s', stopping counter" % event.signal)
        yield tasklet.Message("quit", dest=counter)  # stop the counter

        if event.signal == 'close':
            Gtk.main_quit()
            return

        response = event.signal_args[0]
        msgbox = Gtk.MessageDialog(parent=dialog,
                                   flags=Gtk.DialogFlags.DESTROY_WITH_PARENT,
                                   type=Gtk.MessageType.INFO,
                                   buttons=Gtk.ButtonsType.OK,
                                   message_format=("Thank you "
                                                   "for your kind answer!"))
        print("response was", response)
        if response == Gtk.ResponseType.YES:
            msgbox.format_secondary_markup(
                "Your response was <i><b>Yes</b></i>")
        elif response == Gtk.ResponseType.NO:
            msgbox.format_secondary_markup(
                "Your response was <i><b>No</b></i>")
        else:
            ## must have been a delete event
            print("response was delete event")
            Gtk.main_quit()
            return
        msgbox.show()

        print("showing dialog")
        yield (tasklet.WaitForSignal(msgbox, "response"),
               tasklet.WaitForSignal(msgbox, "close"))
        print("event", tasklet.get_event())

    else:
        ## timeout must have exausted..
        assert isinstance(event, tasklet.WaitForTasklet)
        msgbox = Gtk.MessageDialog(parent=dialog,
                                   flags=Gtk.DialogFlags.DESTROY_WITH_PARENT,
                                   type=Gtk.MessageType.WARNING,
                                   buttons=Gtk.ButtonsType.OK,
                                   message_format="You're too slow!!")
        msgbox.show()

        yield (tasklet.WaitForSignal(msgbox, "response"),
               tasklet.WaitForSignal(msgbox, "close"))

    Gtk.main_quit()
Exemplo n.º 30
0
 def pipe_writer(chan, c):
     assert chan.get_flags() & GObject.IO_FLAG_IS_WRITEABLE
     yield tasklet.WaitForIO(chan, GObject.IO_OUT)
     tasklet.get_event()
     chan.write(c)
Exemplo n.º 31
0
def main():
    dialog = Gtk.MessageDialog(parent=None,
                               flags=0,
                               type=Gtk.MessageType.QUESTION,
                               buttons=Gtk.ButtonsType.YES_NO,
                               message_format="Please answer Yes or No")
    dialog.format_secondary_markup("Time left: <b>??</b> seconds")
    dialog.show()

    counter = Counter(dialog)

    yield (tasklet.WaitForTasklet(counter),
           tasklet.WaitForSignal(dialog, "response"),
           tasklet.WaitForSignal(dialog, "close"))

    event = tasklet.get_event()
    if isinstance(event, tasklet.WaitForSignal):
        print("signal '%s', stopping counter" % event.signal)
        yield tasklet.Message("quit", dest=counter)  # stop the counter

        if event.signal == 'close':
            Gtk.main_quit()
            return

        response = event.signal_args[0]
        msgbox = Gtk.MessageDialog(parent=dialog,
                                   flags=Gtk.DialogFlags.DESTROY_WITH_PARENT,
                                   type=Gtk.MessageType.INFO,
                                   buttons=Gtk.ButtonsType.OK,
                                   message_format=("Thank you "
                                                   "for your kind answer!"))
        print("response was", response)
        if response == Gtk.ResponseType.YES:
            msgbox.format_secondary_markup(
                "Your response was <i><b>Yes</b></i>")
        elif response == Gtk.ResponseType.NO:
            msgbox.format_secondary_markup(
                "Your response was <i><b>No</b></i>")
        else:
            ## must have been a delete event
            print("response was delete event")
            Gtk.main_quit()
            return
        msgbox.show()

        print("showing dialog")
        yield (tasklet.WaitForSignal(msgbox, "response"),
               tasklet.WaitForSignal(msgbox, "close"))
        print("event", tasklet.get_event())

    else:
        ## timeout must have exausted..
        assert isinstance(event, tasklet.WaitForTasklet)
        msgbox = Gtk.MessageDialog(parent=dialog,
                                   flags=Gtk.DialogFlags.DESTROY_WITH_PARENT,
                                   type=Gtk.MessageType.WARNING,
                                   buttons=Gtk.ButtonsType.OK,
                                   message_format="You're too slow!!")
        msgbox.show()

        yield (tasklet.WaitForSignal(msgbox, "response"),
               tasklet.WaitForSignal(msgbox, "close"))

    Gtk.main_quit()
Exemplo n.º 32
0
 def pinger(remote, value):
     yield tasklet.Message('echo-request', dest=remote, value=value)
     yield tasklet.WaitForMessages(accept='echo-reply')
     msg = tasklet.get_event()
     raise StopIteration(msg.value)