exports to ~ if no dir given, fix infinite loop when cancelling
This commit is contained in:
parent
ffc5966042
commit
2c63b05376
|
@ -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)
|
||||||
|
|
|
@ -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())
|
||||||
|
|
Reference in New Issue