repeated errors don't cause repeated windows

This commit is contained in:
tassaron 2017-07-25 17:44:59 -04:00
parent d25dee6afc
commit 661526b073
7 changed files with 63 additions and 45 deletions

View File

@ -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:

View File

@ -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

View File

@ -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):

View File

@ -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):

View File

@ -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()

View File

@ -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(

View File

@ -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):