use bevy::prelude::*;
use bevy_extended_ui::example_utils::make_app;
use bevy_extended_ui::html::{HtmlEvent, HtmlSource};
use bevy_extended_ui::io::HtmlAsset;
use bevy_extended_ui::registry::UiRegistry;
use bevy_extended_ui::styles::{CssID, IconPlace};
use bevy_extended_ui::widgets::UIWidgetState;
use bevy_extended_ui_macros::html_fn;
fn main() {
let mut app = make_app("Debug Html UI - test");
app.add_systems(
Startup,
|mut reg: ResMut<UiRegistry>, asset_server: Res<AssetServer>| {
let handle: Handle<HtmlAsset> = asset_server.load("examples/button.html");
reg.add_and_use("button_test".to_string(), HtmlSource::from_handle(handle));
},
);
app.run();
}
#[html_fn("init_me_btn")]
fn init_me_btn(In(target): In<HtmlEvent>) {
info!("init_me_btn called for entity {:?}", target.entity);
}
#[html_fn("focus_me")]
fn focus_me(In(target): In<HtmlEvent>) {
info!("focus_me called for entity {:?}", target.entity);
}
#[html_fn("click_me_btn")]
fn click_me_btn(
In(_target): In<HtmlEvent>,
mut query: Query<
(
&mut UIWidgetState,
&CssID,
&mut bevy_extended_ui::widgets::Button,
),
With<CssID>,
>,
) {
for (mut state, id, mut button) in query.iter_mut() {
if id.0.eq("fn_q_key") {
state.disabled = !state.disabled;
if state.disabled {
button.text = "Im Disabled".to_string();
} else {
button.text = "Im Enabled".to_string();
}
}
}
}
#[html_fn("enter_me_btn")]
fn enter_me_btn(
In(target): In<HtmlEvent>,
mut query: Query<(Entity, &mut bevy_extended_ui::widgets::Button), With<CssID>>,
) {
for (entity, mut button) in query.iter_mut() {
if entity.eq(&target.entity) {
button.icon_place = IconPlace::Right;
}
}
}
#[html_fn("leave_me_btn")]
fn leave_me_btn(
In(target): In<HtmlEvent>,
mut query: Query<(Entity, &mut bevy_extended_ui::widgets::Button), With<CssID>>,
) {
for (entity, mut button) in query.iter_mut() {
if entity.eq(&target.entity) {
button.icon_place = IconPlace::Left;
}
}
}