Can now open and save documents.
This commit is contained in:
+7
-9
@@ -26,15 +26,13 @@ class GuiDocEditor(QWidget):
|
||||
|
||||
logger.debug("Initialising DocEditor ...")
|
||||
self.mainConf = nw.CONFIG
|
||||
|
||||
self.outerBox = QVBoxLayout()
|
||||
self.guiEditor = QTextEdit()
|
||||
|
||||
# self.outerBox.addWidget(self.guiEditor)
|
||||
self.setLayout(self.outerBox)
|
||||
|
||||
# self.editPane = QFrame()
|
||||
# self.editPane.setFrameShape(QFrame.StyledPanel)
|
||||
self.metaPane = QFrame()
|
||||
self.metaPane = QFrame()
|
||||
self.metaPane.setFrameShape(QFrame.StyledPanel)
|
||||
self.splitEdit = QSplitter(Qt.Horizontal)
|
||||
self.splitEdit.addWidget(self.guiEditor)
|
||||
@@ -53,13 +51,13 @@ class GuiDocEditor(QWidget):
|
||||
|
||||
return
|
||||
|
||||
def setText(self, docHtml):
|
||||
self.guiEditor.setHtml(docHtml)
|
||||
return True
|
||||
|
||||
def getText(self):
|
||||
|
||||
theText = self.guiEditor.toHtml()
|
||||
print(theText)
|
||||
print(self.guiEditor.toPlainText())
|
||||
|
||||
return
|
||||
return theText
|
||||
|
||||
def _buildTabToolBar(self):
|
||||
toolBar = self.editToolBar
|
||||
|
||||
+19
-11
@@ -14,7 +14,7 @@ import logging
|
||||
import nw
|
||||
|
||||
from os import path
|
||||
from PyQt5.QtWidgets import qApp, QWidget, QMainWindow, QHBoxLayout, QVBoxLayout, QFrame, QSplitter, QAction, QToolBar, QFileDialog
|
||||
from PyQt5.QtWidgets import qApp, QWidget, QMainWindow, QHBoxLayout, QVBoxLayout, QFrame, QSplitter, QAction, QToolBar, QFileDialog, QStackedWidget
|
||||
from PyQt5.QtCore import Qt, QSize
|
||||
from PyQt5.QtGui import QIcon, QStandardItemModel
|
||||
|
||||
@@ -23,6 +23,7 @@ from nw.gui.doceditor import GuiDocEditor
|
||||
from nw.gui.projecteditor import GuiProjectEditor
|
||||
from nw.project.project import NWProject
|
||||
from nw.project.item import NWItem
|
||||
from nw.project.document import NWDoc
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -32,8 +33,9 @@ class GuiMain(QMainWindow):
|
||||
QWidget.__init__(self)
|
||||
|
||||
logger.debug("Initialising GUI ...")
|
||||
self.mainConf = nw.CONFIG
|
||||
self.theProject = NWProject()
|
||||
self.mainConf = nw.CONFIG
|
||||
self.theProject = NWProject()
|
||||
self.theDocument = NWDoc(self.theProject)
|
||||
|
||||
self.resize(*self.mainConf.winGeometry)
|
||||
self._setWindowTitle()
|
||||
@@ -45,7 +47,12 @@ class GuiMain(QMainWindow):
|
||||
self.treePane.setFrameShape(QFrame.StyledPanel)
|
||||
self.splitMain = QSplitter(Qt.Horizontal)
|
||||
self.splitMain.addWidget(self.treePane)
|
||||
self.splitMain.addWidget(self.docEditor)
|
||||
|
||||
self.stackPane = QStackedWidget()
|
||||
self.stackNone = self.stackPane.addWidget(QWidget())
|
||||
self.stackDoc = self.stackPane.addWidget(self.docEditor)
|
||||
self.splitMain.addWidget(self.stackPane)
|
||||
self.stackPane.setCurrentIndex(self.stackNone)
|
||||
|
||||
self.treeBox = QVBoxLayout()
|
||||
self.treeView = GuiDocTree(self.theProject)
|
||||
@@ -124,8 +131,14 @@ class GuiMain(QMainWindow):
|
||||
# Document Actions
|
||||
#
|
||||
|
||||
def openDocument(self, tHandle):
|
||||
self.stackPane.setCurrentIndex(self.stackDoc)
|
||||
self.docEditor.setText(self.theDocument.openDocument(tHandle))
|
||||
return
|
||||
|
||||
def saveDocument(self):
|
||||
self.docEditor.getText()
|
||||
docHtml = self.docEditor.getText()
|
||||
self.theDocument.saveDocument(docHtml)
|
||||
return
|
||||
|
||||
#
|
||||
@@ -138,6 +151,7 @@ class GuiMain(QMainWindow):
|
||||
nwItem = self.theProject.getItem(tHandle)
|
||||
if nwItem.itemType == NWItem.TYPE_FILE:
|
||||
logger.verbose("Requested item %s is a file" % tHandle)
|
||||
self.openDocument(tHandle)
|
||||
else:
|
||||
logger.verbose("Requested item %s is a folder" % tHandle)
|
||||
return
|
||||
@@ -233,12 +247,6 @@ class GuiMain(QMainWindow):
|
||||
menuNew.setStatusTip("Create new document")
|
||||
fileMenu.addAction(menuNew)
|
||||
|
||||
# File > Open
|
||||
menuOpen = QAction(QIcon.fromTheme("document-open"), "&Open", menuBar)
|
||||
menuOpen.setShortcut("Ctrl+O")
|
||||
menuOpen.setStatusTip("Open document")
|
||||
fileMenu.addAction(menuOpen)
|
||||
|
||||
# File > Save
|
||||
menuSave = QAction(QIcon.fromTheme("document-save"), "&Save", menuBar)
|
||||
menuSave.setShortcut("Ctrl+S")
|
||||
|
||||
+46
-2
@@ -13,14 +13,58 @@
|
||||
import logging
|
||||
import nw
|
||||
|
||||
from os import path
|
||||
from os import path, mkdir
|
||||
from lxml import etree, html
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
class NWDoc():
|
||||
|
||||
def __init__(self):
|
||||
def __init__(self, theProject):
|
||||
|
||||
self.mainConf = nw.CONFIG
|
||||
self.theProject = theProject
|
||||
self.docHandle = None
|
||||
|
||||
return
|
||||
|
||||
def openDocument(self, tHandle):
|
||||
self.docHandle = tHandle
|
||||
docDir, docFile = self._assemblePath("main.htm")
|
||||
logger.debug("Opening document %s" % path.join(docDir,docFile))
|
||||
dataDir = path.join(self.theProject.projPath, docDir)
|
||||
docPath = path.join(dataDir, docFile)
|
||||
if path.isfile(docPath):
|
||||
with open(docPath,mode="r") as inFile:
|
||||
return inFile.read()
|
||||
else:
|
||||
logger.debug("Document does not exist.")
|
||||
return ""
|
||||
return None
|
||||
|
||||
def saveDocument(self, docHtml):
|
||||
if self.docHandle is None: return False
|
||||
docDir, docFile = self._assemblePath("main.htm")
|
||||
logger.debug("Saving document %s" % path.join(docDir,docFile))
|
||||
dataDir = path.join(self.theProject.projPath, docDir)
|
||||
docPath = path.join(dataDir, docFile)
|
||||
if not path.isdir(dataDir):
|
||||
mkdir(dataDir)
|
||||
logger.debug("Created folder %s" % dataDir)
|
||||
with open(docPath,mode="wb") as outFile:
|
||||
docData = html.fromstring(docHtml)
|
||||
outFile.write(html.tostring(
|
||||
docData,
|
||||
pretty_print = True,
|
||||
encoding = "utf-8",
|
||||
method = "html",
|
||||
))
|
||||
return True
|
||||
|
||||
def _assemblePath(self, docExt):
|
||||
if self.docHandle is None: return None
|
||||
docDir = "data_"+self.docHandle[0]
|
||||
docFile = self.docHandle[1:13]+"_"+docExt
|
||||
return docDir, docFile
|
||||
|
||||
# END Class NWDoc
|
||||
|
||||
Reference in New Issue
Block a user