commit 27917af2bffd8f79c3fe31db3ccd6d93fe9f01cf
parent 4655c5f5654097cb4385adcb3c414268b6dbdc9b
Author: Neil Booth <kyuupichan@gmail.com>
Date: Thu, 3 Sep 2015 17:23:43 +0900
Get URIs working properly for multiple windows
Diffstat:
2 files changed, 20 insertions(+), 21 deletions(-)
diff --git a/electrum b/electrum
@@ -20,7 +20,6 @@
from decimal import Decimal
import json
import os
-import re
import sys
import time
import traceback
@@ -298,7 +297,7 @@ class ClientThread(util.DaemonThread):
if self.server.gui:
if hasattr(server.gui, 'new_window'):
path = config.get_wallet_path()
- self.server.gui.new_window(path)
+ self.server.gui.new_window(path, config.get('url'))
response = "ok"
else:
response = "error: current GUI does not support multiple windows"
@@ -482,16 +481,6 @@ if __name__ == '__main__':
config = SimpleConfig(config_options)
cmd_name = config.get('cmd')
- # check url
- url = config.get('url')
- if url:
- if os.path.exists(url):
- # assume this is a payment request
- url = "bitcoin:?r=file://"+ os.path.join(os.getcwd(), url)
- if not re.match('^bitcoin:', url):
- print_stderr('unknown command:', url)
- sys.exit(1)
-
# initialize plugins.
plugins = None
if not is_android:
diff --git a/gui/qt/__init__.py b/gui/qt/__init__.py
@@ -17,7 +17,8 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import sys
-import os.path
+import os
+import re
import signal
try:
@@ -199,13 +200,13 @@ class ElectrumGui:
return
wallet = wizard.run(action, wallet_type)
if wallet:
- self.start_new_window(full_path)
+ self.start_new_window(full_path, None)
- def new_window(self, path):
+ def new_window(self, path, uri):
# Use a signal as can be called from daemon thread
- self.app.emit(SIGNAL('new_window'), path)
+ self.app.emit(SIGNAL('new_window'), path, uri)
- def start_new_window(self, path):
+ def start_new_window(self, path, uri):
for w in self.windows:
if w.wallet.storage.path == path:
w.bring_to_top()
@@ -228,9 +229,17 @@ class ElectrumGui:
self.windows.append(w)
self.build_tray_menu()
- url = self.config.get('url')
- if url:
- w.pay_to_URI(url)
+ if uri:
+ print "URI: ", uri
+ if os.path.exists(uri):
+ # assume this is a payment request
+ uri = "bitcoin:?r=file://"+ os.path.join(os.getcwd(), uri)
+ if re.match('^bitcoin:', uri):
+ w.pay_to_URI(uri)
+ else:
+ QMessageBox.critical(None, "Error",
+ _("bad bitcoin URI: %s") % uri)
+
return w
def close_window(self, window):
@@ -246,7 +255,8 @@ class ElectrumGui:
self.config.cmdline_options['default_wallet_path'] = last_wallet
# main window
- self.main_window = self.start_new_window(self.config.get_wallet_path())
+ self.main_window = self.start_new_window(self.config.get_wallet_path(),
+ self.config.get('url'))
if not self.main_window:
return