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)
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)
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
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
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
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('Ошибка сохранения')
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)
def write(self, document): if not self.file.isOpen(): return writer = QTextDocumentWriter() writer.setFormat(QByteArray().append("plaintext")) writer.setDevice(self.file) writer.write(document)
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)
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))
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
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))
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
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)
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)
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)
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)
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())
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", "	") 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