diff --git a/.gitignore b/.gitignore index 78f54f0..3efcee1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ assets/scss/*.css assets/images _index.html +classes/__pycache__ diff --git a/app.py b/app.py index 0dbdbba..4f19381 100755 --- a/app.py +++ b/app.py @@ -9,16 +9,17 @@ # @Last modified time: 21-04-2017 # @License: GPL-V3 -import sys, os +import sys, os, shutil from PyQt5 import QtCore from PyQt5.QtCore import QCoreApplication, QUrl, pyqtSlot, QSettings from PyQt5.QtGui import QKeySequence, QFont, QSyntaxHighlighter -from PyQt5.QtWidgets import QMainWindow, QWidget, QApplication, QShortcut, QGridLayout, QLabel, QTabWidget, QHBoxLayout, QVBoxLayout, QSplitter, QSplitterHandle, QPlainTextEdit +from PyQt5.QtWidgets import QMainWindow, QAction, QWidget, QApplication, QShortcut, QGridLayout, QLabel, QTabWidget, QHBoxLayout, QVBoxLayout, QSplitter, QSplitterHandle, QPlainTextEdit, QInputDialog, QLineEdit, QFileDialog # from PyQt5.QtNetwork import QNetworkProxyFactory, QNetworkRequest from PyQt5.QtWebKit import QWebSettings from PyQt5.QtWebKitWidgets import QWebPage, QWebView, QWebInspector +import json from classes import server, compiler, view, content @@ -32,10 +33,15 @@ class MainWindow(QMainWindow): def __init__(self, core): super(MainWindow, self).__init__() + # load core class self.core = core - + # restore previous preferences self.restorePreferences() + self.setWindowTitle("Cascade") + + self.initMenuBar() + # self.setWindowFlags(QtCore.Qt.WindowTitleHint) # QtCore.Qt.CustomizeWindowHint # | QtCore.Qt.Tool @@ -72,12 +78,69 @@ class MainWindow(QMainWindow): self.setCentralWidget(self.tabwidget) - self.shortcut = QShortcut(QKeySequence("Ctrl+Q"), self) - self.shortcut.activated.connect(self.on_quit) + # self.shortcut = QShortcut(QKeySequence("Ctrl+Q"), self) + # self.shortcut.activated.connect(self.quit) self.show() + def initMenuBar(self): + # menu bar + bar = self.menuBar() + file = bar.addMenu("&File") + + new = QAction("&New Project",self) + new.setShortcut("Ctrl+n") + file.addAction(new) + + open = QAction("&Open",self) + open.setShortcut("Ctrl+o") + file.addAction(open) + + quit = QAction("&Quit",self) + quit.setShortcut("Ctrl+q") + file.addAction(quit) + + file.triggered[QAction].connect(self.processtrigger) + + edit = bar.addMenu("Edit") + edit.addAction("copy") + edit.addAction("paste") + + + def processtrigger(self, q): + print(q.text()+" is triggered") + if q.text() == "&New Project": + self.newprojectdialogue() + elif q.text() == "&Open": + self.opendialogue() + elif q.text() == "&Quit": + self.quit() + + def opendialogue(self): + print("open") + + def newprojectdialogue(self): + projectname = QFileDialog.getSaveFileName(self, 'Dialog Title', '') + # TODO: no file type + if not os.path.isdir(projectname[0]): + self.core.cwd = projectname[0] + self.initnewproject() + else: + print("folder already exists") + # TODO: check if is cascade folder + + def initnewproject(self): + shutil.copytree('templates/newproject', self.core.cwd) + self.core.prefs = json.loads(open(os.path.join(self.core.cwd,'.config/prefs.json')).read()) + self.core.summary = json.loads(open(os.path.join(self.core.cwd,'.config/summary.json')).read()) + # TODO: init git repos + + def quit(self): + print("Quit") + self.savePreferences() + QCoreApplication.instance().quit() + def restorePreferences(self): try: self.resize(self.core.settings.value('mainwindow/size', QtCore.QSize(1024, 768))) @@ -89,14 +152,9 @@ class MainWindow(QMainWindow): self.core.settings.beginGroup("mainwindow") self.core.settings.setValue('size', self.size()) self.core.settings.setValue('pos', self.pos()) + self.core.settings.setValue('cwd', self.core.cwd) self.core.settings.endGroup() - @pyqtSlot() - def on_quit(self): - print("Quit!") - self.savePreferences() - QCoreApplication.instance().quit() - def main(): app = QApplication(sys.argv) diff --git a/classes/__pycache__/__init__.cpython-36.pyc b/classes/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index e864d6b..0000000 Binary files a/classes/__pycache__/__init__.cpython-36.pyc and /dev/null differ diff --git a/classes/__pycache__/compiler.cpython-36.pyc b/classes/__pycache__/compiler.cpython-36.pyc deleted file mode 100644 index 7efffa5..0000000 Binary files a/classes/__pycache__/compiler.cpython-36.pyc and /dev/null differ diff --git a/classes/__pycache__/content.cpython-36.pyc b/classes/__pycache__/content.cpython-36.pyc deleted file mode 100644 index b671b20..0000000 Binary files a/classes/__pycache__/content.cpython-36.pyc and /dev/null differ diff --git a/classes/__pycache__/server.cpython-36.pyc b/classes/__pycache__/server.cpython-36.pyc deleted file mode 100644 index 4187d62..0000000 Binary files a/classes/__pycache__/server.cpython-36.pyc and /dev/null differ diff --git a/classes/__pycache__/view.cpython-36.pyc b/classes/__pycache__/view.cpython-36.pyc deleted file mode 100644 index b683161..0000000 Binary files a/classes/__pycache__/view.cpython-36.pyc and /dev/null differ diff --git a/templates/newproject/.config/prefs.json b/templates/newproject/.config/prefs.json new file mode 100644 index 0000000..83f7535 --- /dev/null +++ b/templates/newproject/.config/prefs.json @@ -0,0 +1,4 @@ +{ + "prop1":1, + "prop2":2 +} diff --git a/templates/newproject/.config/summary.json b/templates/newproject/.config/summary.json new file mode 100644 index 0000000..acae08b --- /dev/null +++ b/templates/newproject/.config/summary.json @@ -0,0 +1,7 @@ +[ + { + "title":"Default page", + "file":"default.md", + "index":0 + } +] diff --git a/templates/newproject/assets/js/script.js b/templates/newproject/assets/js/script.js new file mode 100644 index 0000000..1a7323d --- /dev/null +++ b/templates/newproject/assets/js/script.js @@ -0,0 +1,5 @@ +jQuery(document).ready(function($) { + + console.log("Hello Cascade"); + +}); diff --git a/templates/newproject/assets/scss/styles.scss b/templates/newproject/assets/scss/styles.scss new file mode 100644 index 0000000..8a2257c --- /dev/null +++ b/templates/newproject/assets/scss/styles.scss @@ -0,0 +1 @@ +// your styles here diff --git a/templates/newproject/contents/default.md b/templates/newproject/contents/default.md new file mode 100644 index 0000000..c70090f --- /dev/null +++ b/templates/newproject/contents/default.md @@ -0,0 +1,5 @@ +# Default Page + +Welcome message + +insert her an image as example \ No newline at end of file