Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Convert folder to document or note #1128

Merged
merged 4 commits into from
Oct 1, 2022
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Improve the tree change method
  • Loading branch information
vkbo committed Sep 29, 2022
commit 9c4b3dbc08e2d0e9943e4d095eb28c9331bca0b4
44 changes: 25 additions & 19 deletions novelwriter/gui/projtree.py
Original file line number Diff line number Diff line change
Expand Up @@ -537,7 +537,7 @@ def revealNewTreeItem(self, tHandle, nHandle=None):
if pHandle is not None and pHandle in self._treeMap:
self._treeMap[pHandle].setExpanded(True)

self._alertTreeChange(tHandle=tHandle, flush=True)
self._alertTreeChange(tHandle, flush=True)
self.clearSelection()
trItem.setSelected(True)

Expand Down Expand Up @@ -577,7 +577,7 @@ def moveTreeItem(self, nStep):
pItem.insertChild(nIndex, cItem)
self._recordLastMove(cItem, pItem, tIndex)

self._alertTreeChange(tHandle=tHandle, flush=True)
self._alertTreeChange(tHandle, flush=True)
self.clearSelection()
trItem.setSelected(True)
trItem.setExpanded(isExp)
Expand All @@ -595,7 +595,7 @@ def renameTreeItem(self, tHandle):
if dlgOk:
tItem.setName(newLabel)
self.setTreeItemValues(tHandle)
self._alertTreeChange(tHandle=tHandle, flush=False)
self._alertTreeChange(tHandle, flush=False)

return

Expand Down Expand Up @@ -665,7 +665,7 @@ def emptyTrash(self):
self.deleteItem(tHandle, alreadyAsked=True, bulkAction=True)

if nTrash > 0:
self._alertTreeChange(tHandle=trashHandle, flush=True)
self._alertTreeChange(trashHandle, flush=True)

return True

Expand Down Expand Up @@ -707,7 +707,7 @@ def deleteItem(self, tHandle=None, alreadyAsked=False, bulkAction=False):
if trItemS.childCount() == 0:
self.takeTopLevelItem(tIndex)
self._deleteTreeItem(tHandle)
self._alertTreeChange(tHandle=tHandle, flush=True)
self._alertTreeChange(tHandle, flush=True)
else:
self.mainGui.makeAlert(self.tr(
"Cannot delete root folder. It is not empty. "
Expand All @@ -723,7 +723,7 @@ def deleteItem(self, tHandle=None, alreadyAsked=False, bulkAction=False):
tIndex = trItemP.indexOfChild(trItemS)
trItemP.takeChild(tIndex)
self._deleteTreeItem(tHandle)
self._alertTreeChange(tHandle=tHandle, flush=autoFlush)
self._alertTreeChange(tHandle, flush=autoFlush)

else:
# A populated FOLDER or a FILE requires confirmtation
Expand Down Expand Up @@ -759,7 +759,7 @@ def deleteItem(self, tHandle=None, alreadyAsked=False, bulkAction=False):
self.mainGui.closeDocument()
self._deleteTreeItem(dHandle)

self._alertTreeChange(tHandle=tHandle, flush=autoFlush)
self._alertTreeChange(tHandle, flush=autoFlush)
self.projView.wordCountsChanged.emit()

else:
Expand All @@ -778,7 +778,7 @@ def deleteItem(self, tHandle=None, alreadyAsked=False, bulkAction=False):
trItemT.addChild(trItemC)
self._postItemMove(tHandle, wCount)
self._recordLastMove(trItemS, trItemP, tIndex)
self._alertTreeChange(tHandle=tHandle, flush=autoFlush)
self._alertTreeChange(tHandle, flush=autoFlush)

return True

Expand Down Expand Up @@ -904,7 +904,7 @@ def undoLastMove(self):
dstItem.insertChild(dstIndex, movItem)

self._postItemMove(sHandle, wCount)
self._alertTreeChange(tHandle=sHandle, flush=True)
self._alertTreeChange(sHandle, flush=True)

self.clearSelection()
movItem.setSelected(True)
Expand Down Expand Up @@ -1168,7 +1168,7 @@ def dropEvent(self, theEvent):
QTreeWidget.dropEvent(self, theEvent)
self._postItemMove(sHandle, wCount)
self._recordLastMove(sItem, pItem, pIndex)
self._alertTreeChange(tHandle=sHandle, flush=True)
self._alertTreeChange(sHandle, flush=True)
sItem.setExpanded(isExpanded)

return
Expand Down Expand Up @@ -1250,6 +1250,7 @@ def _toggleItemExported(self, tHandle):
if tItem is not None:
tItem.setExported(not tItem.isExported)
self.setTreeItemValues(tItem.itemHandle)
self._alertTreeChange(tHandle, flush=False)
return

def _changeItemStatus(self, tHandle, tStatus):
Expand All @@ -1259,6 +1260,7 @@ def _changeItemStatus(self, tHandle, tStatus):
if tItem is not None:
tItem.setStatus(tStatus)
self.setTreeItemValues(tItem.itemHandle)
self._alertTreeChange(tHandle, flush=False)
return

def _changeItemImport(self, tHandle, tImport):
Expand All @@ -1268,6 +1270,7 @@ def _changeItemImport(self, tHandle, tImport):
if tItem is not None:
tItem.setImport(tImport)
self.setTreeItemValues(tItem.itemHandle)
self._alertTreeChange(tHandle, flush=False)
return

def _changeItemLayout(self, tHandle, itemLayout):
Expand All @@ -1277,10 +1280,12 @@ def _changeItemLayout(self, tHandle, itemLayout):
if tItem is not None:
if itemLayout == nwItemLayout.DOCUMENT and tItem.documentAllowed():
tItem.setLayout(nwItemLayout.DOCUMENT)
self.setTreeItemValues(tItem.itemHandle)
self.setTreeItemValues(tHandle)
self._alertTreeChange(tHandle, flush=False)
elif itemLayout == nwItemLayout.NOTE:
tItem.setLayout(nwItemLayout.NOTE)
self.setTreeItemValues(tItem.itemHandle)
self.setTreeItemValues(tHandle)
self._alertTreeChange(tHandle, flush=False)
return

def _covertFolderToFile(self, tHandle, itemLayout):
Expand All @@ -1298,13 +1303,13 @@ def _covertFolderToFile(self, tHandle, itemLayout):
if msgYes and itemLayout == nwItemLayout.DOCUMENT and tItem.documentAllowed():
tItem.setType(nwItemType.FILE)
tItem.setLayout(nwItemLayout.DOCUMENT)
self.setTreeItemValues(tItem.itemHandle)
self._alertTreeChange(tHandle, flush=True)
self.setTreeItemValues(tHandle)
self._alertTreeChange(tHandle, flush=False)
elif msgYes and itemLayout == nwItemLayout.NOTE:
tItem.setType(nwItemType.FILE)
tItem.setLayout(nwItemLayout.NOTE)
self.setTreeItemValues(tItem.itemHandle)
self._alertTreeChange(tHandle, flush=True)
self.setTreeItemValues(tHandle)
self._alertTreeChange(tHandle, flush=False)
else:
logger.info("Folder conversion cancelled")
return
Expand Down Expand Up @@ -1391,13 +1396,14 @@ def _addTrashRoot(self):
trItem = self._addTreeItem(self.theProject.tree[trashHandle])
if trItem is not None:
trItem.setExpanded(True)
self._alertTreeChange(tHandle=trashHandle, flush=True)
self._alertTreeChange(trashHandle, flush=True)

return trItem

def _alertTreeChange(self, tHandle=None, flush=True):
def _alertTreeChange(self, tHandle, flush=False):
"""Update information on tree change state, and emit necessary
signals.
signals. A flush is only needed if an item is moved, created or
deleted.
"""
self._timeChanged = time()
self.theProject.setProjectChanged(True)
Expand Down