diff --git a/classes/core.py b/classes/core.py index 9e3baaf..9422aa0 100644 --- a/classes/core.py +++ b/classes/core.py @@ -40,6 +40,10 @@ class Core(): self.initDeamons() else: self.initDeamons() + head, tail = os.path.split(self.cwd) + print('tail', tail) + self.projectname = tail + def initDeamons(self): @@ -114,10 +118,15 @@ class Core(): def changeCWD(self, cwd): if not cwd == self.cwd: self.cwd = cwd - self._mw.setWindowTitle("Cascade – "+self.cwd) self.server.reload() self.sasscompiler.reload() self.contentcompiler.reload() + + if not self.tempcwd: + self._mw.setWindowTitle("Cascade – "+self.cwd) + head, tail = os.path.split(self.cwd) + print('tail', projectname) + self.projectname = tail self._mw.designstack.refresh() self._mw.contentstack.refresh() diff --git a/classes/design.py b/classes/design.py index c2e894e..62c6f6a 100644 --- a/classes/design.py +++ b/classes/design.py @@ -4,7 +4,7 @@ import os, re # sys, from PyQt5 import QtCore -from PyQt5.QtCore import QUrl, QSettings +from PyQt5.QtCore import QUrl, QSettings, QSizeF from PyQt5.QtGui import QKeySequence, QFont from PyQt5.QtWidgets import QWidget, QTabWidget, QVBoxLayout, QHBoxLayout, QSplitter, QPlainTextEdit, QShortcut, QPushButton, QCheckBox from PyQt5.QtWebKit import QWebSettings @@ -13,26 +13,54 @@ from PyQt5.QtPrintSupport import QPrintPreviewDialog, QPrinter class WebkitView(QWebView): - def __init__(self, parent, port): - self.port = port + def __init__(self, parent, core): + self.parent = parent + self.core = core + self.port = core.server.port self.view = QWebView.__init__(self, parent) + self.setZoomFactor(1) self.load(QUrl('http://localhost:'+str(self.port))) self.settings().setAttribute(QWebSettings.DeveloperExtrasEnabled, True) # self.settings().setAttribute(QWebSettings.PluginsEnabled, True) - self.printer = QPrinter() - self.printer.setPageSize(QPrinter.A4) - self.printer.setOrientation(QPrinter.Portrait) - self.printer.setPageMargins(10,10,10,10,QPrinter.Millimeter) - self.setFixedWidth(1000) + self.initPDF() + # self.mainframe = self.page.mainFrame() + # print(self.mainframe) + + def initPDF(self): + self.printer = QPrinter(QPrinter.HighResolution) + self.printer.setFullPage(True) + # self.printer.setPageMargins(0,0,0,0,QPrinter.Millimeter) + self.printer.setFontEmbeddingEnabled(True) + self.printer.setColorMode(QPrinter.Color) + # TODO: set the page size and orientation from doc settings + # (need to do doc settings before that) + # self.printer.setPageSize(QPrinter.A4) + self.printer.setPaperSize(QSizeF(210, 300), QPrinter.Millimeter) + # self.printer.setOrientation(QPrinter.Portrait) + self.printer.setOutputFormat(QPrinter.PdfFormat) + self.printer.setCreator('Cascade') + self.printer.setDocName(self.core.projectname) + self.printer.setOutputFileName(self.core.projectname+".pdf") + # self.setFixedWidth(1000) - def onPrint(self): - dialog = QPrintPreviewDialog(self.printer) + def ongenPDF(self): + # QPrinter::Custom + # dialog = QPrintPreviewDialog(self.printer) # dialog.setWindowState(Qt.WindowMaximized) - dialog.paintRequested.connect(self.print_) + # dialog.paintRequested.connect(self.print_) # dialog.setWindowFlags(Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowMinMaxButtonsHint | Qt.WindowCloseButtonHint | Qt.WindowContextHelpButtonHint) - dialog.exec() + # dialog.exec() + # TODO: open a dialogue to ask where to save the pdf + # TODO: reload webview and wait for it before printing + # TODO: addd a progress bar + # self.webview. + self.print_(self.printer) + + def refresh(self): + self.initPDF() + self.reload() class WebkitInspector(QWebInspector): def __init__(self, parent, webkitview): @@ -149,6 +177,7 @@ class CodeEditor(QPlainTextEdit): self.changed = True i = self.tabs.currentIndex() self.tabs.setTabText(i, "* "+self.tabs.tabText(i)) + # TODO: indicate that webview needs to be reloaded def save(self): if self.changed: @@ -208,7 +237,7 @@ class DesignStack(QWidget): self.webview.setLayout(self.webview.vbox) self.webview.vbox.setContentsMargins(0,0,0,0) - self.webkitview = WebkitView(self, core.server.port) + self.webkitview = WebkitView(self, core) self.webkitinspector = WebkitInspector(self, self.webkitview) @@ -267,4 +296,4 @@ class DesignStack(QWidget): def refresh(self): self.editor.refresh() - self.webkitview.reload() + self.webkitview.refresh() diff --git a/classes/mainwindow.py b/classes/mainwindow.py index d34c0c9..8bb5c76 100644 --- a/classes/mainwindow.py +++ b/classes/mainwindow.py @@ -54,7 +54,7 @@ class MainWindow(QMainWindow): self.save_action.setShortcut("Ctrl+Shift+s") file.addAction(self.save_action) - prnt = QAction("&Print",self) + prnt = QAction("&PDF",self) prnt.setShortcut("Ctrl+p") file.addAction(prnt) @@ -109,8 +109,8 @@ class MainWindow(QMainWindow): self.openprojectdialogue() elif q.text() == "&Save Project as": self.saveprojectdialogue() - elif q.text() == "&Print": - self.imprim() + elif q.text() == "&PDF": + self.genPDF() elif q.text() == "&Quit": self.quit() @@ -185,9 +185,9 @@ class MainWindow(QMainWindow): print('Exception', e) pass - def imprim(self): - print('imprim') - self.designstack.webkitview.onPrint() + def genPDF(self): + print('PDF') + self.designstack.webkitview.ongenPDF() def quit(self): print("Quit") diff --git a/templates/newproject/assets/css/main.scss b/templates/newproject/assets/css/main.scss index 8316658..04b61eb 100644 --- a/templates/newproject/assets/css/main.scss +++ b/templates/newproject/assets/css/main.scss @@ -28,9 +28,9 @@ /** * THE CODE BELOW IS REQUIRED TO MAKE HTML2PRINT WORK. */ - @function mm2pt($mm){ - @return $mm*2.8346pt; + // @return $mm*2.8346pt; + @return $mm*1mm; } /** @@ -41,8 +41,8 @@ */ /* the geometry of the page */ -$page-width: mm2pt(110); -$page-height: mm2pt(200); +$page-width: mm2pt(200); +$page-height: mm2pt(287); /* the size of the crop marks based on scribus defaults */ $crop-size: mm2pt(2);