Merge branch 'master' into autoreplace

This commit is contained in:
Veronica K. B. Olsen
2019-06-08 16:03:23 +02:00
4 changed files with 58 additions and 30 deletions
+3
View File
@@ -200,6 +200,9 @@ class GuiDocEditor(QTextEdit):
def docAction(self, theAction): def docAction(self, theAction):
logger.verbose("Requesting action: %s" % theAction.name) logger.verbose("Requesting action: %s" % theAction.name)
if not self.theParent.hasProject:
logger.error("No project open")
return False
if theAction == nwDocAction.UNDO: self.undo() if theAction == nwDocAction.UNDO: self.undo()
elif theAction == nwDocAction.REDO: self.redo() elif theAction == nwDocAction.REDO: self.redo()
elif theAction == nwDocAction.CUT: self.cut() elif theAction == nwDocAction.CUT: self.cut()
+19 -9
View File
@@ -92,6 +92,9 @@ class GuiDocTree(QTreeWidget):
pHandle = self.getSelectedHandle() pHandle = self.getSelectedHandle()
if not self.theParent.hasProject:
return False
if itemClass is None and pHandle is not None: if itemClass is None and pHandle is not None:
itemClass = self.theProject.getItem(pHandle).itemClass itemClass = self.theProject.getItem(pHandle).itemClass
if itemClass is None: if itemClass is None:
@@ -149,7 +152,7 @@ class GuiDocTree(QTreeWidget):
"""Move an item up or down in the tree, but only if the treeView has focus. This also """Move an item up or down in the tree, but only if the treeView has focus. This also
applies when the menu is used. applies when the menu is used.
""" """
if QApplication.focusWidget() == self: if QApplication.focusWidget() == self and self.theParent.hasProject:
tHandle = self.getSelectedHandle() tHandle = self.getSelectedHandle()
tItem = self._getTreeItem(tHandle) tItem = self._getTreeItem(tHandle)
pItem = tItem.parent() pItem = tItem.parent()
@@ -157,20 +160,24 @@ class GuiDocTree(QTreeWidget):
tIndex = self.indexOfTopLevelItem(tItem) tIndex = self.indexOfTopLevelItem(tItem)
nChild = self.topLevelItemCount() nChild = self.topLevelItemCount()
nIndex = tIndex + nStep nIndex = tIndex + nStep
if nIndex < 0 or nIndex >= nChild: return if nIndex < 0 or nIndex >= nChild:
return False
cItem = self.takeTopLevelItem(tIndex) cItem = self.takeTopLevelItem(tIndex)
self.insertTopLevelItem(nIndex, cItem) self.insertTopLevelItem(nIndex, cItem)
else: else:
tIndex = pItem.indexOfChild(tItem) tIndex = pItem.indexOfChild(tItem)
nChild = pItem.childCount() nChild = pItem.childCount()
nIndex = tIndex + nStep nIndex = tIndex + nStep
if nIndex < 0 or nIndex >= nChild: return if nIndex < 0 or nIndex >= nChild:
return False
cItem = pItem.takeChild(tIndex) cItem = pItem.takeChild(tIndex)
pItem.insertChild(nIndex, cItem) pItem.insertChild(nIndex, cItem)
self.clearSelection() self.clearSelection()
cItem.setSelected(True) cItem.setSelected(True)
self.theProject.setProjectChanged(True) self.theProject.setProjectChanged(True)
return else:
return False
return True
def saveTreeOrder(self): def saveTreeOrder(self):
theList = [] theList = []
@@ -199,6 +206,9 @@ class GuiDocTree(QTreeWidget):
if tHandle is None: if tHandle is None:
tHandle = self.getSelectedHandle() tHandle = self.getSelectedHandle()
if tHandle is None:
return False
trItemS = self._getTreeItem(tHandle) trItemS = self._getTreeItem(tHandle)
nwItemS = self.theProject.getItem(tHandle) nwItemS = self.theProject.getItem(tHandle)
@@ -208,7 +218,7 @@ class GuiDocTree(QTreeWidget):
trItemT = self._addTrashRoot() trItemT = self._addTrashRoot()
if trItemP is None or trItemT is None: if trItemP is None or trItemT is None:
logger.error("Could not move item to trash") logger.error("Could not move item to trash")
return return False
tIndex = trItemP.indexOfChild(trItemS) tIndex = trItemP.indexOfChild(trItemS)
trItemC = trItemP.takeChild(tIndex) trItemC = trItemP.takeChild(tIndex)
trItemT.addChild(trItemC) trItemT.addChild(trItemC)
@@ -222,7 +232,7 @@ class GuiDocTree(QTreeWidget):
trItemP = trItemS.parent() trItemP = trItemS.parent()
if trItemP is None: if trItemP is None:
logger.error("Could not delete folder") logger.error("Could not delete folder")
return return False
tIndex = trItemP.indexOfChild(trItemS) tIndex = trItemP.indexOfChild(trItemS)
if trItemS.childCount() == 0: if trItemS.childCount() == 0:
trItemP.takeChild(tIndex) trItemP.takeChild(tIndex)
@@ -231,7 +241,7 @@ class GuiDocTree(QTreeWidget):
self.theProject.deleteItem(tHandle) self.theProject.deleteItem(tHandle)
else: else:
self.makeAlert(["Cannot delete folder.","It is not empty."], nwAlert.ERROR) self.makeAlert(["Cannot delete folder.","It is not empty."], nwAlert.ERROR)
return return False
elif nwItemS.itemType == nwItemType.ROOT: elif nwItemS.itemType == nwItemType.ROOT:
logger.debug("User requested root folder %s deleted" % tHandle) logger.debug("User requested root folder %s deleted" % tHandle)
@@ -242,9 +252,9 @@ class GuiDocTree(QTreeWidget):
self.theProject.setProjectChanged(True) self.theProject.setProjectChanged(True)
else: else:
self.makeAlert(["Cannot delete root folder.","It is not empty."], nwAlert.ERROR) self.makeAlert(["Cannot delete root folder.","It is not empty."], nwAlert.ERROR)
return return False
return return True
def setTreeItemValues(self, tHandle): def setTreeItemValues(self, tHandle):
+10 -5
View File
@@ -81,8 +81,9 @@ class GuiMainMenu(QMenuBar):
return return
def updateSpellCheck(self): def updateSpellCheck(self):
self.toolsSpellCheck.setChecked(self.theProject.spellCheck) if self.theParent.hasProject:
logger.verbose("Spell check is set to %s" % str(self.theProject.spellCheck)) self.toolsSpellCheck.setChecked(self.theProject.spellCheck)
logger.verbose("Spell check is set to %s" % str(self.theProject.spellCheck))
return return
## ##
@@ -94,9 +95,12 @@ class GuiMainMenu(QMenuBar):
return return
def _toggleSpellCheck(self): def _toggleSpellCheck(self):
self.theProject.setSpellCheck(self.toolsSpellCheck.isChecked()) if self.theParent.hasProject:
self.theParent.docEditor.setSpellCheck(self.toolsSpellCheck.isChecked()) self.theProject.setSpellCheck(self.toolsSpellCheck.isChecked())
logger.verbose("Spell check is set to %s" % str(self.theProject.spellCheck)) self.theParent.docEditor.setSpellCheck(self.toolsSpellCheck.isChecked())
logger.verbose("Spell check is set to %s" % str(self.theProject.spellCheck))
else:
self.toolsSpellCheck.setChecked(False)
return True return True
def _showAbout(self): def _showAbout(self):
@@ -167,6 +171,7 @@ class GuiMainMenu(QMenuBar):
# Project > Project Settings # Project > Project Settings
menuItem = QAction(QIcon.fromTheme("document-properties"), "Project Settings", self) menuItem = QAction(QIcon.fromTheme("document-properties"), "Project Settings", self)
menuItem.setStatusTip("Project settings") menuItem.setStatusTip("Project settings")
menuItem.setShortcut("Ctrl+Shift+,")
menuItem.triggered.connect(self.theParent.editProjectDialog) menuItem.triggered.connect(self.theParent.editProjectDialog)
self.projMenu.addAction(menuItem) self.projMenu.addAction(menuItem)
+26 -16
View File
@@ -260,6 +260,9 @@ class GuiMain(QMainWindow):
def saveProject(self): def saveProject(self):
"""Save the current project. """Save the current project.
""" """
if not self.hasProject:
return False
# If the project is new, it may not have a path, so we need one # If the project is new, it may not have a path, so we need one
if self.theProject.projPath is None: if self.theProject.projPath is None:
projPath = self.saveProjectDialog() projPath = self.saveProjectDialog()
@@ -279,22 +282,24 @@ class GuiMain(QMainWindow):
## ##
def closeDocument(self): def closeDocument(self):
if self.docEditor.docChanged: if self.hasProject:
self.saveDocument() if self.docEditor.docChanged:
self.theDocument.clearDocument() self.saveDocument()
self.docEditor.clearEditor() self.theDocument.clearDocument()
self.docEditor.clearEditor()
return True return True
def openDocument(self, tHandle): def openDocument(self, tHandle):
self.closeDocument() if self.hasProject:
self.docEditor.loadText(tHandle) self.closeDocument()
self.docEditor.changeWidth() self.docEditor.loadText(tHandle)
self.docEditor.setFocus() self.docEditor.changeWidth()
self.theProject.setLastEdited(tHandle) self.docEditor.setFocus()
self.theProject.setLastEdited(tHandle)
return True return True
def saveDocument(self): def saveDocument(self):
if self.theDocument.theItem is not None: if self.theDocument.theItem is not None and self.hasProject:
docText = self.docEditor.getText() docText = self.docEditor.getText()
cursPos = self.docEditor.getCursorPosition() cursPos = self.docEditor.getCursorPosition()
theItem = self.theDocument.theItem theItem = self.theDocument.theItem
@@ -382,6 +387,9 @@ class GuiMain(QMainWindow):
def rebuildIndex(self): def rebuildIndex(self):
if not self.hasProject:
return False
logger.debug("Rebuilding indices ...") logger.debug("Rebuilding indices ...")
self.treeView.saveTreeOrder() self.treeView.saveTreeOrder()
@@ -427,7 +435,7 @@ class GuiMain(QMainWindow):
dlgProg.setValue(nItems) dlgProg.setValue(nItems)
return return True
## ##
# Main Dialogs # Main Dialogs
@@ -468,14 +476,16 @@ class GuiMain(QMainWindow):
return None return None
def editProjectDialog(self): def editProjectDialog(self):
dlgProj = GuiProjectEditor(self, self.theProject) if self.hasProject:
dlgProj.exec_() dlgProj = GuiProjectEditor(self, self.theProject)
self._setWindowTitle(self.theProject.projName) dlgProj.exec_()
self._setWindowTitle(self.theProject.projName)
return True return True
def showTimeLineDialog(self): def showTimeLineDialog(self):
dlgTLine = GuiTimeLineView(self, self.theProject, self.theIndex) if self.hasProject:
dlgTLine.exec_() dlgTLine = GuiTimeLineView(self, self.theProject, self.theIndex)
dlgTLine.exec_()
return True return True
def makeAlert(self, theMessage, theLevel=nwAlert.INFO): def makeAlert(self, theMessage, theLevel=nwAlert.INFO):