Merge branch 'master' into autoreplace
This commit is contained in:
@@ -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
@@ -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
@@ -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
@@ -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):
|
||||||
|
|||||||
Reference in New Issue
Block a user