diff options
| author | Brianna | 2017-07-15 19:40:08 -0400 |
|---|---|---|
| committer | GitHub | 2017-07-15 19:40:08 -0400 |
| commit | f420ad69f5f6f3c830fea890a760ce0ce61ba571 (patch) | |
| tree | 2a7f9df3eebbae8da4317516f84dfe7490b5d36a /src/components/sound.py | |
| parent | 94d4acc1f4f4abe4029e8f9c050932b67cae8cec (diff) | |
| parent | bcb8f27c2e4434d2296dcd66bf279b76ee0d0a4f (diff) | |
Merge audio-mixing branch
some basic audio features + more user feedback + merging static components
Diffstat (limited to 'src/components/sound.py')
| -rw-r--r-- | src/components/sound.py | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/src/components/sound.py b/src/components/sound.py new file mode 100644 index 0000000..4a5714b --- /dev/null +++ b/src/components/sound.py @@ -0,0 +1,89 @@ +from PyQt5 import QtGui, QtCore, QtWidgets +import os + +from component import Component +from frame import BlankFrame + + +class Component(Component): + '''Sound''' + + modified = QtCore.pyqtSignal(int, dict) + + def widget(self, parent): + self.parent = parent + self.settings = parent.settings + page = self.loadUi('sound.ui') + + page.lineEdit_sound.textChanged.connect(self.update) + page.pushButton_sound.clicked.connect(self.pickSound) + + self.page = page + return page + + def update(self): + self.sound = self.page.lineEdit_sound.text() + super().update() + + def previewRender(self, previewWorker): + width = int(previewWorker.core.settings.value('outputWidth')) + height = int(previewWorker.core.settings.value('outputHeight')) + return BlankFrame(width, height) + + def preFrameRender(self, **kwargs): + pass + + def properties(self): + props = ['static', 'audio'] + if not os.path.exists(self.sound): + props.append('error') + return props + + def error(self): + if not self.sound: + return "No audio file selected." + if not os.path.exists(self.sound): + return "The audio file selected no longer exists!" + + def audio(self): + return (self.sound, {}) + + def pickSound(self): + sndDir = self.settings.value("componentDir", os.path.expanduser("~")) + filename, _ = QtWidgets.QFileDialog.getOpenFileName( + self.page, "Choose Sound", sndDir, + "Audio Files (%s)" % " ".join(self.core.audioFormats)) + if filename: + self.settings.setValue("componentDir", os.path.dirname(filename)) + self.page.lineEdit_sound.setText(filename) + self.update() + + def frameRender(self, layerNo, frameNo): + width = int(self.settings.value('outputWidth')) + height = int(self.settings.value('outputHeight')) + return BlankFrame(width, height) + + def loadPreset(self, pr, presetName=None): + super().loadPreset(pr, presetName) + self.page.lineEdit_sound.setText(pr['sound']) + + def savePreset(self): + return { + 'sound': self.sound, + } + + def commandHelp(self): + print('Path to audio file:\n path=/filepath/to/sound.ogg') + + def command(self, arg): + if not arg.startswith('preset=') and '=' in arg: + key, arg = arg.split('=', 1) + if key == 'path': + if '*%s' % os.path.splitext(arg)[1] \ + not in self.core.audioFormats: + print("Not a supported audio format") + quit(1) + self.page.lineEdit_sound.setText(arg) + return + + super().command(arg) |
