From c9f115157827e8e17ffdb0b452fd3bb9595333f0 Mon Sep 17 00:00:00 2001 From: Bachir Soussi Chiadmi Date: Fri, 2 Jun 2017 18:44:24 +0200 Subject: [PATCH] completed doc settings, and now are applied on project --- classes/core.py | 112 +++++++++++++++--- classes/docsetdialog.py | 89 +++++++------- classes/mainwindow.py | 7 +- templates/newproject/.config/docsettings.json | 19 +++ templates/newproject/.config/prefs.json | 14 --- 5 files changed, 168 insertions(+), 73 deletions(-) create mode 100644 templates/newproject/.config/docsettings.json delete mode 100644 templates/newproject/.config/prefs.json diff --git a/classes/core.py b/classes/core.py index 55e90d1..1be0598 100644 --- a/classes/core.py +++ b/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']) diff --git a/classes/docsetdialog.py b/classes/docsetdialog.py index b52a545..58fd3e8 100644 --- a/classes/docsetdialog.py +++ b/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) diff --git a/classes/mainwindow.py b/classes/mainwindow.py index 137a79b..6ad2cc8 100644 --- a/classes/mainwindow.py +++ b/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): diff --git a/templates/newproject/.config/docsettings.json b/templates/newproject/.config/docsettings.json new file mode 100644 index 0000000..2ada37d --- /dev/null +++ b/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 + } +} diff --git a/templates/newproject/.config/prefs.json b/templates/newproject/.config/prefs.json deleted file mode 100644 index e920aa9..0000000 --- a/templates/newproject/.config/prefs.json +++ /dev/null @@ -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 - } -}