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)
|
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):
|
def getTableOfContents(self, maxDepth, skipExcl=True):
|
||||||
"""Generate a table of contents up to a maximum depth.
|
"""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.core import NWDoc
|
||||||
from novelwriter.enum import nwItemType, nwItemClass, nwItemLayout, nwAlert
|
from novelwriter.enum import nwItemType, nwItemClass, nwItemLayout, nwAlert
|
||||||
|
from novelwriter.common import minmax
|
||||||
from novelwriter.dialogs.itemeditor import GuiItemEditor
|
from novelwriter.dialogs.itemeditor import GuiItemEditor
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
@@ -188,9 +189,11 @@ class GuiProjectTree(QTreeWidget):
|
|||||||
), nwAlert.ERROR)
|
), nwAlert.ERROR)
|
||||||
return False
|
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]
|
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
|
nHandle = sHandle
|
||||||
sHandle = pItem.itemParent
|
sHandle = pItem.itemParent
|
||||||
if sHandle is None:
|
if sHandle is None:
|
||||||
@@ -233,7 +236,9 @@ class GuiProjectTree(QTreeWidget):
|
|||||||
newDoc = NWDoc(self.theProject, tHandle)
|
newDoc = NWDoc(self.theProject, tHandle)
|
||||||
if not newDoc.readDocument():
|
if not newDoc.readDocument():
|
||||||
if nwItem.itemLayout == nwItemLayout.DOCUMENT:
|
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:
|
else:
|
||||||
newText = f"# {nwItem.itemName}\n\n"
|
newText = f"# {nwItem.itemName}\n\n"
|
||||||
|
|
||||||
|
|||||||
@@ -232,6 +232,9 @@ def testCoreIndex_CheckThese(mockGUI, fncDir, mockRnd):
|
|||||||
|
|
||||||
assert theIndex.getHandleHeaderLevel(cHandle) == "H1"
|
assert theIndex.getHandleHeaderLevel(cHandle) == "H1"
|
||||||
assert theIndex.getHandleHeaderLevel(nHandle) == "H1"
|
assert theIndex.getHandleHeaderLevel(nHandle) == "H1"
|
||||||
|
assert theIndex.getHandleHeaderIntLevel(cHandle) == 1
|
||||||
|
assert theIndex.getHandleHeaderIntLevel(nHandle) == 1
|
||||||
|
assert theIndex.getHandleHeaderIntLevel("stuff") == 0
|
||||||
|
|
||||||
# Zero Items
|
# Zero Items
|
||||||
assert theIndex.checkThese([], cItem) == []
|
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"].itemRoot == "0000000000008"
|
||||||
assert nwGUI.theProject.tree["0000000000013"].itemClass == nwItemClass.NOVEL
|
assert nwGUI.theProject.tree["0000000000013"].itemClass == nwItemClass.NOVEL
|
||||||
assert nwGUI.openDocument("0000000000013")
|
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
|
# Add a new file to the characters folder
|
||||||
nwTree.setSelectedHandle("000000000000a")
|
nwTree.setSelectedHandle("000000000000a")
|
||||||
|
|||||||
Reference in New Issue
Block a user