From d364502281843cbc512d9054ec493b17223ac1e8 Mon Sep 17 00:00:00 2001 From: Inso <insomniak.fr@gmail.com> Date: Thu, 27 Feb 2014 19:27:03 +0100 Subject: [PATCH] Transfer is now available through cutecoin --- res/ui/transferDialog.ui | 4 +- src/cutecoin/gui/transferMoneyDialog.py | 31 +++++++++++----- src/cutecoin/models/account/__init__.py | 4 ++ src/cutecoin/models/coin/listModel.py | 37 +++++++++++++++++++ .../models/community/membersListModel.py | 2 +- src/cutecoin/models/transaction/__init__.py | 4 +- src/cutecoin/models/transaction/factory.py | 4 +- .../models/transaction/receivedListModel.py | 2 +- .../models/transaction/sentListModel.py | 2 +- 9 files changed, 70 insertions(+), 20 deletions(-) create mode 100644 src/cutecoin/models/coin/listModel.py diff --git a/res/ui/transferDialog.ui b/res/ui/transferDialog.ui index 76f411f5..480d297f 100644 --- a/res/ui/transferDialog.ui +++ b/res/ui/transferDialog.ui @@ -32,7 +32,7 @@ <item> <widget class="QLineEdit" name="edit_keyFingerprint"> <property name="inputMask"> - <string>>NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN</string> + <string/> </property> <property name="text"> <string/> @@ -186,7 +186,7 @@ <number>0</number> </property> <item> - <widget class="QLineEdit" name="lineEdit"> + <widget class="QLineEdit" name="edit_message"> <property name="placeholderText"> <string>A message</string> </property> diff --git a/src/cutecoin/gui/transferMoneyDialog.py b/src/cutecoin/gui/transferMoneyDialog.py index 7af976b2..442941e1 100644 --- a/src/cutecoin/gui/transferMoneyDialog.py +++ b/src/cutecoin/gui/transferMoneyDialog.py @@ -62,24 +62,24 @@ class TransferMoneyDialog(QDialog, Ui_TransferMoneyDialog): pass def accept(self): - sentCoins = self.listView_coinsSent.model().coins - receiver = None + sentCoins = self.listView_coinsSent.model().toString() + recipient = None - if self.radio_keyFingerprint.toggled(): - receiver = Person(self.edit_keyFingerprint.text(), "", "") + if self.radio_keyFingerprint.isChecked(): + recipient = Person("", self.edit_keyFingerprint.text(), "") else: #TODO: Manage contacts - receiver = Person(self.edit_keyFingerprint.text(), "", "") + recipient = Person("", self.edit_keyFingerprint.text(), "") - if self.radio_nodeAddress.toggled(): - node = Node(self.edit_nodeAddress, self.edit_port) + if self.radio_nodeAddress.isChecked(): + node = Node(self.edit_nodeAddress.text(), int(self.edit_port.text())) else: #TODO: Manage trusted nodes - node = Node(self.edit_nodeAddress, self.edit_port) + node = Node(self.edit_nodeAddress.text(), int(self.edit_port.text())) + message = self.edit_message.text() #TODO: Transfer money, and validate the window if no error happened - - self.sender.transferCoins(sentCoins) + print(self.sender.transferCoins(node, recipient, sentCoins, message)) def changeDisplayedWallet(self, index): wallet = self.sender.wallets.walletsList[index] @@ -91,5 +91,16 @@ class TransferMoneyDialog(QDialog, Ui_TransferMoneyDialog): walletCoinsModel = CoinsListModel(list(wallet.coins)) self.listView_wallet.setModel(walletCoinsModel) + def recipientModeChanged(self, fingerprintToggled): + self.edit_keyFingerprint.setEnabled(fingerprintToggled) + self.comboBox_contact.setEnabled(not fingerprintToggled) + + def transferModeChanged(self, nodeAddressToggled): + self.edit_nodeAddress.setEnabled(nodeAddressToggled) + self.comboBox_trustedNode.setEnabled(not nodeAddressToggled) + + + + diff --git a/src/cutecoin/models/account/__init__.py b/src/cutecoin/models/account/__init__.py index 0141967e..e01f9bb8 100644 --- a/src/cutecoin/models/account/__init__.py +++ b/src/cutecoin/models/account/__init__.py @@ -111,6 +111,10 @@ class Account(object): issuance = ucoin.wrappers.transactions.Issue(self.keyFingerprint(), community.amendmentNumber(), coins, keyId=self.pgpKeyId) return issuance() + def transferCoins(self, node, recipient, coins, message): + transfer = ucoin.wrappers.transactions.Transfer(self.keyFingerprint(), recipient.fingerprint, coins, message, keyid=self.pgpKeyId, server=node.server, port=node.port) + return transfer() + def jsonify(self): data = {'name' : self.name, 'pgpKeyId' : self.pgpKeyId, diff --git a/src/cutecoin/models/coin/listModel.py b/src/cutecoin/models/coin/listModel.py new file mode 100644 index 00000000..3b7d9735 --- /dev/null +++ b/src/cutecoin/models/coin/listModel.py @@ -0,0 +1,37 @@ +''' +Created on 8 févr. 2014 + +@author: inso +''' + +from PyQt5.QtCore import QAbstractListModel, Qt + +class CoinsListModel(QAbstractListModel): + ''' + A Qt abstract item model to display communities in a tree + ''' + def __init__(self, coins, parent=None): + ''' + Constructor + ''' + super(CoinsListModel, self).__init__(parent) + self.coins = coins + + def rowCount(self ,parent): + return len(self.coins) + + def data(self,index,role): + if role == Qt.DisplayRole: + row=index.row() + value = str(self.coins[row].value()) + return value + + def flags(self,index): + return Qt.ItemIsSelectable | Qt.ItemIsEnabled + + def toString(self): + coinsList = [] + for c in self.coins: + coinsList.append(c.getId()) + coinsStr = ",".join(coinsList) + return coinsStr \ No newline at end of file diff --git a/src/cutecoin/models/community/membersListModel.py b/src/cutecoin/models/community/membersListModel.py index 70fdc0f4..b017ba32 100644 --- a/src/cutecoin/models/community/membersListModel.py +++ b/src/cutecoin/models/community/membersListModel.py @@ -19,7 +19,7 @@ class MembersListModel(QAbstractListModel): fingerprints = community.membersFingerprints() self.members = [] for f in fingerprints: - self.members.append(Person.create(f, community)) + self.members.append(Person.lookup(f, community)) def rowCount(self ,parent): return len(self.members) diff --git a/src/cutecoin/models/transaction/__init__.py b/src/cutecoin/models/transaction/__init__.py index 6f5908b9..9f773c9a 100644 --- a/src/cutecoin/models/transaction/__init__.py +++ b/src/cutecoin/models/transaction/__init__.py @@ -42,11 +42,9 @@ class Transfer(Transaction): def __init__(self): super(Transfer).__init__() - def getReceivedText(self): + def getText(self): return str(self.value()) + " " + self.currency() + " from " + self.sender.name - def getSentText(self): - return str(self.value()) + " " + self.currency() + " from " + self.recipient.name class Issuance(Transaction): diff --git a/src/cutecoin/models/transaction/factory.py b/src/cutecoin/models/transaction/factory.py index e0f335fe..dbf6c527 100644 --- a/src/cutecoin/models/transaction/factory.py +++ b/src/cutecoin/models/transaction/factory.py @@ -22,7 +22,7 @@ def createTransaction(senderFingerprint, increment, community): if transaction != None: transaction.increment = increment transaction.community = community - transaction.sender = Person.create(senderFingerprint, community) - transaction.recipient = Person.create(ucoinTransaction['recipient'], community) + transaction.sender = Person.lookup(senderFingerprint, community) + transaction.recipient = Person.lookup(ucoinTransaction['recipient'], community) return transaction diff --git a/src/cutecoin/models/transaction/receivedListModel.py b/src/cutecoin/models/transaction/receivedListModel.py index dcfd8fcb..96628d00 100644 --- a/src/cutecoin/models/transaction/receivedListModel.py +++ b/src/cutecoin/models/transaction/receivedListModel.py @@ -26,7 +26,7 @@ class ReceivedListModel(QAbstractListModel): if role == Qt.DisplayRole: row=index.row() - value = self.transactions[row].getReceivedText() + value = self.transactions[row].getText() return value def flags(self,index): diff --git a/src/cutecoin/models/transaction/sentListModel.py b/src/cutecoin/models/transaction/sentListModel.py index 10cedd1e..52218ee1 100644 --- a/src/cutecoin/models/transaction/sentListModel.py +++ b/src/cutecoin/models/transaction/sentListModel.py @@ -26,7 +26,7 @@ class SentListModel(QAbstractListModel): if role == Qt.DisplayRole: row=index.row() - value = self.transactions[row].getSendText() + value = self.transactions[row].getText() return value def flags(self,index): -- GitLab