| 
					
				 | 
			
			
				@@ -6,7 +6,7 @@ import sys, os, re 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from PyQt5 import QtCore 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from PyQt5.QtCore import QUrl, QSettings 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from PyQt5.QtGui import QKeySequence, QFont, QSyntaxHighlighter 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-from PyQt5.QtWidgets import QWidget, QLabel, QTabWidget, QVBoxLayout, QHBoxLayout, QSplitter, QPlainTextEdit, QShortcut 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from PyQt5.QtWidgets import QWidget, QLabel, QTabWidget, QVBoxLayout, QHBoxLayout, QSplitter, QPlainTextEdit, QShortcut, QPushButton, QCheckBox 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from PyQt5.QtWebKit import QWebSettings 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from PyQt5.QtWebKitWidgets import QWebView, QWebInspector 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -28,7 +28,66 @@ class WebkitInspector(QWebInspector): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       self.showMaximized() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       # TODO: webkitinspector is disappearing when chaging tabs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class WebViewOptions(QWidget): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   def __init__(self, parent): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      super(WebViewOptions, self).__init__(parent) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self.parent = parent 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self.hbox = QHBoxLayout() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self.hbox.setContentsMargins(0,0,0,0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self.preview = QCheckBox('&Preview', self) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      # self.preview.setShortcut('Ctrl+Shift+p') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self.preview.clicked.connect(self.onPreview) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self.hbox.addWidget(self.preview) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self.debug = QCheckBox('Deb&ug', self) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      # self.debug.setShortcut('Ctrl+Shift+u') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self.debug.clicked.connect(self.onDebug) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self.hbox.addWidget(self.debug) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self.grid = QCheckBox('&Grid', self) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      # self.grid.setShortcut('Ctrl+Shift+g') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self.grid.clicked.connect(self.onGrid) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self.hbox.addWidget(self.grid) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      # spread 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self.spread = QCheckBox('&Spread', self) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      # self.spread.setShortcut('Ctrl+Shift+g') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self.spread.clicked.connect(self.onSpread) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self.hbox.addWidget(self.spread) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self.hbox.addStretch() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      # zoom 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      # page 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self.hbox.addStretch() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self.reload = QPushButton("&Reload", self) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      # self.reload.setShortcut('Ctrl+Shift+r') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      # TODO: how to define same shortcut in different places 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      # self.reload.setIcon(Icon(ico))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self.reload.clicked.connect(self.onReload) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self.hbox.addWidget(self.reload) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self.setLayout(self.hbox) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   def onReload(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      print("onReload") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   def onPreview(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      print('onPreview') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   def onDebug(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      print('onDebug') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   def onGrid(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      print('onGrid') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   def onSpread(self): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      print('onSpread') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 class CodeEditor(QPlainTextEdit): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    def __init__(self, core, tabs, file=None): 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -99,36 +158,45 @@ class DesignStack(QWidget): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       super(DesignStack, self).__init__() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       # self.grid = QGridLayout() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      hbox = QHBoxLayout() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      hbox.setContentsMargins(0,0,0,0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      self.setLayout(hbox) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self.hbox = QHBoxLayout() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self.hbox.setContentsMargins(0,0,0,0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self.setLayout(self.hbox) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      # webviewbox = QVBoxLayout() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      self.vsplitter = QSplitter(QtCore.Qt.Vertical) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self.webview = QWidget() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self.webview.vbox = QVBoxLayout() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self.webview.setLayout(self.webview.vbox) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self.webview.vbox.setContentsMargins(0,0,0,0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       self.webkitview = WebkitView(self, core.server.port) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      self.vsplitter.addWidget(self.webkitview) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       self.webkitinspector = WebkitInspector(self, self.webkitview) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      self.vsplitter.addWidget(self.webkitinspector) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       shortcut = QShortcut(self) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       shortcut.setKey("F12") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       shortcut.activated.connect(self.toggleInspector) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       self.webkitinspector.setVisible(False) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self.webviewoptions = WebViewOptions(self) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self.webview.vbox.addWidget(self.webviewoptions) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self.vsplitter = QSplitter(QtCore.Qt.Vertical) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self.vsplitter.addWidget(self.webkitview) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self.vsplitter.addWidget(self.webkitinspector) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       self.vsplitter.splitterMoved.connect(self.movedSplitter) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self.webview.vbox.addWidget(self.vsplitter) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       self.hsplitter = QSplitter(QtCore.Qt.Horizontal) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      self.hsplitter.addWidget(self.vsplitter) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self.hsplitter.addWidget(self.webview) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       self.editor = Editor(self, core) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       self.hsplitter.addWidget(self.editor) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       self.hsplitter.splitterMoved.connect(self.movedSplitter) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      hbox.addWidget(self.hsplitter) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self.hbox.addWidget(self.hsplitter) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       self.restorePrefs() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |