dash-frontend: tabs, other fixes (desc)
- set rustfmt line width to 120 columns by default for wgui - dashboard tabs - wgui: `remove_children`
This commit is contained in:
31
dash-frontend/src/tab/apps.rs
Normal file
31
dash-frontend/src/tab/apps.rs
Normal file
@@ -0,0 +1,31 @@
|
||||
use wgui::parser::{ParseDocumentParams, ParserState};
|
||||
|
||||
use crate::tab::{Tab, TabParams, TabType};
|
||||
|
||||
pub struct TabApps {
|
||||
#[allow(dead_code)]
|
||||
pub state: ParserState,
|
||||
}
|
||||
|
||||
impl Tab for TabApps {
|
||||
fn get_type(&self) -> TabType {
|
||||
TabType::Apps
|
||||
}
|
||||
}
|
||||
|
||||
impl TabApps {
|
||||
pub fn new(params: TabParams) -> anyhow::Result<Self> {
|
||||
let state = wgui::parser::parse_from_assets(
|
||||
&ParseDocumentParams {
|
||||
globals: params.globals.clone(),
|
||||
path: "gui/tab/apps.xml",
|
||||
extra: Default::default(),
|
||||
},
|
||||
params.layout,
|
||||
params.listeners,
|
||||
params.parent_id,
|
||||
)?;
|
||||
|
||||
Ok(Self { state })
|
||||
}
|
||||
}
|
||||
31
dash-frontend/src/tab/games.rs
Normal file
31
dash-frontend/src/tab/games.rs
Normal file
@@ -0,0 +1,31 @@
|
||||
use wgui::parser::{ParseDocumentParams, ParserState};
|
||||
|
||||
use crate::tab::{Tab, TabParams, TabType};
|
||||
|
||||
pub struct TabGames {
|
||||
#[allow(dead_code)]
|
||||
pub state: ParserState,
|
||||
}
|
||||
|
||||
impl Tab for TabGames {
|
||||
fn get_type(&self) -> TabType {
|
||||
TabType::Games
|
||||
}
|
||||
}
|
||||
|
||||
impl TabGames {
|
||||
pub fn new(params: TabParams) -> anyhow::Result<Self> {
|
||||
let state = wgui::parser::parse_from_assets(
|
||||
&ParseDocumentParams {
|
||||
globals: params.globals.clone(),
|
||||
path: "gui/tab/games.xml",
|
||||
extra: Default::default(),
|
||||
},
|
||||
params.layout,
|
||||
params.listeners,
|
||||
params.parent_id,
|
||||
)?;
|
||||
|
||||
Ok(Self { state })
|
||||
}
|
||||
}
|
||||
47
dash-frontend/src/tab/home.rs
Normal file
47
dash-frontend/src/tab/home.rs
Normal file
@@ -0,0 +1,47 @@
|
||||
use wgui::{
|
||||
components::button::ComponentButton,
|
||||
parser::{ParseDocumentParams, ParserState},
|
||||
};
|
||||
|
||||
use crate::tab::{Tab, TabParams, TabType};
|
||||
|
||||
pub struct TabHome {
|
||||
#[allow(dead_code)]
|
||||
pub state: ParserState,
|
||||
}
|
||||
|
||||
impl Tab for TabHome {
|
||||
fn get_type(&self) -> TabType {
|
||||
TabType::Home
|
||||
}
|
||||
}
|
||||
|
||||
impl TabHome {
|
||||
pub fn new(params: TabParams) -> anyhow::Result<Self> {
|
||||
let state = wgui::parser::parse_from_assets(
|
||||
&ParseDocumentParams {
|
||||
globals: params.globals.clone(),
|
||||
path: "gui/tab/home.xml",
|
||||
extra: Default::default(),
|
||||
},
|
||||
params.layout,
|
||||
params.listeners,
|
||||
params.parent_id,
|
||||
)?;
|
||||
|
||||
let btn_apps = state.fetch_component_as::<ComponentButton>("btn_apps")?;
|
||||
let btn_games = state.fetch_component_as::<ComponentButton>("btn_games")?;
|
||||
let btn_monado = state.fetch_component_as::<ComponentButton>("btn_monado")?;
|
||||
let btn_processes = state.fetch_component_as::<ComponentButton>("btn_processes")?;
|
||||
let btn_settings = state.fetch_component_as::<ComponentButton>("btn_settings")?;
|
||||
|
||||
let frontend = params.frontend;
|
||||
TabType::register_button(frontend.clone(), &btn_apps, TabType::Apps);
|
||||
TabType::register_button(frontend.clone(), &btn_games, TabType::Games);
|
||||
TabType::register_button(frontend.clone(), &btn_monado, TabType::Monado);
|
||||
TabType::register_button(frontend.clone(), &btn_processes, TabType::Processes);
|
||||
TabType::register_button(frontend.clone(), &btn_settings, TabType::Settings);
|
||||
|
||||
Ok(Self { state })
|
||||
}
|
||||
}
|
||||
51
dash-frontend/src/tab/mod.rs
Normal file
51
dash-frontend/src/tab/mod.rs
Normal file
@@ -0,0 +1,51 @@
|
||||
use std::rc::Rc;
|
||||
|
||||
use wgui::{
|
||||
components::button::ComponentButton,
|
||||
event::EventListenerCollection,
|
||||
globals::WguiGlobals,
|
||||
layout::{Layout, WidgetID},
|
||||
};
|
||||
|
||||
use crate::{FrontendTask, RcFrontend};
|
||||
|
||||
pub mod apps;
|
||||
pub mod games;
|
||||
pub mod home;
|
||||
pub mod monado;
|
||||
pub mod processes;
|
||||
pub mod settings;
|
||||
|
||||
#[derive(Clone, Copy, Debug)]
|
||||
pub enum TabType {
|
||||
Home,
|
||||
Apps,
|
||||
Games,
|
||||
Monado,
|
||||
Processes,
|
||||
Settings,
|
||||
}
|
||||
|
||||
pub struct TabParams<'a> {
|
||||
pub globals: &'a WguiGlobals,
|
||||
pub layout: &'a mut Layout,
|
||||
pub parent_id: WidgetID,
|
||||
pub frontend: &'a RcFrontend,
|
||||
pub listeners: &'a mut EventListenerCollection<(), ()>,
|
||||
}
|
||||
|
||||
pub trait Tab {
|
||||
#[allow(dead_code)]
|
||||
fn get_type(&self) -> TabType;
|
||||
}
|
||||
|
||||
impl TabType {
|
||||
pub fn register_button(this_rc: RcFrontend, btn: &Rc<ComponentButton>, tab: TabType) {
|
||||
btn.on_click({
|
||||
Box::new(move |_evt| {
|
||||
this_rc.borrow_mut().push_task(FrontendTask::SetTab(tab));
|
||||
Ok(())
|
||||
})
|
||||
});
|
||||
}
|
||||
}
|
||||
31
dash-frontend/src/tab/monado.rs
Normal file
31
dash-frontend/src/tab/monado.rs
Normal file
@@ -0,0 +1,31 @@
|
||||
use wgui::parser::{ParseDocumentParams, ParserState};
|
||||
|
||||
use crate::tab::{Tab, TabParams, TabType};
|
||||
|
||||
pub struct TabMonado {
|
||||
#[allow(dead_code)]
|
||||
pub state: ParserState,
|
||||
}
|
||||
|
||||
impl Tab for TabMonado {
|
||||
fn get_type(&self) -> TabType {
|
||||
TabType::Games
|
||||
}
|
||||
}
|
||||
|
||||
impl TabMonado {
|
||||
pub fn new(params: TabParams) -> anyhow::Result<Self> {
|
||||
let state = wgui::parser::parse_from_assets(
|
||||
&ParseDocumentParams {
|
||||
globals: params.globals.clone(),
|
||||
path: "gui/tab/monado.xml",
|
||||
extra: Default::default(),
|
||||
},
|
||||
params.layout,
|
||||
params.listeners,
|
||||
params.parent_id,
|
||||
)?;
|
||||
|
||||
Ok(Self { state })
|
||||
}
|
||||
}
|
||||
31
dash-frontend/src/tab/processes.rs
Normal file
31
dash-frontend/src/tab/processes.rs
Normal file
@@ -0,0 +1,31 @@
|
||||
use wgui::parser::{ParseDocumentParams, ParserState};
|
||||
|
||||
use crate::tab::{Tab, TabParams, TabType};
|
||||
|
||||
pub struct TabProcesses {
|
||||
#[allow(dead_code)]
|
||||
pub state: ParserState,
|
||||
}
|
||||
|
||||
impl Tab for TabProcesses {
|
||||
fn get_type(&self) -> TabType {
|
||||
TabType::Games
|
||||
}
|
||||
}
|
||||
|
||||
impl TabProcesses {
|
||||
pub fn new(params: TabParams) -> anyhow::Result<Self> {
|
||||
let state = wgui::parser::parse_from_assets(
|
||||
&ParseDocumentParams {
|
||||
globals: params.globals.clone(),
|
||||
path: "gui/tab/processes.xml",
|
||||
extra: Default::default(),
|
||||
},
|
||||
params.layout,
|
||||
params.listeners,
|
||||
params.parent_id,
|
||||
)?;
|
||||
|
||||
Ok(Self { state })
|
||||
}
|
||||
}
|
||||
31
dash-frontend/src/tab/settings.rs
Normal file
31
dash-frontend/src/tab/settings.rs
Normal file
@@ -0,0 +1,31 @@
|
||||
use wgui::parser::{ParseDocumentParams, ParserState};
|
||||
|
||||
use crate::tab::{Tab, TabParams, TabType};
|
||||
|
||||
pub struct TabSettings {
|
||||
#[allow(dead_code)]
|
||||
pub state: ParserState,
|
||||
}
|
||||
|
||||
impl Tab for TabSettings {
|
||||
fn get_type(&self) -> TabType {
|
||||
TabType::Settings
|
||||
}
|
||||
}
|
||||
|
||||
impl TabSettings {
|
||||
pub fn new(params: TabParams) -> anyhow::Result<Self> {
|
||||
let state = wgui::parser::parse_from_assets(
|
||||
&ParseDocumentParams {
|
||||
globals: params.globals.clone(),
|
||||
path: "gui/tab/settings.xml",
|
||||
extra: Default::default(),
|
||||
},
|
||||
params.layout,
|
||||
params.listeners,
|
||||
params.parent_id,
|
||||
)?;
|
||||
|
||||
Ok(Self { state })
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user