rename and delete buttons in preset manager
This commit is contained in:
parent
bb1e54b31e
commit
4fc73f1e09
|
@ -20,14 +20,14 @@ class Component(__base__.Component):
|
|||
page.lineEdit_color1.setText('%s,%s,%s' % self.color1)
|
||||
page.lineEdit_color2.setText('%s,%s,%s' % self.color2)
|
||||
|
||||
btnStyle = "QPushButton { background-color : %s; outline: none; }" \
|
||||
btnStyle1 = "QPushButton { background-color : %s; outline: none; }" \
|
||||
% QColor(*self.color1).name()
|
||||
|
||||
btnStyle = "QPushButton { background-color : %s; outline: none; }" \
|
||||
btnStyle2 = "QPushButton { background-color : %s; outline: none; }" \
|
||||
% QColor(*self.color2).name()
|
||||
|
||||
page.pushButton_color1.setStyleSheet(btnStyle)
|
||||
page.pushButton_color2.setStyleSheet(btnStyle)
|
||||
page.pushButton_color1.setStyleSheet(btnStyle1)
|
||||
page.pushButton_color2.setStyleSheet(btnStyle2)
|
||||
page.pushButton_color1.clicked.connect(lambda: self.pickColor(1))
|
||||
page.pushButton_color2.clicked.connect(lambda: self.pickColor(2))
|
||||
|
||||
|
@ -74,14 +74,14 @@ class Component(__base__.Component):
|
|||
self.page.lineEdit_color1.setText('%s,%s,%s' % pr['color1'])
|
||||
self.page.lineEdit_color2.setText('%s,%s,%s' % pr['color2'])
|
||||
|
||||
btnStyle = "QPushButton { background-color : %s; outline: none; }" \
|
||||
btnStyle1 = "QPushButton { background-color : %s; outline: none; }" \
|
||||
% QColor(*pr['color1']).name()
|
||||
|
||||
btnStyle = "QPushButton { background-color : %s; outline: none; }" \
|
||||
btnStyle2 = "QPushButton { background-color : %s; outline: none; }" \
|
||||
% QColor(*pr['color2']).name()
|
||||
|
||||
self.page.pushButton_color1.setStyleSheet(btnStyle)
|
||||
self.page.pushButton_color2.setStyleSheet(btnStyle)
|
||||
self.page.pushButton_color1.setStyleSheet(btnStyle1)
|
||||
self.page.pushButton_color2.setStyleSheet(btnStyle2)
|
||||
|
||||
def savePreset(self):
|
||||
return {
|
||||
|
|
10
core.py
10
core.py
|
@ -14,6 +14,7 @@ from collections import OrderedDict
|
|||
import json
|
||||
from importlib import import_module
|
||||
from PyQt4.QtGui import QDesktopServices
|
||||
import string
|
||||
|
||||
|
||||
class Core():
|
||||
|
@ -177,6 +178,15 @@ class Core():
|
|||
def reset(self):
|
||||
self.canceled = False
|
||||
|
||||
@staticmethod
|
||||
def badName(name):
|
||||
'''Returns whether a name contains non-alphanumeric chars'''
|
||||
badName = False
|
||||
for letter in name:
|
||||
if letter in string.punctuation:
|
||||
badName = True
|
||||
return badName
|
||||
|
||||
@staticmethod
|
||||
def stringOrderedDict(dictionary):
|
||||
sorted_ = OrderedDict(sorted(dictionary.items(), key=lambda t: t[0]))
|
||||
|
|
116
presetmanager.py
116
presetmanager.py
|
@ -15,6 +15,11 @@ class PresetManager(QtGui.QDialog):
|
|||
self.window = window
|
||||
self.findPresets()
|
||||
self.lastFilter = '*'
|
||||
self.presetRows = [] # list of (comp, vers, name) tuples
|
||||
|
||||
# connect button signals
|
||||
self.window.pushButton_delete.clicked.connect(self.openDeletePresetDialog)
|
||||
self.window.pushButton_rename.clicked.connect(self.openRenamePresetDialog)
|
||||
|
||||
# create filter box and preset list
|
||||
self.drawFilterList()
|
||||
|
@ -30,6 +35,7 @@ class PresetManager(QtGui.QDialog):
|
|||
self.window.lineEdit_search.setCompleter(completer)
|
||||
|
||||
def show(self):
|
||||
'''Open a new preset manager window from the mainwindow'''
|
||||
presetNames = []
|
||||
for presetList in self.presets.values():
|
||||
for preset in presetList:
|
||||
|
@ -70,11 +76,13 @@ class PresetManager(QtGui.QDialog):
|
|||
self.lastFilter = str(filter)
|
||||
else:
|
||||
filter = str(self.lastFilter)
|
||||
self.presetRows = []
|
||||
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))
|
||||
self.presetRows.append((component, vers, preset))
|
||||
|
||||
def drawFilterList(self):
|
||||
self.window.comboBox_filter.clear()
|
||||
|
@ -83,9 +91,10 @@ class PresetManager(QtGui.QDialog):
|
|||
self.window.comboBox_filter.addItem(component)
|
||||
|
||||
def openSavePresetDialog(self):
|
||||
'''Functions on mainwindow level from the context menu'''
|
||||
window = self.parent.window
|
||||
self.selectedComponents = self.parent.core.selectedComponents
|
||||
componentList = window.listWidget_componentList
|
||||
componentList = self.parent.window.listWidget_componentList
|
||||
|
||||
if componentList.currentRow() == -1:
|
||||
return
|
||||
|
@ -100,15 +109,8 @@ class PresetManager(QtGui.QDialog):
|
|||
currentPreset
|
||||
)
|
||||
if OK:
|
||||
badName = False
|
||||
for letter in newName:
|
||||
if letter in string.punctuation:
|
||||
badName = True
|
||||
if badName:
|
||||
# some filesystems don't like bizarre characters
|
||||
self.parent.showMessage(
|
||||
msg='Preset names must contain only letters,'
|
||||
'numbers, and spaces.')
|
||||
if core.Core.badName(newName):
|
||||
self.warnMessage()
|
||||
continue
|
||||
if newName:
|
||||
if index != -1:
|
||||
|
@ -116,21 +118,30 @@ class PresetManager(QtGui.QDialog):
|
|||
self.selectedComponents[index].savePreset()
|
||||
componentName = str(self.selectedComponents[index]).strip()
|
||||
vers = self.selectedComponents[index].version()
|
||||
self.createPresetFile(
|
||||
self.createNewPreset(
|
||||
componentName, vers, saveValueStore, newName)
|
||||
self.selectedComponents[index].currentPreset = newName
|
||||
self.findPresets()
|
||||
self.drawPresetList()
|
||||
break
|
||||
|
||||
def createPresetFile(self, compName, vers, saveValueStore, filename):
|
||||
def createNewPreset(self, compName, vers, saveValueStore, filename):
|
||||
path = os.path.join(self.presetDir, compName, str(vers), filename)
|
||||
if self.presetExists(path):
|
||||
return
|
||||
self.core.createPresetFile(compName, vers, saveValueStore, filename)
|
||||
|
||||
def presetExists(self, path):
|
||||
if os.path.exists(path):
|
||||
ch = self.parent.showMessage(
|
||||
msg="%s already exists! Overwrite it?" % filename,
|
||||
msg="%s already exists! Overwrite it?" %
|
||||
os.path.basename(path),
|
||||
showCancel=True, icon=QtGui.QMessageBox.Warning)
|
||||
if not ch:
|
||||
return
|
||||
self.core.createPresetFile(compName, vers, saveValueStore, filename)
|
||||
self.drawPresetList()
|
||||
# user clicked cancel
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
def openPreset(self, presetName):
|
||||
componentList = self.parent.window.listWidget_componentList
|
||||
|
@ -156,3 +167,76 @@ class PresetManager(QtGui.QDialog):
|
|||
self.parent.updateComponentTitle(index)
|
||||
self.parent.drawPreview()
|
||||
|
||||
def openDeletePresetDialog(self):
|
||||
selected = self.window.listWidget_presets.selectedItems()
|
||||
if not selected:
|
||||
return
|
||||
row = self.window.listWidget_presets.row(selected[0])
|
||||
comp, vers, name = self.presetRows[row]
|
||||
ch = self.parent.showMessage(
|
||||
msg='Really delete %s?' % name,
|
||||
showCancel=True, icon=QtGui.QMessageBox.Warning
|
||||
)
|
||||
if not ch:
|
||||
return
|
||||
self.deletePreset(comp, vers, name)
|
||||
self.findPresets()
|
||||
self.drawPresetList()
|
||||
|
||||
def deletePreset(self, comp, vers, name):
|
||||
filepath = os.path.join(self.presetDir, comp, str(vers), name)
|
||||
os.remove(filepath)
|
||||
|
||||
def warnMessage(self):
|
||||
self.parent.showMessage(
|
||||
msg='Preset names must contain only letters, '
|
||||
'numbers, and spaces.')
|
||||
|
||||
def openRenamePresetDialog(self):
|
||||
presetList = self.window.listWidget_presets
|
||||
if presetList.currentRow() == -1:
|
||||
return
|
||||
|
||||
while True:
|
||||
index = presetList.currentRow()
|
||||
newName, OK = QtGui.QInputDialog.getText(
|
||||
self.window,
|
||||
'Preset Manager',
|
||||
'Rename Preset:',
|
||||
QtGui.QLineEdit.Normal,
|
||||
self.presetRows[index][2]
|
||||
)
|
||||
if OK:
|
||||
if core.Core.badName(newName):
|
||||
self.warnMessage()
|
||||
continue
|
||||
if newName:
|
||||
comp, vers, oldName = self.presetRows[index]
|
||||
path = os.path.join(
|
||||
self.presetDir, comp, str(vers))
|
||||
newPath = os.path.join(path, newName)
|
||||
oldPath = os.path.join(path, oldName)
|
||||
if self.presetExists(newPath):
|
||||
return
|
||||
if os.path.exists(newPath):
|
||||
os.remove(newPath)
|
||||
os.rename(oldPath, newPath)
|
||||
self.findPresets()
|
||||
self.drawPresetList()
|
||||
break
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
Reference in New Issue