Ejemplo n.º 1
0
def test():
    app = KumReader()

    from e32 import Ao_lock
    lock=Ao_lock()
    appuifw.app.exit_key_handler=lock.signal
    lock.wait()
Ejemplo n.º 2
0
    def __init__(self):
        from e32 import Ao_lock
        from key_codes import EKeyEnter
        self.input_wait_lock = Ao_lock()
        self.input_stopped = False
        self.control = self.text = appuifw.Text()
        self.text.bind(EKeyEnter, self.input_wait_lock.signal)
        self.savestderr = sys.stderr
        self.savestdout = sys.stdout
        self.savestdin = sys.stdin
        sys.stderr = self
        sys.stdout = self
        sys.stdin = self
        self.writebuf = []

        def make_flusher(text, buf):
            def doflush():
                text.add(unicode(''.join(buf)))
                del buf[:]
                if text.len() > 1500:
                    text.delete(0, text.len() - 500)

            return doflush

        self._doflush = make_flusher(self.text, self.writebuf)
        self._flushgate = e32.ao_callgate(self._doflush)
Ejemplo n.º 3
0
def test():
    app = KumReader()

    from e32 import Ao_lock
    lock = Ao_lock()
    appuifw.app.exit_key_handler = lock.signal
    lock.wait()
Ejemplo n.º 4
0
    def __init__(self, logger = False):
        self.logger = logger
        from e32 import Ao_lock
        from key_codes import EKeyEnter
        self.input_wait_lock = Ao_lock()
        self.input_stopped = False
        self.control = self.text = appuifw.Text()
        self.text.font = ('title', 16, None)
        self.text.color = 0
        self.savestderr = sys.stderr
        self.savestdout = sys.stdout
        self.savestdin = sys.stdin
        sys.stderr = self
        sys.stdout = self
        sys.stdin = self
        self.writebuf = []
        self._doflush = self.clear()
        self._flushgate = self.clear()
        if self.logger :

            def make_flusher(text, buf):

                def doflush():
                    text.set_pos(text.len())
                    text.add(ru(''.join(buf)))
                    del buf[:]

                return doflush

            self._doflush = make_flusher(self.text, self.writebuf)
            self._flushgate = e32.ao_callgate(self._doflush)
        else:
            self.logger = False
            self.clear()
        return None
Ejemplo n.º 5
0
 def __init__(self, difficulty=3):
     self.difficulty = difficulty
     self.columns = range(1, 8)
     self.suits = range(1, 5)
     self.table = Table(initialCards=Deck(visible=False))
     self.selected = None
     self.deal(self.table)
     self.select(('game', 1))
     self.table.show()
     self.registerKeys()
     self.lock = Ao_lock()
     self.lock.wait()
     self.table.unshow()
Ejemplo n.º 6
0
 def __init__(self):
     self.columns = range(1, 9)
     self.free = range(1, 5)
     self.suits = range(1, 5)
     self.table = Table(initialCards=Deck(visible=True))
     self.selected = None
     self.deal(self.table)
     self.select(('game', 1))
     self.table.show()
     self.registerKeys()
     self.lock = Ao_lock()
     self.lock.wait()
     self.table.unshow()
Ejemplo n.º 7
0
    def __init__(self, sid=None):
        self.commands = {}
        self.events = {}
        self.pluginnames = []
        self.plugins = {}
        try:
            if sid == None:
                sid = GetSid()
            self.sid = sid

            Property.Define(sid, EKeyCommand, Property.EInt)
            Property.Define(sid, EKeyArguments, Property.EText)
            Property.Define(sid, EKeyResult, Property.EInt)
            self.pCommand = Property()
            self.pArgs = Property()
            self.pResult = Property()
            self.pCommand.Attach(sid, EKeyCommand, Property.EInt)
            self.pArgs.Attach(sid, EKeyArguments, Property.EText)
            self.pResult.Attach(sid, EKeyResult, Property.EInt)
            self.lResult = Ao_lock()
        except:
            DumpExceptionInfo()
Ejemplo n.º 8
0
 def __init__(self, dtext, dialog):
     self.dialog = dialog
     self.filelist = []
     self.filename = None
     self.lastpath = None
     self.winparam = []
     self.body = None
     self.optbody = None
     self.dtext = dtext
     self.outpath = 'E:\\Images'
     self.quality = 75
     self.bpp = 24
     self.compression = 'default'
     self.comprname = {'no' : self.dtext['comp_no'], 'fast' : self.dtext['comp_fast'], 'default' : self.dtext['comp_def'], 'best' : self.dtext['comp_best']}
     self.conf = None
     self.format = 'PNG'
     self.lock = Ao_lock()
Ejemplo n.º 9
0
    def __init__(self,sid=None):
        self.commands = {}
        self.events = {}
        self.pluginnames = []
        self.plugins = {}
        try:
            if sid == None:
                sid = GetSid()
            self.sid = sid

            Property.Define(sid,EKeyCommand,Property.EInt)
            Property.Define(sid,EKeyArguments,Property.EText)
            Property.Define(sid,EKeyResult,Property.EInt)
            self.pCommand = Property()
            self.pArgs = Property()
            self.pResult = Property()
            self.pCommand.Attach(sid,EKeyCommand,Property.EInt)
            self.pArgs.Attach(sid,EKeyArguments,Property.EText)
            self.pResult.Attach(sid,EKeyResult,Property.EInt)
            self.lResult = Ao_lock()
        except:
            DumpExceptionInfo()
Ejemplo n.º 10
0
class Game:
    def __init__(self):
        self.columns = range(1, 9)
        self.free = range(1, 5)
        self.suits = range(1, 5)
        self.table = Table(initialCards=Deck(visible=True))
        self.selected = None
        self.deal(self.table)
        self.select(('game', 1))
        self.table.show()
        self.registerKeys()
        self.lock = Ao_lock()
        self.lock.wait()
        self.table.unshow()

    def deal(self, table):
        pile = table[('pile', 1)]
        pile.cascadeY = 0
        pile.shuffle()
        pile.drawBase = False
        # add free card stacks
        for free in self.free:
            table.addStack(id=('free', free))
            table[('free', free)].x = 1 + cardWidth * free - cardWidth / 2
        # add goal stacks
        x = 4 * (cardWidth + 1) + cardWidth / 2 + 2
        goal = 0
        for suit in self.suits:
            table.addStack(id=('goal', suit))
            table[('goal', suit)].x = x
            table[('goal', suit)].y = 1
            table[('goal', suit)].cascadeX = 0
            table[('goal', suit)].cascadeY = 0
            x += cardWidth
        x = cardWidth / 2 + 1
        for col in self.columns:
            table.addStack(id=('game', col))
            table[('game', col)].x = x
            table[('game', col)].y = 45
            table[('game', col)].cascadeX = 0
            table[('game', col)].cascadeY = 10
            x += cardWidth + 1
        while len(pile) > 0:
            for col in self.columns:
                table.moveCards(pile, self.table[('game', col)], 1)
        # add temporary cards for held stack
        table.addStack(id=('held', 1))
        table[('held', 1)].x = 60
        table[('held', 1)].y = 180
        table[('held', 1)].cascadeX = 12
        table[('held', 1)].cascadeY = 4
        table[('held', 1)].drawBase = False
        self.held = table[('held', 1)]

    def select(self, stackName, index=-1):
        sel = self.selected
        if sel:
            self.table[sel].selectedIndex = None
        self.table[stackName].selectedIndex = index
        self.selected = stackName

    def registerKeys(self):
        table = app.body
        table.bind(EKeyDownArrow, self.keyDown)
        table.bind(EKeyUpArrow, self.keyUp)
        table.bind(EKeyRightArrow, self.keyRight)
        table.bind(EKeyLeftArrow, self.keyLeft)
        table.bind(EKeySelect, self.keySelect)
        app.exit_key_handler = self.exit

    def exit(self):
        if query(u'Exit game', 'query'):
            self.lock.signal()

    def keyUp(self):
        sel = self.selected
        stack = self.table[sel]
        # find no. of free cells
        n = 0
        for free in self.free:
            if len(self.table[('free', free)]) == 0:
                n += 1
        if len(stack[:stack.selectedIndex]) > 0 and stack[
                stack.selectedIndex - 1].visible and n >= len(
                    stack[stack.selectedIndex:]
                ) and sel[0] == 'game' and stack[stack.selectedIndex].colour(
                ) != stack[stack.selectedIndex - 1].colour() and int(
                    stack[stack.selectedIndex]) + 1 == int(
                        stack[stack.selectedIndex - 1]):
            self.select(sel, stack.selectedIndex - 1)
        self.table.refreshMarkers()

    def keyDown(self):
        sel = self.selected
        stack = self.table[sel]
        if len(stack[stack.selectedIndex:]) > 1:
            self.select(sel, stack.selectedIndex + 1)
        else:
            if sel[0] == 'free':
                self.select(('game', sel[1]), -1)
            if sel[0] == 'goal':
                self.select(('game', sel[1] + len(self.free)), -1)
        self.table.refreshMarkers()

    def keySelect(self):
        sel = self.selected
        stack = self.table[sel]
        card = stack.selected()
        pile = self.table[('pile', 1)]
        free = self.table[('free', 1)]
        if sel[0] == 'game' or sel[0] == 'goal' or sel[0] == 'free':
            if len(self.held) > 0:
                # drop cards if possible
                if (sel[0] == 'free' and len(stack) == 0 and len(self.held)
                        == 1) or (sel[0] == 'game' and len(stack) == 0) or (
                            len(stack) == 0 and sel[0] == 'goal'
                            and int(self.held[0]) == 1 and len(self.held) == 1
                        ) or (sel[0] == 'goal' and len(stack) > 0
                              and stack[-1].suit() == self.held[0].suit()
                              and int(stack[-1]) - int(self.held[0]) == -1
                              and len(self.held)
                              == 1) or (stack == self.prevStack) or (
                                  sel[0] == 'game' and len(stack) > 0 and
                                  int(stack[-1]) - int(self.held[0]) == 1 and
                                  stack[-1].colour() != self.held[0].colour()):
                    self.table.moveCards(self.held, stack)
                    self.select(sel)
                    self.table.refresh()
                    # check if the game is finished
                    finished = True
                    for suit in self.suits:
                        finished &= len(self.table[('goal', suit)]) == 13
                    if finished:
                        note(u'Complete!', 'conf')
                        self.lock.signal()
                    return
            # pick up selected cards
            else:
                if card and card.visible:
                    self.table.moveCards(stack, self.held,
                                         len(stack[stack.selectedIndex:]))
                    self.prevStack = stack
                    self.select(sel)
                    self.table.refresh()
                    return
        # return the cards if position invalid
        if len(self.held) > 0:
            self.table.moveCards(self.held, self.prevStack)
            self.table.refresh()

    def keyLeft(self):
        sel = self.selected
        if sel[0] == 'game':
            new = sel[1] - 1
            if new in self.columns:
                self.select((sel[0], new))
            else:
                self.select(('goal', max(self.suits)))
        if sel[0] == 'goal':
            new = sel[1] - 1
            if new in self.suits:
                self.select((sel[0], new))
            else:
                self.select(('free', max(self.free)))
        if sel[0] == 'free':
            new = sel[1] - 1
            if new in self.free:
                self.select((sel[0], new))
            else:
                self.select(('game', max(self.columns)))
        sel = self.selected
        stack = self.table[sel]
        if len(self.held) == 0 and len(stack) == 0:
            self.keyLeft()
        else:
            self.table.refreshMarkers()

    def keyRight(self):
        sel = self.selected
        if sel[0] == 'game':
            new = sel[1] + 1
            if new in self.columns:
                self.select((sel[0], new))
            else:
                self.select(('free', min(self.free)))
        if sel[0] == 'goal':
            new = sel[1] + 1
            if new in self.suits:
                self.select((sel[0], new))
            else:
                self.select(('game', min(self.columns)))
        if sel[0] == 'free':
            new = sel[1] + 1
            if new in self.free:
                self.select((sel[0], new))
            else:
                self.select(('goal', min(self.suits)))
        sel = self.selected
        stack = self.table[sel]
        if len(self.held) == 0 and len(stack) == 0:
            self.keyRight()
        else:
            self.table.refreshMarkers()
Ejemplo n.º 11
0
class Game:
    def __init__(self, difficulty=3):
        self.difficulty = difficulty
        self.columns = range(1, 8)
        self.suits = range(1, 5)
        self.table = Table(initialCards=Deck(visible=False))
        self.selected = None
        self.deal(self.table)
        self.select(('game', 1))
        self.table.show()
        self.registerKeys()
        self.lock = Ao_lock()
        self.lock.wait()
        self.table.unshow()

    def deal(self, table):
        pile = table[('pile', 1)]
        pile.cascadeY = 0
        pile.shuffle()
        # add available cards stacks
        table.addStack(id=('open', 1))
        table[('open', 1)].x = 2 + cardWidth * 1.5
        table[('open', 1)].cascadeX = 10
        table[('open', 1)].cascadeY = 0
        table[('open', 1)].drawBase = False
        # add goal stacks
        x = 3 * (cardWidth + 1) + cardWidth / 2
        goal = 0
        for suit in self.suits:
            table.addStack(id=('goal', suit))
            table[('goal', suit)].x = x
            table[('goal', suit)].y = 1
            table[('goal', suit)].cascadeX = 0
            table[('goal', suit)].cascadeY = 0
            x += cardWidth + 1
        x = cardWidth / 2 + 1
        for col in self.columns:
            table.addStack(id=('game', col))
            table[('game', col)].x = x
            table[('game', col)].y = 45
            table[('game', col)].cascadeX = 0
            table[('game', col)].cascadeY = 10
            x += cardWidth + 1
            for n in range(col):
                table.moveCards(pile, self.table[('game', col)], 1)
            table[('game', col)][-1].visible = True
        # add temporary cards for held stack
        table.addStack(id=('held', 1))
        table[('held', 1)].x = 40
        table[('held', 1)].y = 150
        table[('held', 1)].cascadeX = 12
        table[('held', 1)].cascadeY = 4
        table[('held', 1)].drawBase = False
        self.held = table[('held', 1)]

    def select(self, stackName, index=-1):
        sel = self.selected
        if sel:
            self.table[sel].selectedIndex = None
        self.table[stackName].selectedIndex = index
        self.selected = stackName

    def registerKeys(self):
        table = app.body
        table.bind(EKeyDownArrow, self.keyDown)
        table.bind(EKeyUpArrow, self.keyUp)
        table.bind(EKeyRightArrow, self.keyRight)
        table.bind(EKeyLeftArrow, self.keyLeft)
        table.bind(EKeySelect, self.keySelect)
        app.exit_key_handler = self.exit

    def exit(self):
        if query(u'Exit game', 'query'):
            self.lock.signal()

    def keyUp(self):
        sel = self.selected
        stack = self.table[sel]
        if sel[0] == 'game':
            if len(stack[:stack.selectedIndex]) > 0 and stack[
                    stack.selectedIndex - 1].visible:
                self.select(sel, stack.selectedIndex - 1)
        self.table.refreshMarkers()

    def keyDown(self):
        sel = self.selected
        stack = self.table[sel]
        if len(stack[stack.selectedIndex:]) > 1:
            self.select(sel, stack.selectedIndex + 1)
        self.table.refreshMarkers()

    def keySelect(self):
        sel = self.selected
        stack = self.table[sel]
        card = stack.selected()
        pile = self.table[('pile', 1)]
        open = self.table[('open', 1)]
        if sel[0] == 'game' or sel[0] == 'goal' or sel[0] == 'open':
            # turn over a card if not visible
            if card and not (card.visible) and card == stack[-1] and len(
                    self.held) == 0:
                card.visible = True
                self.table.refresh()
                return
            if len(self.held) > 0:
                # drop cards if possible
                if (sel[0] == 'game' and len(stack) == 0
                        and int(self.held[0]) == 13) or (
                            len(stack) == 0 and sel[0] == 'goal'
                            and int(self.held[0]) == 1 and len(self.held) == 1
                        ) or (sel[0] == 'goal' and len(stack) > 0
                              and stack[-1].suit() == self.held[0].suit()
                              and int(stack[-1]) - int(self.held[0]) == -1
                              and len(self.held)
                              == 1) or (stack == self.prevStack) or (
                                  sel[0] == 'game' and len(stack) > 0 and
                                  int(stack[-1]) - int(self.held[0]) == 1 and
                                  stack[-1].colour() != self.held[0].colour()):
                    self.table.moveCards(self.held, stack)
                    self.select(sel)
                    self.table.refresh()
                    # check if the game is finished
                    finished = True
                    for suit in self.suits:
                        finished &= len(self.table[('goal', suit)]) == 13
                    if finished:
                        note(u'Complete!', 'conf')
                        self.lock.signal()
                    return
            # pick up selected cards
            else:
                if card and card.visible:
                    self.table.moveCards(stack, self.held,
                                         len(stack[stack.selectedIndex:]))
                    self.prevStack = stack
                    self.select(sel)
                    self.table.refresh()
                    return
        # open new cards from pile
        if sel[0] == 'pile' and len(self.held) == 0:
            # hide current open cards
            if len(open) > 0:
                for openCard in open:
                    openCard.visible = False
                self.table.moveCards(open, pile, toBottom=True)
            # show new cards
            self.table.moveCards(pile, open, min(len(pile), self.difficulty))
            for openCard in open:
                openCard.visible = True
            self.table.refresh()
            return
        # return the cards if position invalid
        if len(self.held) > 0:
            self.table.moveCards(self.held, self.prevStack)
            self.table.refresh()

    def keyLeft(self):
        sel = self.selected
        if sel[0] == 'game':
            new = sel[1] - 1
            if new in self.columns:
                self.select((sel[0], new))
            else:
                self.select(('goal', max(self.suits)))
        if sel[0] == 'goal':
            new = sel[1] - 1
            if new in self.suits:
                self.select((sel[0], new))
            else:
                self.select(('open', 1))
        if sel[0] == 'pile':
            self.select(('game', max(self.columns)))
        if sel[0] == 'open':
            self.select(('pile', 1))
        # if no cards open don't select it
        sel = self.selected
        stack = self.table[sel]
        if (sel[0] == 'open' or len(self.held) == 0) and len(stack) == 0:
            self.keyLeft()
        else:
            self.table.refreshMarkers()

    def keyRight(self):
        sel = self.selected
        if sel[0] == 'game':
            new = sel[1] + 1
            if new in self.columns:
                self.select((sel[0], new))
            else:
                self.select(('pile', 1))
        if sel[0] == 'goal':
            new = sel[1] + 1
            if new in self.suits:
                self.select((sel[0], new))
            else:
                self.select(('game', min(self.columns)))
        if sel[0] == 'open':
            self.select(('goal', min(self.suits)))
        if sel[0] == 'pile':
            self.select(('open', 1))
        # if no cards open don't select it
        sel = self.selected
        stack = self.table[sel]
        if (sel[0] == 'open' or len(self.held) == 0) and len(stack) == 0:
            self.keyRight()
        else:
            self.table.refreshMarkers()
Ejemplo n.º 12
0
    text = "simlock Status = %d" % status
    app.body.add(u'%s\n' % text)

    status = get_first_boot_status()
    text = "first boot Status = %d" % status
    app.body.add(u'%s\n' % text)

    status = get_sim_owned_status()
    text = "sim owned Status = %d" % status
    app.body.add(u'%s\n' % text)

    status = get_new_email_status()
    text = "new email Status = %d" % status
    app.body.add(u'%s\n' % text)

    status = get_wcdma_status()
    text = "wcdma Status = %d" % status
    app.body.add(u'%s\n' % text)

    status = get_sim_present()
    text = "sim present = %d" % status
    app.body.add(u'%s\n' % text)


lock = Ao_lock()
app.body = Text()
app.body.clear()
app.exit_key_handler = lock.signal
app.menu = [(u"View sysagent info", viewsysagent)]
lock.wait()
Ejemplo n.º 13
0
def quit():
    app.exit_key_handler = None
    script_lock.signal()
    capturer.stop()
    print "TERMINATO."
    print


def inizio():
    global img
    img = Image.open("C:\\nokia\\images\\tasti2.JPG")
    canv.blit(img)


script_lock = Ao_lock()
app.exit_key_handler = quit
appuifw.app.body = canv = appuifw.Canvas()
appuifw.app.screen = 'full'
capturer = keycapture.KeyCapturer(cb_capture)
capturer.forwarding = 0
capturer.keys = (keycapture.EKey0, keycapture.EKey1, keycapture.EKey2,
                 keycapture.EKey3, keycapture.EKey4, keycapture.EKey5,
                 keycapture.EKey6, keycapture.EKey7, keycapture.EKey8,
                 keycapture.EKey9, keycapture.EKeyYes, keycapture.EKeyNo,
                 keycapture.EKeySelect, keycapture.EKeyEdit,
                 keycapture.EKeyStar, keycapture.EKeyHash)
capturer.start()
inizio()
script_lock.wait()
Ejemplo n.º 14
0
class Client:
    def __init__(self, sid=None):
        self.commands = {}
        self.events = {}
        self.pluginnames = []
        self.plugins = {}
        try:
            if sid == None:
                sid = GetSid()
            self.sid = sid

            Property.Define(sid, EKeyCommand, Property.EInt)
            Property.Define(sid, EKeyArguments, Property.EText)
            Property.Define(sid, EKeyResult, Property.EInt)
            self.pCommand = Property()
            self.pArgs = Property()
            self.pResult = Property()
            self.pCommand.Attach(sid, EKeyCommand, Property.EInt)
            self.pArgs.Attach(sid, EKeyArguments, Property.EText)
            self.pResult.Attach(sid, EKeyResult, Property.EInt)
            self.lResult = Ao_lock()
        except:
            DumpExceptionInfo()

    def Done(self):
        try:
            for plugin in self.plugins.keys():
                self.UnloadPlugin(plugin)

            Property.Delete(self.sid, EKeyCommand)
            Property.Delete(self.sid, EKeyArguments)
            Property.Delete(self.sid, EKeyResult)
        except:
            DumpExceptionInfo()

    def __getattr__(self, attr):
        if attr in self.commands:
            return self.commands[attr]

    def PingServer(self):
        try:
            self.pResult.Set(0xff)
            self.pCommand.Set(EKeyCmdServerPing)
            ao_sleep(0.3)
            if self.pResult.Get() == EResultOk:
                return True
            else:
                return False
        except:
            DumpExceptionInfo()
            return False

    def ServerStart(self, script):
        ping = self.PingServer()
        self.pResult.Subscribe(self.OnResult)
        if ping == False:
            start_exe(u"c:\\sys\\bin\\custom_launcher.exe", script)
            self.lResult.wait()

    def ServerStop(self):
        return self.ServerCall(EKeyCmdServerExit, "")

    def LoadPlugin(self, name):
        if name in self.pluginnames:
            return

        import_string = "import %s as plugin" % name
        exec import_string
        self.plugins[name] = plugin
        self.pluginnames.append(name)
        plugin.ClientInit(self)

    def UnloadPlugin(self, name):
        self.plugins[name].ClientDone(self)
        del self.plugins[name]

    def RegisterEvents(self, events):
        try:
            for key in events.keys():
                self.events[key] = Event(key, events[key][1], self.sid,
                                         events[key][0])
            return EResultOk
        except:
            DumpExceptionInfo()
            return EResultFailed

    def RegisterCommands(self, commands):
        try:

            def istuple(var):
                return type(var) == type(())

            for cmd in commands:
                if istuple(cmd):
                    name, key, format = cmd
                    self.commands[name] = Command(self, key, format).Call
                else:
                    name = cmd.__name__
                    self.commands[name] = cmd
            return EResultOk
        except:
            DumpExceptionInfo()
            return EResultFailed

    def OnResult(self):
        try:
            self.lResult.signal()
            return EResultOk
        except:
            DumpExceptionInfo()
            return EResultFailed

    def ServerCall(self, key, format, *args):
        try:
            if format != "":
                s = struct.pack(format, *args)
                self.pArgs.Set(s)

            self.pCommand.Set(key)
            self.lResult.wait()
            return self.pResult.Get()
        except:
            DumpExceptionInfo()
            return EResultFailed

    def DelCommands(self, *commands):
        try:
            for name in commands:
                del self.commands[name]
            return EResultOk
        except:
            DumpExceptionInfo()
            return EResultFailed

    def DelEvents(self, *events):
        try:
            for key in events:
                self.events[key].Done()
                del self.events[key]
            return EResultOk
        except:
            DumpExceptionInfo()
            return EResultFailed

    def SendEvent(self, key, *args):
        try:
            if key in self.events:
                self.events[key].Set(*args)
            return EResultOk
        except:
            DumpExceptionInfo()
            return EResultFailed

    def GetEvent(self, key):
        try:
            if key in self.events:
                return self.events[key].Get()
        except:
            DumpExceptionInfo()
Ejemplo n.º 15
0
    if key==keycapture.EKey3:
          return

def quit():
    app.exit_key_handler = None
    script_lock.signal()
    capturer.stop()
    print "TERMINATO."
    print
              
def inizio():
    global img
    img=Image.open("C:\\nokia\\images\\tasti2.JPG")
    canv.blit(img)
    
script_lock = Ao_lock()
app.exit_key_handler = quit
appuifw.app.body=canv=appuifw.Canvas()
appuifw.app.screen='full'
capturer=keycapture.KeyCapturer(cb_capture)
capturer.forwarding=0
capturer.keys=(
               keycapture.EKey0,
               keycapture.EKey1,
               keycapture.EKey2,
               keycapture.EKey3,
               keycapture.EKey4,
               keycapture.EKey5,
               keycapture.EKey6,
               keycapture.EKey7,
               keycapture.EKey8,
Ejemplo n.º 16
0
class Console:

    def __init__(self, logger = False):
        self.logger = logger
        from e32 import Ao_lock
        from key_codes import EKeyEnter
        self.input_wait_lock = Ao_lock()
        self.input_stopped = False
        self.control = self.text = appuifw.Text()
        self.text.font = ('title', 16, None)
        self.text.color = 0
        self.savestderr = sys.stderr
        self.savestdout = sys.stdout
        self.savestdin = sys.stdin
        sys.stderr = self
        sys.stdout = self
        sys.stdin = self
        self.writebuf = []
        self._doflush = self.clear()
        self._flushgate = self.clear()
        if self.logger :

            def make_flusher(text, buf):

                def doflush():
                    text.set_pos(text.len())
                    text.add(ru(''.join(buf)))
                    del buf[:]

                return doflush

            self._doflush = make_flusher(self.text, self.writebuf)
            self._flushgate = e32.ao_callgate(self._doflush)
        else:
            self.logger = False
            self.clear()
        return None

    def __del__(self):
        sys.stderr = self.savestderr
        sys.stdout = self.savestdout
        sys.stdin = self.savestdin
        self.control = self.text = None
        return

    def stop_input(self):
        self.input_stopped = True
        self.input_wait_lock.signal()

    def clear(self):
        self.text.clear()

    def write(self, obj):
        self.writebuf.append(obj)
        self.flush()

    def writelines(self, list):
        self.write(''.join(list))

    def flush(self):
        if len(self.writebuf) > 0:
            if e32.is_ui_thread():
                self._doflush()
            else:
                self._flushgate()

    def readline(self):
        if not e32.is_ui_thread():
            raise IOError('Cannot call readline from non-UI thread')
        pos = self.text.get_pos()
        len = self.text.len()
        save_exit_key_handler = appuifw.app.exit_key_handler
        appuifw.app.exit_key_handler = self.stop_input
        self.input_wait_lock.wait()
        appuifw.app.exit_key_handler = save_exit_key_handler
        if self.input_stopped:
            self.text.add(u'\n')
            self.input_stopped = False
            raise EOFError
        new_pos = self.text.get_pos()
        new_len = self.text.len()
        if (new_pos <= pos) | (new_len - len != new_pos - pos):
            new_pos = self.text.len()
            self.text.set_pos(new_pos)
            self.text.add(u'\n')
            user_input = ''
        else:
            user_input = self.text.get(pos, new_pos - pos - 1)
        return user_input.encode('utf8')
Ejemplo n.º 17
0
class Console:
    def __init__(self):
        from e32 import Ao_lock
        from key_codes import EKeyEnter
        self.input_wait_lock = Ao_lock()
        self.input_stopped = False
        self.control = self.text = appuifw.Text()
        self.text.bind(EKeyEnter, self.input_wait_lock.signal)
        self.savestderr = sys.stderr
        self.savestdout = sys.stdout
        self.savestdin = sys.stdin
        sys.stderr = self
        sys.stdout = self
        sys.stdin = self
        self.writebuf = []

        def make_flusher(text, buf):
            def doflush():
                text.add(unicode(''.join(buf)))
                del buf[:]
                if text.len() > 1500:
                    text.delete(0, text.len() - 500)

            return doflush

        self._doflush = make_flusher(self.text, self.writebuf)
        self._flushgate = e32.ao_callgate(self._doflush)

    def __del__(self):
        sys.stderr = self.savestderr
        sys.stdout = self.savestdout
        sys.stdin = self.savestdin
        self.control = self.text = None

    def stop_input(self):
        self.input_stopped = True
        self.input_wait_lock.signal()

    def clear(self):
        self.text.clear()

    def write(self, obj):
        self.writebuf.append(obj)
        self.flush()

    def writelines(self, list):
        self.write(''.join(list))

    def flush(self):
        if len(self.writebuf) > 0:
            if e32.is_ui_thread():
                self._doflush()
            else:
                self._flushgate()

    def readline(self):
        if not e32.is_ui_thread():
            raise IOError('Cannot call readline from non-UI thread')
        pos = self.text.get_pos()
        len = self.text.len()
        save_exit_key_handler = appuifw.app.exit_key_handler
        appuifw.app.exit_key_handler = self.stop_input
        self.input_wait_lock.wait()
        appuifw.app.exit_key_handler = save_exit_key_handler
        if self.input_stopped:
            self.text.add(u'\n')
            self.input_stopped = False
            raise EOFError
        new_pos = self.text.get_pos()
        new_len = self.text.len()
        if ((new_pos <= pos) | ((new_len - len) != (new_pos - pos))):
            new_pos = self.text.len()
            self.text.set_pos(new_pos)
            self.text.add(u'\n')
            user_input = ''
        else:
            user_input = (self.text.get(pos, new_pos - pos - 1))
        return (user_input)
Ejemplo n.º 18
0
class Client:
    def __init__(self,sid=None):
        self.commands = {}
        self.events = {}
        self.pluginnames = []
        self.plugins = {}
        try:
            if sid == None:
                sid = GetSid()
            self.sid = sid

            Property.Define(sid,EKeyCommand,Property.EInt)
            Property.Define(sid,EKeyArguments,Property.EText)
            Property.Define(sid,EKeyResult,Property.EInt)
            self.pCommand = Property()
            self.pArgs = Property()
            self.pResult = Property()
            self.pCommand.Attach(sid,EKeyCommand,Property.EInt)
            self.pArgs.Attach(sid,EKeyArguments,Property.EText)
            self.pResult.Attach(sid,EKeyResult,Property.EInt)
            self.lResult = Ao_lock()
        except:
            DumpExceptionInfo()

    def Done(self):
        try:
            for plugin in self.plugins.keys():
                self.UnloadPlugin(plugin)

            Property.Delete(self.sid,EKeyCommand)
            Property.Delete(self.sid,EKeyArguments)
            Property.Delete(self.sid,EKeyResult)
        except:
            DumpExceptionInfo()

    def __getattr__(self,attr):
        if attr in self.commands:
            return self.commands[attr]

    def PingServer(self):
        try:
            self.pResult.Set(0xff)
            self.pCommand.Set(EKeyCmdServerPing)
            ao_sleep(0.3)
            if self.pResult.Get() == EResultOk:
                return True
            else:
                return False
        except:
            DumpExceptionInfo()
            return False

    def ServerStart(self,script):
        ping = self.PingServer()
        self.pResult.Subscribe(self.OnResult)
        if ping == False:
            start_exe(u"c:\\sys\\bin\\custom_launcher.exe",script)
            self.lResult.wait()

    def ServerStop(self):
        return self.ServerCall(EKeyCmdServerExit,"")

    def LoadPlugin(self,name):
        if name in self.pluginnames:
            return

        import_string = "import %s as plugin" % name
        exec import_string
        self.plugins[name]=plugin
        self.pluginnames.append(name)
        plugin.ClientInit(self)

    def UnloadPlugin(self,name):
        self.plugins[name].ClientDone(self)
        del self.plugins[name]

    def RegisterEvents(self,events):
        try:
            for key in events.keys():
                self.events[key] = Event(key,events[key][1],self.sid,events[key][0])
            return EResultOk
        except:
            DumpExceptionInfo()
            return EResultFailed

    def RegisterCommands(self,commands):
        try:
            def istuple(var):
                return type(var) == type(())

            for cmd in commands:
                if istuple(cmd):
                    name, key, format = cmd
                    self.commands[name] = Command(self,key,format).Call
                else:
                    name = cmd.__name__
                    self.commands[name] = cmd
            return EResultOk
        except:
            DumpExceptionInfo()
            return EResultFailed

    def OnResult(self):
        try:
            self.lResult.signal()
            return EResultOk
        except:
            DumpExceptionInfo()
            return EResultFailed

    def ServerCall(self,key,format,*args):
        try:
            if format != "":
                s = struct.pack(format,*args)
                self.pArgs.Set(s)

            self.pCommand.Set(key)
            self.lResult.wait()
            return self.pResult.Get()
        except:
            DumpExceptionInfo()
            return EResultFailed

    def DelCommands(self,*commands):
        try:
            for name in commands:
                del self.commands[name]
            return EResultOk
        except:
            DumpExceptionInfo()
            return EResultFailed

    def DelEvents(self,*events):
        try:
            for key in events:
                self.events[key].Done()
                del self.events[key]
            return EResultOk
        except:
            DumpExceptionInfo()
            return EResultFailed

    def SendEvent(self,key,*args):
        try:
            if key in self.events:
                self.events[key].Set(*args)
            return EResultOk
        except:
            DumpExceptionInfo()
            return EResultFailed

    def GetEvent(self,key):
        try:
            if key in self.events:
                return self.events[key].Get()
        except:
            DumpExceptionInfo()