URI: 
       tuse a unique and non-modal network dialog window - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 5ae5c81c487715f103e5ea1fecc433dc5f2fdaae
   DIR parent 321adf600a565e71b1cc73bbf12d4cf4f282cf71
  HTML Author: ThomasV <thomasv@electrum.org>
       Date:   Sat,  8 Jul 2017 15:23:00 +0200
       
       use a unique and non-modal network dialog window
       
       Diffstat:
         M gui/qt/__init__.py                  |      13 +++++++++++++
         M gui/qt/main_window.py               |      13 ++-----------
         M gui/qt/network_dialog.py            |       5 +++--
       
       3 files changed, 18 insertions(+), 13 deletions(-)
       ---
   DIR diff --git a/gui/qt/__init__.py b/gui/qt/__init__.py
       t@@ -87,6 +87,7 @@ class ElectrumGui:
                self.app = QApplication(sys.argv)
                self.app.installEventFilter(self.efilter)
                self.timer = Timer()
       +        self.nd = None
                # init tray
                self.dark_icon = self.config.get("dark_icon", False)
                self.tray = QSystemTrayIcon(self.tray_icon(), None)
       t@@ -138,6 +139,18 @@ class ElectrumGui:
                # Use a signal as can be called from daemon thread
                self.app.emit(SIGNAL('new_window'), path, uri)
        
       +    def show_network_dialog(self, parent):
       +        from network_dialog import NetworkDialog
       +        if not self.daemon.network:
       +            parent.show_warning(_('You are using Electrum in offline mode; restart Electrum if you want to get connected'), title=_('Offline'))
       +            return
       +        if self.nd:
       +            self.nd.show()
       +            self.nd.raise_()
       +            return
       +        self.nd = NetworkDialog(self.daemon.network, self.config, parent)
       +        self.nd.show()
       +
            def create_window_for_wallet(self, wallet):
                w = ElectrumWindow(self, wallet)
                self.windows.append(w)
   DIR diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py
       t@@ -54,7 +54,6 @@ from electrum import SimpleConfig, paymentrequest
        from electrum.wallet import Wallet, Multisig_Wallet
        
        from amountedit import AmountEdit, BTCAmountEdit, MyLineEdit, BTCkBEdit
       -from network_dialog import NetworkDialog
        from qrcodewidget import QRCodeWidget, QRDialog
        from qrtextedit import ShowQRTextEdit
        from transaction_dialog import show_transaction
       t@@ -479,7 +478,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
        
                # Settings / Preferences are all reserved keywords in OSX using this as work around
                tools_menu.addAction(_("Electrum preferences") if sys.platform == 'darwin' else _("Preferences"), self.settings_dialog)
       -        tools_menu.addAction(_("&Network"), self.run_network_dialog)
       +        tools_menu.addAction(_("&Network"), lambda: self.gui_object.show_network_dialog(self))
                tools_menu.addAction(_("&Plugins"), self.plugins_dialog)
                tools_menu.addSeparator()
                tools_menu.addAction(_("&Sign/verify message"), self.sign_verify_message)
       t@@ -1729,7 +1728,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
                sb.addPermanentWidget(StatusBarButton(QIcon(":icons/preferences.png"), _("Preferences"), self.settings_dialog ) )
                self.seed_button = StatusBarButton(QIcon(":icons/seed.png"), _("Seed"), self.show_seed_dialog )
                sb.addPermanentWidget(self.seed_button)
       -        self.status_button = StatusBarButton(QIcon(":icons/status_disconnected.png"), _("Network"), self.run_network_dialog )
       +        self.status_button = StatusBarButton(QIcon(":icons/status_disconnected.png"), _("Network"), lambda: self.gui_object.show_network_dialog(self))
                sb.addPermanentWidget(self.status_button)
                run_hook('create_status_bar', sb)
                self.setStatusBar(sb)
       t@@ -2725,14 +2724,6 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
                    self.show_warning(_('Please restart Electrum to activate the new GUI settings'), title=_('Success'))
        
        
       -
       -
       -    def run_network_dialog(self):
       -        if not self.network:
       -            self.show_warning(_('You are using Electrum in offline mode; restart Electrum if you want to get connected'), title=_('Offline'))
       -            return
       -        NetworkDialog(self.wallet.network, self.config, self).do_exec()
       -
            def closeEvent(self, event):
                # It seems in some rare cases this closeEvent() is called twice
                if not self.cleaned_up:
   DIR diff --git a/gui/qt/network_dialog.py b/gui/qt/network_dialog.py
       t@@ -37,9 +37,10 @@ from util import *
        protocol_names = ['TCP', 'SSL']
        protocol_letters = 'ts'
        
       -class NetworkDialog(WindowModalDialog):
       +class NetworkDialog(QDialog):
            def __init__(self, network, config, parent):
       -        WindowModalDialog.__init__(self, parent, _('Network'))
       +        QDialog.__init__(self, parent)
       +        self.setWindowTitle(_('Network'))
                self.setMinimumSize(400, 20)
                self.nlayout = NetworkChoiceLayout(network, config)
                vbox = QVBoxLayout(self)