From 6093e701e151af96464b564e275db4664d828a82 Mon Sep 17 00:00:00 2001 From: tassaron Date: Wed, 7 Jun 2017 20:30:37 -0400 Subject: laying some foundations for new preset implementation --- presetmanager.py | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 presetmanager.py (limited to 'presetmanager.py') 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) -- cgit v1.2.3