added pair screen, home screen, and channels screen
This commit is contained in:
17
desktop_app/ui/screens/main_screen.py
Normal file
17
desktop_app/ui/screens/main_screen.py
Normal file
@@ -0,0 +1,17 @@
|
||||
from textual.screen import Screen
|
||||
from textual.widgets import Header, Footer, ContentSwitcher
|
||||
from ui.widgets.home_sidebar import HomeSidebar
|
||||
from ui.widgets.home_info import HomeInfo
|
||||
from ui.widgets.channels_list import ChannelsList
|
||||
|
||||
|
||||
class MainScreen(Screen):
|
||||
def compose(self):
|
||||
yield Header(show_clock=True)
|
||||
yield HomeSidebar()
|
||||
|
||||
with ContentSwitcher(initial="home-info"):
|
||||
yield HomeInfo(id="home-info")
|
||||
yield ChannelsList(id="channels-list")
|
||||
|
||||
yield Footer()
|
||||
@@ -1,12 +1,33 @@
|
||||
from textual.screen import Screen
|
||||
from textual.containers import VerticalScroll, Vertical
|
||||
from textual.widgets import Static, Button, LoadingIndicator, DataTable
|
||||
from textual.containers import Vertical
|
||||
from textual.widgets import Static, LoadingIndicator, DataTable
|
||||
from textual import work
|
||||
from ui.screens.main_screen import MainScreen
|
||||
from textualeffects.widgets import EffectLabel
|
||||
|
||||
from api.node import MeshNode
|
||||
|
||||
|
||||
class PairScreen(Screen):
|
||||
CSS_PATH = "../assets/pair_screen.tcss"
|
||||
|
||||
@work
|
||||
async def connect_to_node(self, is_retry = False):
|
||||
if not is_retry:
|
||||
self.notify("This may take a moment...", title="Discovering nearby nodes...")
|
||||
self.app.mesh_node = await MeshNode.discover()
|
||||
|
||||
if self.app.mesh_node == None:
|
||||
self.notify("Check your node is powered on and nearby.\nRetrying...", title="Failed to find a nearby node!", severity="warning")
|
||||
return self.connect_to_node(True)
|
||||
|
||||
self.notify("Hurray! You're on the mesh!", title="Node connected!")
|
||||
self.app.switch_screen(MainScreen())
|
||||
|
||||
|
||||
async def on_compose(self):
|
||||
self.connect_to_node()
|
||||
|
||||
def compose(self):
|
||||
|
||||
with Vertical(id="middle") as center_window:
|
||||
@@ -15,18 +36,6 @@ class PairScreen(Screen):
|
||||
with open("ui/assets/banner.txt", "r") as f:
|
||||
yield EffectLabel(f.read(), effect="Print")
|
||||
|
||||
yield Static("Make sure your mesh network node is powered and ready to pair. When you're ready, click the \"Pair\" button to connect to the mesh!")
|
||||
yield Static("Attempting to connect to a nearby node. Make sure your mesh network node is powered and ready to pair.")
|
||||
|
||||
table = DataTable()
|
||||
table.add_columns("[b]Address", "RSSI")
|
||||
yield table
|
||||
|
||||
table.add_row("hi", "[green][/] -34 dBm")
|
||||
table.add_row("hi", "[green][/] -52 dBm")
|
||||
table.add_row("hi", "[yellow][/] -64 dBm")
|
||||
table.add_row("hi", "[red][/] -98 dBm")
|
||||
table.add_row("hi", "[red][/] -101 dBm")
|
||||
|
||||
yield LoadingIndicator()
|
||||
|
||||
yield Button("Select a node to pair", disabled=True, variant="success", id="pair-btn")
|
||||
yield LoadingIndicator()
|
||||
Reference in New Issue
Block a user