From b988a348908fd008cf3b18f7523fef1cf0a8e72d Mon Sep 17 00:00:00 2001 From: inso <insomniak.fr@gmaiL.com> Date: Tue, 12 Jul 2016 21:17:08 +0200 Subject: [PATCH] Fix issues when sending money with higher base --- res/ui/transfer.ui | 5 +++- src/sakia/gui/process_cfg_account.py | 2 +- src/sakia/gui/transfer.py | 37 ++++++++++++++++++---------- 3 files changed, 29 insertions(+), 15 deletions(-) diff --git a/res/ui/transfer.ui b/res/ui/transfer.ui index 64837315..735c88d6 100644 --- a/res/ui/transfer.ui +++ b/res/ui/transfer.ui @@ -153,7 +153,7 @@ </sizepolicy> </property> <property name="text"> - <string>S&earch user</string> + <string>Search &user</string> </property> </widget> </item> @@ -255,6 +255,9 @@ <property name="maximum"> <double>99999999999999991611392.000000000000000</double> </property> + <property name="singleStep"> + <double>0.100000000000000</double> + </property> </widget> </item> </layout> diff --git a/src/sakia/gui/process_cfg_account.py b/src/sakia/gui/process_cfg_account.py index a26a55e7..57cc4d54 100644 --- a/src/sakia/gui/process_cfg_account.py +++ b/src/sakia/gui/process_cfg_account.py @@ -70,7 +70,7 @@ class StepPageKey(Step): def is_valid(self): if self.config_dialog.app.preferences['expert_mode']: return True - + if len(self.config_dialog.edit_salt.text()) < 6: self.config_dialog.label_info.setText(self.config_dialog.tr("Forbidden : salt is too short")) return False diff --git a/src/sakia/gui/transfer.py b/src/sakia/gui/transfer.py index 67f8fe5c..65e5b14d 100644 --- a/src/sakia/gui/transfer.py +++ b/src/sakia/gui/transfer.py @@ -5,7 +5,7 @@ Created on 2 févr. 2014 """ import asyncio -from PyQt5.QtWidgets import QDialog, QApplication +from PyQt5.QtWidgets import QDialog, QApplication, QDialogButtonBox from PyQt5.QtCore import QRegExp, Qt, QObject from PyQt5.QtGui import QRegExpValidator @@ -168,19 +168,27 @@ class TransferMoneyDialog(QObject): @asyncify async def amount_changed(self, value): - dividend = await self.community.dividend() + ud_block = await self.community.get_ud_block() + dividend = ud_block['dividend'] + base = ud_block['unitbase'] relative = value / dividend self.ui.spinbox_relative.blockSignals(True) self.ui.spinbox_relative.setValue(relative) self.ui.spinbox_relative.blockSignals(False) + correct_amount = int(pow(10, base) * round(float(value) / pow(10, base))) + self.ui.button_box.button(QDialogButtonBox.Ok).setEnabled(correct_amount == value) @asyncify async def relative_amount_changed(self, value): - dividend = await self.community.dividend() + ud_block = await self.community.get_ud_block() + dividend = ud_block['dividend'] + base = ud_block['unitbase'] amount = value * dividend + amount = int(pow(10, base) * round(float(amount) / pow(10, base))) self.ui.spinbox_amount.blockSignals(True) self.ui.spinbox_amount.setValue(amount) self.ui.spinbox_amount.blockSignals(False) + self.ui.button_box.button(QDialogButtonBox.Ok).setEnabled(True) @asyncify async def change_current_community(self, index): @@ -192,11 +200,7 @@ class TransferMoneyDialog(QObject): international_system=self.app.preferences['international_system_of_units']) self.ui.label_total.setText("{0}".format(ref_text)) self.ui.spinbox_amount.setSuffix(" " + self.community.currency) - amount = await self.wallet.value(self.community) - dividend = await self.community.dividend() - relative = amount / dividend - self.ui.spinbox_amount.setMaximum(amount) - self.ui.spinbox_relative.setMaximum(relative) + await self.refresh_spinboxes() @asyncify async def change_displayed_wallet(self, index): @@ -206,11 +210,18 @@ class TransferMoneyDialog(QObject): .diff_localized(units=True, international_system=self.app.preferences['international_system_of_units']) self.ui.label_total.setText("{0}".format(ref_text)) - amount = await self.wallet.value(self.community) - dividend = await self.community.dividend() - relative = amount / dividend - self.ui.spinbox_amount.setMaximum(amount) - self.ui.spinbox_relative.setMaximum(relative) + await self.refresh_spinboxes() + + async def refresh_spinboxes(self): + max_amount = await self.wallet.value(self.community) + ud_block = await self.community.get_ud_block() + dividend = ud_block['dividend'] + base = ud_block['unitbase'] + max_amount = int(pow(10, base) * round(float(max_amount) / pow(10, base))) + max_relative = max_amount / dividend + self.ui.spinbox_amount.setMaximum(max_amount) + self.ui.spinbox_relative.setMaximum(max_relative) + self.ui.spinbox_amount.setSingleStep(pow(10, base)) def recipient_mode_changed(self, radio): self.ui.edit_pubkey.setEnabled(radio == "pubkey") -- GitLab