diff --git a/electrum/gui/kivy/main_window.py b/electrum/gui/kivy/main_window.py index ba8e7da26..7e9cdaf64 100644 --- a/electrum/gui/kivy/main_window.py +++ b/electrum/gui/kivy/main_window.py @@ -887,8 +887,11 @@ class ElectrumWindow(App): self.wallet.invoices.save() self.update_tab('invoices') else: - msg = msg[:500] if msg else _('There was an error broadcasting the transaction.') - self.show_error(msg) + display_msg = _('The server returned an error when broadcasting the transaction.') + if msg: + display_msg += '\n' + msg + display_msg = display_msg[:500] + self.show_error(display_msg) if self.network and self.network.is_connected(): self.show_info(_('Sending')) diff --git a/electrum/gui/qt/main_window.py b/electrum/gui/qt/main_window.py index 756676034..5d6dfd83a 100644 --- a/electrum/gui/qt/main_window.py +++ b/electrum/gui/qt/main_window.py @@ -579,7 +579,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError): _("Before reporting a bug, upgrade to the most recent version of Electrum (latest release or git HEAD), and include the version number in your report."), _("Try to explain not only what the bug is, but how it occurs.") ]) - self.show_message(msg, title="Electrum - " + _("Reporting Bugs")) + self.show_message(msg, title="Electrum - " + _("Reporting Bugs"), rich_text=True) def notify_transactions(self): if not self.network or not self.network.is_connected(): @@ -1636,7 +1636,10 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError): self.invoice_list.update() self.do_clear() else: - parent.show_error(msg) + display_msg = _('The server returned an error when broadcasting the transaction.') + if msg: + display_msg += '\n' + msg + parent.show_error(display_msg) WaitingDialog(self, _('Broadcasting transaction...'), broadcast_thread, broadcast_done, self.on_error) diff --git a/electrum/gui/qt/util.py b/electrum/gui/qt/util.py index 50ed0a5c3..bb2e82422 100644 --- a/electrum/gui/qt/util.py +++ b/electrum/gui/qt/util.py @@ -200,24 +200,24 @@ class MessageBoxMixin(object): parent, title or '', msg, buttons=Yes|No, defaultButton=No) == Yes - def show_warning(self, msg, parent=None, title=None): + def show_warning(self, msg, parent=None, title=None, **kwargs): return self.msg_box(QMessageBox.Warning, parent, - title or _('Warning'), msg) + title or _('Warning'), msg, **kwargs) - def show_error(self, msg, parent=None): + def show_error(self, msg, parent=None, **kwargs): return self.msg_box(QMessageBox.Warning, parent, - _('Error'), msg) + _('Error'), msg, **kwargs) - def show_critical(self, msg, parent=None, title=None): + def show_critical(self, msg, parent=None, title=None, **kwargs): return self.msg_box(QMessageBox.Critical, parent, - title or _('Critical Error'), msg) + title or _('Critical Error'), msg, **kwargs) - def show_message(self, msg, parent=None, title=None): + def show_message(self, msg, parent=None, title=None, **kwargs): return self.msg_box(QMessageBox.Information, parent, - title or _('Information'), msg) + title or _('Information'), msg, **kwargs) def msg_box(self, icon, parent, title, text, buttons=QMessageBox.Ok, - defaultButton=QMessageBox.NoButton): + defaultButton=QMessageBox.NoButton, rich_text=False): parent = parent or self.top_level_window() if type(icon) is QPixmap: d = QMessageBox(QMessageBox.Information, title, str(text), buttons, parent) @@ -226,7 +226,12 @@ class MessageBoxMixin(object): d = QMessageBox(icon, title, str(text), buttons, parent) d.setWindowModality(Qt.WindowModal) d.setDefaultButton(defaultButton) - d.setTextInteractionFlags(Qt.TextSelectableByMouse) + if rich_text: + d.setTextInteractionFlags(Qt.TextSelectableByMouse| Qt.LinksAccessibleByMouse) + d.setTextFormat(Qt.RichText) + else: + d.setTextInteractionFlags(Qt.TextSelectableByMouse) + d.setTextFormat(Qt.PlainText) return d.exec_() class WindowModalDialog(QDialog, MessageBoxMixin): diff --git a/electrum/gui/stdio.py b/electrum/gui/stdio.py index d155efb08..4ecd5f353 100644 --- a/electrum/gui/stdio.py +++ b/electrum/gui/stdio.py @@ -207,7 +207,9 @@ class ElectrumGui: #self.do_clear() #self.update_contacts_tab() else: - print(_('Error')) + display_msg = _('The server returned an error when broadcasting the transaction.') + display_msg += '\n' + repr(e) + print(display_msg) def network_dialog(self): print("use 'electrum setconfig server/proxy' to change your network settings") diff --git a/electrum/gui/text.py b/electrum/gui/text.py index 61e3ac1db..5e69fe336 100644 --- a/electrum/gui/text.py +++ b/electrum/gui/text.py @@ -358,8 +358,9 @@ class ElectrumGui: self.do_clear() #self.update_contacts_tab() else: - self.show_message(_('Error')) - + display_msg = _('The server returned an error when broadcasting the transaction.') + display_msg += '\n' + repr(e) + self.show_message(display_msg) def show_message(self, message, getchar = True): w = self.w diff --git a/electrum/plugins/revealer/qt.py b/electrum/plugins/revealer/qt.py index d64dc585e..7f7f3dcc3 100644 --- a/electrum/plugins/revealer/qt.py +++ b/electrum/plugins/revealer/qt.py @@ -158,7 +158,7 @@ class Plugin(BasePlugin): else: if (len(txt)>0 and txt[0]=='0'): - self.d.show_message(''.join(["",_("Warning: "), "", _("Revealers starting with 0 had a vulnerability and are not supported.")])) + self.d.show_message(''.join(["",_("Warning: "), "", _("Revealers starting with 0 had a vulnerability and are not supported.")]), rich_text=True) self.user_input = False return False @@ -170,16 +170,16 @@ class Plugin(BasePlugin): def bcrypt(self, dialog): self.rawnoise = False dialog.show_message(''.join([_("{} encrypted for Revealer {}_{} saved as PNG and PDF at:").format(self.was, self.version, self.code_id), - "
","", self.base_dir+ self.filename+self.version+"_"+self.code_id,""])) + "
","", self.base_dir+ self.filename+self.version+"_"+self.code_id,""]), rich_text=True) dialog.close() def ext_warning(self, dialog): - dialog.show_message(''.join(["",_("Warning: "), "", _("your seed extension will not be included in the encrypted backup.")])) + dialog.show_message(''.join(["",_("Warning: "), "", _("your seed extension will not be included in the encrypted backup.")]), rich_text=True) dialog.close() def bdone(self, dialog): dialog.show_message(''.join([_("Digital Revealer ({}_{}) saved as PNG and PDF at:").format(self.version, self.code_id), - "
","", self.base_dir + 'revealer_' +self.version + '_'+ self.code_id, ''])) + "
","", self.base_dir + 'revealer_' +self.version + '_'+ self.code_id, '']), rich_text=True) def customtxt_limits(self):