Don't allow merging root folders

This commit is contained in:
Veronica Berglyd Olsen
2022-10-09 21:30:21 +02:00
parent 23b73dd936
commit d9a59bccda
+42 -52
View File
@@ -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