def on_timer(self, event): self.checkForErrors() # Beendet ggf. nach Popup-Meldung das Programm if self.notification_queue.empty()==True: # wenn nix anliegt...fertig return self.timer.Stop() msgtxt=self.notification_queue.get() #NOTIFY,07.12.14 16:03:21;RING;0;0171xxxxxx9;0463xxxxxx7;SIP1; #NOTIFY,07.12.14 16:03:23;DISCONNECT;0;0; rs=msgtxt.split(";") if len(rs)>3: # die conid aus der Meldung herausdröseln, um anhand dieser den zugehörigen Satz... conid=rs[2] # ...in self.itemDataMap finden zu können. else: conid=None job=0 # 0=nix, 1="msg" anzeigen, 2=offene Verbindungen neu laden, 4=alle Verbindungen neu laden, 8="txt" anzeigen txt=u"" if msgtxt.find(";RING;")>0: job=3 txt=u"meldet einen ankommenden Telefonanruf!" elif msgtxt.find(";CALL;")>0: job=3 txt=u"meldet einen ausgehenden Telefonanruf!" elif msgtxt.find(";CONNECT;")>0: job=3 txt=u"meldet das Zustandekommen eines Gespräches!" elif msgtxt.find(";DISCONNECT;")>0: job=5 txt=u"meldet eine beendete Verbindung!" elif msgtxt.find("NOTIFY,REFRESH")>=0: job=4 elif msgtxt.find("NOTIFY,CONNECTION_LOST")>=0: job=8 txt=self.errMsg+u"hat die Verbindung zur Fritzbox verloren!" else: print "Illegale Nachricht vom CallMonitor der Fritzbox empfangen" itemDataMapOpenBefore=self.getConidData(conid) # offener Satz zur conid vor ListCtrl-Update if (job&2)==2: self.removeUnfinishedFromListCtrl() # alle derzeit angezeigten unbeendeten Verbindungen löschen self.updateListCtrlFromLog() # alle unbeendeten Verbindungen vom CallMon-Server holen und anzeigen self.SortListItems(0, 0) if (job&4)==4: self.fillListCtrl() # komplett neu laden if (job&1)==1: #self.showTipWindow(self.errMsg+txt) itemDataMapOpenAfter=self.getConidData(conid) # offener Satz zur conid nach ListCtrl-Update msg=None if itemDataMapOpenBefore==None and itemDataMapOpenAfter!=None: # vorher nix, nachher da -> CALL oder RING msg=CallMonitorMessage() msg.fromItemDataMap(itemDataMapOpenAfter) # den nachher-Satz laden elif itemDataMapOpenBefore!=None and itemDataMapOpenAfter!=None: # vorher da, nachher da -> CONNECT msg=CallMonitorMessage() msg.fromItemDataMap(itemDataMapOpenAfter) # den nachher-Satz laden elif itemDataMapOpenBefore!=None and itemDataMapOpenAfter==None: # vorher da, nachher nicht mehr -> DISCONNECT itemDataMapOpenAfter=self.getConidData(conid, itemDataMapOpenBefore[0]) # Satz zu conid + tmstmp(vorher) holen if itemDataMapOpenAfter==None: msg=None else: msg=CallMonitorMessage() msg.fromItemDataMap(itemDataMapOpenAfter) # den beendeten Satz laden if msg!=None: self.popup.showNew(msg) # Satz zur Anzeige an Popup übergeben if (job&8)==8: self.popup.showNew(None, txt) # den String "txt" direkt bzw. in Rohform als Popup anzeigen self.timer.Start(self.updateIntervall)