Skip to content
Snippets Groups Projects
Verified Commit 6bbbcd60 authored by Louis's avatar Louis :fire:
Browse files

Fix macro exports and exportes utilities

parent f081ac1c
No related branches found
No related tags found
No related merge requests found
......@@ -4,7 +4,7 @@ mod theme;
mod types;
pub(crate) mod utilities;
pub (crate) extern crate bevy;
pub extern crate bevy;
pub extern crate kayak_font;
pub extern crate kayak_ui;
......@@ -37,7 +37,8 @@ pub use styles::{edge_px, pct, px, stretch, val_auto, value};
pub use theme::{tokens, ThemeMapping, ThemeProvider};
pub use types::IconContent;
pub use utilities::{
context, remove_root_ui, widget_update_with_resource, EmptyProps, StateUIRoot,
context, remove_root_ui, remove_tagged_root, widget_update_with_resource, EmptyProps,
StateUIRoot,
};
pub mod prelude {
......
......@@ -19,34 +19,34 @@ pub struct EmptyProps;
#[macro_export]
macro_rules! empty_props {
($name: ident) => {
#[derive(::bevy::prelude::Component, Clone, PartialEq, Default)]
#[derive($crate::bevy::prelude::Component, Clone, PartialEq, Default)]
#[repr(transparent)]
pub struct $name($crate::ui::utilities::EmptyProps);
impl kayak_ui::prelude::Widget for $name {}
pub struct $name($crate::EmptyProps);
impl $crate::kayak_ui::prelude::Widget for $name {}
};
}
#[macro_export]
macro_rules! basic_widget {
($props: ident => $name: ident) => {
#[derive(bevy::prelude::Bundle)]
#[derive($crate::bevy::prelude::Bundle)]
pub struct $name {
pub props: $props,
pub name: ::kayak_ui::prelude::WidgetName,
pub styles: ::kayak_ui::prelude::KStyle,
pub computed_styles: ::kayak_ui::prelude::ComputedStyles,
pub on_event: ::kayak_ui::prelude::OnEvent,
pub name: $crate::kayak_ui::prelude::WidgetName,
pub styles: $crate::kayak_ui::prelude::KStyle,
pub computed_styles: $crate::kayak_ui::prelude::ComputedStyles,
pub on_event: $crate::kayak_ui::prelude::OnEvent,
}
impl std::default::Default for $name {
fn default() -> $name {
let props = $props::default();
$name {
name: kayak_ui::prelude::Widget::get_name(&props),
name: $crate::kayak_ui::prelude::Widget::get_name(&props),
props,
styles: ::kayak_ui::prelude::KStyle::default(),
computed_styles: ::kayak_ui::prelude::ComputedStyles::default(),
on_event: ::kayak_ui::prelude::OnEvent::default(),
styles: $crate::kayak_ui::prelude::KStyle::default(),
computed_styles: $crate::kayak_ui::prelude::ComputedStyles::default(),
on_event: $crate::kayak_ui::prelude::OnEvent::default(),
}
}
}
......@@ -55,26 +55,26 @@ macro_rules! basic_widget {
#[macro_export]
macro_rules! parent_widget {
($props: ident => $name: ident) => {
#[derive(bevy::prelude::Bundle)]
#[derive($crate::bevy::prelude::Bundle)]
pub struct $name {
pub props: $props,
pub name: ::kayak_ui::prelude::WidgetName,
pub styles: ::kayak_ui::prelude::KStyle,
pub computed_styles: ::kayak_ui::prelude::ComputedStyles,
pub children: ::kayak_ui::prelude::KChildren,
pub on_event: ::kayak_ui::prelude::OnEvent,
pub name: $crate::kayak_ui::prelude::WidgetName,
pub styles: $crate::kayak_ui::prelude::KStyle,
pub computed_styles: $crate::kayak_ui::prelude::ComputedStyles,
pub children: $crate::kayak_ui::prelude::KChildren,
pub on_event: $crate::kayak_ui::prelude::OnEvent,
}
impl std::default::Default for $name {
fn default() -> $name {
let props = $props::default();
$name {
name: kayak_ui::prelude::Widget::get_name(&props),
name: $crate::kayak_ui::prelude::Widget::get_name(&props),
props,
styles: ::kayak_ui::prelude::KStyle::default(),
computed_styles: ::kayak_ui::prelude::ComputedStyles::default(),
children: ::kayak_ui::prelude::KChildren::default(),
on_event: ::kayak_ui::prelude::OnEvent::default(),
styles: $crate::kayak_ui::prelude::KStyle::default(),
computed_styles: $crate::kayak_ui::prelude::ComputedStyles::default(),
children: $crate::kayak_ui::prelude::KChildren::default(),
on_event: $crate::kayak_ui::prelude::OnEvent::default(),
}
}
}
......@@ -86,8 +86,8 @@ macro_rules! register_widget {
($ctx: expr, $props: ident, $state: ident, $system: ident) => {{
$ctx.add_widget_data::<$props, $state>();
$ctx.add_widget_system(
::kayak_ui::prelude::Widget::get_name(&$props::default()),
::kayak_ui::prelude::widget_update::<$props, $state>,
$crate::kayak_ui::prelude::Widget::get_name(&$props::default()),
$crate::kayak_ui::prelude::widget_update::<$props, $state>,
$system,
);
}};
......@@ -98,7 +98,7 @@ macro_rules! register_widget_with_update {
($ctx: expr, $props: ident, $state: ident, $system: ident, $update: expr) => {{
$ctx.add_widget_data::<$props, $state>();
$ctx.add_widget_system(
::kayak_ui::prelude::Widget::get_name(&$props::default()),
$crate::kayak_ui::prelude::Widget::get_name(&$props::default()),
$update,
$system,
);
......@@ -110,8 +110,8 @@ macro_rules! register_widget_with_resource {
($ctx: expr, $props: ident, $state: ident, $resource: ident, $system: ident) => {{
$ctx.add_widget_data::<$props, $state>();
$ctx.add_widget_system(
::kayak_ui::prelude::Widget::get_name(&$props::default()),
$crate::ui::utilities::widget_update_with_resource::<$props, $state, $resource>,
$crate::kayak_ui::prelude::Widget::get_name(&$props::default()),
$crate::widget_update_with_resource::<$props, $state, $resource>,
$system,
);
}};
......@@ -122,8 +122,8 @@ macro_rules! register_widget_with_context {
($ctx: expr, $props: ident, $state: path, $context: ident, $system: ident) => {{
$ctx.add_widget_data::<$props, $state>();
$ctx.add_widget_system(
::kayak_ui::prelude::Widget::get_name(&$props::default()),
::kayak_ui::prelude::widget_update_with_context::<$props, $state, $context>,
$crate::kayak_ui::prelude::Widget::get_name(&$props::default()),
$crate::kayak_ui::prelude::widget_update_with_context::<$props, $state, $context>,
$system,
);
}};
......@@ -134,11 +134,11 @@ macro_rules! register_widget_with_many_resources {
($ctx: expr, $props: ident, $state: ident, $system: ident, $($name: ident: $resource: ident),+) => {{
$ctx.add_widget_data::<$props, $state>();
$ctx.add_widget_system(
::kayak_ui::prelude::Widget::get_name(&$props::default()),
$crate::kayak_ui::prelude::Widget::get_name(&$props::default()),
|
::bevy::prelude::In((widget_context, entity, previous_entity)): ::bevy::prelude::In<(::kayak_ui::prelude::KayakWidgetContext, ::bevy::prelude::Entity, ::bevy::prelude::Entity)>,
$( $name: ::bevy::prelude::Res<$resource> ),+,
widget_param: ::kayak_ui::prelude::WidgetParam<$props, $state>,
$crate::bevy::prelude::In((widget_context, entity, previous_entity)): $crate::bevy::prelude::In<($crate::kayak_ui::prelude::KayakWidgetContext, $crate::bevy::prelude::Entity, $crate::bevy::prelude::Entity)>,
$( $name: $crate::bevy::prelude::Res<$resource> ),+,
widget_param: $crate::kayak_ui::prelude::WidgetParam<$props, $state>,
| {
widget_param.has_changed(&widget_context, entity, previous_entity)
$( || $name.is_changed() )+
......@@ -153,12 +153,12 @@ macro_rules! register_complex_widget {
($ctx: expr, $props: ident, $state: ident, $system: ident, R($($r_name: ident: $resource: ident),*), C($($c_name: ident: $context: ident),*)) => {{
$ctx.add_widget_data::<$props, $state>();
$ctx.add_widget_system(
::kayak_ui::prelude::Widget::get_name(&$props::default()),
$crate::kayak_ui::prelude::Widget::get_name(&$props::default()),
|
::bevy::prelude::In((widget_context, entity, previous_entity)): ::bevy::prelude::In<(::kayak_ui::prelude::KayakWidgetContext, ::bevy::prelude::Entity, ::bevy::prelude::Entity)>,
$( $r_name: ::bevy::prelude::Res<$resource> ),*,
$( $c_name: ::bevy::prelude::Query<::bevy::prelude::Entity, ::bevy::prelude::Changed<$context>> ),*,
widget_param: ::kayak_ui::prelude::WidgetParam<$props, $state>,
$crate::bevy::prelude::In((widget_context, entity, previous_entity)): $crate::bevy::prelude::In<($crate::kayak_ui::prelude::KayakWidgetContext, $crate::bevy::prelude::Entity, $crate::bevy::prelude::Entity)>,
$( $r_name: $crate::bevy::prelude::Res<$resource> ),*,
$( $c_name: $crate::bevy::prelude::Query<$crate::bevy::prelude::Entity, $crate::bevy::prelude::Changed<$context>> ),*,
widget_param: $crate::kayak_ui::prelude::WidgetParam<$props, $state>,
| {
$(
if let Some(context_entity) = widget_context.get_context_entity::<$context>(entity) {
......@@ -200,6 +200,15 @@ pub fn remove_root_ui(
}
}
pub fn remove_tagged_root<T: Component>(
mut commands: Commands,
query: Query<Entity, (With<KayakRootContext>, With<T>)>,
) {
for entity in &query {
commands.entity(entity).despawn_recursive();
}
}
pub mod context {
use kayak_ui::prelude::{EmptyState, KayakRootContext};
use kayak_ui::widgets::KayakWidgetsContextPlugin;
......@@ -259,7 +268,7 @@ pub type OnEventParams = In<(EventDispatcherContext, WidgetState, Event, Entity)
macro_rules! on_button_click {
($param_type: ty, $func_body: expr) => {
$crate::kayak_ui::prelude::OnEvent::new(
move |::bevy::prelude::In((
move |$crate::bevy::prelude::In((
event_dispatcher_context,
_widget_state,
event,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment