mirror of
https://github.com/liberatedsystems/openCom-Companion.git
synced 2024-12-01 17:40:36 +01:00
1982 lines
81 KiB
Python
1982 lines
81 KiB
Python
root_layout = """
|
|
#: import NoTransition kivy.uix.screenmanager.NoTransition
|
|
#: import SlideTransition kivy.uix.screenmanager.SlideTransition
|
|
|
|
MDNavigationLayout:
|
|
md_bg_color: app.theme_cls.bg_darkest
|
|
|
|
ScreenManager:
|
|
id: screen_manager
|
|
transition: SlideTransition()
|
|
# transition: NoTransition()
|
|
|
|
MDScreen:
|
|
name: "starting_screen"
|
|
|
|
AnchorLayout:
|
|
padding: [dp(0), dp(72), dp(0), dp(0)]
|
|
anchor_x: "center"
|
|
anchor_y: "center"
|
|
|
|
BoxLayout:
|
|
spacing: dp(36)
|
|
orientation: 'vertical'
|
|
size_hint_y: None
|
|
|
|
MDLabel:
|
|
id: connecting_info
|
|
halign: "center"
|
|
text: "Please Wait"
|
|
font_size: "32dp"
|
|
|
|
MDIconButton:
|
|
pos_hint: {"center_x": .5, "center_y": .5}
|
|
icon: "transit-connection-variant"
|
|
icon_size: "92dp"
|
|
|
|
MDLabel:
|
|
id: connecting_status
|
|
halign: "center"
|
|
text: "Substantiating Reticulum"
|
|
font_size: "32dp"
|
|
|
|
|
|
MDScreen:
|
|
name: "exit_screen"
|
|
|
|
AnchorLayout:
|
|
padding: [dp(0), dp(72), dp(0), dp(0)]
|
|
anchor_x: "center"
|
|
anchor_y: "center"
|
|
|
|
BoxLayout:
|
|
spacing: dp(36)
|
|
orientation: 'vertical'
|
|
size_hint_y: None
|
|
|
|
MDLabel:
|
|
id: exiting_info
|
|
halign: "center"
|
|
text: "Please Wait"
|
|
font_size: "32dp"
|
|
|
|
MDIconButton:
|
|
pos_hint: {"center_x": .5, "center_y": .5}
|
|
icon: "waves"
|
|
icon_size: "92dp"
|
|
|
|
MDLabel:
|
|
id: exiting_status
|
|
halign: "center"
|
|
text: "Dissolving Reticulum"
|
|
font_size: "32dp"
|
|
|
|
|
|
MDScreen:
|
|
name: "conversations_screen"
|
|
|
|
BoxLayout:
|
|
orientation: "vertical"
|
|
|
|
MDTopAppBar:
|
|
title: "Conversations"
|
|
anchor_title: "left"
|
|
elevation: 2
|
|
left_action_items:
|
|
[
|
|
['menu', lambda x: nav_drawer.set_state("open")],
|
|
]
|
|
right_action_items:
|
|
[
|
|
['qrcode', lambda x: root.ids.screen_manager.app.ingest_lxm_action(self)],
|
|
['webhook', lambda x: root.ids.screen_manager.app.connectivity_status(self)],
|
|
['access-point', lambda x: root.ids.screen_manager.app.announce_now_action(self)],
|
|
['email-sync', lambda x: root.ids.screen_manager.app.lxmf_sync_action(self)],
|
|
['account-plus', lambda x: root.ids.screen_manager.app.new_conversation_action(self)],
|
|
]
|
|
|
|
ScrollView:
|
|
id: conversations_scrollview
|
|
|
|
|
|
MDScreen:
|
|
name: "messages_screen"
|
|
|
|
BoxLayout:
|
|
orientation: "vertical"
|
|
|
|
MDTopAppBar:
|
|
id: messages_toolbar
|
|
anchor_title: "left"
|
|
title: "Messages"
|
|
elevation: 2
|
|
left_action_items:
|
|
[['menu', lambda x: nav_drawer.set_state("open")]]
|
|
right_action_items:
|
|
[
|
|
['lan-connect', lambda x: root.ids.screen_manager.app.message_propagation_action(self)],
|
|
['close', lambda x: root.ids.screen_manager.app.close_messages_action(self)],
|
|
]
|
|
|
|
ScrollView:
|
|
id: messages_scrollview
|
|
do_scroll_x: False
|
|
do_scroll_y: True
|
|
|
|
BoxLayout:
|
|
id: no_keys_part
|
|
orientation: "vertical"
|
|
padding: [dp(16), dp(0), dp(16), dp(16)]
|
|
spacing: dp(24)
|
|
size_hint_y: None
|
|
height: self.minimum_height + dp(64)
|
|
|
|
MDLabel:
|
|
id: nokeys_text
|
|
text: ""
|
|
|
|
MDRectangleFlatIconButton:
|
|
icon: "key-wireless"
|
|
text: "Query Network For Keys"
|
|
on_release: root.ids.screen_manager.app.key_query_action(self)
|
|
|
|
|
|
BoxLayout:
|
|
id: message_input_part
|
|
padding: [dp(16), dp(0), dp(16), dp(16)]
|
|
spacing: dp(24)
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
|
|
MDTextField:
|
|
id: message_text
|
|
multiline: True
|
|
hint_text: "Write message"
|
|
mode: "rectangle"
|
|
max_height: dp(100)
|
|
|
|
MDRectangleFlatIconButton:
|
|
id: message_send_button
|
|
icon: "transfer-up"
|
|
text: "Send"
|
|
padding: [dp(10), dp(13), dp(10), dp(14)]
|
|
icon_size: dp(24)
|
|
font_size: dp(16)
|
|
on_release: root.ids.screen_manager.app.message_send_action(self)
|
|
|
|
|
|
MDScreen:
|
|
name: "broadcasts_screen"
|
|
|
|
BoxLayout:
|
|
orientation: "vertical"
|
|
|
|
MDTopAppBar:
|
|
title: "Local Broadcasts"
|
|
anchor_title: "left"
|
|
elevation: 2
|
|
left_action_items:
|
|
[['menu', lambda x: nav_drawer.set_state("open")]]
|
|
right_action_items:
|
|
[
|
|
['close', lambda x: root.ids.screen_manager.app.close_any_action(self)],
|
|
]
|
|
|
|
ScrollView:
|
|
id: broadcasts_scrollview
|
|
|
|
MDBoxLayout:
|
|
orientation: "vertical"
|
|
spacing: "24dp"
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
padding: [dp(35), dp(35), dp(35), dp(35)]
|
|
|
|
MDLabel:
|
|
id: broadcasts_info
|
|
markup: True
|
|
text: ""
|
|
size_hint_y: None
|
|
text_size: self.width, None
|
|
height: self.texture_size[1]
|
|
|
|
|
|
MDScreen:
|
|
name: "connectivity_screen"
|
|
|
|
BoxLayout:
|
|
orientation: "vertical"
|
|
|
|
MDTopAppBar:
|
|
title: "Connectivity"
|
|
anchor_title: "left"
|
|
elevation: 2
|
|
left_action_items:
|
|
[['menu', lambda x: nav_drawer.set_state("open")]]
|
|
right_action_items:
|
|
[
|
|
['close', lambda x: root.ids.screen_manager.app.close_connectivity_action(self)],
|
|
]
|
|
|
|
ScrollView:
|
|
id: connectivity_scrollview
|
|
|
|
MDBoxLayout:
|
|
orientation: "vertical"
|
|
spacing: "10dp"
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
padding: [dp(28), dp(48), dp(28), dp(16)]
|
|
|
|
MDLabel:
|
|
text: "Configuring Connectivity\\n"
|
|
font_style: "H6"
|
|
|
|
MDLabel:
|
|
id: connectivity_info
|
|
markup: True
|
|
text: ""
|
|
size_hint_y: None
|
|
text_size: self.width, None
|
|
height: self.texture_size[1]
|
|
|
|
MDBoxLayout:
|
|
orientation: "horizontal"
|
|
padding: [0,0,dp(24),0]
|
|
size_hint_y: None
|
|
height: dp(24)
|
|
|
|
MDLabel:
|
|
id: connectivity_local_label
|
|
text: "Connect via local WiFi/Ethernet"
|
|
font_style: "H6"
|
|
|
|
MDSwitch:
|
|
id: connectivity_use_local
|
|
pos_hint: {"center_y": 0.3}
|
|
active: False
|
|
|
|
MDBoxLayout:
|
|
id: connectivity_local_fields
|
|
orientation: "vertical"
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
padding: [0, 0, 0, dp(32)]
|
|
|
|
MDTextField:
|
|
id: connectivity_local_groupid
|
|
hint_text: "Optional WiFi/Ethernet Group ID"
|
|
text: ""
|
|
max_text_length: 128
|
|
font_size: dp(24)
|
|
|
|
MDTextField:
|
|
id: connectivity_local_ifac_netname
|
|
hint_text: "Optional IFAC network name"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
MDTextField:
|
|
id: connectivity_local_ifac_passphrase
|
|
hint_text: "Optional IFAC passphrase"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
|
|
MDBoxLayout:
|
|
orientation: "horizontal"
|
|
padding: [0,0,dp(24),0]
|
|
size_hint_y: None
|
|
height: dp(24)
|
|
|
|
MDLabel:
|
|
id: connectivity_tcp_label
|
|
text: "Connect via TCP"
|
|
font_style: "H6"
|
|
|
|
MDSwitch:
|
|
id: connectivity_use_tcp
|
|
pos_hint: {"center_y": 0.3}
|
|
active: False
|
|
|
|
|
|
MDBoxLayout:
|
|
id: connectivity_tcp_fields
|
|
orientation: "vertical"
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
padding: [0, 0, 0, dp(32)]
|
|
|
|
MDTextField:
|
|
id: connectivity_tcp_host
|
|
hint_text: "TCP Host"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
MDTextField:
|
|
id: connectivity_tcp_port
|
|
hint_text: "TCP Port"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
MDTextField:
|
|
id: connectivity_tcp_ifac_netname
|
|
hint_text: "Optional IFAC network name"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
MDTextField:
|
|
id: connectivity_tcp_ifac_passphrase
|
|
hint_text: "Optional IFAC passphrase"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
|
|
MDBoxLayout:
|
|
orientation: "horizontal"
|
|
padding: [0,0,dp(24),0]
|
|
size_hint_y: None
|
|
height: dp(24)
|
|
|
|
MDLabel:
|
|
id: connectivity_i2p_label
|
|
text: "Connect via I2P"
|
|
font_style: "H6"
|
|
|
|
MDSwitch:
|
|
id: connectivity_use_i2p
|
|
pos_hint: {"center_y": 0.3}
|
|
active: False
|
|
|
|
|
|
MDBoxLayout:
|
|
id: connectivity_i2p_fields
|
|
orientation: "vertical"
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
padding: [0, 0, 0, dp(32)]
|
|
|
|
MDTextField:
|
|
id: connectivity_i2p_b32
|
|
hint_text: "I2P B32"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
MDTextField:
|
|
id: connectivity_i2p_ifac_netname
|
|
hint_text: "Optional IFAC network name"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
MDTextField:
|
|
id: connectivity_i2p_ifac_passphrase
|
|
hint_text: "Optional IFAC passphrase"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
|
|
MDBoxLayout:
|
|
orientation: "horizontal"
|
|
padding: [0,0,dp(24),0]
|
|
size_hint_y: None
|
|
height: dp(24)
|
|
|
|
MDLabel:
|
|
id: connectivity_rnode_label
|
|
text: "Connect via RNode"
|
|
font_style: "H6"
|
|
disabled: False
|
|
|
|
MDSwitch:
|
|
id: connectivity_use_rnode
|
|
active: False
|
|
pos_hint: {"center_y": 0.3}
|
|
disabled: False
|
|
|
|
MDBoxLayout:
|
|
id: connectivity_rnode_fields
|
|
orientation: "vertical"
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
padding: [0, 0, 0, dp(32)]
|
|
|
|
MDTextField:
|
|
id: connectivity_rnode_ifac_netname
|
|
hint_text: "Optional IFAC network name"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
MDTextField:
|
|
id: connectivity_rnode_ifac_passphrase
|
|
hint_text: "Optional IFAC passphrase"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
|
|
MDBoxLayout:
|
|
orientation: "horizontal"
|
|
padding: [0,0,dp(24),0]
|
|
size_hint_y: None
|
|
height: dp(24)
|
|
|
|
MDLabel:
|
|
id: connectivity_modem_label
|
|
text: "Connect via Radio Modem"
|
|
font_style: "H6"
|
|
disabled: False
|
|
|
|
MDSwitch:
|
|
id: connectivity_use_modem
|
|
active: False
|
|
pos_hint: {"center_y": 0.3}
|
|
disabled: False
|
|
|
|
MDBoxLayout:
|
|
id: connectivity_modem_fields
|
|
orientation: "vertical"
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
padding: [0, 0, 0, dp(32)]
|
|
|
|
MDTextField:
|
|
id: connectivity_modem_ifac_netname
|
|
hint_text: "Optional IFAC network name"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
MDTextField:
|
|
id: connectivity_modem_ifac_passphrase
|
|
hint_text: "Optional IFAC passphrase"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
|
|
MDBoxLayout:
|
|
orientation: "horizontal"
|
|
padding: [0,0,dp(24),0]
|
|
size_hint_y: None
|
|
height: dp(24)
|
|
|
|
MDLabel:
|
|
id: connectivity_serial_label
|
|
text: "Connect via Serial Port"
|
|
font_style: "H6"
|
|
disabled: False
|
|
|
|
MDSwitch:
|
|
id: connectivity_use_serial
|
|
active: False
|
|
pos_hint: {"center_y": 0.3}
|
|
disabled: False
|
|
|
|
MDBoxLayout:
|
|
id: connectivity_serial_fields
|
|
orientation: "vertical"
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
padding: [0, 0, 0, dp(32)]
|
|
|
|
MDTextField:
|
|
id: connectivity_serial_ifac_netname
|
|
hint_text: "Optional IFAC network name"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
MDTextField:
|
|
id: connectivity_serial_ifac_passphrase
|
|
hint_text: "Optional IFAC passphrase"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
|
|
# MDBoxLayout:
|
|
# orientation: "horizontal"
|
|
# padding: [0,0,dp(24),0]
|
|
# size_hint_y: None
|
|
# height: dp(24)
|
|
|
|
# MDLabel:
|
|
# id: connectivity_bluetooth_label
|
|
# text: "Connect via Bluetooth"
|
|
# font_style: "H6"
|
|
# disabled: True
|
|
|
|
# MDSwitch:
|
|
# id: connectivity_use_bluetooth
|
|
# active: False
|
|
# pos_hint: {"center_y": 0.3}
|
|
# disabled: True
|
|
|
|
# MDBoxLayout:
|
|
# id: connectivity_bluetooth_fields
|
|
# orientation: "vertical"
|
|
# size_hint_y: None
|
|
# height: self.minimum_height
|
|
# padding: [0, 0, 0, dp(32)]
|
|
|
|
# MDTextField:
|
|
# id: connectivity_bluetooth_cid
|
|
# hint_text: "Bluetooth Pairing ID"
|
|
# text: ""
|
|
# font_size: dp(24)
|
|
# # disabled: True
|
|
|
|
MDBoxLayout:
|
|
orientation: "horizontal"
|
|
padding: [0,0,dp(24),0]
|
|
size_hint_y: None
|
|
height: dp(24)
|
|
|
|
MDLabel:
|
|
id: connectivity_transport_label
|
|
text: "Enable Reticulum Transport"
|
|
font_style: "H6"
|
|
# disabled: True
|
|
|
|
MDSwitch:
|
|
id: connectivity_enable_transport
|
|
active: False
|
|
pos_hint: {"center_y": 0.3}
|
|
# disabled: True
|
|
|
|
MDLabel:
|
|
id: connectivity_transport_info
|
|
markup: True
|
|
text: "Enabling Reticulum Transport will allow this device to route traffic between all enabled interfaces.\\n\\nFor general usage, this option should not be enabled, but it can be useful in situations where you want to share connectivity from one device to many others. An example of this could be sharing connectivity from a radio interface to other people on your local WiFi network.\\n\\nWhen enabled, you will be able to configure the interface mode for all interfaces configured on this device. For more information on this topic, refer to the Reticulum Manual."
|
|
size_hint_y: None
|
|
text_size: self.width, None
|
|
height: self.texture_size[1]
|
|
|
|
MDBoxLayout:
|
|
id: connectivity_transport_fields
|
|
orientation: "vertical"
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
padding: [0, 0, 0, dp(32)]
|
|
|
|
# MDLabel:
|
|
# id: connectivity_modes_info
|
|
# markup: True
|
|
# text: "With Transport enabled, you can configure the interface modes for any enabled interfaces. Changing interface modes affects how Reticulum processes traffic and announces. For more information, refer to the Reticulum Manual."
|
|
# size_hint_y: None
|
|
# text_size: self.width, None
|
|
# height: self.texture_size[1]
|
|
|
|
MDBoxLayout:
|
|
orientation: "horizontal"
|
|
spacing: "24dp"
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
padding: [dp(0), dp(12), dp(0), dp(12)]
|
|
|
|
MDTextField:
|
|
id: connectivity_local_ifmode
|
|
hint_text: "Local Interface Mode"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
MDTextField:
|
|
id: connectivity_tcp_ifmode
|
|
hint_text: "TCP Interface Mode"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
MDBoxLayout:
|
|
orientation: "horizontal"
|
|
spacing: "24dp"
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
padding: [dp(0), dp(12), dp(0), dp(12)]
|
|
|
|
MDTextField:
|
|
id: connectivity_i2p_ifmode
|
|
hint_text: "I2P Mode"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
MDTextField:
|
|
id: connectivity_rnode_ifmode
|
|
hint_text: "RNode Mode"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
MDBoxLayout:
|
|
orientation: "horizontal"
|
|
spacing: "24dp"
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
padding: [dp(0), dp(12), dp(0), dp(12)]
|
|
|
|
MDTextField:
|
|
id: connectivity_modem_ifmode
|
|
hint_text: "Modem Mode"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
MDTextField:
|
|
id: connectivity_serial_ifmode
|
|
hint_text: "Serial Mode"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
# MDTextField:
|
|
# id: connectivity_bluetooth_ifmode
|
|
# hint_text: "Bluetooth Mode"
|
|
# text: ""
|
|
# font_size: dp(24)
|
|
|
|
|
|
MDScreen:
|
|
name: "guide_screen"
|
|
|
|
BoxLayout:
|
|
orientation: "vertical"
|
|
|
|
MDTopAppBar:
|
|
title: "Guide"
|
|
anchor_title: "left"
|
|
elevation: 2
|
|
left_action_items:
|
|
[['menu', lambda x: nav_drawer.set_state("open")]]
|
|
right_action_items:
|
|
[
|
|
['close', lambda x: root.ids.screen_manager.app.close_guide_action(self)],
|
|
]
|
|
|
|
ScrollView:
|
|
id:guide_scrollview
|
|
|
|
MDBoxLayout:
|
|
orientation: "vertical"
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
padding: [dp(35), dp(16), dp(35), dp(16)]
|
|
|
|
MDLabel:
|
|
id: guide_info1
|
|
markup: True
|
|
text: ""
|
|
size_hint_y: None
|
|
text_size: self.width, None
|
|
height: self.texture_size[1]
|
|
|
|
MDLabel:
|
|
id: guide_info2
|
|
markup: True
|
|
text: ""
|
|
size_hint_y: None
|
|
text_size: self.width, None
|
|
height: self.texture_size[1]
|
|
|
|
MDLabel:
|
|
id: guide_info3
|
|
markup: True
|
|
text: ""
|
|
size_hint_y: None
|
|
text_size: self.width, None
|
|
height: self.texture_size[1]
|
|
|
|
MDLabel:
|
|
id: guide_info4
|
|
markup: True
|
|
text: ""
|
|
size_hint_y: None
|
|
text_size: self.width, None
|
|
height: self.texture_size[1]
|
|
|
|
MDLabel:
|
|
id: guide_info5
|
|
markup: True
|
|
text: ""
|
|
size_hint_y: None
|
|
text_size: self.width, None
|
|
height: self.texture_size[1]
|
|
|
|
MDLabel:
|
|
id: guide_info6
|
|
markup: True
|
|
text: ""
|
|
size_hint_y: None
|
|
text_size: self.width, None
|
|
height: self.texture_size[1]
|
|
|
|
MDLabel:
|
|
id: guide_info7
|
|
markup: True
|
|
text: ""
|
|
size_hint_y: None
|
|
text_size: self.width, None
|
|
height: self.texture_size[1]
|
|
|
|
MDLabel:
|
|
id: guide_info8
|
|
markup: True
|
|
text: ""
|
|
size_hint_y: None
|
|
text_size: self.width, None
|
|
height: self.texture_size[1]
|
|
|
|
MDLabel:
|
|
id: guide_info9
|
|
markup: True
|
|
text: ""
|
|
size_hint_y: None
|
|
text_size: self.width, None
|
|
height: self.texture_size[1]
|
|
|
|
|
|
MDScreen:
|
|
name: "information_screen"
|
|
|
|
BoxLayout:
|
|
orientation: "vertical"
|
|
|
|
MDTopAppBar:
|
|
title: "App & Version Information"
|
|
anchor_title: "left"
|
|
elevation: 2
|
|
left_action_items:
|
|
[['menu', lambda x: nav_drawer.set_state("open")]]
|
|
right_action_items:
|
|
[
|
|
['close', lambda x: root.ids.screen_manager.app.close_information_action(self)],
|
|
]
|
|
|
|
ScrollView:
|
|
id:information_scrollview
|
|
|
|
MDBoxLayout:
|
|
orientation: "vertical"
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
spacing: dp(35)
|
|
padding: [dp(35), dp(32), dp(35), dp(16)]
|
|
|
|
MDLabel:
|
|
id: information_info
|
|
markup: True
|
|
text: ""
|
|
size_hint_y: None
|
|
text_size: self.width, None
|
|
height: self.texture_size[1]
|
|
|
|
MDBoxLayout:
|
|
orientation: "vertical"
|
|
size_hint_y: None
|
|
size_hint_x: None
|
|
height: dp(256)
|
|
width: dp(256)
|
|
spacing: dp(0)
|
|
padding: [dp(0), dp(0), dp(0), dp(0)]
|
|
pos_hint: {"center_x": .5, "center_y": .5}
|
|
|
|
MDIcon:
|
|
pos_hint: {"center_x": .5, "center_y": .5}
|
|
id: information_logo
|
|
font_size: "256dp"
|
|
width: dp(256)
|
|
height: dp(256)
|
|
|
|
MDScreen:
|
|
name: "map_screen"
|
|
|
|
BoxLayout:
|
|
orientation: "vertical"
|
|
|
|
MDTopAppBar:
|
|
title: "Local Area Map"
|
|
anchor_title: "left"
|
|
elevation: 2
|
|
left_action_items:
|
|
[['menu', lambda x: nav_drawer.set_state("open")]]
|
|
right_action_items:
|
|
[
|
|
['close', lambda x: root.ids.screen_manager.app.close_any_action(self)],
|
|
]
|
|
|
|
ScrollView:
|
|
id:map_scrollview
|
|
|
|
MDBoxLayout:
|
|
orientation: "vertical"
|
|
spacing: "24dp"
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
padding: [dp(35), dp(35), dp(35), dp(35)]
|
|
|
|
|
|
MDLabel:
|
|
id: map_info
|
|
markup: True
|
|
text: ""
|
|
size_hint_y: None
|
|
text_size: self.width, None
|
|
height: self.texture_size[1]
|
|
|
|
|
|
MDScreen:
|
|
name: "keys_screen"
|
|
|
|
BoxLayout:
|
|
orientation: "vertical"
|
|
|
|
MDTopAppBar:
|
|
title: "Encryption Keys"
|
|
anchor_title: "left"
|
|
elevation: 2
|
|
left_action_items:
|
|
[['menu', lambda x: nav_drawer.set_state("open")]]
|
|
right_action_items:
|
|
[
|
|
['close', lambda x: root.ids.screen_manager.app.close_keys_action(self)],
|
|
]
|
|
|
|
ScrollView:
|
|
id:keys_scrollview
|
|
|
|
MDBoxLayout:
|
|
orientation: "vertical"
|
|
spacing: "24dp"
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
padding: [dp(35), dp(35), dp(35), dp(35)]
|
|
|
|
|
|
MDLabel:
|
|
id: keys_info
|
|
markup: True
|
|
text: ""
|
|
size_hint_y: None
|
|
text_size: self.width, None
|
|
height: self.texture_size[1]
|
|
|
|
MDRectangleFlatIconButton:
|
|
id: keys_display
|
|
icon: "eye"
|
|
text: "Display Identity Key"
|
|
padding: [dp(0), dp(14), dp(0), dp(14)]
|
|
icon_size: dp(24)
|
|
font_size: dp(16)
|
|
size_hint: [1.0, None]
|
|
on_release: root.ids.screen_manager.app.identity_display_action(self)
|
|
|
|
MDRectangleFlatIconButton:
|
|
id: keys_copy
|
|
icon: "file-key"
|
|
text: "Copy Key To Clipboard"
|
|
padding: [dp(0), dp(14), dp(0), dp(14)]
|
|
icon_size: dp(24)
|
|
font_size: dp(16)
|
|
size_hint: [1.0, None]
|
|
on_release: root.ids.screen_manager.app.identity_copy_action(self)
|
|
|
|
MDRectangleFlatIconButton:
|
|
id: keys_share
|
|
icon: "upload-lock"
|
|
text: "Send Key To Other App"
|
|
padding: [dp(0), dp(14), dp(0), dp(14)]
|
|
icon_size: dp(24)
|
|
font_size: dp(16)
|
|
size_hint: [1.0, None]
|
|
on_release: root.ids.screen_manager.app.identity_share_action(self)
|
|
|
|
MDBoxLayout:
|
|
orientation: "vertical"
|
|
# spacing: "24dp"
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
padding: [dp(0), dp(12), dp(0), dp(0)]
|
|
|
|
MDTextField:
|
|
id: key_restore_text
|
|
hint_text: "Enter base32 key for import"
|
|
mode: "rectangle"
|
|
# size_hint: [1.0, None]
|
|
pos_hint: {"center_x": .5}
|
|
|
|
MDRectangleFlatIconButton:
|
|
id: keys_restore
|
|
icon: "download-lock"
|
|
text: "Restore Identity From Key"
|
|
padding: [dp(0), dp(14), dp(0), dp(14)]
|
|
icon_size: dp(24)
|
|
font_size: dp(16)
|
|
size_hint: [1.0, None]
|
|
on_release: root.ids.screen_manager.app.identity_restore_action(self)
|
|
|
|
|
|
MDScreen:
|
|
name: "announces_screen"
|
|
|
|
BoxLayout:
|
|
orientation: "vertical"
|
|
|
|
MDTopAppBar:
|
|
title: "Announce Stream"
|
|
anchor_title: "left"
|
|
elevation: 2
|
|
left_action_items:
|
|
[['menu', lambda x: nav_drawer.set_state("open")]]
|
|
right_action_items:
|
|
[
|
|
['close', lambda x: root.ids.screen_manager.app.close_settings_action(self)],
|
|
]
|
|
# [['eye-off', lambda x: root.ids.screen_manager.app.announce_filter_action(self)]]
|
|
|
|
ScrollView:
|
|
id: announces_scrollview
|
|
|
|
MDBoxLayout:
|
|
orientation: "vertical"
|
|
spacing: "24dp"
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
padding: dp(64)
|
|
|
|
MDLabel:
|
|
id: announces_info
|
|
markup: True
|
|
text: ""
|
|
size_hint_y: None
|
|
text_size: self.width, None
|
|
height: self.texture_size[1]
|
|
|
|
|
|
MDScreen:
|
|
name: "settings_screen"
|
|
|
|
BoxLayout:
|
|
orientation: "vertical"
|
|
|
|
MDTopAppBar:
|
|
title: "Preferences"
|
|
anchor_title: "left"
|
|
elevation: 2
|
|
left_action_items:
|
|
[['menu', lambda x: nav_drawer.set_state("open")]]
|
|
right_action_items:
|
|
[
|
|
['close', lambda x: root.ids.screen_manager.app.close_settings_action(self)],
|
|
]
|
|
|
|
ScrollView:
|
|
id: settings_scrollview
|
|
|
|
MDBoxLayout:
|
|
orientation: "vertical"
|
|
spacing: 0
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
padding: [0, 0, 0, 0]
|
|
|
|
MDBoxLayout:
|
|
orientation: "vertical"
|
|
spacing: "16dp"
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
padding: [dp(28), dp(16), dp(28), dp(16)]
|
|
|
|
|
|
MDLabel:
|
|
text: ""
|
|
font_style: "H6"
|
|
|
|
MDLabel:
|
|
text: "User Options"
|
|
font_style: "H6"
|
|
|
|
MDTextField:
|
|
id: settings_display_name
|
|
hint_text: "Display Name"
|
|
text: ""
|
|
max_text_length: 128
|
|
font_size: dp(24)
|
|
|
|
MDTextField:
|
|
id: settings_propagation_node_address
|
|
hint_text: "LXMF Propagation Node"
|
|
disabled: False
|
|
text: ""
|
|
max_text_length: 32
|
|
font_size: dp(24)
|
|
|
|
MDTextField:
|
|
id: settings_home_node_address
|
|
hint_text: "Nomad Network Home Node"
|
|
disabled: False
|
|
text: ""
|
|
max_text_length: 32
|
|
font_size: dp(24)
|
|
|
|
MDTextField:
|
|
id: settings_print_command
|
|
hint_text: "Print Command"
|
|
disabled: False
|
|
text: ""
|
|
max_text_length: 32
|
|
font_size: dp(24)
|
|
|
|
MDLabel:
|
|
text: ""
|
|
font_style: "H6"
|
|
|
|
MDLabel:
|
|
text: "Address & Identity"
|
|
font_style: "H6"
|
|
|
|
MDTextField:
|
|
id: settings_lxmf_address
|
|
hint_text: "Your LXMF Address"
|
|
text: ""
|
|
disabled: False
|
|
max_text_length: 32
|
|
font_size: dp(24)
|
|
|
|
MDTextField:
|
|
id: settings_identity_hash
|
|
hint_text: "Your Identity Hash"
|
|
text: ""
|
|
disabled: False
|
|
max_text_length: 32
|
|
font_size: dp(24)
|
|
|
|
|
|
MDBoxLayout:
|
|
orientation: "vertical"
|
|
# spacing: "24dp"
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
padding: [dp(28), dp(16), dp(28), dp(16)]
|
|
|
|
MDBoxLayout:
|
|
orientation: "horizontal"
|
|
size_hint_y: None
|
|
padding: [0,0,dp(24),dp(0)]
|
|
height: dp(48)
|
|
|
|
MDLabel:
|
|
text: "Notifications"
|
|
font_style: "H6"
|
|
|
|
MDSwitch:
|
|
id: settings_notifications_on
|
|
pos_hint: {"center_y": 0.3}
|
|
active: True
|
|
|
|
MDBoxLayout:
|
|
orientation: "horizontal"
|
|
size_hint_y: None
|
|
padding: [0,0,dp(24),dp(0)]
|
|
height: dp(48)
|
|
|
|
MDLabel:
|
|
text: "Dark Mode UI"
|
|
font_style: "H6"
|
|
|
|
MDSwitch:
|
|
id: settings_dark_ui
|
|
pos_hint: {"center_y": 0.3}
|
|
active: False
|
|
|
|
MDBoxLayout:
|
|
orientation: "horizontal"
|
|
size_hint_y: None
|
|
padding: [0,0,dp(24),dp(0)]
|
|
height: dp(48)
|
|
|
|
MDLabel:
|
|
text: "Announce At App Startup"
|
|
font_style: "H6"
|
|
|
|
MDSwitch:
|
|
id: settings_start_announce
|
|
pos_hint: {"center_y": 0.3}
|
|
active: False
|
|
|
|
MDBoxLayout:
|
|
orientation: "horizontal"
|
|
size_hint_y: None
|
|
padding: [0,0,dp(24),dp(0)]
|
|
height: dp(48)
|
|
|
|
MDLabel:
|
|
text: "Send via Propagation Node by default"
|
|
font_style: "H6"
|
|
|
|
MDSwitch:
|
|
id: settings_lxmf_delivery_by_default
|
|
pos_hint: {"center_y": 0.3}
|
|
disabled: False
|
|
active: False
|
|
|
|
MDBoxLayout:
|
|
orientation: "horizontal"
|
|
size_hint_y: None
|
|
padding: [0,0,dp(24),dp(0)]
|
|
height: dp(48)
|
|
|
|
MDLabel:
|
|
text: "Limit each sync to 3 messages"
|
|
font_style: "H6"
|
|
|
|
MDSwitch:
|
|
id: settings_lxmf_sync_limit
|
|
pos_hint: {"center_y": 0.3}
|
|
disabled: False
|
|
active: False
|
|
|
|
MDBoxLayout:
|
|
orientation: "horizontal"
|
|
size_hint_y: None
|
|
padding: [0,0,dp(24),dp(0)]
|
|
height: dp(48)
|
|
|
|
MDLabel:
|
|
id: settings_lxmf_sync_periodic
|
|
text: "Sync with Propagation Node periodically"
|
|
font_style: "H6"
|
|
|
|
MDSwitch:
|
|
id: settings_lxmf_periodic_sync
|
|
pos_hint: {"center_y": 0.3}
|
|
disabled: False
|
|
active: False
|
|
|
|
MDBoxLayout:
|
|
id: lxmf_syncslider_container
|
|
orientation: "vertical"
|
|
size_hint_y: None
|
|
padding: [0,0,dp(0),0]
|
|
height: dp(68)
|
|
|
|
MDSlider
|
|
min: 300
|
|
max: 172800
|
|
value: 43200
|
|
id: settings_lxmf_sync_interval
|
|
sensitivity: "all"
|
|
hint: False
|
|
|
|
MDBoxLayout:
|
|
orientation: "horizontal"
|
|
size_hint_y: None
|
|
padding: [0,0,dp(24),dp(0)]
|
|
height: dp(48)
|
|
|
|
MDLabel:
|
|
text: "Use Home Node as Broadcast Repeater"
|
|
font_style: "H6"
|
|
|
|
MDSwitch:
|
|
id: settings_home_node_as_broadcast_repeater
|
|
pos_hint: {"center_y": 0.3}
|
|
active: False
|
|
disabled: True
|
|
|
|
MDBoxLayout:
|
|
orientation: "horizontal"
|
|
size_hint_y: None
|
|
padding: [0,0,dp(24),dp(0)]
|
|
height: dp(48)
|
|
|
|
MDLabel:
|
|
text: "Send Telemetry to Home Node"
|
|
font_style: "H6"
|
|
|
|
MDSwitch:
|
|
id: settings_telemetry_to_home_node
|
|
pos_hint: {"center_y": 0.3}
|
|
disabled: True
|
|
active: False
|
|
|
|
MDScreen:
|
|
name: "hardware_screen"
|
|
|
|
BoxLayout:
|
|
orientation: "vertical"
|
|
|
|
MDTopAppBar:
|
|
title: "Hardware"
|
|
anchor_title: "left"
|
|
elevation: 2
|
|
left_action_items:
|
|
[['menu', lambda x: nav_drawer.set_state("open")]]
|
|
right_action_items:
|
|
[
|
|
['close', lambda x: root.ids.screen_manager.app.close_hardware_action(self)],
|
|
]
|
|
|
|
ScrollView:
|
|
id: hardware_scrollview
|
|
|
|
MDBoxLayout:
|
|
orientation: "vertical"
|
|
spacing: "8dp"
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
padding: [dp(28), dp(48), dp(28), dp(16)]
|
|
|
|
MDLabel:
|
|
text: "Configure Hardware Parameters\\n"
|
|
font_style: "H6"
|
|
|
|
MDLabel:
|
|
id: hardware_info
|
|
markup: True
|
|
text: ""
|
|
size_hint_y: None
|
|
text_size: self.width, None
|
|
height: self.texture_size[1]
|
|
|
|
|
|
MDBoxLayout:
|
|
orientation: "vertical"
|
|
spacing: "24dp"
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
padding: [dp(0), dp(35), dp(0), dp(35)]
|
|
|
|
MDRectangleFlatIconButton:
|
|
id: hardware_rnode_button
|
|
icon: "radio-handheld"
|
|
text: "RNode"
|
|
padding: [dp(0), dp(14), dp(0), dp(14)]
|
|
icon_size: dp(24)
|
|
font_size: dp(16)
|
|
size_hint: [1.0, None]
|
|
on_release: root.ids.screen_manager.app.hardware_rnode_action(self)
|
|
|
|
MDRectangleFlatIconButton:
|
|
id: hardware_modem_button
|
|
icon: "router-wireless"
|
|
text: "Radio Modem"
|
|
padding: [dp(0), dp(14), dp(0), dp(14)]
|
|
icon_size: dp(24)
|
|
font_size: dp(16)
|
|
size_hint: [1.0, None]
|
|
on_release: root.ids.screen_manager.app.hardware_modem_action(self)
|
|
disabled: False
|
|
|
|
MDRectangleFlatIconButton:
|
|
id: hardware_serial_button
|
|
icon: "cable-data"
|
|
text: "Serial Port"
|
|
padding: [dp(0), dp(14), dp(0), dp(14)]
|
|
icon_size: dp(24)
|
|
font_size: dp(16)
|
|
size_hint: [1.0, None]
|
|
on_release: root.ids.screen_manager.app.hardware_serial_action(self)
|
|
disabled: False
|
|
|
|
MDScreen:
|
|
name: "hardware_rnode_screen"
|
|
|
|
BoxLayout:
|
|
orientation: "vertical"
|
|
|
|
MDTopAppBar:
|
|
title: "RNode"
|
|
anchor_title: "left"
|
|
elevation: 2
|
|
left_action_items:
|
|
[['menu', lambda x: nav_drawer.set_state("open")]]
|
|
right_action_items:
|
|
[
|
|
['close', lambda x: root.ids.screen_manager.app.close_sub_hardware_action(self)],
|
|
]
|
|
|
|
ScrollView:
|
|
id: hardware_rnode_scrollview
|
|
|
|
MDBoxLayout:
|
|
orientation: "vertical"
|
|
spacing: "8dp"
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
padding: [dp(28), dp(48), dp(28), dp(16)]
|
|
|
|
MDLabel:
|
|
text: "RNode Hardware Parameters\\n"
|
|
font_style: "H6"
|
|
|
|
MDLabel:
|
|
id: hardware_rnode_info
|
|
markup: True
|
|
text: "To communicate using an RNode, you will need to specify the following parameters. For two or more RNodes to be able to communicate, all parameters must match, except for the [i]Coding Rate[/i] and [i]TX Power[/i] parameter, which can vary between devices.\\n"
|
|
size_hint_y: None
|
|
text_size: self.width, None
|
|
height: self.texture_size[1]
|
|
|
|
MDBoxLayout:
|
|
orientation: "horizontal"
|
|
spacing: "24dp"
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
padding: [dp(0), dp(0), dp(0), dp(35)]
|
|
|
|
MDRectangleFlatIconButton:
|
|
id: rnode_mote_export
|
|
icon: "upload"
|
|
text: "Export"
|
|
padding: [dp(0), dp(14), dp(0), dp(14)]
|
|
icon_size: dp(24)
|
|
font_size: dp(16)
|
|
size_hint: [1.0, None]
|
|
on_release: root.ids.screen_manager.app.hardware_rnode_export(self)
|
|
|
|
MDRectangleFlatIconButton:
|
|
id: rnode_mote_import
|
|
icon: "download"
|
|
text: "Import"
|
|
padding: [dp(0), dp(14), dp(0), dp(14)]
|
|
icon_size: dp(24)
|
|
font_size: dp(16)
|
|
size_hint: [1.0, None]
|
|
on_release: root.ids.screen_manager.app.hardware_rnode_import(self)
|
|
|
|
MDLabel:
|
|
text: "Radio Options"
|
|
font_style: "H6"
|
|
|
|
# MDTextField:
|
|
# id: hardware_rnode_modulation
|
|
# hint_text: "Modulation"
|
|
# text: "LoRa"
|
|
# disabled: True
|
|
# font_size: dp(24)
|
|
|
|
MDBoxLayout:
|
|
orientation: "horizontal"
|
|
spacing: "24dp"
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
# padding: [dp(0), dp(0), dp(0), dp(35)]
|
|
|
|
MDTextField:
|
|
id: hardware_rnode_frequency
|
|
hint_text: "Frequency (MHz)"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
MDTextField:
|
|
id: hardware_rnode_bandwidth
|
|
hint_text: "Bandwidth (KHz)"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
MDTextField:
|
|
id: hardware_rnode_txpower
|
|
hint_text: "TX Power (dBm)"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
MDBoxLayout:
|
|
orientation: "horizontal"
|
|
spacing: "24dp"
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
padding: [dp(0), dp(0), dp(0), dp(24)]
|
|
|
|
MDTextField:
|
|
id: hardware_rnode_spreadingfactor
|
|
hint_text: "Spreading Factor"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
MDTextField:
|
|
id: hardware_rnode_codingrate
|
|
hint_text: "Coding Rate"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
MDLabel:
|
|
text: "Optional Settings"
|
|
font_style: "H6"
|
|
|
|
MDBoxLayout:
|
|
orientation: "horizontal"
|
|
spacing: "24dp"
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
# padding: [dp(0), dp(0), dp(0), dp(35)]
|
|
|
|
MDTextField:
|
|
id: hardware_rnode_beaconinterval
|
|
hint_text: "Beacon Interval (seconds)"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
MDTextField:
|
|
id: hardware_rnode_beacondata
|
|
hint_text: "Beacon Data"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
MDBoxLayout:
|
|
orientation: "horizontal"
|
|
size_hint_y: None
|
|
padding: [0,0,dp(24),dp(0)]
|
|
height: dp(48)
|
|
|
|
MDLabel:
|
|
text: "Connect using Bluetooth"
|
|
font_style: "H6"
|
|
|
|
MDSwitch:
|
|
id: hardware_rnode_bluetooth
|
|
pos_hint: {"center_y": 0.3}
|
|
active: False
|
|
|
|
MDLabel:
|
|
id: hardware_rnode_info
|
|
markup: True
|
|
text: "If you enable connection via Bluetooth, Sideband will attempt to connect to any available and paired RNodes over Bluetooth.\\n\\nYou must first pair the RNode with your device for this to work. If your RNode does not have a physical pairing button, you can enable Bluetooth and put it into pairing mode by first connecting it via a USB cable, and using the buttons below. You can also do this using the \\"rnodeconf\\" utility from a computer.\\n\\nBy default, Sideband will connect to the first available RNode that is paired. If you want to always use a specific RNode, you can enter its name in the Preferred RNode Device Name field below, for example \\"RNode A8EB\\".\\n"
|
|
size_hint_y: None
|
|
text_size: self.width, None
|
|
height: self.texture_size[1]
|
|
|
|
MDBoxLayout:
|
|
orientation: "vertical"
|
|
spacing: "24dp"
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
# padding: [dp(0), dp(0), dp(0), dp(35)]
|
|
|
|
MDRectangleFlatIconButton:
|
|
id: hardware_rnode_bt_on_button
|
|
icon: "bluetooth"
|
|
text: "Enable Bluetooth"
|
|
padding: [dp(0), dp(14), dp(0), dp(14)]
|
|
icon_size: dp(24)
|
|
font_size: dp(16)
|
|
size_hint: [1.0, None]
|
|
on_release: root.ids.screen_manager.app.hardware_rnode_bt_on_action(self)
|
|
|
|
MDRectangleFlatIconButton:
|
|
id: hardware_rnode_bt_off_button
|
|
icon: "bluetooth-off"
|
|
text: "Disable Bluetooth"
|
|
padding: [dp(0), dp(14), dp(0), dp(14)]
|
|
icon_size: dp(24)
|
|
font_size: dp(16)
|
|
size_hint: [1.0, None]
|
|
on_release: root.ids.screen_manager.app.hardware_rnode_bt_off_action(self)
|
|
disabled: False
|
|
|
|
MDRectangleFlatIconButton:
|
|
id: hardware_rnode_bt_pair_button
|
|
icon: "link-variant"
|
|
text: "Start Pairing Mode"
|
|
padding: [dp(0), dp(14), dp(0), dp(14)]
|
|
icon_size: dp(24)
|
|
font_size: dp(16)
|
|
size_hint: [1.0, None]
|
|
on_release: root.ids.screen_manager.app.hardware_rnode_bt_pair_action(self)
|
|
disabled: False
|
|
|
|
MDTextField:
|
|
id: hardware_rnode_bt_device
|
|
hint_text: "Preferred RNode Device Name"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
MDScreen:
|
|
name: "hardware_modem_screen"
|
|
|
|
BoxLayout:
|
|
orientation: "vertical"
|
|
|
|
MDTopAppBar:
|
|
title: "Radio Modem"
|
|
anchor_title: "left"
|
|
elevation: 2
|
|
left_action_items:
|
|
[['menu', lambda x: nav_drawer.set_state("open")]]
|
|
right_action_items:
|
|
[
|
|
['close', lambda x: root.ids.screen_manager.app.close_sub_hardware_action(self)],
|
|
]
|
|
|
|
ScrollView:
|
|
id: hardware_modem_scrollview
|
|
|
|
MDBoxLayout:
|
|
orientation: "vertical"
|
|
spacing: "8dp"
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
padding: [dp(28), dp(48), dp(28), dp(16)]
|
|
|
|
MDLabel:
|
|
text: "Modem Hardware Parameters\\n"
|
|
font_style: "H6"
|
|
|
|
MDLabel:
|
|
id: hardware_modem_info
|
|
markup: True
|
|
text: "To communicate using a Radio Modem, you will need to specify the following parameters. Serial port parameters must be set to match those of the modem. CSMA parameters can be left at their default values in most cases.\\n"
|
|
size_hint_y: None
|
|
text_size: self.width, None
|
|
height: self.texture_size[1]
|
|
|
|
MDLabel:
|
|
text: "Port Options"
|
|
font_style: "H6"
|
|
|
|
MDBoxLayout:
|
|
orientation: "horizontal"
|
|
spacing: "24dp"
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
# padding: [dp(0), dp(0), dp(0), dp(35)]
|
|
|
|
MDTextField:
|
|
id: hardware_modem_baudrate
|
|
hint_text: "Baud Rate"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
MDBoxLayout:
|
|
orientation: "horizontal"
|
|
spacing: "24dp"
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
padding: [dp(0), dp(0), dp(0), dp(24)]
|
|
|
|
MDTextField:
|
|
id: hardware_modem_databits
|
|
hint_text: "Data Bits"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
MDTextField:
|
|
id: hardware_modem_parity
|
|
hint_text: "Parity"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
MDTextField:
|
|
id: hardware_modem_stopbits
|
|
hint_text: "Stop Bits"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
MDLabel:
|
|
text: "CSMA Parameters"
|
|
font_style: "H6"
|
|
|
|
MDBoxLayout:
|
|
orientation: "horizontal"
|
|
spacing: "24dp"
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
padding: [dp(0), dp(0), dp(0), dp(0)]
|
|
|
|
MDTextField:
|
|
id: hardware_modem_preamble
|
|
hint_text: "Preamble (ms)"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
MDTextField:
|
|
id: hardware_modem_tail
|
|
hint_text: "TX Tail (ms)"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
MDBoxLayout:
|
|
orientation: "horizontal"
|
|
spacing: "24dp"
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
padding: [dp(0), dp(0), dp(0), dp(24)]
|
|
|
|
MDTextField:
|
|
id: hardware_modem_persistence
|
|
hint_text: "Persistence (1-255)"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
MDTextField:
|
|
id: hardware_modem_slottime
|
|
hint_text: "Slot Time (ms)"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
MDLabel:
|
|
text: "Optional Settings"
|
|
font_style: "H6"
|
|
|
|
MDBoxLayout:
|
|
orientation: "horizontal"
|
|
spacing: "24dp"
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
# padding: [dp(0), dp(0), dp(0), dp(35)]
|
|
|
|
MDTextField:
|
|
id: hardware_modem_beaconinterval
|
|
hint_text: "Beacon Interval (seconds)"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
MDTextField:
|
|
id: hardware_modem_beacondata
|
|
hint_text: "Beacon Data"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
MDScreen:
|
|
name: "hardware_serial_screen"
|
|
|
|
BoxLayout:
|
|
orientation: "vertical"
|
|
|
|
MDTopAppBar:
|
|
title: "Serial Port"
|
|
anchor_title: "left"
|
|
elevation: 2
|
|
left_action_items:
|
|
[['menu', lambda x: nav_drawer.set_state("open")]]
|
|
right_action_items:
|
|
[
|
|
['close', lambda x: root.ids.screen_manager.app.close_sub_hardware_action(self)],
|
|
]
|
|
|
|
ScrollView:
|
|
id: hardware_serial_scrollview
|
|
|
|
MDBoxLayout:
|
|
orientation: "vertical"
|
|
spacing: "8dp"
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
padding: [dp(28), dp(48), dp(28), dp(16)]
|
|
|
|
MDLabel:
|
|
text: "Serial Hardware Parameters\\n"
|
|
font_style: "H6"
|
|
|
|
MDLabel:
|
|
id: hardware_serial_info
|
|
markup: True
|
|
text: "To communicate using a serial port, you will need to specify the following parameters. If communicating directly to another Reticulum instance over serial, the parameters must match the other device.\\n\\nIf you are using a serial-connected device to pass on data to other Reticulum instances, it should be configured to pass data transparently to the desired endpoints.\\n"
|
|
size_hint_y: None
|
|
text_size: self.width, None
|
|
height: self.texture_size[1]
|
|
|
|
# MDBoxLayout:
|
|
# orientation: "horizontal"
|
|
# spacing: "24dp"
|
|
# size_hint_y: None
|
|
# height: self.minimum_height
|
|
# padding: [dp(0), dp(0), dp(0), dp(35)]
|
|
|
|
# MDRectangleFlatIconButton:
|
|
# id: serial_mote_export
|
|
# icon: "upload"
|
|
# text: "Export"
|
|
# padding: [dp(0), dp(14), dp(0), dp(14)]
|
|
# icon_size: dp(24)
|
|
# font_size: dp(16)
|
|
# size_hint: [1.0, None]
|
|
# on_release: root.ids.screen_manager.app.hardware_serial_export(self)
|
|
|
|
# MDRectangleFlatIconButton:
|
|
# id: serial_mote_import
|
|
# icon: "download"
|
|
# text: "Import"
|
|
# padding: [dp(0), dp(14), dp(0), dp(14)]
|
|
# icon_size: dp(24)
|
|
# font_size: dp(16)
|
|
# size_hint: [1.0, None]
|
|
# on_release: root.ids.screen_manager.app.hardware_serial_import(self)
|
|
|
|
MDLabel:
|
|
text: "Port Options"
|
|
font_style: "H6"
|
|
|
|
MDBoxLayout:
|
|
orientation: "horizontal"
|
|
spacing: "24dp"
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
# padding: [dp(0), dp(0), dp(0), dp(35)]
|
|
|
|
MDTextField:
|
|
id: hardware_serial_baudrate
|
|
hint_text: "Baud Rate"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
MDBoxLayout:
|
|
orientation: "horizontal"
|
|
spacing: "24dp"
|
|
size_hint_y: None
|
|
height: self.minimum_height
|
|
padding: [dp(0), dp(0), dp(0), dp(24)]
|
|
|
|
MDTextField:
|
|
id: hardware_serial_databits
|
|
hint_text: "Data Bits"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
MDTextField:
|
|
id: hardware_serial_parity
|
|
hint_text: "Parity"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
MDTextField:
|
|
id: hardware_serial_stopbits
|
|
hint_text: "Stop Bits"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
|
|
MDNavigationDrawer:
|
|
id: nav_drawer
|
|
radius: (0, dp(8), dp(8), 0)
|
|
|
|
ContentNavigationDrawer:
|
|
ScrollView:
|
|
id: nav_scrollview
|
|
DrawerList:
|
|
id: md_list
|
|
|
|
MDList:
|
|
OneLineIconListItem:
|
|
text: "Conversations"
|
|
on_release: root.ids.screen_manager.app.conversations_action(self)
|
|
|
|
IconLeftWidget:
|
|
icon: "email"
|
|
on_release: root.ids.screen_manager.app.conversations_action(self)
|
|
|
|
|
|
OneLineIconListItem:
|
|
text: "Announce Stream"
|
|
on_release: root.ids.screen_manager.app.announces_action(self)
|
|
|
|
IconLeftWidget:
|
|
icon: "account-voice"
|
|
on_release: root.ids.screen_manager.app.announces_action(self)
|
|
|
|
|
|
OneLineIconListItem:
|
|
text: "Local Broadcasts"
|
|
on_release: root.ids.screen_manager.app.broadcasts_action(self)
|
|
|
|
IconLeftWidget:
|
|
icon: "radio-tower"
|
|
on_release: root.ids.screen_manager.app.broadcasts_action(self)
|
|
|
|
|
|
OneLineIconListItem:
|
|
text: "Local Area Map"
|
|
on_release: root.ids.screen_manager.app.map_action(self)
|
|
|
|
IconLeftWidget:
|
|
icon: "map"
|
|
on_release: root.ids.screen_manager.app.map_action(self)
|
|
|
|
|
|
OneLineIconListItem:
|
|
text: "Preferences"
|
|
on_release: root.ids.screen_manager.app.settings_action(self)
|
|
_no_ripple_effect: True
|
|
|
|
IconLeftWidget:
|
|
icon: "cog"
|
|
on_release: root.ids.screen_manager.app.settings_action(self)
|
|
|
|
|
|
OneLineIconListItem:
|
|
text: "Connectivity"
|
|
on_release: root.ids.screen_manager.app.connectivity_action(self)
|
|
_no_ripple_effect: True
|
|
|
|
IconLeftWidget:
|
|
icon: "wifi"
|
|
on_release: root.ids.screen_manager.app.connectivity_action(self)
|
|
|
|
|
|
OneLineIconListItem:
|
|
text: "Hardware"
|
|
on_release: root.ids.screen_manager.app.hardware_action(self)
|
|
_no_ripple_effect: True
|
|
|
|
IconLeftWidget:
|
|
icon: "router-wireless"
|
|
on_release: root.ids.screen_manager.app.hardware_action(self)
|
|
|
|
|
|
OneLineIconListItem:
|
|
text: "Encryption Keys"
|
|
on_release: root.ids.screen_manager.app.keys_action(self)
|
|
_no_ripple_effect: True
|
|
|
|
IconLeftWidget:
|
|
icon: "key-chain"
|
|
on_release: root.ids.screen_manager.app.keys_action(self)
|
|
|
|
|
|
OneLineIconListItem:
|
|
text: "Guide"
|
|
on_release: root.ids.screen_manager.app.guide_action(self)
|
|
_no_ripple_effect: True
|
|
|
|
IconLeftWidget:
|
|
icon: "book-open"
|
|
on_release: root.ids.screen_manager.app.guide_action(self)
|
|
|
|
|
|
OneLineIconListItem:
|
|
id: app_version_info
|
|
text: ""
|
|
on_release: root.ids.screen_manager.app.information_action(self)
|
|
_no_ripple_effect: True
|
|
|
|
IconLeftWidget:
|
|
icon: "information"
|
|
on_release: root.ids.screen_manager.app.information_action(self)
|
|
|
|
|
|
OneLineIconListItem:
|
|
text: "Shutdown"
|
|
on_release: root.ids.screen_manager.app.quit_action(self)
|
|
_no_ripple_effect: True
|
|
|
|
IconLeftWidget:
|
|
icon: "power"
|
|
on_release: root.ids.screen_manager.app.quit_action(self)
|
|
|
|
<ListLXMessageCard>:
|
|
style: "outlined"
|
|
elevation: 2
|
|
padding: dp(8)
|
|
radius: [dp(4), dp(4), dp(4), dp(4)]
|
|
size_hint: 1.0, None
|
|
height: content_text.height + heading_text.height + dp(32)
|
|
pos_hint: {"center_x": .5, "center_y": .5}
|
|
|
|
MDRelativeLayout:
|
|
size_hint: 1.0, None
|
|
theme_text_color: "ContrastParentBackground"
|
|
|
|
MDIconButton:
|
|
id: msg_submenu
|
|
icon: "dots-vertical"
|
|
# theme_text_color: 'Custom'
|
|
# text_color: rgba(255,255,255,216)
|
|
pos:
|
|
root.width - (self.width + root.padding[0] + dp(4)), root.height - (self.height + root.padding[0] + dp(4))
|
|
|
|
MDLabel:
|
|
id: heading_text
|
|
markup: True
|
|
text: root.heading
|
|
adaptive_size: True
|
|
# theme_text_color: 'Custom'
|
|
# text_color: rgba(255,255,255,100)
|
|
pos: 0, root.height - (self.height + root.padding[0] + dp(8))
|
|
|
|
MDLabel:
|
|
id: content_text
|
|
text: root.text
|
|
# adaptive_size: True
|
|
size_hint_y: None
|
|
text_size: self.width, None
|
|
# theme_text_color: 'Custom'
|
|
# text_color: rgba(255,255,255,216)
|
|
height: self.texture_size[1]
|
|
|
|
<MsgSync>
|
|
orientation: "vertical"
|
|
spacing: "24dp"
|
|
size_hint_y: None
|
|
padding: [0, 0, 0, dp(16)]
|
|
height: self.minimum_height+dp(24)
|
|
|
|
MDProgressBar:
|
|
id: sync_progress
|
|
value: 0
|
|
|
|
MDLabel:
|
|
id: sync_status
|
|
hint_text: "Name"
|
|
text: "Initiating sync..."
|
|
|
|
<ConvSettings>
|
|
orientation: "vertical"
|
|
spacing: "16dp"
|
|
size_hint_y: None
|
|
padding: [0, 0, 0, dp(8)]
|
|
height: self.minimum_height
|
|
|
|
MDTextField:
|
|
id: dest_field
|
|
hint_text: "Address"
|
|
text: root.context_dest
|
|
# disabled: True
|
|
font_size: dp(18)
|
|
|
|
MDTextField:
|
|
id: name_field
|
|
hint_text: "Name"
|
|
text: root.disp_name
|
|
font_size: dp(18)
|
|
|
|
MDBoxLayout:
|
|
orientation: "horizontal"
|
|
# spacing: "24dp"
|
|
size_hint_y: None
|
|
padding: [0,0,dp(8),0]
|
|
height: dp(48)
|
|
MDLabel:
|
|
id: trusted_switch_label
|
|
text: "Trusted"
|
|
font_style: "H6"
|
|
|
|
MDSwitch:
|
|
id: trusted_switch
|
|
pos_hint: {"center_y": 0.43}
|
|
active: root.trusted
|
|
|
|
<NewConv>
|
|
orientation: "vertical"
|
|
spacing: "24dp"
|
|
size_hint_y: None
|
|
height: dp(250)
|
|
|
|
MDTextField:
|
|
id: n_address_field
|
|
max_text_length: 32
|
|
hint_text: "Address"
|
|
helper_text: "Error, check your input"
|
|
helper_text_mode: "on_error"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
MDTextField:
|
|
id: n_name_field
|
|
hint_text: "Name"
|
|
text: ""
|
|
font_size: dp(24)
|
|
|
|
MDBoxLayout:
|
|
orientation: "horizontal"
|
|
size_hint_y: None
|
|
padding: [0,0,dp(8),dp(24)]
|
|
height: dp(48)
|
|
MDLabel:
|
|
id: "trusted_switch_label"
|
|
text: "Trusted"
|
|
font_style: "H6"
|
|
|
|
MDSwitch:
|
|
id: n_trusted
|
|
pos_hint: {"center_y": 0.3}
|
|
active: False
|
|
""" |