From ac9bfc9fc4b9cbd712b4170aee551675b1bb31c1 Mon Sep 17 00:00:00 2001 From: galister <22305755+galister@users.noreply.github.com> Date: Mon, 5 Jan 2026 20:36:44 +0900 Subject: [PATCH] bar dropdown backend logic --- rustfmt.toml | 1 + wgui/src/assets.rs | 4 +- wgui/src/log.rs | 36 ++--- wgui/src/parser/mod.rs | 13 +- wlx-overlay-s/src/assets/gui/keyboard.xml | 91 ++++++++++--- wlx-overlay-s/src/assets/lang/en.json | 6 + wlx-overlay-s/src/backend/task.rs | 2 +- wlx-overlay-s/src/backend/wayvr/mod.rs | 121 +++++++++++------ wlx-overlay-s/src/backend/wayvr/process.rs | 33 +++-- wlx-overlay-s/src/gui/panel/button.rs | 128 +++++++++++++++++- wlx-overlay-s/src/gui/panel/mod.rs | 2 +- wlx-overlay-s/src/ipc/ipc_server.rs | 4 +- wlx-overlay-s/src/overlays/dashboard.rs | 7 +- .../src/overlays/keyboard/builder.rs | 69 +++++++--- wlx-overlay-s/src/overlays/keyboard/mod.rs | 38 ++++-- wlx-overlay-s/src/overlays/wayvr.rs | 27 +++- wlx-overlay-s/src/windowing/backend.rs | 2 + wlx-overlay-s/src/windowing/manager.rs | 77 ++++++----- 18 files changed, 476 insertions(+), 185 deletions(-) diff --git a/rustfmt.toml b/rustfmt.toml index 3501136..2083782 100644 --- a/rustfmt.toml +++ b/rustfmt.toml @@ -1 +1,2 @@ style_edition = "2024" +edition = "2024" diff --git a/wgui/src/assets.rs b/wgui/src/assets.rs index c7cda15..aa90837 100644 --- a/wgui/src/assets.rs +++ b/wgui/src/assets.rs @@ -3,7 +3,7 @@ use std::ffi::OsStr; use std::io::Read; use std::path::{Component, Path, PathBuf}; -#[derive(Clone, Copy)] +#[derive(Debug, Clone, Copy)] pub enum AssetPath<'a> { WguiInternal(&'a str), // tied to internal wgui AssetProvider. Used internally BuiltIn(&'a str), // tied to user AssetProvider @@ -12,7 +12,7 @@ pub enum AssetPath<'a> { } // see AssetPath above for documentation -#[derive(Clone)] +#[derive(Debug, Clone)] pub enum AssetPathOwned { WguiInternal(PathBuf), BuiltIn(PathBuf), diff --git a/wgui/src/log.rs b/wgui/src/log.rs index 2e680e6..1bf87ab 100644 --- a/wgui/src/log.rs +++ b/wgui/src/log.rs @@ -1,27 +1,17 @@ use std::fmt::Debug; pub trait LogErr { - fn log_err(self) -> Self; - fn log_err_with(self, additional: &str) -> Self; - fn log_warn(self) -> Self; - fn log_warn_with(self, additional: &str) -> Self; + fn log_err(self, additional: &str) -> Self; + fn log_err_with(self, additional: &D) -> Self; + fn log_warn(self, additional: &str) -> Self; + fn log_warn_with(self, additional: &D) -> Self; } impl LogErr for Result where E: Debug + Send + Sync + 'static, { - fn log_warn(self) -> Result { - match self { - Ok(ok) => Ok(ok), - Err(error) => { - log::warn!("{error:?}"); - Err(error) - } - } - } - - fn log_warn_with(self, additional: &str) -> Result { + fn log_warn(self, additional: &str) -> Result { match self { Ok(ok) => Ok(ok), Err(error) => { @@ -31,17 +21,17 @@ where } } - fn log_err(self) -> Result { + fn log_warn_with(self, additional: &D) -> Result { match self { Ok(ok) => Ok(ok), Err(error) => { - log::error!("{error:?}"); + log::warn!("{additional:?}: {error:?}"); Err(error) } } } - fn log_err_with(self, additional: &str) -> Result { + fn log_err(self, additional: &str) -> Result { match self { Ok(ok) => Ok(ok), Err(error) => { @@ -50,4 +40,14 @@ where } } } + + fn log_err_with(self, additional: &D) -> Self { + match self { + Ok(ok) => Ok(ok), + Err(error) => { + log::error!("{additional:?}: {error:?}"); + Err(error) + } + } + } } diff --git a/wgui/src/parser/mod.rs b/wgui/src/parser/mod.rs index af81326..ea52663 100644 --- a/wgui/src/parser/mod.rs +++ b/wgui/src/parser/mod.rs @@ -10,16 +10,11 @@ mod widget_rectangle; mod widget_sprite; use crate::{ - assets::{normalize_path, AssetPath, AssetPathOwned}, - components::{Component, ComponentWeak}, - drawing::{self}, - globals::WguiGlobals, - layout::{Layout, LayoutParams, LayoutState, Widget, WidgetID, WidgetMap, WidgetPair}, - parser::{ + assets::{normalize_path, AssetPath, AssetPathOwned}, components::{Component, ComponentWeak}, drawing::{self}, globals::WguiGlobals, layout::{Layout, LayoutParams, LayoutState, Widget, WidgetID, WidgetMap, WidgetPair}, log::LogErr, parser::{ component_button::parse_component_button, component_checkbox::{parse_component_checkbox, CheckboxKind}, component_radio_group::parse_component_radio_group, component_slider::parse_component_slider, widget_div::parse_widget_div, widget_image::parse_widget_image, widget_label::parse_widget_label, widget_rectangle::parse_widget_rectangle, widget_sprite::parse_widget_sprite - }, - widget::ConstructEssentials, + }, widget::ConstructEssentials }; +use anyhow::Context; use ouroboros::self_referencing; use smallvec::SmallVec; use std::{cell::RefMut, collections::HashMap, path::Path, rc::Rc}; @@ -1109,7 +1104,7 @@ fn get_doc_from_asset_path( allow_dtd: true, ..Default::default() }; - roxmltree::Document::parse_with_options(xml, opt).unwrap() + roxmltree::Document::parse_with_options(xml, opt).context("Unable to parse XML").log_err_with(&asset_path).unwrap() })); let root = document.borrow_doc().root(); diff --git a/wlx-overlay-s/src/assets/gui/keyboard.xml b/wlx-overlay-s/src/assets/gui/keyboard.xml index 22873d2..8337d98 100644 --- a/wlx-overlay-s/src/assets/gui/keyboard.xml +++ b/wlx-overlay-s/src/assets/gui/keyboard.xml @@ -13,11 +13,6 @@ width="${width}" height="${height}" min_width="${width}" min_height="${height}" max_width="${width}" max_height="${height}" /> - - - - @@ -85,37 +80,91 @@ + + + + + + + + +