From d6e57e622309135fac84a8ae008106d6696a8c4d Mon Sep 17 00:00:00 2001
From: Inso <insomniak.fr@gmail.com>
Date: Fri, 7 Feb 2014 22:27:11 +0100
Subject: [PATCH] =?UTF-8?q?Listing=20des=20communaut=C3=A9s,=20d=C3=A9marr?=
 =?UTF-8?q?age=20du=20coeur=20de=20l'application,=20avec=20de=20le=20la=20?=
 =?UTF-8?q?sauvegarde=20au=20format=20JSON?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 res/ui/addAccountDialog.ui                    |  2 +-
 res/ui/mainwindow.ui                          | 15 ++++++++--
 src/cutecoin/__init__.py                      |  5 ++--
 src/cutecoin/core/__init__.py                 | 30 +++++++++++++++++++
 src/cutecoin/core/appData.py                  | 29 ++++++++++++++++++
 src/cutecoin/core/config.py                   | 12 ++++++++
 src/cutecoin/gui/addAccountDialog.py          | 14 +++++----
 src/cutecoin/gui/addCommunityDialog.py        |  2 +-
 src/cutecoin/gui/mainWindow.py                | 22 +++++++++++---
 src/cutecoin/models/__init__.py               |  0
 .../models/account/communities/listModel.py   |  4 +--
 .../models/account/communities/treeModel.py   |  2 ++
 .../models/account/wallets/__init__.py        | 15 ++++++++++
 .../models/{coin.py => coin/__init__.py}      |  0
 src/cutecoin/models/community/__init__.py     |  3 +-
 .../__init__.py}                              |  0
 .../models/{wallet.py => wallet/__init__.py}  |  0
 17 files changed, 136 insertions(+), 19 deletions(-)
 create mode 100644 src/cutecoin/core/__init__.py
 create mode 100644 src/cutecoin/core/appData.py
 create mode 100644 src/cutecoin/core/config.py
 create mode 100644 src/cutecoin/models/__init__.py
 create mode 100644 src/cutecoin/models/account/wallets/__init__.py
 rename src/cutecoin/models/{coin.py => coin/__init__.py} (100%)
 rename src/cutecoin/models/{transaction.py => transaction/__init__.py} (100%)
 rename src/cutecoin/models/{wallet.py => wallet/__init__.py} (100%)

diff --git a/res/ui/addAccountDialog.ui b/res/ui/addAccountDialog.ui
index 807ffccb..87f25ce7 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 c9c3e646..c6ab23c0 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 16edd0be..baa65356 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 00000000..43ea9c67
--- /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 00000000..11e25062
--- /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 00000000..ca1ce159
--- /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 f66916b8..9af46cdd 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 4f5966d6..0c930213 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 945cb2d6..0a1613fd 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 00000000..e69de29b
diff --git a/src/cutecoin/models/account/communities/listModel.py b/src/cutecoin/models/account/communities/listModel.py
index 62c68739..a176eb30 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 f375b6ef..13988dd7 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 00000000..2323764d
--- /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 e6aa91d1..4dd21146 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
-- 
GitLab