dash-frontend: use globals from wayvr instead of creating own

Move fonts to wayvr
This commit is contained in:
Earthgames 2026-03-04 19:04:26 +01:00
parent 2b4a0b6a0d
commit d1b60ada6f
No known key found for this signature in database
GPG Key ID: 31E97B72E0685E5F
8 changed files with 37 additions and 45 deletions

View File

@ -1,11 +1,10 @@
use std::{path::PathBuf, rc::Rc};
use std::rc::Rc;
use chrono::Timelike;
use glam::Vec2;
use wgui::{
assets::{AssetPath, AssetProvider},
assets::{AssetPath},
components::button::ComponentButton,
font_config::WguiFontConfig,
globals::WguiGlobals,
i18n::Translation,
layout::{Layout, LayoutParams, LayoutUpdateParams, LayoutUpdateResult, WidgetID},
@ -23,7 +22,6 @@ use wlx_common::{
};
use crate::{
assets,
tab::{Tab, TabType, apps::TabApps, games::TabGames, home::TabHome, monado::TabMonado, settings::TabSettings},
util::{
popup_manager::{MountPopupParams, PopupManager, PopupManagerParams},
@ -85,6 +83,7 @@ pub struct FrontendUpdateResult {
pub struct InitParams<'a, T> {
pub interface: BoxDashInterface<T>,
pub lang_provider: &'a WayVRLangProvider,
pub globals: WguiGlobals,
pub has_monado: bool,
}
@ -111,31 +110,11 @@ pub enum FrontendTask {
}
impl<T: 'static> Frontend<T> {
pub fn new(mut params: InitParams<T>, data: &mut T) -> anyhow::Result<Frontend<T>> {
let mut assets = Box::new(assets::Asset {});
let font_binary_bold = assets.load_from_path_gzip("Quicksand-Bold.ttf.gz")?;
let font_binary_regular = assets.load_from_path_gzip("Quicksand-Regular.ttf.gz")?;
let font_binary_light = assets.load_from_path_gzip("Quicksand-Light.ttf.gz")?;
let globals = WguiGlobals::new(
assets,
params.lang_provider,
wgui::globals::Defaults::default(),
&WguiFontConfig {
binaries: vec![&font_binary_regular, &font_binary_bold, &font_binary_light],
family_name_sans_serif: "Quicksand",
family_name_serif: "Quicksand",
family_name_monospace: "",
},
PathBuf::new(), //FIXME: pass from somewhere else
)?;
Frontend::update_defaults_from_config(&globals, &mut params.interface, data);
pub fn new(params: InitParams<T>) -> anyhow::Result<Frontend<T>> {
let (layout, state) = wgui::parser::new_layout_from_assets(
&ParseDocumentParams {
globals: globals.clone(),
globals: params.globals.clone(),
path: AssetPath::BuiltIn("gui/dashboard.xml"),
extra: Default::default(),
},
@ -163,7 +142,7 @@ impl<T: 'static> Frontend<T> {
layout,
state,
current_tab: None,
globals,
globals: params.globals.clone(),
tasks,
ticks: 0,
widgets: FrontendWidgets {
@ -196,16 +175,6 @@ impl<T: 'static> Frontend<T> {
self.sounds_to_play.push(sound_type);
}
fn update_defaults_from_config(globals: &WguiGlobals, interface: &mut BoxDashInterface<T>, data: &mut T) {
let config = interface.general_config(data);
let mut globals = globals.get();
let defaults = &mut globals.defaults;
defaults.animation_mult = 1.0 / config.ui_animation_speed;
defaults.gradient_intensity = config.ui_gradient_intensity;
}
fn play_sound(&mut self, audio_system: &mut audio::AudioSystem, sound_type: SoundType) -> anyhow::Result<()> {
let mut assets = self.globals.assets_builtin();
@ -375,7 +344,7 @@ impl<T: 'static> Frontend<T> {
FrontendTask::PlaySound(sound_type) => self.queue_play_sound(sound_type),
FrontendTask::HideDashboard => self.action_hide_dashboard(params.data),
FrontendTask::UpdateWguiDefaultsFromConfig => {
Frontend::update_defaults_from_config(&self.globals, &mut self.interface, params.data)
// Frontend::update_defaults_from_config(&self.globals, &mut self.interface, params.data)
}
};
Ok(())

View File

@ -65,7 +65,7 @@ fn load_testbed(audio_sample_player: &mut audio::SamplePlayer) -> anyhow::Result
let name = std::env::var("TESTBED").unwrap_or_default();
Ok(match name.as_str() {
"dashboard" => Box::new(TestbedDashboard::new()?),
"dashboard" => Box::new(TestbedDashboard::new(assets)?),
"" => Box::new(TestbedGeneric::new(assets)?),
_ => Box::new(TestbedAny::new(assets, &name)?),
})

View File

@ -1,6 +1,11 @@
use crate::testbed::{Testbed, TestbedUpdateParams};
use std::path::PathBuf;
use crate::{
assets,
testbed::{Testbed, TestbedUpdateParams},
};
use dash_frontend::frontend::{self, FrontendUpdateParams};
use wgui::layout::Layout;
use wgui::{font_config::WguiFontConfig, globals::WguiGlobals, layout::Layout};
use wlx_common::{dash_interface_emulated::DashInterfaceEmulated, locale::WayVRLangProvider};
pub struct TestbedDashboard {
@ -8,17 +13,24 @@ pub struct TestbedDashboard {
}
impl TestbedDashboard {
pub fn new() -> anyhow::Result<Self> {
pub fn new(assets: Box<assets::Asset>) -> anyhow::Result<Self> {
let interface = DashInterfaceEmulated::new();
let lang_provider = WayVRLangProvider::default();
let globals = WguiGlobals::new(
assets,
&lang_provider,
wgui::globals::Defaults::default(),
&WguiFontConfig::default(),
PathBuf::new(), // cwd
)?;
let frontend = frontend::Frontend::new(
frontend::InitParams {
interface: Box::new(interface),
has_monado: true,
globals,
lang_provider: &lang_provider,
},
&mut (),
)?;
Ok(Self { frontend })
}

View File

@ -81,9 +81,9 @@ impl DashFrontend {
frontend::InitParams {
interface: Box::new(interface),
lang_provider: &WayVRLangProvider::from_config(&app.session.config),
globals: app.wgui_globals.clone(),
has_monado: matches!(app.xr_backend, XrBackend::OpenXR),
},
app,
)?;
frontend

View File

@ -2,6 +2,7 @@ use glam::Affine3A;
use idmap::IdMap;
use smallvec::{SmallVec, smallvec};
use std::sync::Arc;
use wgui::assets::AssetProvider;
use wgui::log::LogErr;
use wgui::{
drawing, font_config::WguiFontConfig, gfx::WGfx, globals::WguiGlobals, parser::parse_color_hex,
@ -112,6 +113,10 @@ impl AppState {
let mut assets = Box::new(gui::asset::GuiAsset {});
audio_sample_player.register_wgui_samples(assets.as_mut())?;
let font_binary_bold = assets.load_from_path_gzip("Quicksand-Bold.ttf.gz")?;
let font_binary_regular = assets.load_from_path_gzip("Quicksand-Regular.ttf.gz")?;
let font_binary_light = assets.load_from_path_gzip("Quicksand-Light.ttf.gz")?;
let mut defaults = wgui::globals::Defaults::default();
{
@ -131,6 +136,7 @@ impl AppState {
defaults.animation_mult = 1. / session.config.ui_animation_speed;
defaults.rounding_mult = session.config.ui_round_multiplier;
defaults.gradient_intensity = session.config.ui_gradient_intensity;
let dbus = DbusConnector::default();
@ -158,7 +164,12 @@ impl AppState {
assets,
&lang_provider,
defaults,
&WguiFontConfig::default(),
&WguiFontConfig {
binaries: vec![&font_binary_regular, &font_binary_bold, &font_binary_light],
family_name_sans_serif: "Quicksand",
family_name_serif: "Quicksand",
family_name_monospace: "",
},
get_config_file_path(&theme),
)?,
dbus,