aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortassaron2017-07-25 17:44:59 -0400
committertassaron2017-07-25 17:44:59 -0400
commit661526b0739115594fda4c0e876398cdc940fbe1 (patch)
treec5bfdf136bd7f72abed54d3bb83d831bcfc43555
parentd25dee6afc0cc72f477b577623079b4d644957a8 (diff)
repeated errors don't cause repeated windows
-rw-r--r--src/component.py15
-rw-r--r--src/components/sound.py1
-rw-r--r--src/components/video.py4
-rw-r--r--src/core.py15
-rw-r--r--src/mainwindow.py4
-rw-r--r--src/presetmanager.py61
-rw-r--r--src/video_thread.py8
7 files changed, 63 insertions, 45 deletions
diff --git a/src/component.py b/src/component.py
index 48e9c1a..7a768ed 100644
--- a/src/component.py
+++ b/src/component.py
@@ -17,7 +17,7 @@ class ComponentMetaclass(type(QtCore.QObject)):
def initializationWrapper(self, *args, **kwargs):
try:
return func(self, *args, **kwargs)
- except:
+ except Exception:
try:
raise ComponentInitError(self, 'initialization process')
except ComponentError:
@@ -28,7 +28,7 @@ class ComponentMetaclass(type(QtCore.QObject)):
def renderWrapper(self, *args, **kwargs):
try:
return func(self, *args, **kwargs)
- except:
+ except Exception:
from toolkit.frame import BlankFrame
try:
raise ComponentError(self, 'renderer')
@@ -398,8 +398,19 @@ class Component(QtCore.QObject, metaclass=ComponentMetaclass):
class ComponentException(RuntimeError):
'''A base class for component errors'''
+
+ _prevErrors = []
+
def __init__(self, caller, name, immediate):
+ print('ComponentError by %s: %s' % (caller.name, name))
super().__init__()
+ if len(ComponentException._prevErrors) > 1:
+ ComponentException._prevErrors.pop()
+ ComponentException._prevErrors.insert(0, name)
+ if name in ComponentException._prevErrors[1:]:
+ # Don't create multiple windows for repeated messages
+ return
+
from toolkit import formatTraceback
import sys
if sys.exc_info()[0] is not None:
diff --git a/src/components/sound.py b/src/components/sound.py
index b3a627a..fcd9e4e 100644
--- a/src/components/sound.py
+++ b/src/components/sound.py
@@ -1,7 +1,6 @@
from PyQt5 import QtGui, QtCore, QtWidgets
import os
-from core import Core
from component import Component
from toolkit.frame import BlankFrame
diff --git a/src/components/video.py b/src/components/video.py
index 153fc4d..6b0a04a 100644
--- a/src/components/video.py
+++ b/src/components/video.py
@@ -6,8 +6,7 @@ import subprocess
import threading
from queue import PriorityQueue
-from core import Core
-from component import Component, ComponentError
+from component import Component
from toolkit.frame import BlankFrame
from toolkit.ffmpeg import testAudioStream
from toolkit import openPipe, checkOutput
@@ -155,6 +154,7 @@ class Component(Component):
return frame
def properties(self):
+ # TODO: Disallow selecting the same video you're exporting to
props = []
if not self.videoPath or self.badVideo \
or not os.path.exists(self.videoPath):
diff --git a/src/core.py b/src/core.py
index 4c08c04..b371d64 100644
--- a/src/core.py
+++ b/src/core.py
@@ -215,7 +215,7 @@ class Core:
if hasattr(loader, 'updateComponentTitle'):
loader.updateComponentTitle(i, modified)
- except:
+ except Exception:
errcode = 1
data = sys.exc_info()
@@ -237,9 +237,10 @@ class Core:
self.openingProject = False
def parseAvFile(self, filepath):
- '''Parses an avp (project) or avl (preset package) file.
- Returns dictionary with section names as the keys, each one
- contains a list of tuples: (compName, version, compPresetDict)
+ '''
+ Parses an avp (project) or avl (preset package) file.
+ Returns dictionary with section names as the keys, each one
+ contains a list of tuples: (compName, version, compPresetDict)
'''
validSections = (
'Components',
@@ -287,7 +288,7 @@ class Core:
data[section].append((key, value.strip()))
return 0, data
- except:
+ except Exception:
return 1, sys.exc_info()
def importPreset(self, filepath):
@@ -332,7 +333,7 @@ class Core:
exportPath
)
return True
- except:
+ except Exception:
return False
def createPresetFile(
@@ -397,7 +398,7 @@ class Core:
)
)
return True
- except:
+ except Exception:
return False
def newVideoWorker(self, loader, audioFile, outputPath):
diff --git a/src/mainwindow.py b/src/mainwindow.py
index 03b8dde..3cc5d26 100644
--- a/src/mainwindow.py
+++ b/src/mainwindow.py
@@ -314,7 +314,7 @@ class MainWindow(QtWidgets.QMainWindow):
['ffmpeg', '-version'], stderr=f
)
goodVersion = str(ffmpegVers).split()[2].startswith('3')
- except:
+ except Exception:
goodVersion = False
else:
goodVersion = True
@@ -381,7 +381,7 @@ class MainWindow(QtWidgets.QMainWindow):
)
@QtCore.pyqtSlot()
- def cleanUp(self):
+ def cleanUp(self, *args):
self.timer.stop()
self.previewThread.quit()
self.previewThread.wait()
diff --git a/src/presetmanager.py b/src/presetmanager.py
index e602c16..b1eeb34 100644
--- a/src/presetmanager.py
+++ b/src/presetmanager.py
@@ -211,10 +211,9 @@ class PresetManager(QtWidgets.QDialog):
self.parent.drawPreview()
def openDeletePresetDialog(self):
- selected = self.window.listWidget_presets.selectedItems()
- if not selected:
+ row = self.getPresetRow()
+ if row == -1:
return
- row = self.window.listWidget_presets.row(selected[0])
comp, vers, name = self.presetRows[row]
ch = self.parent.showMessage(
msg='Really delete %s?' % name,
@@ -242,32 +241,40 @@ class PresetManager(QtWidgets.QDialog):
'numbers, and spaces.',
parent=window if window else self.window)
+ def getPresetRow(self):
+ row = self.window.listWidget_presets.currentRow()
+ if row > -1:
+ return row
+
+ # check if component selected in MainWindow has preset loaded
+ componentList = self.parent.window.listWidget_componentList
+ compIndex = componentList.currentRow()
+ if compIndex == -1:
+ return compIndex
+
+ preset = self.core.selectedComponents[compIndex].currentPreset
+ if preset is None:
+ return -1
+ else:
+ rowTuple = (
+ self.core.selectedComponents[compIndex].name,
+ self.core.selectedComponents[compIndex].version,
+ preset
+ )
+ for i, tup in enumerate(self.presetRows):
+ if rowTuple == tup:
+ index = i
+ break
+ else:
+ return -1
+ return index
+
def openRenamePresetDialog(self):
# TODO: maintain consistency by changing this to call createNewPreset()
presetList = self.window.listWidget_presets
- index = presetList.currentRow()
+ index = self.getPresetRow()
if index == -1:
- # check if component selected in MainWindow has preset loaded
- componentList = self.parent.window.listWidget_componentList
- compIndex = componentList.currentRow()
- if compIndex == -1:
- return
-
- preset = self.core.selectedComponents[compIndex].currentPreset
- if preset is None:
- return
- else:
- rowTuple = (
- self.core.selectedComponents[compIndex].name,
- self.core.selectedComponents[compIndex].version,
- preset
- )
- for i, tup in enumerate(self.presetRows):
- if rowTuple == tup:
- index = i
- break
- else:
- return
+ return
while True:
newName, OK = QtWidgets.QInputDialog.getText(
@@ -326,14 +333,14 @@ class PresetManager(QtWidgets.QDialog):
self.settings.setValue("presetDir", os.path.dirname(filename))
def openExportDialog(self):
- if not self.window.listWidget_presets.selectedItems():
+ index = self.getPresetRow()
+ if index == -1:
return
filename, _ = QtWidgets.QFileDialog.getSaveFileName(
self.window, "Export Preset",
self.settings.value("presetDir"),
"Preset Files (*.avl)")
if filename:
- index = self.window.listWidget_presets.currentRow()
comp, vers, name = self.presetRows[index]
if not self.core.exportPreset(filename, comp, vers, name):
self.parent.showMessage(
diff --git a/src/video_thread.py b/src/video_thread.py
index dd957e5..8cbe8a8 100644
--- a/src/video_thread.py
+++ b/src/video_thread.py
@@ -225,7 +225,7 @@ class Worker(QtCore.QObject):
self.renderThreads = []
try:
numCpus = len(os.sched_getaffinity(0))
- except:
+ except Exception:
numCpus = os.cpu_count()
for i in range(2 if numCpus <= 2 else 3):
@@ -268,7 +268,7 @@ class Worker(QtCore.QObject):
try:
self.out_pipe.stdin.write(frameBuffer[audioI].tobytes())
self.previewQueue.put([audioI, frameBuffer.pop(audioI)])
- except:
+ except Exception:
break
# increase progress bar value
@@ -293,7 +293,7 @@ class Worker(QtCore.QObject):
print("Export Canceled")
try:
os.remove(self.outputFile)
- except:
+ except Exception:
pass
self.progressBarUpdate.emit(0)
self.progressBarSetText.emit('Export Canceled')
@@ -333,7 +333,7 @@ class Worker(QtCore.QObject):
try:
self.out_pipe.send_signal(signal.SIGINT)
- except:
+ except Exception:
pass
def reset(self):