components can be saved and loaded as projects
This commit is contained in:
parent
907ba33e93
commit
00f5c88584
56
main.py
56
main.py
|
@ -121,6 +121,7 @@ class Main(QtCore.QObject):
|
||||||
self.core = core.Core()
|
self.core = core.Core()
|
||||||
self.settings = QSettings('settings.ini', QSettings.IniFormat)
|
self.settings = QSettings('settings.ini', QSettings.IniFormat)
|
||||||
LoadDefaultSettings(self)
|
LoadDefaultSettings(self)
|
||||||
|
self.currentProject = None
|
||||||
|
|
||||||
# create data directory structure if needed
|
# create data directory structure if needed
|
||||||
self.dataDir = QDesktopServices.storageLocation(QDesktopServices.DataLocation)
|
self.dataDir = QDesktopServices.storageLocation(QDesktopServices.DataLocation)
|
||||||
|
@ -136,10 +137,8 @@ class Main(QtCore.QObject):
|
||||||
|
|
||||||
self.previewThread = QtCore.QThread(self)
|
self.previewThread = QtCore.QThread(self)
|
||||||
self.previewWorker = preview_thread.Worker(self, self.previewQueue)
|
self.previewWorker = preview_thread.Worker(self, self.previewQueue)
|
||||||
|
|
||||||
self.previewWorker.moveToThread(self.previewThread)
|
self.previewWorker.moveToThread(self.previewThread)
|
||||||
self.previewWorker.imageCreated.connect(self.showPreviewImage)
|
self.previewWorker.imageCreated.connect(self.showPreviewImage)
|
||||||
|
|
||||||
self.previewThread.start()
|
self.previewThread.start()
|
||||||
|
|
||||||
self.timer = QtCore.QTimer(self)
|
self.timer = QtCore.QTimer(self)
|
||||||
|
@ -178,8 +177,9 @@ class Main(QtCore.QObject):
|
||||||
|
|
||||||
self.window.pushButton_savePreset.clicked.connect(self.openSavePresetDialog)
|
self.window.pushButton_savePreset.clicked.connect(self.openSavePresetDialog)
|
||||||
self.window.comboBox_openPreset.currentIndexChanged.connect(self.openPreset)
|
self.window.comboBox_openPreset.currentIndexChanged.connect(self.openPreset)
|
||||||
self.window.pushButton_saveProject.clicked.connect(self.openSaveProjectDialog)
|
self.window.pushButton_saveAs.clicked.connect(self.openSaveProjectDialog)
|
||||||
#self.window.pushButton_openProject
|
self.window.pushButton_saveProject.clicked.connect(self.saveCurrentProject)
|
||||||
|
self.window.pushButton_openProject.clicked.connect(self.openOpenProjectDialog)
|
||||||
|
|
||||||
self.drawPreview()
|
self.drawPreview()
|
||||||
|
|
||||||
|
@ -422,13 +422,22 @@ class Main(QtCore.QObject):
|
||||||
self.selectedComponents[index].loadPreset(saveValueStore)
|
self.selectedComponents[index].loadPreset(saveValueStore)
|
||||||
self.drawPreview()
|
self.drawPreview()
|
||||||
|
|
||||||
|
def saveCurrentProject(self):
|
||||||
|
if self.currentProject:
|
||||||
|
self.createProjectFile(self.currentProject)
|
||||||
|
else:
|
||||||
|
self.openSaveProjectDialog()
|
||||||
|
|
||||||
def openSaveProjectDialog(self):
|
def openSaveProjectDialog(self):
|
||||||
outputDir = os.path.join(self.dataDir, 'projects')
|
outputDir = os.path.join(self.dataDir, 'projects')
|
||||||
filename = QtGui.QFileDialog.getSaveFileName(self.window,
|
filename = QtGui.QFileDialog.getSaveFileName(self.window, "Create Project File", outputDir)
|
||||||
"Create Project File", outputDir)
|
|
||||||
if not filename:
|
if not filename:
|
||||||
return
|
return
|
||||||
filepath = os.path.join(outputDir, filename)
|
filepath = os.path.join(outputDir, filename)
|
||||||
|
self.currentProject = filepath
|
||||||
|
self.createProjectFile(filepath)
|
||||||
|
|
||||||
|
def createProjectFile(self, filepath):
|
||||||
with open(filepath, 'w') as f:
|
with open(filepath, 'w') as f:
|
||||||
for comp in self.selectedComponents:
|
for comp in self.selectedComponents:
|
||||||
saveValueStore = comp.savePreset()
|
saveValueStore = comp.savePreset()
|
||||||
|
@ -436,6 +445,33 @@ class Main(QtCore.QObject):
|
||||||
f.write('%s\n' % str(comp.version()))
|
f.write('%s\n' % str(comp.version()))
|
||||||
f.write('%s\n' % repr(saveValueStore))
|
f.write('%s\n' % repr(saveValueStore))
|
||||||
|
|
||||||
|
def openOpenProjectDialog(self):
|
||||||
|
inputDir = os.path.join(self.dataDir, 'projects')
|
||||||
|
filename = QtGui.QFileDialog.getOpenFileName(self.window, "Open Project File", inputDir)
|
||||||
|
if not filename:
|
||||||
|
return
|
||||||
|
filepath = os.path.join(inputDir, filename)
|
||||||
|
self.openProject(filepath)
|
||||||
|
|
||||||
|
def openProject(self, filepath):
|
||||||
|
self.clear()
|
||||||
|
self.currentProject = filepath
|
||||||
|
compNames = [mod.Component.__doc__ for mod in self.modules]
|
||||||
|
with open(filepath, 'r') as f:
|
||||||
|
i = 0
|
||||||
|
for line in f:
|
||||||
|
if i == 0:
|
||||||
|
compIndex = compNames.index(line.strip())
|
||||||
|
self.addComponent(compIndex)
|
||||||
|
i += 1
|
||||||
|
elif i == 1:
|
||||||
|
# version, not used yet
|
||||||
|
i += 1
|
||||||
|
elif i == 2:
|
||||||
|
saveValueStore = eval(line.strip())
|
||||||
|
self.selectedComponents[-1].loadPreset(saveValueStore)
|
||||||
|
i = 0
|
||||||
|
|
||||||
def showMessage(self, string, icon=QtGui.QMessageBox.Information, showCancel=False):
|
def showMessage(self, string, icon=QtGui.QMessageBox.Information, showCancel=False):
|
||||||
msg = QtGui.QMessageBox()
|
msg = QtGui.QMessageBox()
|
||||||
msg.setIcon(icon)
|
msg.setIcon(icon)
|
||||||
|
@ -449,6 +485,14 @@ class Main(QtCore.QObject):
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def clear(self):
|
||||||
|
''' empty out all components and fields, get a blank slate '''
|
||||||
|
self.selectedComponents = []
|
||||||
|
self.window.listWidget_componentList.clear()
|
||||||
|
for widget in self.pages:
|
||||||
|
self.window.stackedWidget.removeWidget(widget)
|
||||||
|
self.pages = []
|
||||||
|
|
||||||
def LoadDefaultSettings(self):
|
def LoadDefaultSettings(self):
|
||||||
self.resolutions = [
|
self.resolutions = [
|
||||||
'1920x1080',
|
'1920x1080',
|
||||||
|
|
Reference in New Issue