def __init__(self, parent=None): QtGui.QDialog.__init__(self, parent) self.ui = Ui_AccountsDialog() self.ui.setupUi(self) self.accounts = parent.accounts self.load_accounts()
class KurirAccountsDialog(QtGui.QDialog): def __init__(self, parent=None): QtGui.QDialog.__init__(self, parent) self.ui = Ui_AccountsDialog() self.ui.setupUi(self) self.accounts = parent.accounts self.load_accounts() def load_accounts(self): self.ui.treeWidgetAccounts.clear() for account in self.accounts: twi = QtGui.QTreeWidgetItem() twi.account = account twi.setText(0, account.from_address) twi.setText(1, account.host_name) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(":/kurir/user.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) twi.setIcon(0, icon) self.ui.treeWidgetAccounts.addTopLevelItem(twi) self.ui.stackedWidget.setCurrentIndex(0) def edit_account(self): form = AccountForm(initial_data=self.current_account or KurirAccount()) form.display(target=self.ui) self.ui.checkBoxShowPw.setChecked(False) self.ui.from_address.setFocus() self.ui.from_address.selectAll() self.ui.stackedWidget.setCurrentIndex(1) @QtCore.pyqtSlot() def on_treeWidgetAccounts_itemSelectionChanged(self): is_selected = len(self.ui.treeWidgetAccounts.selectedItems()) > 0 self.ui.toolButtonEditAccount.setEnabled(is_selected) self.ui.toolButtonDeleteAccount.setEnabled(is_selected) @QtCore.pyqtSlot() def on_toolButtonAddAccount_clicked(self): self.current_account = None self.edit_account() @QtCore.pyqtSlot() def on_toolButtonEditAccount_clicked(self): twi = self.ui.treeWidgetAccounts.selectedItems()[0] self.current_account = twi.account self.edit_account() @QtCore.pyqtSlot() def on_from_address_editingFinished(self): if self.current_account is None: from_address = str(self.ui.from_address.text()) for preset in PRESETS: for domain in preset["domains"]: if from_address.endswith(domain): btn = QtGui.QMessageBox.question(self, "Question", "Do you want to load the preset settings for %s %s?" % (domain, self.current_account), QtGui.QMessageBox.Yes|QtGui.QMessageBox.No) if btn == QtGui.QMessageBox.Yes: tmp = {"from_address":from_address, "username":from_address, "password":""} tmp.update(preset) form = AccountForm(initial_data=tmp) form.display(self.ui) return @QtCore.pyqtSlot() def on_toolButtonDeleteAccount_clicked(self): btn = QtGui.QMessageBox.question(self, "Question", "Are you sure you want to delete the selected account?", QtGui.QMessageBox.Yes|QtGui.QMessageBox.No) if btn == QtGui.QMessageBox.Yes: twi = self.ui.treeWidgetAccounts.selectedItems()[0] for index, account in enumerate(self.accounts): if account == twi.account: del self.accounts[index] break self.load_accounts() self.emit(QtCore.SIGNAL("accounts_changed")) @QtCore.pyqtSlot(bool) def on_use_auth_toggled(self, checked): self.ui.username.setEnabled(checked) self.ui.password.setEnabled(checked) self.ui.labelUsername.setEnabled(checked) self.ui.labelPassword.setEnabled(checked) self.ui.checkBoxShowPw.setEnabled(checked) @QtCore.pyqtSlot(bool) def on_checkBoxShowPw_toggled(self, checked): if checked: self.ui.password.setEchoMode(QtGui.QLineEdit.Normal) else: self.ui.password.setEchoMode(QtGui.QLineEdit.Password) @QtCore.pyqtSlot() def on_toolButtonSave_clicked(self): form = AccountForm() form.load(target=self.ui) for name, msg in form.validate(): QtGui.QMessageBox.critical(self, name, msg) try: attr = getattr(self.ui, name) attr.setFocus() attr.selectAll() except: pass return if not self.current_account: self.current_account = KurirAccount() self.accounts.append(self.current_account) for key, value in form.cleaned_data.items(): if hasattr(self.current_account, key): setattr(self.current_account, key, value) self.load_accounts() self.emit(QtCore.SIGNAL("accounts_changed")) @QtCore.pyqtSlot() def on_toolButtonCancel_clicked(self): self.ui.stackedWidget.setCurrentIndex(0) @QtCore.pyqtSlot(QtGui.QTreeWidgetItem, int) def on_treeWidgetAccounts_itemDoubleClicked(self, twi, column): self.current_account = twi.account self.edit_account()