diff --git a/app.py b/app.py index ddc906e..1d1e665 100755 --- a/app.py +++ b/app.py @@ -22,7 +22,7 @@ from PyQt5.QtWebKitWidgets import QWebPage, QWebView, QWebInspector import json import git -from classes import server, sasscompiler, design, content +from classes import server, sasscompiler, design, content, md2html class Core(): def __init__(self, parent=None): @@ -44,6 +44,7 @@ class Core(): self.server = server.Server(self) self.sasscompiler = sasscompiler.Compiler(self) + self.contentcompiler = md2html.Compiler(self) @property def mainwindow(self): @@ -110,6 +111,7 @@ class Core(): self.cwd = cwd self.server.reload() self.sasscompiler.reload() + self.contentcompiler.reload() # if not self.tempcwd: self._mw.setWindowTitle("Cascade – "+self.cwd) diff --git a/classes/content.py b/classes/content.py index fd853bb..bc52414 100644 --- a/classes/content.py +++ b/classes/content.py @@ -54,9 +54,10 @@ class Summary(QWidget): json.dump(self.sum, fp, ensure_ascii=False, indent="\t") # refresh list self.list.addNewItem(item) + # reload content compiler + self.parent.core.contentcompiler.reload() def recordNewList(self): - newdata = [] for i in range(0,self.list.count()): # print(self.item(i).item['title']) @@ -68,7 +69,8 @@ class Summary(QWidget): with open(jsonfilepath, "w") as fp: json.dump(newdata, fp, ensure_ascii=False, indent="\t") - + # reload content compiler + self.parent.core.contentcompiler.reload() class SummaryList(QListWidget): def __init__(self, parent): @@ -219,6 +221,7 @@ class MarkdownEditor(QWidget): self.refreshViewer() if not self.changed: self.changed = True + # TODO: show in list that content needs to be saved # i = self.tabs.currentIndex() # self.tabs.setTabText(i, "* "+self.tabs.tabText(i)) diff --git a/classes/md2html.py b/classes/md2html.py new file mode 100644 index 0000000..bbc370a --- /dev/null +++ b/classes/md2html.py @@ -0,0 +1,45 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import os +from PyQt5.QtCore import QFileSystemWatcher +import json + + +class Compiler(): + def __init__(self,parent): + self.parent = parent + self.initWatching() + self.compileContents() + + def initWatching(self): + self.refreshPaths() + self.fs_watcher = QFileSystemWatcher(self.paths) + # self.fs_watcher.directoryChanged.connect(self.directory_changed) + self.fs_watcher.fileChanged.connect(self.onMdFileChanged) + + def onMdFileChanged(self): + print("onMdFileChanged") + try: + self.compileContents() + except Exception as e: + print("Error compiling MD files", e) + pass + + def refreshPaths(self): + jsonfilepath = os.path.join(self.parent.cwd,'.config/summary.json') + sum_json = open(jsonfilepath).read() + self.sum = json.loads(sum_json) + + self.paths = [os.path.join(self.parent.cwd,'contents')] + for item in self.sum: + self.paths.append(os.path.join(self.parent.cwd,'contents',item['file'])) + + def reload(self): + self.fs_watcher.removePaths(self.paths) + self.refreshPaths() + self.fs_watcher.addPaths(self.paths) + self.compileContents() + + def compileContents(self): + print('Compiling md')