All pastes #187242 Raw Edit

Unnamed

public text v1 · immutable
#187242 ·published 2006-09-30 22:53 UTC
rendered paste body
#!/usr/bin/env python

import sys
from qt import *
import gst
import pygst

class Player(QWidget):
	def __init__(self, *args):
			QWidget.__init__(self,  *args)
			self.setCaption("Simple Music Player")
			self.setGeometry(0,0,316,262)
			
			self.bin = gst.parse_launch('filesrc name=source !' +
                        'decodebin name=decoder !' +								  'audioconvert !' +				                                            'alsasink')
			
			self.bus = self.bin.get_bus()
		        self.bus.enable_sync_message_emission()
		        self.bus.add_signal_watch()
			self.bus.connect ("message::eos", self.watch)

			self.playPause = QPushButton("&Play/Pause", self)
			self.playPause.setGeometry(0,0,105,24)
			
			self.skipTrack = QPushButton("&Skip Track", self)
			self.skipTrack.setGeometry(211,0,105,24)
			
			self.quit = QPushButton("&Quit", self)
			self.quit.setGeometry(105,0,105,24)
			
			self.paused = True
			
			self.playListWidget = QListBox(self, "playListWidget")
			self.playListWidget.setGeometry(QRect(0,51,315,210))

			self.fileToPlay = QLineEdit(self)
			self.fileToPlay.setGeometry(0,25,315,24)
			#self.filePlayer = gst.element_factory_make("playbin", "self.filePlayer")
			self.filePlayer = self.bin
			
			#CLick actions, connects etc.:
			self.connect(self.playPause, SIGNAL("clicked()"),
					self.doPlayPause)
			self.connect(self.quit, SIGNAL("clicked()"),
					self.close)
			self.connect(self.skipTrack, SIGNAL("clicked()"),
					self.trackSkipper)
#			self.bus.connect('eos', self.endOfStream)
	
	def doPlayPause(self):

		technicalUri = self.fileToPlay.text()
		if self.paused:
			self.paused = False
			newUri = "file://" + self.fileToPlay.text()
			uri = self.fileToPlay.text()
			print newUri
			filesrc = self.bin.get_by_name('source')
			filesrc.set_property('location', uri)
			#self.filePlayer.set_property('uri', source)
			self.filePlayer.set_state(gst.STATE_PLAYING)
			print "Setting state: PLAYING"
		elif not self.paused:
			self.paused = True
			print "Now Pausing"
			self.filePlayer.set_state(gst.STATE_PAUSED)
	
	def trackSkipper(self):
		newUri = "file://" + self.fileToPlay.text()
		uri = self.fileToPlay.text()
		self.filePlayer.set_state(gst.STATE_NULL)
		self.filePlayer.set_property('uri', uri)
		self.filePlayer.set_state(gst.STATE_PLAYING)

	def endOfStream(self):
		print "The stream is over"
	
	def watch(bus, message):
		endOfStream()


if __name__ == "__main__":
	app = QApplication(sys.argv)
	app.connect(app, SIGNAL("lastWindowClosed()"), app,
			SLOT('quit()'))
	player = Player()
	player.show()
	player.playPause.show()
	app.setMainWidget(player)
	app.exec_loop()