Make the new item function better at guessing header level of new files
This commit is contained in:
@@ -502,6 +502,11 @@ class NWIndex:
|
||||
"""
|
||||
return self._itemIndex.mainItemHeader(tHandle)
|
||||
|
||||
def getHandleHeaderIntLevel(self, tHandle):
|
||||
"""Get the integer header level of the first header of a handle.
|
||||
"""
|
||||
return H_LEVEL.get(self._itemIndex.mainItemHeader(tHandle), 0)
|
||||
|
||||
def getTableOfContents(self, maxDepth, skipExcl=True):
|
||||
"""Generate a table of contents up to a maximum depth.
|
||||
"""
|
||||
|
||||
@@ -38,6 +38,7 @@ from PyQt5.QtWidgets import (
|
||||
|
||||
from novelwriter.core import NWDoc
|
||||
from novelwriter.enum import nwItemType, nwItemClass, nwItemLayout, nwAlert
|
||||
from novelwriter.common import minmax
|
||||
from novelwriter.dialogs.itemeditor import GuiItemEditor
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@@ -188,9 +189,11 @@ class GuiProjectTree(QTreeWidget):
|
||||
), nwAlert.ERROR)
|
||||
return False
|
||||
|
||||
# If the selected item is a file, the new item will be a sibling
|
||||
# If the selected item is a file, the new item will be a
|
||||
# sibling if the file has no children, otherwise a child
|
||||
pItem = self.theProject.tree[sHandle]
|
||||
if pItem.itemType == nwItemType.FILE:
|
||||
qItem = self._getTreeItem(sHandle)
|
||||
if pItem.itemType == nwItemType.FILE and qItem.childCount() == 0:
|
||||
nHandle = sHandle
|
||||
sHandle = pItem.itemParent
|
||||
if sHandle is None:
|
||||
@@ -233,7 +236,9 @@ class GuiProjectTree(QTreeWidget):
|
||||
newDoc = NWDoc(self.theProject, tHandle)
|
||||
if not newDoc.readDocument():
|
||||
if nwItem.itemLayout == nwItemLayout.DOCUMENT:
|
||||
newText = f"### {nwItem.itemName}\n\n"
|
||||
iLvl = self.theProject.index.getHandleHeaderIntLevel(sHandle)
|
||||
hLvl = "#"*minmax(iLvl + 1, 2, 4)
|
||||
newText = f"{hLvl} {nwItem.itemName}\n\n"
|
||||
else:
|
||||
newText = f"# {nwItem.itemName}\n\n"
|
||||
|
||||
|
||||
@@ -232,6 +232,9 @@ def testCoreIndex_CheckThese(mockGUI, fncDir, mockRnd):
|
||||
|
||||
assert theIndex.getHandleHeaderLevel(cHandle) == "H1"
|
||||
assert theIndex.getHandleHeaderLevel(nHandle) == "H1"
|
||||
assert theIndex.getHandleHeaderIntLevel(cHandle) == 1
|
||||
assert theIndex.getHandleHeaderIntLevel(nHandle) == 1
|
||||
assert theIndex.getHandleHeaderIntLevel("stuff") == 0
|
||||
|
||||
# Zero Items
|
||||
assert theIndex.checkThese([], cItem) == []
|
||||
|
||||
@@ -96,7 +96,7 @@ def testGuiProjTree_NewItems(qtbot, caplog, monkeypatch, nwGUI, fncDir, mockRnd)
|
||||
assert nwGUI.theProject.tree["0000000000013"].itemRoot == "0000000000008"
|
||||
assert nwGUI.theProject.tree["0000000000013"].itemClass == nwItemClass.NOVEL
|
||||
assert nwGUI.openDocument("0000000000013")
|
||||
assert nwGUI.docEditor.getText() == "### New Document\n\n"
|
||||
assert nwGUI.docEditor.getText() == "## New Document\n\n"
|
||||
|
||||
# Add a new file to the characters folder
|
||||
nwTree.setSelectedHandle("000000000000a")
|
||||
|
||||
Reference in New Issue
Block a user