kivy: fix delete_wallet

This commit is contained in:
ThomasV 2016-06-08 18:32:12 +02:00
parent 8886e5098a
commit ccd0deb600
4 changed files with 33 additions and 37 deletions

View File

@ -371,7 +371,6 @@ BoxLayout:
text: app.status text: app.status
font_size: '22dp' font_size: '22dp'
minimum_width: '1dp' minimum_width: '1dp'
disabled: app.wallet is None
on_release: app.popup_dialog('status') on_release: app.popup_dialog('status')
ActionOverflow: ActionOverflow:

View File

@ -181,12 +181,6 @@ class ElectrumWindow(App):
:data:`ui_mode` is a read only `AliasProperty` Defaults to 'phone' :data:`ui_mode` is a read only `AliasProperty` Defaults to 'phone'
''' '''
wallet = ObjectProperty(None)
'''Holds the electrum wallet
:attr:`wallet` is a `ObjectProperty` defaults to None.
'''
def __init__(self, **kwargs): def __init__(self, **kwargs):
# initialize variables # initialize variables
self._clipboard = Clipboard self._clipboard = Clipboard
@ -194,6 +188,7 @@ class ElectrumWindow(App):
self.nfcscanner = None self.nfcscanner = None
self.tabs = None self.tabs = None
self.is_exit = False self.is_exit = False
self.wallet = None
super(ElectrumWindow, self).__init__(**kwargs) super(ElectrumWindow, self).__init__(**kwargs)
@ -426,6 +421,7 @@ class ElectrumWindow(App):
def stop_wallet(self): def stop_wallet(self):
if self.wallet: if self.wallet:
self.wallet.stop_threads() self.wallet.stop_threads()
self.wallet = None
def on_key_down(self, instance, key, keycode, codepoint, modifiers): def on_key_down(self, instance, key, keycode, codepoint, modifiers):
if 'ctrl' in modifiers: if 'ctrl' in modifiers:
@ -513,7 +509,6 @@ class ElectrumWindow(App):
interests = ['updated', 'status', 'new_transaction', 'verified'] interests = ['updated', 'status', 'new_transaction', 'verified']
self.network.register_callback(self.on_network, interests) self.network.register_callback(self.on_network, interests)
#self.wallet = None
self.tabs = self.root.ids['tabs'] self.tabs = self.root.ids['tabs']
def on_network(self, event, *args): def on_network(self, event, *args):
@ -744,18 +739,33 @@ class ElectrumWindow(App):
else: else:
apply(f, args + (None,)) apply(f, args + (None,))
def delete_wallet(self, name): def delete_wallet(self):
basename = os.path.basename(name) from uix.dialogs.question import Question
def f(pw): basename = os.path.basename(self.wallet.storage.path)
if self.wallet.use_encryption: d = Question(_('Delete wallet?') + '\n' + basename, self._delete_wallet)
try: d.open()
self.wallet.check_password(old_password)
except: def _delete_wallet(self):
self.show_error("Invalid PIN") basename = os.path.basename(self.wallet.storage.path)
return self.protected(_("Enter your PIN code to confirm deletion of %s") % basename, self.__delete_wallet, ())
os.unlink, (name,)
self.show_error("File %s removed."%basename) def __delete_wallet(self, pw):
self.protected(_("Enter your PIN code to delete %s") % basename, f, ()) wallet_path = self.get_wallet_path()
dirname = os.path.dirname(wallet_path)
basename = os.path.basename(wallet_path)
if self.wallet.use_encryption:
try:
self.wallet.check_password(pw)
except:
self.show_error("Invalid PIN")
return
self.stop_wallet()
os.unlink(wallet_path)
self.show_error("Wallet removed:" + basename)
d = os.listdir(dirname)
name = 'default_wallet'
new_path = os.path.join(dirname, name)
self.load_wallet_by_name(new_path)
def show_seed(self, label): def show_seed(self, label):
self.protected(_("Enter your PIN code in order to decrypt your seed"), self._show_seed, (label,)) self.protected(_("Enter your PIN code in order to decrypt your seed"), self._show_seed, (label,))
@ -805,4 +815,3 @@ class ElectrumWindow(App):
self._password_dialog = PasswordDialog() self._password_dialog = PasswordDialog()
self._password_dialog.init(msg, callback) self._password_dialog.init(msg, callback)
self._password_dialog.open() self._password_dialog.open()

View File

@ -48,15 +48,6 @@ Builder.load_string('''
on_release: on_release:
popup.dismiss() popup.dismiss()
root.open_wallet(app) root.open_wallet(app)
Button:
id: open_button
size_hint: 0.1, None
height: '48dp'
text: _('Delete')
disabled: not wallet_selector.selection
on_release:
popup.dismiss()
root.delete_wallet(app)
''') ''')
class WalletDialog(Factory.Popup): class WalletDialog(Factory.Popup):
@ -71,8 +62,3 @@ class WalletDialog(Factory.Popup):
def open_wallet(self, app): def open_wallet(self, app):
app.load_wallet_by_name(self.ids.wallet_selector.selection[0]) app.load_wallet_by_name(self.ids.wallet_selector.selection[0])
def delete_wallet(self, app):
from question import Question
name = self.ids.wallet_selector.selection[0]
d = Question(_('Delete wallet?') + '\n' + os.path.basename(name), lambda: app.delete_wallet(name))
d.open()

View File

@ -70,5 +70,7 @@ Popup:
Button: Button:
size_hint: 0.5, None size_hint: 0.5, None
height: '48dp' height: '48dp'
text: _('Close') text: _('Delete')
on_release: root.dismiss() on_release:
root.dismiss()
app.delete_wallet()