From 7662284b4ba68a7a279f4b336d518344d7ea1216 Mon Sep 17 00:00:00 2001 From: "Veronica K. B. Olsen" Date: Mon, 10 Jun 2019 12:16:19 +0200 Subject: [PATCH 1/3] Made autoreplace list add/delete/save instead of just add/delete --- nw/gui/projecteditor.py | 100 +++++++++++++++++++++++++++------------- 1 file changed, 69 insertions(+), 31 deletions(-) diff --git a/nw/gui/projecteditor.py b/nw/gui/projecteditor.py index b148dc25..02189319 100644 --- a/nw/gui/projecteditor.py +++ b/nw/gui/projecteditor.py @@ -311,6 +311,7 @@ class GuiProjectEditReplace(QWidget): self.bottomBox = QHBoxLayout() self.listBox = QTreeWidget() self.listBox.setHeaderLabels(["Keyword","Replace With"]) + self.listBox.itemSelectionChanged.connect(self._selectedItem) self.listBox.setIndentation(0) for aKey, aVal in self.theProject.autoReplace.items(): @@ -319,14 +320,17 @@ class GuiProjectEditReplace(QWidget): self.editKey = QLineEdit() self.editValue = QLineEdit() + self.saveButton = QPushButton(QIcon.fromTheme("document-save"),"") self.addButton = QPushButton(QIcon.fromTheme("list-add"),"") self.delButton = QPushButton(QIcon.fromTheme("list-remove"),"") + self.saveButton.clicked.connect(self._saveEntry) self.addButton.clicked.connect(self._addEntry) self.delButton.clicked.connect(self._delEntry) self.bottomBox.addWidget(self.editKey, 2) self.bottomBox.addWidget(self.editValue, 3) + self.bottomBox.addWidget(self.saveButton) self.bottomBox.addWidget(self.addButton) self.bottomBox.addWidget(self.delButton) @@ -336,41 +340,75 @@ class GuiProjectEditReplace(QWidget): 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): newList = {} for n in range(self.listBox.topLevelItemCount()): tItem = self.listBox.topLevelItem(n) - aKey = tItem.text(0) - aVal = tItem.text(1) - if len(aKey) > 2: - newList[aKey[1:-1]] = aVal + aKey = self._stripNotAllowed(tItem.text(0)) + aVal = tItem.text(1) + if len(aKey) > 0: + newList[aKey] = aVal 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) + 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 = "" % (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 From 3f2a5e47133ea6452ffb4e442f4d3477043300b7 Mon Sep 17 00:00:00 2001 From: "Veronica K. B. Olsen" Date: Mon, 10 Jun 2019 12:23:22 +0200 Subject: [PATCH 2/3] Made the name edits autoselectall on list selection in project settings --- nw/gui/projecteditor.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/nw/gui/projecteditor.py b/nw/gui/projecteditor.py index 02189319..c440dca4 100644 --- a/nw/gui/projecteditor.py +++ b/nw/gui/projecteditor.py @@ -277,6 +277,8 @@ class GuiProjectEditStatus(QWidget): newIcon.fill(self.selColour) self.editName.setText(selVal[0]) self.colButton.setIcon(QIcon(newIcon)) + self.editName.selectAll() + self.editName.setFocus() return ## @@ -362,6 +364,8 @@ class GuiProjectEditReplace(QWidget): editVal = selItem.text(1) self.editKey.setText(editKey) self.editValue.setText(editVal) + self.editKey.selectAll() + self.editKey.setFocus() return True def _saveEntry(self): From 50b2bf1569b8790901608f1f8c40783a55ba18ff Mon Sep 17 00:00:00 2001 From: "Veronica K. B. Olsen" Date: Mon, 10 Jun 2019 12:23:36 +0200 Subject: [PATCH 3/3] Fixed gui test --- tests/test_gui.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/tests/test_gui.py b/tests/test_gui.py index 7226f6d3..5954ebbe 100644 --- a/tests/test_gui.py +++ b/tests/test_gui.py @@ -315,18 +315,25 @@ def testProjectEditor(qtbot, nwTempGUI, nwRef): # Auto-Replace Tab projEdit.tabWidget.setCurrentWidget(projEdit.tabReplace) + + qtbot.mouseClick(projEdit.tabReplace.addButton, Qt.LeftButton) + projEdit.tabReplace.listBox.topLevelItem(0).setSelected(True) for c in "Th is ": qtbot.keyClick(projEdit.tabReplace.editKey, c, delay=keyDelay) for c in "With This Stuff ": 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": qtbot.keyClick(projEdit.tabReplace.editKey, c, delay=keyDelay) for c in "This Stuff": 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) qtbot.mouseClick(projEdit.tabReplace.delButton, Qt.LeftButton)