aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortassaron2017-06-10 14:52:01 -0400
committertassaron2017-06-10 14:52:01 -0400
commit59c2c090ab9275bc1146329536d43855a46d34f4 (patch)
treeaa806ec048b9d5001967ebff000f85dd558e1932
parentb048312882f80d43e3d8b1573814badf70fe3b92 (diff)
made basic export function, moved more code into core
-rw-r--r--core.py70
-rw-r--r--mainwindow.py28
-rw-r--r--presetmanager.py12
-rw-r--r--presetmanager.ui8
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 @@
<class>presetmanager</class>
<widget class="QWidget" name="presetmanager">
<property name="windowModality">
- <enum>Qt::ApplicationModal</enum>
+ <enum>Qt::NonModal</enum>
+ </property>
+ <property name="enabled">
+ <bool>true</bool>
</property>
<property name="geometry">
<rect>
@@ -92,6 +95,9 @@
</item>
<item>
<widget class="QPushButton" name="pushButton_rename">
+ <property name="enabled">
+ <bool>true</bool>
+ </property>
<property name="text">
<string>Rename</string>
</property>