You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
171 lines
5.2 KiB
171 lines
5.2 KiB
from kivy.app import App
|
|
from kivy.factory import Factory
|
|
from kivy.properties import ObjectProperty
|
|
from kivy.lang import Builder
|
|
|
|
from electrum.i18n import _
|
|
from electrum.util import base_units
|
|
from electrum.i18n import languages, set_language
|
|
|
|
Builder.load_string('''
|
|
<SettingsItem@ButtonBehavior+BoxLayout>
|
|
orientation: 'vertical'
|
|
title: ''
|
|
description: ''
|
|
size_hint: 1, 1
|
|
Label:
|
|
id: title
|
|
text: self.parent.title
|
|
size_hint: 1, 1
|
|
bold: True
|
|
text_size: self.size
|
|
halign: 'left'
|
|
Label:
|
|
text: self.parent.description
|
|
size_hint: 1, 1
|
|
text_size: self.width, None
|
|
color: 0.8, 0.8, 0.8, 1
|
|
halign: 'left'
|
|
|
|
<PluginItem@ButtonBehavior+BoxLayout>
|
|
orientation: 'vertical'
|
|
title: ''
|
|
description: ''
|
|
size_hint: 1, 1
|
|
BoxLayout:
|
|
orientation: 'horizontal'
|
|
Label:
|
|
id: title
|
|
text: self.parent.title
|
|
size_hint: 1, 1
|
|
bold: True
|
|
text_size: self.size
|
|
halign: 'left'
|
|
Switch:
|
|
id: sw
|
|
name: ''
|
|
Label:
|
|
text: self.parent.description
|
|
size_hint: 1, 1
|
|
text_size: self.width, None
|
|
color: 0.8, 0.8, 0.8, 1
|
|
halign: 'left'
|
|
|
|
<SettingsDialog@Popup>
|
|
id: settings
|
|
title: _('Settings')
|
|
BoxLayout:
|
|
orientation: 'vertical'
|
|
SettingsItem:
|
|
lang: settings.get_language_name()
|
|
title: _('Language') + ': %s'%self.lang
|
|
description: _("Language")
|
|
on_release:
|
|
settings.language_dialog(self)
|
|
CardSeparator
|
|
SettingsItem:
|
|
title: _('PIN Code') + ': %s'%('ON' if app.wallet.use_encryption else 'OFF')
|
|
description: _("Your PIN code will be required in order to spend bitcoins.")
|
|
on_release:
|
|
app.change_password()
|
|
self.title = _('PIN Code') + ' (%s)'%('ON' if app.wallet.use_encryption else 'OFF')
|
|
CardSeparator
|
|
SettingsItem:
|
|
bu: app.base_unit
|
|
title: _('Denomination') + ': ' + self.bu
|
|
description: _("Base unit for Bitcoin amounts.")
|
|
on_release:
|
|
settings.unit_dialog(self)
|
|
CardSeparator
|
|
SettingsItem:
|
|
title: _('Fiat Currency') + ': ' + app.fiat_unit
|
|
description: "Select the local fiat currency."
|
|
on_release:
|
|
settings.fiat_dialog(self)
|
|
CardSeparator
|
|
SettingsItem:
|
|
title: _('OpenAlias')
|
|
description: "Email-like address."
|
|
on_release:
|
|
settings.openalias_dialog()
|
|
Widget:
|
|
size_hint: 1, 1
|
|
BoxLayout:
|
|
Widget:
|
|
size_hint: 0.5, None
|
|
Button:
|
|
size_hint: 0.5, None
|
|
height: '48dp'
|
|
text: _('OK')
|
|
on_release:
|
|
settings.dismiss()
|
|
''')
|
|
|
|
class SettingsDialog(Factory.Popup):
|
|
|
|
def __init__(self, app):
|
|
self.app = app
|
|
Factory.Popup.__init__(self)
|
|
|
|
def get_language_name(self):
|
|
return languages.get(self.app.electrum_config.get('language', 'en_UK'), '')
|
|
|
|
def language_dialog(self, item):
|
|
from choice_dialog import ChoiceDialog
|
|
l = self.app.electrum_config.get('language', 'en_UK')
|
|
def cb(key):
|
|
self.app.electrum_config.set_key("language", key, True)
|
|
item.lang = self.get_language_name()
|
|
set_language(key)
|
|
d = ChoiceDialog(_('Language'), languages, l, cb)
|
|
d.open()
|
|
|
|
def unit_dialog(self, item):
|
|
from choice_dialog import ChoiceDialog
|
|
def cb(text):
|
|
self.app._set_bu(text)
|
|
item.bu = self.app.base_unit
|
|
d = ChoiceDialog(_('Denomination'), dict(map(lambda x: (x,x), base_units)), self.app.base_unit, cb)
|
|
d.open()
|
|
|
|
def fiat_dialog(self, item):
|
|
from choice_dialog import ChoiceDialog
|
|
def cb(text):
|
|
pass
|
|
d = ChoiceDialog(_('Fiat Currency'), {}, '', cb)
|
|
d.open()
|
|
|
|
def openalias_dialog(self):
|
|
from label_dialog import LabelDialog
|
|
def callback(text):
|
|
pass
|
|
d = LabelDialog(_('OpenAlias'), '', callback)
|
|
d.open()
|
|
|
|
|
|
def show_plugins(self, plugins_list):
|
|
|
|
def on_active(sw, value):
|
|
self.plugins.toggle_enabled(self.electrum_config, sw.name)
|
|
run_hook('init_kivy', self)
|
|
|
|
for item in self.plugins.descriptions:
|
|
if 'kivy' not in item.get('available_for', []):
|
|
continue
|
|
name = item.get('__name__')
|
|
label = Label(text=item.get('fullname'), height='48db', size_hint=(1, None))
|
|
plugins_list.add_widget(label)
|
|
sw = Switch()
|
|
sw.name = name
|
|
p = self.plugins.get(name)
|
|
sw.active = (p is not None) and p.is_enabled()
|
|
sw.bind(active=on_active)
|
|
plugins_list.add_widget(sw)
|
|
|
|
class PluginItem():
|
|
def __init__(self, name):
|
|
p = self.plugins.get(name)
|
|
sw.active = (p is not None) and p.is_enabled()
|
|
sw.bind(active=on_active)
|
|
plugins_list.add_widget(sw)
|
|
|
|
|