commit 83cc5e2001a1413920bd3afe61211d9f7246c039
parent 56bc717da1fb423b63bea716c097a9f7c8632431
Author: Neil Booth <kyuupichan@gmail.com>
Date: Sun, 10 Jan 2016 12:56:12 +0900
Fix top level window issue on Mac
Better, more generic fix superseding prior two patches.
Diffstat:
3 files changed, 19 insertions(+), 23 deletions(-)
diff --git a/gui/qt/__init__.py b/gui/qt/__init__.py
@@ -64,7 +64,7 @@ class OpenFileEventFilter(QObject):
-class ElectrumGui(MessageBoxMixin):
+class ElectrumGui:
def __init__(self, config, network, daemon, plugins):
set_language(config.get('language'))
diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py
@@ -183,13 +183,6 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
return "%s/%s" % (PrintError.diagnostic_name(self),
self.wallet.basename() if self.wallet else "None")
- def top_level_window(self, window=None):
- window = window or self
- for n, child in enumerate(window.children()):
- if isinstance(child, WindowModalDialog):
- return self.top_level_window(child)
- return window
-
def is_hidden(self):
return self.isMinimized() or self.isHidden()
@@ -2085,11 +2078,10 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
verified = bitcoin.verify_message(address.text(), sig, message)
except:
verified = False
- dialog = self.top_level_window()
if verified:
- dialog.show_message(_("Signature verified"))
+ self.show_message(_("Signature verified"))
else:
- dialog.show_error(_("Wrong signature"))
+ self.show_error(_("Wrong signature"))
def sign_verify_message(self, address=''):
@@ -2137,7 +2129,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
message_e.setText(decrypted)
except BaseException as e:
traceback.print_exc(file=sys.stdout)
- self.top_level_window().show_warning(str(e))
+ self.show_warning(str(e))
def do_encrypt(self, message_e, pubkey_e, encrypted_e):
@@ -2148,7 +2140,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
encrypted_e.setText(encrypted)
except BaseException as e:
traceback.print_exc(file=sys.stdout)
- self.top_level_window().show_warning(str(e))
+ self.show_warning(str(e))
def encrypt_message(self, address = ''):
diff --git a/gui/qt/util.py b/gui/qt/util.py
@@ -156,34 +156,38 @@ class CancelButton(QPushButton):
self.clicked.connect(dialog.reject)
class MessageBoxMixin(object):
+ def top_level_window(self, window=None):
+ window = window or self
+ for n, child in enumerate(window.children()):
+ if isinstance(child, WindowModalDialog):
+ return self.top_level_window(child)
+ return window
+
def question(self, msg, parent=None, title=None, icon=None):
Yes, No = QMessageBox.Yes, QMessageBox.No
return self.msg_box(icon or QMessageBox.Question,
- parent or self, title or '',
+ parent, title or '',
msg, buttons=Yes|No, defaultButton=No) == Yes
def show_warning(self, msg, parent=None, title=None):
- return self.msg_box(QMessageBox.Warning, parent or self,
+ return self.msg_box(QMessageBox.Warning, parent,
title or _('Warning'), msg)
def show_error(self, msg, parent=None):
- return self.msg_box(QMessageBox.Warning, parent or self,
+ return self.msg_box(QMessageBox.Warning, parent,
_('Error'), msg)
def show_critical(self, msg, parent=None, title=None):
- return self.msg_box(QMessageBox.Critical, parent or self,
+ return self.msg_box(QMessageBox.Critical, parent,
title or _('Critical Error'), msg)
def show_message(self, msg, parent=None, title=None):
- return self.msg_box(QMessageBox.Information, parent or self,
+ return self.msg_box(QMessageBox.Information, parent,
title or _('Information'), msg)
- @staticmethod
- def msg_box(icon, parent, title, text, buttons=QMessageBox.Ok,
+ def msg_box(self, icon, parent, title, text, buttons=QMessageBox.Ok,
defaultButton=QMessageBox.NoButton):
- # handle e.g. ElectrumGui
- if not isinstance(parent, QWidget):
- parent = None
+ parent = parent or self.top_level_window()
d = QMessageBox(icon, title, text, buttons, parent)
d.setWindowModality(Qt.WindowModal)
d.setDefaultButton(defaultButton)