diff --git a/src/cutecoin/core/account.py b/src/cutecoin/core/account.py index a85a4c3c9e48486aebb56b35b3b32f1f2b4fe65b..5d27613c8be69637c1bce4ccc6bfcf55ef7d22fb 100644 --- a/src/cutecoin/core/account.py +++ b/src/cutecoin/core/account.py @@ -41,6 +41,7 @@ class Account(object): self.dead_communities = dead_communities self.wallets = wallets self.contacts = contacts + self.referential = 0 @classmethod def create(cls, name, communities, wallets, confpath): @@ -103,8 +104,32 @@ class Account(object): return community def set_display_referential(self, index): - for w in self.wallets: - w.set_display_referential(index) + self.referential = index + + def units_to_ref(self): + def units(units, community): + return units + + def relative(units, community): + ud = community.dividend() + relative_value = units / float(ud) + return relative_value + + def units_to_zero(units, community): + monetary_mass = community.monetary_mass() + to_zero_value = units - (monetary_mass / 2) + return to_zero_value + + def relative_to_zero(units, community): + monetary_mass = community.monetary_mass() + ud = community.dividend() + relative_mass = monetary_mass / float(ud) + relative_value = units / float(ud) + to_zero_value = relative_value - (relative_mass / 2) + return to_zero_value + + referentials = [units, relative, units_to_zero, relative_to_zero] + return referentials[self.referential] def set_walletpool_size(self, size, password): logging.debug("Defining wallet pool size") diff --git a/src/cutecoin/core/community.py b/src/cutecoin/core/community.py index a28ef1d6c3d5e2b2c818d018d3289e6f3c65cf73..d63eef724528945f2089314d1fd451201704b9af 100644 --- a/src/cutecoin/core/community.py +++ b/src/cutecoin/core/community.py @@ -131,6 +131,14 @@ class Community(object): else: return 1 + def monetary_mass(self): + try: + block = self.request(bma.blockchain.Current) + return block['monetaryMass'] + except ValueError as e: + if '404' in e: + return 0 + def _peering_traversal(self, peer, found_peers, traversed_pubkeys): logging.debug("Read {0} peering".format(peer.pubkey)) traversed_pubkeys.append(peer.pubkey) diff --git a/src/cutecoin/core/wallet.py b/src/cutecoin/core/wallet.py index 74429851ffb98b6e389dc5bdbc28eed5ad4d1bfd..d69a379c9b422e57533723566c0c0ae2115f00e0 100644 --- a/src/cutecoin/core/wallet.py +++ b/src/cutecoin/core/wallet.py @@ -146,12 +146,6 @@ class Wallet(object): self.pubkey = pubkey self.name = name self.caches = {} - self.referentials = [self.value, - self.relative_value, - self.value_from_zero, - self.relative_from_zero - ] - self.referential = self.referentials[0] @classmethod def create(cls, walletid, salt, password, name): @@ -210,21 +204,6 @@ class Wallet(object): value += s.amount return value - def relative_from_zero(self, community): - value = self.value(community) - ud = community.dividend() - relative_value = value / float(ud) - return relative_value - - def value_from_zero(self, community): - value = 0 - for s in self.sources(community): - value += s.amount - return value - - def set_display_referential(self, index): - self.referential = self.referentials[index] - def tx_inputs(self, amount, community): value = 0 inputs = [] diff --git a/src/cutecoin/gui/currency_tab.py b/src/cutecoin/gui/currency_tab.py index e7747e512c35e0113ce79b3ba536f9a025981130..0a1e15165878f12c61b305e9719c4fa642f121e4 100644 --- a/src/cutecoin/gui/currency_tab.py +++ b/src/cutecoin/gui/currency_tab.py @@ -221,3 +221,10 @@ class CurrencyTabWidget(QWidget, Ui_CurrencyTabWidget): if self.table_history.model(): self.table_history.model().set_period(ts_from, ts_to) self.table_history.model().invalidate() + + def referential_changed(self): + if self.table_history.model(): + self.table_history.model().dataChanged.emit( + QModelIndex(), + QModelIndex(), + []) diff --git a/src/cutecoin/gui/mainwindow.py b/src/cutecoin/gui/mainwindow.py index 260771bba0ea19747d46514a03acf372ebdd34bd..c667e433f4d55ea80647f58e930b10890e18bdc7 100644 --- a/src/cutecoin/gui/mainwindow.py +++ b/src/cutecoin/gui/mainwindow.py @@ -109,6 +109,7 @@ class MainWindow(QMainWindow, Ui_MainWindow): def referential_changed(self, index): if self.app.current_account: self.app.current_account.set_display_referential(index) + self.currencies_tabwidget.currentWidget().referential_changed() def action_change_account(self, account_name): self.busybar.show() diff --git a/src/cutecoin/models/txhistory.py b/src/cutecoin/models/txhistory.py index 5374ee0a99cba51ed977cb69cc9472c75b69816b..e040966f58a0e4a182310944717430d4f2047aa9 100644 --- a/src/cutecoin/models/txhistory.py +++ b/src/cutecoin/models/txhistory.py @@ -89,7 +89,9 @@ class HistoryTableModel(QAbstractTableModel): date_ts = self.community.get_block(tx[0]).mediantime date = QDateTime.fromTime_t(date_ts) - return (date.date(), sender, "", "{0}".format(amount), comment) + amount_ref = self.account.units_to_ref()(amount, self.community) + + return (date.date(), sender, "", "{0}".format(amount_ref), comment) def data_sent(self, tx): amount = 0 @@ -109,7 +111,9 @@ class HistoryTableModel(QAbstractTableModel): date_ts = self.community.get_block(tx[0]).mediantime date = QDateTime.fromTime_t(date_ts) - return (date.date(), receiver, "-{0}".format(amount), "", comment) + amount_ref = self.account.units_to_ref()(-amount, self.community) + + return (date.date(), receiver, "{0}".format(amount_ref), "", comment) def data(self, index, role): row = index.row()