aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortassaron2022-04-29 21:15:17 -0400
committertassaron2022-04-29 21:15:17 -0400
commitc2c3f0aa5adf3127b84b3d50da9e1aa655c8a824 (patch)
treeaa4593c53378e376e849799ee7cea23707aff4ec
parent6f7b3b5f7cb72d09b2b86bd58b2e526515739590 (diff)
remove extra window properties from window objects
instead of windows with properties which are windows, windows now have the UI added directly to them using an argument of `uic.loadUi` Also, DPI scaling moved to MainWindow __init__
-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_())