From d4b63e4d4612db262424fe10c83f8eaa4f741f24 Mon Sep 17 00:00:00 2001
From: tassaron
Date: Sat, 19 Aug 2017 20:45:44 -0400
Subject: remove % from log calls
---
src/toolkit/ffmpeg.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'src/toolkit/ffmpeg.py')
diff --git a/src/toolkit/ffmpeg.py b/src/toolkit/ffmpeg.py
index 8fe9148..f007f90 100644
--- a/src/toolkit/ffmpeg.py
+++ b/src/toolkit/ffmpeg.py
@@ -93,7 +93,7 @@ class FfmpegVideo:
from component import ComponentError
logFilename = os.path.join(
core.Core.logDir, 'render_%s.log' % str(self.component.compPos))
- log.debug('Creating ffmpeg process (log at %s)' % logFilename)
+ log.debug('Creating ffmpeg process (log at %s)', logFilename)
with open(logFilename, 'w') as logf:
logf.write(" ".join(self.command) + '\n\n')
with open(logFilename, 'a') as logf:
--
cgit v1.2.3
From 85d3b779d07ad92b0f540ea52185777c3c3f5e48 Mon Sep 17 00:00:00 2001
From: tassaron
Date: Sat, 26 Aug 2017 21:23:44 -0400
Subject: fixed too-large Color sizes, fixed a redoing bug, rm pointless things
and now Ctrl+Alt+Shift+A gives a bunch of debug info
---
src/component.py | 30 +++++++++++------------
src/components/color.py | 2 +-
src/components/color.ui | 4 ++--
src/components/text.py | 13 ++++++----
src/core.py | 8 +++++--
src/gui/mainwindow.py | 63 +++++++++++++++++++++++++++++--------------------
src/gui/preview_win.py | 1 +
src/main.py | 5 ----
src/toolkit/ffmpeg.py | 2 +-
src/toolkit/frame.py | 3 ---
10 files changed, 72 insertions(+), 59 deletions(-)
(limited to 'src/toolkit/ffmpeg.py')
diff --git a/src/component.py b/src/component.py
index 35fc717..de4b6a7 100644
--- a/src/component.py
+++ b/src/component.py
@@ -41,10 +41,8 @@ class ComponentMetaclass(type(QtCore.QObject)):
def renderWrapper(self, *args, **kwargs):
try:
log.verbose(
- '### %s #%s renders%s frame %s###',
+ '### %s #%s renders a preview frame ###',
self.__class__.name, str(self.compPos),
- '' if args else ' a preview',
- '' if not args else '%s ' % args[0],
)
return func(self, *args, **kwargs)
except Exception as e:
@@ -198,8 +196,8 @@ class ComponentMetaclass(type(QtCore.QObject)):
'names', # Class methods
'error', 'audio', 'properties', # Properties
'preFrameRender', 'previewRender',
- 'frameRender', 'command',
- 'loadPreset', 'update', 'widget',
+ 'loadPreset', 'command',
+ 'update', 'widget',
)
# Auto-decorate methods
@@ -212,7 +210,7 @@ class ComponentMetaclass(type(QtCore.QObject)):
attrs[key] = property(attrs[key])
elif key == 'command':
attrs[key] = cls.commandWrapper(attrs[key])
- elif key in ('previewRender', 'frameRender'):
+ elif key == 'previewRender':
attrs[key] = cls.renderWrapper(attrs[key])
elif key == 'preFrameRender':
attrs[key] = cls.initializationWrapper(attrs[key])
@@ -298,16 +296,19 @@ class Component(QtCore.QObject, metaclass=ComponentMetaclass):
return self.__class__.name
def __repr__(self):
+ import pprint
try:
preset = self.savePreset()
except Exception as e:
preset = '%s occurred while saving preset' % str(e)
return (
- 'Component(%s, %s, Core)\n'
- 'Name: %s v%s\n Preset: %s' % (
+ 'Component(module %s, pos %s) (%s)\n'
+ 'Name: %s v%s\nPreset: %s' % (
self.moduleIndex, self.compPos,
- self.__class__.name, str(self.__class__.version), preset
+ object.__repr__(self),
+ self.__class__.name, str(self.__class__.version),
+ pprint.pformat(preset)
)
)
@@ -886,12 +887,11 @@ class ComponentUpdate(QtWidgets.QUndoCommand):
def redo(self):
if self.undone:
log.debug('Redoing component update')
- self.parent.oldAttrs = self.relativeWidgetValsAfterUndo
- self.setWidgetValues(self.modifiedVals)
- self.parent.update(auto=True)
- self.parent.oldAttrs = None
- else:
- self.parent.setAttrs(self.modifiedVals)
+ self.parent.oldAttrs = self.relativeWidgetValsAfterUndo
+ self.setWidgetValues(self.modifiedVals)
+ self.parent.update(auto=True)
+ self.parent.oldAttrs = None
+ if not self.undone:
self.relativeWidgetValsAfterRedo = {
attr: copy(getattr(self.parent, attr))
for attr in self.parent._relativeWidgets
diff --git a/src/components/color.py b/src/components/color.py
index a55aa10..7d4f86d 100644
--- a/src/components/color.py
+++ b/src/components/color.py
@@ -102,7 +102,7 @@ class Component(Component):
# Return a solid image at x, y
if self.fillType == 0:
frame = BlankFrame(width, height)
- image = Image.new("RGBA", shapeSize, (r, g, b, 255))
+ image = FloodFrame(self.sizeWidth, self.sizeHeight, (r, g, b, 255))
frame.paste(image, box=(self.x, self.y))
return frame
diff --git a/src/components/color.ui b/src/components/color.ui
index 1865e60..c1713fb 100644
--- a/src/components/color.ui
+++ b/src/components/color.ui
@@ -204,7 +204,7 @@
0
- 999999999
+ 19200
0
@@ -239,7 +239,7 @@
- 999999999
+ 10800
diff --git a/src/components/text.py b/src/components/text.py
index 92f0599..32a108e 100644
--- a/src/components/text.py
+++ b/src/components/text.py
@@ -2,10 +2,13 @@ from PIL import ImageEnhance, ImageFilter, ImageChops
from PyQt5.QtGui import QColor, QFont
from PyQt5 import QtGui, QtCore, QtWidgets
import os
+import logging
from component import Component
from toolkit.frame import FramePainter, PaintColor
+log = logging.getLogger('AVP.Components.Text')
+
class Component(Component):
name = 'Title Text'
@@ -76,16 +79,15 @@ class Component(Component):
def getXY(self):
'''Returns true x, y after considering alignment settings'''
fm = QtGui.QFontMetrics(self.titleFont)
- if self.alignment == 0: # Left
- x = int(self.xPosition)
+ x = self.pixelValForAttr('xPosition')
if self.alignment == 1: # Middle
offset = int(fm.width(self.title)/2)
- x = self.xPosition - offset
-
+ x -= offset
if self.alignment == 2: # Right
offset = fm.width(self.title)
- x = self.xPosition - offset
+ x -= offset
+
return x, self.yPosition
def loadPreset(self, pr, *args):
@@ -137,6 +139,7 @@ class Component(Component):
image = FramePainter(width, height)
x, y = self.getXY()
+ log.debug('Text position translates to %s, %s', x, y)
if self.stroke > 0:
outliner = QtGui.QPainterPathStroker()
outliner.setWidth(self.stroke)
diff --git a/src/core.py b/src/core.py
index 784f3b8..b9e2335 100644
--- a/src/core.py
+++ b/src/core.py
@@ -14,7 +14,7 @@ import toolkit
log = logging.getLogger('AVP.Core')
STDOUT_LOGLVL = logging.VERBOSE
-FILE_LOGLVL = logging.VERBOSE
+FILE_LOGLVL = logging.DEBUG
class Core:
@@ -32,6 +32,11 @@ class Core:
self.savedPresets = {} # copies of presets to detect modification
self.openingProject = False
+ def __repr__(self):
+ return "\n=~=~=~=\n".join(
+ [repr(comp) for comp in self.selectedComponents]
+ )
+
def importComponents(self):
def findComponents():
for f in os.listdir(Core.componentsPath):
@@ -482,7 +487,6 @@ class Core:
'854x480',
],
'FFMPEG_BIN': findFfmpeg(),
- 'windowHasFocus': False,
'canceled': False,
}
diff --git a/src/gui/mainwindow.py b/src/gui/mainwindow.py
index 3b204b7..d7fde5c 100644
--- a/src/gui/mainwindow.py
+++ b/src/gui/mainwindow.py
@@ -11,6 +11,7 @@ from queue import Queue
import sys
import os
import signal
+import atexit
import filecmp
import time
import logging
@@ -49,6 +50,13 @@ class MainWindow(QtWidgets.QMainWindow):
self.window = window
self.core = Core()
Core.mode = 'GUI'
+ # widgets of component settings
+ self.pages = []
+ self.lastAutosave = time.time()
+ # list of previous five autosave times, used to reduce update spam
+ self.autosaveTimes = []
+ self.autosaveCooldown = 0.2
+ self.encoding = False
# Find settings created by Core object
self.dataDir = Core.dataDir
@@ -56,19 +64,16 @@ class MainWindow(QtWidgets.QMainWindow):
self.autosavePath = os.path.join(self.dataDir, 'autosave.avp')
self.settings = Core.settings
+ # Register clean-up functions
+ signal.signal(signal.SIGINT, self.terminate)
+ atexit.register(self.cleanUp)
+
# Create stack of undoable user actions
self.undoStack = QtWidgets.QUndoStack(self)
undoLimit = self.settings.value("pref_undoLimit")
self.undoStack.setUndoLimit(undoLimit)
- # widgets of component settings
- self.pages = []
- self.lastAutosave = time.time()
- # list of previous five autosave times, used to reduce update spam
- self.autosaveTimes = []
- self.autosaveCooldown = 0.2
- self.encoding = False
-
+ # Create Preset Manager
self.presetManager = PresetManager(
uic.loadUi(
os.path.join(Core.wd, 'gui', 'presetmanager.ui')), self)
@@ -97,7 +102,6 @@ class MainWindow(QtWidgets.QMainWindow):
self.timer.start(timeout)
# Begin decorating the window and connecting events
- self.window.installEventFilter(self)
componentList = self.window.listWidget_componentList
style = window.pushButton_undo.style()
@@ -391,24 +395,41 @@ class MainWindow(QtWidgets.QMainWindow):
activated=lambda: self.moveComponent('bottom')
)
- # Debug Hotkeys
QtWidgets.QShortcut(
- "Ctrl+Alt+Shift+R", self.window, self.drawPreview
+ "Ctrl+Shift+F", self.window, self.showFfmpegCommand
)
QtWidgets.QShortcut(
- "Ctrl+Alt+Shift+F", self.window, self.showFfmpegCommand
+ "Ctrl+Shift+U", self.window, self.showUndoStack
)
- QtWidgets.QShortcut(
- "Ctrl+Alt+Shift+U", self.window, self.showUndoStack
+
+ if log.isEnabledFor(logging.DEBUG):
+ QtWidgets.QShortcut(
+ "Ctrl+Alt+Shift+R", self.window, self.drawPreview
+ )
+ QtWidgets.QShortcut(
+ "Ctrl+Alt+Shift+A", self.window, lambda: log.debug(repr(self))
+ )
+
+ def __repr__(self):
+ return (
+ '\n%s\n'
+ '#####\n'
+ 'Preview thread is %s\n' % (
+ repr(self.core),
+ 'live' if self.previewThread.isRunning() else 'dead',
+ )
)
- @QtCore.pyqtSlot()
def cleanUp(self, *args):
log.info('Ending the preview thread')
self.timer.stop()
self.previewThread.quit()
self.previewThread.wait()
+ def terminate(self, *args):
+ self.cleanUp()
+ sys.exit(0)
+
@disableWhenOpeningProject
def updateWindowTitle(self):
appName = 'Audio Visualizer'
@@ -542,7 +563,7 @@ class MainWindow(QtWidgets.QMainWindow):
return True
except FileNotFoundError:
log.error(
- 'Project file couldn\'t be located:', self.currentProject)
+ 'Project file couldn\'t be located: %s', self.currentProject)
return identical
return False
@@ -639,6 +660,7 @@ class MainWindow(QtWidgets.QMainWindow):
detail=detail,
icon='Critical',
)
+ log.info('%s', repr(self))
def changeEncodingStatus(self, status):
self.encoding = status
@@ -1017,12 +1039,3 @@ class MainWindow(QtWidgets.QMainWindow):
self.menu.move(parentPosition + QPos)
self.menu.show()
-
- def eventFilter(self, object, event):
- if event.type() == QtCore.QEvent.WindowActivate \
- or event.type() == QtCore.QEvent.FocusIn:
- Core.windowHasFocus = True
- elif event.type() == QtCore.QEvent.WindowDeactivate \
- or event.type() == QtCore.QEvent.FocusOut:
- Core.windowHasFocus = False
- return False
diff --git a/src/gui/preview_win.py b/src/gui/preview_win.py
index c6b9a32..49a22eb 100644
--- a/src/gui/preview_win.py
+++ b/src/gui/preview_win.py
@@ -60,3 +60,4 @@ class PreviewWindow(QtWidgets.QLabel):
icon='Critical',
parent=self
)
+ log.info('%', repr(self.parent))
diff --git a/src/main.py b/src/main.py
index 6d18af3..f767de1 100644
--- a/src/main.py
+++ b/src/main.py
@@ -36,8 +36,6 @@ def main():
elif mode == 'GUI':
from gui.mainwindow import MainWindow
- import atexit
- import signal
window = uic.loadUi(os.path.join(wd, "gui", "mainwindow.ui"))
# window.adjustSize()
@@ -56,9 +54,6 @@ def main():
log.debug("Finished creating main window")
window.raise_()
- signal.signal(signal.SIGINT, main.cleanUp)
- atexit.register(main.cleanUp)
-
sys.exit(app.exec_())
if __name__ == "__main__":
diff --git a/src/toolkit/ffmpeg.py b/src/toolkit/ffmpeg.py
index f007f90..a77831e 100644
--- a/src/toolkit/ffmpeg.py
+++ b/src/toolkit/ffmpeg.py
@@ -157,7 +157,7 @@ def findFfmpeg():
['ffmpeg', '-version'], stderr=f
)
return "ffmpeg"
- except subprocess.CalledProcessError:
+ except (subprocess.CalledProcessError, FileNotFoundError):
return "avconv"
diff --git a/src/toolkit/frame.py b/src/toolkit/frame.py
index 2104978..aefb55f 100644
--- a/src/toolkit/frame.py
+++ b/src/toolkit/frame.py
@@ -21,7 +21,6 @@ class FramePainter(QtGui.QPainter):
Pillow image with finalize()
'''
def __init__(self, width, height):
- log.verbose('Creating new FramePainter')
image = BlankFrame(width, height)
self.image = QtGui.QImage(ImageQt(image))
super().__init__(self.image)
@@ -78,8 +77,6 @@ def defaultSize(framefunc):
def FloodFrame(width, height, RgbaTuple):
- log.verbose('Creating new %s*%s %s flood frame' % (
- width, height, RgbaTuple))
return Image.new("RGBA", (width, height), RgbaTuple)
--
cgit v1.2.3
From 4a310ffb2870babf6774da843cad271f8a477bcc Mon Sep 17 00:00:00 2001
From: tassaron
Date: Sun, 27 Aug 2017 12:10:21 -0400
Subject: file logging can be turned completely off
and various changes to log levels and messages everywhere
---
src/component.py | 22 ++++++++----
src/components/spectrum.py | 21 ++++++++----
src/components/video.py | 21 ++++++++----
src/components/waveform.py | 20 +++++++----
src/core.py | 85 ++++++++++++++++++++++------------------------
src/gui/mainwindow.py | 18 ++++------
src/toolkit/ffmpeg.py | 22 ++++++++----
7 files changed, 119 insertions(+), 90 deletions(-)
(limited to 'src/toolkit/ffmpeg.py')
diff --git a/src/component.py b/src/component.py
index 01c1d06..f3ee188 100644
--- a/src/component.py
+++ b/src/component.py
@@ -423,7 +423,14 @@ class Component(QtCore.QObject, metaclass=ComponentMetaclass):
for attr, widget in self._trackedWidgets.items():
key = attr if attr not in self._presetNames \
else self._presetNames[attr]
- val = presetDict[key]
+ try:
+ val = presetDict[key]
+ except KeyError as e:
+ log.info(
+ '%s missing value %s. Outdated preset?',
+ self.currentPreset, str(e)
+ )
+ val = getattr(self, key)
if attr in self._colorWidgets:
widget.setText('%s,%s,%s' % val)
@@ -580,7 +587,7 @@ class Component(QtCore.QObject, metaclass=ComponentMetaclass):
'colorWidgets',
'relativeWidgets',
):
- setattr(self, '_%s' % kwarg, kwargs[kwarg])
+ setattr(self, '_{}'.format(kwarg), kwargs[kwarg])
else:
raise ComponentError(
self, 'Nonsensical keywords to trackWidgets.')
@@ -613,6 +620,10 @@ class Component(QtCore.QObject, metaclass=ComponentMetaclass):
self._relativeMaximums[attr] = \
self._trackedWidgets[attr].maximum()
self.updateRelativeWidgetMaximum(attr)
+ setattr(
+ self, attr, getWidgetValue(self._trackedWidgets[attr])
+ )
+
self._preUpdate()
self._autoUpdate()
@@ -732,13 +743,12 @@ class Component(QtCore.QObject, metaclass=ComponentMetaclass):
can make determining the 'previous' value tricky.
'''
if self.oldAttrs is not None:
- log.verbose('Using nonstandard oldAttr for %s', attr)
return self.oldAttrs[attr]
else:
try:
return getattr(self, attr)
except AttributeError:
- log.info('Using visible values instead of attrs')
+ log.error('Using visible values instead of oldAttrs')
return self._trackedWidgets[attr].value()
def updateRelativeWidget(self, attr):
@@ -893,7 +903,7 @@ class ComponentUpdate(QtWidgets.QUndoCommand):
def redo(self):
if self.undone:
- log.debug('Redoing component update')
+ log.info('Redoing component update')
self.parent.oldAttrs = self.relativeWidgetValsAfterUndo
self.setWidgetValues(self.modifiedVals)
self.parent.update(auto=True)
@@ -906,7 +916,7 @@ class ComponentUpdate(QtWidgets.QUndoCommand):
self.parent._sendUpdateSignal()
def undo(self):
- log.debug('Undoing component update')
+ log.info('Undoing component update')
self.undone = True
self.parent.oldAttrs = self.relativeWidgetValsAfterRedo
self.setWidgetValues(self.oldWidgetVals)
diff --git a/src/components/spectrum.py b/src/components/spectrum.py
index 2b98dc2..77cb086 100644
--- a/src/components/spectrum.py
+++ b/src/components/spectrum.py
@@ -148,15 +148,22 @@ class Component(Component):
'-codec:v', 'rawvideo', '-',
'-frames:v', '1',
])
- logFilename = os.path.join(
- self.core.logDir, 'preview_%s.log' % str(self.compPos))
- log.debug('Creating ffmpeg process (log at %s)' % logFilename)
- with open(logFilename, 'w') as logf:
- logf.write(" ".join(command) + '\n\n')
- with open(logFilename, 'a') as logf:
+
+ if self.core.logEnabled:
+ logFilename = os.path.join(
+ self.core.logDir, 'preview_%s.log' % str(self.compPos))
+ log.debug('Creating ffmpeg process (log at %s)' % logFilename)
+ with open(logFilename, 'w') as logf:
+ logf.write(" ".join(command) + '\n\n')
+ with open(logFilename, 'a') as logf:
+ self.previewPipe = openPipe(
+ command, stdin=subprocess.DEVNULL, stdout=subprocess.PIPE,
+ stderr=logf, bufsize=10**8
+ )
+ else:
self.previewPipe = openPipe(
command, stdin=subprocess.DEVNULL, stdout=subprocess.PIPE,
- stderr=logf, bufsize=10**8
+ stderr=subprocess.DEVNULL, bufsize=10**8
)
byteFrame = self.previewPipe.stdout.read(self.chunkSize)
closePipe(self.previewPipe)
diff --git a/src/components/video.py b/src/components/video.py
index e6486ea..8ad21b5 100644
--- a/src/components/video.py
+++ b/src/components/video.py
@@ -139,16 +139,23 @@ class Component(Component):
'-frames:v', '1',
])
- logFilename = os.path.join(
- self.core.logDir, 'preview_%s.log' % str(self.compPos))
- log.debug('Creating ffmpeg process (log at %s)' % logFilename)
- with open(logFilename, 'w') as logf:
- logf.write(" ".join(command) + '\n\n')
- with open(logFilename, 'a') as logf:
+ if self.core.logEnabled:
+ logFilename = os.path.join(
+ self.core.logDir, 'preview_%s.log' % str(self.compPos))
+ log.debug('Creating ffmpeg process (log at %s)' % logFilename)
+ with open(logFilename, 'w') as logf:
+ logf.write(" ".join(command) + '\n\n')
+ with open(logFilename, 'a') as logf:
+ pipe = openPipe(
+ command, stdin=subprocess.DEVNULL, stdout=subprocess.PIPE,
+ stderr=logf, bufsize=10**8
+ )
+ else:
pipe = openPipe(
command, stdin=subprocess.DEVNULL, stdout=subprocess.PIPE,
- stderr=logf, bufsize=10**8
+ stderr=subprocess.DEVNULL, bufsize=10**8
)
+
byteFrame = pipe.stdout.read(self.chunkSize)
closePipe(pipe)
diff --git a/src/components/waveform.py b/src/components/waveform.py
index 5c02bbf..cbfc47f 100644
--- a/src/components/waveform.py
+++ b/src/components/waveform.py
@@ -110,15 +110,21 @@ class Component(Component):
'-codec:v', 'rawvideo', '-',
'-frames:v', '1',
])
- logFilename = os.path.join(
- self.core.logDir, 'preview_%s.log' % str(self.compPos))
- log.debug('Creating ffmpeg process (log at %s)' % logFilename)
- with open(logFilename, 'w') as logf:
- logf.write(" ".join(command) + '\n\n')
- with open(logFilename, 'a') as logf:
+ if self.core.logEnabled:
+ logFilename = os.path.join(
+ self.core.logDir, 'preview_%s.log' % str(self.compPos))
+ log.debug('Creating ffmpeg log at %s', logFilename)
+ with open(logFilename, 'w') as logf:
+ logf.write(" ".join(command) + '\n\n')
+ with open(logFilename, 'a') as logf:
+ pipe = openPipe(
+ command, stdin=subprocess.DEVNULL, stdout=subprocess.PIPE,
+ stderr=logf, bufsize=10**8
+ )
+ else:
pipe = openPipe(
command, stdin=subprocess.DEVNULL, stdout=subprocess.PIPE,
- stderr=logf, bufsize=10**8
+ stderr=subprocess.DEVNULL, bufsize=10**8
)
byteFrame = pipe.stdout.read(self.chunkSize)
closePipe(pipe)
diff --git a/src/core.py b/src/core.py
index b9e2335..1a90296 100644
--- a/src/core.py
+++ b/src/core.py
@@ -13,8 +13,8 @@ import toolkit
log = logging.getLogger('AVP.Core')
-STDOUT_LOGLVL = logging.VERBOSE
-FILE_LOGLVL = logging.DEBUG
+STDOUT_LOGLVL = logging.INFO
+FILE_LOGLVL = logging.VERBOSE
class Core:
@@ -145,17 +145,11 @@ class Core:
saveValueStore = self.getPreset(filepath)
if not saveValueStore:
return False
- try:
- comp = self.selectedComponents[compIndex]
- comp.loadPreset(
- saveValueStore,
- presetName
- )
- except KeyError as e:
- log.warning(
- '%s #%s\'s preset is missing value: %s',
- comp.name, str(compIndex), str(e)
- )
+ comp = self.selectedComponents[compIndex]
+ comp.loadPreset(
+ saveValueStore,
+ presetName
+ )
self.savedPresets[presetName] = dict(saveValueStore)
return True
@@ -472,11 +466,12 @@ class Core:
encoderOptions = json.load(json_file)
settings = {
+ 'canceled': False,
+ 'FFMPEG_BIN': findFfmpeg(),
'dataDir': dataDir,
'settings': QtCore.QSettings(
os.path.join(dataDir, 'settings.ini'),
QtCore.QSettings.IniFormat),
- 'logDir': os.path.join(dataDir, 'log'),
'presetDir': os.path.join(dataDir, 'presets'),
'componentsPath': os.path.join(wd, 'components'),
'junkStream': os.path.join(wd, 'gui', 'background.png'),
@@ -486,8 +481,8 @@ class Core:
'1280x720',
'854x480',
],
- 'FFMPEG_BIN': findFfmpeg(),
- 'canceled': False,
+ 'logDir': os.path.join(dataDir, 'log'),
+ 'logEnabled': False,
}
settings['videoFormats'] = toolkit.appendUppercase([
@@ -572,42 +567,42 @@ class Core:
@staticmethod
def makeLogger():
- logFilename = os.path.join(Core.logDir, 'avp_debug.log')
- libLogFilename = os.path.join(Core.logDir, 'global_debug.log')
- # delete old logs
- for log in (logFilename, libLogFilename):
- if os.path.exists(log):
- os.remove(log)
-
- # create file handlers to capture every log message somewhere
- logFile = logging.FileHandler(logFilename)
- logFile.setLevel(FILE_LOGLVL)
- libLogFile = logging.FileHandler(libLogFilename)
- libLogFile.setLevel(FILE_LOGLVL)
-
- # send some critical log messages to stdout as well
+ # send critical log messages to stdout
logStream = logging.StreamHandler()
logStream.setLevel(STDOUT_LOGLVL)
-
- # create formatters for each stream
- fileFormatter = logging.Formatter(
- '[%(asctime)s] %(threadName)-10.10s %(name)-23.23s %(levelname)s: '
- '%(message)s'
- )
streamFormatter = logging.Formatter(
- '<%(name)s> %(message)s'
+ '<%(name)s> %(levelname)s: %(message)s'
)
- logFile.setFormatter(fileFormatter)
- libLogFile.setFormatter(fileFormatter)
logStream.setFormatter(streamFormatter)
-
log = logging.getLogger('AVP')
- log.addHandler(logFile)
log.addHandler(logStream)
- libLog = logging.getLogger()
- libLog.addHandler(libLogFile)
- # lowest level must be explicitly set on the root Logger
- libLog.setLevel(0)
+
+ if FILE_LOGLVL is not None:
+ # write log files as well!
+ Core.logEnabled = True
+ logFilename = os.path.join(Core.logDir, 'avp_debug.log')
+ libLogFilename = os.path.join(Core.logDir, 'global_debug.log')
+ # delete old logs
+ for log_ in (logFilename, libLogFilename):
+ if os.path.exists(log_):
+ os.remove(log_)
+
+ logFile = logging.FileHandler(logFilename)
+ logFile.setLevel(FILE_LOGLVL)
+ libLogFile = logging.FileHandler(libLogFilename)
+ libLogFile.setLevel(FILE_LOGLVL)
+ fileFormatter = logging.Formatter(
+ '[%(asctime)s] %(threadName)-10.10s %(name)-23.23s %(levelname)s: '
+ '%(message)s'
+ )
+ logFile.setFormatter(fileFormatter)
+ libLogFile.setFormatter(fileFormatter)
+
+ libLog = logging.getLogger()
+ log.addHandler(logFile)
+ libLog.addHandler(libLogFile)
+ # lowest level must be explicitly set on the root Logger
+ libLog.setLevel(0)
# always store settings in class variables even if a Core object is not created
Core.storeSettings()
diff --git a/src/gui/mainwindow.py b/src/gui/mainwindow.py
index d7fde5c..81c5d7c 100644
--- a/src/gui/mainwindow.py
+++ b/src/gui/mainwindow.py
@@ -92,6 +92,10 @@ class MainWindow(QtWidgets.QMainWindow):
self.previewWorker.moveToThread(self.previewThread)
self.previewWorker.imageCreated.connect(self.showPreviewImage)
self.previewThread.start()
+ self.previewThread.finished.connect(
+ lambda:
+ log.critical('PREVIEW THREAD DIED! This should never happen.')
+ )
timeout = 500
log.debug(
@@ -442,7 +446,7 @@ class MainWindow(QtWidgets.QMainWindow):
appName += '*'
except AttributeError:
pass
- log.debug('Setting window title to %s' % appName)
+ log.verbose('Setting window title to %s' % appName)
self.window.setWindowTitle(appName)
@QtCore.pyqtSlot(int, dict)
@@ -459,16 +463,8 @@ class MainWindow(QtWidgets.QMainWindow):
modified = False
else:
modified = (presetStore != self.core.savedPresets[name])
- if modified:
- log.verbose(
- 'Differing values between presets: %s',
- ", ".join([
- '%s: %s' % item for item in presetStore.items()
- if val != self.core.savedPresets[name][key]
- ])
- )
- else:
- modified = bool(presetStore)
+
+ modified = bool(presetStore)
if pos < 0:
pos = len(self.core.selectedComponents)-1
name = self.core.selectedComponents[pos].name
diff --git a/src/toolkit/ffmpeg.py b/src/toolkit/ffmpeg.py
index a77831e..d78d803 100644
--- a/src/toolkit/ffmpeg.py
+++ b/src/toolkit/ffmpeg.py
@@ -91,16 +91,24 @@ class FfmpegVideo:
def fillBuffer(self):
from component import ComponentError
- logFilename = os.path.join(
- core.Core.logDir, 'render_%s.log' % str(self.component.compPos))
- log.debug('Creating ffmpeg process (log at %s)', logFilename)
- with open(logFilename, 'w') as logf:
- logf.write(" ".join(self.command) + '\n\n')
- with open(logFilename, 'a') as logf:
+ if core.Core.logEnabled:
+ logFilename = os.path.join(
+ core.Core.logDir, 'render_%s.log' % str(self.component.compPos)
+ )
+ log.debug('Creating ffmpeg process (log at %s)', logFilename)
+ with open(logFilename, 'w') as logf:
+ logf.write(" ".join(self.command) + '\n\n')
+ with open(logFilename, 'a') as logf:
+ self.pipe = openPipe(
+ self.command, stdin=subprocess.DEVNULL,
+ stdout=subprocess.PIPE, stderr=logf, bufsize=10**8
+ )
+ else:
self.pipe = openPipe(
self.command, stdin=subprocess.DEVNULL, stdout=subprocess.PIPE,
- stderr=logf, bufsize=10**8
+ stderr=subprocess.DEVNULL, bufsize=10**8
)
+
while True:
if self.parent.canceled:
break
--
cgit v1.2.3