Ver código fonte

started number pages handle, needs to refresh toolbar num page display on change

Bachir Soussi Chiadmi 7 anos atrás
pai
commit
9fcfbeae40

+ 31 - 3
classes/core.py

@@ -115,9 +115,10 @@ class Core():
       with open(jsonfilepath, "w") as fp:
          json.dump(self.docsettings, fp, ensure_ascii=False, indent="\t")
 
-      self.updateScss()
+      self.updateScss(False)
+      self.updateJs()
 
-   def updateScss(self):
+   def updateScss(self, reload=True):
       # print(self.docsettings)
       sassfilepath = os.path.join(self.cwd,'assets/css/setup.scss')
       # print(sassfilepath)
@@ -156,7 +157,34 @@ class Core():
       # print('sass', sass)
       open(sassfilepath,"w").write(sass)
 
-      self._mw.designstack.webkitview.reload()
+      if reload:
+         self._mw.designstack.webkitview.reload()
+
+   def updateJs(self, reload=True):
+      # print(self.docsettings)
+      jsfilepath = os.path.join(self.cwd,'assets/js/setup.js')
+      # print(jsfilepath)
+      js = open(jsfilepath,"r").read()
+
+      # $row-number: 12;
+      js = re.sub(
+         r'nb_page=[0-9]+;',
+         'nb_page='+str(self.docsettings['np'])+';',
+         js)
+
+      # print('sass', sass)
+      open(jsfilepath,"w").write(js)
+
+      if reload:
+         self._mw.designstack.webkitview.reload()
+
+   def addPage(self):
+      self.docsettings['np'] = int(self.docsettings['np'])+1
+      self.updateJs()
+
+   def rmPage(self):
+      self.docsettings['np'] = int(self.docsettings['np'])-1
+      self.updateJs()
 
    #     ____               _           __
    #    / __ \_________    (_)__  _____/ /_

+ 17 - 8
classes/design.py

@@ -150,17 +150,20 @@ class WebViewToolBar(QWidget):
       self.hbox.addWidget(self.zoom)
 
       # page
-      self.hbox.addWidget(QLabel("Page:"))
+      self.gotopage = QLabel("Go to Page: /"+self.parent.core.docsettings['np'])
+      # TODO: refresh page number on change
+      self.hbox.addWidget(self.gotopage)
       self.page = QSpinBox(self)
       # TODO: action
       self.hbox.addWidget(self.page)
 
       self.addpage = QPushButton("&Add Page", self)
-      # self.addpage.setShortcut('Ctrl+Shift+n')
-      # TODO: how to define same shortcut in different places
-      # self.addpage.setIcon(Icon(ico)))
       self.addpage.clicked.connect(self.onAddPage)
       self.hbox.addWidget(self.addpage)
+      self.rmpage = QPushButton("Re&move Page", self)
+      self.rmpage.clicked.connect(self.onRmPage)
+      self.hbox.addWidget(self.rmpage)
+
       #
       self.hbox.addStretch()
       #
@@ -316,6 +319,7 @@ class Editor(QWidget):
 class DesignStack(QWidget):
    def __init__(self, core):
       super(DesignStack, self).__init__()
+      self.core = core
 
       # self.grid = QGridLayout()
       self.hbox = QHBoxLayout()
@@ -328,18 +332,21 @@ class DesignStack(QWidget):
       self.webview.setLayout(self.webview.vbox)
       self.webview.vbox.setContentsMargins(0,0,0,0)
 
+      # toolbar
+      self.webviewtoolbar = WebViewToolBar(self)
+      self.webview.vbox.addWidget(self.webviewtoolbar)
+
+      # webkitview
       self.webkitview = WebkitView(self, core)
 
+      # webkitinspector
       self.webkitinspector = WebkitInspector(self, self.webkitview)
-
       shortcut = QShortcut(self)
       shortcut.setKey("F12")
       shortcut.activated.connect(self.toggleInspector)
       self.webkitinspector.setVisible(False)
 
-      self.webviewtoolbar = WebViewToolBar(self)
-      self.webview.vbox.addWidget(self.webviewtoolbar)
-
+      # V layout
       self.vsplitter = QSplitter(QtCore.Qt.Vertical)
       self.vsplitter.addWidget(self.webkitview)
       self.vsplitter.addWidget(self.webkitinspector)
@@ -347,9 +354,11 @@ class DesignStack(QWidget):
 
       self.webview.vbox.addWidget(self.vsplitter)
 
+      # H layout
       self.hsplitter = QSplitter(QtCore.Qt.Horizontal)
       self.hsplitter.addWidget(self.webview)
 
+      # editor
       self.editor = Editor(self, core)
       self.hsplitter.addWidget(self.editor)
 

+ 5 - 0
classes/docsetdialog.py

@@ -36,6 +36,11 @@ class DocsetDialog(QDialog):
       self.formGroupBox = QGroupBox()
       layout = QFormLayout()
 
+      self.np = FormLineEdit(str(ds['np']),3,True)
+      layout.addRow(QLabel("Numbers of Pages:"), self.np)
+      #
+      layout.addRow(Line(self))
+      #
       self.pw = FormLineEdit(str(ds['pw']))
       layout.addRow(QLabel("Page Width (mm):"), self.pw)
       self.ph = FormLineEdit(str(ds['ph']))

+ 3 - 0
classes/mainwindow.py

@@ -202,6 +202,7 @@ class MainWindow(QMainWindow):
       d = docsetdialog.DocsetDialog(self)
       d.exec_()
       self.core.recordDocSettings({
+         "np":d.np.text(),
          "pw":d.pw.text(),
          "ph":d.ph.text(),
          "mt":d.mt.text(),
@@ -264,4 +265,6 @@ class MainWindow(QMainWindow):
 
       self.mainstack.setCurrentIndex(self.core.mw_curstack)
 
+      # TODO: add an app console window (show sass compilation errors for example)
+
       self.setCentralWidget(self.mainstack)

+ 1 - 1
templates/newproject/assets/js/html2print.js

@@ -2,7 +2,7 @@
 $(function() {
 
     // Cloning the master page
-    for (i = 1; i < nb_page; i++){
+    for (i = 0; i < nb_page; i++){
         $("#master-page").clone().attr("id","page-"+i).insertBefore($("#master-page"));
     }
     $("#master-page").attr("data-width", $(".paper:first-child").width()).hide();

+ 1 - 1
templates/newproject/assets/js/setup.js

@@ -1 +1 @@
-nb_page = 2;
+nb_page=2;