diff --git a/res/ui/accountConfigurationDialog.ui b/res/ui/accountConfigurationDialog.ui index 52d570648a217a869634b483d3486b48cc30a2b6..0b1edafa95f2de909aae8e2046ed6425257ff400 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 88e78e2b3b1f9ffb294106157e772144819eeee9..bec0edc3a3ea1ec7b840c695c226f7ff018c02e8 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 5bdb2633a971d06bf58bbb2efcf6d14aaebabea6..99a6ef87f0b90f53d818b3da6ae160167a317932 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 bd1f6cf1c12b36790f798a162ada5c31308feebf..b3c91865ae1b5a5fe265912d6b8437c93d23fb39 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 4cf032c4f7c768c76999ba8e152d0f68069c1cc3..bfcb26e91ff83acf1454923de2ee128e3d7c00b2 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 9fcbc46428d20ab672483cc152d31f4f3994a564..6f7f70cbe6f122986c178b3968d0acefb37c6ebb 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 05f7c806f190cde3cc3d8b71e814badca9f4117c..c6b5dfd1734f24d60f11dc61034870708a9209b8 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 b017ba32c9806c9f0bb8545a3fec598835f319ea..1dcf0f13151f07cd87eefe49c8d5ec4043ad9e73 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