Started adding framework for document tokenizer.

This commit is contained in:
Veronica K. B. Olsen
2019-05-05 23:16:53 +02:00
parent fd3b05f118
commit 7166dfbb2e
4 changed files with 80 additions and 0 deletions
+45
View File
@@ -0,0 +1,45 @@
# -*- coding: utf-8 -*-
"""novelWriter Text Tokenizer
novelWriter Text Tokenizer
==============================
Splits a piece of nW markdown text into its elements
File History:
Created: 2019-05-05 [0.0.1]
"""
import logging
import nw
from nw.project.document import NWDoc
logger = logging.getLogger(__name__)
class Tokenizer():
def __init__(self, theProject, theParent):
self.mainConf = nw.CONFIG
self.theProject = theProject
self.theParent = theParent
self.theHandle = None
self.theItem = None
self.theTokens = None
return
def tokenizeText(self, tHandle):
self.theItem = self.theProject.getItem(tHandle)
theDoc = NWDoc(self.theProject, self.theParent)
theText = theDoc.openDocument(tHandle)
for aLine in theText.splitlines():
print(aLine)
return
# END Class Tokenizer
+8
View File
@@ -289,6 +289,14 @@ class GuiDocTree(QTreeWidget):
return selItem[0].text(self.C_HANDLE)
return None
def getSelectedHandles(self):
selItems = self.selectedItems()
selHandles = []
for n in range(len(selItems)):
if isinstance(selItems[n], QTreeWidgetItem):
selHandles.append(selItems[n].text(self.C_HANDLE))
return selHandles
##
# Internal Functions
##
+10
View File
@@ -231,6 +231,16 @@ class GuiMainMenu(QMenuBar):
# Document > Separator
self.docuMenu.addSeparator()
# Document > Preview
menuItem = QAction(QIcon.fromTheme("text-html"), "Preview Document", self)
menuItem.setStatusTip("Preview Document")
menuItem.setShortcut("Ctrl+R")
menuItem.triggered.connect(self.theParent._previewDocument)
self.docuMenu.addAction(menuItem)
# Document > Separator
self.docuMenu.addSeparator()
# Document > Split
menuItem = QAction(QIcon.fromTheme("list-add"), "Split Document", self)
menuItem.setStatusTip("Split Selected Document")
+17
View File
@@ -28,6 +28,7 @@ from nw.gui.statusbar import GuiMainStatus
from nw.project.project import NWProject
from nw.project.document import NWDoc
from nw.project.item import NWItem
from nw.convert.tokenizer import Tokenizer
from nw.enum import nwItemType
logger = logging.getLogger(__name__)
@@ -189,6 +190,22 @@ class GuiMain(QMainWindow):
self.docEditor.setDocumentChanged(False)
return
def _previewDocument(self):
theHandles = self.treeView.getSelectedHandles()
if len(theHandles) == 0:
return
theDocs = []
self.treeView.saveTreeOrder()
for tHandle in self.theProject.treeOrder:
if tHandle not in theHandles:
continue
aDoc = Tokenizer(self.theProject, self)
aDoc.tokenizeText(tHandle)
return
##
# Tree Item Actions
##