From 705726376bfd7ef1c7b1fe841c3b0c1bde944b0d Mon Sep 17 00:00:00 2001 From: Inso <insomniak.fr@gmail.com> Date: Mon, 10 Mar 2014 20:04:30 +0100 Subject: [PATCH] Removing and adding communities --- res/ui/accountConfigurationDialog.ui | 6 +++- res/ui/mainwindow.ui | 22 +++++++++++-- src/cutecoin/gui/configureAccountDialog.py | 24 +++++++++++--- src/cutecoin/gui/configureCommunityDialog.py | 1 + src/cutecoin/gui/mainWindow.py | 32 +++++++++---------- src/cutecoin/models/account/__init__.py | 6 ++++ .../models/account/wallets/__init__.py | 6 ++++ .../models/community/membersListModel.py | 1 - 8 files changed, 74 insertions(+), 24 deletions(-) diff --git a/res/ui/accountConfigurationDialog.ui b/res/ui/accountConfigurationDialog.ui index 52d57064..0b1edafa 100644 --- a/res/ui/accountConfigurationDialog.ui +++ b/res/ui/accountConfigurationDialog.ui @@ -61,7 +61,11 @@ </property> <layout class="QVBoxLayout" name="verticalLayout_3"> <item> - <widget class="QListView" name="list_communities"/> + <widget class="QListView" name="list_communities"> + <property name="contextMenuPolicy"> + <enum>Qt::DefaultContextMenu</enum> + </property> + </widget> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout_3"> diff --git a/res/ui/mainwindow.ui b/res/ui/mainwindow.ui index 88e78e2b..bec0edc3 100644 --- a/res/ui/mainwindow.ui +++ b/res/ui/mainwindow.ui @@ -37,7 +37,7 @@ <bool>false</bool> </property> <property name="currentIndex"> - <number>2</number> + <number>0</number> </property> <widget class="QWidget" name="walletsTab"> <attribute name="title"> @@ -323,8 +323,24 @@ <slot>openConfigureAccountDialog()</slot> <hints> <hint type="sourcelabel"> + <x>-1</x> + <y>-1</y> + </hint> + <hint type="destinationlabel"> <x>248</x> - <y>36</y> + <y>218</y> + </hint> + </hints> + </connection> + <connection> + <sender>walletsList</sender> + <signal>clicked(QModelIndex)</signal> + <receiver>MainWindow</receiver> + <slot>refreshWalletContent(QModelIndex)</slot> + <hints> + <hint type="sourcelabel"> + <x>137</x> + <y>240</y> </hint> <hint type="destinationlabel"> <x>248</x> @@ -339,5 +355,7 @@ <slot>openTransferMoneyDialog()</slot> <slot>openAddContactDialog()</slot> <slot>openConfigureAccountDialog()</slot> + <slot>refreshMainWindow()</slot> + <slot>refreshWalletContent(QModelIndex)</slot> </slots> </ui> diff --git a/src/cutecoin/gui/configureAccountDialog.py b/src/cutecoin/gui/configureAccountDialog.py index 5bdb2633..99a6ef87 100644 --- a/src/cutecoin/gui/configureAccountDialog.py +++ b/src/cutecoin/gui/configureAccountDialog.py @@ -6,7 +6,8 @@ Created on 6 mars 2014 from cutecoin.gen_resources.accountConfigurationDialog_uic import Ui_AccountConfigurationDialog from cutecoin.gui.configureCommunityDialog import ConfigureCommunityDialog from cutecoin.models.account.communities.listModel import CommunitiesListModel -from PyQt5.QtWidgets import QDialog +from cutecoin.core.exceptions import KeyAlreadyUsed +from PyQt5.QtWidgets import QDialog, QErrorMessage from cutecoin.models.account import Account from cutecoin.models.account import Communities import gnupg @@ -18,7 +19,7 @@ class ConfigureAccountDialog(QDialog, Ui_AccountConfigurationDialog): ''' - def __init__(self, account): + def __init__(self, core, account): ''' Constructor ''' @@ -26,6 +27,7 @@ class ConfigureAccountDialog(QDialog, Ui_AccountConfigurationDialog): super(ConfigureAccountDialog, self).__init__() self.setupUi(self) self.account = account + self.core = core if self.account is None: self.setWindowTitle("New account") else: @@ -64,8 +66,12 @@ class ConfigureAccountDialog(QDialog, Ui_AccountConfigurationDialog): self.list_communities.setModel(CommunitiesListModel(self.account)) def actionRemoveCommunity(self): - #TODO:Remove selected community - pass + 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 actionEditCommunity(self): self.list_communities.setModel(CommunitiesListModel(self.account)) @@ -82,3 +88,13 @@ class ConfigureAccountDialog(QDialog, Ui_AccountConfigurationDialog): availableKeys = gpg.list_keys(True) self.account.keyId = availableKeys[keyIndex]['keyid'] + def accept(self): + if self.account not in self.core.accounts: + self.account.name = self.edit_accountName.text() + try: + self.core.addAccount(self.account) + except KeyAlreadyUsed as e: + QErrorMessage(self).showMessage(e.message) + self.close() + + diff --git a/src/cutecoin/gui/configureCommunityDialog.py b/src/cutecoin/gui/configureCommunityDialog.py index bd1f6cf1..b3c91865 100644 --- a/src/cutecoin/gui/configureCommunityDialog.py +++ b/src/cutecoin/gui/configureCommunityDialog.py @@ -71,3 +71,4 @@ class ConfigureCommunityDialog(QDialog, Ui_CommunityConfigurationDialog): + diff --git a/src/cutecoin/gui/mainWindow.py b/src/cutecoin/gui/mainWindow.py index 4cf032c4..bfcb26e9 100644 --- a/src/cutecoin/gui/mainWindow.py +++ b/src/cutecoin/gui/mainWindow.py @@ -4,7 +4,7 @@ Created on 1 févr. 2014 @author: inso ''' from cutecoin.gen_resources.mainwindow_uic import Ui_MainWindow -from PyQt5.QtWidgets import QMainWindow, QAction, QErrorMessage +from PyQt5.QtWidgets import QMainWindow, QAction, QErrorMessage, QDialogButtonBox from PyQt5.QtCore import QSignalMapper from cutecoin.gui.configureAccountDialog import ConfigureAccountDialog from cutecoin.gui.transferMoneyDialog import TransferMoneyDialog @@ -14,7 +14,6 @@ from cutecoin.models.account.wallets.listModel import WalletsListModel from cutecoin.models.wallet.listModel import WalletListModel from cutecoin.models.transaction.sentListModel import SentListModel from cutecoin.models.transaction.receivedListModel import ReceivedListModel -from cutecoin.core.exceptions import KeyAlreadyUsed import logging @@ -35,18 +34,10 @@ class MainWindow(QMainWindow, Ui_MainWindow): self.refreshMainWindow() def openAddAccountDialog(self): - self.addAccountDialog = ConfigureAccountDialog(None) - self.addAccountDialog.buttonBox.accepted.connect(self.actionAddAccount) - self.addAccountDialog.setData() - self.addAccountDialog.exec_() - - def actionAddAccount(self): - self.addAccountDialog.account.name = self.addAccountDialog.edit_accountName.text() - try: - self.core.addAccount(self.addAccountDialog.account) - except KeyAlreadyUsed as e: - QErrorMessage(self).showMessage(e.message) - self.refreshMainWindow() + dialog = ConfigureAccountDialog(self.core, None) + dialog.buttonBox.button(QDialogButtonBox.Ok).clicked.connect(self.refreshMainWindow) + dialog.exec_() + def save(self): self.core.save() @@ -63,7 +54,9 @@ class MainWindow(QMainWindow, Ui_MainWindow): AddContactDialog(self.core.currentAccount, self).exec_() def openConfigureAccountDialog(self): - ConfigureAccountDialog(self.core.currentAccount).exec_() + dialog = ConfigureAccountDialog(self.core, self.core.currentAccount) + dialog.buttonBox.button(QDialogButtonBox.Ok).clicked.connect(self.refreshMainWindow) + dialog.exec_() ''' Refresh main window @@ -87,7 +80,6 @@ class MainWindow(QMainWindow, Ui_MainWindow): self.accountTabs.setEnabled(True) self.accountNameLabel.setText("Current account : " + self.core.currentAccount.name) self.walletsList.setModel(WalletsListModel(self.core.currentAccount)) - self.walletContent.setModel(WalletListModel(self.core.currentAccount.wallets.walletsList[0])) self.communitiesTab.clear() for community in self.core.currentAccount.communities.communitiesList: @@ -101,3 +93,11 @@ class MainWindow(QMainWindow, Ui_MainWindow): self.transactionsSent.setModel(SentListModel(self.core.currentAccount)) self.transactionsReceived.setModel(ReceivedListModel(self.core.currentAccount)) + + def refreshWalletContent(self, index): + if index.isValid(): + currentWallet = self.core.currentAccount.wallets.walletsList[index.row()] + self.walletContent.setModel(WalletListModel(currentWallet)) + else: + self.walletContent.setModel(WalletListModel([])) + diff --git a/src/cutecoin/models/account/__init__.py b/src/cutecoin/models/account/__init__.py index 9fcbc464..6f7f70cb 100644 --- a/src/cutecoin/models/account/__init__.py +++ b/src/cutecoin/models/account/__init__.py @@ -60,6 +60,12 @@ class Account(object): return account + def __eq__(self, other): + if other is not None: + return other.keyId == self.keyId + else: + return False + def addWallet(self, name, currency): self.wallets.addWallet(name, currency) diff --git a/src/cutecoin/models/account/wallets/__init__.py b/src/cutecoin/models/account/wallets/__init__.py index 05f7c806..c6b5dfd1 100644 --- a/src/cutecoin/models/account/wallets/__init__.py +++ b/src/cutecoin/models/account/wallets/__init__.py @@ -37,6 +37,12 @@ class Wallets(object): return w return None + def removeAllWalletsOf(self, community): + for wallet in self.walletsList: + if wallet.community == community: + self.walletsList.remove(wallet) + + def jsonify(self, community): ''' Return the list of wallets in a key:value form. diff --git a/src/cutecoin/models/community/membersListModel.py b/src/cutecoin/models/community/membersListModel.py index b017ba32..1dcf0f13 100644 --- a/src/cutecoin/models/community/membersListModel.py +++ b/src/cutecoin/models/community/membersListModel.py @@ -25,7 +25,6 @@ class MembersListModel(QAbstractListModel): return len(self.members) def data(self,index,role): - if role == Qt.DisplayRole: row=index.row() value = self.members[row].name -- GitLab