All pastes #27206 Raw Edit

Stuff

public python v1 · immutable
#27206 ·published 2005-11-01 00:57 UTC
rendered paste body
	#############################	# Update: main loop of code #	#############################	def update(self):		global count		count += 1		try:			self.update_conn()			if self.conn():				self.status = self.conn().do.status()				self.songinfo = self.conn().do.currentsong()				self.update_state()			self.prevc = self.conn()			self.prevstatus = self.status			self.prevsonginfo = self.songinfo		except (mpdclient.socket.error, EOFError, AttributeError, IndexError):			global connections			connections = {}			self.prevstatus = None		except KeyboardInterrupt, e:			raise e		return True	def update_conn(self):		if self.conn() != self.prevc:			if self.conn() is None:				self.w.ppbutton.set_property('sensitive', False)				self.w.stopbutton.set_property('sensitive', False)				self.w.prevbutton.set_property('sensitive', False)				self.w.nextbutton.set_property('sensitive', False)				self.w.volumebutton.set_property('sensitive', False)				self.w.playlistbutton.set_property('sensitive', False)				self.w.rmbutton.set_property('sensitive', False)				self.w.clbutton.set_property('sensitive', False)				self.w.repeatbutton.set_property('sensitive', False)				self.w.shufflebutton.set_property('sensitive', False)				self.w.statusimage.set_from_stock(gtk.STOCK_NO, gtk.ICON_SIZE_SMALL_TOOLBAR)				self.w.updateimage.set_from_stock(gtk.STOCK_NO, gtk.ICON_SIZE_MENU)								try:					self.trayimage.set_from_stock('pygmy',  gtk.ICON_SIZE_BUTTON)				except:					pass								self.update_progressbar(False)				self.update_songtitle()				self.update_windowtitle()				self.playlistdata.clear()				self.tooltips.set_tip(self.w.statusbox, "Not connected")				self.w.prefsbutton.grab_focus()							else:				self.w.ppbutton.set_property('sensitive', True)				self.w.stopbutton.set_property('sensitive', True)				self.w.prevbutton.set_property('sensitive', True)				self.w.nextbutton.set_property('sensitive', True)				self.w.volumebutton.set_property('sensitive', True)				self.w.playlistbutton.set_property('sensitive', True)				self.w.rmbutton.set_property('sensitive', True)				self.w.clbutton.set_property('sensitive', True)				self.w.repeatbutton.set_property('sensitive', True)				self.w.shufflebutton.set_property('sensitive', True)				self.w.statusimage.set_from_stock(gtk.STOCK_YES, gtk.ICON_SIZE_SMALL_TOOLBAR)				#self.w.updateimage.set_from_stock(gtk.STOCK_YES, gtk.ICON_SIZE_MENU)				self.tooltips.set_tip(self.w.statusbox, "Connected")				self.w.ppbutton.grab_focus()				self.prevc = self.conn()	def update_state(self):		if not hasattr(self.songinfo, 'artist'):			self.songinfo.artist = None		if not hasattr(self.songinfo, 'title'):			self.songinfo.title = None		if not hasattr(self.status, 'song'):			self.status.song = None					# Display current playlist		if self.prevstatus is None or self.prevstatus.playlist != self.status.playlist:			self.update_playlist()		# Update progress frequently if we're playing		if self.status.state in ['play', 'pause']:			self.update_progressbar(True)		# If state changes		if self.prevstatus is None or self.prevstatus.state != self.status.state:			# Update progressbar if the state changes too			self.update_progressbar(True)			self.update_windowtitle()			self.update_songtitle()			if self.status.state == 'stop':				self.w.ppimage.set_from_stock(gtk.STOCK_MEDIA_PLAY, gtk.ICON_SIZE_BUTTON)				try:					self.trayimage.set_from_stock('pygmy', gtk.ICON_SIZE_BUTTON)				except:					pass				self.tooltips.set_tip(self.w.ppbutton, "Play")				# Unbold playing song (if we were playing)				if self.prevstatus and self.prevstatus.state == 'play':					oldrow = int(self.prevsonginfo.pos)					snip = self.playlistdata[oldrow][1]					if snip[0:3] == '<b>' and snip[-4:] == '</b>':						self.playlistdata[oldrow][1] = snip[3:-4]			elif self.status.state == 'pause':				self.w.ppimage.set_from_stock(gtk.STOCK_MEDIA_PLAY, gtk.ICON_SIZE_BUTTON)				try:					self.trayimage.set_from_stock(gtk.STOCK_MEDIA_PAUSE, gtk.ICON_SIZE_BUTTON)				except:					pass				self.tooltips.set_tip(self.w.ppbutton, "Play")			elif self.status.state == 'play':				self.w.ppimage.set_from_stock(gtk.STOCK_MEDIA_PAUSE, gtk.ICON_SIZE_BUTTON)				try:					self.trayimage.set_from_stock(gtk.STOCK_MEDIA_PLAY, gtk.ICON_SIZE_BUTTON)				except:					pass				self.tooltips.set_tip(self.w.ppbutton, "Pause")			if self.status.state in ['play', 'pause']:				row = int(self.songinfo.pos)				self.playlistdata[row][1] = make_bold(	self.playlistdata[row][1])		# Only update song info if song has changed		if self.prevstatus is None or self.prevstatus.song != self.status.song:			if self.stopaftercurrent == True:				self.conn().do.stop()				self.stopaftercurrent = False				return			self.update_windowtitle()			self.update_songtitle()			# Unbold all songs.  If you have a better idea, let me know.			for song in self.playlistdata:				if song[1][0:3] == '<b>' and song[1][-4:] == '</b>':					self.playlistdata[song.path[0]][1] = song[1][3:-4]						if self.status.state in ['play', 'pause']:				row = int(self.songinfo.pos)				self.playlistdata[row][1] = make_bold(self.playlistdata[row][1])			self.tooltips.set_tip(self.trayeventbox, self.songinfo.artist + ':' + '\n' + self.songinfo.title)			self.after_expander_activate(self.w.expander)		# If shuffle/repeat have changed, update the button state		if self.prevstatus is None or self.status.repeat != self.prevstatus.repeat:			self.w.repeatbutton.handler_block(self.repeatid)			self.w.repeatbutton.set_active('1' == self.status.repeat)			self.w.repeatbutton.handler_unblock(self.repeatid)		if self.prevstatus is None or self.status.random != self.prevstatus.random:			self.w.shufflebutton.handler_block(self.shuffleid)			self.w.shufflebutton.set_active('1' == self.status.random)			self.w.shufflebutton.handler_unblock(self.shuffleid)		# Check if MPD is updating the library		if self.prevstatus and self.prevstatus.get('updating_db', 0) != self.status.get('updating_db', 0):			if self.status.get('updating_db', 0):				self.w.statusimage.set_from_stock(gtk.STOCK_REFRESH, gtk.ICON_SIZE_SMALL_TOOLBAR)				self.tooltips.set_tip(self.w.statusbox, "Updating...")			else:				self.w.statusimage.set_from_stock(gtk.STOCK_YES, gtk.ICON_SIZE_SMALL_TOOLBAR)				self.tooltips.set_tip(self.w.statusbox, "Connected")						if self.prevstatus and self.status.volume != self.prevstatus.volume:			self.w.volumescale.get_adjustment().set_value(int(self.status.volume))