summaryrefslogtreecommitdiff
path: root/src/leap/gui/login.py
diff options
context:
space:
mode:
authorKali Kaneko <kali@leap.se>2013-08-12 13:25:44 +0200
committerKali Kaneko <kali@leap.se>2013-08-12 13:25:44 +0200
commit6da8d09846db4d2eed01e488bc6a6f5ba48b959f (patch)
tree3b82e8c4e14b1730ff292b6eb632c145dafb332a /src/leap/gui/login.py
parent00d98a47c60764475d97df1c2eb847e20a77cae5 (diff)
move everything into bitmask namespace
Diffstat (limited to 'src/leap/gui/login.py')
-rw-r--r--src/leap/gui/login.py245
1 files changed, 0 insertions, 245 deletions
diff --git a/src/leap/gui/login.py b/src/leap/gui/login.py
deleted file mode 100644
index de0b2d50..00000000
--- a/src/leap/gui/login.py
+++ /dev/null
@@ -1,245 +0,0 @@
-# -*- coding: utf-8 -*-
-# login.py
-# Copyright (C) 2013 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 <http://www.gnu.org/licenses/>.
-
-"""
-Login widget implementation
-"""
-import logging
-
-from PySide import QtCore, QtGui
-from ui_login import Ui_LoginWidget
-
-from leap.util.keyring_helpers import has_keyring
-
-logger = logging.getLogger(__name__)
-
-
-class LoginWidget(QtGui.QWidget):
- """
- Login widget that emits signals to display the wizard or to
- perform login.
- """
-
- # Emitted when the login button is clicked
- login = QtCore.Signal()
- cancel_login = QtCore.Signal()
-
- # Emitted when the user selects "Other..." in the provider
- # combobox or click "Create Account"
- show_wizard = QtCore.Signal()
-
- MAX_STATUS_WIDTH = 40
-
- BARE_USERNAME_REGEX = r"^[A-Za-z\d_]+$"
-
- def __init__(self, settings, parent=None):
- """
- Constructs the LoginWidget.
-
- :param settings: client wide settings
- :type settings: LeapSettings
- :param parent: The parent widget for this widget
- :type parent: QWidget or None
- """
- QtGui.QWidget.__init__(self, parent)
-
- self._settings = settings
- self._selected_provider_index = -1
-
- self.ui = Ui_LoginWidget()
- self.ui.setupUi(self)
-
- self.ui.chkRemember.stateChanged.connect(
- self._remember_state_changed)
- self.ui.chkRemember.setEnabled(has_keyring())
-
- self.ui.lnPassword.setEchoMode(QtGui.QLineEdit.Password)
-
- self.ui.btnLogin.clicked.connect(self.login)
- self.ui.lnPassword.returnPressed.connect(self.login)
-
- self.ui.lnUser.returnPressed.connect(self._focus_password)
-
- self.ui.cmbProviders.currentIndexChanged.connect(
- self._current_provider_changed)
- self.ui.btnCreateAccount.clicked.connect(
- self.show_wizard)
-
- username_re = QtCore.QRegExp(self.BARE_USERNAME_REGEX)
- self.ui.lnUser.setValidator(
- QtGui.QRegExpValidator(username_re, self))
-
- def _remember_state_changed(self, state):
- """
- Saves the remember state in the LeapSettings
-
- :param state: possible stats can be Checked, Unchecked and
- PartiallyChecked
- :type state: QtCore.Qt.CheckState
- """
- enable = True if state == QtCore.Qt.Checked else False
- self._settings.set_remember(enable)
-
- def set_providers(self, provider_list):
- """
- Set the provider list to provider_list plus an "Other..." item
- that triggers the wizard
-
- :param provider_list: list of providers
- :type provider_list: list of str
- """
- self.ui.cmbProviders.blockSignals(True)
- self.ui.cmbProviders.clear()
- self.ui.cmbProviders.addItems(provider_list + [self.tr("Other...")])
- self.ui.cmbProviders.blockSignals(False)
-
- def select_provider_by_name(self, name):
- """
- Given a provider name/domain, it selects it in the combobox
-
- :param name: name or domain for the provider
- :type name: str
- """
- provider_index = self.ui.cmbProviders.findText(name)
- self.ui.cmbProviders.setCurrentIndex(provider_index)
-
- def get_selected_provider(self):
- """
- Returns the selected provider in the combobox
- """
- return self.ui.cmbProviders.currentText()
-
- def set_remember(self, value):
- """
- Checks the remember user and password checkbox
-
- :param value: True to mark it checked, False otherwise
- :type value: bool
- """
- self.ui.chkRemember.setChecked(value)
-
- def get_remember(self):
- """
- Returns the remember checkbox state
-
- :rtype: bool
- """
- return self.ui.chkRemember.isChecked()
-
- def set_user(self, user):
- """
- Sets the user and focuses on the next field, password.
-
- :param user: user to set the field to
- :type user: str
- """
- self.ui.lnUser.setText(user)
- self._focus_password()
-
- def get_user(self):
- """
- Returns the user that appears in the widget.
-
- :rtype: str
- """
- return self.ui.lnUser.text()
-
- def set_password(self, password):
- """
- Sets the password for the widget
-
- :param password: password to set
- :type password: str
- """
- self.ui.lnPassword.setText(password)
-
- def get_password(self):
- """
- Returns the password that appears in the widget
-
- :rtype: str
- """
- return self.ui.lnPassword.text()
-
- def set_status(self, status, error=True):
- """
- Sets the status label at the login stage to status
-
- :param status: status message
- :type status: str
- """
- if len(status) > self.MAX_STATUS_WIDTH:
- status = status[:self.MAX_STATUS_WIDTH] + "..."
- if error:
- status = "<font color='red'><b>%s</b></font>" % (status,)
- self.ui.lblStatus.setText(status)
-
- def set_enabled(self, enabled=False):
- """
- Enables or disables all the login widgets
-
- :param enabled: wether they should be enabled or not
- :type enabled: bool
- """
- self.ui.lnUser.setEnabled(enabled)
- self.ui.lnPassword.setEnabled(enabled)
- self.ui.chkRemember.setEnabled(enabled)
- self.ui.cmbProviders.setEnabled(enabled)
-
- self._set_cancel(not enabled)
-
- def _set_cancel(self, enabled=False):
- """
- Enables or disables the cancel action in the "log in" process.
-
- :param enabled: wether it should be enabled or not
- :type enabled: bool
- """
- text = self.tr("Cancel")
- login_or_cancel = self.cancel_login
-
- if not enabled:
- text = self.tr("Log In")
- login_or_cancel = self.login
-
- self.ui.btnLogin.setText(text)
-
- self.ui.btnLogin.clicked.disconnect()
- self.ui.btnLogin.clicked.connect(login_or_cancel)
-
- def _focus_password(self):
- """
- Focuses in the password lineedit
- """
- self.ui.lnPassword.setFocus()
-
- def _current_provider_changed(self, param):
- """
- SLOT
- TRIGGERS: self.ui.cmbProviders.currentIndexChanged
- """
- if param == (self.ui.cmbProviders.count() - 1):
- self.show_wizard.emit()
- # Leave the previously selected provider in the combobox
- prev_provider = 0
- if self._selected_provider_index != -1:
- prev_provider = self._selected_provider_index
- self.ui.cmbProviders.blockSignals(True)
- self.ui.cmbProviders.setCurrentIndex(prev_provider)
- self.ui.cmbProviders.blockSignals(False)
- else:
- self._selected_provider_index = param