Переглянути джерело

refacored with class
server works
compiler works
browser works

Bachir Soussi Chiadmi 7 роки тому
батько
коміт
5f9c28dee4
1 змінених файлів з 69 додано та 44 видалено
  1. 69 44
      app.py

+ 69 - 44
app.py

@@ -16,61 +16,86 @@ import socketserver
 import http.server
 import threading
 
-from PyQt5.QtCore import QFile, QIODevice, Qt, QTextStream, QUrl, QFileSystemWatcher
+from PyQt5.QtCore import QUrl, QFileSystemWatcher
 from PyQt5.QtWidgets import (QAction, QApplication, QLineEdit, QMainWindow, QSizePolicy, QStyle, QTextEdit)
 from PyQt5.QtNetwork import QNetworkProxyFactory, QNetworkRequest
 from PyQt5.QtWebKitWidgets import QWebPage, QWebView
 
 import sass
 
-_PORT=0
+
+class Server():
+
+   def __init__(self, parent=None):
+
+      # find free port
+      sock = socket()
+      sock.bind(('', 0))
+
+      self._port = sock.getsockname()[1]
+      sock.close()
+
+      self.httpd = http.server.HTTPServer(('', self.port), http.server.SimpleHTTPRequestHandler)
+      self.thread = threading.Thread(target=self.httpd.serve_forever)
+      self.thread.start()
+      print("serving at port", self._port)
+
+
+   @property
+   def port(self):
+        return self._port
+
+
+class Compiler():
+   def __init__(self,parent=None):
+      paths = [
+         'assets',
+         'assets/scss',
+         'assets/scss/styles.scss'
+      ]
+      self.fs_watcher = QFileSystemWatcher(paths)
+      self.fs_watcher.directoryChanged.connect(self.directory_changed)
+      self.fs_watcher.fileChanged.connect(self.compile_scss)
+      # self.compile_scss()
+
+
+   def directory_changed(path):
+      print("Directory changed : %s" % path)
+
+   def compile_scss(path = ""):
+      print("compiling sass : %s" % path)
+      # src = open( 'assets/scss/main.scss' ).read()
+      scss = sass.compile_file(b'assets/scss/main.scss')
+      with open('assets/scss/main.css', 'w') as fp:
+         fp.write(scss.decode('utf8'))
+
+
+class WebkitView(QWebView):
+   def __init__(self, port):
+      self.port = port
+      # QT webkit
+      self.view = QWebView.__init__(self)
+      # browser.settings().setAttribute(QWebSettings.PluginsEnabled, True)
+
+      self.load(QUrl('http://localhost:'+str(self.port)))
+      # self.show()
+
+
+# class MainWindow():
+#    def __init__(self, )
 
 def main():
-   server()
-   compiler()
-   app()
-
-def server():
-   # find free port
-   sock = socket()
-   sock.bind(('', 0))
-   global _PORT
-   _PORT = sock.getsockname()[1]
-   sock.close()
-   # PORT = 8000
-   # web werver
-   # Handler = http.server.SimpleHTTPRequestHandler
-   # httpd = socketserver.TCPServer(("", PORT), Handler)
-   # httpd.serve_forever()
-   httpd = http.server.HTTPServer(('', _PORT), http.server.SimpleHTTPRequestHandler)
-   thread = threading.Thread(target=httpd.serve_forever)
-   thread.start()
-   print("serving at port", _PORT)
-
-def compiler():
-   fs_watcher = QFileSystemWatcher(['assets/scss'])
-   fs_watcher.directoryChanged.connect(compile_scss)
-   compile_scss()
-
-def compile_scss():
-   # src = open( 'assets/scss/main.scss' ).read()
-   scss = sass.compile_file(b'assets/scss/main.scss')
-   with open('assets/scss/main.css', 'w') as fp:
-      fp.write(scss.decode('utf8'))
-
-
-def app():
-
-   # QT webkit
+   # app = QtCore.QCoreApplication(sys.argv)
    app = QApplication(sys.argv)
 
-   browser = QWebView()
-   # browser.settings().setAttribute(QWebSettings.PluginsEnabled, True)
-   global _PORT
-   browser.load(QUrl('http://localhost:'+str(_PORT)))
-   browser.show()
+   server = Server()
+   compiler = Compiler()
+   webkitview = WebkitView(server.port)
+   webkitview.show()
+
 
-   sys.exit(app.exec_())
+   # sys.exit(app.exec_())
+   app.exec_()
 
 if __name__ == "__main__":
    main()