''' Created on 6 mars 2014 @author: inso ''' from cutecoin.gen_resources.accountConfigurationDialog_uic import Ui_AccountConfigurationDialog from cutecoin.gui.configureCommunityDialog import ConfigureCommunityDialog from cutecoin.models.account.communities.listModel import CommunitiesListModel from cutecoin.core.exceptions import KeyAlreadyUsed from cutecoin.models.account import Account from cutecoin.models.account import Communities from cutecoin.models.node import Node from PyQt5.QtWidgets import QDialog, QErrorMessage, QInputDialog import gnupg class ConfigureAccountDialog(QDialog, Ui_AccountConfigurationDialog): ''' classdocs ''' def __init__(self, core, account): ''' Constructor ''' # Set up the user interface from Designer. super(ConfigureAccountDialog, self).__init__() self.setupUi(self) self.account = account self.core = core if self.account is None: self.setWindowTitle("New account") else: self.setWindowTitle("Configure " + self.account.name) self.combo_keys_list.setEnabled(False) self.set_data() def set_data(self): gpg = gnupg.GPG() self.combo_keys_list.clear() available_keys = gpg.list_keys(True) if self.account is None: self.account = Account.create( available_keys[0]['keyid'], "", Communities()) self.combo_keys_list.currentIndexChanged[ int].connect(self.key_changed) for index, key in enumerate(available_keys): self.combo_keys_list.addItem(key['uids'][0]) if (key['keyid']) == self.account.keyid: self.combo_keys_list.setCurrentIndex(index) self.list_communities.setModel(CommunitiesListModel(self.account)) self.edit_account_name.setText(self.account.name) def open_add_community_dialog(self): text, ok = QInputDialog.getText( self, 'Add a community', 'Enter a main node address you trust :') if ok: server, port = text.split(':')[0], int(text.split(':')[1]) dialog = ConfigureCommunityDialog( self.account, None, Node( server, port)) dialog.button_box.accepted.connect(self.action_add_community) dialog.exec_() def action_add_community(self): self.combo_keys_list.setEnabled(False) self.combo_keys_list.disconnect() self.list_communities.setModel(CommunitiesListModel(self.account)) def action_remove_community(self): for index in self.list_communities.selectedIndexes(): community = self.account.communities.communitiesList[index.row()] self.account.wallets.removeAllWalletsOf(community) self.account.communities.communitiesList.pop(index.row()) self.list_communities.setModel(CommunitiesListModel(self.account)) def action_edit_community(self): self.list_communities.setModel(CommunitiesListModel(self.account)) def open_edit_community_dialog(self, index): community = self.account.communities.communities_list[index.row()] dialog = ConfigureCommunityDialog(self.account, community) dialog.button_box.accepted.connect(self.action_edit_community) dialog.exec_() def key_changed(self, key_index): gpg = gnupg.GPG() available_keys = gpg.list_keys(True) self.account.keyid = available_keys[key_index]['keyid'] def accept(self): if self.account not in self.core.accounts: self.account.name = self.edit_account_name.text() try: self.core.add_account(self.account) except KeyAlreadyUsed as e: QErrorMessage(self).showMessage(e.message) self.close()