Merge pull request #34 from djfun/feature-newgui-qt5

Update to Qt5
This commit is contained in:
Brianna 2017-06-24 20:02:14 -04:00 committed by GitHub
commit 1bb67d1513
25 changed files with 198 additions and 165 deletions

51
freeze.py Normal file
View File

@ -0,0 +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",
"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'
)
]
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
)

View File

@ -1,51 +1,19 @@
from cx_Freeze import setup, Executable +from setuptools import setup, find_packages
import sys
# Dependencies are automatically detected, but it might need -# Dependencies are automatically detected, but it might need +setup(name='audio_visualizer_python',
# fine tuning. -# fine tuning. + version='1.0',
-buildOptions = dict(packages = [], excludes = [ + description='a little GUI tool to render visualization \
buildOptions = dict( - "apport", + videos of audio files',
packages=[], - "apt", + license='MIT',
excludes=[ - "ctypes", + url='https://github.com/djfun/audio-visualizer-python',
"apport", - "curses", + packages=find_packages(),
"apt", - "distutils", + package_data={
"curses", - "email", + 'src': ['*'],
"distutils", - "html", + },
"email", - "http", + install_requires=['pillow-simd', 'numpy', ''],
"html", - "json", + entry_points={
"http", - "xmlrpc", + 'gui_scripts': [
"xmlrpc", - "nose" + 'audio-visualizer-python = avpython.main:main'
"nose" - ], include_files = ["main.ui"]) + ]
], - + }
include_files=[ -import sys + )
"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'
)
]
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
)

View File

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 44 KiB

View File

@ -22,9 +22,9 @@ class Command(QtCore.QObject):
self.parser = argparse.ArgumentParser( self.parser = argparse.ArgumentParser(
description='Create a visualization for an audio file', description='Create a visualization for an audio file',
epilog='EXAMPLE COMMAND: main.py myvideotemplate.avp ' epilog='EXAMPLE COMMAND: main.py myvideotemplate.avp '
'-i ~/Music/song.mp3 -o ~/video.mp4 ' '-i ~/Music/song.mp3 -o ~/video.mp4 '
'-c 0 image path=~/Pictures/thisWeeksPicture.jpg ' '-c 0 image path=~/Pictures/thisWeeksPicture.jpg '
'-c 1 video "preset=My Logo" -c 2 vis layout=classic') '-c 1 video "preset=My Logo" -c 2 vis layout=classic')
self.parser.add_argument( self.parser.add_argument(
'-i', '--input', metavar='SOUND', '-i', '--input', metavar='SOUND',
help='input audio file') help='input audio file')
@ -113,10 +113,11 @@ class Command(QtCore.QObject):
if name.capitalize() in compName: if name.capitalize() in compName:
return compName return compName
compFileNames = [ \ compFileNames = [
os.path.splitext(os.path.basename( os.path.splitext(
mod.__file__))[0] \ os.path.basename(mod.__file__)
for mod in self.core.modules \ )[0]
for mod in self.core.modules
] ]
for i, compFileName in enumerate(compFileNames): for i, compFileName in enumerate(compFileNames):
if name.lower() in compFileName: if name.lower() in compFileName:

View File

@ -1,4 +1,4 @@
from PyQt4 import QtGui, QtCore from PyQt5 import QtGui, QtCore, QtWidgets
from PIL import Image from PIL import Image
import os import os
@ -89,8 +89,8 @@ class Component(QtCore.QObject):
and return this as an RGB string and QPushButton stylesheet. and return this as an RGB string and QPushButton stylesheet.
In a subclass apply stylesheet to any color selection widgets In a subclass apply stylesheet to any color selection widgets
''' '''
dialog = QtGui.QColorDialog() dialog = QtWidgets.QColorDialog()
dialog.setOption(QtGui.QColorDialog.ShowAlphaChannel, True) dialog.setOption(QtWidgets.QColorDialog.ShowAlphaChannel, True)
color = dialog.getColor() color = dialog.getColor()
if color.isValid(): if color.isValid():
RGBstring = '%s,%s,%s' % ( RGBstring = '%s,%s,%s' % (

View File

@ -1,6 +1,6 @@
from PIL import Image, ImageDraw from PIL import Image, ImageDraw
from PyQt4 import uic, QtGui, QtCore from PyQt5 import uic, QtGui, QtCore, QtWidgets
from PyQt4.QtGui import QColor from PyQt5.QtGui import QColor
from PIL.ImageQt import ImageQt from PIL.ImageQt import ImageQt
import os import os
from . import __base__ from . import __base__

View File

@ -1,5 +1,5 @@
from PIL import Image, ImageDraw from PIL import Image, ImageDraw
from PyQt4 import uic, QtGui, QtCore from PyQt5 import uic, QtGui, QtCore, QtWidgets
import os import os
from . import __base__ from . import __base__
@ -85,7 +85,7 @@ class Component(__base__.Component):
def pickImage(self): def pickImage(self):
imgDir = self.settings.value("backgroundDir", os.path.expanduser("~")) imgDir = self.settings.value("backgroundDir", os.path.expanduser("~"))
filename = QtGui.QFileDialog.getOpenFileName( filename, _ = QtWidgets.QFileDialog.getOpenFileName(
self.page, "Choose Image", imgDir, self.page, "Choose Image", imgDir,
"Image Files (%s)" % " ".join(self.imageFormats)) "Image Files (%s)" % " ".join(self.imageFormats))
if filename: if filename:

View File

@ -1,7 +1,7 @@
import numpy import numpy
from PIL import Image, ImageDraw from PIL import Image, ImageDraw
from PyQt4 import uic, QtGui, QtCore from PyQt5 import uic, QtGui, QtCore, QtWidgets
from PyQt4.QtGui import QColor from PyQt5.QtGui import QColor
import os import os
from . import __base__ from . import __base__
import time import time

View File

@ -1,6 +1,6 @@
from PIL import Image, ImageDraw from PIL import Image, ImageDraw
from PyQt4.QtGui import QPainter, QColor, QFont from PyQt5.QtGui import QPainter, QColor, QFont
from PyQt4 import uic, QtGui, QtCore from PyQt5 import uic, QtGui, QtCore, QtWidgets
from PIL.ImageQt import ImageQt from PIL.ImageQt import ImageQt
import os import os
import io import io
@ -138,7 +138,7 @@ class Component(__base__.Component):
painter.drawText(x, y, self.title) painter.drawText(x, y, self.title)
painter.end() painter.end()
imBytes = image.bits().asstring(image.numBytes()) imBytes = image.bits().asstring(image.byteCount())
return Image.frombytes('RGBA', (width, height), imBytes) return Image.frombytes('RGBA', (width, height), imBytes)

View File

@ -1,5 +1,5 @@
from PIL import Image, ImageDraw from PIL import Image, ImageDraw
from PyQt4 import uic, QtGui, QtCore from PyQt5 import uic, QtGui, QtCore, QtWidgets
import os import os
import subprocess import subprocess
import threading import threading
@ -180,7 +180,7 @@ class Component(__base__.Component):
def pickVideo(self): def pickVideo(self):
imgDir = self.settings.value("backgroundDir", os.path.expanduser("~")) imgDir = self.settings.value("backgroundDir", os.path.expanduser("~"))
filename = QtGui.QFileDialog.getOpenFileName( filename, _ = QtWidgets.QFileDialog.getOpenFileName(
self.page, "Choose Video", self.page, "Choose Video",
imgDir, "Video Files (%s)" % " ".join(self.videoFormats) imgDir, "Video Files (%s)" % " ".join(self.videoFormats)
) )

View File

@ -1,7 +1,7 @@
import sys import sys
import io import io
import os import os
from PyQt4 import QtCore, QtGui, uic from PyQt5 import QtCore, QtGui, uic
from os.path import expanduser from os.path import expanduser
import subprocess as sp import subprocess as sp
import numpy import numpy
@ -11,7 +11,7 @@ import time
from collections import OrderedDict from collections import OrderedDict
import json import json
from importlib import import_module from importlib import import_module
from PyQt4.QtGui import QDesktopServices from PyQt5.QtCore import QStandardPaths
import string import string
@ -19,8 +19,9 @@ class Core():
def __init__(self): def __init__(self):
self.FFMPEG_BIN = self.findFfmpeg() self.FFMPEG_BIN = self.findFfmpeg()
self.dataDir = QDesktopServices.storageLocation( self.dataDir = QStandardPaths.writableLocation(
QDesktopServices.DataLocation) QStandardPaths.AppConfigLocation
)
self.presetDir = os.path.join(self.dataDir, 'presets') self.presetDir = os.path.join(self.dataDir, 'presets')
if getattr(sys, 'frozen', False): if getattr(sys, 'frozen', False):
# frozen # frozen
@ -178,8 +179,7 @@ class Core():
clearThis = False clearThis = False
# add loaded named presets to savedPresets dict # add loaded named presets to savedPresets dict
if 'preset' in preset and \ if 'preset' in preset and preset['preset'] is not None:
preset['preset'] is not None:
nam = preset['preset'] nam = preset['preset']
filepath2 = os.path.join( filepath2 = os.path.join(
self.presetDir, name, str(vers), nam) self.presetDir, name, str(vers), nam)
@ -200,8 +200,7 @@ class Core():
break break
try: try:
if 'preset' in preset and \ if 'preset' in preset and preset['preset'] is not None:
preset['preset'] is not None:
self.selectedComponents[i].loadPreset( self.selectedComponents[i].loadPreset(
preset preset
) )
@ -331,8 +330,7 @@ class Core():
return False return False
def createPresetFile( def createPresetFile(
self, compName, vers, presetName, self, compName, vers, presetName, saveValueStore, filepath=''):
saveValueStore, filepath=''):
'''Create a preset file (.avl) at filepath using args. '''Create a preset file (.avl) at filepath using args.
Or if filepath is empty, create an internal preset using args''' Or if filepath is empty, create an internal preset using args'''
if not filepath: if not filepath:

View File

@ -1,4 +1,4 @@
from PyQt4 import QtGui, uic from PyQt5 import QtGui, uic, QtWidgets
import sys import sys
import os import os
@ -48,9 +48,9 @@ if __name__ == "__main__":
# normal gui launch # normal gui launch
proj = None proj = None
app = QtGui.QApplication(sys.argv) app = QtWidgets.QApplication(sys.argv)
app.setApplicationName("audio-visualizer") app.setApplicationName("audio-visualizer")
app.setOrganizationName("audio-visualizer") # app.setOrganizationName("audio-visualizer")
if mode == 'cmd': if mode == 'cmd':
from command import * from command import *
@ -71,7 +71,7 @@ if __name__ == "__main__":
window = uic.loadUi(os.path.join(wd, "mainwindow.ui")) window = uic.loadUi(os.path.join(wd, "mainwindow.ui"))
# window.adjustSize() # window.adjustSize()
desc = QtGui.QDesktopWidget() desc = QtWidgets.QDesktopWidget()
dpi = desc.physicalDpiX() dpi = desc.physicalDpiX()
topMargin = 0 if (dpi == 96) else int(10 * (dpi / 96)) topMargin = 0 if (dpi == 96) else int(10 * (dpi / 96))

View File

@ -1,7 +1,7 @@
from queue import Queue from queue import Queue
from PyQt4 import QtCore, QtGui, uic from PyQt5 import QtCore, QtGui, uic, QtWidgets
from PyQt4.QtCore import QSettings, Qt from PyQt5.QtCore import QSettings, Qt
from PyQt4.QtGui import QMenu, QShortcut from PyQt5.QtWidgets import QMenu, QShortcut
import sys import sys
import os import os
import signal import signal
@ -15,11 +15,11 @@ from presetmanager import PresetManager
from main import LoadDefaultSettings from main import LoadDefaultSettings
class PreviewWindow(QtGui.QLabel): class PreviewWindow(QtWidgets.QLabel):
def __init__(self, parent, img): def __init__(self, parent, img):
super(PreviewWindow, self).__init__() super(PreviewWindow, self).__init__()
self.parent = parent self.parent = parent
self.setFrameStyle(QtGui.QFrame.StyledPanel) self.setFrameStyle(QtWidgets.QFrame.StyledPanel)
self.pixmap = QtGui.QPixmap(img) self.pixmap = QtGui.QPixmap(img)
def paintEvent(self, event): def paintEvent(self, event):
@ -39,14 +39,14 @@ class PreviewWindow(QtGui.QLabel):
self.repaint() self.repaint()
class MainWindow(QtGui.QMainWindow): class MainWindow(QtWidgets.QMainWindow):
newTask = QtCore.pyqtSignal(list) newTask = QtCore.pyqtSignal(list)
processTask = QtCore.pyqtSignal() processTask = QtCore.pyqtSignal()
videoTask = QtCore.pyqtSignal(str, str, list) videoTask = QtCore.pyqtSignal(str, str, list)
def __init__(self, window, project): def __init__(self, window, project):
QtGui.QMainWindow.__init__(self) QtWidgets.QMainWindow.__init__(self)
# print('main thread id: {}'.format(QtCore.QThread.currentThreadId())) # print('main thread id: {}'.format(QtCore.QThread.currentThreadId()))
self.window = window self.window = window
@ -116,7 +116,6 @@ class MainWindow(QtGui.QMainWindow):
codec = window.comboBox_videoCodec.itemText(i) codec = window.comboBox_videoCodec.itemText(i)
if codec == self.settings.value('outputVideoCodec'): if codec == self.settings.value('outputVideoCodec'):
window.comboBox_videoCodec.setCurrentIndex(i) window.comboBox_videoCodec.setCurrentIndex(i)
#print(codec)
for i in range(window.comboBox_audioCodec.count()): for i in range(window.comboBox_audioCodec.count()):
codec = window.comboBox_audioCodec.itemText(i) codec = window.comboBox_audioCodec.itemText(i)
@ -146,10 +145,11 @@ class MainWindow(QtGui.QMainWindow):
# Make component buttons # Make component buttons
self.compMenu = QMenu() self.compMenu = QMenu()
self.compActions = []
for i, comp in enumerate(self.core.modules): for i, comp in enumerate(self.core.modules):
action = self.compMenu.addAction(comp.Component.__doc__) action = self.compMenu.addAction(comp.Component.__doc__)
action.triggered[()].connect( action.triggered.connect(
lambda item=i: self.core.insertComponent(0, item, self)) lambda _, item=i: self.core.insertComponent(0, item, self))
self.window.pushButton_addComponent.setMenu(self.compMenu) self.window.pushButton_addComponent.setMenu(self.compMenu)
@ -160,12 +160,10 @@ class MainWindow(QtGui.QMainWindow):
self.window.pushButton_removeComponent.clicked.connect( self.window.pushButton_removeComponent.clicked.connect(
lambda _: self.removeComponent()) lambda _: self.removeComponent())
componentList.setContextMenuPolicy( componentList.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
QtCore.Qt.CustomContextMenu) componentList.customContextMenuRequested.connect(
componentList.connect( self.componentContextMenu
componentList, )
QtCore.SIGNAL("customContextMenuRequested(QPoint)"),
self.componentContextMenu)
currentRes = str(self.settings.value('outputWidth'))+'x' + \ currentRes = str(self.settings.value('outputWidth'))+'x' + \
str(self.settings.value('outputHeight')) str(self.settings.value('outputHeight'))
@ -188,19 +186,19 @@ class MainWindow(QtGui.QMainWindow):
self.projectMenu = QMenu() self.projectMenu = QMenu()
self.window.menuButton_newProject = self.projectMenu.addAction( self.window.menuButton_newProject = self.projectMenu.addAction(
"New Project") "New Project")
self.window.menuButton_newProject.triggered[()].connect( self.window.menuButton_newProject.triggered.connect(
self.createNewProject) self.createNewProject)
self.window.menuButton_openProject = self.projectMenu.addAction( self.window.menuButton_openProject = self.projectMenu.addAction(
"Open Project") "Open Project")
self.window.menuButton_openProject.triggered[()].connect( self.window.menuButton_openProject.triggered.connect(
self.openOpenProjectDialog) self.openOpenProjectDialog)
action = self.projectMenu.addAction("Save Project") action = self.projectMenu.addAction("Save Project")
action.triggered[()].connect(self.saveCurrentProject) action.triggered.connect(self.saveCurrentProject)
action = self.projectMenu.addAction("Save Project As") action = self.projectMenu.addAction("Save Project As")
action.triggered[()].connect(self.openSaveProjectDialog) action.triggered.connect(self.openSaveProjectDialog)
self.window.pushButton_projects.setMenu(self.projectMenu) self.window.pushButton_projects.setMenu(self.projectMenu)
@ -243,27 +241,38 @@ class MainWindow(QtGui.QMainWindow):
self.drawPreview(True) self.drawPreview(True)
# Setup Hotkeys # Setup Hotkeys
QtGui.QShortcut("Ctrl+S", self.window, self.saveCurrentProject) QtWidgets.QShortcut("Ctrl+S", self.window, self.saveCurrentProject)
QtGui.QShortcut("Ctrl+A", self.window, self.openSaveProjectDialog) QtWidgets.QShortcut("Ctrl+A", self.window, self.openSaveProjectDialog)
QtGui.QShortcut("Ctrl+O", self.window, self.openOpenProjectDialog) QtWidgets.QShortcut("Ctrl+O", self.window, self.openOpenProjectDialog)
QtGui.QShortcut("Ctrl+N", self.window, self.createNewProject) QtWidgets.QShortcut("Ctrl+N", self.window, self.createNewProject)
QtGui.QShortcut("Ctrl+T", self.window, activated=lambda: QtWidgets.QShortcut(
self.window.pushButton_addComponent.click()) "Ctrl+T", self.window,
QtGui.QShortcut("Ctrl+Space", self.window, activated=lambda: activated=lambda: self.window.pushButton_addComponent.click()
self.window.listWidget_componentList.setFocus()) )
QtGui.QShortcut("Ctrl+Shift+S", self.window, QtWidgets.QShortcut(
self.presetManager.openSavePresetDialog) "Ctrl+Space", self.window,
QtGui.QShortcut("Ctrl+Shift+C", self.window, activated=lambda: self.window.listWidget_componentList.setFocus()
self.presetManager.clearPreset) )
QtWidgets.QShortcut(
"Ctrl+Shift+S", self.window,
self.presetManager.openSavePresetDialog
)
QtWidgets.QShortcut(
"Ctrl+Shift+C", self.window, self.presetManager.clearPreset
)
QtGui.QShortcut("Ctrl+Up", self.window, QtWidgets.QShortcut(
activated=lambda: self.moveComponent(-1)) "Ctrl+Up", self.window,
QtGui.QShortcut("Ctrl+Down", self.window, activated=lambda: self.moveComponent(-1)
activated=lambda: self.moveComponent(1)) )
QtGui.QShortcut("Ctrl+Home", self.window, self.moveComponentTop) QtWidgets.QShortcut(
QtGui.QShortcut("Ctrl+End", self.window, self.moveComponentBottom) "Ctrl+Down", self.window,
QtGui.QShortcut("Ctrl+r", self.window, self.removeComponent) activated=lambda: self.moveComponent(1)
)
QtWidgets.QShortcut("Ctrl+Home", self.window, self.moveComponentTop)
QtWidgets.QShortcut("Ctrl+End", self.window, self.moveComponentBottom)
QtWidgets.QShortcut("Ctrl+r", self.window, self.removeComponent)
def cleanUp(self): def cleanUp(self):
self.timer.stop() self.timer.stop()
@ -283,7 +292,7 @@ class MainWindow(QtGui.QMainWindow):
def updateComponentTitle(self, pos, presetStore=False): def updateComponentTitle(self, pos, presetStore=False):
if type(presetStore) == dict: if type(presetStore) == dict:
name = presetStore['preset'] name = presetStore['preset']
if name == None or name not in self.core.savedPresets: if name is None or name not in self.core.savedPresets:
modified = False modified = False
else: else:
modified = (presetStore != self.core.savedPresets[name]) modified = (presetStore != self.core.savedPresets[name])
@ -365,21 +374,22 @@ class MainWindow(QtGui.QMainWindow):
def openInputFileDialog(self): def openInputFileDialog(self):
inputDir = self.settings.value("inputDir", os.path.expanduser("~")) inputDir = self.settings.value("inputDir", os.path.expanduser("~"))
fileName = QtGui.QFileDialog.getOpenFileName( fileName, _ = QtWidgets.QFileDialog.getOpenFileName(
self.window, "Open Audio File", self.window, "Open Audio File",
inputDir, "Audio Files (%s)" % " ".join(self.core.audioFormats)) inputDir, "Audio Files (%s)" % " ".join(self.core.audioFormats))
if not fileName == "": if fileName:
self.settings.setValue("inputDir", os.path.dirname(fileName)) self.settings.setValue("inputDir", os.path.dirname(fileName))
self.window.lineEdit_audioFile.setText(fileName) self.window.lineEdit_audioFile.setText(fileName)
def openOutputFileDialog(self): def openOutputFileDialog(self):
outputDir = self.settings.value("outputDir", os.path.expanduser("~")) outputDir = self.settings.value("outputDir", os.path.expanduser("~"))
fileName = QtGui.QFileDialog.getSaveFileName( fileName, _ = QtWidgets.QFileDialog.getSaveFileName(
self.window, "Set Output Video File", self.window, "Set Output Video File",
outputDir, outputDir,
"Video Files (%s);; All Files (*)" % " ".join(self.core.videoFormats)) "Video Files (%s);; All Files (*)" % " ".join(
self.core.videoFormats))
if not fileName == "": if not fileName == "":
self.settings.setValue("outputDir", os.path.dirname(fileName)) self.settings.setValue("outputDir", os.path.dirname(fileName))
@ -550,13 +560,13 @@ class MainWindow(QtGui.QMainWindow):
'''Drop event for the component listwidget''' '''Drop event for the component listwidget'''
componentList = self.window.listWidget_componentList componentList = self.window.listWidget_componentList
modelIndexes = [ \ modelIndexes = [
componentList.model().index(i) \ componentList.model().index(i)
for i in range(componentList.count()) \ for i in range(componentList.count())
] ]
rects = [ \ rects = [
componentList.visualRect(modelIndex) \ componentList.visualRect(modelIndex)
for modelIndex in modelIndexes \ for modelIndex in modelIndexes
] ]
rowPos = [rect.contains(event.pos()) for rect in rects] rowPos = [rect.contains(event.pos()) for rect in rects]
@ -605,9 +615,10 @@ class MainWindow(QtGui.QMainWindow):
if self.autosaveExists(identical=False): if self.autosaveExists(identical=False):
ch = self.showMessage( ch = self.showMessage(
msg="You have unsaved changes in project '%s'. " msg="You have unsaved changes in project '%s'. "
"Save before %s?" % \ "Save before %s?" % (
(os.path.basename(self.currentProject)[:-4], os.path.basename(self.currentProject)[:-4],
phrase), phrase
),
showCancel=True) showCancel=True)
if ch: if ch:
success = self.saveProjectChanges() success = self.saveProjectChanges()
@ -616,7 +627,7 @@ class MainWindow(QtGui.QMainWindow):
os.remove(self.autosavePath) os.remove(self.autosavePath)
def openSaveProjectDialog(self): def openSaveProjectDialog(self):
filename = QtGui.QFileDialog.getSaveFileName( filename, _ = QtWidgets.QFileDialog.getSaveFileName(
self.window, "Create Project File", self.window, "Create Project File",
self.settings.value("projectDir"), self.settings.value("projectDir"),
"Project Files (*.avp)") "Project Files (*.avp)")
@ -631,7 +642,7 @@ class MainWindow(QtGui.QMainWindow):
self.core.createProjectFile(filename) self.core.createProjectFile(filename)
def openOpenProjectDialog(self): def openOpenProjectDialog(self):
filename = QtGui.QFileDialog.getOpenFileName( filename, _ = QtWidgets.QFileDialog.getOpenFileName(
self.window, "Open Project File", self.window, "Open Project File",
self.settings.value("projectDir"), self.settings.value("projectDir"),
"Project Files (*.avp)") "Project Files (*.avp)")
@ -660,17 +671,19 @@ class MainWindow(QtGui.QMainWindow):
def showMessage(self, **kwargs): def showMessage(self, **kwargs):
parent = kwargs['parent'] if 'parent' in kwargs else self.window parent = kwargs['parent'] if 'parent' in kwargs else self.window
msg = QtGui.QMessageBox(parent) msg = QtWidgets.QMessageBox(parent)
msg.setModal(True) msg.setModal(True)
msg.setText(kwargs['msg']) msg.setText(kwargs['msg'])
msg.setIcon( msg.setIcon(
kwargs['icon'] if 'icon' in kwargs else QtGui.QMessageBox.Information) kwargs['icon']
if 'icon' in kwargs else QtWidgets.QMessageBox.Information
)
msg.setDetailedText(kwargs['detail'] if 'detail' in kwargs else None) msg.setDetailedText(kwargs['detail'] if 'detail' in kwargs else None)
if 'showCancel'in kwargs and kwargs['showCancel']: if 'showCancel'in kwargs and kwargs['showCancel']:
msg.setStandardButtons( msg.setStandardButtons(
QtGui.QMessageBox.Ok | QtGui.QMessageBox.Cancel) QtWidgets.QMessageBox.Ok | QtWidgets.QMessageBox.Cancel)
else: else:
msg.setStandardButtons(QtGui.QMessageBox.Ok) msg.setStandardButtons(QtWidgets.QMessageBox.Ok)
ch = msg.exec_() ch = msg.exec_()
if ch == 1024: if ch == 1024:
return True return True
@ -690,7 +703,7 @@ class MainWindow(QtGui.QMainWindow):
return return
self.presetManager.findPresets() self.presetManager.findPresets()
self.menu = QtGui.QMenu() self.menu = QMenu()
menuItem = self.menu.addAction("Save Preset") menuItem = self.menu.addAction("Save Preset")
menuItem.triggered.connect( menuItem.triggered.connect(
self.presetManager.openSavePresetDialog self.presetManager.openSavePresetDialog
@ -698,8 +711,10 @@ class MainWindow(QtGui.QMainWindow):
# submenu for opening presets # submenu for opening presets
try: try:
presets = self.presetManager.presets[str(self.core.selectedComponents[index])] presets = self.presetManager.presets[
self.submenu = QtGui.QMenu("Open Preset") str(self.core.selectedComponents[index])
]
self.submenu = QMenu("Open Preset")
self.menu.addMenu(self.submenu) self.menu.addMenu(self.submenu)
for version, presetName in presets: for version, presetName in presets:

View File

@ -1,11 +1,11 @@
from PyQt4 import QtGui, QtCore from PyQt5 import QtCore, QtWidgets
import string import string
import os import os
import core import core
class PresetManager(QtGui.QDialog): class PresetManager(QtWidgets.QDialog):
def __init__(self, window, parent): def __init__(self, window, parent):
super().__init__(parent.window) super().__init__(parent.window)
self.parent = parent self.parent = parent
@ -52,8 +52,8 @@ class PresetManager(QtGui.QDialog):
) )
# make auto-completion for search bar # make auto-completion for search bar
self.autocomplete = QtGui.QStringListModel() self.autocomplete = QtCore.QStringListModel()
completer = QtGui.QCompleter() completer = QtWidgets.QCompleter()
completer.setModel(self.autocomplete) completer.setModel(self.autocomplete)
self.window.lineEdit_search.setCompleter(completer) self.window.lineEdit_search.setCompleter(completer)
self.window.lineEdit_search.textChanged.connect( self.window.lineEdit_search.textChanged.connect(
@ -136,11 +136,11 @@ class PresetManager(QtGui.QDialog):
while True: while True:
index = componentList.currentRow() index = componentList.currentRow()
currentPreset = selectedComponents[index].currentPreset currentPreset = selectedComponents[index].currentPreset
newName, OK = QtGui.QInputDialog.getText( newName, OK = QtWidgets.QInputDialog.getText(
self.parent.window, self.parent.window,
'Audio Visualizer', 'Audio Visualizer',
'New Preset Name:', 'New Preset Name:',
QtGui.QLineEdit.Normal, QtWidgets.QLineEdit.Normal,
currentPreset currentPreset
) )
if OK: if OK:
@ -175,7 +175,7 @@ class PresetManager(QtGui.QDialog):
msg="%s already exists! Overwrite it?" % msg="%s already exists! Overwrite it?" %
os.path.basename(path), os.path.basename(path),
showCancel=True, showCancel=True,
icon=QtGui.QMessageBox.Warning, icon=QtWidgets.QMessageBox.Warning,
parent=window) parent=window)
if not ch: if not ch:
# user clicked cancel # user clicked cancel
@ -208,7 +208,7 @@ class PresetManager(QtGui.QDialog):
ch = self.parent.showMessage( ch = self.parent.showMessage(
msg='Really delete %s?' % name, msg='Really delete %s?' % name,
showCancel=True, showCancel=True,
icon=QtGui.QMessageBox.Warning, icon=QtWidgets.QMessageBox.Warning,
parent=self.window parent=self.window
) )
if not ch: if not ch:
@ -235,11 +235,11 @@ class PresetManager(QtGui.QDialog):
while True: while True:
index = presetList.currentRow() index = presetList.currentRow()
newName, OK = QtGui.QInputDialog.getText( newName, OK = QtWidgets.QInputDialog.getText(
self.window, self.window,
'Preset Manager', 'Preset Manager',
'Rename Preset:', 'Rename Preset:',
QtGui.QLineEdit.Normal, QtWidgets.QLineEdit.Normal,
self.presetRows[index][2] self.presetRows[index][2]
) )
if OK: if OK:
@ -262,7 +262,7 @@ class PresetManager(QtGui.QDialog):
break break
def openImportDialog(self): def openImportDialog(self):
filename = QtGui.QFileDialog.getOpenFileName( filename, _ = QtWidgets.QFileDialog.getOpenFileName(
self.window, "Import Preset File", self.window, "Import Preset File",
self.settings.value("presetDir"), self.settings.value("presetDir"),
"Preset Files (*.avl)") "Preset Files (*.avl)")
@ -287,7 +287,7 @@ class PresetManager(QtGui.QDialog):
def openExportDialog(self): def openExportDialog(self):
if not self.window.listWidget_presets.selectedItems(): if not self.window.listWidget_presets.selectedItems():
return return
filename = QtGui.QFileDialog.getSaveFileName( filename, _ = QtWidgets.QFileDialog.getSaveFileName(
self.window, "Export Preset", self.window, "Export Preset",
self.settings.value("presetDir"), self.settings.value("presetDir"),
"Preset Files (*.avl)") "Preset Files (*.avl)")

View File

@ -1,5 +1,5 @@
from PyQt4 import QtCore, QtGui, uic from PyQt5 import QtCore, QtGui, uic
from PyQt4.QtCore import pyqtSignal, pyqtSlot from PyQt5.QtCore import pyqtSignal, pyqtSlot
from PIL import Image from PIL import Image
from PIL.ImageQt import ImageQt from PIL.ImageQt import ImageQt
import core import core
@ -25,7 +25,7 @@ class Worker(QtCore.QObject):
self.background.paste(Image.open(os.path.join( self.background.paste(Image.open(os.path.join(
self.core.wd, "background.png"))) self.core.wd, "background.png")))
@pyqtSlot(str, list) @pyqtSlot(list)
def createPreviewImage(self, components): def createPreviewImage(self, components):
dic = { dic = {
"components": components, "components": components,

View File

@ -1,5 +1,5 @@
from PyQt4 import QtCore, QtGui, uic from PyQt5 import QtCore, QtGui, uic
from PyQt4.QtCore import pyqtSignal, pyqtSlot from PyQt5.QtCore import pyqtSignal, pyqtSlot
from PIL import Image, ImageDraw, ImageFont from PIL import Image, ImageDraw, ImageFont
from PIL.ImageQt import ImageQt from PIL.ImageQt import ImageQt
import core import core