electrum-bitcoinprivate/gui/kivy/uix/dialogs/settings.py

181 lines
5.7 KiB
Python
Raw Normal View History

2015-12-16 02:53:37 -08:00
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
2016-01-19 03:37:40 -08:00
from electrum.plugins import run_hook
2015-12-16 02:53:37 -08:00
Builder.load_string('''
2015-12-18 01:53:50 -08:00
<SettingsItem@ButtonBehavior+BoxLayout>
orientation: 'vertical'
title: ''
description: ''
size_hint: 1, 1
Label:
id: title
text: self.parent.title
bold: True
halign: 'left'
size_hint: 1, 1
text_size: self.width, None
2016-01-19 03:37:40 -08:00
Label:
text: self.parent.description
2015-12-18 01:53:50 -08:00
color: 0.8, 0.8, 0.8, 1
2016-01-19 03:37:40 -08:00
size_hint: 1, 1
2015-12-18 01:53:50 -08:00
halign: 'left'
2016-01-19 03:37:40 -08:00
text_size: self.width, None
2015-12-18 01:53:50 -08:00
<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'
2015-12-16 02:53:37 -08:00
<SettingsDialog@Popup>
id: settings
title: _('Settings')
BoxLayout:
orientation: 'vertical'
SettingsItem:
lang: settings.get_language_name()
2015-12-18 01:53:50 -08:00
title: _('Language') + ': %s'%self.lang
2015-12-16 02:53:37 -08:00
description: _("Language")
on_release:
settings.language_dialog(self)
CardSeparator
SettingsItem:
2016-01-19 03:37:40 -08:00
status: 'ON' if app.wallet.use_encryption else 'OFF'
title: _('PIN code') + ': ' + self.status
description: _("Change your PIN code.")
2015-12-16 02:53:37 -08:00
on_release:
app.change_password()
2016-01-19 03:37:40 -08:00
self.status = 'ON' if app.wallet.use_encryption else 'OFF'
2015-12-16 02:53:37 -08:00
CardSeparator
SettingsItem:
bu: app.base_unit
2015-12-18 01:53:50 -08:00
title: _('Denomination') + ': ' + self.bu
2015-12-16 02:53:37 -08:00
description: _("Base unit for Bitcoin amounts.")
on_release:
settings.unit_dialog(self)
CardSeparator
SettingsItem:
2015-12-18 01:53:50 -08:00
title: _('Fiat Currency') + ': ' + app.fiat_unit
2015-12-16 02:53:37 -08:00
description: "Select the local fiat currency."
on_release:
settings.fiat_dialog(self)
CardSeparator
2016-01-19 03:37:40 -08:00
SettingsItem:
status: 'ON' if bool(app.plugins.get('labels')) else 'OFF'
title: _('Labels Sync') + ': ' + self.status
description: "Synchronize labels."
on_release:
settings.labelsync_dialog(self)
CardSeparator
2015-12-16 02:53:37 -08:00
SettingsItem:
title: _('OpenAlias')
2016-01-19 03:37:40 -08:00
description: "DNS record that stores one of your Bitcoin addresses."
2015-12-16 02:53:37 -08:00
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
2016-01-19 03:37:40 -08:00
self.plugins = self.app.plugins
self.config = self.app.electrum_config
2015-12-16 02:53:37 -08:00
Factory.Popup.__init__(self)
def get_language_name(self):
2016-01-19 03:37:40 -08:00
return languages.get(self.config.get('language', 'en_UK'), '')
2015-12-16 02:53:37 -08:00
def language_dialog(self, item):
from choice_dialog import ChoiceDialog
2016-01-19 03:37:40 -08:00
l = self.config.get('language', 'en_UK')
2015-12-16 02:53:37 -08:00
def cb(key):
2016-01-19 03:37:40 -08:00
self.config.set_key("language", key, True)
2015-12-16 02:53:37 -08:00
item.lang = self.get_language_name()
2015-12-18 01:53:50 -08:00
set_language(key)
2015-12-16 02:53:37 -08:00
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):
2016-01-19 03:37:40 -08:00
if text == 'None':
self.plugins.disable('exchange_rate')
else:
self.config.set_key('currency', text, True)
p = self.app.plugins.enable('exchange_rate')
p.init_kivy(self.app)
d = ChoiceDialog(_('Fiat Currency'), { 'None': 'None', 'USD':'USD', 'EUR':'EUR'}, '', cb)
2015-12-16 02:53:37 -08:00
d.open()
def openalias_dialog(self):
from label_dialog import LabelDialog
def callback(text):
pass
d = LabelDialog(_('OpenAlias'), '', callback)
d.open()
2015-12-18 01:53:50 -08:00
2016-01-19 03:37:40 -08:00
def labelsync_dialog(self, label):
from checkbox_dialog import CheckBoxDialog
def callback(status):
self.plugins.enable('labels') if status else self.plugins.disable('labels')
status = bool(self.plugins.get('labels'))
label.status = 'ON' if status else 'OFF'
status = bool(self.plugins.get('labels'))
descr = _('Save your labels on a remote server, and synchronizes them between various instances of your wallet.')
d = CheckBoxDialog(_('Labels Sync'), descr, status, callback)
d.open()
2015-12-18 01:53:50 -08:00
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)