X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=gui%2Fqt%2Fmain_window.py;h=c83a6f78cef63aa57f9ca7c3acb616bb9f6c9cd8;hb=042c65939dde0eae0736f778703ae734e513e142;hp=e3990b72004f523315382dea4c0742c2f134693d;hpb=2efad717d8af578af321681275009d0bce5865ba;p=electrum-nvc.git diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py index e3990b7..c83a6f7 100644 --- a/gui/qt/main_window.py +++ b/gui/qt/main_window.py @@ -444,9 +444,14 @@ class ElectrumWindow(QMainWindow): def base_unit(self): - assert self.decimal_point in [5,8] - return "BTC" if self.decimal_point == 8 else "mBTC" - + assert self.decimal_point in [2, 5, 8] + if self.decimal_point == 2: + return 'bits' + if self.decimal_point == 5: + return 'mBTC' + if self.decimal_point == 8: + return 'BTC' + raise Exception('Unknown base unit') def update_status(self): if self.network is None or not self.network.is_running(): @@ -760,7 +765,7 @@ class ElectrumWindow(QMainWindow): self.receive_requests = self.wallet.storage.get('receive_requests',{}) domain = self.wallet.get_account_addresses(self.current_account, include_change=False) for addr in domain: - if not self.wallet.address_is_old(addr) and addr not in self.receive_requests.keys(): + if not self.wallet.history.get(addr) and addr not in self.receive_requests.keys(): break else: addr = '' @@ -986,20 +991,20 @@ class ElectrumWindow(QMainWindow): QMessageBox.warning(self, _('Error'), _('No outputs'), _('OK')) return - for addr, x in outputs: + for type, addr, amount in outputs: if addr is None: QMessageBox.warning(self, _('Error'), _('Bitcoin Address is None'), _('OK')) return - if addr.startswith('OP_RETURN:'): + if type == 'op_return': continue - if not bitcoin.is_address(addr): + if type == 'address' and not bitcoin.is_address(addr): QMessageBox.warning(self, _('Error'), _('Invalid Bitcoin Address'), _('OK')) return - if x is None: + if amount is None: QMessageBox.warning(self, _('Error'), _('Invalid Amount'), _('OK')) return - amount = sum(map(lambda x:x[1], outputs)) + amount = sum(map(lambda x:x[2], outputs)) fee = self.fee_e.get_amount() if fee is None: @@ -1008,7 +1013,7 @@ class ElectrumWindow(QMainWindow): confirm_amount = self.config.get('confirm_amount', 100000000) if amount >= confirm_amount: - o = '\n'.join(map(lambda x:x[0], outputs)) + o = '\n'.join(map(lambda x:x[1], outputs)) if not self.question(_("send %(amount)s to %(address)s?")%{ 'amount' : self.format_amount(amount) + ' '+ self.base_unit(), 'address' : o}): return @@ -1048,11 +1053,14 @@ class ElectrumWindow(QMainWindow): # sign the tx def sign_thread(): + if self.wallet.is_watching_only(): + return tx keypairs = {} try: self.wallet.add_keypairs(tx, keypairs, password) self.wallet.sign_transaction(tx, keypairs, password) except Exception as e: + traceback.print_exc(file=sys.stdout) tx.error = str(e) return tx @@ -1768,7 +1776,7 @@ class ElectrumWindow(QMainWindow): self.wallet.create_pending_account(name, password) self.update_address_tab() - self.tabs.setCurrentIndex(2) + self.tabs.setCurrentIndex(3) @@ -1980,7 +1988,7 @@ class ElectrumWindow(QMainWindow): pubkey_e = QLineEdit() if address: - pubkey = self.wallet.getpubkeys(address)[0] + pubkey = self.wallet.get_public_keys(address)[0] pubkey_e.setText(pubkey) layout.addWidget(QLabel(_('Public key')), 2, 0) layout.addWidget(pubkey_e, 2, 1) @@ -2056,7 +2064,7 @@ class ElectrumWindow(QMainWindow): if is_hex: try: - return Transaction(txt) + return Transaction.deserialize(txt) except: traceback.print_exc(file=sys.stdout) QMessageBox.critical(None, _("Unable to parse transaction"), _("Electrum was unable to parse your transaction")) @@ -2065,7 +2073,7 @@ class ElectrumWindow(QMainWindow): try: tx_dict = json.loads(str(txt)) assert "hex" in tx_dict.keys() - tx = Transaction(tx_dict["hex"]) + tx = Transaction.deserialize(tx_dict["hex"]) #if tx_dict.has_key("input_info"): # input_info = json.loads(tx_dict['input_info']) # tx.add_input_info(input_info) @@ -2116,7 +2124,7 @@ class ElectrumWindow(QMainWindow): if ok and txid: r = self.network.synchronous_get([ ('blockchain.transaction.get',[str(txid)]) ])[0] if r: - tx = transaction.Transaction(r) + tx = transaction.Transaction.deserialize(r) if tx: self.show_transaction(tx) else: @@ -2129,12 +2137,12 @@ class ElectrumWindow(QMainWindow): try: for position, row in enumerate(csvReader): address = row[0] - if not is_valid(address): + if not is_address(address): errors.append((position, address)) continue amount = Decimal(row[1]) amount = int(100000000*amount) - outputs.append((address, amount)) + outputs.append(('address', address, amount)) except (ValueError, IOError, os.error), reason: QMessageBox.critical(None, _("Unable to read file or no transaction found"), _("Electrum was unable to open your transaction file") + "\n" + str(reason)) return @@ -2486,7 +2494,7 @@ class ElectrumWindow(QMainWindow): if not self.config.is_modifiable('fee_per_kb'): for w in [fee_e, fee_label]: w.setEnabled(False) - units = ['BTC', 'mBTC'] + units = ['BTC', 'mBTC', 'bits'] unit_label = QLabel(_('Base unit') + ':') grid.addWidget(unit_label, 3, 0) unit_combo = QComboBox() @@ -2557,7 +2565,14 @@ class ElectrumWindow(QMainWindow): unit_result = units[unit_combo.currentIndex()] if self.base_unit() != unit_result: - self.decimal_point = 8 if unit_result == 'BTC' else 5 + if unit_result == 'BTC': + self.decimal_point = 8 + elif unit_result == 'mBTC': + self.decimal_point = 5 + elif unit_result == 'bits': + self.decimal_point = 2 + else: + raise Exception('Unknown base unit') self.config.set_key('decimal_point', self.decimal_point, True) self.update_history_tab() self.update_status()