浏览代码

completed doc settings, and now are applied on project

Bachir Soussi Chiadmi 7 年之前
父节点
当前提交
c9f1151578
共有 5 个文件被更改,包括 168 次插入73 次删除
  1. 98 14
      classes/core.py
  2. 45 44
      classes/docsetdialog.py
  3. 6 1
      classes/mainwindow.py
  4. 19 0
      templates/newproject/.config/docsettings.json
  5. 0 14
      templates/newproject/.config/prefs.json

+ 98 - 14
classes/core.py

@@ -9,7 +9,7 @@
 # @Last modified time: 21-04-2017
 # @License: GPL-V3
 
-import os, shutil, tempfile
+import os, re, shutil, tempfile
 # sys,
 from PyQt5 import QtCore
 from PyQt5.QtCore import QSettings, QCoreApplication
@@ -77,18 +77,6 @@ class Core():
       self.mw_pos = settings.value('mainwindow/pos', QtCore.QPoint(0, 0))
       self.mw_curstack = int(settings.value('mainwindow/curstack', 0))
 
-   def loadDocSettings(self):
-      self.docsettings = json.loads(open(os.path.join(self.cwd,'.config/prefs.json')).read())
-
-   def recordDocSettings(self,docsettings):
-      # print("doc settings",docsettings)
-      for key in docsettings:
-         self.docsettings[key] = docsettings[key]
-      jsonfilepath = os.path.join(self.cwd,'.config/prefs.json')
-      with open(jsonfilepath, "w") as fp:
-         json.dump(self.docsettings, fp, ensure_ascii=False, indent="\t")
-
-
    def savePreferences(self):
       # print("savePreferences")
       settings = QSettings('FiguresLibres', 'Cascade')
@@ -103,6 +91,102 @@ class Core():
       settings.setValue('mainwindow/pos', self._mw.pos())
       settings.setValue('mainwindow/curstack', self._mw.mainstack.currentIndex())
 
+   def loadDocSettings(self):
+      self.docsettings = json.loads(open(os.path.join(self.cwd,'.config/docsettings.json')).read())
+
+   def recordDocSettings(self,docsettings):
+      # print("doc settings",docsettings)
+      for key in docsettings:
+         self.docsettings[key] = docsettings[key]
+      jsonfilepath = os.path.join(self.cwd,'.config/docsettings.json')
+      with open(jsonfilepath, "w") as fp:
+         json.dump(self.docsettings, fp, ensure_ascii=False, indent="\t")
+
+      self.updateScss()
+
+   def updateScss(self):
+      # print(self.docsettings)
+      sassfilepath = os.path.join(self.cwd,'assets/css/main.scss')
+      # print(sassfilepath)
+      sass = open(sassfilepath,"r").read()
+      
+      # $page-width: mm2pt(180);
+      sass = re.sub(
+         r'\$page-width:\smm2pt\([0-9|\.]+\);',
+         '$page-width: mm2pt('+self.docsettings['pw']+');',
+         sass)
+      # $page-height: mm2pt(287);
+      sass = re.sub(
+         r'\$page-height:\smm2pt\([0-9|\.]+\);',
+         '$page-height: mm2pt('+self.docsettings['ph']+');',
+         sass)
+
+      # $page-margin-outside: mm2pt(15);
+      sass = re.sub(
+         r'\$page-margin-outside:\smm2pt\([0-9|\.]+\);',
+         '$page-margin-outside: mm2pt('+self.docsettings['me']+');',
+         sass)
+      # $page-margin-inside: mm2pt(7.5);
+      sass = re.sub(
+         r'\$page-margin-inside:\smm2pt\([0-9|\.]+\);',
+         '$page-margin-inside: mm2pt('+self.docsettings['mi']+');',
+         sass)
+      # $page-margin-top: mm2pt(10);
+      sass = re.sub(
+         r'\$page-margin-top:\smm2pt\([0-9|\.]+\);',
+         '$page-margin-top: mm2pt('+self.docsettings['mt']+');',
+         sass)
+      # $page-margin-bottom: mm2pt(10);
+      sass = re.sub(
+         r'\$page-margin-bottom:\smm2pt\([0-9|\.]+\);',
+         '$page-margin-bottom: mm2pt('+self.docsettings['mb']+');',
+         sass)
+
+      # $crop-size: mm2pt(2);
+      sass = re.sub(
+         r'\$crop-size:\smm2pt\([0-9|\.]+\);',
+         '$crop-size: mm2pt('+self.docsettings['cs']+');',
+         sass)
+      # $bleed: mm2pt(3);
+      sass = re.sub(
+         r'\$bleed:\smm2pt\([0-9|\.]+\);',
+         '$bleed: mm2pt('+self.docsettings['bs']+');',
+         sass)
+
+      # $col-number: 9;
+      sass = re.sub(
+         r'\$col-number:\smm2pt\([0-9|\.]+\);',
+         '$col-number: mm2pt('+self.docsettings['cn']+');',
+         sass)
+      # $col-gutter: mm2pt(3);
+      sass = re.sub(
+         r'\$col-butter:\smm2pt\([0-9|\.]+\);',
+         '$col-butter: mm2pt('+self.docsettings['cg']+');',
+         sass)
+      #
+      # $row-number: 12;
+      sass = re.sub(
+         r'\$row-number:\smm2pt\([0-9|\.]+\);',
+         '$row-number: mm2pt('+self.docsettings['rn']+');',
+         sass)
+      # $row-gutter: mm2pt(4);
+      sass = re.sub(
+         r'\$row-butter:\smm2pt\([0-9|\.]+\);',
+         '$row-butter: mm2pt('+self.docsettings['rg']+');',
+         sass)
+      #
+      # $line-height: mm2pt(4);
+      sass = re.sub(
+         r'\$line-height:\smm2pt\([0-9|\.]+\);',
+         '$line-height: mm2pt('+self.docsettings['lh']+');',
+         sass)
+
+      # print('sass', sass)
+      open(sassfilepath,"w").write(sass)
+
+      self._mw.designstack.webkitview.reload()
+
+
    def initnewproject(self, cwd = None):
       print('initnewproject')
       if cwd == None :
@@ -111,7 +195,7 @@ class Core():
       shutil.copytree(os.path.join(self.appcwd,'templates/newproject'), cwd)
       self.changeCWD(cwd)
       self.loadDocSettings()
-      # self.docsettings = json.loads(open(os.path.join(cwd,'.config/prefs.json')).read())
+      # self.docsettings = json.loads(open(os.path.join(cwd,'.config/docsettings.json')).read())
       self.summary = json.loads(open(os.path.join(cwd,'.config/summary.json')).read())
       self.repository = git.Repo.init(cwd)
       self.repository.index.add(['assets','contents','.config'])

+ 45 - 44
classes/docsetdialog.py

@@ -34,63 +34,64 @@ class DocsetDialog(QDialog):
    def createFormGroupBox(self):
       ds = self.parent.core.docsettings
 
-      self.formGroupBox = QGroupBox("Form layout")
+      self.formGroupBox = QGroupBox()
       layout = QFormLayout()
 
-      layout.addRow(QLabel("Page"))
-      self.pw = QLineEdit(str(ds['pw']))
-      self.pw.setFixedWidth(60)
-      self.pw.setValidator(QIntValidator())
-      self.pw.setMaxLength(5)
+      self.pw = FormLineEdit(str(ds['pw']))
       layout.addRow(QLabel("Page Width (mm):"), self.pw)
-      self.ph = QLineEdit(str(ds['ph']))
-      self.ph.setFixedWidth(60)
-      self.ph.setValidator(QIntValidator())
-      self.ph.setMaxLength(5)
+      self.ph = FormLineEdit(str(ds['ph']))
       layout.addRow(QLabel("Page Height (mm):"), self.ph)
       #
-      line1 = QFrame()
-      line1.setFrameShape(QFrame.HLine)
-      line1.setFrameShadow(QFrame.Sunken)
-      layout.addRow(line1)
+      layout.addRow(Line(self))
       #
-      self.mt = QLineEdit(str(ds['mt']))
-      self.mt.setFixedWidth(60)
-      self.mt.setValidator(QIntValidator())
-      self.mt.setMaxLength(3)
+      self.mt = FormLineEdit(str(ds['mt']),3)
       layout.addRow(QLabel("Margin Top (mm):"), self.mt)
-      self.mb = QLineEdit(str(ds['mb']))
-      self.mb.setFixedWidth(60)
-      self.mb.setValidator(QIntValidator())
-      self.mb.setMaxLength(3)
+      self.mb = FormLineEdit(str(ds['mb']),3)
       layout.addRow(QLabel("Margin Bottom (mm):"), self.mb)
-      self.mi = QLineEdit(str(ds['mi']))
-      self.mi.setFixedWidth(60)
-      self.mi.setValidator(QIntValidator())
-      self.mi.setMaxLength(3)
+      self.mi = FormLineEdit(str(ds['mi']),3)
       layout.addRow(QLabel("Margin inner (mm):"), self.mi)
-      self.me = QLineEdit(str(ds['me']))
-      self.me.setFixedWidth(60)
-      self.me.setValidator(QIntValidator())
-      self.me.setMaxLength(3)
+      self.me = FormLineEdit(str(ds['me']),3)
       layout.addRow(QLabel("Margin external (mm):"), self.me)
       #
-      line2 = QFrame()
-      line2.setFrameShape(QFrame.HLine)
-      line2.setFrameShadow(QFrame.Sunken)
-      layout.addRow(line2)
+      layout.addRow(Line(self))
       #
-      self.cs = QLineEdit(str(ds['cs']))
-      self.cs.setFixedWidth(60)
-      self.cs.setValidator(QIntValidator())
-      self.cs.setMaxLength(3)
+      self.cs = FormLineEdit(str(ds['cs']),3)
       layout.addRow(QLabel("Crop size (mm):"), self.cs)
-      self.bs = QLineEdit(str(ds['bs']))
-      self.bs.setFixedWidth(60)
-      self.bs.setValidator(QIntValidator())
-      self.bs.setMaxLength(3)
+      self.bs = FormLineEdit(str(ds['bs']),3)
       layout.addRow(QLabel("Bleed size (mm):"), self.bs)
-      # # layout.addRow(QLabel("Country:"), QComboBox())
-      # layout.addRow(QLabel("Age:"), QSpinBox())
+      #
+      layout.addRow(Line(self))
+      #
+      self.cn = FormLineEdit(str(ds['cn']),2,True)
+      layout.addRow(QLabel("Columns number:"), self.cn)
+      self.cg = FormLineEdit(str(ds['cg']),2)
+      layout.addRow(QLabel("Columns gutters:"), self.cg)
+      #
+      self.rn = FormLineEdit(str(ds['rn']),2,True)
+      layout.addRow(QLabel("Rows number:"), self.rn)
+      self.rg = FormLineEdit(str(ds['rg']),2)
+      layout.addRow(QLabel("Rows gutters:"), self.rg)
+      #
+      layout.addRow(Line(self))
+      #
+      self.lh = FormLineEdit(str(ds['lh']),2,True)
+      layout.addRow(QLabel("Line height:"), self.lh)
 
       self.formGroupBox.setLayout(layout)
+
+class FormLineEdit(QLineEdit):
+   def __init__(self, parent, ml=5, int=False, mw=60):
+      super(FormLineEdit, self).__init__(parent)
+      self.setFixedWidth(mw)
+      self.setMaxLength(ml)
+      if int:
+         self.setValidator(QIntValidator())
+      else:
+         # TODO: set float validator
+         self.setValidator(QIntValidator())
+
+class Line(QFrame):
+   def __init__(self, parent):
+      super(Line, self).__init__(parent)
+      self.setFrameShape(QFrame.HLine)
+      self.setFrameShadow(QFrame.Sunken)

+ 6 - 1
classes/mainwindow.py

@@ -205,7 +205,12 @@ class MainWindow(QMainWindow):
          "me":d.me.text(),
          "mi":d.mi.text(),
          "cs":d.cs.text(),
-         "bs":d.bs.text()
+         "bs":d.bs.text(),
+         "cn":d.cn.text(),
+         "cg":d.cg.text(),
+         "rn":d.rn.text(),
+         "rg":d.rg.text(),
+         "lh":d.lh.text()
       })
 
    def genPDF(self):

+ 19 - 0
templates/newproject/.config/docsettings.json

@@ -0,0 +1,19 @@
+{
+  "git.user.name":"Cascade",
+  "git.user.email":"cascade@figureslibres.io",
+  "docsettings":{
+    "pw":210,
+    "ph":297,
+    "mt":15,
+    "mb":15,
+    "me":10,
+    "mi":15,
+    "cs":5,
+    "bs":5,
+    "cn": 6,
+    "cg": 5,
+    "rn": 12,
+    "rg": 4,
+    "lh": 3
+  }
+}

+ 0 - 14
templates/newproject/.config/prefs.json

@@ -1,14 +0,0 @@
-{
-  "git.user.name":"Cascade",
-  "git.user.email":"cascade@figureslibres.io",
-  "docsettings":{
-       "pw":210,
-       "ph":297,
-       "mt":15,
-       "mb":15,
-       "me":10,
-       "mi":15,
-       "cs":5,
-       "bs":5
-    }
-}