repeated errors don't cause repeated windows
This commit is contained in:
parent
d25dee6afc
commit
661526b073
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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):
|
||||
|
|
15
src/core.py
15
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):
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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):
|
||||
|
|
Reference in New Issue