コード例 #1
0
    def Execute(self):
        #start = clock()
        eventString = self.string
        if eventString in eg.notificationHandlers:
            for listener in eg.notificationHandlers[eventString].listeners:
                if listener(self) == True:
                    return

        eg.event = self
        eg.eventString = eventString
        eg.EventString = eventString  # eg.EventString is deprecated

        get = eg.eventTable.get
        eventHandlerList = []
        eventHandlerList += get(eventString, [])
        #if self.prefix != "Keyboard":
        eventHandlerList += get(self.suffix, [])
        key2 = self.suffix.rsplit(".", 1)[-1]
        if self.suffix != key2:
            eventHandlerList += get(key2, [])
        eventHandlerList += get('*', [])
        key1 = eventString.rsplit(".", 1)[0] + '.*'
        eventHandlerList += get(key1, [])
        key2 = eventString.split(".", 1)[0] + '.*'
        if key1 != key2:
            eventHandlerList += get(key2, [])

        activeHandlers = set()
        for eventHandler in eventHandlerList:
            obj = eventHandler
            while obj:
                if not obj.isEnabled:
                    break
                obj = obj.parent
            else:
                activeHandlers.add(eventHandler)

        if config.onlyLogAssigned and len(activeHandlers) == 0:
            self.SetStarted()
            return

        # show the event in the logger
        LogEvent(self)

        activeHandlers = sorted(activeHandlers, key=GetItemPath)

        eg.SetProcessingState(2, self)
        for eventHandler in activeHandlers:
            try:
                eg.programCounter = (eventHandler.parent, None)
                eg.indent = 1
                RunProgram()
            except:
                eg.PrintTraceback()
            if self.skipEvent:
                break
        self.SetStarted()
        eg.SetProcessingState(1, self)
コード例 #2
0
 def ExecuteTreeItem(obj, event):
     eg.SetProcessingState(2, event)
     eg.event = event
     if isinstance(obj, eg.MacroItem):
         eg.programCounter = (obj, 0)
         eg.RunProgram()
     elif isinstance(obj, eg.ActionItem):
         obj.Execute()
     eg.SetProcessingState(1, event)
コード例 #3
0
    def Execute(self):
        #start = clock()
        eventString = self.string
        if eventString in eg.notificationHandlers:
            for listener in eg.notificationHandlers[eventString].listeners:
                if listener(self) is True:
                    return

        eg.event = self
        eg.eventString = eventString

        eventHandlerList = []
        for key, val in eg.eventTable.iteritems():
            if (
                eventString == key or
                (("*" in key or "?" in key) and fnmatchcase(eventString, key))
            ):
                eventHandlerList += val

        activeHandlers = set()
        for eventHandler in eventHandlerList:
            obj = eventHandler
            while obj:
                if not obj.isEnabled:
                    break
                obj = obj.parent
            else:
                activeHandlers.add(eventHandler)

        for listener in eg.log.eventListeners:
            listener.LogEvent(self)

        if config.onlyLogAssigned and len(activeHandlers) == 0:
            self.SetStarted()
            return

        # show the event in the logger
        LogEvent(self)

        activeHandlers = sorted(activeHandlers, key=GetItemPath)

        eg.SetProcessingState(2, self)
        for eventHandler in activeHandlers:
            try:
                eg.programCounter = (eventHandler.parent, None)
                eg.indent = 1
                RunProgram()
            except:
                eg.PrintTraceback()
            if self.skipEvent:
                break
        self.SetStarted()
        eg.SetProcessingState(1, self)
コード例 #4
0
 def SetShouldEnd(self):
     if not self.shouldEnd.isSet():
         self.shouldEnd.set()
         eg.SetProcessingState(0, self)
         actionThread.Call(self.DoUpFuncs)
         self.__join()
コード例 #5
0
        def do():
            self.time = clock()
            self.result = None
            self.lastFoundWindows = []
            self.stopExecutionFlag = False
            self.indent = 0
            self.programReturnStack = []
            self.programCounter = None
            self.isEnded = False
            self.payload = self.payloads.pop(0)
            self.source = self.sources.pop(0)
            self.percent_run = 0.0

            if self.string in eg.notificationHandlers:
                for l in eg.notificationHandlers[self.string].listeners:
                    if l(self) is True:
                        return

            eventHandlerList = []
            for key, val in eg.eventTable.iteritems():
                if (
                    self.event.string == key or
                    (
                        ("*" in key or "?" in key) and
                        fnmatchcase(self.string, key)
                    )
                ):
                    eventHandlerList += val

            activeHandlers = set()
            for eventHandler in eventHandlerList:
                obj = eventHandler
                while obj:
                    if not obj.isEnabled:
                        break
                    obj = obj.parent
                else:
                    activeHandlers.add(eventHandler)

            for listener in eg.log.eventListeners:
                listener.LogEvent(self)

            if config.onlyLogAssigned and len(activeHandlers) == 0:
                self.SetStarted()
                return

            # show the event in the logger
            LogEvent(self)

            activeHandlers = sorted(activeHandlers, key=GetItemPath)
            active_handler_count = float(len(activeHandlers))

            while activeHandlers:
                completed = active_handler_count - len(activeHandlers)
                completed = (float(completed) / active_handler_count) * 100.0

                if eg.mainFrame is not None:
                    eg.mainFrame.logCtrl.SetEventMeter(completed)

                eventHandler = activeHandlers.pop(0)
                try:
                    self.programCounter = (eventHandler.parent, None)
                    self.indent = 1
                    RunProgram()
                except:
                    eg.PrintTraceback()
                if self.skipEvent:
                    break

            if eg.mainFrame is not None:
                eg.mainFrame.logCtrl.SetEventMeter(100.0)

            self.SetStarted()
            eg.SetProcessingState(1, self)