From 59c2c090ab9275bc1146329536d43855a46d34f4 Mon Sep 17 00:00:00 2001 From: tassaron Date: Sat, 10 Jun 2017 14:52:01 -0400 Subject: made basic export function, moved more code into core --- core.py | 70 ++++++++++++++++++++++++++++++++++++++++++++++++-------- mainwindow.py | 28 ++++++----------------- presetmanager.py | 12 ++++++---- presetmanager.ui | 8 ++++++- 4 files changed, 81 insertions(+), 37 deletions(-) diff --git a/core.py b/core.py index 776af55..c50918f 100644 --- a/core.py +++ b/core.py @@ -77,19 +77,69 @@ class Core(): def moduleIndexFor(self, compIndex): return self.selectedModules[compIndex] - def createPresetFile(self, compName, vers, saveValueStore, filename): - dirname = os.path.join(self.presetDir, compName, str(vers)) - if not os.path.exists(dirname): - os.makedirs(dirname) - filepath = os.path.join(dirname, filename) - with open(filepath, 'w') as f: - f.write(Core.stringOrderedDict(saveValueStore)) - def importPreset(self, filepath): print(filepath) - def exportPreset(self, exportName, compName, vers, origName): - pass + def exportPreset(self, exportPath, compName, vers, origName): + internalPath = os.path.join(self.presetDir, compName, str(vers), origName) + if not os.path.exists(internalPath): + return + if os.path.exists(exportPath): + os.remove(exportPath) + with open(internalPath, 'r') as f: + internalData = [line for line in f] + try: + saveValueStore = dict(eval(internalData[0].strip())) + self.createPresetFile( + compName, vers, + origName, saveValueStore, + exportPath + ) + except: + # TODO: add proper warning message + print('couldn\'t export %s' % exportPath) + + def createPresetFile( + self, compName, vers, presetName, saveValueStore, filepath=''): + '''Create a preset file (.avl) at filepath using args. + Or if filepath is empty, create an internal preset using + the args for the filepath.''' + if not filepath: + dirname = os.path.join(self.presetDir, compName, str(vers)) + if not os.path.exists(dirname): + os.makedirs(dirname) + filepath = os.path.join(dirname, presetName) + internal = True + else: + if not filepath.endswith('.avl'): + filepath += '.avl' + internal = False + + with open(filepath, 'w') as f: + if not internal: + f.write('[Components]\n') + f.write('%s\n' % compName) + f.write('%s\n' % str(vers)) + f.write(Core.stringOrderedDict(saveValueStore)) + + def createProjectFile(self, filepath): + '''Create a project file (.avp) using the current program state''' + try: + if not filepath.endswith(".avp"): + filepath += '.avp' + if os.path.exists(filepath): + os.remove(filepath) + with open(filepath, 'w') as f: + print('creating %s' % filepath) + f.write('[Components]\n') + for comp in self.selectedComponents: + saveValueStore = comp.savePreset() + f.write('%s\n' % str(comp)) + f.write('%s\n' % str(comp.version())) + f.write('%s\n' % Core.stringOrderedDict(saveValueStore)) + return True + except: + return False def loadEncoderOptions(self): file_path = os.path.join(self.wd, 'encoder-options.json') diff --git a/mainwindow.py b/mainwindow.py index 3e49ab2..5c929c3 100644 --- a/mainwindow.py +++ b/mainwindow.py @@ -284,7 +284,7 @@ class MainWindow(QtCore.QObject): if os.path.exists(self.autosavePath): os.remove(self.autosavePath) elif time.time() - self.lastAutosave >= 2.0: - self.createProjectFile(self.autosavePath) + self.core.createProjectFile(self.autosavePath) self.lastAutosave = time.time() def autosaveExists(self): @@ -504,7 +504,7 @@ class MainWindow(QtCore.QObject): def saveCurrentProject(self): if self.currentProject: - self.createProjectFile(self.currentProject) + self.core.createProjectFile(self.currentProject) else: self.openSaveProjectDialog() @@ -515,25 +515,11 @@ class MainWindow(QtCore.QObject): "Project Files (*.avp)") if not filename: return - self.createProjectFile(filename) - - def createProjectFile(self, filepath): - if not filepath.endswith(".avp"): - filepath += '.avp' - if os.path.exists(filepath): - os.remove(filepath) - with open(filepath, 'w') as f: - print('creating %s' % filepath) - f.write('[Components]\n') - for comp in self.core.selectedComponents: - saveValueStore = comp.savePreset() - f.write('%s\n' % str(comp)) - f.write('%s\n' % str(comp.version())) - f.write('%s\n' % core.Core.stringOrderedDict(saveValueStore)) - if filepath != self.autosavePath: - self.settings.setValue("projectDir", os.path.dirname(filepath)) - self.settings.setValue("currentProject", filepath) - self.currentProject = filepath + self.settings.setValue("projectDir", os.path.dirname(filename)) + self.settings.setValue("currentProject", filename) + self.currentProject = filename + + self.core.createProjectFile(filename) def openOpenProjectDialog(self): filename = QtGui.QFileDialog.getOpenFileName( diff --git a/presetmanager.py b/presetmanager.py index 04a9042..7e4efbb 100644 --- a/presetmanager.py +++ b/presetmanager.py @@ -1,4 +1,4 @@ -from PyQt4 import QtGui +from PyQt4 import QtGui, QtCore from collections import OrderedDict import string import os @@ -13,10 +13,12 @@ class PresetManager(QtGui.QDialog): self.core = parent.core self.settings = parent.settings self.presetDir = self.core.presetDir - self.window = window self.findPresets() + self.lastFilter = '*' self.presetRows = [] # list of (comp, vers, name) tuples + self.window = window + self.window.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) # connect button signals self.window.pushButton_delete.clicked.connect(self.openDeletePresetDialog) @@ -130,17 +132,17 @@ class PresetManager(QtGui.QDialog): componentName = str(self.selectedComponents[index]).strip() vers = self.selectedComponents[index].version() self.createNewPreset( - componentName, vers, saveValueStore, newName) + componentName, vers, newName, saveValueStore) self.selectedComponents[index].currentPreset = newName self.findPresets() self.drawPresetList() break - def createNewPreset(self, compName, vers, saveValueStore, filename): + def createNewPreset(self, compName, vers, filename, saveValueStore): path = os.path.join(self.presetDir, compName, str(vers), filename) if self.presetExists(path): return - self.core.createPresetFile(compName, vers, saveValueStore, filename) + self.core.createPresetFile(compName, vers, filename, saveValueStore) def presetExists(self, path): if os.path.exists(path): diff --git a/presetmanager.ui b/presetmanager.ui index b3c25fe..5257b1c 100644 --- a/presetmanager.ui +++ b/presetmanager.ui @@ -3,7 +3,10 @@ presetmanager - Qt::ApplicationModal + Qt::NonModal + + + true @@ -92,6 +95,9 @@ + + true + Rename -- cgit v1.2.3