X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=plugins%2Flabels.py;h=83609b02752133c37e52a0712fb4e3949ec182bf;hb=73ee95ec9aa815537c20f009ac2eef81ba2f9a47;hp=5ccd152bf4b0d5e4a8bdd42267f249a520b5dd2b;hpb=10be6e76094d3b87227c3abdade2daddd5ca1581;p=electrum-nvc.git diff --git a/plugins/labels.py b/plugins/labels.py index 5ccd152..83609b0 100644 --- a/plugins/labels.py +++ b/plugins/labels.py @@ -7,7 +7,7 @@ import json from urlparse import urlparse, parse_qs try: import PyQt4 -except: +except Exception: sys.exit("Error: Could not import PyQt4 on Linux systems, you may try 'sudo apt-get install python-qt4'") from PyQt4.QtGui import * @@ -16,11 +16,10 @@ import PyQt4.QtCore as QtCore import PyQt4.QtGui as QtGui import aes import base64 -from electrum import bmp, pyqrnative from electrum.plugins import BasePlugin from electrum.i18n import _ -from electrum_gui.gui_classic import HelpButton +from electrum_gui.qt import HelpButton, EnterButton class Plugin(BasePlugin): @@ -47,10 +46,14 @@ class Plugin(BasePlugin): def init(self): self.target_host = 'labelectrum.herokuapp.com' - self.wallet = self.gui.wallet - self.labels = self.wallet.labels - self.transactions = self.wallet.transactions - mpk = self.wallet.master_public_keys["m/0'/"][1] + self.window = self.gui.main_window + + def load_wallet(self, wallet): + self.wallet = wallet + if self.wallet.get_master_public_key(): + mpk = self.wallet.get_master_public_key() + else: + mpk = self.wallet.master_public_keys["m/0'/"][1] self.encode_password = hashlib.sha1(mpk).digest().encode('hex')[:32] self.wallet_id = hashlib.sha256(mpk).digest().encode('hex') @@ -91,6 +94,9 @@ class Plugin(BasePlugin): print_error('Error connecting to service: %s ' % e) return False + def settings_widget(self, window): + return EnterButton(_('Settings'), self.settings_dialog) + def settings_dialog(self): def check_for_api_key(api_key): if api_key and len(api_key) > 12: @@ -103,7 +109,7 @@ class Plugin(BasePlugin): self.download.setEnabled(False) self.accept.setEnabled(False) - d = QDialog(self.gui) + d = QDialog() layout = QGridLayout(d) layout.addWidget(QLabel("API Key: "),0,0) @@ -146,13 +152,17 @@ class Plugin(BasePlugin): def enable(self): if not self.auth_token(): # First run, throw plugin settings in your face self.init() + self.load_wallet(self.gui.main_window.wallet) if self.settings_dialog(): self.set_enabled(True) return True else: self.set_enabled(False) return False - return enabled + + self.set_enabled(True) + return True + def full_push(self): if self.do_full_push(): @@ -161,15 +171,15 @@ class Plugin(BasePlugin): def full_pull(self, force = False): if self.do_full_pull(force) and force: QMessageBox.information(None, _("Labels synchronized"), _("Your labels have been synchronized.")) - self.gui.update_history_tab() - self.gui.update_completions() - self.gui.update_receive_tab() - self.gui.update_contacts_tab() + self.window.update_history_tab() + self.window.update_completions() + self.window.update_receive_tab() + self.window.update_contacts_tab() def do_full_push(self): try: bundle = {"labels": {}} - for key, value in self.labels.iteritems(): + for key, value in self.wallet.labels.iteritems(): encoded = self.encode(key) bundle["labels"][encoded] = self.encode(value) @@ -213,8 +223,8 @@ class Plugin(BasePlugin): for label in response: decoded_key = self.decode(label["external_id"]) decoded_label = self.decode(label["text"]) - if force or not self.labels.get(decoded_key): - self.labels[decoded_key] = decoded_label + if force or not self.wallet.labels.get(decoded_key): + self.wallet.labels[decoded_key] = decoded_label return True except socket.gaierror as e: print_error('Error connecting to service: %s ' % e)