aboutsummaryrefslogtreecommitdiff
path: root/presetmanager.py
diff options
context:
space:
mode:
authortassaron2017-06-07 20:30:37 -0400
committertassaron2017-06-07 20:30:37 -0400
commit6093e701e151af96464b564e275db4664d828a82 (patch)
tree252bcc41a8abdf80f6f39cfa89ec16587ad4c942 /presetmanager.py
parent6f2f02b709d2ea789b39b68f9a21a1a35d421075 (diff)
laying some foundations for new preset implementation
Diffstat (limited to 'presetmanager.py')
-rw-r--r--presetmanager.py70
1 files changed, 70 insertions, 0 deletions
diff --git a/presetmanager.py b/presetmanager.py
new file mode 100644
index 0000000..cc6c482
--- /dev/null
+++ b/presetmanager.py
@@ -0,0 +1,70 @@
+from PyQt4 import QtGui
+#import sys
+import os
+
+class PresetManager(QtGui.QDialog):
+ def __init__(self, window, parent):
+ super().__init__()
+ self.parent = parent
+ self.presetDir = parent.presetDir
+ self.window = window
+ self.presets = self.findPresets()
+
+ # create filter box and preset list
+ self.drawFilterList()
+ self.window.comboBox_filter.currentIndexChanged.connect(
+ lambda: self.drawPresetList(self.window.comboBox_filter.currentText())
+ )
+ self.drawPresetList('*')
+
+ # make auto-completion for search bar
+ self.autocomplete = QtGui.QStringListModel()
+ completer = QtGui.QCompleter()
+ completer.setModel(self.autocomplete)
+ self.window.lineEdit_search.setCompleter(completer)
+
+ def show(self):
+ presetNames = []
+ for presetList in self.presets.values():
+ for preset in presetList:
+ presetNames.append(preset[1])
+ self.autocomplete.setStringList(presetNames)
+ self.presets = self.findPresets()
+ self.drawFilterList()
+ self.drawPresetList('*')
+ self.window.show()
+
+ def findPresets(self):
+ parseList = []
+ for dirpath, dirnames, filenames in os.walk(self.presetDir):
+ # anything without a subdirectory must be a preset folder
+ if dirnames:
+ continue
+ for preset in filenames:
+ compName = os.path.basename(os.path.dirname(dirpath))
+ compVers = os.path.basename(dirpath)
+ try:
+ parseList.append((compName, int(compVers), preset))
+ except ValueError:
+ continue
+ return { compName : \
+ [ (vers, preset) \
+ for name, vers, preset in parseList \
+ if name == compName \
+ ] \
+ for compName, _, __ in parseList \
+ }
+
+ def drawPresetList(self, filter):
+ self.window.listWidget_presets.clear()
+ for component, presets in self.presets.items():
+ if filter != '*' and component != filter:
+ continue
+ for vers, preset in presets:
+ self.window.listWidget_presets.addItem('%s: %s' % (component, preset))
+
+ def drawFilterList(self):
+ self.window.comboBox_filter.clear()
+ self.window.comboBox_filter.addItem('*')
+ for component in self.presets:
+ self.window.comboBox_filter.addItem(component)