# -*- coding: utf-8 -*- from PyQt5 import QtGui,QtCore,uic,QtWidgets import sys qtCreatorFile = './ui/Scheme.ui' # Enter file here. Ui_SymbolWindow, QtBaseClass = uic.loadUiType(qtCreatorFile) class SchemeItem(QtWidgets.QListWidgetItem): def __init__(self, name, parent = None): super(SchemeItem, self).__init__(name, parent) self.uniqueName = name def getUniqueName(self): return self.uniqueName class SchemeWindow(QtWidgets.QScrollArea, Ui_SymbolWindow): def __init__(self, parent = None): QtWidgets.QScrollArea.__init__(self) Ui_SymbolWindow.__init__(self) self.setupUi(self) self.addSchemeButton.clicked.connect(self.onAddOrModifyScheme) self.showSchemeButton.clicked.connect(self.onShowScheme) self.deleteSchemeButton.clicked.connect(self.onDeleteScheme) self.schemeList.currentItemChanged.connect(self.onSchemeChanged) self.filterEdit.textEdited.connect(self.onTextEdited) def onTextEdited(self): self.updateScheme() def onSchemeChanged(self, currentItem, prevItem): if currentItem: self.nameEdit.setText(currentItem.getUniqueName()) def onAddOrModifyScheme(self): schemeName = self.nameEdit.text() if not schemeName: return from UIManager import UIManager scene = UIManager.instance().getScene() schemeNameList = scene.getSchemeNameList() isAdd = True if schemeName in schemeNameList: button = QtWidgets.QMessageBox.question(self, "Add Scheme", "\"%s\" already exists. Replace it?" % schemeName, QtWidgets.QMessageBox.Ok | QtWidgets.QMessageBox.No) if button != QtWidgets.QMessageBox.Ok: isAdd = False if isAdd: scene.addOrReplaceScheme(schemeName) self.updateScheme() def onShowScheme(self): item = self.schemeList.currentItem() if not item: QtWidgets.QMessageBox.warning(self, "Warning", "Please select an item to show.") return schemeName = item.getUniqueName() from UIManager import UIManager scene = UIManager.instance().getScene() scene.acquireLock() scene.showScheme(schemeName, True) scene.releaseLock() self.updateScheme() def onDeleteScheme(self): item = self.schemeList.currentItem() if not item: QtWidgets.QMessageBox.warning(self, "Warning", "Please select an item to delete.") return from UIManager import UIManager scene = UIManager.instance().getScene() scene.deleteScheme(item.getUniqueName()) self.updateScheme() def updateScheme(self): from UIManager import UIManager scene = UIManager.instance().getScene() nameList = scene.getSchemeNameList() filter = self.filterEdit.text().lower() self.schemeList.clear() for name in nameList: if filter in name.lower(): self.schemeList.addItem(SchemeItem(name))