1Popup:
2    id: nd
3    title: _('Proxy')
4    BoxLayout:
5        orientation: 'vertical'
6        padding: '10dp'
7        spacing: '10dp'
8        GridLayout:
9            cols: 2
10            Label:
11                text: _('Proxy mode')
12            Spinner:
13                id: mode
14                height: '48dp'
15                size_hint_y: None
16                text: app.proxy_config.get('mode', 'none')
17                values: ['none', 'socks4', 'socks5']
18            Label:
19                text: _('Host')
20            TextInput:
21                id: host
22                multiline: False
23                height: '48dp'
24                size_hint_y: None
25                text: app.proxy_config.get('host', '')
26                disabled: mode.text == 'none'
27            Label:
28                text: _('Port')
29            TextInput:
30                id: port
31                multiline: False
32                input_type: 'number'
33                height: '48dp'
34                size_hint_y: None
35                text: app.proxy_config.get('port', '')
36                disabled: mode.text == 'none'
37            Label:
38                text: _('Username')
39            TextInput:
40                id: user
41                multiline: False
42                height: '48dp'
43                size_hint_y: None
44                text: app.proxy_config.get('user', '')
45                disabled: mode.text == 'none'
46            Label:
47                text: _('Password')
48            TextInput:
49                id: password
50                multiline: False
51                password: True
52                height: '48dp'
53                size_hint_y: None
54                text: app.proxy_config.get('password', '')
55                disabled: mode.text == 'none'
56        Widget:
57            size_hint: 1, 0.1
58        BoxLayout:
59            Widget:
60                size_hint: 0.5, None
61            Button:
62                size_hint: 0.5, None
63                height: '48dp'
64                text: _('OK')
65                on_release:
66                    net_params = app.network.get_parameters()
67                    proxy = {}
68                    proxy['mode']=str(root.ids.mode.text).lower()
69                    proxy['host']=str(root.ids.host.text)
70                    proxy['port']=str(root.ids.port.text)
71                    proxy['user']=str(root.ids.user.text)
72                    proxy['password']=str(root.ids.password.text)
73                    if proxy['mode']=='none': proxy = None
74                    net_params = net_params._replace(proxy=proxy)
75                    app.network.run_from_another_thread(app.network.set_parameters(net_params))
76                    nd.dismiss()
77