diff --git a/src/cutecoin/gui/informations_tab.py b/src/cutecoin/gui/informations_tab.py index 71bf6f86fcf7a504636f0edbd9102b703e3e98f6..e201623e4d4ce77e8581c332367e4547f071e310 100644 --- a/src/cutecoin/gui/informations_tab.py +++ b/src/cutecoin/gui/informations_tab.py @@ -7,6 +7,7 @@ Created on 31 janv. 2015 import logging import datetime import math +from PyQt5.QtCore import QLocale from PyQt5.QtWidgets import QWidget from ..gen_resources.informations_tab_uic import Ui_InformationsTabWidget @@ -48,6 +49,20 @@ class InformationsTabWidget(QWidget, Ui_InformationsTabWidget): return False if block: + ud = round(self.get_referential_diff_value(block['dividend'])) + if isinstance(ud, int): + localized_ud = QLocale().toString(ud) + localized_monetary_mass = QLocale().toString(round(self.get_referential_value(block['monetaryMass']))) + localized_mass_per_member = QLocale().toString(round(self.get_referential_value(block['monetaryMass'] / block['membersCount']))) + else: + localized_ud = QLocale().toString(ud, 'f', 2) + localized_monetary_mass = QLocale().toString( + round(self.get_referential_value(block['monetaryMass'])), 'f', 2 + ) + localized_mass_per_member = QLocale().toString( + round(self.get_referential_value(block['monetaryMass'] / block['membersCount']), 'f', 2) + ) + # set infos in label self.label_general.setText( """ @@ -60,15 +75,15 @@ class InformationsTabWidget(QWidget, Ui_InformationsTabWidget): <tr><td align="right"><b>{:}</b></td><td>{:}</td></tr> </table> """.format( - round(self.get_referential_diff_value(block['dividend'])), + localized_ud, 'Universal Dividend UD(t) in', self.get_referential_name(), - round(self.get_referential_value(block['monetaryMass'])), + localized_monetary_mass, 'Monetary Mass M(t) in', self.get_referential_name(), block['membersCount'], 'Members N(t)', - round(self.get_referential_value(block['monetaryMass'] / block['membersCount'])), + localized_mass_per_member, 'Monetary Mass per member M(t)/N(t) in', self.get_referential_name(), block['dividend'] / (block_t_minus_1['monetaryMass'] / block['membersCount']), @@ -82,6 +97,21 @@ class InformationsTabWidget(QWidget, Ui_InformationsTabWidget): self.label_general.setText('No Universal Dividend created yet.') if block: + if isinstance(ud, int): + localized_ud_t1 = QLocale().toString( + self.get_referential_diff_value( + math.ceil(max(block['dividend'], params['c'] * block['monetaryMass'] / block['membersCount'])) + ) + ) + else: + localized_ud_t1 = QLocale().toString( + self.get_referential_diff_value( + math.ceil(max(block['dividend'], params['c'] * block['monetaryMass'] / block['membersCount'])) + ), + 'f', + 2 + ) + # set infos in label self.label_rules.setText( """ @@ -96,11 +126,11 @@ class InformationsTabWidget(QWidget, Ui_InformationsTabWidget): 'UD(t+1) = MAX { UD(t) ; c * M(t) / N(t) }', 'Universal Dividend (formula)', '{:} = MAX {{ {:} {:} ; {:2.0%} * {:} {:} / {:} }}'.format( - math.ceil(max(block['dividend'], params['c'] * block['monetaryMass'] / block['membersCount'])), - round(self.get_referential_diff_value(block['dividend'])), + localized_ud_t1, + localized_ud, self.get_referential_name(), params['c'], - round(self.get_referential_value(block['monetaryMass'])), + localized_monetary_mass, self.get_referential_name(), block['membersCount'] ), diff --git a/src/cutecoin/gui/wallets_tab.py b/src/cutecoin/gui/wallets_tab.py index 7702046ed9abf568585936197057b0ce250b4b33..d32f3ea4b3e3644e6a36e5acd5d64bfc2b694a66 100644 --- a/src/cutecoin/gui/wallets_tab.py +++ b/src/cutecoin/gui/wallets_tab.py @@ -6,7 +6,7 @@ Created on 15 févr. 2015 import logging from PyQt5.QtWidgets import QWidget, QMenu, QAction, QApplication, QDialog -from PyQt5.QtCore import QDateTime, QModelIndex, Qt +from PyQt5.QtCore import QDateTime, QModelIndex, Qt, QLocale from PyQt5.QtGui import QCursor from ..core.person import Person from ..core.wallet import Wallet @@ -62,12 +62,12 @@ class WalletsTabWidget(QWidget, Ui_WalletsTab): <tr><td align="right"><b>{:}</b></td><td>{:}</td></tr> </table> """.format( - self.account.name, self.account.pubkey, - "Membership", - "Last renewal on {:}, expiration on {:}".format(date_renewal, date_expiration), - "Your web of trust :", - "Certified by : {:} members; Certifier of : {:} members".format(len(certifiers), - len(certified)) + self.account.name, self.account.pubkey, + "Membership", + "Last renewal on {:}, expiration on {:}".format(date_renewal, date_expiration), + "Your web of trust :", + "Certified by : {:} members; Certifier of : {:} members".format(len(certifiers), + len(certified)) ) ) else: @@ -80,17 +80,27 @@ class WalletsTabWidget(QWidget, Ui_WalletsTab): <tr><td align="right"><b>{:}</b></td><td>{:}</td></tr> </table> """.format( - self.account.name, self.account.pubkey, - "Not a member", - "Your web of trust :", - "Certified by : {:} members; Certifier of : {:} members".format(len(certifiers), - len(certified)) + self.account.name, self.account.pubkey, + "Not a member", + "Your web of trust :", + "Certified by : {:} members; Certifier of : {:} members".format(len(certifiers), + len(certified)) ) ) amount = self.account.amount(self.community) maximum = self.community.monetary_mass + if isinstance(amount, int): + localized_amount = QLocale().toString(self.get_referential_value(amount)) + else: + localized_amount = QLocale().toString(self.get_referential_value(amount), 'f', 2) + + if isinstance(maximum, int): + localized_maximum = QLocale().toString(self.get_referential_value(maximum)) + else: + localized_maximum = QLocale().toString(self.get_referential_value(maximum), 'f', 2) + # set infos in label self.label_balance.setText( """ @@ -98,13 +108,14 @@ class WalletsTabWidget(QWidget, Ui_WalletsTab): <tr><td align="right"><b>{:}</b></td><td>{:}</td></tr> <tr><td align="right"><b>{:}</b></td><td>{:}</td></tr> </table> - """.format("Your money share : ", "{:.2f}%".format(amount/maximum*100), - "Your part : ", "{:.2f} {:} in [{:.2f} - {:.2f}] {:}" - .format(self.get_referential_value(amount), - self.get_referential_name(), - self.get_referential_value(0), - self.get_referential_value(maximum), - self.get_referential_name()) + """.format("Your money share : ", "{:.2f}%".format(amount / maximum * 100), + "Your part : ", "{:} {:} in [{:.2f} - {:}] {:}" + .format( + localized_amount, + self.get_referential_name(), + self.get_referential_value(0), + localized_maximum, + self.get_referential_name()) ) ) @@ -131,11 +142,11 @@ class WalletsTabWidget(QWidget, Ui_WalletsTab): name_col = model.sourceModel().columns_types.index('name') name_index = model.index(index.row(), - name_col) + name_col) pubkey_col = model.sourceModel().columns_types.index('pubkey') pubkey_index = model.sourceModel().index(source_index.row(), - pubkey_col) + pubkey_col) pubkey = model.sourceModel().data(pubkey_index, Qt.DisplayRole) menu = QMenu(model.data(index, Qt.DisplayRole), self) diff --git a/src/cutecoin/models/txhistory.py b/src/cutecoin/models/txhistory.py index 03ec8772c4e613d2250356530cc26d77a9bc3384..97dc590eb1b5c740ea52431652a6c0c1b92debc1 100644 --- a/src/cutecoin/models/txhistory.py +++ b/src/cutecoin/models/txhistory.py @@ -9,7 +9,7 @@ from ..core.transfer import Transfer, Received from ..core.person import Person from ..tools.exceptions import PersonNotFoundError from PyQt5.QtCore import QAbstractTableModel, Qt, QVariant, QSortFilterProxyModel, \ - QDateTime + QDateTime, QLocale from PyQt5.QtGui import QFont, QColor @@ -32,6 +32,7 @@ class TxFilterProxyModel(QSortFilterProxyModel): def filterAcceptsRow(self, sourceRow, sourceParent): def in_period(date_ts): return (date_ts in range(self.ts_from, self.ts_to)) + date_col = self.sourceModel().column_types.index('date') source_index = self.sourceModel().index(sourceRow, date_col) date = self.sourceModel().data(source_index, Qt.DisplayRole) @@ -79,18 +80,15 @@ class TxFilterProxyModel(QSortFilterProxyModel): if source_index.column() == self.sourceModel().column_types.index('date'): date = QDateTime.fromTime_t(source_data) return date.date() - if source_index.column() == self.sourceModel().column_types.index('payment') or \ - source_index.column() == self.sourceModel().column_types.index('deposit'): + if source_index.column() == self.sourceModel().column_types.index('payment') or \ + source_index.column() == self.sourceModel().column_types.index('deposit'): if source_data is not "": amount_ref = self.account.units_to_diff_ref(source_data, self.community) - - if type(amount_ref) is int: - formatter = "{0}" + if isinstance(amount_ref, int): + return QLocale().toString(amount_ref) else: - formatter = "{0:.2f}" - - return formatter.format(amount_ref) + return QLocale().toString(amount_ref, 'f', 2) if role == Qt.FontRole: font = QFont() @@ -111,7 +109,8 @@ class TxFilterProxyModel(QSortFilterProxyModel): return QColor(Qt.blue) if role == Qt.TextAlignmentRole: - if source_index.column() == self.sourceModel().column_types.index('deposit') or source_index.column() == self.sourceModel().column_types.index('payment'): + if source_index.column() == self.sourceModel().column_types.index( + 'deposit') or source_index.column() == self.sourceModel().column_types.index('payment'): return Qt.AlignRight | Qt.AlignVCenter if source_index.column() == self.sourceModel().column_types.index('date'): return Qt.AlignCenter @@ -124,7 +123,6 @@ class TxFilterProxyModel(QSortFilterProxyModel): class HistoryTableModel(QAbstractTableModel): - ''' A Qt abstract item model to display communities in a tree ''' @@ -201,7 +199,7 @@ class HistoryTableModel(QAbstractTableModel): try: receiver = Person.lookup(pubkey, self.community) except PersonNotFoundError: - #receiver = "pub:{0}".format(pubkey[:5]) + # receiver = "pub:{0}".format(pubkey[:5]) receiver = pubkey date_ts = transfer.metadata['time'] diff --git a/src/cutecoin/models/wallets.py b/src/cutecoin/models/wallets.py index 460a0cc71e10603ed91a8386eb6ab0d06d6f5f97..a25d871153c998dbfd344e56c2aaefde98d58019 100644 --- a/src/cutecoin/models/wallets.py +++ b/src/cutecoin/models/wallets.py @@ -4,8 +4,7 @@ Created on 8 févr. 2014 @author: inso ''' -from PyQt5.QtCore import QAbstractTableModel, QSortFilterProxyModel, Qt -import logging +from PyQt5.QtCore import QAbstractTableModel, QSortFilterProxyModel, Qt, QLocale class WalletsFilterProxyModel(QSortFilterProxyModel): @@ -40,10 +39,10 @@ class WalletsFilterProxyModel(QSortFilterProxyModel): return source_data if source_index.column() == self.sourceModel().columns_types.index('amount'): amount_ref = self.account.units_to_ref(source_data, self.community) - if type(amount_ref) is int: - return "{0}".format(amount_ref) + if isinstance(amount_ref, int): + return QLocale().toString(amount_ref) else: - return "{0:.2f}".format(amount_ref) + return QLocale().toString(amount_ref, 'f', 2) if role == Qt.TextAlignmentRole: if source_index.column() == self.sourceModel().columns_types.index('amount'):