diff --git a/app/settings.py b/app/settings.py new file mode 100644 index 0000000..97645f1 --- /dev/null +++ b/app/settings.py @@ -0,0 +1,8 @@ +from PyQt5.QtCore import QSettings + +import app + + +class Settings(QSettings): + def __init__(self): + super().__init__(app.ORG_NAME, app.APP_NAME) diff --git a/app/ui/proto.ui b/app/ui/proto.ui index ef62073..6eb2825 100644 --- a/app/ui/proto.ui +++ b/app/ui/proto.ui @@ -1044,6 +1044,24 @@ QLabel[enabled="true"] { + + + + + 0 + 0 + + + + + Roboto Light + + + + Re-enable all suppressed warnings + + + diff --git a/app/ui/transaction_confirmation_dialog.ui b/app/ui/transaction_confirmation_dialog.ui new file mode 100644 index 0000000..51f38b8 --- /dev/null +++ b/app/ui/transaction_confirmation_dialog.ui @@ -0,0 +1,127 @@ + + + transaction_confirmation_dialog + + + + 0 + 0 + 462 + 119 + + + + + 0 + 0 + + + + Dialog + + + false + + + true + + + + + 290 + 80 + 161 + 32 + + + + + Roboto Light + 12 + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + 10 + 10 + 441 + 51 + + + + + Roboto Light + 12 + + + + You are about to send a transaction to the network. For this a transaction fee of {fee} CHM will be deducted from your balance. + + + true + + + + + + 10 + 80 + 181 + 31 + + + + + Roboto Light + 12 + + + + Don't show again + + + + + + + buttonBox + accepted() + transaction_confirmation_dialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + transaction_confirmation_dialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/app/widgets/change_alias.py b/app/widgets/change_alias.py index 21eaf5c..f3a8af3 100644 --- a/app/widgets/change_alias.py +++ b/app/widgets/change_alias.py @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- import logging -from PyQt5.QtWidgets import QDialog from PyQt5.QtCore import pyqtSlot +from PyQt5.QtWidgets import QDialog from PyQt5.QtWidgets import QDialogButtonBox from PyQt5.QtWidgets import QMessageBox from PyQt5.QtWidgets import QWidget @@ -10,10 +10,11 @@ from app.backend.rpc import get_active_rpc_client from app.models import Address -from app.ui.dialog_change_alias import Ui_dialog_change_alias from app.models import Profile from app.signals import signals from app.tools.validators import username_regex +from app.ui.dialog_change_alias import Ui_dialog_change_alias +from app.widgets.transaction_confirmation_dialog import TransactionConfirmationDialog log = logging.getLogger(__name__) @@ -54,7 +55,14 @@ def on_alias_changed(self, text): is_valid = True self.buttonBox.button(QDialogButtonBox.Save).setDisabled(not is_valid) + def save(self): + confirmation_dialog = TransactionConfirmationDialog(self) + confirmation_dialog.fee = "approximately 0.00074" + confirmation_dialog.callback = self.do_save + confirmation_dialog.exec() + + def do_save(self): client = get_active_rpc_client() try: response = client.publish( diff --git a/app/widgets/proto.py b/app/widgets/proto.py index e08adde..146c249 100644 --- a/app/widgets/proto.py +++ b/app/widgets/proto.py @@ -8,6 +8,7 @@ from app import models from app.models import Profile, Permission, CurrentVote from app.responses import Getblockchaininfo +from app.settings import Settings from app.signals import signals from app.ui.proto import Ui_MainWindow from app.widgets.apply import ApplyDialog @@ -92,6 +93,7 @@ def __init__(self, **kwargs): self.check_manage_node.setChecked(self.profile.manage_node) self.check_manage_node.stateChanged['int'].connect(self.setting_changed_manage_node) self.btn_alias_change.clicked.connect(self.on_change_alias) + self.reset_suppressed_warnings.clicked.connect(self.on_reset_suppressed_warnings_click) # Connections signals.getblockchaininfo.connect(self.getblockchaininfo) @@ -151,6 +153,10 @@ def setting_changed_manage_node(self, state): if self.profile.manage_node: self.node.start() + def on_reset_suppressed_warnings_click(self): + settings = Settings() + settings.setValue('suppress_transaction_fee_warning', False) + def node_started(self): self.updater.start() diff --git a/app/widgets/transaction_confirmation_dialog.py b/app/widgets/transaction_confirmation_dialog.py new file mode 100644 index 0000000..1f7eee7 --- /dev/null +++ b/app/widgets/transaction_confirmation_dialog.py @@ -0,0 +1,33 @@ +from PyQt5.QtWidgets import QDialog, QDialogButtonBox + +from app.models import Profile +from app.settings import Settings +from app.ui.transaction_confirmation_dialog import Ui_transaction_confirmation_dialog +from typing import Callable + + +class TransactionConfirmationDialog(QDialog, Ui_transaction_confirmation_dialog): + + fee = "YOU SHOULD NEVER SEE THIS" + callback = None + __settings = Settings() + + def __init__(self, parent=None): + super().__init__(parent) + + self.setupUi(self) + self.setFixedSize(self.size()) + + def exec(self): + if self.__settings.value('suppress_transaction_fee_warning', type=bool): + self.callback() + else: + self.label.setText(self.label.text().replace("{fee}", self.fee)) + self.buttonBox.button(QDialogButtonBox.Ok).clicked.connect(self.__on_ok_click) + super().exec() + + def __on_ok_click(self): + + if not self.__settings.value('suppress_transaction_fee_warning', type=bool) and self.checkBox.isChecked(): + self.__settings.setValue('suppress_transaction_fee_warning', True) + self.callback()