Don't allow merging root folders
This commit is contained in:
+42
-52
@@ -1110,67 +1110,55 @@ class GuiProjectTree(QTreeWidget):
|
|||||||
# Transform Item
|
# Transform Item
|
||||||
# ==============
|
# ==============
|
||||||
|
|
||||||
mTrans = ctxMenu.addMenu(self.tr("Transform"))
|
if not isRoot:
|
||||||
|
mTrans = ctxMenu.addMenu(self.tr("Transform"))
|
||||||
|
|
||||||
if isFile and tItem.documentAllowed():
|
trDoc = trConst(nwLabels.LAYOUT_NAME[nwItemLayout.DOCUMENT])
|
||||||
if tItem.isNoteLayout():
|
trNote = trConst(nwLabels.LAYOUT_NAME[nwItemLayout.NOTE])
|
||||||
|
|
||||||
|
isDocFile = tItem.isDocumentLayout() and isFile
|
||||||
|
isNoteFile = tItem.isNoteLayout() and isFile
|
||||||
|
|
||||||
|
if (isNoteFile or isFolder) and tItem.documentAllowed():
|
||||||
mTrans.addAction(
|
mTrans.addAction(
|
||||||
self.tr("Convert to {0}").format(
|
self.tr("Convert to {0}").format(trDoc),
|
||||||
trConst(nwLabels.LAYOUT_NAME[nwItemLayout.DOCUMENT])
|
|
||||||
),
|
|
||||||
lambda: self._changeItemLayout(tHandle, nwItemLayout.DOCUMENT)
|
lambda: self._changeItemLayout(tHandle, nwItemLayout.DOCUMENT)
|
||||||
)
|
)
|
||||||
else:
|
|
||||||
|
if isDocFile or isFolder:
|
||||||
mTrans.addAction(
|
mTrans.addAction(
|
||||||
self.tr("Convert to {0}").format(
|
self.tr("Convert to {0}").format(trNote),
|
||||||
trConst(nwLabels.LAYOUT_NAME[nwItemLayout.NOTE])
|
|
||||||
),
|
|
||||||
lambda: self._changeItemLayout(tHandle, nwItemLayout.NOTE)
|
lambda: self._changeItemLayout(tHandle, nwItemLayout.NOTE)
|
||||||
)
|
)
|
||||||
elif isFolder:
|
|
||||||
if tItem.documentAllowed():
|
|
||||||
mTrans.addAction(
|
|
||||||
self.tr("Convert to {0}").format(
|
|
||||||
trConst(nwLabels.LAYOUT_NAME[nwItemLayout.DOCUMENT])
|
|
||||||
),
|
|
||||||
lambda: self._covertFolderToFile(tHandle, nwItemLayout.DOCUMENT)
|
|
||||||
)
|
|
||||||
mTrans.addAction(
|
|
||||||
self.tr("Convert to {0}").format(
|
|
||||||
trConst(nwLabels.LAYOUT_NAME[nwItemLayout.NOTE])
|
|
||||||
),
|
|
||||||
lambda: self._covertFolderToFile(tHandle, nwItemLayout.NOTE)
|
|
||||||
)
|
|
||||||
|
|
||||||
if hasChild:
|
if hasChild:
|
||||||
|
if isFile:
|
||||||
|
mTrans.addAction(
|
||||||
|
self.tr("Merge Child Items into Self"),
|
||||||
|
lambda: self._mergeDocuments(tHandle, False)
|
||||||
|
)
|
||||||
|
mTrans.addAction(
|
||||||
|
self.tr("Merge Child Items into New"),
|
||||||
|
lambda: self._mergeDocuments(tHandle, True)
|
||||||
|
)
|
||||||
|
elif isFolder:
|
||||||
|
mTrans.addAction(
|
||||||
|
self.tr("Combine Documents in Folder"),
|
||||||
|
lambda: self._mergeDocuments(tHandle, True)
|
||||||
|
)
|
||||||
|
|
||||||
if isFile:
|
if isFile:
|
||||||
mTrans.addAction(
|
mTrans.addAction(
|
||||||
self.tr("Merge Child Items into Self"),
|
self.tr("Split Document by Header"),
|
||||||
lambda: self._mergeDocuments(tHandle, False)
|
lambda: self._splitDocument(tHandle)
|
||||||
)
|
|
||||||
mTrans.addAction(
|
|
||||||
self.tr("Merge Child Items into New"),
|
|
||||||
lambda: self._mergeDocuments(tHandle, True)
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
mTrans.addAction(
|
|
||||||
self.tr("Combine Documents in Folder"),
|
|
||||||
lambda: self._mergeDocuments(tHandle, True)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if isFile:
|
# Expand/Collapse/Delete
|
||||||
mTrans.addAction(
|
# ======================
|
||||||
self.tr("Split Document by Header"),
|
|
||||||
lambda: self._splitDocument(tHandle)
|
|
||||||
)
|
|
||||||
|
|
||||||
ctxMenu.addSeparator()
|
ctxMenu.addSeparator()
|
||||||
|
|
||||||
# Expand/Collapse
|
|
||||||
# ===============
|
|
||||||
|
|
||||||
if hasChild:
|
if hasChild:
|
||||||
ctxMenu.addSeparator()
|
|
||||||
ctxMenu.addAction(
|
ctxMenu.addAction(
|
||||||
self.tr("Expand All"),
|
self.tr("Expand All"),
|
||||||
lambda: self.setExpandedFromHandle(tHandle, True)
|
lambda: self.setExpandedFromHandle(tHandle, True)
|
||||||
@@ -1180,9 +1168,6 @@ class GuiProjectTree(QTreeWidget):
|
|||||||
lambda: self.setExpandedFromHandle(tHandle, False)
|
lambda: self.setExpandedFromHandle(tHandle, False)
|
||||||
)
|
)
|
||||||
|
|
||||||
# Delete Item
|
|
||||||
# ===========
|
|
||||||
|
|
||||||
if tItem.itemClass == nwItemClass.TRASH or isRoot or (isFolder and not hasChild):
|
if tItem.itemClass == nwItemClass.TRASH or isRoot or (isFolder and not hasChild):
|
||||||
ctxMenu.addAction(
|
ctxMenu.addAction(
|
||||||
self.tr("Delete Permanently"), lambda: self.permanentlyDeleteItem(tHandle)
|
self.tr("Delete Permanently"), lambda: self.permanentlyDeleteItem(tHandle)
|
||||||
@@ -1192,6 +1177,7 @@ class GuiProjectTree(QTreeWidget):
|
|||||||
self.tr("Move to Trash"), lambda: self.moveItemToTrash(tHandle)
|
self.tr("Move to Trash"), lambda: self.moveItemToTrash(tHandle)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Show Context Menu
|
||||||
ctxMenu.exec_(self.viewport().mapToGlobal(clickPos))
|
ctxMenu.exec_(self.viewport().mapToGlobal(clickPos))
|
||||||
|
|
||||||
return True
|
return True
|
||||||
@@ -1403,7 +1389,11 @@ class GuiProjectTree(QTreeWidget):
|
|||||||
|
|
||||||
tItem = self.theProject.tree[tHandle]
|
tItem = self.theProject.tree[tHandle]
|
||||||
if tItem is None:
|
if tItem is None:
|
||||||
return
|
return False
|
||||||
|
|
||||||
|
if tItem.isRootType():
|
||||||
|
logger.error("Cannot merge root item")
|
||||||
|
return False
|
||||||
|
|
||||||
if not newFile:
|
if not newFile:
|
||||||
itemList.remove(tHandle)
|
itemList.remove(tHandle)
|
||||||
@@ -1427,7 +1417,7 @@ class GuiProjectTree(QTreeWidget):
|
|||||||
docMerger.setTargetDoc(tHandle)
|
docMerger.setTargetDoc(tHandle)
|
||||||
mHandle = tHandle
|
mHandle = tHandle
|
||||||
else:
|
else:
|
||||||
return
|
return False
|
||||||
|
|
||||||
for sHandle in mrgData.get("finalItems", []):
|
for sHandle in mrgData.get("finalItems", []):
|
||||||
docMerger.appendText(sHandle, True, mLabel)
|
docMerger.appendText(sHandle, True, mLabel)
|
||||||
@@ -1436,7 +1426,7 @@ class GuiProjectTree(QTreeWidget):
|
|||||||
self.mainGui.makeAlert([
|
self.mainGui.makeAlert([
|
||||||
self.tr("Could not save document."), docMerger.getError()
|
self.tr("Could not save document."), docMerger.getError()
|
||||||
], nwAlert.ERROR)
|
], nwAlert.ERROR)
|
||||||
return
|
return False
|
||||||
|
|
||||||
if newFile:
|
if newFile:
|
||||||
self.mainGui.projView.revealNewTreeItem(mHandle, tHandle)
|
self.mainGui.projView.revealNewTreeItem(mHandle, tHandle)
|
||||||
@@ -1453,7 +1443,7 @@ class GuiProjectTree(QTreeWidget):
|
|||||||
self._alertTreeChange(mHandle, flush=True)
|
self._alertTreeChange(mHandle, flush=True)
|
||||||
self.projView.wordCountsChanged.emit()
|
self.projView.wordCountsChanged.emit()
|
||||||
|
|
||||||
return
|
return True
|
||||||
|
|
||||||
def _splitDocument(self, tHandle):
|
def _splitDocument(self, tHandle):
|
||||||
return
|
return
|
||||||
|
|||||||
Reference in New Issue
Block a user