diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/leap/bitmask/gui/README.rst | 7 | ||||
-rw-r--r-- | src/leap/bitmask/gui/__init__.py | 0 | ||||
-rw-r--r-- | src/leap/bitmask/gui/app.py | 72 |
3 files changed, 75 insertions, 4 deletions
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 --- /dev/null +++ b/src/leap/bitmask/gui/__init__.py 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 <http://www.gnu.org/licenses/>. + +""" +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() |