From c7304e54e40cd9151e6d00a8441aaf48b68c9bcc Mon Sep 17 00:00:00 2001 From: elijah Date: Wed, 3 Sep 2014 15:50:08 -0700 Subject: single pref win: move eip preferences to new combined preference window. --- src/leap/bitmask/gui/preferences_vpn_page.py | 150 +++++++++++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 src/leap/bitmask/gui/preferences_vpn_page.py (limited to 'src/leap/bitmask/gui/preferences_vpn_page.py') diff --git a/src/leap/bitmask/gui/preferences_vpn_page.py b/src/leap/bitmask/gui/preferences_vpn_page.py new file mode 100644 index 00000000..ba1366e4 --- /dev/null +++ b/src/leap/bitmask/gui/preferences_vpn_page.py @@ -0,0 +1,150 @@ +# -*- coding: utf-8 -*- +# Copyright (C) 2014 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 . +""" +Widget for "vpn" preferences +""" + +from PySide import QtCore, QtGui +from ui_preferences_vpn_page import Ui_PreferencesVpnPage + +from leap.bitmask.config.leapsettings import LeapSettings + + +class PreferencesVpnPage(QtGui.QWidget): + """ + Page in the preferences window that shows VPN settings + """ + + def __init__(self, parent, domain, backend, leap_signaler): + """ + :param parent: parent object of the EIPPreferencesWindow. + :type parent: QWidget + + :param domain: the selected by default domain. + :type domain: unicode + + :param backend: Backend being used + :type backend: Backend + """ + QtGui.QWidget.__init__(self, parent) + self.AUTOMATIC_GATEWAY_LABEL = self.tr("Automatic") + + self._settings = LeapSettings() + self._leap_signaler = leap_signaler + self._backend = backend + + # Load UI + self.ui = Ui_PreferencesVpnPage() + self.ui.setupUi(self) + self.ui.flash_label.setVisible(False) + + # Connections + self.ui.gateways_list.clicked.connect(self._save_selected_gateway) + + self._domain = domain + self._backend_connect() + self._backend.eip_get_gateways_list(domain=domain) + + def _flash_error(self, message): + """ + Sets string for the flash message. + + :param message: the text to be displayed + :type message: str + """ + message = "%s" % (message,) + self.ui.flash_label.setVisible(True) + self.ui.flash_label.setText(message) + + # def _flash_success(self, message): + # """ + # Sets string for the flash message. + # + # :param message: the text to be displayed + # :type message: str + # """ + # message = "%s" % (message,) + # self.ui.flash_label.setVisible(True) + # self.ui.flash_label.setText(message) + + @QtCore.Slot(str) + def _save_selected_gateway(self, index): + """ + TRIGGERS: + self.ui.gateways_list.clicked + + Saves the new gateway setting to the configuration file. + + :param index: the current index of the selection. + :type current_item: QModelIndex + """ + item = self.ui.gateways_list.currentItem() + + if item.text() == self.AUTOMATIC_GATEWAY_LABEL: + gateway = self._settings.GATEWAY_AUTOMATIC + else: + gateway = item.data(QtCore.Qt.UserRole) + self._settings.set_selected_gateway(self._domain, gateway) + self._backend.settings_set_selected_gateway(provider=self._domain, + gateway=gateway) + + @QtCore.Slot(list) + def _update_gateways_list(self, gateways): + """ + TRIGGERS: + Signaler.eip_get_gateways_list + + :param gateways: a list of gateways + :type gateways: list of unicode + + Add the available gateways and select the one stored in + configuration file. + """ + self.ui.gateways_list.clear() + self.ui.gateways_list.addItem(self.AUTOMATIC_GATEWAY_LABEL) + + selected_gateway = self._settings.get_selected_gateway( + self._domain) + + index = 0 + for idx, (gw_name, gw_ip, gw_country) in enumerate(gateways): + gateway_text = "{0} ({1})".format(gw_name, gw_ip) + item = QtGui.QListWidgetItem(self.ui.gateways_list) + item.setText(gateway_text) + item.setIcon(QtGui.QIcon( + ":/images/countries/%s.png" % (gw_country.lower(),))) + item.setData(QtCore.Qt.UserRole, gw_ip) + if gw_ip == selected_gateway: + index = idx + 1 + self.ui.gateways_list.setCurrentRow(index) + + @QtCore.Slot() + def _gateways_list_error(self): + """ + TRIGGERS: + Signaler.eip_get_gateways_list_error + + An error has occurred retrieving the gateway list + so we inform the user. + """ + self._flash_error( + self.tr("Error loading configuration file.")) + self.ui.gateways_list.setEnabled(False) + + def _backend_connect(self): + sig = self._leap_signaler + sig.eip_get_gateways_list.connect(self._update_gateways_list) + sig.eip_get_gateways_list_error.connect(self._gateways_list_error) -- cgit v1.2.3 From 4e7c4b48b4255ceac06900fa9e65824c52e15ba7 Mon Sep 17 00:00:00 2001 From: elijah Date: Thu, 4 Sep 2014 17:09:29 -0700 Subject: single pref win: enabled/disable services via preferences window, account page. --- src/leap/bitmask/gui/preferences_vpn_page.py | 54 +++++++++++++++++----------- 1 file changed, 33 insertions(+), 21 deletions(-) (limited to 'src/leap/bitmask/gui/preferences_vpn_page.py') diff --git a/src/leap/bitmask/gui/preferences_vpn_page.py b/src/leap/bitmask/gui/preferences_vpn_page.py index ba1366e4..a8f074d2 100644 --- a/src/leap/bitmask/gui/preferences_vpn_page.py +++ b/src/leap/bitmask/gui/preferences_vpn_page.py @@ -28,23 +28,22 @@ class PreferencesVpnPage(QtGui.QWidget): Page in the preferences window that shows VPN settings """ - def __init__(self, parent, domain, backend, leap_signaler): + def __init__(self, parent, account, app): """ :param parent: parent object of the EIPPreferencesWindow. :type parent: QWidget - :param domain: the selected by default domain. - :type domain: unicode + :param account: the currently active account + :type account: Account - :param backend: Backend being used - :type backend: Backend + :param app: shared App instance + :type app: App """ QtGui.QWidget.__init__(self, parent) self.AUTOMATIC_GATEWAY_LABEL = self.tr("Automatic") - self._settings = LeapSettings() - self._leap_signaler = leap_signaler - self._backend = backend + self.account = account + self.app = app # Load UI self.ui = Ui_PreferencesVpnPage() @@ -53,10 +52,14 @@ class PreferencesVpnPage(QtGui.QWidget): # Connections self.ui.gateways_list.clicked.connect(self._save_selected_gateway) + sig = self.app.signaler + sig.eip_get_gateways_list.connect(self._update_gateways_list) + sig.eip_get_gateways_list_error.connect(self._gateways_list_error) + sig.eip_uninitialized_provider.connect( + self._gateways_list_uninitialized) - self._domain = domain - self._backend_connect() - self._backend.eip_get_gateways_list(domain=domain) + # Trigger update + self.app.backend.eip_get_gateways_list(domain=self.account.domain) def _flash_error(self, message): """ @@ -94,12 +97,13 @@ class PreferencesVpnPage(QtGui.QWidget): item = self.ui.gateways_list.currentItem() if item.text() == self.AUTOMATIC_GATEWAY_LABEL: - gateway = self._settings.GATEWAY_AUTOMATIC + gateway = self.app.settings.GATEWAY_AUTOMATIC else: gateway = item.data(QtCore.Qt.UserRole) - self._settings.set_selected_gateway(self._domain, gateway) - self._backend.settings_set_selected_gateway(provider=self._domain, - gateway=gateway) + self.app.settings.set_selected_gateway(self.account.domain, gateway) + self.app.backend.settings_set_selected_gateway( + provider=self.account.domain, + gateway=gateway) @QtCore.Slot(list) def _update_gateways_list(self, gateways): @@ -116,8 +120,8 @@ class PreferencesVpnPage(QtGui.QWidget): self.ui.gateways_list.clear() self.ui.gateways_list.addItem(self.AUTOMATIC_GATEWAY_LABEL) - selected_gateway = self._settings.get_selected_gateway( - self._domain) + selected_gateway = self.app.settings.get_selected_gateway( + self.account.domain) index = 0 for idx, (gw_name, gw_ip, gw_country) in enumerate(gateways): @@ -144,7 +148,15 @@ class PreferencesVpnPage(QtGui.QWidget): self.tr("Error loading configuration file.")) self.ui.gateways_list.setEnabled(False) - def _backend_connect(self): - sig = self._leap_signaler - sig.eip_get_gateways_list.connect(self._update_gateways_list) - sig.eip_get_gateways_list_error.connect(self._gateways_list_error) + @QtCore.Slot() + def _gateways_list_uninitialized(self): + """ + TRIGGERS: + Signaler.eip_uninitialized_provider + + The requested provider in not initialized yet, so we give the user an + error msg. + """ + self._flash_error( + self.tr("This is an uninitialized provider, please log in first.")) + self.ui.gateways_list.setEnabled(False) -- cgit v1.2.3 From c29b1dd9345e01e761b9891728ecd0b8d964a02d Mon Sep 17 00:00:00 2001 From: elijah Date: Tue, 16 Sep 2014 16:40:52 -0700 Subject: single pref win: gets the autopep8 beauty scrub. --- src/leap/bitmask/gui/preferences_vpn_page.py | 1 + 1 file changed, 1 insertion(+) (limited to 'src/leap/bitmask/gui/preferences_vpn_page.py') diff --git a/src/leap/bitmask/gui/preferences_vpn_page.py b/src/leap/bitmask/gui/preferences_vpn_page.py index a8f074d2..e3417f89 100644 --- a/src/leap/bitmask/gui/preferences_vpn_page.py +++ b/src/leap/bitmask/gui/preferences_vpn_page.py @@ -24,6 +24,7 @@ from leap.bitmask.config.leapsettings import LeapSettings class PreferencesVpnPage(QtGui.QWidget): + """ Page in the preferences window that shows VPN settings """ -- cgit v1.2.3 From 1d331478a431047bf59fc6249a93e127450bff24 Mon Sep 17 00:00:00 2001 From: elijah Date: Tue, 16 Sep 2014 17:07:12 -0700 Subject: single pref win: clean up vpn pref error displaying & don't show dummy gateways in case of error. --- src/leap/bitmask/gui/preferences_vpn_page.py | 31 +++++----------------------- 1 file changed, 5 insertions(+), 26 deletions(-) (limited to 'src/leap/bitmask/gui/preferences_vpn_page.py') diff --git a/src/leap/bitmask/gui/preferences_vpn_page.py b/src/leap/bitmask/gui/preferences_vpn_page.py index e3417f89..f3fa1ecc 100644 --- a/src/leap/bitmask/gui/preferences_vpn_page.py +++ b/src/leap/bitmask/gui/preferences_vpn_page.py @@ -21,9 +21,9 @@ from PySide import QtCore, QtGui from ui_preferences_vpn_page import Ui_PreferencesVpnPage from leap.bitmask.config.leapsettings import LeapSettings +from leap.bitmask.gui.flashable import Flashable - -class PreferencesVpnPage(QtGui.QWidget): +class PreferencesVpnPage(QtGui.QWidget, Flashable): """ Page in the preferences window that shows VPN settings @@ -50,6 +50,7 @@ class PreferencesVpnPage(QtGui.QWidget): self.ui = Ui_PreferencesVpnPage() self.ui.setupUi(self) self.ui.flash_label.setVisible(False) + self.hide_flash() # Connections self.ui.gateways_list.clicked.connect(self._save_selected_gateway) @@ -62,28 +63,6 @@ class PreferencesVpnPage(QtGui.QWidget): # Trigger update self.app.backend.eip_get_gateways_list(domain=self.account.domain) - def _flash_error(self, message): - """ - Sets string for the flash message. - - :param message: the text to be displayed - :type message: str - """ - message = "%s" % (message,) - self.ui.flash_label.setVisible(True) - self.ui.flash_label.setText(message) - - # def _flash_success(self, message): - # """ - # Sets string for the flash message. - # - # :param message: the text to be displayed - # :type message: str - # """ - # message = "%s" % (message,) - # self.ui.flash_label.setVisible(True) - # self.ui.flash_label.setText(message) - @QtCore.Slot(str) def _save_selected_gateway(self, index): """ @@ -145,7 +124,7 @@ class PreferencesVpnPage(QtGui.QWidget): An error has occurred retrieving the gateway list so we inform the user. """ - self._flash_error( + self.flash_error( self.tr("Error loading configuration file.")) self.ui.gateways_list.setEnabled(False) @@ -158,6 +137,6 @@ class PreferencesVpnPage(QtGui.QWidget): The requested provider in not initialized yet, so we give the user an error msg. """ - self._flash_error( + self.flash_error( self.tr("This is an uninitialized provider, please log in first.")) self.ui.gateways_list.setEnabled(False) -- cgit v1.2.3 From d8105d53e3aa66448094df3f34eda54c3dcab865 Mon Sep 17 00:00:00 2001 From: elijah Date: Wed, 17 Sep 2014 16:42:51 -0700 Subject: single pref win: minor linting & add changes file --- src/leap/bitmask/gui/preferences_vpn_page.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/leap/bitmask/gui/preferences_vpn_page.py') diff --git a/src/leap/bitmask/gui/preferences_vpn_page.py b/src/leap/bitmask/gui/preferences_vpn_page.py index f3fa1ecc..901116b4 100644 --- a/src/leap/bitmask/gui/preferences_vpn_page.py +++ b/src/leap/bitmask/gui/preferences_vpn_page.py @@ -18,11 +18,12 @@ Widget for "vpn" preferences """ from PySide import QtCore, QtGui -from ui_preferences_vpn_page import Ui_PreferencesVpnPage +from leap.bitmask.gui.ui_preferences_vpn_page import Ui_PreferencesVpnPage from leap.bitmask.config.leapsettings import LeapSettings from leap.bitmask.gui.flashable import Flashable + class PreferencesVpnPage(QtGui.QWidget, Flashable): """ -- cgit v1.2.3