diff --git a/res/ui/addCommunityDialog.ui b/res/ui/addCommunityDialog.ui index 520b3d138069728e9662ac74a4bce5a04e8a2f30..a7f25323b5f8e9139cd06d6ec19acb5b038f24b9 100644 --- a/res/ui/addCommunityDialog.ui +++ b/res/ui/addCommunityDialog.ui @@ -24,12 +24,12 @@ </property> <layout class="QVBoxLayout" name="verticalLayout_3"> <item> - <widget class="QTableView" name="communitiesTable"/> + <widget class="QTreeView" name="communitiesList"/> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout_3"> <item> - <widget class="QLineEdit" name="lineEdit"> + <widget class="QLineEdit" name="serverEdit"> <property name="text"> <string/> </property> @@ -39,24 +39,20 @@ </widget> </item> <item> - <widget class="QLineEdit" name="lineEdit_2"> - <property name="text"> - <string/> + <widget class="QSpinBox" name="portBox"> + <property name="minimum"> + <number>1025</number> </property> - <property name="placeholderText"> - <string>Port</string> + <property name="maximum"> + <number>99999</number> </property> - </widget> - </item> - <item> - <widget class="QCheckBox" name="checkBox"> - <property name="text"> - <string>Auth</string> + <property name="value"> + <number>8081</number> </property> </widget> </item> <item> - <widget class="QPushButton" name="removeCommunity"> + <widget class="QPushButton" name="addButton"> <property name="text"> <string>Add</string> </property> @@ -113,5 +109,24 @@ </hint> </hints> </connection> + <connection> + <sender>addButton</sender> + <signal>clicked()</signal> + <receiver>AddCommunityDialog</receiver> + <slot>addCommunity()</slot> + <hints> + <hint type="sourcelabel"> + <x>337</x> + <y>236</y> + </hint> + <hint type="destinationlabel"> + <x>199</x> + <y>149</y> + </hint> + </hints> + </connection> </connections> + <slots> + <slot>addCommunity()</slot> + </slots> </ui> diff --git a/src/cutecoin/gui/addAccountDialog.py b/src/cutecoin/gui/addAccountDialog.py index 661cee2b77b33acc91afecf7c4f0a799958d9d8c..9e8a86c93b545c7dcbd6c3235d230ea792b5361e 100644 --- a/src/cutecoin/gui/addAccountDialog.py +++ b/src/cutecoin/gui/addAccountDialog.py @@ -6,6 +6,9 @@ Created on 2 févr. 2014 from cutecoin.gen_resources.addAccountDialog_uic import Ui_AddAccountDialog from PyQt5.QtWidgets import QDialog from cutecoin.gui.addCommunityDialog import AddCommunityDialog +from cutecoin.models.community import CommunitiesManager +import gnupg + class AddAccountDialog(QDialog, Ui_AddAccountDialog): ''' @@ -20,9 +23,22 @@ class AddAccountDialog(QDialog, Ui_AddAccountDialog): # Set up the user interface from Designer. super(AddAccountDialog, self).__init__() self.setupUi(self) - print("stiio") + + + self.dialog = AddCommunityDialog() + + def setData(self): + self.communitiesManager = CommunitiesManager() + gpg = gnupg.GPG() + availableKeys = gpg.list_keys(True) + for key in availableKeys: + self.pgpkeyList.addItem(key['uids'][0]) def openAddCommunityDialog(self): - dialog = AddCommunityDialog() - dialog.show() + self.dialog.setCommunitiesManager(self.communitiesManager) + self.dialog.exec_() + + def validAddCommunityDialog(self): + # TODO Show items in tree + pass diff --git a/src/cutecoin/gui/addCommunityDialog.py b/src/cutecoin/gui/addCommunityDialog.py index 8598d3960dc7bef21fc40c1bd48d7dbb9fb19e0a..b0d622c632a15b6bc748695a0afb5c77104153e2 100644 --- a/src/cutecoin/gui/addCommunityDialog.py +++ b/src/cutecoin/gui/addCommunityDialog.py @@ -5,6 +5,10 @@ Created on 2 févr. 2014 ''' from cutecoin.gen_resources.addCommunityDialog_uic import Ui_AddCommunityDialog from PyQt5.QtWidgets import QDialog +from PyQt5.QtWidgets import QListWidgetItem +from cutecoin.models.community import CommunitiesManager, Community +from cutecoin.models.node import MainNode +import ucoinpy as ucoin class AddCommunityDialog(QDialog, Ui_AddCommunityDialog): ''' @@ -19,3 +23,15 @@ class AddCommunityDialog(QDialog, Ui_AddCommunityDialog): super(AddCommunityDialog, self).__init__() self.setupUi(self) + def setCommunitiesManager(self, communitiesManager): + self.communitiesManager = communitiesManager + + def addCommunity(self): + ''' + Add community slot + ''' + server = self.serverEdit.text() + port = self.portBox.value() + self.communitiesManager.addCommunity(MainNode(server, port)) + + diff --git a/src/cutecoin/gui/mainWindow.py b/src/cutecoin/gui/mainWindow.py index 9a5683118f004987b0f692e6f3dbb4172b055da5..945cb2d63cae055714ba575d63066f43f59e00f5 100644 --- a/src/cutecoin/gui/mainWindow.py +++ b/src/cutecoin/gui/mainWindow.py @@ -23,6 +23,5 @@ class MainWindow(QMainWindow, Ui_MainWindow): def openAddAccountDialog(self): dialog = AddAccountDialog() - print("shoow") - dialog.show() - print("shoow2") \ No newline at end of file + dialog.setData() + dialog.exec_() \ No newline at end of file diff --git a/src/cutecoin/models/account.py b/src/cutecoin/models/account.py index 6d9a4a46a3cd2142d16edbdf76307b32238410e7..f334ea4cffecfbdfdf70ef5c723c61750d305e47 100644 --- a/src/cutecoin/models/account.py +++ b/src/cutecoin/models/account.py @@ -11,13 +11,13 @@ class Account(object): classdocs ''' - def __init__(self, pgpKey, name, communities): + def __init__(self, pgpKey, name, communityManager): ''' Constructor ''' self.pgpKey = pgpKey self.name = name - self.communities = communities + self.communityManager = communityManager self.transactionNodes = [] self.trustableNodes = [] self.wallets = [] diff --git a/src/cutecoin/models/community.py b/src/cutecoin/models/community.py index 1e085d070f82fd47fc2513cd7be512b567b3056e..4ad3bcf1370a711fe915fa7538a2eb53bed0675a 100644 --- a/src/cutecoin/models/community.py +++ b/src/cutecoin/models/community.py @@ -10,14 +10,14 @@ class Community(object): ''' classdocs ''' - - def __init__(self, mainNode, currency): ''' Constructor ''' - self.knowNodes = [] - self.knowNodes.append(mainNode) + self.knownNodes = [] + self.knownNodes.append(mainNode) + + self.currency = currency def members(self): ''' @@ -27,13 +27,15 @@ class Community(object): # TODO : Try connecting with nodes of the list # if the first fails # Maybe create a method - ucoin.settings['server'] = self.knowNodes[0].address + ucoin.settings['server'] = self.knowNodes[0].server ucoin.settings['port'] = self.knowNodes[0].port - ucoin.settings['auth'] = self.knowNodes[0].auth - members = ucoin.hdc.amendments.view.Members( ucoin.hdc.amendments.Current ) + members = ucoin.hdc.amendments.view.Members().get() return members + def nodes(self): + return self.knownNodes + class CommunitiesManager(object): ''' classdocs @@ -49,11 +51,11 @@ class CommunitiesManager(object): if com.currency == currency: return com - def addCommunity(self, node): - ucoin.settings['server'] = node.address - ucoin.settings['port'] = node.port - ucoin.settings['auth'] = node.auth - - currentAmendment = ucoin.hdc.amendments.Current.get(self) + def addCommunity(self, mainNode): + ucoin.settings['server'] = mainNode.server + ucoin.settings['port'] = mainNode.port + mainNode.downstreamPeers() + currentAmendment = ucoin.hdc.amendments.Promoted().get() currency = currentAmendment['currency'] - self.communities.append(Community(node), currency) + if self.getCommunity(currency) == None: + self.communities.append(Community(mainNode, currency)) diff --git a/src/cutecoin/models/node.py b/src/cutecoin/models/node.py index 4199091cf90827c801b8ea45815f22c631277058..69435cb1bfb47a189350f72cc3268da268a4f891 100644 --- a/src/cutecoin/models/node.py +++ b/src/cutecoin/models/node.py @@ -4,16 +4,31 @@ Created on 1 févr. 2014 @author: inso ''' +import ucoinpy as ucoin + class Node(object): ''' classdocs ''' - - - def __init__(self, server, port, auth): + def __init__(self, server, port): ''' Constructor ''' self.server = server self.port = port - self.auth = auth + + + def __eq__(self, other): + return ( self.server == other.server and self.port == other.port ) + +class MainNode(Node): + + def downstreamPeers(self): + ucoin.settings['server'] = self.server + ucoin.settings['port'] = self.port + + peers = [] + for peer in ucoin.ucg.peering.peers.DownStream().get()['peers']: + node = Node(peer['ipv4'], peer['port']) + print(node.server + ":" + node.port) + peers.append(node)