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: [ ['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: "8dp" 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 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 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] 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:information_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_lxmf_address hint_text: "Your LXMF Address" text: "" disabled: False max_text_length: 32 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) 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] 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) 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. If you are using a serial-connected device to pass on data to other Reticulum instances, it must be 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) : 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] 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..." 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 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),0] 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 """