78 lines
2.8 KiB
Python
78 lines
2.8 KiB
Python
from ui.widgets import *
|
|
from PyQt5 import uic
|
|
import utils.util as util
|
|
import utils.ui as util_ui
|
|
import os.path
|
|
|
|
|
|
class LoginScreenResult:
|
|
|
|
def __init__(self, profile_path, load_as_default, password=None):
|
|
self._profile_path = profile_path
|
|
self._load_as_default = load_as_default
|
|
self._password = password
|
|
|
|
def get_profile_path(self):
|
|
return self._profile_path
|
|
|
|
profile_path = property(get_profile_path)
|
|
|
|
def get_load_as_default(self):
|
|
return self._load_as_default
|
|
|
|
load_as_default = property(get_load_as_default)
|
|
|
|
def get_password(self):
|
|
return self._password
|
|
|
|
password = property(get_password)
|
|
|
|
def is_new_profile(self):
|
|
return not os.path.isfile(self._profile_path)
|
|
|
|
|
|
class LoginScreen(CenteredWidget, DialogWithResult):
|
|
|
|
def __init__(self):
|
|
CenteredWidget.__init__(self)
|
|
DialogWithResult.__init__(self)
|
|
uic.loadUi(util.get_views_path('login_screen'), self)
|
|
self.center()
|
|
self._profiles = []
|
|
self._update_ui()
|
|
|
|
def update_select(self, profiles):
|
|
profiles = sorted(profiles, key=lambda p: p[1])
|
|
self._profiles = list(profiles)
|
|
self.profilesComboBox.addItems(list(map(lambda p: p[1], profiles)))
|
|
self.loadProfilePushButton.setEnabled(len(profiles) > 0)
|
|
|
|
def _update_ui(self):
|
|
self.profileNameLineEdit = LineEditWithEnterSupport(self._create_profile, self)
|
|
self.profileNameLineEdit.setGeometry(QtCore.QRect(20, 100, 160, 30))
|
|
self._retranslate_ui()
|
|
self.createProfilePushButton.clicked.connect(self._create_profile)
|
|
self.loadProfilePushButton.clicked.connect(self._load_existing_profile)
|
|
|
|
def _create_profile(self):
|
|
path = self.profileNameLineEdit.text()
|
|
load_as_default = self.defaultProfileCheckBox.isChecked()
|
|
result = LoginScreenResult(path, load_as_default)
|
|
self.close_with_result(result)
|
|
|
|
def _load_existing_profile(self):
|
|
index = self.profilesComboBox.currentIndex()
|
|
load_as_default = self.defaultProfileCheckBox.isChecked()
|
|
path = util.join_path(self._profiles[index][0], self._profiles[index][1] + '.tox')
|
|
result = LoginScreenResult(path, load_as_default)
|
|
self.close_with_result(result)
|
|
|
|
def _retranslate_ui(self):
|
|
self.setWindowTitle(util_ui.tr('Log in'))
|
|
self.profileNameLineEdit.setPlaceholderText(util_ui.tr('Profile name'))
|
|
self.createProfilePushButton.setText(util_ui.tr('Create'))
|
|
self.loadProfilePushButton.setText(util_ui.tr('Load profile'))
|
|
self.defaultProfileCheckBox.setText(util_ui.tr('Use as default'))
|
|
self.existingProfileGroupBox.setTitle(util_ui.tr('Load existing profile'))
|
|
self.newProfileGroupBox.setTitle(util_ui.tr('Create new profile'))
|