diff --git a/res/ui/addAccountDialog.ui b/res/ui/addAccountDialog.ui index 807ffccb5bb68c291718b916f5808c2e05a58c92..87f25ce73bd7c55cac5124e82103b93141765b42 100644 --- a/res/ui/addAccountDialog.ui +++ b/res/ui/addAccountDialog.ui @@ -61,7 +61,7 @@ </property> <layout class="QVBoxLayout" name="verticalLayout_3"> <item> - <widget class="QTableView" name="communitiesTable"/> + <widget class="QListView" name="communitiesList"/> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout_3"> diff --git a/res/ui/mainwindow.ui b/res/ui/mainwindow.ui index c9c3e646f3b9801066a7eccdd8172b2c4c7d8960..c6ab23c09a9ce0a3abcf426717eea0689503ea3f 100644 --- a/res/ui/mainwindow.ui +++ b/res/ui/mainwindow.ui @@ -14,7 +14,14 @@ <string notr="true">CuteCoin</string> </property> <widget class="QWidget" name="centralwidget"> - <layout class="QHBoxLayout" name="horizontalLayout_2"> + <layout class="QVBoxLayout" name="verticalLayout_6"> + <item> + <widget class="QLabel" name="accountNameLabel"> + <property name="text"> + <string>Please select an account</string> + </property> + </widget> + </item> <item> <widget class="QFrame" name="actionsFrame"> <property name="frameShape"> @@ -26,8 +33,11 @@ <layout class="QVBoxLayout" name="verticalLayout"> <item> <widget class="QTabWidget" name="tabWidget"> + <property name="enabled"> + <bool>false</bool> + </property> <property name="currentIndex"> - <number>0</number> + <number>2</number> </property> <widget class="QWidget" name="walletsTab"> <attribute name="title"> @@ -153,6 +163,7 @@ </property> <addaction name="actionChange_account"/> <addaction name="actionAdd_account"/> + <addaction name="separator"/> </widget> <widget class="QMenu" name="menuEdit"> <property name="title"> diff --git a/src/cutecoin/__init__.py b/src/cutecoin/__init__.py index 16edd0be597e42e43731472412ec411392332636..baa65356cd22f729c7077abdfe07a2f026fe8f99 100644 --- a/src/cutecoin/__init__.py +++ b/src/cutecoin/__init__.py @@ -6,11 +6,12 @@ Created on 1 févr. 2014 import sys from PyQt5.QtWidgets import QApplication, QDialog from cutecoin.gui.mainWindow import MainWindow -from cutecoin.models.account import Account +from cutecoin.core import Core if __name__ == '__main__': app = QApplication(sys.argv) - window = MainWindow() + core = Core(sys.argv) + window = MainWindow(core) window.show() sys.exit(app.exec_()) pass \ No newline at end of file diff --git a/src/cutecoin/core/__init__.py b/src/cutecoin/core/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..43ea9c67b43961435c198443f802fb53cf4ff04c --- /dev/null +++ b/src/cutecoin/core/__init__.py @@ -0,0 +1,30 @@ +''' +Created on 1 févr. 2014 + +@author: inso +''' + +from cutecoin.core.appData import AppData +from cutecoin.core import config + +class Core(object): + + def __init__(self, argv): + ''' + Constructor + ''' + self.account = [] + self.currentAccount = None + config.parseArguments(argv) + AppData().load(self) + + def getAccounts(self): + return self.accounts + + def addAccount(self, account): + self.accounts.append(account) + self.currentAccount = account + + def delAccount(self, account): + self.accounts.remove(account) + diff --git a/src/cutecoin/core/appData.py b/src/cutecoin/core/appData.py new file mode 100644 index 0000000000000000000000000000000000000000..11e25062dfc17a2b480f2f04cd4c37790b0df5df --- /dev/null +++ b/src/cutecoin/core/appData.py @@ -0,0 +1,29 @@ +''' +Created on 7 févr. 2014 + +@author: inso +''' +import json +from cutecoin.core import config + +class AppData(object): + ''' + classdocs + ''' + + + def __init__(self): + ''' + Constructor + ''' + + def load(self, core): + json_data=open(config.data['home']) + data = json.load(json_data) + json_data.close() + data['accounts'] + + + def save(self, core): + #TODO: Sauvegarde de l'état de l'application + pass \ No newline at end of file diff --git a/src/cutecoin/core/config.py b/src/cutecoin/core/config.py new file mode 100644 index 0000000000000000000000000000000000000000..ca1ce159d622c6858f2051d34ebd4dd8bd356ce1 --- /dev/null +++ b/src/cutecoin/core/config.py @@ -0,0 +1,12 @@ +''' +Created on 7 févr. 2014 + +@author: inso +''' + + +data = { 'home' : '~/.cutecoin'} + +def parseArguments(argv): + #TODO: Parsing d'arguments + pass \ No newline at end of file diff --git a/src/cutecoin/gui/addAccountDialog.py b/src/cutecoin/gui/addAccountDialog.py index f66916b85891aebcd279f98a5a9b578f7922a643..9af46cddbcb87ef31e20a4646152c572e4855aa9 100644 --- a/src/cutecoin/gui/addAccountDialog.py +++ b/src/cutecoin/gui/addAccountDialog.py @@ -8,7 +8,7 @@ from PyQt5.QtWidgets import QDialog from cutecoin.gui.addCommunityDialog import AddCommunityDialog from cutecoin.models.account import Account from cutecoin.models.account.communities import Communities -from cutecoin.models.account.communities.treeModel import CommunitiesTreeModel +from cutecoin.models.account.communities.listModel import CommunitiesListModel import gnupg @@ -19,7 +19,7 @@ class AddAccountDialog(QDialog, Ui_AddAccountDialog): ''' - def __init__(self): + def __init__(self, mainWindow): ''' Constructor ''' @@ -27,6 +27,11 @@ class AddAccountDialog(QDialog, Ui_AddAccountDialog): super(AddAccountDialog, self).__init__() self.setupUi(self) self.dialog = AddCommunityDialog(self) + self.mainWindow = mainWindow + + + self.buttonBox.accepted.connect(self.mainWindow.actionAddAccount) + self.setData() def setData(self): @@ -35,14 +40,13 @@ class AddAccountDialog(QDialog, Ui_AddAccountDialog): for key in availableKeys: self.pgpkeyList.addItem(key['uids'][0]) - self.account = Account(self.pgpkeyList.currentText(), "", Communities()) def openAddCommunityDialog(self): self.dialog.setCommunities(self.account.communities) self.dialog.exec_() - def validAddCommunityDialog(self): - self.communitiesTable.setModel(CommunitiesTreeModel(self.account)) + def actionAddCommunity(self): + self.communitiesList.setModel(CommunitiesListModel(self.account)) diff --git a/src/cutecoin/gui/addCommunityDialog.py b/src/cutecoin/gui/addCommunityDialog.py index 4f5966d61ce80e8febe14588002f635a02c56d67..0c930213afc1dd36fe457830ff11b25e82920cb5 100644 --- a/src/cutecoin/gui/addCommunityDialog.py +++ b/src/cutecoin/gui/addCommunityDialog.py @@ -21,7 +21,7 @@ class AddCommunityDialog(QDialog, Ui_AddCommunityDialog): super(AddCommunityDialog, self).__init__() self.setupUi(self) self.accountDialog = accountDialog - self.buttonBox.accepted.connect(self.accountDialog.validAddCommunityDialog) + self.buttonBox.accepted.connect(self.accountDialog.actionAddCommunity) def setCommunities(self, communities): self.communities = communities diff --git a/src/cutecoin/gui/mainWindow.py b/src/cutecoin/gui/mainWindow.py index 945cb2d63cae055714ba575d63066f43f59e00f5..0a1613fda8aa5d45f08cd652ff0171a8a56ed9f0 100644 --- a/src/cutecoin/gui/mainWindow.py +++ b/src/cutecoin/gui/mainWindow.py @@ -13,15 +13,29 @@ class MainWindow(QMainWindow, Ui_MainWindow): ''' - def __init__(self): + def __init__(self, core): ''' Constructor ''' # Set up the user interface from Designer. super(MainWindow, self).__init__() self.setupUi(self) + self.core = core def openAddAccountDialog(self): - dialog = AddAccountDialog() - dialog.setData() - dialog.exec_() \ No newline at end of file + self.dialog = AddAccountDialog() + self.dialog.setData() + self.dialog.exec_() + + def actionAddAccount(self): + self.core.addAccount(self.dialog.account) + + ''' + Refresh main window + When the selected account changes, all the widgets + in the window have to be refreshed + ''' + def refreshMainWindow(self): + if self.core.currentAccount != None: + #TODO: rafraichissement de la fenetre + pass diff --git a/src/cutecoin/models/__init__.py b/src/cutecoin/models/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/cutecoin/models/account/communities/listModel.py b/src/cutecoin/models/account/communities/listModel.py index 62c68739914a2475799269e240d6eb7c4f7cdc1e..a176eb30e03f25841f03ed424ae6c50ae1a90a6a 100644 --- a/src/cutecoin/models/account/communities/listModel.py +++ b/src/cutecoin/models/account/communities/listModel.py @@ -10,12 +10,12 @@ class CommunitiesListModel(QAbstractListModel): ''' A Qt abstract item model to display communities in a tree ''' - def __init__(self, communities, parent=None): + def __init__(self, account, parent=None): ''' Constructor ''' super(CommunitiesListModel, self).__init__(parent) - self.communities = communities + self.communities = account.communities def rowCount(self ,parent): diff --git a/src/cutecoin/models/account/communities/treeModel.py b/src/cutecoin/models/account/communities/treeModel.py index f375b6eff129a4ab9d8da368cb943f6cdb89726b..13988dd7ee07df6bbd47ce2b89236d57c2a880cb 100644 --- a/src/cutecoin/models/account/communities/treeModel.py +++ b/src/cutecoin/models/account/communities/treeModel.py @@ -9,6 +9,8 @@ from cutecoin.models.account.communities.itemModel import CommunitiesItemModel from cutecoin.models.community.itemModel import CommunityItemModel from cutecoin.models.node.itemModel import MainNodeItem, NodeItem +#TODO: Use it somewhere or remove it from the code + class CommunitiesTreeModel(QAbstractItemModel): ''' A Qt abstract item model to display communities in a tree diff --git a/src/cutecoin/models/account/wallets/__init__.py b/src/cutecoin/models/account/wallets/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..2323764d9b4a2eb967ec4d272e8f18db84dc7b83 --- /dev/null +++ b/src/cutecoin/models/account/wallets/__init__.py @@ -0,0 +1,15 @@ +''' +Created on 7 févr. 2014 + +@author: inso +''' + +class Wallets(object): + ''' + classdocs + ''' + def __init__(self): + ''' + Constructor + ''' + diff --git a/src/cutecoin/models/coin.py b/src/cutecoin/models/coin/__init__.py similarity index 100% rename from src/cutecoin/models/coin.py rename to src/cutecoin/models/coin/__init__.py diff --git a/src/cutecoin/models/community/__init__.py b/src/cutecoin/models/community/__init__.py index e6aa91d1fef1f65287328d70e99af2b7ec89bb30..4dd21146774db267c876268c71d30dc989fb3f07 100644 --- a/src/cutecoin/models/community/__init__.py +++ b/src/cutecoin/models/community/__init__.py @@ -23,8 +23,7 @@ class Community(object): Listing members of a community ''' - # TODO : Try connecting with nodes of the list - # if the first fails + #TODO: Try connecting with nodes of the list if the first fails # Maybe create a method ucoin.settings['server'] = self.knowNodes[0].server ucoin.settings['port'] = self.knowNodes[0].port diff --git a/src/cutecoin/models/transaction.py b/src/cutecoin/models/transaction/__init__.py similarity index 100% rename from src/cutecoin/models/transaction.py rename to src/cutecoin/models/transaction/__init__.py diff --git a/src/cutecoin/models/wallet.py b/src/cutecoin/models/wallet/__init__.py similarity index 100% rename from src/cutecoin/models/wallet.py rename to src/cutecoin/models/wallet/__init__.py