From f9cb960dea642ec2e9cced1ab4712577cc0f3469 Mon Sep 17 00:00:00 2001 From: Kali Kaneko Date: Wed, 23 Mar 2016 19:30:54 -0400 Subject: [feature] add QtWebView to render pixelated mua --- src/leap/bitmask/gui/qt_browser.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 src/leap/bitmask/gui/qt_browser.py (limited to 'src/leap/bitmask/gui/qt_browser.py') diff --git a/src/leap/bitmask/gui/qt_browser.py b/src/leap/bitmask/gui/qt_browser.py new file mode 100644 index 00000000..4bd947cb --- /dev/null +++ b/src/leap/bitmask/gui/qt_browser.py @@ -0,0 +1,13 @@ +from PySide import QtCore, QtWebKit, QtGui + +PIXELATED_URI = 'http://localhost:9090' + + +class PixelatedWindow(QtGui.QDialog): + + def __init__(self, parent): + QtGui.QDialog.__init__(self, parent) + self.web = QtWebKit.QWebView(self) + self.web.load(QtCore.QUrl(PIXELATED_URI)) + self.setWindowTitle('Bitmask/Pixelated WebMail') + self.web.show() -- cgit v1.2.3 From 106d202012f8f052a3cabe044d7287d2283655fc Mon Sep 17 00:00:00 2001 From: Kali Kaneko Date: Thu, 24 Mar 2016 10:04:38 -0400 Subject: [feature] hide browser menu entry if pixelated is disabled --- src/leap/bitmask/gui/qt_browser.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/leap/bitmask/gui/qt_browser.py') diff --git a/src/leap/bitmask/gui/qt_browser.py b/src/leap/bitmask/gui/qt_browser.py index 4bd947cb..e480b363 100644 --- a/src/leap/bitmask/gui/qt_browser.py +++ b/src/leap/bitmask/gui/qt_browser.py @@ -1,3 +1,23 @@ +# -*- coding: utf-8 -*- +# qt_browser.py +# Copyright (C) 2016 LEAP +# +# 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 . +""" +QtWebKit-based browser to display Pixelated User Agent +""" + from PySide import QtCore, QtWebKit, QtGui PIXELATED_URI = 'http://localhost:9090' -- cgit v1.2.3 From 130f1a8753bfe63f5575fc2011a15af9a0752170 Mon Sep 17 00:00:00 2001 From: Kali Kaneko Date: Thu, 7 Apr 2016 12:18:24 -0400 Subject: [bug] allow resizing browser window --- src/leap/bitmask/gui/qt_browser.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'src/leap/bitmask/gui/qt_browser.py') diff --git a/src/leap/bitmask/gui/qt_browser.py b/src/leap/bitmask/gui/qt_browser.py index e480b363..b75bfb64 100644 --- a/src/leap/bitmask/gui/qt_browser.py +++ b/src/leap/bitmask/gui/qt_browser.py @@ -26,8 +26,14 @@ PIXELATED_URI = 'http://localhost:9090' class PixelatedWindow(QtGui.QDialog): def __init__(self, parent): - QtGui.QDialog.__init__(self, parent) - self.web = QtWebKit.QWebView(self) - self.web.load(QtCore.QUrl(PIXELATED_URI)) + super(PixelatedWindow, self).__init__(parent) + self.view = QtWebKit.QWebView(self) + + layout = QtGui.QGridLayout() + layout.setContentsMargins(0, 0, 0, 0) + layout.addWidget(self.view) + self.setLayout(layout) self.setWindowTitle('Bitmask/Pixelated WebMail') - self.web.show() + + def load_app(self): + self.view.load(QtCore.QUrl(PIXELATED_URI)) -- cgit v1.2.3 From b6bf547e3a8b96b5fcdba739ed4be74bf040a7ed Mon Sep 17 00:00:00 2001 From: Kali Kaneko Date: Mon, 25 Apr 2016 17:25:36 -0400 Subject: [refactor] move the pixelated panel upwards --- src/leap/bitmask/gui/qt_browser.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/leap/bitmask/gui/qt_browser.py') diff --git a/src/leap/bitmask/gui/qt_browser.py b/src/leap/bitmask/gui/qt_browser.py index b75bfb64..c62e7770 100644 --- a/src/leap/bitmask/gui/qt_browser.py +++ b/src/leap/bitmask/gui/qt_browser.py @@ -33,7 +33,7 @@ class PixelatedWindow(QtGui.QDialog): layout.setContentsMargins(0, 0, 0, 0) layout.addWidget(self.view) self.setLayout(layout) - self.setWindowTitle('Bitmask/Pixelated WebMail') + self.setWindowTitle('Bitmask Mail') def load_app(self): self.view.load(QtCore.QUrl(PIXELATED_URI)) -- cgit v1.2.3 From 54560623ac5c325bebbe627582b3895c3354368a Mon Sep 17 00:00:00 2001 From: Kali Kaneko Date: Tue, 3 May 2016 12:18:25 -0400 Subject: [feature] enable to download attachments from within webkit - Resolves: #8069 - Releases: 0.9.2 --- src/leap/bitmask/gui/qt_browser.py | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) (limited to 'src/leap/bitmask/gui/qt_browser.py') diff --git a/src/leap/bitmask/gui/qt_browser.py b/src/leap/bitmask/gui/qt_browser.py index c62e7770..2f7e6086 100644 --- a/src/leap/bitmask/gui/qt_browser.py +++ b/src/leap/bitmask/gui/qt_browser.py @@ -17,8 +17,10 @@ """ QtWebKit-based browser to display Pixelated User Agent """ +import os +import urlparse -from PySide import QtCore, QtWebKit, QtGui +from PySide import QtCore, QtWebKit, QtGui, QtNetwork PIXELATED_URI = 'http://localhost:9090' @@ -37,3 +39,29 @@ class PixelatedWindow(QtGui.QDialog): def load_app(self): self.view.load(QtCore.QUrl(PIXELATED_URI)) + self.view.page().setForwardUnsupportedContent(True) + self.view.page().unsupportedContent.connect(self.download) + + self.manager = QtNetwork.QNetworkAccessManager() + self.manager.finished.connect(self.finished) + + def download(self, reply): + self.request = QtNetwork.QNetworkRequest(reply.url()) + self.reply = self.manager.get(self.request) + + def finished(self): + url = self.reply.url().toString() + + filename = urlparse.parse_qs(url).get('filename', None) + if filename: + filename = filename[0] + name = filename or url + + path = os.path.expanduser(os.path.join( + '~', unicode(name).split('/')[-1])) + destination = QtGui.QFileDialog.getSaveFileName(self, "Save", path) + if destination: + filename = destination[0] + with open(filename, 'wb') as f: + f.write(str(self.reply.readAll())) + f.close() -- cgit v1.2.3 From 13b5afd1bdea38e908bb774becfc0f49a532d5bd Mon Sep 17 00:00:00 2001 From: Kali Kaneko Date: Wed, 11 May 2016 13:38:07 -0400 Subject: [feat] resize qt-browser to a sensible default mainly to avoid the "Send" button to become out of view in the Compose pane (it needed scrolling to get it on view). this resize shouldn't be needed when pixelated solves the size-responsiveness issue. --- src/leap/bitmask/gui/qt_browser.py | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/leap/bitmask/gui/qt_browser.py') diff --git a/src/leap/bitmask/gui/qt_browser.py b/src/leap/bitmask/gui/qt_browser.py index 2f7e6086..2d9e20e6 100644 --- a/src/leap/bitmask/gui/qt_browser.py +++ b/src/leap/bitmask/gui/qt_browser.py @@ -37,6 +37,11 @@ class PixelatedWindow(QtGui.QDialog): self.setLayout(layout) self.setWindowTitle('Bitmask Mail') + # For the moment, we need to resize to a sensible default to avoid the + # "send" button to be out of view in the compose pane. This should be + # removed as soon as pixelated becomes size-responsive. + self.resize(800, 700) + def load_app(self): self.view.load(QtCore.QUrl(PIXELATED_URI)) self.view.page().setForwardUnsupportedContent(True) -- cgit v1.2.3