~repos /sabel-ide

#python#qt

git clone https://pyrossh.dev/repos/sabel-ide.git

sabel-ide



file:

Widget/audio.py



from PyQt4 import QtCore, QtGui
from PyQt4.phonon import Phonon
from globals import ospathbasename
class Audio(QtGui.QDialog):
def __init__(self,parent,nfile):
QtGui.QDialog.__init__(self,parent)
self.resize(300, 250)
self.audioOutput = Phonon.AudioOutput(Phonon.MusicCategory, self)
self.mediaObject = Phonon.MediaObject(self)
self.mediaObject.setTickInterval(1000)
self.mediaObject.tick.connect(self.tick)
self.mediaObject.stateChanged.connect(self.stateChanged)
Phonon.createPath(self.mediaObject, self.audioOutput)
self.setupActions()
self.setupUi()
self.timeLcd.display("00:00")
self.finished.connect(self.stop)
if nfile == "":
return
self.title.setText("<b><big>"+ospathbasename(nfile)+"</big></b>")
self.mediaObject.enqueue(Phonon.MediaSource(nfile))
self.mediaObject.play()
def stop(self):
#print "stopping"
#self.mediaObject.stop()
#self.mediaObject.clearQueue()
self.mediaObject.deleteLater()
def stateChanged(self, newState, oldState):
if newState == Phonon.ErrorState:
if self.mediaObject.errorType() == Phonon.FatalError:
QtGui.QMessageBox.warning(self, "Fatal Error",
self.mediaObject.errorString())
else:
QtGui.QMessageBox.warning(self, "Error",
self.mediaObject.errorString())
elif newState == Phonon.PlayingState:
self.playAction.setEnabled(False)
self.pauseAction.setEnabled(True)
self.stopAction.setEnabled(True)
elif newState == Phonon.StoppedState:
self.stopAction.setEnabled(False)
self.playAction.setEnabled(True)
self.pauseAction.setEnabled(False)
self.timeLcd.display("00:00")
elif newState == Phonon.PausedState:
self.pauseAction.setEnabled(False)
self.stopAction.setEnabled(True)
self.playAction.setEnabled(True)
def tick(self, time):
displayTime = QtCore.QTime(0, (time / 60000) % 60, (time / 1000) % 60)
self.timeLcd.display(displayTime.toString('mm:ss'))
def setupActions(self):
self.playAction = QtGui.QAction(
self.style().standardIcon(QtGui.QStyle.SP_MediaPlay), "Play",
self, shortcut="Ctrl+P", enabled=False,
triggered=self.mediaObject.play)
self.pauseAction = QtGui.QAction(
self.style().standardIcon(QtGui.QStyle.SP_MediaPause),
"Pause", self, shortcut="Ctrl+A", enabled=False,
triggered=self.mediaObject.pause)
self.stopAction = QtGui.QAction(
self.style().standardIcon(QtGui.QStyle.SP_MediaStop), "Stop",
self, shortcut="Ctrl+S", enabled=False,
triggered=self.mediaObject.stop)
def setupUi(self):
bar = QtGui.QToolBar()
bar.addAction(self.playAction)
bar.addAction(self.pauseAction)
bar.addAction(self.stopAction)
self.seekSlider = Phonon.SeekSlider(self)
self.seekSlider.setMediaObject(self.mediaObject)
self.volumeSlider = Phonon.VolumeSlider(self)
self.volumeSlider.setAudioOutput(self.audioOutput)
self.volumeSlider.setSizePolicy(QtGui.QSizePolicy.Maximum,
QtGui.QSizePolicy.Maximum)
volumeLabel = QtGui.QLabel()
#volumeLabel.setPixmap(QtGui.QPixmap('images/volume.png'))
self.title = QtGui.QLabel()
self.title.setAlignment(QtCore.Qt.AlignCenter)
palette = QtGui.QPalette()
palette.setBrush(QtGui.QPalette.Light, QtCore.Qt.darkGray)
self.timeLcd = QtGui.QLCDNumber()
#self.timeLcd.setFixedSize(35,35)
self.timeLcd.setPalette(palette)
seekerLayout = QtGui.QVBoxLayout()
seekerLayout.addWidget(self.title)
seekerLayout.addWidget(self.seekSlider)
playbackLayout = QtGui.QHBoxLayout()
playbackLayout.addWidget(bar)
playbackLayout.addStretch()
playbackLayout.addWidget(volumeLabel)
playbackLayout.addWidget(self.volumeSlider)
mainLayout = QtGui.QVBoxLayout()
mainLayout.addLayout(seekerLayout)
mainLayout.addLayout(playbackLayout)
mainLayout.addWidget(self.timeLcd)
widget = QtGui.QWidget()
widget.setLayout(mainLayout)
self.setLayout(mainLayout)
self.setWindowTitle("Audio Player")