dialog parents, fix settings dialog, use gtk textview
This commit is contained in:
parent
5e677b0e97
commit
abbd4e065e
101
client/gui.py
101
client/gui.py
|
@ -39,7 +39,7 @@ def numbify(entry, is_int = False):
|
||||||
entry.set_text(s)
|
entry.set_text(s)
|
||||||
|
|
||||||
|
|
||||||
def show_seed_dialog(wallet, password):
|
def show_seed_dialog(wallet, password, parent):
|
||||||
import mnemonic
|
import mnemonic
|
||||||
try:
|
try:
|
||||||
seed = wallet.pw_decode( wallet.seed, password)
|
seed = wallet.pw_decode( wallet.seed, password)
|
||||||
|
@ -48,12 +48,13 @@ def show_seed_dialog(wallet, password):
|
||||||
show_message("Incorrect password")
|
show_message("Incorrect password")
|
||||||
return
|
return
|
||||||
dialog = gtk.MessageDialog(
|
dialog = gtk.MessageDialog(
|
||||||
parent = None,
|
parent = parent,
|
||||||
flags = gtk.DIALOG_MODAL,
|
flags = gtk.DIALOG_MODAL,
|
||||||
buttons = gtk.BUTTONS_OK,
|
buttons = gtk.BUTTONS_OK,
|
||||||
message_format = "Your wallet generation seed is:\n\n" + seed \
|
message_format = "Your wallet generation seed is:\n\n" + seed \
|
||||||
+ "\n\nPlease keep it in a safe place; if you lose it, you will not be able to restore your wallet.\n\n" \
|
+ "\n\nPlease keep it in a safe place; if you lose it, you will not be able to restore your wallet.\n\n" \
|
||||||
+ "Equivalently, your wallet seed can be stored and recovered with the following mnemonic code:\n\n\"" + ' '.join(mnemonic.mn_encode(seed)) + "\"" )
|
+ "Equivalently, your wallet seed can be stored and recovered with the following mnemonic code:\n\n\"" + ' '.join(mnemonic.mn_encode(seed)) + "\"" )
|
||||||
|
dialog.set_title("Seed")
|
||||||
dialog.show()
|
dialog.show()
|
||||||
dialog.run()
|
dialog.run()
|
||||||
dialog.destroy()
|
dialog.destroy()
|
||||||
|
@ -84,20 +85,20 @@ def init_wallet(wallet):
|
||||||
wallet.new_seed(None)
|
wallet.new_seed(None)
|
||||||
|
|
||||||
# ask for the server.
|
# ask for the server.
|
||||||
run_settings_dialog(wallet, is_create=True, is_recovery=False)
|
run_settings_dialog(wallet, is_create=True, is_recovery=False, parent=None)
|
||||||
|
|
||||||
# generate first key
|
# generate first key
|
||||||
wallet.create_new_address(False, None)
|
wallet.create_new_address(False, None)
|
||||||
|
|
||||||
# run a dialog indicating the seed, ask the user to remember it
|
# run a dialog indicating the seed, ask the user to remember it
|
||||||
show_seed_dialog(wallet, None)
|
show_seed_dialog(wallet, None, None)
|
||||||
|
|
||||||
#ask for password
|
#ask for password
|
||||||
change_password_dialog(wallet, None)
|
change_password_dialog(wallet, None, None)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
# ask for the server, seed and gap.
|
# ask for the server, seed and gap.
|
||||||
run_settings_dialog(wallet, is_create=True, is_recovery=True)
|
run_settings_dialog(wallet, is_create=True, is_recovery=True, parent=None)
|
||||||
|
|
||||||
dialog = gtk.MessageDialog(
|
dialog = gtk.MessageDialog(
|
||||||
parent = None,
|
parent = None,
|
||||||
|
@ -120,24 +121,26 @@ def init_wallet(wallet):
|
||||||
show_message("No transactions found for this seed")
|
show_message("No transactions found for this seed")
|
||||||
|
|
||||||
|
|
||||||
def settings_dialog(wallet, is_create, is_recovery):
|
def run_settings_dialog(wallet, is_create, is_recovery, parent):
|
||||||
|
|
||||||
if is_create:
|
if is_recovery:
|
||||||
dialog = gtk.MessageDialog(
|
message = "Please enter your wallet seed or the corresponding mnemonic list of words, the server and the gap limit"
|
||||||
parent = None,
|
elif is_create:
|
||||||
flags = gtk.DIALOG_MODAL,
|
message = "Please indicate the server and port number"
|
||||||
buttons = gtk.BUTTONS_OK_CANCEL,
|
|
||||||
message_format = "Please indicate the server and port number" if not is_recovery else 'Please enter your wallet seed or the corresponding mnemonic list of words, the server and the gap limit')
|
|
||||||
else:
|
else:
|
||||||
dialog = gtk.MessageDialog( None, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
|
message = "These are the settings of your wallet. For more explanations, click on the question mark buttons next to each input field."
|
||||||
gtk.MESSAGE_QUESTION, gtk.BUTTONS_OK_CANCEL, "These are the settings of your wallet. For more explanations, click on the question mark buttons next to each input field.")
|
|
||||||
dialog.get_image().set_visible(False)
|
dialog = gtk.MessageDialog(
|
||||||
dialog.set_title("Settings")
|
parent = parent,
|
||||||
|
flags = gtk.DIALOG_MODAL,
|
||||||
|
buttons = gtk.BUTTONS_OK_CANCEL,
|
||||||
|
message_format = message)
|
||||||
|
|
||||||
image = gtk.Image()
|
image = gtk.Image()
|
||||||
image.set_from_stock(gtk.STOCK_PREFERENCES, gtk.ICON_SIZE_DIALOG)
|
image.set_from_stock(gtk.STOCK_PREFERENCES, gtk.ICON_SIZE_DIALOG)
|
||||||
image.show()
|
image.show()
|
||||||
dialog.set_image(image)
|
dialog.set_image(image)
|
||||||
|
dialog.set_title("Settings")
|
||||||
|
|
||||||
vbox = dialog.vbox
|
vbox = dialog.vbox
|
||||||
dialog.set_default_response(gtk.RESPONSE_OK)
|
dialog.set_default_response(gtk.RESPONSE_OK)
|
||||||
|
@ -201,22 +204,6 @@ def settings_dialog(wallet, is_create, is_recovery):
|
||||||
fee.show()
|
fee.show()
|
||||||
vbox.pack_start(fee, False,False, 5)
|
vbox.pack_start(fee, False,False, 5)
|
||||||
|
|
||||||
if not is_create:
|
|
||||||
return dialog, fee_entry, gap_entry
|
|
||||||
elif is_recovery:
|
|
||||||
return dialog, seed_entry, gap_entry, host_entry
|
|
||||||
else:
|
|
||||||
return dialog, host_entry
|
|
||||||
|
|
||||||
|
|
||||||
def run_settings_dialog( wallet, is_create, is_recovery):
|
|
||||||
|
|
||||||
if not is_create:
|
|
||||||
dialog, fee_entry, gap_entry = settings_dialog(wallet, is_create, is_recovery)
|
|
||||||
elif is_recovery:
|
|
||||||
dialog, seed_entry, gap_entry, host_entry = settings_dialog(wallet, is_create, is_recovery)
|
|
||||||
else:
|
|
||||||
dialog, host_entry, = settings_dialog(wallet, is_create, is_recovery)
|
|
||||||
|
|
||||||
dialog.show()
|
dialog.show()
|
||||||
r = dialog.run()
|
r = dialog.run()
|
||||||
|
@ -231,6 +218,10 @@ def run_settings_dialog( wallet, is_create, is_recovery):
|
||||||
import mnemonic
|
import mnemonic
|
||||||
print "not hex, trying decode"
|
print "not hex, trying decode"
|
||||||
seed = mnemonic.mn_decode( seed.split(' ') )
|
seed = mnemonic.mn_decode( seed.split(' ') )
|
||||||
|
if not is_create:
|
||||||
|
fee = fee_entry.get_text()
|
||||||
|
gap = gap_entry.get_text()
|
||||||
|
|
||||||
dialog.destroy()
|
dialog.destroy()
|
||||||
if r==gtk.RESPONSE_CANCEL:
|
if r==gtk.RESPONSE_CANCEL:
|
||||||
if is_create: sys.exit(1)
|
if is_create: sys.exit(1)
|
||||||
|
@ -243,17 +234,25 @@ def run_settings_dialog( wallet, is_create, is_recovery):
|
||||||
port = int(port)
|
port = int(port)
|
||||||
else:
|
else:
|
||||||
host = hh
|
host = hh
|
||||||
port = 80
|
port = 50000
|
||||||
if is_recovery: gap = int(gap)
|
if is_recovery:
|
||||||
|
gap = int(gap)
|
||||||
|
if not is_create:
|
||||||
|
fee = float(fee)
|
||||||
|
gap = int(gap)
|
||||||
except:
|
except:
|
||||||
show_message("error")
|
show_message("error")
|
||||||
return
|
return
|
||||||
|
|
||||||
wallet.host = host
|
if is_create:
|
||||||
wallet.port = port
|
wallet.host = host
|
||||||
|
wallet.port = port
|
||||||
if is_recovery:
|
if is_recovery:
|
||||||
wallet.seed = seed
|
wallet.seed = seed
|
||||||
wallet.gap_limit = gap
|
wallet.gap_limit = gap
|
||||||
|
if not is_create:
|
||||||
|
wallet.fee = fee
|
||||||
|
wallet.gap_limit = gap
|
||||||
wallet.save()
|
wallet.save()
|
||||||
|
|
||||||
|
|
||||||
|
@ -296,13 +295,13 @@ def password_dialog():
|
||||||
dialog.destroy()
|
dialog.destroy()
|
||||||
if result: return pw
|
if result: return pw
|
||||||
|
|
||||||
def change_password_dialog(wallet, icon):
|
def change_password_dialog(wallet, parent, icon):
|
||||||
if icon:
|
if parent:
|
||||||
msg = 'Your wallet is encrypted. Use this dialog to change the password. To disable wallet encryption, enter an empty new password.' if wallet.use_encryption else 'Your wallet keys are not encrypted'
|
msg = 'Your wallet is encrypted. Use this dialog to change the password. To disable wallet encryption, enter an empty new password.' if wallet.use_encryption else 'Your wallet keys are not encrypted'
|
||||||
else:
|
else:
|
||||||
msg = "Please choose a password to encrypt your wallet keys"
|
msg = "Please choose a password to encrypt your wallet keys"
|
||||||
|
|
||||||
dialog = gtk.MessageDialog( None, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_QUESTION, gtk.BUTTONS_OK_CANCEL, msg)
|
dialog = gtk.MessageDialog( parent, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_QUESTION, gtk.BUTTONS_OK_CANCEL, msg)
|
||||||
dialog.set_title("Change password")
|
dialog.set_title("Change password")
|
||||||
image = gtk.Image()
|
image = gtk.Image()
|
||||||
image.set_from_stock(gtk.STOCK_DIALOG_AUTHENTICATION, gtk.ICON_SIZE_DIALOG)
|
image.set_from_stock(gtk.STOCK_DIALOG_AUTHENTICATION, gtk.ICON_SIZE_DIALOG)
|
||||||
|
@ -410,7 +409,7 @@ class BitcoinGUI:
|
||||||
password = password_dialog()
|
password = password_dialog()
|
||||||
if not password: return
|
if not password: return
|
||||||
else: password = None
|
else: password = None
|
||||||
show_seed_dialog(wallet, password)
|
show_seed_dialog(wallet, password, self.window)
|
||||||
button = gtk.Button('S')
|
button = gtk.Button('S')
|
||||||
button.connect("clicked", seedb, wallet )
|
button.connect("clicked", seedb, wallet )
|
||||||
button.set_relief(gtk.RELIEF_NONE)
|
button.set_relief(gtk.RELIEF_NONE)
|
||||||
|
@ -424,7 +423,7 @@ class BitcoinGUI:
|
||||||
settings_icon.show()
|
settings_icon.show()
|
||||||
|
|
||||||
prefs_button = gtk.Button()
|
prefs_button = gtk.Button()
|
||||||
prefs_button.connect("clicked", lambda x: run_settings_dialog(self.wallet, False, False) )
|
prefs_button.connect("clicked", lambda x: run_settings_dialog(self.wallet, False, False, self.window) )
|
||||||
prefs_button.add(settings_icon)
|
prefs_button.add(settings_icon)
|
||||||
prefs_button.set_tooltip_text("Settings")
|
prefs_button.set_tooltip_text("Settings")
|
||||||
prefs_button.set_relief(gtk.RELIEF_NONE)
|
prefs_button.set_relief(gtk.RELIEF_NONE)
|
||||||
|
@ -438,7 +437,7 @@ class BitcoinGUI:
|
||||||
pw_icon.show()
|
pw_icon.show()
|
||||||
|
|
||||||
password_button = gtk.Button()
|
password_button = gtk.Button()
|
||||||
password_button.connect("clicked", lambda x: change_password_dialog(self.wallet, pw_icon))
|
password_button.connect("clicked", lambda x: change_password_dialog(self.wallet, self.window, pw_icon))
|
||||||
password_button.add(pw_icon)
|
password_button.add(pw_icon)
|
||||||
password_button.set_relief(gtk.RELIEF_NONE)
|
password_button.set_relief(gtk.RELIEF_NONE)
|
||||||
password_button.show()
|
password_button.show()
|
||||||
|
@ -557,14 +556,14 @@ class BitcoinGUI:
|
||||||
def create_about_tab(self):
|
def create_about_tab(self):
|
||||||
page = gtk.VBox()
|
page = gtk.VBox()
|
||||||
page.show()
|
page.show()
|
||||||
self.info = gtk.Label('')
|
#self.info = gtk.Label('')
|
||||||
self.info.set_selectable(True)
|
#self.info.set_selectable(True)
|
||||||
page.pack_start(self.info)
|
#page.pack_start(self.info)
|
||||||
#tv = gtk.TextView()
|
tv = gtk.TextView()
|
||||||
#tv.set_editable(False)
|
tv.set_editable(False)
|
||||||
#tv.set_cursor_visible(False)
|
tv.set_cursor_visible(False)
|
||||||
#page.pack_start(tv)
|
page.pack_start(tv)
|
||||||
#self.info = tv.get_buffer()
|
self.info = tv.get_buffer()
|
||||||
self.add_tab(page, 'Wall')
|
self.add_tab(page, 'Wall')
|
||||||
|
|
||||||
def do_send(self, w, data):
|
def do_send(self, w, data):
|
||||||
|
|
Loading…
Reference in New Issue