mirror of https://github.com/wayvr-org/wayvr.git
dash-frontend: use globals from wayvr instead of creating own
Move fonts to wayvr
This commit is contained in:
parent
2b4a0b6a0d
commit
d1b60ada6f
|
|
@ -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(())
|
||||
|
|
|
|||
|
|
@ -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)?),
|
||||
})
|
||||
|
|
|
|||
|
|
@ -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 })
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Reference in New Issue