コード例 #1
0
ファイル: main.py プロジェクト: euccastro/cspdemo
def enhanced_user_input():

    root = ui.window_from_dicttree(yaml.load(file('ui.yaml')))
    ui.desktop.add_child(root)

    ch = stackless.channel()
    for id_ in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 
                'delete', 'return', 'star', 'hash']:
        button = ui.desktop.find_window(id_)
        button.callback = lambda btn=button: ch.send(btn.label.text)

    view = ui.desktop.find_window('view')
    text = []
    serial_no = 0

    # In a dict so they can be updated from within inner functions.
    # In Python 3 we'd use `nonlocal` vars.
    current = {'value': None, 'serial': 0}

    def get_current():
        return current['value']

    def set_current(val):
        current['value'] = val

    def wait_and_clear():
        current['serial'] += 1
        serial = current['serial']
        start = time.time()
        while time.time() - start < key_timeout:
            stackless.schedule()
        if current['serial'] == serial:
            current['value'] = None

    while True:
        event = ch.receive()
        if event == 'RET':
            ui.desktop.remove_child(root)
            return ''.join(text)
        elif event == 'DEL':
            set_current(None)
            try:
                del text[-1]
            except IndexError:
                pass
        elif event == get_current():
            index = (index + 1) % len(event)
            text[-1] = event[index]
        else:
            set_current(event)
            index = 0
            text.append(event[0])
        view.set_text(''.join(text))
        stackless.tasklet(wait_and_clear)()
コード例 #2
0
ファイル: searchview.py プロジェクト: euccastro/searchview
def run(filename):
    w = pyglet.window.Window(fullscreen=True)
    ui.init(w)
    @w.event
    def on_key_press(k, *etc):
        if k == key.ESCAPE:
            pyglet.app.exit()
    glPointSize(2)
    glClearColor(.2, .2, .2, 1.)
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
    glEnable(GL_BLEND)
    ui.desktop.add_child(ui.window_from_dicttree(yaml.load(file(filename))))
    stackless.tasklet(pyglet.app.run)()
    stackless.run()
コード例 #3
0
ファイル: searchview.py プロジェクト: euccastro/searchview
def copy_children(self, filename):
    for child in ui.window_from_dicttree(yaml.load(file(filename))).children:
        self.children.append(child)