コード例 #1
0
	def __call__(self,hostName,displayName,portNumber,timeoutNumber,sendEvent,eventPortOpen,eventPortClosed):
		global prefix
	
		sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
		sock.settimeout(timeoutNumber)

		print hostName
		try:
			result = sock.connect_ex((hostName,portNumber))
			sock.close()
			if result == 0:
			   hostStatus="port open"
			else:
			   hostStatus="port closed"
		except:
			hostStatus="hostname unresolved"
			print "Error: can't resolve " + hostName
		
		if eventPortOpen=="":
			if displayName=="":
				eventPortOpen=hostName + "_PORT_OPEN"
			else:
				eventPortOpen=displayName + "_PORT_OPEN"
		if eventPortClosed=="":
			if displayName=="":
				eventPortClosed=hostName + "_PORT_CLOSED"
			else:
				eventPortClosed=displayName + "_PORT_CLOSED"
		if sendEvent:
			if hostStatus=="port open":
				eg.TriggerEvent(prefix=prefix,suffix=eventPortOpen)
			else:
				eg.TriggerEvent(prefix=prefix,suffix=eventPortClosed)
		return hostStatus
コード例 #2
0
 def __call__(self, hostName, hostFriendlyName, pingDelay, sendEvent,
              eventAlive, eventDead):
     global prefix
     pingCmd = os.popen(
         "ping " + hostName + " -w " + str(pingDelay) + " -n 1", "r")
     if pingCmd.read().find(self.plugin.pingString) > -1:
         hostStatus = "alive"
     else:
         hostStatus = "dead"
     if eventAlive == "":
         if hostFriendlyName == "":
             eventAlive = hostName + "_IS_ALIVE"
         else:
             eventAlive = hostFriendlyName + "_IS_ALIVE"
     if eventDead == "":
         if hostFriendlyName == "":
             eventDead = hostName + "_IS_DEAD"
         else:
             eventDead = hostFriendlyName + "_IS_DEAD"
     if sendEvent:
         if hostStatus == "alive":
             eg.TriggerEvent(prefix=prefix, suffix=eventAlive)
         else:
             eg.TriggerEvent(prefix=prefix, suffix=eventDead)
     return (hostStatus == "alive")
    def Query(self, key1, key2, key3):

        if key2 != None and key2 != '' and key3 != None and key3 != '':
            try:
                eg.TriggerEvent('QueryResults.' + str(DBase[key1][key2][key3]),
                                prefix='SystemDatabase',
                                payload=DBase[key1][key2][key3])

                return DBase[key1][key2][key3]
            except KeyError:
                eg.PrintError('Key Error')
                print key1, key2, key3
                return 'KeyError'

        elif key2 != None and key2 != '':
            try:
                eg.TriggerEvent('QueryResults.' + str(DBase[key1][key2]),
                                prefix='SystemDatabase',
                                payload=DBase[key1][key2])
                return DBase[key1][key2]
            except KeyError:
                eg.PrintError('Key Error')
                print key1, key2
                return 'KeyError'

        else:
            try:
                eg.TriggerEvent('QueryResults.' + str(DBase[key1]),
                                prefix='SystemDatabase',
                                payload=DBase[key1])
                return DBase[key1]
            except KeyError:
                eg.PrintError('Key Error')
                print key1
                return 'KeyError'
コード例 #4
0
ファイル: Command.py プロジェクト: WoLpH/EventGhost
        def run(self):
            WaitForSingleObject(self.processInformation.hProcess, INFINITE)
            exitCode = DWORD()
            if not GetExitCodeProcess(
                self.processInformation.hProcess,
                byref(exitCode)
            ):
                raise self.Exception(FormatError())
            CloseHandle(self.processInformation.hProcess)
            if hasattr(self.processInformation, "hThread"):
                CloseHandle(self.processInformation.hThread)
            if self.pld:
                try:
                    data = code_open(self.filename, 'r', self.cp)
                    lines = data.readlines()
                    returnValue = "".join(lines)
                    data.close()
                    remove(self.filename)
                except:
                    returnValue = ""

                eg.TriggerEvent(
                    self.suffix,
                    prefix = self.prefix,
                    payload = returnValue.rstrip()
                )
            else:
                eg.TriggerEvent(self.suffix, prefix = self.prefix)
コード例 #5
0
    def __call__(self, imagePath, evtID, cType, evtF, evtNF):
        script = "\nSysGet, VirtualWidth, 78\nSysGet, VirtualWidth, 79"
        script += "\nImageSearch, imageX, imageY, 0, 0"
        script += ", %A_ScreenWidth%, %A_ScreenHeight%, " + imagePath
        if cType != 0:
            script += "\nif ErrorLevel = 0"
            if cType == 1:
                script += "\n    Click %imageX%, %imageY%, left"
            if cType == 2:
                script += "\n    Click %imageX%, %imageY%, 2"
            if cType == 3:
                script += "\n    Click %imageX%, %imageY%, right"

        script = replaceEgVars(script)
        ImgScript = ahk.Script()
        ImgScript.variable("imageX", int)
        ImgScript.variable("imageY", int)
        ahk.execute(str(script))
        errorLevel = ImgScript.ErrorLevel
        if evtID:
            evtID += "."
        if errorLevel == 0 and evtF == True:
            eg.TriggerEvent(evtID + "ImageFound",
                            prefix="AHK.ImageSearch",
                            payload=[ImgScript.imageX, ImgScript.imageY])
        if errorLevel == 1 and evtNF == True:
            eg.TriggerEvent(evtID + "ImageNotFound", prefix="AHK.ImageSearch")
        if errorLevel == 2:
            eg.PrintError("There was an error. Try another image format.")
コード例 #6
0
    def SendEvent(self,sendPayload):

        if sendPayload['variable_name'] == 'Status':

            if sendPayload['new_state'] == '0':

                eg.TriggerEvent(
                            'Switch.DeviceID-'+str(sendPayload['device_id'])+'.Off',
                            prefix = 'Vera',
                            payload = sendPayload
                            )

            if sendPayload['new_state'] == '1':

                eg.TriggerEvent(
                            'Switch.DeviceID-'+str(sendPayload['device_id'])+'.On',
                            prefix = 'Vera',
                            payload = sendPayload
                            )

        if sendPayload['variable_name'] == 'LoadLevelStatus':

            eg.TriggerEvent(
                            'Dimmer.DeviceID-'+str(sendPayload['device_id'])+'.DimLevel-'+str(sendPayload['new_state']),
                            prefix = 'Vera',
                            payload = sendPayload
                            )
コード例 #7
0
	def PortCheckThread(self,stopPortCheckThreadEvent):
		print "PortCheck Plugin: Thread " + self.name + "  is starting.  Socket Timeout=" + str(self.timeoutNumber) + "s Check Interval=" + str(self.checkintervalNumber) + "s"

		eventsPortOpen=0
		eventsPortClosed=0
		repeatCounterOpen=0 
		repeatCounterClosed=0 
			
		while not stopPortCheckThreadEvent.isSet():
			if self.printDebugMessages:
				print "Thread " + self.name + " is running.  Last status: " + self.lastPortCheckResult + ". repeatCounterOpen=" + str(repeatCounterOpen) + "/" + str(self.repeatTriggerEvent) + " repeatCounterClosed=" + str(repeatCounterClosed) + "/" + str(self.repeatTriggerEvent)
	
			sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
			sock.settimeout(self.timeoutNumber)
			result = sock.connect_ex((self.hostName,self.portNumber))
			sock.close()
	
			if result == 0:
				eventsPortOpen+=1
				eventsPortClosed=0
				repeatCounterClosed=0
				self.lock.acquire()
				try:
					self.lastPortCheckResult="port open"
					if eventsPortOpen>=self.delayEventPortOpen:
						if self.status!="port open":
							self.status="port open"
							eg.TriggerEvent(prefix=prefix,suffix=self.eventPortOpen)
							repeatCounterOpen=0
						if self.repeatTriggerEventOpen > 0 and repeatCounterOpen == self.repeatTriggerEventOpen:
							eg.TriggerEvent(prefix=prefix,suffix=self.eventPortOpen)
							repeatCounterOpen=0
						
				finally:
					self.lock.release()
					repeatCounterOpen+=1
			else:
				eventsPortOpen=0
				eventsPortClosed+=1
				repeatCounterOpen=0
				self.lock.acquire()
				try:
					self.lastPortCheckResult="port closed"
					if eventsPortClosed>=self.delayEventPortClosed:
						if self.status!="port closed":
							self.status="port closed"
							eg.TriggerEvent(prefix=prefix,suffix=self.eventPortClosed)
							repeatCounterClosed=0
						if self.repeatTriggerEventClosed > 0 and repeatCounterClosed == self.repeatTriggerEventClosed:
							eg.TriggerEvent(prefix=prefix,suffix=self.eventPortClosed)
							repeatCounterClosed=0
				finally:
					self.lock.release()
					repeatCounterClosed+=1
				
			stopPortCheckThreadEvent.wait(self.checkintervalNumber)
			
		print "PortCheck Plugin: Thread " + self.name + " is ending."
		self.stopPortCheckThreadEvent.clear()
コード例 #8
0
 def __call__(self):         
     proc = subprocess.Popen([self.plugin.adbPath,'shell','dumpsys','power','|','grep', 'mScreenOn'],shell=True, stdout=subprocess.PIPE, creationflags=subprocess.SW_HIDE)
     status = proc.stdout.readline().strip()
     #eg.TriggerEvent("Status",prefix="AFTV",payload=status)
     if "true" in status:
         eg.TriggerEvent("PowerOn",prefix="AFTV")
     else:
         eg.TriggerEvent("PowerOff",prefix="AFTV")
コード例 #9
0
    def Delete(self, key1, key2, key3):

        if key2 != None and key2 != '' and key3 != None and key3 != '':
            try:
                oldval = self.DBase[key1][key2][key3]
                del self.DBase[key1][key2][key3]
                eg.TriggerEvent('Deleted',
                                prefix='SystemDatabase',
                                payload={key1: {
                                    key2: {
                                        key3: oldval
                                    }
                                }})
                return True
            except:
                try:
                    oldval = self.DBase[key1][key2]
                    self.Notice("Delete: Invalid Key: Key3 = ", key3)
                    return False
                except:
                    try:
                        oldval = self.DBase[key1]
                        self.Notice("Delete: Invalid Key: Key2 = ", key2)
                        return False
                    except:
                        self.Notice("Delete: Invalid Key: Key1 = ", key1)
                        return False

        elif key2 != None and key2 != '':
            try:
                oldval = self.DBase[key1][key2]
                del self.DBase[key1][key2]
                eg.TriggerEvent('Deleted',
                                prefix='SystemDatabase',
                                payload={key1: {
                                    key2: oldval
                                }})
                return True
            except:
                try:
                    oldval = self.DBase[key1]
                    self.Notice("Delete: Invalid Key: Key2 = ", key2)
                    return False
                except:
                    self.Notice("Delete: Invalid Key: Key1 = ", key1)
                    return False

        else:
            try:
                oldval = self.DBase[key1]
                del self.DBase[key1]
                eg.TriggerEvent('Deleted',
                                prefix='SystemDatabase',
                                payload={key1: oldval})
                return True
            except:
                self.Notice("Delete: Invalid Key: Key1 = ", key1)
                return False
コード例 #10
0
    def showMessageBox(self, title, body, alias, payload, options):
        if not alias:
            alias = title
        result = MessageBox(0, body, title, options)

        if result > 0 and result < 8:
            result = self.RESULTS[result]
        else:
            result = str(result)
        if payload:
            eg.TriggerEvent("%s.%s" % (alias, result), payload, "MessageBox")
        else:
            eg.TriggerEvent("%s.%s" % (alias, result), prefix="MessageBox")
        return result
コード例 #11
0
 def Connect(self):
     """
     This function tries to connect to the named pipe from AlternateMceIrService.  If it can't connect, it will periodically
     retry until the plugin is stopped or the connection is made.
     """
     #eg.PrintNotice("MCE_Vista: Connect started")
     self.sentMessageOnce = False
     while self.file is None and self.keepRunning:
         try:
             self.file = win32file.CreateFile(
                 r'\\.\pipe\MceIr', win32file.GENERIC_READ
                 | win32file.GENERIC_WRITE, 0, None,
                 win32file.OPEN_EXISTING, win32file.FILE_ATTRIBUTE_NORMAL
                 | win32file.FILE_FLAG_OVERLAPPED, None)
         except:
             if not self.sentMessageOnce:
                 eg.PrintNotice(
                     "MCE_Vista: MceIr pipe is not available, app doesn't seem to be running"
                 )
                 eg.PrintNotice(
                     "    Will continue to try to connect to MceIr")
                 eg.PrintNotice(
                     "    Message = %s" %
                     win32api.FormatMessage(win32api.GetLastError()))
                 self.sentMessageOnce = True
                 eg.TriggerEvent('Pipe Not Available', prefix="MCE_Vista")
             time.sleep(.25)
     return
コード例 #12
0
def ThreadLoop(self, stopThreadEvent):
    while not stopThreadEvent.isSet():
        import time
        import codecs
        # KORD_INSTALL_PATH = "C:\\Users\\Piyush\\OneDrive - University of Florida\\Laboratory\\2. Electron\Kord\\"
        input = codecs.open(KORD_INSTALL_PATH + "eg", 'r', eg.systemEncoding,
                            'ignore')
        data = input.readlines()
        input.close()
        if len(data) > 0:
            for line in data:
                if len(line.strip()) > 0:
                    trigger_id = line.strip().split(":-:")[0]
                    chord_id = line.strip().split(":-:")[1]
                    payload = line.strip().split(":-:")[2]

                    if chord_id == "Notification":
                        message = payload.replace("#>#", " | ")
                        eg.plugins.EventGhost.ShowOSD(
                            message, "0;-24;0;0;0;700;0;0;0;1;0;0;2;26;Arial",
                            (255, 255, 255), (0, 0, 0), 4, (0, 0), 0, 3.0,
                            True)
                    else:
                        eg.TriggerEvent(chord_id,
                                        prefix="Kord",
                                        payload=[payload, trigger_id])
        stopThreadEvent.wait(1.0)
コード例 #13
0
 def TriggerEvent(self, eventString, payload=None, prefix=None):
     kwargs = {}
     if payload:
         kwargs['payload'] = payload
     if prefix:
         kwargs['prefix'] = prefix
     eg.TriggerEvent(eventString, **kwargs)
コード例 #14
0
 def PingThread(self, stopPingThreadEvent):
     print "Ping Plugin : Thread " + self.name + " is starting ! "
     eventsAlive = 0
     eventsDead = 0
     startupinfo = subprocess.STARTUPINFO()
     startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
     pingCmd = subprocess.Popen(
         ["ping", self.name, "-4", "-t", "-w",
          str(self.pingDelay)],
         stdout=subprocess.PIPE,
         stderr=None,
         startupinfo=startupinfo)
     pingCmd.wShowWindow = 0
     while not stopPingThreadEvent.isSet():
         output = pingCmd.stdout.readline()
         #print output
         if output.find(self.pingString) > -1:
             #print "	Thread " + self.name + " is pinging !"
             eventsAlive += 1
             eventsDead = 0
             self.lock.acquire()
             try:
                 self.lastPingResult = "alive"
                 if eventsAlive >= self.delayEventAlive:
                     if self.status != "alive":
                         self.status = "alive"
                         eg.TriggerEvent(prefix=prefix,
                                         suffix=self.eventAlive)
             finally:
                 self.lock.release()
         else:
             eventsAlive = 0
             eventsDead += 1
             self.lock.acquire()
             try:
                 self.lastPingResult = "dead"
                 if eventsDead >= self.delayEventDead:
                     if self.status != "dead":
                         self.status = "dead"
                         eg.TriggerEvent(prefix=prefix,
                                         suffix=self.eventDead)
             finally:
                 self.lock.release()
     print "Ping Plugin : Thread " + self.name + " is ending ! "
     pingCmd.terminate()
     self.stopPingThreadEvent.clear()
コード例 #15
0
 def run(self):
     WaitForSingleObject(self.processInformation.hProcess, INFINITE)
     exitCode = DWORD()
     if not GetExitCodeProcess(self.processInformation.hProcess,
                               byref(exitCode)):
         raise self.Exception(FormatError())
     CloseHandle(self.processInformation.hProcess)
     CloseHandle(self.processInformation.hThread)
     eg.TriggerEvent(self.suffix, prefix=self.prefix)
コード例 #16
0
ファイル: __init__.py プロジェクト: BaldrTheAesir/EventGhost
 def Polling(self):
     self.sched = eg.scheduler.AddTask(self.poll, self.Polling)
     if not self.GetConnection():
         return
     text = self.text
     keys = ("Player", "Repeat song", "Shuffle", "Volume", "Mute")
     for i in range(len(self.events)):
         if i == 0:
             if self.events[0]:
                 song = self.MakeRequest("get_song_current", "json")
                 if song:
                     val = song[u'PlayingFileName']
                     if val != self.oldStat[0]:
                         self.oldStat[0] = val
                         eg.TriggerEvent(self.Cap(text.events[0]),
                                         prefix=self.prefix,
                                         payload=val)
         elif i == 1:
             if self.events[1]:
                 if not self.events[0]:
                     song = self.MakeRequest("get_song_current", "json")
                 if song:
                     val = song[u'PlayingList']
                     if val != self.oldStat[1]:
                         self.oldStat[1] = val
                         eg.TriggerEvent(self.Cap(text.events[1]),
                                         prefix=self.prefix,
                                         payload=self.GetName(val))
         elif i == 2:
             if self.events[2]:
                 val = int(self.GetCustomStatus(keys[i - 2]))
                 if val is not None and val != self.oldStat[i]:
                     self.oldStat[i] = val
                     eg.TriggerEvent(
                         "%s.%s" %
                         (self.Cap(text.events[i]), text.status[val]),
                         prefix=self.prefix)
         elif self.events[i]:
             val = int(self.GetCustomStatus(keys[i - 2]))
             if val is not None and val != self.oldStat[i]:
                 self.oldStat[i] = val
                 eg.TriggerEvent(self.Cap(text.events[i]),
                                 prefix=self.prefix,
                                 payload=val)
コード例 #17
0
ファイル: LogCtrl.py プロジェクト: Mutini/EventGhost
 def OnCmdReplay(self, dummyEvent=None):
     item = self.GetFirstSelected()
     while item != -1:
         text, icon = self.GetItemData(item)[:2]
         if icon == eg.Icons.EVENT_ICON:
             parts = text.split(" ", 1)
             e = parts[0]
             prefix, suffix = e.split(".", 1) if "." in e else [e, ""]
             payload = literal_eval(parts[1]) if len(parts) == 2 else None
             eg.TriggerEvent(suffix, payload, prefix)
         item = self.GetNextSelected(item)
コード例 #18
0
    def ThreadLoop(self):
        while self.event.isSet():
            pass

        oldProcesses = GetProcessDict()
        oldPids = set(oldProcesses.keys())

        while not self.event.isSet():
            newProcesses = GetProcessDict()
            newPids = set(newProcesses.keys())
            for pid in newPids.difference(oldPids):
                name = splitext(newProcesses[pid])[0]
                eg.TriggerEvent("Created." + name, prefix="Process")
            for pid in oldPids.difference(newPids):
                name = splitext(oldProcesses[pid])[0]
                eg.TriggerEvent("Destroyed." + name, prefix="Process")
            oldProcesses = newProcesses
            oldPids = newPids
            self.event.wait(0.1)
        self.event.clear()
コード例 #19
0
 def process_message(self, peer, mailfrom, rcpttos, data):
     print 'SMTPd: Receiving message from:', peer
     print 'SMTPd: Message addressed from:', mailfrom
     print 'SMTPd: Message addressed to  :', rcpttos
     print 'SMTPd: Message length        :', len(data)
     headers = Parser().parsestr(data)
     print 'SMTPd: Subject               :%s' % headers['subject']
     #print 'SMTPd: Message               :\n', data
     for recemail in rcpttos:
         eg.TriggerEvent(recemail,
                         prefix=smtpdPrefix,
                         payload=headers['subject'])
コード例 #20
0
 def onClose(self, evt):
     retCode = self.GetReturnCode()
     if retCode not in self.LABELS:
         return
     if self.timer:
         self.timer.Stop()
         del self.timer
     ix = 1 + self.action.RES_IDS.index(
         retCode) if retCode in self.action.RES_IDS else 1
     result = self.action.RESULTS[ix]
     self.alias = self.alias if self.alias else self.title
     if self.payload:
         eg.TriggerEvent("%s.%s" % (self.alias, result), self.payload,
                         "MessageBox")
     else:
         eg.TriggerEvent("%s.%s" % (self.alias, result),
                         prefix="MessageBox")
     if self.event is not None:
         self.action.retCode = result
         SetEvent(self.event)
     self.Destroy()
コード例 #21
0
    def EvalFile(self, evalString):

        try:
            self.DBase = ast.literal_eval(evalString)
            eg.TriggerEvent('DatabaseLoaded.' +
                            self.filesavename.replace('.', '--'),
                            prefix='SystemDatabase',
                            payload=self.filesavepath + self.filesavename)
            return True

        except:
            eg.PrintError("Database data is malformed")
            return False
コード例 #22
0
    def Query(self, key1, key2, key3):

        if key2 != None and key2 != '' and key3 != None and key3 != '':
            try:
                eg.TriggerEvent(
                               'QueryResults.'+key1+'--'+key2+'--'+key3,
                                prefix = 'SystemDatabase',
                                payload = self.DBase[key1][key2][key3]
                                )

                return self.DBase[key1][key2][key3]
            except:
                self.Notice('Query: Invalid Key: Key1 = ',str(key1)+', Key2 = '+str(key2)+', Key3 = '+str(key3))
                return 'KeyError'

        elif key2 != None and key2 != '':
            try:
                eg.TriggerEvent(
                               'QueryResults.'+key1+'--'+key2,
                                prefix = 'SystemDatabase',
                                payload = self.DBase[key1][key2]
                                )
                return self.DBase[key1][key2]
            except:
                self.Notice('Query: Invalid Key: Key1 = ',str(key1)+', Key2 = '+str(key2))
                return 'KeyError'

        else:
            try:
                eg.TriggerEvent(
                               'QueryResults.'+key1,
                                prefix = 'SystemDatabase',
                                payload = self.DBase[key1]
                                )
                return self.DBase[key1]
            except:
                self.Notice('Query: Invalid Key: Key1 = ',key1)
                return 'KeyError'
コード例 #23
0
    def __call__(self,
                 eventString,
                 waitTime=0,
                 payload=None,
                 queueEvent=True,
                 restoreEvent=False,
                 removeMain=False):
        def parse(value):
            if value is None:
                return None
            parsed_value = eg.ParseString(value)
            if value == parsed_value:
                try:
                    value = eval(value)
                except (SyntaxError, NameError):
                    pass
            else:
                value = parsed_value
            return value

        eventString = parse(eventString)
        payload = parse(payload)

        split_event = eventString.split('.', 1)
        if len(split_event) == 1:
            split_event.insert(0, 'Main')

        if not removeMain and split_event[0] != 'Main':
            split_event.insert(0, 'Main')
            split_event = [split_event[0], '.'.join(split_event[1:])]

        kwargs = dict(prefix=split_event[0],
                      suffix=split_event[1],
                      payload=payload)

        if not waitTime:
            if queueEvent:
                eg.TriggerEvent(**kwargs)
            else:
                event = eg.EventGhostEvent(**kwargs)
                if restoreEvent:
                    old_event_string = eg.eventString
                    old_event = eg.event
                    event.Execute()
                    eg.event = old_event
                    eg.eventString = old_event_string
                else:
                    event.Execute()
        else:
            eg.scheduler.AddShortTask(waitTime, eg.TriggerEvent, **kwargs)
コード例 #24
0
 def __call__(self, msgText, msgID, msgTitle, msgTO, bStyle, iStyle,
              selButton, onTop):
     opVal = bStyle + (iStyle * 16) + (selButton * 256)
     if onTop:
         opVal += 4096
     msgText = replaceEgVars(msgText)
     msgText = msgText.replace('\n', '`n')
     script = ahk.Script()
     script.message(text=msgText,
                    title=msgTitle,
                    options=opVal,
                    timeout=msgTO)
     buttons = [
         "OK", "Cancel", "Yes", "No", "TryAgain", "Continue", "Abort",
         "Retry", "Ignore"
     ]
     for b in buttons:
         if script.msgResult(name=b):
             if msgID == "":
                 eg.TriggerEvent(msgTitle + "." + b, prefix="AHK.MsgBox")
             else:
                 eg.TriggerEvent(msgID + "." + b, prefix="AHK.MsgBox")
             break
コード例 #25
0
    def SaveFile(self, fpath='', fname=''):

        fpath = self.PathCheck(fpath)

        try:
            with open(fpath + fname, "w") as f:
                f.write(str(self.DBase))
            eg.TriggerEvent('DatabaseSaved.' + fname.replace('.', '--'),
                            prefix='SystemDatabase',
                            payload=fpath + fname)
            return True

        except IOError:
            self.FileError(fpath, fname, 'Save')
            return False
コード例 #26
0
 def _key_callback(self, key, duration):
     str_key = lib.UserControlCodeToString(key).title()
     if duration == 0 and self._last_key != key:
         self._last_key = key
         self._key_event = eg.TriggerEnduringEvent(prefix=self._name,
                                                   suffix='KeyPressed.' +
                                                   str_key)
     elif duration > 0 and self._last_key == key:
         self._last_key = 255
         self._key_event.SetShouldEnd()
         self._key_event = None
     elif self._last_key != key:
         self._last_key = 255
         eg.TriggerEvent(prefix=self._name, suffix='KeyPressed.' + str_key)
     return 0
コード例 #27
0
    def __init__(self):

        eg.TriggerEvent(
            'System-Startup',
            prefix='MountainHome.Control-Systems',
            payload=['System-Startup', ['LoadingPlugins', '.............']])

        self.AddAction(TransferDB)
        self.AddAction(PrintDB)
        self.AddAction(ModifyItem)
        self.AddAction(AddItem)
        self.AddAction(DeleteItem)
        self.AddAction(QueryItem)
        self.AddAction(LoadFromFile)
        self.AddAction(SaveToFile)

        self.DBase = {}
コード例 #28
0
    def state3(self, line):
        line = line.decode(eg.systemEncoding)
        if line == "close":
            self.initiate_close()
        elif line[:8] == "payload ":
            self.payload.append(line[8:])
        else:
            kwargs = dict(
                        prefix=self.sourceIP.replace(".",",")+'.MediaPortal' \
                                    if self.plugin.ipPrefix \
                                    else self.plugin.prefix,
                        suffix=line[12:],
                        payload=self.payload
                        )

            eg.TriggerEvent(**kwargs)
            self.payload = [self.sourceIP]
コード例 #29
0
    def TriggerEvent(self, suffix, payload=None):
        """
        Trigger an event.

        If the plugin wants to trigger an event in EventGhost, it should call
        self.TriggerEvent with the event name as *suffix* parameter. It can
        also post optional additional data through the *payload* parameter.

        Keep in mind, that an event generated through this method will also
        automatically be ended immediately. If the plugin wants to generate
        an event with a longer duration, it has to use
        :meth:`!TriggerEnduringEvent`.
        """
        with gTriggerEventLock:
            info = self.info
            info.lastEvent.SetShouldEnd()
            event = eg.TriggerEvent(suffix, payload, info.eventPrefix, self)
            info.lastEvent = event
            return event
コード例 #30
0
 def __call__(self):
     if self.plugin.client is None:
         return
     result = self.plugin.client.GetDeviceInfo()
     if result is None:
         eg.PrintNotice("IR Service not running")
         eg.TriggerEvent('IR Service Not Running', prefix="MCE_Vista")
         return
     if result[1] == 0 and result[2] == 0:
         eg.PrintNotice("IR Receiver is unplugged")
         return
     nAttached = 0
     i = 0
     while (result[5] >> i) > 0:
         if result[5] & (1 << i):
             nAttached = nAttached + 1
         i = i + 1
     eg.PrintNotice(
         "%d Transmitters (%d attached), %s have learn capability" %
         (result[1], nAttached, "does" if result[2] == 2 else "does not"))