From b5e628de0c4b19be112e5c2d44991c1421d7d791 Mon Sep 17 00:00:00 2001 From: "Kali Kaneko (leap communications)" Date: Tue, 6 Sep 2016 11:41:33 -0400 Subject: [feature] webkit window serving bitmask-js --- src/leap/bitmask/gui/README.rst | 7 ++-- src/leap/bitmask/gui/__init__.py | 0 src/leap/bitmask/gui/app.py | 72 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 75 insertions(+), 4 deletions(-) create mode 100644 src/leap/bitmask/gui/__init__.py create mode 100644 src/leap/bitmask/gui/app.py diff --git a/src/leap/bitmask/gui/README.rst b/src/leap/bitmask/gui/README.rst index b131adf..431bcfc 100644 --- a/src/leap/bitmask/gui/README.rst +++ b/src/leap/bitmask/gui/README.rst @@ -1,6 +1,5 @@ -To Be Done ----------- -bitmask.gui is a module that depends on PyQt.QWebEngine -It SHOULD be declared as extra in bitmask setup.py +bitmask.gui is a module that depends on PyQt. +It is declared as an extra in bitmask setup.py + Its function is to launch a minimalistic browser that serves the bitmask_www interface. diff --git a/src/leap/bitmask/gui/__init__.py b/src/leap/bitmask/gui/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/leap/bitmask/gui/app.py b/src/leap/bitmask/gui/app.py new file mode 100644 index 0000000..b6e8510 --- /dev/null +++ b/src/leap/bitmask/gui/app.py @@ -0,0 +1,72 @@ +# -*- coding: utf-8 -*- +# app.py +# Copyright (C) 2016 LEAP Encryption Acess Project +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +""" +Main entrypoint for the Bitmask Qt GUI. +It just launches a wekbit browser that runs the local web-ui served by bitmaskd +when the web service is running. +""" + +import sys + +from PyQt5 import QtCore, QtGui, QtWidgets +from PyQt5 import QtWebKit, QtWebKitWidgets + +BITMASK_URI = 'http://localhost:7070' + +qApp = None + + +class BrowserWindow(QtWidgets.QDialog): + + def __init__(self, parent): + super(BrowserWindow, self).__init__(parent) + self.view = QtWebKitWidgets.QWebView(self) + self.setWindowTitle('Bitmask') + self.resize(800, 600) + self.load_app() + + def load_app(self): + self.view.load(QtCore.QUrl(BITMASK_URI)) + + def shutdown(self): + print('[bitmask] shutting down...') + try: + self.view.stop() + QtCore.QTimer.singleShot(0, qApp.deleteLater) + + except Exception as ex: + print('exception catched: %r' % ex) + sys.exit(1) + + +def start_app(): + + global qApp + + qApp = QtWidgets.QApplication([]) + browser = BrowserWindow(None) + + qApp.setQuitOnLastWindowClosed(True) + qApp.lastWindowClosed.connect(browser.shutdown) + + browser.show() + sys.exit(qApp.exec_()) + + +if __name__ == "__main__": + start_app() -- cgit v1.2.3