URI: 
       twallets.py - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
       twallets.py (2102B)
       ---
            1 import os
            2 
            3 from kivy.app import App
            4 from kivy.factory import Factory
            5 from kivy.properties import ObjectProperty
            6 from kivy.lang import Builder
            7 
            8 from electrum.util import base_units
            9 from electrum.storage import StorageReadWriteError
           10 
           11 from ...i18n import _
           12 from .label_dialog import LabelDialog
           13 
           14 Builder.load_string('''
           15 <WalletDialog@Popup>:
           16     title: _('Wallets')
           17     id: popup
           18     path: ''
           19     disable_new: True
           20     BoxLayout:
           21         orientation: 'vertical'
           22         padding: '10dp'
           23         FileChooserIconView:
           24             id: wallet_selector
           25             dirselect: False
           26             filter_dirs: True
           27             filter: '*.*'
           28             path: root.path
           29             rootpath: root.path
           30             size_hint_y: 0.6
           31         Widget
           32             size_hint_y: 0.1
           33         GridLayout:
           34             cols: 3
           35             size_hint_y: 0.1
           36             Button:
           37                 id: new_button
           38                 disabled: root.disable_new
           39                 size_hint: 0.1, None
           40                 height: '48dp'
           41                 text: _('New')
           42                 on_release:
           43                     popup.dismiss()
           44                     root.new_wallet(wallet_selector.path)
           45             Button:
           46                 id: open_button
           47                 size_hint: 0.1, None
           48                 height: '48dp'
           49                 text: _('Open')
           50                 disabled: not wallet_selector.selection
           51                 on_release:
           52                     popup.dismiss()
           53                     root.callback(wallet_selector.selection[0])
           54 ''')
           55 
           56 class WalletDialog(Factory.Popup):
           57 
           58     def __init__(self, path, callback, disable_new):
           59         Factory.Popup.__init__(self)
           60         self.path = path
           61         self.callback = callback
           62         self.disable_new = disable_new
           63 
           64     def new_wallet(self, dirname):
           65         assert self.disable_new is False
           66         def cb(filename):
           67             if not filename:
           68                 return
           69             # FIXME? "filename" might contain ".." (etc) and hence sketchy path traversals are possible
           70             self.callback(os.path.join(dirname, filename))
           71         d = LabelDialog(_('Enter wallet name'), '', cb)
           72         d.open()