aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core.py8
-rw-r--r--main.py10
-rw-r--r--mainwindow.py45
-rw-r--r--preview_thread.py2
-rw-r--r--setup.py63
-rw-r--r--video_thread.py2
6 files changed, 97 insertions, 33 deletions
diff --git a/core.py b/core.py
index ba71b82..de6ed99 100644
--- a/core.py
+++ b/core.py
@@ -22,7 +22,13 @@ class Core():
self.dataDir = QDesktopServices.storageLocation(
QDesktopServices.DataLocation)
self.presetDir = os.path.join(self.dataDir, 'presets')
- self.wd = os.path.dirname(os.path.realpath(__file__))
+ if getattr(sys, 'frozen', False):
+ # frozen
+ self.wd = os.path.dirname(sys.executable)
+ else:
+ # unfrozen
+ self.wd = os.path.dirname(os.path.realpath(__file__))
+
self.loadEncoderOptions()
self.videoFormats = Core.appendUppercase([
'*.mp4',
diff --git a/main.py b/main.py
index 3fd4234..106bd29 100644
--- a/main.py
+++ b/main.py
@@ -63,8 +63,14 @@ if __name__ == "__main__":
import atexit
import signal
- window = uic.loadUi(os.path.join(
- os.path.dirname(os.path.realpath(__file__)), "mainwindow.ui"))
+ if getattr(sys, 'frozen', False):
+ # frozen
+ wd = os.path.dirname(sys.executable)
+ else:
+ # unfrozen
+ wd = os.path.dirname(os.path.realpath(__file__))
+
+ window = uic.loadUi(os.path.join(wd, "mainwindow.ui"))
# window.adjustSize()
desc = QtGui.QDesktopWidget()
dpi = desc.physicalDpiX()
diff --git a/mainwindow.py b/mainwindow.py
index 6023831..f3d45e6 100644
--- a/mainwindow.py
+++ b/mainwindow.py
@@ -1,7 +1,7 @@
from queue import Queue
from PyQt4 import QtCore, QtGui, uic
from PyQt4.QtCore import QSettings, Qt
-from PyQt4.QtGui import QMenu
+from PyQt4.QtGui import QMenu, QShortcut
import sys
import os
import signal
@@ -39,14 +39,14 @@ class PreviewWindow(QtGui.QLabel):
self.repaint()
-class MainWindow(QtCore.QObject):
+class MainWindow(QtGui.QMainWindow):
newTask = QtCore.pyqtSignal(list)
processTask = QtCore.pyqtSignal()
videoTask = QtCore.pyqtSignal(str, str, list)
def __init__(self, window, project):
- QtCore.QObject.__init__(self)
+ QtGui.QMainWindow.__init__(self)
# print('main thread id: {}'.format(QtCore.QThread.currentThreadId()))
self.window = window
@@ -63,9 +63,7 @@ class MainWindow(QtCore.QObject):
LoadDefaultSettings(self)
self.presetManager = PresetManager(
uic.loadUi(
- os.path.join(os.path.dirname(os.path.realpath(__file__)),
- 'presetmanager.ui')),
- self)
+ os.path.join(self.core.wd, 'presetmanager.ui')), self)
if not os.path.exists(self.dataDir):
os.makedirs(self.dataDir)
@@ -143,7 +141,7 @@ class MainWindow(QtCore.QObject):
window.spinBox_aBitrate.valueChanged.connect(self.updateCodecSettings)
self.previewWindow = PreviewWindow(self, os.path.join(
- os.path.dirname(os.path.realpath(__file__)), "background.png"))
+ self.core.wd, "background.png"))
window.verticalLayout_previewWrapper.addWidget(self.previewWindow)
# Make component buttons
@@ -242,6 +240,29 @@ class MainWindow(QtCore.QObject):
self.openProject(self.currentProject, prompt=False)
self.drawPreview(True)
+ # Setup Hotkeys
+ QtGui.QShortcut("Ctrl+S", self.window, self.saveCurrentProject)
+ QtGui.QShortcut("Ctrl+A", self.window, self.openSaveProjectDialog)
+ QtGui.QShortcut("Ctrl+O", self.window, self.openOpenProjectDialog)
+ QtGui.QShortcut("Ctrl+N", self.window, self.createNewProject)
+
+ QtGui.QShortcut("Ctrl+T", self.window, activated=lambda:
+ self.window.pushButton_addComponent.click())
+ QtGui.QShortcut("Ctrl+Space", self.window, activated=lambda:
+ self.window.listWidget_componentList.setFocus())
+ QtGui.QShortcut("Ctrl+Shift+S", self.window,
+ self.presetManager.openSavePresetDialog)
+ QtGui.QShortcut("Ctrl+Shift+C", self.window,
+ self.presetManager.clearPreset)
+
+ QtGui.QShortcut("Ctrl+Up", self.window,
+ activated=lambda: self.moveComponent(-1))
+ QtGui.QShortcut("Ctrl+Down", self.window,
+ activated=lambda: self.moveComponent(1))
+ QtGui.QShortcut("Ctrl+Home", self.window, self.moveComponentTop)
+ QtGui.QShortcut("Ctrl+End", self.window, self.moveComponentBottom)
+ QtGui.QShortcut("Ctrl+r", self.window, self.removeComponent)
+
def cleanUp(self):
self.timer.stop()
self.previewThread.quit()
@@ -506,6 +527,16 @@ class MainWindow(QtCore.QObject):
stackedWidget.setCurrentIndex(newRow)
self.drawPreview()
+ def moveComponentTop(self):
+ componentList = self.window.listWidget_componentList
+ row = -componentList.currentRow()
+ self.moveComponent(row)
+
+ def moveComponentBottom(self):
+ componentList = self.window.listWidget_componentList
+ row = len(componentList)-1
+ self.moveComponent(row)
+
def dragComponent(self, event):
'''Drop event for the component listwidget'''
componentList = self.window.listWidget_componentList
diff --git a/preview_thread.py b/preview_thread.py
index e3e8279..eabf715 100644
--- a/preview_thread.py
+++ b/preview_thread.py
@@ -23,7 +23,7 @@ class Worker(QtCore.QObject):
self.stackedWidget = parent.window.stackedWidget
self.background = Image.new("RGBA", (1920, 1080), (0, 0, 0, 0))
self.background.paste(Image.open(os.path.join(
- os.path.dirname(os.path.realpath(__file__)), "background.png")))
+ self.core.wd, "background.png")))
@pyqtSlot(str, list)
def createPreviewImage(self, components):
diff --git a/setup.py b/setup.py
index 0d9cbc4..48034dc 100644
--- a/setup.py
+++ b/setup.py
@@ -1,30 +1,51 @@
from cx_Freeze import setup, Executable
+import sys
# Dependencies are automatically detected, but it might need
# fine tuning.
-buildOptions = dict(packages = [], excludes = [
- "apport",
- "apt",
- "ctypes",
- "curses",
- "distutils",
- "email",
- "html",
- "http",
- "json",
- "xmlrpc",
- "nose"
- ], include_files = ["main.ui"])
-import sys
-base = 'Win32GUI' if sys.platform=='win32' else None
+buildOptions = dict(
+ packages=[],
+ excludes=[
+ "apport",
+ "apt",
+ "curses",
+ "distutils",
+ "email",
+ "html",
+ "http",
+ "xmlrpc",
+ "nose"
+ ],
+ include_files=[
+ "mainwindow.ui",
+ "presetmanager.ui",
+ "background.png",
+ "encoder-options.json",
+ "components/"
+ ],
+ includes=[
+ 'numpy.core._methods',
+ 'numpy.lib.format'
+ ]
+)
+
+
+base = 'Win32GUI' if sys.platform == 'win32' else None
executables = [
- Executable('main.py', base=base, targetName = 'audio-visualizer-python')
+ Executable(
+ 'main.py',
+ base=base,
+ targetName='audio-visualizer-python'
+ )
]
-setup(name='audio-visualizer-python',
- version = '1.0',
- description = 'a little GUI tool to render visualization videos of audio files',
- options = dict(build_exe = buildOptions),
- executables = executables)
+
+setup(
+ name='audio-visualizer-python',
+ version='1.0',
+ description='GUI tool to render visualization videos of audio files',
+ options=dict(build_exe=buildOptions),
+ executables=executables
+)
diff --git a/video_thread.py b/video_thread.py
index e6c6531..265feee 100644
--- a/video_thread.py
+++ b/video_thread.py
@@ -68,7 +68,7 @@ class Worker(QtCore.QObject):
def previewDispatch(self):
background = Image.new("RGBA", (1920, 1080), (0, 0, 0, 0))
background.paste(Image.open(os.path.join(
- os.path.dirname(os.path.realpath(__file__)), "background.png")))
+ self.core.wd, "background.png")))
background = background.resize((self.width, self.height))
while not self.stopped: