rendered paste body#!/usr/bin/env pythonimport sysimport qtfrom qt import *#from qttable import QTableimport gstimport pygstimport gobjectimport osgobject.threads_init()class Player(QWidget): def __init__(self, *args): QWidget.__init__(self, *args) self.setCaption("SimPlay - The Simple Music Player") self.setGeometry(0,0,422,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.set_sync_handler(self.watch) #self.bus.connect ("message::eos", ) self.playPause = QPushButton("&Play/Pause", self) self.playPause.setGeometry(0,0,105,24) self.skipTrack = QPushButton("&Skip Track", self) self.skipTrack.setGeometry(105,0,105,24) self.addTrack = QPushButton("&Add Track", self) self.addTrack.setGeometry(211,0,105,24) self.quit = QPushButton("&Quit", self) self.quit.setGeometry(316,0,105,24) self.paused = True self.playListWidget = QListView(self) self.playListWidget.setGeometry(QRect(0,51,421,210)) self.playListWidget.addColumn("Playlist") self.fileToPlay = QLineEdit(self) self.fileToPlay.setGeometry(0,25,421,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.connect(self.addTrack, SIGNAL("clicked()"), self.trackAdder)# self.bus.connect('eos', self.endOfStream) def doPlayPause(self): uri = self.fileToPlay.text() if os.path.isfile(uri): if self.paused: self.paused = False print uri 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) else: print "No! Wrong path!" 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 trackAdder(self): nextTrack = [self.fileToPlay.text()] nextTrack.append(QListViewItem(self.playListWidget, nextTrack[-1])) currItem = self.playListWidget.currentItem() print currItem def endOfStream(self): print "The stream is over" def watch(self, bus, message): if message.type == gst.MESSAGE_EOS: self.endOfStream() return gst.BUS_PASSif __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()