exports to ~ if no dir given, fix infinite loop when cancelling

This commit is contained in:
tassaron 2017-06-17 19:08:18 -04:00
parent ffc5966042
commit 2c63b05376
2 changed files with 25 additions and 16 deletions

View File

@ -1,4 +1,3 @@
from os.path import expanduser
from queue import Queue from queue import Queue
from PyQt4 import QtCore, QtGui, uic from PyQt4 import QtCore, QtGui, uic
from PyQt4.QtCore import QSettings, Qt from PyQt4.QtCore import QSettings, Qt
@ -189,11 +188,15 @@ class MainWindow(QtCore.QObject):
# Configure the Projects Menu # Configure the Projects Menu
self.projectMenu = QMenu() self.projectMenu = QMenu()
self.ui_newProject = self.projectMenu.addAction("New Project") self.window.menuButton_newProject = self.projectMenu.addAction(
self.ui_newProject.triggered[()].connect(self.createNewProject) "New Project")
self.window.menuButton_newProject.triggered[()].connect(
self.createNewProject)
self.ui_openProject = self.projectMenu.addAction("Open Project") self.window.menuButton_openProject = self.projectMenu.addAction(
self.ui_openProject.triggered[()].connect(self.openOpenProjectDialog) "Open Project")
self.window.menuButton_openProject.triggered[()].connect(
self.openOpenProjectDialog)
action = self.projectMenu.addAction("Save Project") action = self.projectMenu.addAction("Save Project")
action.triggered[()].connect(self.saveCurrentProject) action.triggered[()].connect(self.saveCurrentProject)
@ -314,18 +317,18 @@ class MainWindow(QtCore.QObject):
os.rename(self.autosavePath, self.currentProject) os.rename(self.autosavePath, self.currentProject)
def openInputFileDialog(self): def openInputFileDialog(self):
inputDir = self.settings.value("inputDir", expanduser("~")) inputDir = self.settings.value("inputDir", os.path.expanduser("~"))
fileName = QtGui.QFileDialog.getOpenFileName( fileName = QtGui.QFileDialog.getOpenFileName(
self.window, "Open Music File", self.window, "Open Audio File",
inputDir, "Music Files (%s)" % " ".join(self.core.audioFormats)) inputDir, "Audio Files (%s)" % " ".join(self.core.audioFormats))
if not fileName == "": if not fileName == "":
self.settings.setValue("inputDir", os.path.dirname(fileName)) self.settings.setValue("inputDir", os.path.dirname(fileName))
self.window.lineEdit_audioFile.setText(fileName) self.window.lineEdit_audioFile.setText(fileName)
def openOutputFileDialog(self): def openOutputFileDialog(self):
outputDir = self.settings.value("outputDir", expanduser("~")) outputDir = self.settings.value("outputDir", os.path.expanduser("~"))
fileName = QtGui.QFileDialog.getSaveFileName( fileName = QtGui.QFileDialog.getSaveFileName(
self.window, "Set Output Video File", self.window, "Set Output Video File",
@ -347,7 +350,6 @@ class MainWindow(QtCore.QObject):
self.window.lineEdit_outputFile.text(): self.window.lineEdit_outputFile.text():
self.canceled = False self.canceled = False
self.progressBarUpdated(-1) self.progressBarUpdated(-1)
ffmpeg_cmd = self.settings.value("ffmpeg_cmd", expanduser("~"))
self.videoThread = QtCore.QThread(self) self.videoThread = QtCore.QThread(self)
self.videoWorker = video_thread.Worker(self) self.videoWorker = video_thread.Worker(self)
self.videoWorker.moveToThread(self.videoThread) self.videoWorker.moveToThread(self.videoThread)
@ -358,9 +360,13 @@ class MainWindow(QtCore.QObject):
self.videoWorker.imageCreated.connect(self.showPreviewImage) self.videoWorker.imageCreated.connect(self.showPreviewImage)
self.videoWorker.encoding.connect(self.changeEncodingStatus) self.videoWorker.encoding.connect(self.changeEncodingStatus)
self.videoThread.start() self.videoThread.start()
outputPath = self.window.lineEdit_outputFile.text()
if not os.path.dirname(outputPath):
outputPath = os.path.join(
os.path.expanduser("~"), outputPath)
self.videoTask.emit( self.videoTask.emit(
self.window.lineEdit_audioFile.text(), self.window.lineEdit_audioFile.text(),
self.window.lineEdit_outputFile.text(), outputPath,
self.core.selectedComponents) self.core.selectedComponents)
else: else:
self.showMessage( self.showMessage(
@ -384,8 +390,8 @@ class MainWindow(QtCore.QObject):
self.window.pushButton_listMoveDown.setEnabled(False) self.window.pushButton_listMoveDown.setEnabled(False)
self.window.pushButton_listMoveUp.setEnabled(False) self.window.pushButton_listMoveUp.setEnabled(False)
self.window.listWidget_componentList.setEnabled(False) self.window.listWidget_componentList.setEnabled(False)
self.ui_newProject.setEnabled(False) self.window.menuButton_newProject.setEnabled(False)
self.ui_openProject.setEnabled(False) self.window.menuButton_openProject.setEnabled(False)
else: else:
self.window.pushButton_createVideo.setEnabled(True) self.window.pushButton_createVideo.setEnabled(True)
self.window.pushButton_Cancel.setEnabled(False) self.window.pushButton_Cancel.setEnabled(False)
@ -403,8 +409,8 @@ class MainWindow(QtCore.QObject):
self.window.pushButton_listMoveDown.setEnabled(True) self.window.pushButton_listMoveDown.setEnabled(True)
self.window.pushButton_listMoveUp.setEnabled(True) self.window.pushButton_listMoveUp.setEnabled(True)
self.window.listWidget_componentList.setEnabled(True) self.window.listWidget_componentList.setEnabled(True)
self.ui_newProject.setEnabled(True) self.window.menuButton_newProject.setEnabled(True)
self.ui_openProject.setEnabled(True) self.window.menuButton_openProject.setEnabled(True)
def progressBarUpdated(self, value): def progressBarUpdated(self, value):
self.window.progressBar_createVideo.setValue(value) self.window.progressBar_createVideo.setValue(value)

View File

@ -116,6 +116,7 @@ class Worker(QtCore.QObject):
for cont in options['containers']: for cont in options['containers']:
if cont['name'] == containerName: if cont['name'] == containerName:
container = cont['container'] container = cont['container']
break
vencoders = options['video-codecs'][vcodec] vencoders = options['video-codecs'][vcodec]
aencoders = options['audio-codecs'][acodec] aencoders = options['audio-codecs'][acodec]
@ -222,13 +223,15 @@ class Worker(QtCore.QObject):
if not self.canceled: if not self.canceled:
for i in range(0, len(self.completeAudioArray), self.sampleSize): for i in range(0, len(self.completeAudioArray), self.sampleSize):
while True: while True:
if i in frameBuffer: if i in frameBuffer or self.canceled:
# if frame's in buffer, pipe it to ffmpeg # if frame's in buffer, pipe it to ffmpeg
break break
# else fetch the next frame & add to the buffer # else fetch the next frame & add to the buffer
data = self.renderQueue.get() data = self.renderQueue.get()
frameBuffer[data[0]] = data[1] frameBuffer[data[0]] = data[1]
self.renderQueue.task_done() self.renderQueue.task_done()
if self.canceled:
break
try: try:
self.out_pipe.stdin.write(frameBuffer[i].tobytes()) self.out_pipe.stdin.write(frameBuffer[i].tobytes())