add proxy settings to kivy GUI
This commit is contained in:
parent
2fcdd458b3
commit
59b0b51f24
|
@ -96,6 +96,12 @@ Builder.load_string('''
|
||||||
description: _("Network status and server selection.")
|
description: _("Network status and server selection.")
|
||||||
action: partial(root.network_dialog, self)
|
action: partial(root.network_dialog, self)
|
||||||
CardSeparator
|
CardSeparator
|
||||||
|
SettingsItem:
|
||||||
|
status: root.proxy_status()
|
||||||
|
title: _('Proxy') + ': ' + self.status
|
||||||
|
description: _("Proxy configuration.")
|
||||||
|
action: partial(root.proxy_dialog, self)
|
||||||
|
CardSeparator
|
||||||
SettingsItem:
|
SettingsItem:
|
||||||
status: 'ON' if bool(app.plugins.get('labels')) else 'OFF'
|
status: 'ON' if bool(app.plugins.get('labels')) else 'OFF'
|
||||||
title: _('Labels Sync') + ': ' + self.status
|
title: _('Labels Sync') + ': ' + self.status
|
||||||
|
@ -137,6 +143,7 @@ class SettingsDialog(Factory.Popup):
|
||||||
self._fee_dialog = None
|
self._fee_dialog = None
|
||||||
self._rbf_dialog = None
|
self._rbf_dialog = None
|
||||||
self._network_dialog = None
|
self._network_dialog = None
|
||||||
|
self._proxy_dialog = None
|
||||||
self._language_dialog = None
|
self._language_dialog = None
|
||||||
self._unit_dialog = None
|
self._unit_dialog = None
|
||||||
self._coinselect_dialog = None
|
self._coinselect_dialog = None
|
||||||
|
@ -195,10 +202,39 @@ class SettingsDialog(Factory.Popup):
|
||||||
if value:
|
if value:
|
||||||
self.app.network.blockchain.set_checkpoint(height, value)
|
self.app.network.blockchain.set_checkpoint(height, value)
|
||||||
item.status = self.checkpoint_status()
|
item.status = self.checkpoint_status()
|
||||||
|
|
||||||
self._checkpoint_dialog = CheckpointDialog(self.app.network, callback)
|
self._checkpoint_dialog = CheckpointDialog(self.app.network, callback)
|
||||||
self._checkpoint_dialog.open()
|
self._checkpoint_dialog.open()
|
||||||
|
|
||||||
|
def proxy_status(self):
|
||||||
|
server, port, protocol, proxy, auto_connect = self.app.network.get_parameters()
|
||||||
|
return proxy.get('host') +':' + proxy.get('port') if proxy else _('None')
|
||||||
|
|
||||||
|
def proxy_dialog(self, item, dt):
|
||||||
|
if self._proxy_dialog is None:
|
||||||
|
server, port, protocol, proxy, auto_connect = self.app.network.get_parameters()
|
||||||
|
def callback(popup):
|
||||||
|
if popup.ids.mode.text != 'None':
|
||||||
|
proxy = {
|
||||||
|
'mode':popup.ids.mode.text,
|
||||||
|
'host':popup.ids.host.text,
|
||||||
|
'port':popup.ids.port.text,
|
||||||
|
'user':popup.ids.user.text,
|
||||||
|
'password':popup.ids.password.text
|
||||||
|
}
|
||||||
|
else:
|
||||||
|
proxy = None
|
||||||
|
self.app.network.set_parameters(server, port, protocol, proxy, auto_connect)
|
||||||
|
item.status = self.proxy_status()
|
||||||
|
popup = Builder.load_file('gui/kivy/uix/ui_screens/proxy.kv')
|
||||||
|
popup.ids.mode.text = proxy.get('mode') if proxy else 'None'
|
||||||
|
popup.ids.host.text = proxy.get('host') if proxy else ''
|
||||||
|
popup.ids.port.text = proxy.get('port') if proxy else ''
|
||||||
|
popup.ids.user.text = proxy.get('user') if proxy else ''
|
||||||
|
popup.ids.password.text = proxy.get('password') if proxy else ''
|
||||||
|
popup.on_dismiss = lambda: callback(popup)
|
||||||
|
self._proxy_dialog = popup
|
||||||
|
self._proxy_dialog.open()
|
||||||
|
|
||||||
def network_dialog(self, item, dt):
|
def network_dialog(self, item, dt):
|
||||||
if self._network_dialog is None:
|
if self._network_dialog is None:
|
||||||
server, port, protocol, proxy, auto_connect = self.app.network.get_parameters()
|
server, port, protocol, proxy, auto_connect = self.app.network.get_parameters()
|
||||||
|
|
|
@ -0,0 +1,60 @@
|
||||||
|
Popup:
|
||||||
|
id: nd
|
||||||
|
title: _('Proxy')
|
||||||
|
BoxLayout:
|
||||||
|
orientation: 'vertical'
|
||||||
|
padding: '10dp'
|
||||||
|
spacing: '10dp'
|
||||||
|
GridLayout:
|
||||||
|
cols: 2
|
||||||
|
Label:
|
||||||
|
text: _('Proxy mode')
|
||||||
|
Spinner:
|
||||||
|
id: mode
|
||||||
|
height: '48dp'
|
||||||
|
size_hint_y: None
|
||||||
|
text: ''
|
||||||
|
values: ['None', 'socks4', 'socks5', 'http']
|
||||||
|
Label:
|
||||||
|
text: _('Host')
|
||||||
|
TextInput:
|
||||||
|
id: host
|
||||||
|
height: '48dp'
|
||||||
|
size_hint_y: None
|
||||||
|
text: ''
|
||||||
|
disabled: mode.text == 'None'
|
||||||
|
Label:
|
||||||
|
text: _('Port')
|
||||||
|
TextInput:
|
||||||
|
id: port
|
||||||
|
height: '48dp'
|
||||||
|
size_hint_y: None
|
||||||
|
text: ''
|
||||||
|
disabled: mode.text == 'None'
|
||||||
|
Label:
|
||||||
|
text: _('Username')
|
||||||
|
TextInput:
|
||||||
|
id: user
|
||||||
|
height: '48dp'
|
||||||
|
size_hint_y: None
|
||||||
|
text: ''
|
||||||
|
disabled: mode.text == 'None'
|
||||||
|
Label:
|
||||||
|
text: _('Password')
|
||||||
|
TextInput:
|
||||||
|
id: password
|
||||||
|
height: '48dp'
|
||||||
|
size_hint_y: None
|
||||||
|
text: ''
|
||||||
|
disabled: mode.text == 'None'
|
||||||
|
Widget:
|
||||||
|
size_hint: 1, 0.1
|
||||||
|
BoxLayout:
|
||||||
|
Widget:
|
||||||
|
size_hint: 0.5, None
|
||||||
|
Button:
|
||||||
|
size_hint: 0.5, None
|
||||||
|
height: '48dp'
|
||||||
|
text: _('OK')
|
||||||
|
on_release:
|
||||||
|
nd.dismiss()
|
|
@ -318,12 +318,6 @@ class NetworkChoiceLayout(object):
|
||||||
host = str(self.server_host.text())
|
host = str(self.server_host.text())
|
||||||
port = str(self.server_port.text())
|
port = str(self.server_port.text())
|
||||||
protocol = 's' if self.ssl_cb.isChecked() else 't'
|
protocol = 's' if self.ssl_cb.isChecked() else 't'
|
||||||
# sanitize
|
|
||||||
try:
|
|
||||||
deserialize_server(serialize_server(host, port, protocol))
|
|
||||||
except:
|
|
||||||
return
|
|
||||||
|
|
||||||
if self.proxy_mode.currentText() != 'NONE':
|
if self.proxy_mode.currentText() != 'NONE':
|
||||||
proxy = { 'mode':str(self.proxy_mode.currentText()).lower(),
|
proxy = { 'mode':str(self.proxy_mode.currentText()).lower(),
|
||||||
'host':str(self.proxy_host.text()),
|
'host':str(self.proxy_host.text()),
|
||||||
|
@ -332,9 +326,7 @@ class NetworkChoiceLayout(object):
|
||||||
'password':str(self.proxy_password.text())}
|
'password':str(self.proxy_password.text())}
|
||||||
else:
|
else:
|
||||||
proxy = None
|
proxy = None
|
||||||
|
|
||||||
auto_connect = self.autoconnect_cb.isChecked()
|
auto_connect = self.autoconnect_cb.isChecked()
|
||||||
|
|
||||||
self.network.set_parameters(host, port, protocol, proxy, auto_connect)
|
self.network.set_parameters(host, port, protocol, proxy, auto_connect)
|
||||||
self.network.blockchain.set_checkpoint(self.checkpoint_height, self.checkpoint_value)
|
self.network.blockchain.set_checkpoint(self.checkpoint_height, self.checkpoint_value)
|
||||||
|
|
||||||
|
|
|
@ -461,13 +461,20 @@ class Network(util.DaemonThread):
|
||||||
def set_parameters(self, host, port, protocol, proxy, auto_connect):
|
def set_parameters(self, host, port, protocol, proxy, auto_connect):
|
||||||
proxy_str = serialize_proxy(proxy)
|
proxy_str = serialize_proxy(proxy)
|
||||||
server = serialize_server(host, port, protocol)
|
server = serialize_server(host, port, protocol)
|
||||||
|
# sanitize parameters
|
||||||
|
try:
|
||||||
|
deserialize_server(serialize_server(host, port, protocol))
|
||||||
|
if proxy:
|
||||||
|
proxy_modes.index(proxy["mode"]) + 1
|
||||||
|
int(proxy['port'])
|
||||||
|
except:
|
||||||
|
return
|
||||||
self.config.set_key('auto_connect', auto_connect, False)
|
self.config.set_key('auto_connect', auto_connect, False)
|
||||||
self.config.set_key("proxy", proxy_str, False)
|
self.config.set_key("proxy", proxy_str, False)
|
||||||
self.config.set_key("server", server, True)
|
self.config.set_key("server", server, True)
|
||||||
# abort if changes were not allowed by config
|
# abort if changes were not allowed by config
|
||||||
if self.config.get('server') != server or self.config.get('proxy') != proxy_str:
|
if self.config.get('server') != server or self.config.get('proxy') != proxy_str:
|
||||||
return
|
return
|
||||||
|
|
||||||
self.auto_connect = auto_connect
|
self.auto_connect = auto_connect
|
||||||
if self.proxy != proxy or self.protocol != protocol:
|
if self.proxy != proxy or self.protocol != protocol:
|
||||||
# Restart the network defaulting to the given server
|
# Restart the network defaulting to the given server
|
||||||
|
|
Loading…
Reference in New Issue