Phonon/Python

    From KDE TechBase

    This is the Python port of tutorial2.cpp found under Development/Tutorials/Phonon/Introduction.

    #This file is part of the KDE project
    #Copyright (C) 2007 Matthias Kretz <[email protected]>
    #adapted 2008 by Thorsten Staerk
    #ported to PyQt4 by Christoph Burgmer
    
    #Permission to use, copy, modify, and distribute this software
    #and its documentation for any purpose and without fee is hereby
    #granted, provided that the above copyright notice appear in all
    #copies and that both that the copyright notice and this
    #permission notice and warranty disclaimer appear in supporting
    #documentation, and that the name of the author not be used in
    #advertising or publicity pertaining to distribution of the
    #software without specific, written prior permission.
    
    #The author disclaim all warranties with regard to this
    #software, including all implied warranties of merchantability
    #and fitness.  In no event shall the author be liable for any
    #special, indirect or consequential damages or any damages
    #whatsoever resulting from loss of use, data or profits, whether
    #in an action of contract, negligence or other tortious action,
    #arising out of or in connection with the use or performance of
    #this software.
    
    
    import sys
    
    from PyQt4.QtGui import QApplication, QMainWindow, QDirModel, QColumnView
    from PyQt4.QtGui import QFrame
    from PyQt4.QtCore import SIGNAL
    from PyQt4.phonon import Phonon
    
    class MainWindow(QMainWindow):
    
        m_model = QDirModel()
    
        def __init__(self):
            QMainWindow.__init__(self)
            self.m_fileView = QColumnView(self)
            self.m_media = None
    
            self.setCentralWidget(self.m_fileView)
            self.m_fileView.setModel(self.m_model)
            self.m_fileView.setFrameStyle(QFrame.NoFrame)
    
            self.connect(self.m_fileView,
                SIGNAL("updatePreviewWidget(const QModelIndex &)"), self.play)
    
        def play(self, index):
            self.delayedInit()
            #self.m_media.setCurrentSource(self.m_model.filePath(index))
            self.m_media.setCurrentSource(
                Phonon.MediaSource(self.m_model.filePath(index)))
            self.m_media.play()
    
        def delayedInit(self):
            if not self.m_media:
                self.m_media = Phonon.MediaObject(self)
                audioOutput = Phonon.AudioOutput(Phonon.MusicCategory, self)
                Phonon.createPath(self.m_media, audioOutput)
    
    def main():
        app = QApplication(sys.argv)
        QApplication.setApplicationName("Phonon Tutorial 2 (Python)")
        mw = MainWindow()
        mw.show()
        sys.exit(app.exec_())
    
    if __name__ == '__main__':
        main()