tcopy request URI to clipboard - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit c7f89da934a48cf8960cbdc789cc5bf032546259 DIR parent ce5808e894d30fd56f30bcf64175097d5c4ccce7 HTML Author: ThomasV <thomasv@gitorious> Date: Wed, 25 Feb 2015 10:01:59 +0100 copy request URI to clipboard Diffstat: M gui/qt/main_window.py | 24 ++++++++---------------- M lib/util.py | 16 +++++++++++++++- 2 files changed, 23 insertions(+), 17 deletions(-) --- DIR diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py t@@ -797,7 +797,6 @@ class ElectrumWindow(QMainWindow): self.receive_message_e.setText(message) self.receive_amount_e.setAmount(amount) - def receive_list_delete(self, item): addr = str(item.text(2)) self.receive_requests.pop(addr) t@@ -807,8 +806,12 @@ class ElectrumWindow(QMainWindow): def receive_list_menu(self, position): item = self.receive_list.itemAt(position) + addr = str(item.text(2)) + req = self.receive_requests[addr] + time, amount, message = req['time'], req['amount'], req['msg'] + URI = util.create_URI(addr, amount, message) menu = QMenu() - menu.addAction(_("Copy to clipboard"), lambda: self.app.clipboard().setText(str(item.text(2)))) + menu.addAction(_("Copy to clipboard"), lambda: self.app.clipboard().setText(str(URI))) menu.addAction(_("Delete"), lambda: self.receive_list_delete(item)) menu.exec_(self.receive_list.viewport().mapToGlobal(position)) t@@ -914,26 +917,15 @@ class ElectrumWindow(QMainWindow): self.receive_list.addTopLevelItem(item) - def update_receive_qr(self): - import urlparse, urllib addr = str(self.receive_address_e.text()) amount = self.receive_amount_e.get_amount() message = unicode(self.receive_message_e.text()).encode('utf8') self.save_request_button.setEnabled((amount is not None) or (message != "")) - if addr: - query = [] - if amount: - query.append('amount=%s'%format_satoshis(amount)) - if message: - query.append('message=%s'%urllib.quote(message)) - p = urlparse.ParseResult(scheme='bitcoin', netloc='', path=addr, params='', query='&'.join(query), fragment='') - url = urlparse.urlunparse(p) - else: - url = "" - self.receive_qr.setData(url) + uri = util.create_URI(addr, amount, message) + self.receive_qr.setData(uri) if self.qr_window: - self.qr_window.set_content(addr, amount, message, url) + self.qr_window.set_content(addr, amount, message, uri) def create_send_tab(self): DIR diff --git a/lib/util.py b/lib/util.py t@@ -2,6 +2,8 @@ import os, sys, re, json import platform import shutil from datetime import datetime +import urlparse +import urllib class NotEnoughFunds(Exception): pass t@@ -139,7 +141,6 @@ def age(from_date, since_date = None, target_tz=None, include_seconds=False): #urldecode = lambda x: _ud.sub(lambda m: chr(int(m.group(1), 16)), x) def parse_URI(uri): - import urlparse import bitcoin from decimal import Decimal t@@ -187,6 +188,19 @@ def parse_URI(uri): return address, amount, label, message, request_url +def create_URI(addr, amount, message): + import bitcoin + if not bitcoin.is_address(addr): + return "" + query = [] + if amount: + query.append('amount=%s'%format_satoshis(amount)) + if message: + query.append('message=%s'%urllib.quote(message)) + p = urlparse.ParseResult(scheme='bitcoin', netloc='', path=addr, params='', query='&'.join(query), fragment='') + return urlparse.urlunparse(p) + + # Python bug (http://bugs.python.org/issue1927) causes raw_input # to be redirected improperly between stdin/stderr on Unix systems def raw_input(prompt=None):