Beispiel #1
0
    def doCompile(self, filename):
        mw = mainWindow()
        root = mw.mdlOutline.rootItem

        doc = QTextDocument()
        cursor = QTextCursor(doc)

        def appendItem(item):
            if item.isFolder():

                cursor.setPosition(doc.characterCount() - 1)
                title = "<h{l}>{t}</h{l}><br>\n".format(l=str(item.level() +
                                                              1),
                                                        t=item.title())
                cursor.insertHtml(title)

                for c in item.children():
                    appendItem(c)

            else:
                text = self.formatText(item.text(), item.type())
                cursor.setPosition(doc.characterCount() - 1)
                cursor.insertHtml(text)

        for c in root.children():
            appendItem(c)

        dw = QTextDocumentWriter(filename, "odt")
        dw.write(doc)
Beispiel #2
0
    def doCompile(self, filename):
        mw = mainWindow()
        root = mw.mdlOutline.rootItem

        doc = QTextDocument()
        cursor = QTextCursor(doc)

        def appendItem(item):
            if item.isFolder():

                cursor.setPosition(doc.characterCount() - 1)
                title = "<h{l}>{t}</h{l}><br>\n".format(
                        l=str(item.level() + 1),
                        t=item.title())
                cursor.insertHtml(title)

                for c in item.children():
                    appendItem(c)

            else:
                text = self.formatText(item.text(), item.type())
                cursor.setPosition(doc.characterCount() - 1)
                cursor.insertHtml(text)

        for c in root.children():
            appendItem(c)

        dw = QTextDocumentWriter(filename, "odt")
        dw.write(doc)
Beispiel #3
0
    def fileSave(self):
        if not self.fileName:
            return self.fileSaveAs()

        writer = QTextDocumentWriter(self.fileName)
        success = writer.write(self.textEdit.document())
        if success:
            self.textEdit.document().setModified(False)

        return success
Beispiel #4
0
    def fileSave(self):
        if not self.fileName:
            return self.fileSaveAs()

        writer = QTextDocumentWriter(self.fileName)
        success = writer.write(self.textEdit.document())
        if success:
            self.textEdit.document().setModified(False)

        return success
Beispiel #5
0
 def do_file_save(self):
     if self.current_file_path.suffix().lower() not in [
             ".odt", ".htm", ".html"
     ]:
         self.current_file_path = self.current_file_path / ".odt"
     writer = QTextDocumentWriter(str(self.current_file_path))
     success = writer.write(self.edit_control.document())
     if success:
         self.edit_control.document().setModified(False)
     return success
Beispiel #6
0
 def file_save(self):
     print(self.filename)
     if not self.filename:
         return self.file_save_as()
     else:
         writer = QTextDocumentWriter(self.filename)
         success = writer.write(self.tab.currentWidget().e_edit.document())
         if success:
             self.tab.currentWidget().e_edit.document().setModified(False)
             print("save")
             return True
     return False
Beispiel #7
0
 def save_file(self):
     if self.filename is None:
         ret = self.save_file_as()
         if ret is False:
             return False
         self.setWindowName()
     else:
         writer = QTextDocumentWriter(self.filename)
         success = writer.write(self.centralWidget().textEdit.document())
         if success:
             self.centralWidget().textEdit.document().setModified(False)
     return True
    def _save(self):
        if not self._file_name:
            return self._save_as()
        if self._file_name.startswith(':/'):
            return self._save_as()

        writer = QTextDocumentWriter(self._file_name)
        success = writer.write(self.textEdit.document())
        if success:
            self.statusbar.showMessage('Сохранено успешно')
        else:
            self.statusbar.showMessage('Ошибка сохранения')
Beispiel #9
0
	def saveOdf(self):
		try:
			document = self.textDocument()
		except Exception:
			return self.printError()
		fileName = QFileDialog.getSaveFileName(self,
			self.tr("Export document to ODT"), "",
			self.tr("OpenDocument text files (*.odt)"))[0]
		if not QFileInfo(fileName).suffix():
			fileName += ".odt"
		writer = QTextDocumentWriter(fileName)
		writer.setFormat(b"odf")
		writer.write(document)
Beispiel #10
0
 def write(self, document):
     if not self.file.isOpen():
         return
     writer = QTextDocumentWriter()
     writer.setFormat(QByteArray().append("plaintext"))
     writer.setDevice(self.file)
     writer.write(document)
Beispiel #11
0
	def saveOdf(self):
		title, htmltext, _ = self.currentTab.getDocumentForExport(includeStyleSheet=True,
		                                                          webenv=False)
		try:
			document = self.textDocument(title, htmltext)
		except Exception:
			return self.printError()
		fileName = QFileDialog.getSaveFileName(self,
			self.tr("Export document to ODT"), "",
			self.tr("OpenDocument text files (*.odt)"))[0]
		if not QFileInfo(fileName).suffix():
			fileName += ".odt"
		writer = QTextDocumentWriter(fileName)
		writer.setFormat(b"odf")
		writer.write(document)
Beispiel #12
0
 def exportSource(self):
     """
     Public method performing the export.
     """
     filename = self._getFileName(self.tr("ODT Files (*.odt)"))
     if not filename:
         return
     
     QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))
     QApplication.processEvents()
     
     tabSize = Preferences.getEditor("TabWidth")
     if tabSize == 0:
         tabSize = 4
     wysiwyg = Preferences.getEditorExporter("ODT/WYSIWYG")
     onlyStylesUsed = Preferences.getEditorExporter("ODT/OnlyStylesUsed")
     tabs = Preferences.getEditorExporter("ODT/UseTabs")
     
     # generate HTML of the source
     generator = HTMLGenerator(self.editor)
     html = generator.generate(
         tabSize=tabSize,
         useTabs=tabs,
         wysiwyg=wysiwyg,
         folding=False,
         onlyStylesUsed=onlyStylesUsed,
         titleFullPath=False
     )
     
     # convert HTML to ODT
     doc = QTextDocument()
     doc.setHtml(html)
     writer = QTextDocumentWriter(filename)
     ok = writer.write(doc)
     QApplication.restoreOverrideCursor()
     if not ok:
         E5MessageBox.critical(
             self.editor,
             self.tr("Export source"),
             self.tr(
                 """<p>The source could not be exported to"""
                 """ <b>{0}</b>.</p>""").format(filename))
Beispiel #13
0
    def saveFile(self):
        if not self.filename:
            self.filename, ok = QFileDialog.getSaveFileName(
                self, "Choose a file name", '.', "UTF-8 (*.txt)")

            if not ok:
                return

        if not self.filename:
            return

        self.statusBar().showMessage("Saved '%s'" % self.filename, 2000)

        writer = QTextDocumentWriter(self.filename)
        success = writer.write(self.textEdit.document())

        if not success:
            QMessageBox.question(self, 'Cancel', 'Saving Failed',
                                 QMessageBox.Yes)
            return
Beispiel #14
0
    def exportSource(self):
        """
        Public method performing the export.
        """
        filename = self._getFileName(self.tr("ODT Files (*.odt)"))
        if not filename:
            return

        QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))
        QApplication.processEvents()

        tabSize = Preferences.getEditor("TabWidth")
        if tabSize == 0:
            tabSize = 4
        wysiwyg = Preferences.getEditorExporter("ODT/WYSIWYG")
        onlyStylesUsed = Preferences.getEditorExporter("ODT/OnlyStylesUsed")
        tabs = Preferences.getEditorExporter("ODT/UseTabs")

        # generate HTML of the source
        generator = HTMLGenerator(self.editor)
        html = generator.generate(tabSize=tabSize,
                                  useTabs=tabs,
                                  wysiwyg=wysiwyg,
                                  folding=False,
                                  onlyStylesUsed=onlyStylesUsed,
                                  titleFullPath=False)

        # convert HTML to ODT
        doc = QTextDocument()
        doc.setHtml(html)
        writer = QTextDocumentWriter(filename)
        ok = writer.write(doc)
        QApplication.restoreOverrideCursor()
        if not ok:
            E5MessageBox.critical(
                self.editor, self.tr("Export source"),
                self.tr("""<p>The source could not be exported to"""
                        """ <b>{0}</b>.</p>""").format(filename))
Beispiel #15
0
    def saveFile(self, prompt=True):

        if not self.currentFilepath:

            if prompt:
                return self.saveFileAs()
            else:
                return

        writer = QTextDocumentWriter(self.currentFilepath)

        ba = QByteArray()
        ba.append('plaintext')

        writer.setFormat(ba)

        text = self.editor.document()
        success = writer.write(text)

        if success:
            self.editor.document().setModified(False)

        return success
Beispiel #16
0
    def save(self):
        """saving of document"""
        # get file name
        name = QFileDialog().getSaveFileName(self, 'Save file', filter='*.odt')

        # write text information from text fields to file
        doc = QTextDocument()
        cursor = QTextCursor(doc)
        cursor.insertTable(self.X, self.Y)

        for row in self.text_array:
            for column in row:
                cursor.insertText(column.text())
                cursor.movePosition(QTextCursor.NextCell)

        writer = QTextDocumentWriter()
        odf_format = writer.supportedDocumentFormats()[1]
        writer.setFormat(odf_format)
        writer.setFileName(name[0])
        writer.write(doc)
Beispiel #17
0
	def saveOdf(self):
		try:
			document = self.textDocument()
		except Exception:
			return self.printError()
		fileName = QFileDialog.getSaveFileName(self,
			self.tr("Export document to ODT"), "",
			self.tr("OpenDocument text files (*.odt)"))[0]
		if not QFileInfo(fileName).suffix():
			fileName += ".odt"
		writer = QTextDocumentWriter(fileName)
		writer.setFormat("odf")
		writer.write(document)
Beispiel #18
0
	def saveOdf(self):
		title, htmltext, _ = self.currentTab.getDocumentForExport()
		try:
			document = self.textDocument(title, htmltext)
		except Exception:
			return self.printError()
		fileName = QFileDialog.getSaveFileName(self,
			self.tr("Export document to ODT"), self.currentTab.getBaseName() + ".odt",
			self.tr("OpenDocument text files (*.odt)"))[0]
		if not QFileInfo(fileName).suffix():
			fileName += ".odt"
		writer = QTextDocumentWriter(fileName)
		writer.setFormat(b"odf")
		writer.write(document)
Beispiel #19
0
 def write_to_file(self):
     writer = QTextDocumentWriter(self.filename)
     writer.write(self.grammar.document())
 def _browser(self, not_open=False):
     filename = f'{self.settings["tempdir"]}/temp_report.html'
     writer = QTextDocumentWriter(filename)
     writer.write(self.textEdit.document())
     if not not_open:
         webbrowser.open_new(filename)
Beispiel #21
0
    def saveAs(self):
        if settings.get("file_dialog_dir"):
            self.curDir = '~/'
        else:
            self.curDir = settings.get("file_dialog_dir")

        filename = QFileDialog.getSaveFileName(self,
                self.tr("Save document"), self.curDir,
                self.tr("ODT document (*.odt);;Text file (*.txt);;"
                        "HTML file (*.html);;PDF file(*.pdf)")
                )
        if not filename: return

        self.curDir = os.path.dirname(filename)
        settings.set("file_dialog_dir", self.curDir)

        dw = QTextDocumentWriter()
        dw.setFormat('ODF')  # Default format

        # Check for alternative output format
        if filename.rsplit('.', 1)[1] == "txt":
            dw.setFormat('plaintext')
        if filename.rsplit('.', 1)[1] in ("html", "htm"):
            dw.setFormat('HTML')
        if filename.rsplit('.', 1)[1] in ("PDF", "pdf"):
            self.filePrintPdf(filename)
            return
        dw.setFileName(filename)
        dw.write(self.document())
Beispiel #22
0
    def _saveDocument(self, theFormat):
        """Save the document to various formats.
        """
        byteFmt = QByteArray()
        fileExt = ""
        textFmt = ""
        outTool = ""

        # Create the settings
        if theFormat == self.FMT_ODT:
            byteFmt.append("odf")
            fileExt = "odt"
            textFmt = "Open Document"
            outTool = "Qt"

        elif theFormat == self.FMT_PDF:
            fileExt = "pdf"
            textFmt = "PDF"
            outTool = "QtPrint"

        elif theFormat == self.FMT_HTM:
            fileExt = "htm"
            textFmt = "Plain HTML"
            outTool = "NW"

        elif theFormat == self.FMT_MD:
            byteFmt.append("markdown")
            fileExt = "md"
            textFmt = "Markdown"
            outTool = "Qt"

        elif theFormat == self.FMT_NWD:
            fileExt = "nwd"
            textFmt = "%s Markdown" % nw.__package__
            outTool = "NW"

        elif theFormat == self.FMT_TXT:
            byteFmt.append("plaintext")
            fileExt = "txt"
            textFmt = "Plain Text"
            outTool = "Qt"

        elif theFormat == self.FMT_JSON_H:
            fileExt = "json"
            textFmt = "JSON + %s HTML" % nw.__package__
            outTool = "NW"

        elif theFormat == self.FMT_JSON_M:
            fileExt = "json"
            textFmt = "JSON + %s Markdown" % nw.__package__
            outTool = "NW"

        else:
            return False

        # Generate the file name
        if fileExt:

            cleanName = makeFileNameSafe(self.theProject.projName)
            fileName = "%s.%s" % (cleanName, fileExt)
            saveDir = self.mainConf.lastPath
            savePath = os.path.join(saveDir, fileName)
            if not os.path.isdir(saveDir):
                saveDir = self.mainConf.homePath

            if self.mainConf.showGUI:
                dlgOpt = QFileDialog.Options()
                dlgOpt |= QFileDialog.DontUseNativeDialog
                savePath, _ = QFileDialog.getSaveFileName(self,
                                                          "Save Document As",
                                                          savePath,
                                                          options=dlgOpt)
                if not savePath:
                    return False

            self.mainConf.setLastPath(savePath)

        else:
            return False

        # Do the actual writing
        wSuccess = False
        errMsg = ""
        if outTool == "Qt":
            docWriter = QTextDocumentWriter()
            docWriter.setFileName(savePath)
            docWriter.setFormat(byteFmt)
            wSuccess = docWriter.write(self.docView.qDocument)

        elif outTool == "NW":
            try:
                with open(savePath, mode="w", encoding="utf8") as outFile:
                    if theFormat == self.FMT_HTM:
                        # Write novelWriter HTML data
                        theStyle = self.htmlStyle.copy()
                        theStyle.append(
                            r"article {width: 800px; margin: 40px auto;}")
                        bodyText = "".join(self.htmlText)
                        bodyText = bodyText.replace("\t", "&#09;")

                        theHtml = ("<!DOCTYPE html>\n"
                                   "<html>\n"
                                   "<head>\n"
                                   "<meta charset='utf-8'>\n"
                                   "<title>{projTitle:s}</title>\n"
                                   "</head>\n"
                                   "<style>\n"
                                   "{htmlStyle:s}\n"
                                   "</style>\n"
                                   "<body>\n"
                                   "<article>\n"
                                   "{bodyText:s}\n"
                                   "</article>\n"
                                   "</body>\n"
                                   "</html>\n").format(
                                       projTitle=self.theProject.projName,
                                       htmlStyle="\n".join(theStyle),
                                       bodyText=bodyText,
                                   )
                        outFile.write(theHtml)

                    elif theFormat == self.FMT_NWD:
                        # Write novelWriter markdown data
                        for aLine in self.nwdText:
                            outFile.write(aLine)

                    elif theFormat == self.FMT_JSON_H or theFormat == self.FMT_JSON_M:
                        jsonData = {
                            "meta": {
                                "workingTitle": self.theProject.projName,
                                "novelTitle": self.theProject.bookTitle,
                                "authors": self.theProject.bookAuthors,
                                "buildTime": self.buildTime,
                            }
                        }

                        if theFormat == self.FMT_JSON_H:
                            theBody = []
                            for htmlPage in self.htmlText:
                                theBody.append(
                                    htmlPage.rstrip("\n").split("\n"))
                            jsonData["text"] = {
                                "css": self.htmlStyle,
                                "html": theBody,
                            }
                        elif theFormat == self.FMT_JSON_M:
                            theBody = []
                            for nwdPage in self.nwdText:
                                theBody.append(nwdPage.split("\n"))
                            jsonData["text"] = {
                                "nwd": theBody,
                            }

                        outFile.write(json.dumps(jsonData, indent=2))

                wSuccess = True

            except Exception as e:
                errMsg = str(e)

        elif outTool == "QtPrint" and theFormat == self.FMT_PDF:
            try:
                thePrinter = QPrinter()
                thePrinter.setOutputFormat(QPrinter.PdfFormat)
                thePrinter.setOrientation(QPrinter.Portrait)
                thePrinter.setDuplex(QPrinter.DuplexLongSide)
                thePrinter.setFontEmbeddingEnabled(True)
                thePrinter.setColorMode(QPrinter.Color)
                thePrinter.setOutputFileName(savePath)
                self.docView.qDocument.print(thePrinter)
                wSuccess = True

            except Exception as e:
                errMsg - str(e)

        else:
            errMsg = "Unknown format"

        # Report to user
        if self.mainConf.showGUI:
            if wSuccess:
                self.theParent.makeAlert(
                    "%s file successfully written to:<br> %s" %
                    (textFmt, savePath), nwAlert.INFO)
            else:
                self.theParent.makeAlert(
                    "Failed to write %s file. %s" % (textFmt, errMsg),
                    nwAlert.ERROR)

        return wSuccess