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()