def on_add_button_clicked( self, widget, data=None ): redeem_script = None address = None try: redeem_script = self.redeem_script_window.script_entry.get_text() address = bitcoin.scriptaddr( redeem_script ) KeyHelper.parse_redeem_script( redeem_script ) except ValueError as e: confirm = gtk.MessageDialog( self.keys_window, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_WARNING, gtk.BUTTONS_OK, "Invalid redeemScript!" ) confirm.format_secondary_markup(str(e)) confirm.run() confirm.destroy() return notes = self.redeem_script_window.notes_entry.get_text() try: self.script_info = KeyHelper.add_redeem_script( redeem_script, notes ) except ValueError as e: confirm = gtk.MessageDialog( self.redeem_script_window, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_WARNING, gtk.BUTTONS_OK, "Duplicate redeemScript!" ) confirm.format_secondary_markup(str(e)) confirm.run() confirm.destroy() return except nacl.exceptions.CryptoError: confirm = gtk.MessageDialog( self.redeem_script_window, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_WARNING, gtk.BUTTONS_OK, "Invalid Password" ) confirm.run() confirm.destroy() return self.display_redeem_scripts() return True
def on_account_key_button_clicked( self, widget, data=None ): #no account? if self.account_info is None: confirm = gtk.MessageDialog( self.keys_window, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_WARNING, gtk.BUTTONS_OK, "Setup is not yet complete" ) confirm.run() confirm.destroy() return try: account_number, account_key, key_number = KeyHelper.get_account_number_and_chain( account_number=self.keys_window.account_spinner.get_value_as_int() ) except nacl.exceptions.CryptoError: confirm = gtk.MessageDialog( self.keys_window, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_WARNING, gtk.BUTTONS_OK, "Invalid Password" ) confirm.run() confirm.destroy() return label_string = "Extended Private Account Key:" #This means we are showing a public key if data is True: label_string = "Public Extended Account Key:" account_key = KeyHelper.get_extended_public_key( account_key ) confirm = gtk.MessageDialog( self.keys_window, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, label_string ) confirm.format_secondary_markup( account_key ) confirm.run() confirm.destroy()
def on_script_changed( self, widget, data=None ): script = widget.get_text() address = None try: address = bitcoin.scriptaddr( script ) KeyHelper.parse_redeem_script( script ) except Exception as e: address = "Invalid Script" self.redeem_script_window.address_entry.set_text( address ) return False
def on_script_changed(self, widget, data=None): script = widget.get_text() address = None try: address = bitcoin.scriptaddr(script) KeyHelper.parse_redeem_script(script) except Exception as e: address = "Invalid Script" self.redeem_script_window.address_entry.set_text(address) return False
def sign_window_response(self, dialog, response_id, data=None): #fake it for now if response_id == gtk.RESPONSE_CANCEL or response_id == gtk.RESPONSE_DELETE_EVENT: self.signWindow.destroy() self.signWindow = None return bufferText = dialog.get_text_content() signer = TxSigner() try: signer.import_json(bufferText) key = KeyHelper.get_bip32_key(signer.pubs) if (key is None): key = gui.PasswordEntry.get_password_from_user("Private Key") signedtx, complete = signer.sign(key) self.show_signed_tx(signedtx, complete) except RuntimeError as e: primaryError = e.args[0] secondaryError = e.args[1] diag = gtk.MessageDialog( self.signWindow, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, primaryError) diag.format_secondary_markup(secondaryError) diag.run() diag.destroy() self.signWindow.present() return self.signWindow.destroy() self.signWindow = None return
def on_add_button_clicked(self, widget, data=None): redeem_script = None address = None try: redeem_script = self.redeem_script_window.script_entry.get_text() address = bitcoin.scriptaddr(redeem_script) KeyHelper.parse_redeem_script(redeem_script) except ValueError as e: confirm = gtk.MessageDialog( self.keys_window, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_WARNING, gtk.BUTTONS_OK, "Invalid redeemScript!") confirm.format_secondary_markup(str(e)) confirm.run() confirm.destroy() return notes = self.redeem_script_window.notes_entry.get_text() try: self.script_info = KeyHelper.add_redeem_script( redeem_script, notes) except ValueError as e: confirm = gtk.MessageDialog( self.redeem_script_window, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_WARNING, gtk.BUTTONS_OK, "Duplicate redeemScript!") confirm.format_secondary_markup(str(e)) confirm.run() confirm.destroy() return except nacl.exceptions.CryptoError: confirm = gtk.MessageDialog( self.redeem_script_window, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_WARNING, gtk.BUTTONS_OK, "Invalid Password") confirm.run() confirm.destroy() return self.display_redeem_scripts() return True
def __init__( self, redeem_script_window ): self.redeem_script_window = redeem_script_window self.redeem_script_window.connect( "delete_event", self.window_delete ) self.redeem_script_window.add_button.connect( "clicked", self.on_add_button_clicked ) self.redeem_script_window.script_entry.connect( "changed", self.on_script_changed ) self.script_info = KeyHelper.get_redeem_scripts() if self.script_info is None: self.script_info = [] return self.display_redeem_scripts() return
def __init__( self, keys_window ): self.keys_window = keys_window #self.keys_window.connect_after( "response", self.window_response ) self.keys_window.connect( "delete_event", self.window_delete ) self.keys_window.account_key_button.connect( "clicked", self.on_account_key_button_clicked ) self.keys_window.pub_key_button.connect( "clicked", self.on_account_key_button_clicked, True ) self.keys_window.key_view.connect( "button_press_event", self.display_context_menu ) self.keys_window.account_spinner.connect( "value_changed", self.update_account ) self.account_info, account_number = KeyHelper.get_accounts() if self.account_info is None: self.keys_window.account_spinner.set_sensitive(False) display_needs_setup_message() return self.keys_window.account_spinner.set_value( account_number )
def __init__(self, redeem_script_window): self.redeem_script_window = redeem_script_window self.redeem_script_window.connect("delete_event", self.window_delete) self.redeem_script_window.add_button.connect( "clicked", self.on_add_button_clicked) self.redeem_script_window.script_entry.connect("changed", self.on_script_changed) self.script_info = KeyHelper.get_redeem_scripts() if self.script_info is None: self.script_info = [] return self.display_redeem_scripts() return
def sign_window_response(self, dialog, response_id, data=None): # fake it for now if response_id == gtk.RESPONSE_CANCEL or response_id == gtk.RESPONSE_DELETE_EVENT: self.signWindow.destroy() self.signWindow = None return bufferText = dialog.get_text_content() signer = TxSigner() try: signer.import_json(bufferText) key = KeyHelper.get_bip32_key(signer.pubs) if key is None: key = gui.PasswordEntry.get_password_from_user("Private Key") signedtx, complete = signer.sign(key) self.show_signed_tx(signedtx, complete) except RuntimeError as e: primaryError = e.args[0] secondaryError = e.args[1] diag = gtk.MessageDialog( self.signWindow, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, primaryError, ) diag.format_secondary_markup(secondaryError) diag.run() diag.destroy() self.signWindow.present() return self.signWindow.destroy() self.signWindow = None return
def get_private_key( self, context_path ): itr = self.keys_window.key_view.get_model().get_iter(context_path[0]) chain_code = self.keys_window.key_view.get_model().get_value(itr, 0) account = self.keys_window.account_spinner.get_value_as_int() private_key = KeyHelper.get_private_for_chain( account, chain_code ) return private_key