aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/components/spectrum.py6
-rw-r--r--src/components/video.py4
-rw-r--r--src/components/waveform.py6
-rw-r--r--src/core.py2
-rw-r--r--src/gui/actions.py8
-rw-r--r--src/gui/mainwindow.py351
-rw-r--r--src/gui/presetmanager.py88
-rw-r--r--src/gui/preview_win.py2
-rw-r--r--src/main.py18
9 files changed, 242 insertions, 243 deletions
diff --git a/src/components/spectrum.py b/src/components/spectrum.py
index d1f8fb6..91f2afb 100644
--- a/src/components/spectrum.py
+++ b/src/components/spectrum.py
@@ -30,9 +30,9 @@ class Component(Component):
self.previewSize = (214, 120)
self.previewPipe = None
- if hasattr(self.parent, 'window'):
+ if hasattr(self.parent, 'lineEdit_audioFile'):
# update preview when audio file changes (if genericPreview is off)
- self.parent.window.lineEdit_audioFile.textChanged.connect(
+ self.parent.lineEdit_audioFile.textChanged.connect(
self.update
)
@@ -123,7 +123,7 @@ class Component(Component):
genericPreview = self.settings.value("pref_genericPreview")
startPt = 0
if not genericPreview:
- inputFile = self.parent.window.lineEdit_audioFile.text()
+ inputFile = self.parent.lineEdit_audioFile.text()
if not inputFile or not os.path.exists(inputFile):
return
duration = getAudioDuration(inputFile)
diff --git a/src/components/video.py b/src/components/video.py
index 070940d..9fffc26 100644
--- a/src/components/video.py
+++ b/src/components/video.py
@@ -63,8 +63,8 @@ class Component(Component):
def properties(self):
props = []
- if hasattr(self.parent, 'window'):
- outputFile = self.parent.window.lineEdit_outputFile.text()
+ if hasattr(self.parent, 'lineEdit_outputFile'):
+ outputFile = self.parent.lineEdit_outputFile.text()
else:
outputFile = str(self.parent.args.output)
diff --git a/src/components/waveform.py b/src/components/waveform.py
index 1a6035f..227f711 100644
--- a/src/components/waveform.py
+++ b/src/components/waveform.py
@@ -27,8 +27,8 @@ class Component(Component):
self.page.lineEdit_color.setText('255,255,255')
- if hasattr(self.parent, 'window'):
- self.parent.window.lineEdit_audioFile.textChanged.connect(
+ if hasattr(self.parent, 'lineEdit_audioFile'):
+ self.parent.lineEdit_audioFile.textChanged.connect(
self.update
)
@@ -82,7 +82,7 @@ class Component(Component):
genericPreview = self.settings.value("pref_genericPreview")
startPt = 0
if not genericPreview:
- inputFile = self.parent.window.lineEdit_audioFile.text()
+ inputFile = self.parent.lineEdit_audioFile.text()
if not inputFile or not os.path.exists(inputFile):
return
duration = getAudioDuration(inputFile)
diff --git a/src/core.py b/src/core.py
index 42fd1c3..225d8e0 100644
--- a/src/core.py
+++ b/src/core.py
@@ -181,7 +181,7 @@ class Core:
try:
if hasattr(loader, 'window'):
for widget, value in data['WindowFields']:
- widget = eval('loader.window.%s' % widget)
+ widget = eval('loader.%s' % widget)
with toolkit.blockSignals(widget):
toolkit.setWidgetValue(widget, value)
diff --git a/src/gui/actions.py b/src/gui/actions.py
index eb7b953..afb980a 100644
--- a/src/gui/actions.py
+++ b/src/gui/actions.py
@@ -41,7 +41,7 @@ class RemoveComponent(QUndoCommand):
def __init__(self, parent, selectedRows):
super().__init__('remove component')
self.parent = parent
- componentList = self.parent.window.listWidget_componentList
+ componentList = self.parent.listWidget_componentList
self.selectedRows = [
componentList.row(selected) for selected in selectedRows
]
@@ -53,7 +53,7 @@ class RemoveComponent(QUndoCommand):
self.parent._removeComponent(self.selectedRows[0])
def undo(self):
- componentList = self.parent.window.listWidget_componentList
+ componentList = self.parent.listWidget_componentList
for index, comp in zip(self.selectedRows, self.components):
self.parent.core.insertComponent(
index, comp, self.parent
@@ -78,7 +78,7 @@ class MoveComponent(QUndoCommand):
return True
def do(self, rowa, rowb):
- componentList = self.parent.window.listWidget_componentList
+ componentList = self.parent.listWidget_componentList
page = self.parent.pages.pop(rowa)
self.parent.pages.insert(rowb, page)
@@ -86,7 +86,7 @@ class MoveComponent(QUndoCommand):
item = componentList.takeItem(rowa)
componentList.insertItem(rowb, item)
- stackedWidget = self.parent.window.stackedWidget
+ stackedWidget = self.parent.stackedWidget
widget = stackedWidget.removeWidget(page)
stackedWidget.insertWidget(rowb, page)
componentList.setCurrentRow(rowb)
diff --git a/src/gui/mainwindow.py b/src/gui/mainwindow.py
index 463d028..c31eec9 100644
--- a/src/gui/mainwindow.py
+++ b/src/gui/mainwindow.py
@@ -4,13 +4,12 @@
This shows a preview of the video being created and allows for saving
projects and exporting the video at a later time.
'''
-from PyQt5 import QtCore, QtGui, uic, QtWidgets
-from PyQt5.QtWidgets import QMenu, QShortcut
+from PyQt5 import QtCore, QtGui, QtWidgets, uic
+import PyQt5.QtWidgets as QtWidgets
from PIL import Image
from queue import Queue
import sys
import os
-import signal
import atexit
import filecmp
import time
@@ -43,11 +42,22 @@ class MainWindow(QtWidgets.QMainWindow):
newTask = QtCore.pyqtSignal(list) # for the preview window
processTask = QtCore.pyqtSignal()
- def __init__(self, window, project):
- QtWidgets.QMainWindow.__init__(self)
+ def __init__(self, project):
+ super().__init__()
log.debug(
'Main thread id: {}'.format(int(QtCore.QThread.currentThreadId())))
- self.window = window
+ uic.loadUi(os.path.join(Core.wd, "gui", "mainwindow.ui"), self)
+ desk = QtWidgets.QDesktopWidget()
+ dpi = desk.physicalDpiX()
+ log.info("Detected screen DPI: %s", dpi)
+
+ self.resize(
+ int(self.width() *
+ (dpi / 96)),
+ int(self.height() *
+ (dpi / 96))
+ )
+
self.core = Core()
Core.mode = 'GUI'
# widgets of component settings
@@ -73,15 +83,13 @@ class MainWindow(QtWidgets.QMainWindow):
self.undoStack.setUndoLimit(undoLimit)
# Create Preset Manager
- self.presetManager = PresetManager(
- uic.loadUi(
- os.path.join(Core.wd, 'gui', 'presetmanager.ui')), self)
+ self.presetManager = PresetManager(self)
# Create the preview window and its thread, queues, and timers
log.debug('Creating preview window')
self.previewWindow = PreviewWindow(self, os.path.join(
Core.wd, 'gui', "background.png"))
- window.verticalLayout_previewWrapper.addWidget(self.previewWindow)
+ self.verticalLayout_previewWrapper.addWidget(self.previewWindow)
log.debug('Starting preview thread')
self.previewQueue = Queue()
@@ -105,7 +113,7 @@ class MainWindow(QtWidgets.QMainWindow):
self.timer.start(timeout)
# Begin decorating the window and connecting events
- componentList = self.window.listWidget_componentList
+ componentList = self.listWidget_componentList
# Undo Feature
def toggleUndoButtonEnabled(*_):
@@ -116,15 +124,15 @@ class MainWindow(QtWidgets.QMainWindow):
# program is probably in midst of exiting
pass
- style = window.pushButton_undo.style()
- undoButton = window.pushButton_undo
+ style = self.pushButton_undo.style()
+ undoButton = self.pushButton_undo
undoButton.setIcon(
style.standardIcon(QtWidgets.QStyle.SP_FileDialogBack)
)
undoButton.clicked.connect(self.undoStack.undo)
undoButton.setEnabled(False)
self.undoStack.cleanChanged.connect(toggleUndoButtonEnabled)
- self.undoMenu = QMenu()
+ self.undoMenu = QtWidgets.QMenu()
self.undoMenu.addAction(
self.undoStack.createUndoAction(self)
)
@@ -138,93 +146,93 @@ class MainWindow(QtWidgets.QMainWindow):
undoButton.setMenu(self.undoMenu)
# end of Undo Feature
- style = window.pushButton_listMoveUp.style()
- window.pushButton_listMoveUp.setIcon(
+ style = self.pushButton_listMoveUp.style()
+ self.pushButton_listMoveUp.setIcon(
style.standardIcon(QtWidgets.QStyle.SP_ArrowUp)
)
- style = window.pushButton_listMoveDown.style()
- window.pushButton_listMoveDown.setIcon(
+ style = self.pushButton_listMoveDown.style()
+ self.pushButton_listMoveDown.setIcon(
style.standardIcon(QtWidgets.QStyle.SP_ArrowDown)
)
- style = window.pushButton_removeComponent.style()
- window.pushButton_removeComponent.setIcon(
+ style = self.pushButton_removeComponent.style()
+ self.pushButton_removeComponent.setIcon(
style.standardIcon(QtWidgets.QStyle.SP_DialogDiscardButton)
)
if sys.platform == 'darwin':
log.debug(
'Darwin detected: showing progress label below progress bar')
- window.progressBar_createVideo.setTextVisible(False)
+ self.progressBar_createVideo.setTextVisible(False)
else:
- window.progressLabel.setHidden(True)
+ self.progressLabel.setHidden(True)
- window.toolButton_selectAudioFile.clicked.connect(
+ self.toolButton_selectAudioFile.clicked.connect(
self.openInputFileDialog)
- window.toolButton_selectOutputFile.clicked.connect(
+ self.toolButton_selectOutputFile.clicked.connect(
self.openOutputFileDialog)
def changedField():
self.autosave()
self.updateWindowTitle()
- window.lineEdit_audioFile.textChanged.connect(changedField)
- window.lineEdit_outputFile.textChanged.connect(changedField)
+ self.lineEdit_audioFile.textChanged.connect(changedField)
+ self.lineEdit_outputFile.textChanged.connect(changedField)
- window.progressBar_createVideo.setValue(0)
+ self.progressBar_createVideo.setValue(0)
- window.pushButton_createVideo.clicked.connect(
+ self.pushButton_createVideo.clicked.connect(
self.createAudioVisualisation)
- window.pushButton_Cancel.clicked.connect(self.stopVideo)
+ self.pushButton_Cancel.clicked.connect(self.stopVideo)
for i, container in enumerate(Core.encoderOptions['containers']):
- window.comboBox_videoContainer.addItem(container['name'])
+ self.comboBox_videoContainer.addItem(container['name'])
if container['name'] == self.settings.value('outputContainer'):
selectedContainer = i
- window.comboBox_videoContainer.setCurrentIndex(selectedContainer)
- window.comboBox_videoContainer.currentIndexChanged.connect(
+ self.comboBox_videoContainer.setCurrentIndex(selectedContainer)
+ self.comboBox_videoContainer.currentIndexChanged.connect(
self.updateCodecs
)
self.updateCodecs()
- for i in range(window.comboBox_videoCodec.count()):
- codec = window.comboBox_videoCodec.itemText(i)
+ for i in range(self.comboBox_videoCodec.count()):
+ codec = self.comboBox_videoCodec.itemText(i)
if codec == self.settings.value('outputVideoCodec'):
- window.comboBox_videoCodec.setCurrentIndex(i)
+ self.comboBox_videoCodec.setCurrentIndex(i)
- for i in range(window.comboBox_audioCodec.count()):
- codec = window.comboBox_audioCodec.itemText(i)
+ for i in range(self.comboBox_audioCodec.count()):
+ codec = self.comboBox_audioCodec.itemText(i)
if codec == self.settings.value('outputAudioCodec'):
- window.comboBox_audioCodec.setCurrentIndex(i)
+ self.comboBox_audioCodec.setCurrentIndex(i)
- window.comboBox_videoCodec.currentIndexChanged.connect(
+ self.comboBox_videoCodec.currentIndexChanged.connect(
self.updateCodecSettings
)
- window.comboBox_audioCodec.currentIndexChanged.connect(
+ self.comboBox_audioCodec.currentIndexChanged.connect(
self.updateCodecSettings
)
vBitrate = int(self.settings.value('outputVideoBitrate'))
aBitrate = int(self.settings.value('outputAudioBitrate'))
- window.spinBox_vBitrate.setValue(vBitrate)
- window.spinBox_aBitrate.setValue(aBitrate)
- window.spinBox_vBitrate.valueChanged.connect(self.updateCodecSettings)
- window.spinBox_aBitrate.valueChanged.connect(self.updateCodecSettings)
+ self.spinBox_vBitrate.setValue(vBitrate)
+ self.spinBox_aBitrate.setValue(aBitrate)
+ self.spinBox_vBitrate.valueChanged.connect(self.updateCodecSettings)
+ self.spinBox_aBitrate.valueChanged.connect(self.updateCodecSettings)
# Make component buttons
- self.compMenu = QMenu()
+ self.compMenu = QtWidgets.QMenu()
for i, comp in enumerate(self.core.modules):
action = self.compMenu.addAction(comp.Component.name)
action.triggered.connect(
lambda _, item=i: self.addComponent(0, item)
)
- self.window.pushButton_addComponent.setMenu(self.compMenu)
+ self.pushButton_addComponent.setMenu(self.compMenu)
componentList.dropEvent = self.dragComponent
componentList.itemSelectionChanged.connect(
@@ -233,7 +241,7 @@ class MainWindow(QtWidgets.QMainWindow):
componentList.itemSelectionChanged.connect(
self.presetManager.clearPresetListSelection
)
- self.window.pushButton_removeComponent.clicked.connect(
+ self.pushButton_removeComponent.clicked.connect(
lambda: self.removeComponent()
)
@@ -245,33 +253,33 @@ class MainWindow(QtWidgets.QMainWindow):
currentRes = str(self.settings.value('outputWidth'))+'x' + \
str(self.settings.value('outputHeight'))
for i, res in enumerate(Core.resolutions):
- window.comboBox_resolution.addItem(res)
+ self.comboBox_resolution.addItem(res)
if res == currentRes:
currentRes = i
- window.comboBox_resolution.setCurrentIndex(currentRes)
- window.comboBox_resolution.currentIndexChanged.connect(
+ self.comboBox_resolution.setCurrentIndex(currentRes)
+ self.comboBox_resolution.currentIndexChanged.connect(
self.updateResolution
)
- self.window.pushButton_listMoveUp.clicked.connect(
+ self.pushButton_listMoveUp.clicked.connect(
lambda: self.moveComponent(-1)
)
- self.window.pushButton_listMoveDown.clicked.connect(
+ self.pushButton_listMoveDown.clicked.connect(
lambda: self.moveComponent(1)
)
# Configure the Projects Menu
- self.projectMenu = QMenu()
- self.window.menuButton_newProject = self.projectMenu.addAction(
+ self.projectMenu = QtWidgets.QMenu()
+ self.menuButton_newProject = self.projectMenu.addAction(
"New Project"
)
- self.window.menuButton_newProject.triggered.connect(
+ self.menuButton_newProject.triggered.connect(
lambda: self.createNewProject()
)
- self.window.menuButton_openProject = self.projectMenu.addAction(
+ self.menuButton_openProject = self.projectMenu.addAction(
"Open Project"
)
- self.window.menuButton_openProject.triggered.connect(
+ self.menuButton_openProject.triggered.connect(
lambda: self.openOpenProjectDialog()
)
@@ -281,16 +289,16 @@ class MainWindow(QtWidgets.QMainWindow):
action = self.projectMenu.addAction("Save Project As")
action.triggered.connect(self.openSaveProjectDialog)
- self.window.pushButton_projects.setMenu(self.projectMenu)
+ self.pushButton_projects.setMenu(self.projectMenu)
# Configure the Presets Button
- self.window.pushButton_presets.clicked.connect(
+ self.pushButton_presets.clicked.connect(
self.openPresetManager
)
self.updateWindowTitle()
log.debug('Showing main window')
- window.show()
+ self.show()
if project and project != self.autosavePath:
if not project.endswith('.avp'):
@@ -358,77 +366,80 @@ class MainWindow(QtWidgets.QMainWindow):
self.settings.setValue("ffmpegMsgShown", True)
# Hotkeys for projects
- QtWidgets.QShortcut("Ctrl+S", self.window, self.saveCurrentProject)
- QtWidgets.QShortcut("Ctrl+A", self.window, self.openSaveProjectDialog)
- QtWidgets.QShortcut("Ctrl+O", self.window, self.openOpenProjectDialog)
- QtWidgets.QShortcut("Ctrl+N", self.window, self.createNewProject)
+ QtWidgets.QShortcut("Ctrl+S", self, self.saveCurrentProject)
+ QtWidgets.QShortcut("Ctrl+A", self, self.openSaveProjectDialog)
+ QtWidgets.QShortcut("Ctrl+O", self, self.openOpenProjectDialog)
+ QtWidgets.QShortcut("Ctrl+N", self, self.createNewProject)
- QtWidgets.QShortcut("Ctrl+Z", self.window, self.undoStack.undo)
- QtWidgets.QShortcut("Ctrl+Y", self.window, self.undoStack.redo)
- QtWidgets.QShortcut("Ctrl+Shift+Z", self.window, self.undoStack.redo)
+ # Hotkeys for undo/redo
+ QtWidgets.QShortcut("Ctrl+Z", self, self.undoStack.undo)
+ QtWidgets.QShortcut("Ctrl+Y", self, self.undoStack.redo)
+ QtWidgets.QShortcut("Ctrl+Shift+Z", self, self.undoStack.redo)
# Hotkeys for component list
for inskey in ("Ctrl+T", QtCore.Qt.Key_Insert):
QtWidgets.QShortcut(
- inskey, self.window,
- activated=lambda: self.window.pushButton_addComponent.click()
+ inskey, self,
+ activated=lambda: self.pushButton_addComponent.click()
)
for delkey in ("Ctrl+R", QtCore.Qt.Key_Delete):
QtWidgets.QShortcut(
- delkey, self.window.listWidget_componentList,
+ delkey, self.listWidget_componentList,
self.removeComponent
)
QtWidgets.QShortcut(
- "Ctrl+Space", self.window,
- activated=lambda: self.window.listWidget_componentList.setFocus()
+ "Ctrl+Space", self,
+ activated=lambda: self.listWidget_componentList.setFocus()
)
QtWidgets.QShortcut(
- "Ctrl+Shift+S", self.window,
+ "Ctrl+Shift+S", self,
self.presetManager.openSavePresetDialog
)
QtWidgets.QShortcut(
- "Ctrl+Shift+C", self.window, self.presetManager.clearPreset
+ "Ctrl+Shift+C", self, self.presetManager.clearPreset
)
QtWidgets.QShortcut(
- "Ctrl+Up", self.window.listWidget_componentList,
+ "Ctrl+Up", self.listWidget_componentList,
activated=lambda: self.moveComponent(-1)
)
QtWidgets.QShortcut(
- "Ctrl+Down", self.window.listWidget_componentList,
+ "Ctrl+Down", self.listWidget_componentList,
activated=lambda: self.moveComponent(1)
)
QtWidgets.QShortcut(
- "Ctrl+Home", self.window.listWidget_componentList,
+ "Ctrl+Home", self.listWidget_componentList,
activated=lambda: self.moveComponent('top')
)
QtWidgets.QShortcut(
- "Ctrl+End", self.window.listWidget_componentList,
+ "Ctrl+End", self.listWidget_componentList,
activated=lambda: self.moveComponent('bottom')
)
QtWidgets.QShortcut(
- "Ctrl+Shift+F", self.window, self.showFfmpegCommand
+ "Ctrl+Shift+F", self, self.showFfmpegCommand
)
QtWidgets.QShortcut(
- "Ctrl+Shift+U", self.window, self.showUndoStack
+ "Ctrl+Shift+U", self, self.showUndoStack
)
if log.isEnabledFor(logging.DEBUG):
QtWidgets.QShortcut(
- "Ctrl+Alt+Shift+R", self.window, self.drawPreview
+ "Ctrl+Alt+Shift+R", self, self.drawPreview
)
QtWidgets.QShortcut(
- "Ctrl+Alt+Shift+A", self.window, lambda: log.debug(repr(self))
+ "Ctrl+Alt+Shift+A", self, lambda: log.debug(repr(self))
)
def __repr__(self):
return (
+ '%s\n'
'\n%s\n'
'#####\n'
'Preview thread is %s\n' % (
- repr(self.core),
- 'live' if self.previewThread.isRunning() else 'dead',
+ super().__repr__(),
+ "core not initialized" if not hasattr(self, "core") else repr(self.core),
+ 'live' if hasattr(self, "previewThread") and self.previewThread.isRunning() else 'dead',
)
)
@@ -456,7 +467,7 @@ class MainWindow(QtWidgets.QMainWindow):
except AttributeError:
pass
log.verbose(f'Window title is "{appName}"')
- self.window.setWindowTitle(appName)
+ self.setWindowTitle(appName)
@QtCore.pyqtSlot(int, dict)
def updateComponentTitle(self, pos, presetStore=False):
@@ -492,12 +503,12 @@ class MainWindow(QtWidgets.QMainWindow):
'Setting %s #%s\'s title: %s',
name, pos, title
)
- self.window.listWidget_componentList.item(pos).setText(title)
+ self.listWidget_componentList.item(pos).setText(title)
def updateCodecs(self):
- containerWidget = self.window.comboBox_videoContainer
- vCodecWidget = self.window.comboBox_videoCodec
- aCodecWidget = self.window.comboBox_audioCodec
+ containerWidget = self.comboBox_videoContainer
+ vCodecWidget = self.comboBox_videoCodec
+ aCodecWidget = self.comboBox_audioCodec
index = containerWidget.currentIndex()
name = containerWidget.itemText(index)
self.settings.setValue('outputContainer', name)
@@ -514,10 +525,10 @@ class MainWindow(QtWidgets.QMainWindow):
def updateCodecSettings(self):
'''Updates settings.ini to match encoder option widgets'''
- vCodecWidget = self.window.comboBox_videoCodec
- vBitrateWidget = self.window.spinBox_vBitrate
- aBitrateWidget = self.window.spinBox_aBitrate
- aCodecWidget = self.window.comboBox_audioCodec
+ vCodecWidget = self.comboBox_videoCodec
+ vBitrateWidget = self.spinBox_vBitrate
+ aBitrateWidget = self.spinBox_aBitrate
+ aCodecWidget = self.comboBox_audioCodec
currentVideoCodec = vCodecWidget.currentIndex()
currentVideoCodec = vCodecWidget.itemText(currentVideoCodec)
currentVideoBitrate = vBitrateWidget.value()
@@ -535,7 +546,7 @@ class MainWindow(QtWidgets.QMainWindow):
if os.path.exists(self.autosavePath):
os.remove(self.autosavePath)
elif force or time.time() - self.lastAutosave >= self.autosaveCooldown:
- self.core.createProjectFile(self.autosavePath, self.window)
+ self.core.createProjectFile(self.autosavePath, self)
self.lastAutosave = time.time()
if len(self.autosaveTimes) >= 5:
# Do some math to reduce autosave spam. This gives a smooth
@@ -588,25 +599,25 @@ class MainWindow(QtWidgets.QMainWindow):
inputDir = self.settings.value("inputDir", os.path.expanduser("~"))
fileName, _ = QtWidgets.QFileDialog.getOpenFileName(
- self.window, "Open Audio File",
+ self, "Open Audio File",
inputDir, "Audio Files (%s)" % " ".join(Core.audioFormats))
if fileName:
self.settings.setValue("inputDir", os.path.dirname(fileName))
- self.window.lineEdit_audioFile.setText(fileName)
+ self.lineEdit_audioFile.setText(fileName)
def openOutputFileDialog(self):
outputDir = self.settings.value("outputDir", os.path.expanduser("~"))
fileName, _ = QtWidgets.QFileDialog.getSaveFileName(
- self.window, "Set Output Video File",
+ self, "Set Output Video File",
outputDir,
"Video Files (%s);; All Files (*)" % " ".join(
Core.videoFormats))
if fileName:
self.settings.setValue("outputDir", os.path.dirname(fileName))
- self.window.lineEdit_outputFile.setText(fileName)
+ self.lineEdit_outputFile.setText(fileName)
def stopVideo(self):
log.info('Export cancelled')
@@ -615,8 +626,8 @@ class MainWindow(QtWidgets.QMainWindow):
def createAudioVisualisation(self):
# create output video if mandatory settings are filled in
- audioFile = self.window.lineEdit_audioFile.text()
- outputPath = self.window.lineEdit_outputFile.text()
+ audioFile = self.lineEdit_audioFile.text()
+ outputPath = self.lineEdit_outputFile.text()
if audioFile and outputPath and self.core.selectedComponents:
if not os.path.dirname(outputPath):
@@ -670,62 +681,62 @@ class MainWindow(QtWidgets.QMainWindow):
def changeEncodingStatus(self, status):
self.encoding = status
if status:
- self.window.pushButton_createVideo.setEnabled(False)
- self.window.pushButton_Cancel.setEnabled(True)
- self.window.comboBox_resolution.setEnabled(False)
- self.window.stackedWidget.setEnabled(False)
- self.window.tab_encoderSettings.setEnabled(False)
- self.window.label_audioFile.setEnabled(False)
- self.window.toolButton_selectAudioFile.setEnabled(False)
- self.window.label_outputFile.setEnabled(False)
- self.window.toolButton_selectOutputFile.setEnabled(False)
- self.window.lineEdit_audioFile.setEnabled(False)
- self.window.lineEdit_outputFile.setEnabled(False)
- self.window.pushButton_addComponent.setEnabled(False)
- self.window.pushButton_removeComponent.setEnabled(False)
- self.window.pushButton_listMoveDown.setEnabled(False)
- self.window.pushButton_listMoveUp.setEnabled(False)
- self.window.menuButton_newProject.setEnabled(False)
- self.window.menuButton_openProject.setEnabled(False)
+ self.pushButton_createVideo.setEnabled(False)
+ self.pushButton_Cancel.setEnabled(True)
+ self.comboBox_resolution.setEnabled(False)
+ self.stackedWidget.setEnabled(False)
+ self.tab_encoderSettings.setEnabled(False)
+ self.label_audioFile.setEnabled(False)
+ self.toolButton_selectAudioFile.setEnabled(False)
+ self.label_outputFile.setEnabled(False)
+ self.toolButton_selectOutputFile.setEnabled(False)
+ self.lineEdit_audioFile.setEnabled(False)
+ self.lineEdit_outputFile.setEnabled(False)
+ self.pushButton_addComponent.setEnabled(False)
+ self.pushButton_removeComponent.setEnabled(False)
+ self.pushButton_listMoveDown.setEnabled(False)
+ self.pushButton_listMoveUp.setEnabled(False)
+ self.menuButton_newProject.setEnabled(False)
+ self.menuButton_openProject.setEnabled(False)
if sys.platform == 'darwin':
- self.window.progressLabel.setHidden(False)
+ self.progressLabel.setHidden(False)
else:
- self.window.listWidget_componentList.setEnabled(False)
+ self.listWidget_componentList.setEnabled(False)
else:
- self.window.pushButton_createVideo.setEnabled(True)
- self.window.pushButton_Cancel.setEnabled(False)
- self.window.comboBox_resolution.setEnabled(True)
- self.window.stackedWidget.setEnabled(True)
- self.window.tab_encoderSettings.setEnabled(True)
- self.window.label_audioFile.setEnabled(True)
- self.window.toolButton_selectAudioFile.setEnabled(True)
- self.window.lineEdit_audioFile.setEnabled(True)
- self.window.label_outputFile.setEnabled(True)
- self.window.toolButton_selectOutputFile.setEnabled(True)
- self.window.lineEdit_outputFile.setEnabled(True)
- self.window.pushButton_addComponent.setEnabled(True)
- self.window.pushButton_removeComponent.setEnabled(True)
- self.window.pushButton_listMoveDown.setEnabled(True)
- self.window.pushButton_listMoveUp.setEnabled(True)
- self.window.menuButton_newProject.setEnabled(True)
- self.window.menuButton_openProject.setEnabled(True)
- self.window.listWidget_componentList.setEnabled(True)
- self.window.progressLabel.setHidden(True)
+ self.pushButton_createVideo.setEnabled(True)
+ self.pushButton_Cancel.setEnabled(False)
+ self.comboBox_resolution.setEnabled(True)
+ self.stackedWidget.setEnabled(True)
+ self.tab_encoderSettings.setEnabled(True)
+ self.label_audioFile.setEnabled(True)
+ self.toolButton_selectAudioFile.setEnabled(True)
+ self.lineEdit_audioFile.setEnabled(True)
+ self.label_outputFile.setEnabled(True)
+ self.toolButton_selectOutputFile.setEnabled(True)
+ self.lineEdit_outputFile.setEnabled(True)
+ self.pushButton_addComponent.setEnabled(True)
+ self.pushButton_removeComponent.setEnabled(True)
+ self.pushButton_listMoveDown.setEnabled(True)
+ self.pushButton_listMoveUp.setEnabled(True)
+ self.menuButton_newProject.setEnabled(True)
+ self.menuButton_openProject.setEnabled(True)
+ self.listWidget_componentList.setEnabled(True)
+ self.progressLabel.setHidden(True)
self.drawPreview(True)
@QtCore.pyqtSlot(int)
def progressBarUpdated(self, value):
- self.window.progressBar_createVideo.setValue(value)
+ self.progressBar_createVideo.setValue(value)
@QtCore.pyqtSlot(str)
def progressBarSetText(self, value):
if sys.platform == 'darwin':
- self.window.progressLabel.setText(value)
+ self.progressLabel.setText(value)
else:
- self.window.progressBar_createVideo.setFormat(value)
+ self.progressBar_createVideo.setFormat(value)
def updateResolution(self):
- resIndex = int(self.window.comboBox_resolution.currentIndex())
+ resIndex = int(self.comboBox_resolution.currentIndex())
res = Core.resolutions[resIndex].split('x')
changed = res[0] != self.settings.value("outputWidth")
self.settings.setValue('outputWidth', res[0])
@@ -750,7 +761,7 @@ class MainWindow(QtWidgets.QMainWindow):
self.previewWindow.changePixmap(image)
def showUndoStack(self):
- dialog = QtWidgets.QDialog(self.window)
+ dialog = QtWidgets.QDialog(self)
undoView = QtWidgets.QUndoView(self.undoStack)
layout = QtWidgets.QVBoxLayout()
layout.addWidget(undoView)
@@ -761,8 +772,8 @@ class MainWindow(QtWidgets.QMainWindow):
from textwrap import wrap
from ..toolkit.ffmpeg import createFfmpegCommand
command = createFfmpegCommand(
- self.window.lineEdit_audioFile.text(),
- self.window.lineEdit_outputFile.text(),
+ self.lineEdit_audioFile.text(),
+ self.lineEdit_outputFile.text(),
self.core.selectedComponents
)
command = " ".join(command)
@@ -779,8 +790,8 @@ class MainWindow(QtWidgets.QMainWindow):
def insertComponent(self, index):
'''Triggered by Core to finish initializing a new component.'''
- componentList = self.window.listWidget_componentList
- stackedWidget = self.window.stackedWidget
+ componentList = self.listWidget_componentList
+ stackedWidget = self.stackedWidget
componentList.insertItem(
index,
@@ -798,15 +809,15 @@ class MainWindow(QtWidgets.QMainWindow):
return index
def removeComponent(self):
- componentList = self.window.listWidget_componentList
+ componentList = self.listWidget_componentList
selected = componentList.selectedItems()
if selected:
action = RemoveComponent(self, selected)
self.undoStack.push(action)
def _removeComponent(self, index):
- stackedWidget = self.window.stackedWidget
- componentList = self.window.listWidget_componentList
+ stackedWidget = self.stackedWidget
+ componentList = self.listWidget_componentList
stackedWidget.removeWidget(self.pages[index])
componentList.takeItem(index)
self.core.removeComponent(index)
@@ -817,7 +828,7 @@ class MainWindow(QtWidgets.QMainWindow):
@disableWhenEncoding
def moveComponent(self, change):
'''Moves a component relatively from its current position'''
- componentList = self.window.listWidget_componentList
+ componentList = self.listWidget_componentList
tag = change
if change == 'top':
change = -componentList.currentRow()
@@ -837,7 +848,7 @@ class MainWindow(QtWidgets.QMainWindow):
Given a QPos, returns the component index under the mouse cursor
or -1 if no component is there.
'''
- componentList = self.window.listWidget_componentList
+ componentList = self.listWidget_componentList
modelIndexes = [
componentList.model().index(i)
@@ -859,7 +870,7 @@ class MainWindow(QtWidgets.QMainWindow):
@disableWhenEncoding
def dragComponent(self, event):
'''Used as Qt drop event for the component listwidget'''
- componentList = self.window.listWidget_componentList
+ componentList = self.listWidget_componentList
mousePos = self.getComponentListMousePos(event.pos())
if mousePos > -1:
change = (componentList.currentRow() - mousePos) * -1
@@ -868,25 +879,25 @@ class MainWindow(QtWidgets.QMainWindow):
self.moveComponent(change)
def changeComponentWidget(self):
- selected = self.window.listWidget_componentList.selectedItems()
+ selected = self.listWidget_componentList.selectedItems()
if selected:
- index = self.window.listWidget_componentList.row(selected[0])
- self.window.stackedWidget.setCurrentIndex(index)
+ index = self.listWidget_componentList.row(selected[0])
+ self.stackedWidget.setCurrentIndex(index)
def openPresetManager(self):
'''Preset manager for importing, exporting, renaming, deleting'''
- self.presetManager.show()
+ self.presetManager.show_()
def clear(self):
'''Get a blank slate'''
self.core.clearComponents()
- self.window.listWidget_componentList.clear()
+ self.listWidget_componentList.clear()
for widget in self.pages:
- self.window.stackedWidget.removeWidget(widget)
+ self.stackedWidget.removeWidget(widget)
self.pages = []
for field in (
- self.window.lineEdit_audioFile,
- self.window.lineEdit_outputFile
+ self.lineEdit_audioFile,
+ self.lineEdit_outputFile
):
with blockSignals(field):
field.setText('')
@@ -906,7 +917,7 @@ class MainWindow(QtWidgets.QMainWindow):
def saveCurrentProject(self):
if self.currentProject:
- self.core.createProjectFile(self.currentProject, self.window)
+ self.core.createProjectFile(self.currentProject, self)
try:
os.remove(self.autosavePath)
except FileNotFoundError:
@@ -933,7 +944,7 @@ class MainWindow(QtWidgets.QMainWindow):
def openSaveProjectDialog(self):
filename, _ = QtWidgets.QFileDialog.getSaveFileName(
- self.window, "Create Project File",
+ self, "Create Project File",
self.settings.value("projectDir"),
"Project Files (*.avp)")
if not filename:
@@ -943,13 +954,13 @@ class MainWindow(QtWidgets.QMainWindow):
self.settings.setValue("projectDir", os.path.dirname(filename))
self.settings.setValue("currentProject", filename)
self.currentProject = filename
- self.core.createProjectFile(filename, self.window)
+ self.core.createProjectFile(filename, self)
self.updateWindowTitle()
@disableWhenEncoding
def openOpenProjectDialog(self):
filename, _ = QtWidgets.QFileDialog.getOpenFileName(
- self.window, "Open Project File",
+ self, "Open Project File",
self.settings.value("projectDir"),
"Project Files (*.avp)")
self.openProject(filename)
@@ -973,7 +984,7 @@ class MainWindow(QtWidgets.QMainWindow):
self.updateWindowTitle()
def showMessage(self, **kwargs):
- parent = kwargs['parent'] if 'parent' in kwargs else self.window
+ parent = kwargs['parent'] if 'parent' in kwargs else self
msg = QtWidgets.QMessageBox(parent)
msg.setModal(True)
msg.setText(kwargs['msg'])
@@ -995,8 +1006,8 @@ class MainWindow(QtWidgets.QMainWindow):
@disableWhenEncoding
def componentContextMenu(self, QPos):
'''Appears when right-clicking the component list'''
- componentList = self.window.listWidget_componentList
- self.menu = QMenu()
+ componentList = self.listWidget_componentList
+ self.menu = QtWidgets.QMenu()
parentPosition = componentList.mapToGlobal(QtCore.QPoint(0, 0))
index = self.getComponentListMousePos(QPos)
@@ -1013,7 +1024,7 @@ class MainWindow(QtWidgets.QMainWindow):
presets = self.presetManager.presets[
str(self.core.selectedComponents[index])
]
- self.presetSubmenu = QMenu("Open Preset")
+ self.presetSubmenu = QtWidgets.QMenu("Open Preset")
self.menu.addMenu(self.presetSubmenu)
for version, presetName in presets:
@@ -1033,7 +1044,7 @@ class MainWindow(QtWidgets.QMainWindow):
self.menu.addSeparator()
# "Add Component" submenu
- self.submenu = QMenu("Add")
+ self.submenu = QtWidgets.QMenu("Add")
self.menu.addMenu(self.submenu)
insertCompAtTop = self.settings.value("pref_insertCompAtTop")
for i, comp in enumerate(self.core.modules):
diff --git a/src/gui/presetmanager.py b/src/gui/presetmanager.py
index 1e47a7f..9cf95b4 100644
--- a/src/gui/presetmanager.py
+++ b/src/gui/presetmanager.py
@@ -2,7 +2,7 @@
Preset manager object handles all interactions with presets, including
the context menu accessed from MainWindow.
'''
-from PyQt5 import QtCore, QtWidgets
+from PyQt5 import QtCore, QtWidgets, uic
import string
import os
import logging
@@ -16,8 +16,10 @@ log = logging.getLogger('AVP.Gui.PresetManager')
class PresetManager(QtWidgets.QDialog):
- def __init__(self, window, parent):
- super().__init__(parent.window)
+ def __init__(self, parent):
+ super().__init__()
+ uic.loadUi(
+ os.path.join(Core.wd, 'gui', 'presetmanager.ui'), self)
self.parent = parent
self.core = parent.core
self.settings = parent.settings
@@ -32,32 +34,31 @@ class PresetManager(QtWidgets.QDialog):
# window
self.lastFilter = '*'
self.presetRows = [] # list of (comp, vers, name) tuples
- self.window = window
- self.window.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)
+ self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)
# connect button signals
- self.window.pushButton_delete.clicked.connect(
+ self.pushButton_delete.clicked.connect(
self.openDeletePresetDialog
)
- self.window.pushButton_rename.clicked.connect(
+ self.pushButton_rename.clicked.connect(
self.openRenamePresetDialog
)
- self.window.pushButton_import.clicked.connect(
+ self.pushButton_import.clicked.connect(
self.openImportDialog
)
- self.window.pushButton_export.clicked.connect(
+ self.pushButton_export.clicked.connect(
self.openExportDialog
)
- self.window.pushButton_close.clicked.connect(
- self.window.close
+ self.pushButton_close.clicked.connect(
+ self.close
)
# create filter box and preset list
self.drawFilterList()
- self.window.comboBox_filter.currentIndexChanged.connect(
+ self.comboBox_filter.currentIndexChanged.connect(
lambda: self.drawPresetList(
- self.window.comboBox_filter.currentText(),
- self.window.lineEdit_search.text()
+ self.comboBox_filter.currentText(),
+ self.lineEdit_search.text()
)
)
@@ -65,23 +66,24 @@ class PresetManager(QtWidgets.QDialog):
self.autocomplete = QtCore.QStringListModel()
completer = QtWidgets.QCompleter()
completer.setModel(self.autocomplete)
- self.window.lineEdit_search.setCompleter(completer)
- self.window.lineEdit_search.textChanged.connect(
+ self.lineEdit_search.setCompleter(completer)
+ self.lineEdit_search.textChanged.connect(
lambda: self.drawPresetList(
- self.window.comboBox_filter.currentText(),
- self.window.lineEdit_search.text()
+ self.comboBox_filter.currentText(),
+ self.lineEdit_search.text()
)
)
self.drawPresetList('*')
- def show(self):
+ def show_(self):
'''Open a new preset manager window from the mainwindow'''
self.findPresets()
self.drawFilterList()
self.drawPresetList('*')
- self.window.show()
+ self.show()
def findPresets(self):
+ log.debug("Searching %s for presets", self.presetDir)
parseList = []
for dirpath, dirnames, filenames in os.walk(self.presetDir):
# anything without a subdirectory must be a preset folder
@@ -106,7 +108,7 @@ class PresetManager(QtWidgets.QDialog):
}
def drawPresetList(self, compFilter=None, presetFilter=''):
- self.window.listWidget_presets.clear()
+ self.listWidget_presets.clear()
if compFilter:
self.lastFilter = str(compFilter)
else:
@@ -118,7 +120,7 @@ class PresetManager(QtWidgets.QDialog):
continue
for vers, preset in presets:
if not presetFilter or presetFilter in preset:
- self.window.listWidget_presets.addItem(
+ self.listWidget_presets.addItem(
'%s: %s' % (component, preset)
)
self.presetRows.append((component, vers, preset))
@@ -127,22 +129,21 @@ class PresetManager(QtWidgets.QDialog):
self.autocomplete.setStringList(presetNames)
def drawFilterList(self):
- self.window.comboBox_filter.clear()
- self.window.comboBox_filter.addItem('*')
+ self.comboBox_filter.clear()
+ self.comboBox_filter.addItem('*')
for component in self.presets:
- self.window.comboBox_filter.addItem(component)
+ self.comboBox_filter.addItem(component)
def clearPreset(self, compI=None):
'''Functions on mainwindow level from the context menu'''
- compI = self.parent.window.listWidget_componentList.currentRow()
+ compI = self.parent.listWidget_componentList.currentRow()
action = ClearPreset(self.parent, compI)
self.parent.undoStack.push(action)
def openSavePresetDialog(self):
'''Functions on mainwindow level from the context menu'''
- window = self.parent.window
selectedComponents = self.core.selectedComponents
- componentList = self.parent.window.listWidget_componentList
+ componentList = self.parent.listWidget_componentList
if componentList.currentRow() == -1:
return
@@ -150,7 +151,7 @@ class PresetManager(QtWidgets.QDialog):
index = componentList.currentRow()
currentPreset = selectedComponents[index].currentPreset
newName, OK = QtWidgets.QInputDialog.getText(
- self.parent.window,
+ self.parent,
'Audio Visualizer',
'New Preset Name:',
QtWidgets.QLineEdit.Normal,
@@ -158,7 +159,7 @@ class PresetManager(QtWidgets.QDialog):
)
if OK:
if badName(newName):
- self.warnMessage(self.parent.window)
+ self.warnMessage(self.parent)
continue
if newName:
if index != -1:
@@ -170,7 +171,7 @@ class PresetManager(QtWidgets.QDialog):
vers = selectedComponents[index].version
self.createNewPreset(
componentName, vers, newName,
- saveValueStore, window=self.parent.window)
+ saveValueStore, window=self.parent)
self.findPresets()
self.drawPresetList()
self.openPreset(newName, index)
@@ -185,8 +186,7 @@ class PresetManager(QtWidgets.QDialog):
def presetExists(self, path, **kwargs):
if os.path.exists(path):
- window = self.window \
- if 'window' not in kwargs else kwargs['window']
+ window = kwargs.get("window", self)
ch = self.parent.showMessage(
msg="%s already exists! Overwrite it?" %
os.path.basename(path),
@@ -200,7 +200,7 @@ class PresetManager(QtWidgets.QDialog):
return False
def openPreset(self, presetName, compPos=None):
- componentList = self.parent.window.listWidget_componentList
+ componentList = self.parent.listWidget_componentList
index = compPos if compPos is not None else componentList.currentRow()
if index == -1:
return
@@ -228,7 +228,7 @@ class PresetManager(QtWidgets.QDialog):
msg='Really delete %s?' % name,
showCancel=True,
icon='Warning',
- parent=self.window
+ parent=self
)
if not ch:
return
@@ -242,15 +242,15 @@ class PresetManager(QtWidgets.QDialog):
self.parent.showMessage(
msg='Preset names must contain only letters, '
'numbers, and spaces.',
- parent=window if window else self.window)
+ parent=window if window else self)
def getPresetRow(self):
- row = self.window.listWidget_presets.currentRow()
+ row = self.listWidget_presets.currentRow()
if row > -1:
return row
# check if component selected in MainWindow has preset loaded
- componentList = self.parent.window.listWidget_componentList
+ componentList = self.parent.listWidget_componentList
compIndex = componentList.currentRow()
if compIndex == -1:
return compIndex
@@ -273,14 +273,14 @@ class PresetManager(QtWidgets.QDialog):
return index
def openRenamePresetDialog(self):
- presetList = self.window.listWidget_presets
+ presetList = self.listWidget_presets
index = self.getPresetRow()
if index == -1:
return
while True:
newName, OK = QtWidgets.QInputDialog.getText(
- self.window,
+ self,
'Preset Manager',
'Rename Preset:',
QtWidgets.QLineEdit.Normal,
@@ -319,7 +319,7 @@ class PresetManager(QtWidgets.QDialog):
def openImportDialog(self):
filename, _ = QtWidgets.QFileDialog.getOpenFileName(
- self.window, "Import Preset File",
+ self, "Import Preset File",
self.settings.value("presetDir"),
"Preset Files (*.avl)")
if filename:
@@ -345,7 +345,7 @@ class PresetManager(QtWidgets.QDialog):
if index == -1:
return
filename, _ = QtWidgets.QFileDialog.getSaveFileName(
- self.window, "Export Preset",
+ self, "Export Preset",
self.settings.value("presetDir"),
"Preset Files (*.avl)")
if filename:
@@ -353,9 +353,9 @@ class PresetManager(QtWidgets.QDialog):
if not self.core.exportPreset(filename, comp, vers, name):
self.parent.showMessage(
msg='Couldn\'t export %s.' % filename,
- parent=self.window
+ parent=self
)
self.settings.setValue("presetDir", os.path.dirname(filename))
def clearPresetListSelection(self):
- self.window.listWidget_presets.setCurrentRow(-1)
+ self.listWidget_presets.setCurrentRow(-1)
diff --git a/src/gui/preview_win.py b/src/gui/preview_win.py
index 426ff66..d910456 100644
--- a/src/gui/preview_win.py
+++ b/src/gui/preview_win.py
@@ -37,7 +37,7 @@ class PreviewWindow(QtWidgets.QLabel):
if self.parent.encoding:
return
- i = self.parent.window.listWidget_componentList.currentRow()
+ i = self.parent.listWidget_componentList.currentRow()
if i >= 0:
component = self.parent.core.selectedComponents[i]
if not hasattr(component, 'previewClickEvent'):
diff --git a/src/main.py b/src/main.py
index ec4b8bc..709e5e7 100644
--- a/src/main.py
+++ b/src/main.py
@@ -42,21 +42,9 @@ def main():
if mode == 'GUI':
from .gui.mainwindow import MainWindow
- window = uic.loadUi(os.path.join(wd, "gui", "mainwindow.ui"))
- desc = QtWidgets.QDesktopWidget()
- dpi = desc.physicalDpiX()
- log.info("Detected screen DPI: %s", dpi)
-
- window.resize(
- int(window.width() *
- (dpi / 96)),
- int(window.height() *
- (dpi / 96))
- )
-
- main = MainWindow(window, proj)
- log.debug("Finished creating main window")
- window.raise_()
+ mainWindow = MainWindow(proj)
+ log.debug("Finished creating MainWindow")
+ mainWindow.raise_()
sys.exit(app.exec_())