class viewWxToolBarSrc(): def __init__(self): self.updateNeeded = True self.toolTipCache = Observable(None) self.iconNameCache = Observable(None) self.knowledge = {} self.log = logging.getLogger("viewWxToolBarSrc") def install(self, src): self.src = src self.src.connected.addCallback(self.on_connected) #self.src.Players.addCallback(self.on_connected) self.src.CbPlayersAvailableAdd(self.on_players) self.src.playersCount.addCallback(self.on_connected) def updateToolTipManyPlayers(self): newToolTip = unicode() for index in range(len(self.src.playerList)): playerName = self.src.playerList[index].name.get() if playerName == None: continue newToolTip += unicode(playerName) CurrentOperationMode = self.src.playerList[ index].operationMode.get() if CurrentOperationMode != None: newToolTip += ":%s" % (CurrentOperationMode) CurrentTrackTitle = self.src.playerList[ index].CurrentTrackTitle.get() if CurrentTrackTitle != None: newToolTip += "\nTrack:%s" % (CurrentTrackTitle) CurrentTrackArtist = self.src.playerList[ index].CurrentTrackArtist.get() if CurrentTrackArtist != None: newToolTip += "\nArtist:%s" % (CurrentTrackArtist) CurrentTrackEnds = self.src.playerList[index].CurrentTrackEnds.get( ) #print "CurrentTrackEnds=%s" % (CurrentTrackEnds) if CurrentTrackEnds != None: seconds = timedelta2str(CurrentTrackEnds - datetime.datetime.now()) newToolTip += "\nRemaining:%s" % (seconds) newToolTip += '\n' #print newToolTip #self.log.warn("ffoo%sooff" % ( newToolTip.strip()) ) self.toolTipCache.update(newToolTip) #self.log.warn("xxx%sxxx" % (self.toolTipCache.get() ) ) return self.toolTipCache.get() def updateToolTip(self): self.log.debug("updateToolTip") newToolTip = unicode() playerlistLen = len(self.src.playerList) if playerlistLen > 0: return self.updateToolTipManyPlayers() if self.src.connected: self.toolTipCache.update("Connected") return self.toolTipCache.get() def update(self): if not self.updateNeeded: pass #return else: self.updateNeeded = False self.updateToolTip() connected = self.src.connected.get() #print "connected", self.toolTipCache.get() self.knowledge['connected'] = connected if self.knowledge['connected'] == True: self.iconNameCache.update("ART_APPLICATION_STATUS_CONNECTED") def on_connected(self, value): self.updateNeeded = True if value != True: self.iconNameCache.update("ART_APPLICATION_STATUS_DISCONECTED") def on_players(self): self.log.debug("on_players") self.updateNeeded = True #self.availablePlayers foundPlayers = set() for index in range(len(self.src.playerList)): playerName = self.src.playerList[index].name.get() self.src.playerList[index].name.addCallback(self.on_player_name) self.src.playerList[index].CurrentTrackTitle.addCallback( self.on_player_track) self.src.playerList[index].CurrentTrackArtist.addCallback( self.on_player_artist) def on_player_name(self, value): self.updateNeeded = True def on_player_track(self, value): self.log.debug('on_player_track') self.updateNeeded = True def on_player_artist(self, value): self.log.debug('on_player_artist') self.updateNeeded = True def gettoolTip(self): self.update() return self.toolTipCache.get() def getIconName(self): self.update() return self.iconNameCache.get()
class viewWxToolBarSrc(): def __init__(self): self.updateNeeded = True self.toolTipCache = Observable(None) self.iconNameCache = Observable(None) self.knowledge = {} self.log = logging.getLogger("viewWxToolBarSrc") def install(self, src): self.src = src self.src.connected.addCallback(self.on_connected) #self.src.Players.addCallback(self.on_connected) self.src.CbPlayersAvailableAdd(self.on_players) self.src.playersCount.addCallback(self.on_connected) def updateToolTipManyPlayers(self): newToolTip = unicode() for index in range(len(self.src.playerList)): playerName = self.src.playerList[index].name.get() if playerName == None: continue newToolTip += unicode(playerName) CurrentOperationMode = self.src.playerList[index].operationMode.get() if CurrentOperationMode != None: newToolTip += ":%s" % (CurrentOperationMode) CurrentTrackTitle = self.src.playerList[index].CurrentTrackTitle.get() if CurrentTrackTitle != None: newToolTip += "\nTrack:%s" % (CurrentTrackTitle) CurrentTrackArtist = self.src.playerList[index].CurrentTrackArtist.get() if CurrentTrackArtist != None: newToolTip += "\nArtist:%s" % (CurrentTrackArtist) CurrentTrackEnds = self.src.playerList[index].CurrentTrackEnds.get() #print "CurrentTrackEnds=%s" % (CurrentTrackEnds) if CurrentTrackEnds != None: seconds = timedelta2str(CurrentTrackEnds - datetime.datetime.now()) newToolTip += "\nRemaining:%s" % (seconds) newToolTip += '\n' #print newToolTip #self.log.warn("ffoo%sooff" % ( newToolTip.strip()) ) self.toolTipCache.update(newToolTip) #self.log.warn("xxx%sxxx" % (self.toolTipCache.get() ) ) return self.toolTipCache.get() def updateToolTip(self): self.log.debug("updateToolTip") newToolTip = unicode() playerlistLen = len(self.src.playerList) if playerlistLen > 0: return self.updateToolTipManyPlayers() if self.src.connected: self.toolTipCache.update("Connected") return self.toolTipCache.get() def update(self): if not self.updateNeeded: pass #return else: self.updateNeeded = False self.updateToolTip() connected = self.src.connected.get() #print "connected", self.toolTipCache.get() self.knowledge['connected'] = connected if self.knowledge['connected'] == True: self.iconNameCache.update("ART_APPLICATION_STATUS_CONNECTED") def on_connected(self, value): self.updateNeeded = True if value != True: self.iconNameCache.update("ART_APPLICATION_STATUS_DISCONECTED") def on_players(self): self.log.debug("on_players") self.updateNeeded = True #self.availablePlayers foundPlayers = set() for index in range(len(self.src.playerList)): playerName = self.src.playerList[index].name.get() self.src.playerList[index].name.addCallback(self.on_player_name) self.src.playerList[index].CurrentTrackTitle.addCallback(self.on_player_track) self.src.playerList[index].CurrentTrackArtist.addCallback(self.on_player_artist) def on_player_name(self, value): self.updateNeeded = True def on_player_track(self, value): self.log.debug('on_player_track') self.updateNeeded = True def on_player_artist(self, value): self.log.debug( 'on_player_artist') self.updateNeeded = True def gettoolTip(self): self.update() return self.toolTipCache.get() def getIconName(self): self.update() return self.iconNameCache.get()