Merge pull request #29 from vkbo/improvements
Editable Auto-Replace Items
This commit is contained in:
+73
-31
@@ -277,6 +277,8 @@ class GuiProjectEditStatus(QWidget):
|
|||||||
newIcon.fill(self.selColour)
|
newIcon.fill(self.selColour)
|
||||||
self.editName.setText(selVal[0])
|
self.editName.setText(selVal[0])
|
||||||
self.colButton.setIcon(QIcon(newIcon))
|
self.colButton.setIcon(QIcon(newIcon))
|
||||||
|
self.editName.selectAll()
|
||||||
|
self.editName.setFocus()
|
||||||
return
|
return
|
||||||
|
|
||||||
##
|
##
|
||||||
@@ -311,6 +313,7 @@ class GuiProjectEditReplace(QWidget):
|
|||||||
self.bottomBox = QHBoxLayout()
|
self.bottomBox = QHBoxLayout()
|
||||||
self.listBox = QTreeWidget()
|
self.listBox = QTreeWidget()
|
||||||
self.listBox.setHeaderLabels(["Keyword","Replace With"])
|
self.listBox.setHeaderLabels(["Keyword","Replace With"])
|
||||||
|
self.listBox.itemSelectionChanged.connect(self._selectedItem)
|
||||||
self.listBox.setIndentation(0)
|
self.listBox.setIndentation(0)
|
||||||
|
|
||||||
for aKey, aVal in self.theProject.autoReplace.items():
|
for aKey, aVal in self.theProject.autoReplace.items():
|
||||||
@@ -319,14 +322,17 @@ class GuiProjectEditReplace(QWidget):
|
|||||||
|
|
||||||
self.editKey = QLineEdit()
|
self.editKey = QLineEdit()
|
||||||
self.editValue = QLineEdit()
|
self.editValue = QLineEdit()
|
||||||
|
self.saveButton = QPushButton(QIcon.fromTheme("document-save"),"")
|
||||||
self.addButton = QPushButton(QIcon.fromTheme("list-add"),"")
|
self.addButton = QPushButton(QIcon.fromTheme("list-add"),"")
|
||||||
self.delButton = QPushButton(QIcon.fromTheme("list-remove"),"")
|
self.delButton = QPushButton(QIcon.fromTheme("list-remove"),"")
|
||||||
|
|
||||||
|
self.saveButton.clicked.connect(self._saveEntry)
|
||||||
self.addButton.clicked.connect(self._addEntry)
|
self.addButton.clicked.connect(self._addEntry)
|
||||||
self.delButton.clicked.connect(self._delEntry)
|
self.delButton.clicked.connect(self._delEntry)
|
||||||
|
|
||||||
self.bottomBox.addWidget(self.editKey, 2)
|
self.bottomBox.addWidget(self.editKey, 2)
|
||||||
self.bottomBox.addWidget(self.editValue, 3)
|
self.bottomBox.addWidget(self.editValue, 3)
|
||||||
|
self.bottomBox.addWidget(self.saveButton)
|
||||||
self.bottomBox.addWidget(self.addButton)
|
self.bottomBox.addWidget(self.addButton)
|
||||||
self.bottomBox.addWidget(self.delButton)
|
self.bottomBox.addWidget(self.delButton)
|
||||||
|
|
||||||
@@ -336,41 +342,77 @@ class GuiProjectEditReplace(QWidget):
|
|||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
def _addEntry(self):
|
|
||||||
|
|
||||||
newKey = self.editKey.text()
|
|
||||||
newVal = self.editValue.text()
|
|
||||||
|
|
||||||
saveKey = ""
|
|
||||||
for c in newKey:
|
|
||||||
if not c .isspace():
|
|
||||||
saveKey += c
|
|
||||||
|
|
||||||
if len(saveKey) > 0 and len(newVal) > 0:
|
|
||||||
newItem = QTreeWidgetItem(["<%s>" % saveKey, newVal])
|
|
||||||
self.listBox.addTopLevelItem(newItem)
|
|
||||||
self.editKey.clear()
|
|
||||||
self.editValue.clear()
|
|
||||||
self.arChanged = True
|
|
||||||
|
|
||||||
return True
|
|
||||||
|
|
||||||
def _delEntry(self):
|
|
||||||
selItem = self.listBox.selectedItems()
|
|
||||||
if len(selItem) == 0:
|
|
||||||
return False
|
|
||||||
self.listBox.takeTopLevelItem(self.listBox.indexOfTopLevelItem(selItem[0]))
|
|
||||||
self.arChanged = True
|
|
||||||
return True
|
|
||||||
|
|
||||||
def getNewList(self):
|
def getNewList(self):
|
||||||
newList = {}
|
newList = {}
|
||||||
for n in range(self.listBox.topLevelItemCount()):
|
for n in range(self.listBox.topLevelItemCount()):
|
||||||
tItem = self.listBox.topLevelItem(n)
|
tItem = self.listBox.topLevelItem(n)
|
||||||
aKey = tItem.text(0)
|
aKey = self._stripNotAllowed(tItem.text(0))
|
||||||
aVal = tItem.text(1)
|
aVal = tItem.text(1)
|
||||||
if len(aKey) > 2:
|
if len(aKey) > 0:
|
||||||
newList[aKey[1:-1]] = aVal
|
newList[aKey] = aVal
|
||||||
return newList
|
return newList
|
||||||
|
|
||||||
|
##
|
||||||
|
# Internal Functions
|
||||||
|
##
|
||||||
|
|
||||||
|
def _selectedItem(self):
|
||||||
|
selItem = self._getSelectedItem()
|
||||||
|
if selItem is None:
|
||||||
|
return False
|
||||||
|
editKey = self._stripNotAllowed(selItem.text(0))
|
||||||
|
editVal = selItem.text(1)
|
||||||
|
self.editKey.setText(editKey)
|
||||||
|
self.editValue.setText(editVal)
|
||||||
|
self.editKey.selectAll()
|
||||||
|
self.editKey.setFocus()
|
||||||
|
return True
|
||||||
|
|
||||||
|
def _saveEntry(self):
|
||||||
|
|
||||||
|
selItem = self._getSelectedItem()
|
||||||
|
if selItem is None:
|
||||||
|
return False
|
||||||
|
|
||||||
|
newKey = self.editKey.text()
|
||||||
|
newVal = self.editValue.text()
|
||||||
|
saveKey = self._stripNotAllowed(newKey)
|
||||||
|
|
||||||
|
if len(saveKey) > 0 and len(newVal) > 0:
|
||||||
|
selItem.setText(0,"<%s>" % saveKey)
|
||||||
|
selItem.setText(1,newVal)
|
||||||
|
self.editKey.clear()
|
||||||
|
self.editValue.clear()
|
||||||
|
self.arChanged = True
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
|
def _addEntry(self):
|
||||||
|
saveKey = "<keyword%d>" % (self.listBox.topLevelItemCount() + 1)
|
||||||
|
newVal = ""
|
||||||
|
newItem = QTreeWidgetItem([saveKey, newVal])
|
||||||
|
self.listBox.addTopLevelItem(newItem)
|
||||||
|
return True
|
||||||
|
|
||||||
|
def _delEntry(self):
|
||||||
|
selItem = self._getSelectedItem()
|
||||||
|
if selItem is None:
|
||||||
|
return False
|
||||||
|
self.listBox.takeTopLevelItem(self.listBox.indexOfTopLevelItem(selItem))
|
||||||
|
self.arChanged = True
|
||||||
|
return True
|
||||||
|
|
||||||
|
def _getSelectedItem(self):
|
||||||
|
selItem = self.listBox.selectedItems()
|
||||||
|
if len(selItem) == 0:
|
||||||
|
return None
|
||||||
|
return selItem[0]
|
||||||
|
|
||||||
|
def _stripNotAllowed(self, theKey):
|
||||||
|
retKey = ""
|
||||||
|
for c in theKey:
|
||||||
|
if c.isalnum():
|
||||||
|
retKey += c
|
||||||
|
return retKey
|
||||||
|
|
||||||
# END Class GuiProjectEditReplace
|
# END Class GuiProjectEditReplace
|
||||||
|
|||||||
+9
-2
@@ -315,18 +315,25 @@ def testProjectEditor(qtbot, nwTempGUI, nwRef):
|
|||||||
|
|
||||||
# Auto-Replace Tab
|
# Auto-Replace Tab
|
||||||
projEdit.tabWidget.setCurrentWidget(projEdit.tabReplace)
|
projEdit.tabWidget.setCurrentWidget(projEdit.tabReplace)
|
||||||
|
|
||||||
|
qtbot.mouseClick(projEdit.tabReplace.addButton, Qt.LeftButton)
|
||||||
|
projEdit.tabReplace.listBox.topLevelItem(0).setSelected(True)
|
||||||
for c in "Th is ":
|
for c in "Th is ":
|
||||||
qtbot.keyClick(projEdit.tabReplace.editKey, c, delay=keyDelay)
|
qtbot.keyClick(projEdit.tabReplace.editKey, c, delay=keyDelay)
|
||||||
for c in "With This Stuff ":
|
for c in "With This Stuff ":
|
||||||
qtbot.keyClick(projEdit.tabReplace.editValue, c, delay=keyDelay)
|
qtbot.keyClick(projEdit.tabReplace.editValue, c, delay=keyDelay)
|
||||||
qtbot.mouseClick(projEdit.tabReplace.addButton, Qt.LeftButton)
|
qtbot.mouseClick(projEdit.tabReplace.saveButton, Qt.LeftButton)
|
||||||
|
|
||||||
|
projEdit.tabReplace.listBox.clearSelection()
|
||||||
|
qtbot.mouseClick(projEdit.tabReplace.addButton, Qt.LeftButton)
|
||||||
|
projEdit.tabReplace.listBox.topLevelItem(1).setSelected(True)
|
||||||
for c in "Delete":
|
for c in "Delete":
|
||||||
qtbot.keyClick(projEdit.tabReplace.editKey, c, delay=keyDelay)
|
qtbot.keyClick(projEdit.tabReplace.editKey, c, delay=keyDelay)
|
||||||
for c in "This Stuff":
|
for c in "This Stuff":
|
||||||
qtbot.keyClick(projEdit.tabReplace.editValue, c, delay=keyDelay)
|
qtbot.keyClick(projEdit.tabReplace.editValue, c, delay=keyDelay)
|
||||||
qtbot.mouseClick(projEdit.tabReplace.addButton, Qt.LeftButton)
|
qtbot.mouseClick(projEdit.tabReplace.saveButton, Qt.LeftButton)
|
||||||
|
|
||||||
|
projEdit.tabReplace.listBox.clearSelection()
|
||||||
projEdit.tabReplace.listBox.topLevelItem(1).setSelected(True)
|
projEdit.tabReplace.listBox.topLevelItem(1).setSelected(True)
|
||||||
qtbot.mouseClick(projEdit.tabReplace.delButton, Qt.LeftButton)
|
qtbot.mouseClick(projEdit.tabReplace.delButton, Qt.LeftButton)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user