From 347f5b35940f623adce59743916440dfdf4dc88d Mon Sep 17 00:00:00 2001 From: StarArawn <toasterthegamer@gmail.com> Date: Tue, 21 Dec 2021 09:13:46 -0500 Subject: [PATCH] Restructure workspace. Removed weird internal feature. --- Cargo.lock | 51 +---------- Cargo.toml | 13 +-- examples/bevy.rs | 2 +- examples/clipping.rs | 2 +- examples/counter.rs | 2 +- examples/full_ui.rs | 2 +- examples/global_counter.rs | 2 +- examples/if.rs | 2 +- examples/image.rs | 2 +- examples/nine_patch.rs | 2 +- examples/text_box.rs | 2 +- examples/todo/add_button.rs | 2 +- examples/todo/card.rs | 4 +- examples/todo/cards.rs | 4 +- examples/todo/delete_button.rs | 2 +- examples/todo/todo.rs | 2 +- examples/vec_widget.rs | 5 +- kayak_core/Cargo.toml | 3 - kayak_core/examples/diff_test.rs | 89 ------------------- kayak_core/examples/test3.rs | 65 -------------- kayak_core/src/lib.rs | 1 - kayak_render_macros/Cargo.toml | 2 +- kayak_render_macros/src/children.rs | 12 ++- kayak_render_macros/src/function_component.rs | 12 ++- kayak_render_macros/src/tags.rs | 12 ++- kayak_widgets/.gitignore | 7 -- kayak_widgets/Cargo.toml | 13 --- src/lib.rs | 3 + {kayak_widgets/src => src/widgets}/app.rs | 12 +-- .../src => src/widgets}/background.rs | 2 +- {kayak_widgets/src => src/widgets}/button.rs | 2 +- {kayak_widgets/src => src/widgets}/clip.rs | 2 +- {kayak_widgets/src => src/widgets}/element.rs | 2 +- .../src => src/widgets}/if_element.rs | 2 +- {kayak_widgets/src => src/widgets}/image.rs | 2 +- .../src/lib.rs => src/widgets/mod.rs | 0 .../src => src/widgets}/nine_patch.rs | 2 +- {kayak_widgets/src => src/widgets}/text.rs | 2 +- .../src => src/widgets}/text_box.rs | 4 +- {kayak_widgets/src => src/widgets}/window.rs | 4 +- 40 files changed, 69 insertions(+), 287 deletions(-) delete mode 100644 kayak_core/examples/diff_test.rs delete mode 100644 kayak_core/examples/test3.rs delete mode 100644 kayak_widgets/.gitignore delete mode 100644 kayak_widgets/Cargo.toml rename {kayak_widgets/src => src/widgets}/app.rs (83%) rename {kayak_widgets/src => src/widgets}/background.rs (95%) rename {kayak_widgets/src => src/widgets}/button.rs (97%) rename {kayak_widgets/src => src/widgets}/clip.rs (96%) rename {kayak_widgets/src => src/widgets}/element.rs (94%) rename {kayak_widgets/src => src/widgets}/if_element.rs (80%) rename {kayak_widgets/src => src/widgets}/image.rs (94%) rename kayak_widgets/src/lib.rs => src/widgets/mod.rs (100%) rename {kayak_widgets/src => src/widgets}/nine_patch.rs (95%) rename {kayak_widgets/src => src/widgets}/text.rs (95%) rename {kayak_widgets/src => src/widgets}/text_box.rs (98%) rename {kayak_widgets/src => src/widgets}/window.rs (97%) diff --git a/Cargo.lock b/Cargo.lock index 6c03d61..fd50046 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1252,27 +1252,6 @@ dependencies = [ "num_cpus", ] -[[package]] -name = "diff-struct" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30a0f0aafc8da0d598388b1897310646f45f47f17e31d581b4390f9dd88e826" -dependencies = [ - "diff_derive", - "serde", -] - -[[package]] -name = "diff_derive" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f9c37d395456d9c1785499421c6288931b6e3dbc2500acb95b8adaa0e69db3" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "difference" version = "1.0.0" @@ -1381,16 +1360,6 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" -[[package]] -name = "fontdue" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8669141fd879e023ac6fcfe1d90dfe3f83ca7e322781ddf3f5be59147e4b8113" -dependencies = [ - "hashbrown", - "ttf-parser 0.12.3", -] - [[package]] name = "foreign-types" version = "0.3.2" @@ -1873,9 +1842,7 @@ version = "0.1.0" dependencies = [ "as-any", "derivative", - "diff-struct", "flo_binding", - "fontdue", "kayak_render_macros", "morphorm", "resources", @@ -1900,6 +1867,7 @@ version = "0.1.0" dependencies = [ "kayak_core", "pretty_assertions", + "proc-macro-crate 1.1.0", "proc-macro-error", "proc-macro2", "quote", @@ -1915,15 +1883,6 @@ dependencies = [ "kayak_core", "kayak_font", "kayak_render_macros", - "kayak_widgets", -] - -[[package]] -name = "kayak_widgets" -version = "0.1.0" -dependencies = [ - "bevy", - "kayak_ui", ] [[package]] @@ -2473,7 +2432,7 @@ version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "65ee3f72636e6f164cc41c9f9057f4e58c4e13507699ea7f5e5242b64b8198ee" dependencies = [ - "ttf-parser 0.13.4", + "ttf-parser", ] [[package]] @@ -3185,12 +3144,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "ttf-parser" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ae2f58a822f08abdaf668897e96a5656fe72f5a9ce66422423e8849384872e6" - [[package]] name = "ttf-parser" version = "0.13.4" diff --git a/Cargo.toml b/Cargo.toml index 4357ec4..fbbbdaf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,20 +5,14 @@ edition = "2021" resolver = "2" [workspace] -members = [ - "bevy_kayak_ui", - "kayak_widgets", - "kayak_core", - "kayak_render_macros", - "kayak_font", -] +members = ["bevy_kayak_ui", "kayak_core", "kayak_render_macros", "kayak_font"] [features] default = ["bevy_renderer"] -bevy_renderer = ["bevy_kayak_ui", "kayak_font"] -internal = ["kayak_core/internal", "kayak_render_macros/internal"] +bevy_renderer = ["bevy_kayak_ui", "kayak_font", "bevy"] [dependencies] +bevy = { git = "https://github.com/bevyengine/bevy", rev = "9a16a4d01830297987db40b45f03382ed3acad62", optional = true } kayak_core = { path = "kayak_core" } bevy_kayak_ui = { path = "bevy_kayak_ui", optional = true } kayak_font = { path = "kayak_font", optional = true } @@ -26,7 +20,6 @@ kayak_render_macros = { path = "kayak_render_macros" } [dev-dependencies] bevy = { git = "https://github.com/bevyengine/bevy", rev = "9a16a4d01830297987db40b45f03382ed3acad62" } -kayak_widgets = { path = "kayak_widgets", features = ["bevy_renderer"] } [[example]] name = "todo" diff --git a/examples/bevy.rs b/examples/bevy.rs index 99f9f43..20c50e8 100644 --- a/examples/bevy.rs +++ b/examples/bevy.rs @@ -6,7 +6,7 @@ use bevy::{ use kayak_ui::bevy::{BevyContext, BevyKayakUIPlugin, FontMapping, UICameraBundle}; use kayak_ui::core::Index; use kayak_ui::core::{render, rsx, widget}; -use kayak_widgets::{App, Window}; +use kayak_ui::widgets::{App, Window}; #[widget] fn CustomWidget() { diff --git a/examples/clipping.rs b/examples/clipping.rs index 84d2796..96c5922 100644 --- a/examples/clipping.rs +++ b/examples/clipping.rs @@ -10,7 +10,7 @@ use kayak_ui::core::{ styles::{Style, StyleProp, Units}, Index, }; -use kayak_widgets::{App, Clip, NinePatch, Text}; +use kayak_ui::widgets::{App, Clip, NinePatch, Text}; fn startup( mut commands: Commands, diff --git a/examples/counter.rs b/examples/counter.rs index 8df23d6..4c829c4 100644 --- a/examples/counter.rs +++ b/examples/counter.rs @@ -9,7 +9,7 @@ use kayak_ui::core::{ styles::{Style, StyleProp, Units}, use_state, widget, Bound, EventType, Index, MutableBound, OnEvent, }; -use kayak_widgets::{App, Button, Text, Window}; +use kayak_ui::widgets::{App, Button, Text, Window}; #[widget] fn Counter(context: &mut KayakContext) { diff --git a/examples/full_ui.rs b/examples/full_ui.rs index b32f72e..9c8a445 100644 --- a/examples/full_ui.rs +++ b/examples/full_ui.rs @@ -10,7 +10,7 @@ use kayak_ui::core::{ styles::{LayoutType, Style, StyleProp, Units}, widget, Bound, Children, EventType, Index, MutableBound, OnEvent, }; -use kayak_widgets::{App, NinePatch, Text}; +use kayak_ui::widgets::{App, NinePatch, Text}; #[widget] fn BlueButton(context: KayakContext, children: Children, styles: Option<Style>) { diff --git a/examples/global_counter.rs b/examples/global_counter.rs index e6f0ee7..072b7d8 100644 --- a/examples/global_counter.rs +++ b/examples/global_counter.rs @@ -5,7 +5,7 @@ use bevy::{ }; use kayak_ui::bevy::{BevyContext, BevyKayakUIPlugin, FontMapping, UICameraBundle}; use kayak_ui::core::{bind, render, rsx, widget, Binding, Bound, Index, MutableBound}; -use kayak_widgets::{App, Text, Window}; +use kayak_ui::widgets::{App, Text, Window}; #[derive(Clone, PartialEq)] struct GlobalCount(pub u32); diff --git a/examples/if.rs b/examples/if.rs index 2fb918b..2377188 100644 --- a/examples/if.rs +++ b/examples/if.rs @@ -9,7 +9,7 @@ use kayak_ui::core::{ styles::{Style, StyleProp, Units}, widget, Bound, EventType, Index, MutableBound, OnEvent, }; -use kayak_widgets::{App, Button, If, Text, Window}; +use kayak_ui::widgets::{App, Button, If, Text, Window}; #[widget] fn Removal(context: &mut KayakContext) { diff --git a/examples/image.rs b/examples/image.rs index e8ca07f..9ec14ed 100644 --- a/examples/image.rs +++ b/examples/image.rs @@ -9,7 +9,7 @@ use kayak_ui::core::{ styles::{Style, StyleProp, Units}, Index, }; -use kayak_widgets::{App, Image}; +use kayak_ui::widgets::{App, Image}; fn startup( mut commands: Commands, diff --git a/examples/nine_patch.rs b/examples/nine_patch.rs index 0262434..0498f7a 100644 --- a/examples/nine_patch.rs +++ b/examples/nine_patch.rs @@ -10,7 +10,7 @@ use kayak_ui::core::{ styles::{Style, StyleProp, Units}, Index, }; -use kayak_widgets::{App, NinePatch}; +use kayak_ui::widgets::{App, NinePatch}; fn startup( mut commands: Commands, diff --git a/examples/text_box.rs b/examples/text_box.rs index bbf01ec..1a1ffe3 100644 --- a/examples/text_box.rs +++ b/examples/text_box.rs @@ -9,7 +9,7 @@ use kayak_ui::core::{ styles::{Style, StyleProp, Units}, widget, Bound, Index, MutableBound, }; -use kayak_widgets::{App, OnChange, TextBox, Window}; +use kayak_ui::widgets::{App, OnChange, TextBox, Window}; #[widget] fn TextBoxExample(context: &mut KayakContext) { diff --git a/examples/todo/add_button.rs b/examples/todo/add_button.rs index febec97..3aeec12 100644 --- a/examples/todo/add_button.rs +++ b/examples/todo/add_button.rs @@ -6,7 +6,7 @@ use kayak_ui::core::{ use_state, widget, Bound, Children, EventType, MutableBound, OnEvent, }; -use kayak_widgets::{Background, Text}; +use kayak_ui::widgets::{Background, Text}; #[widget] pub fn AddButton(children: Children, styles: Option<Style>) { diff --git a/examples/todo/card.rs b/examples/todo/card.rs index 15c6d03..06cf221 100644 --- a/examples/todo/card.rs +++ b/examples/todo/card.rs @@ -1,9 +1,9 @@ -use kayak_core::{ +use kayak_ui::core::{ rsx, styles::{LayoutType, Style, StyleProp, Units}, widget, Color, EventType, Handler, OnEvent, }; -use kayak_widgets::{Background, Text}; +use kayak_ui::widgets::{Background, Text}; use super::delete_button::DeleteButton; diff --git a/examples/todo/cards.rs b/examples/todo/cards.rs index 5307aba..96b6661 100644 --- a/examples/todo/cards.rs +++ b/examples/todo/cards.rs @@ -1,5 +1,5 @@ -use kayak_core::{constructor, rsx, widget, Handler, VecTracker}; -use kayak_widgets::Element; +use kayak_ui::core::{constructor, rsx, widget, Handler, VecTracker}; +use kayak_ui::widgets::Element; use super::{card::Card, Todo}; diff --git a/examples/todo/delete_button.rs b/examples/todo/delete_button.rs index e7a5971..3720ba4 100644 --- a/examples/todo/delete_button.rs +++ b/examples/todo/delete_button.rs @@ -6,7 +6,7 @@ use kayak_ui::core::{ use_state, widget, Bound, Children, EventType, MutableBound, OnEvent, }; -use kayak_widgets::{Background, Text}; +use kayak_ui::widgets::{Background, Text}; #[widget] pub fn DeleteButton(children: Children, styles: Option<Style>) { diff --git a/examples/todo/todo.rs b/examples/todo/todo.rs index 4e16a21..de0c594 100644 --- a/examples/todo/todo.rs +++ b/examples/todo/todo.rs @@ -9,7 +9,7 @@ use kayak_ui::core::{ styles::{LayoutType, Style, StyleProp, Units}, use_state, widget, Bound, EventType, Handler, Index, MutableBound, OnEvent, }; -use kayak_widgets::{App, Element, OnChange, TextBox, Window}; +use kayak_ui::widgets::{App, Element, OnChange, TextBox, Window}; mod add_button; mod card; diff --git a/examples/vec_widget.rs b/examples/vec_widget.rs index 03d5f2f..eddaa6a 100644 --- a/examples/vec_widget.rs +++ b/examples/vec_widget.rs @@ -3,10 +3,9 @@ use bevy::{ window::WindowDescriptor, DefaultPlugins, }; -use kayak_core::constructor; use kayak_ui::bevy::{BevyContext, BevyKayakUIPlugin, FontMapping, UICameraBundle}; -use kayak_ui::core::{render, Index, VecTracker}; -use kayak_widgets::{App, Text}; +use kayak_ui::core::{constructor, render, Index, VecTracker}; +use kayak_ui::widgets::{App, Text}; fn startup( mut commands: Commands, diff --git a/kayak_core/Cargo.toml b/kayak_core/Cargo.toml index cfc3d80..5baddb0 100644 --- a/kayak_core/Cargo.toml +++ b/kayak_core/Cargo.toml @@ -7,14 +7,11 @@ edition = "2021" [features] default = [] -internal = ["kayak_render_macros/internal"] [dependencies] as-any = "0.2" -diff-struct = "0.3" derivative = "2.2" flo_binding = { git = "https://github.com/StarArawn/flo_binding.git", rev = "c78431a56df5ec082b7e1c271871e6c0ac75e81e" } -fontdue = "0.6" kayak_render_macros = { path = "../kayak_render_macros" } morphorm = { git = "https://github.com/geom3trik/morphorm", rev = "1243152d4cebea46fd3e5098df26402c73acae91" } resources = "1.1" diff --git a/kayak_core/examples/diff_test.rs b/kayak_core/examples/diff_test.rs deleted file mode 100644 index 68ac8fb..0000000 --- a/kayak_core/examples/diff_test.rs +++ /dev/null @@ -1,89 +0,0 @@ -use kayak_core::{tree::Tree, widget, Arena, Index, Widget}; - -#[widget] -fn Widget1() {} - -pub fn main() { - let widget1 = Widget1 { - id: Index::default(), - styles: None, - children: None, - on_event: None, - }; - - let widget2 = Widget1 { - id: Index::default(), - styles: None, - children: None, - on_event: None, - }; - - let widget3 = Widget1 { - id: Index::default(), - styles: None, - children: None, - on_event: None, - }; - - let widget4 = Widget1 { - id: Index::default(), - styles: None, - children: None, - on_event: None, - }; - - // let widget5 = Widget1 { - // id: Index::default(), - // styles: None, - // children: None, - // on_event: None, - // }; - - let mut widgets = Arena::<Box<dyn Widget>>::default(); - let widget1_id = widgets.insert(Box::new(widget1)); - let widget2_id = widgets.insert(Box::new(widget2)); - let widget3_id = widgets.insert(Box::new(widget3)); - let widget4_id = widgets.insert(Box::new(widget4)); - // let widget5_id = widgets.insert(Box::new(widget5)); - - let mut tree1 = Tree::default(); - tree1.add(widget1_id, None); - tree1.add(widget2_id, Some(widget1_id)); - tree1.add(widget3_id, Some(widget2_id)); - // tree1.add(1, widget3_id, Some(widget1_id)); - // tree1.add(2, widget4_id, Some(widget1_id)); - - let mut tree2 = Tree::default(); - tree2.add(widget1_id, None); - tree2.add(widget2_id, Some(widget1_id)); - // tree2.add(0, widget3_id, Some(widget1_id)); - // tree2.add(1, widget4_id, Some(widget1_id)); - // tree2.add(2, widget5_id, Some(widget1_id)); - - let changes = tree1.diff_children(&tree2, widget1_id); - dbg!(&changes); - tree1.merge(&tree2, widget1_id, changes); - - let changes = tree1.diff_children(&tree2, widget1_id); - - dbg!(&changes); - - assert!(tree1 == tree2); - - let mut tree1 = Tree::default(); - tree1.add(widget1_id, None); - tree1.add(widget2_id, Some(widget1_id)); - tree1.add(widget3_id, Some(widget2_id)); - - let mut tree2 = Tree::default(); - tree2.add(widget1_id, None); - tree2.add(widget2_id, Some(widget1_id)); - tree2.add(widget4_id, Some(widget2_id)); - - let changes = tree1.diff_children(&tree2, widget1_id); - dbg!(&changes); - - tree1.merge(&tree2, widget1_id, changes); - let differences = tree1.diff_children(&tree2, widget1_id); - dbg!(differences); -} diff --git a/kayak_core/examples/test3.rs b/kayak_core/examples/test3.rs deleted file mode 100644 index e88e0ef..0000000 --- a/kayak_core/examples/test3.rs +++ /dev/null @@ -1,65 +0,0 @@ -use kayak_core::color::Color; -use kayak_core::context::KayakContext; -use kayak_core::render_command::RenderCommand; -use kayak_core::styles::{Style, StyleProp}; -use kayak_core::{rsx, widget, Bound, Children, Index, MutableBound}; -use morphorm::{PositionType, Units}; - -#[widget] -fn MyWidget(context: &mut KayakContext, children: Children) { - let number = context.create_state::<u32>(0).unwrap(); - let my_styles = Style { - render_command: StyleProp::Value(RenderCommand::Quad), - width: StyleProp::Value(Units::Pixels(300.0)), - height: StyleProp::Value(Units::Pixels(300.0)), - background_color: StyleProp::Value(Color::BLACK), - ..Style::default() - }; - rsx! { - <MyWidget2 styles={Some(my_styles)} test={number.get()}> - {children} - </MyWidget2> - } -} - -#[widget] -fn MyWidget2(test: u32, children: Children) { - dbg!(test); - rsx! { - <> - {children} - </> - } -} - -fn main() { - let mut context = KayakContext::new(); - - let my_widget = MyWidget { - id: Index::default(), - children: None, - styles: Some(Style { - position_type: StyleProp::Value(PositionType::SelfDirected), - width: StyleProp::Value(Units::Pixels(1280.0)), - height: StyleProp::Value(Units::Pixels(720.0)), - ..Style::default() - }), - on_event: None, - }; - - let (_, widget_id) = context.widget_manager.create_widget(0, my_widget, None); - - let mut my_widget = context.widget_manager.take(widget_id); - my_widget.render(&mut context); - context.set_current_id(widget_id); - let number = context.create_state::<u32>(0).unwrap(); - number.set(1); - my_widget.render(&mut context); - context.widget_manager.repossess(my_widget); - - context.widget_manager.render(); - - context.widget_manager.calculate_layout(); - - dbg!(context.widget_manager.build_render_primitives()); -} diff --git a/kayak_core/src/lib.rs b/kayak_core/src/lib.rs index 9aa48f8..de1758f 100644 --- a/kayak_core/src/lib.rs +++ b/kayak_core/src/lib.rs @@ -26,7 +26,6 @@ pub use event::*; pub use fragment::Fragment; pub use generational_arena::{Arena, Index}; pub use input_event::*; -pub use kayak_render_macros::{constructor, render, rsx, use_state, widget}; pub use keys::KeyCode; pub use resources::Resources; pub use tree::{Tree, WidgetTree}; diff --git a/kayak_render_macros/Cargo.toml b/kayak_render_macros/Cargo.toml index b8539a0..3866bb4 100644 --- a/kayak_render_macros/Cargo.toml +++ b/kayak_render_macros/Cargo.toml @@ -8,13 +8,13 @@ proc-macro = true [features] default = [] -internal = [] [dependencies] syn = { version = "1.0", features = ["full"] } quote = "1.0" proc-macro2 = "1.0" proc-macro-error = "1.0" +proc-macro-crate = "1.1" [dev-dependencies] kayak_core = { path = "../kayak_core", version = "0.1.0" } diff --git a/kayak_render_macros/src/children.rs b/kayak_render_macros/src/children.rs index 0d1aea6..577ed74 100644 --- a/kayak_render_macros/src/children.rs +++ b/kayak_render_macros/src/children.rs @@ -52,10 +52,14 @@ impl Children { } pub fn as_option_of_tuples_tokens(&self) -> proc_macro2::TokenStream { - #[cfg(feature = "internal")] - let kayak_core = quote! { kayak_core }; - #[cfg(not(feature = "internal"))] - let kayak_core = quote! { kayak_ui::core }; + let found_crate = proc_macro_crate::crate_name("kayak_core").unwrap(); + let kayak_core = match found_crate { + proc_macro_crate::FoundCrate::Itself => quote! { crate }, + proc_macro_crate::FoundCrate::Name(name) => { + let ident = syn::Ident::new(&name, proc_macro2::Span::call_site()); + quote!(#ident) + } + }; let children_quotes: Vec<_> = self .nodes diff --git a/kayak_render_macros/src/function_component.rs b/kayak_render_macros/src/function_component.rs index 703f54b..a30d04e 100644 --- a/kayak_render_macros/src/function_component.rs +++ b/kayak_render_macros/src/function_component.rs @@ -20,10 +20,14 @@ pub fn create_function_widget(f: syn::ItemFn, widget_arguments: WidgetArguments) let block = f.block; let vis = f.vis; - #[cfg(feature = "internal")] - let kayak_core = quote! { kayak_core }; - #[cfg(not(feature = "internal"))] - let kayak_core = quote! { kayak_ui::core }; + let found_crate = proc_macro_crate::crate_name("kayak_core").unwrap(); + let kayak_core = match found_crate { + proc_macro_crate::FoundCrate::Itself => quote! { crate }, + proc_macro_crate::FoundCrate::Name(name) => { + let ident = syn::Ident::new(&name, proc_macro2::Span::call_site()); + quote!(#ident) + } + }; let focusable = widget_arguments.focusable; diff --git a/kayak_render_macros/src/tags.rs b/kayak_render_macros/src/tags.rs index 0448e81..508e774 100644 --- a/kayak_render_macros/src/tags.rs +++ b/kayak_render_macros/src/tags.rs @@ -12,10 +12,14 @@ pub struct OpenTag { } fn name_or_fragment(maybe_name: Result<syn::Path>) -> syn::Path { - #[cfg(feature = "internal")] - let kayak_core = "kayak_core"; - #[cfg(not(feature = "internal"))] - let kayak_core = "kayak_ui::core"; + let found_crate = proc_macro_crate::crate_name("kayak_core").unwrap(); + let kayak_core = match found_crate { + proc_macro_crate::FoundCrate::Itself => quote! { crate }, + proc_macro_crate::FoundCrate::Name(name) => { + let ident = syn::Ident::new(&name, proc_macro2::Span::call_site()); + quote!(#ident) + } + }; maybe_name.unwrap_or_else(|_| { syn::parse_str::<syn::Path>(&format!("::{}::Fragment", kayak_core)).unwrap() diff --git a/kayak_widgets/.gitignore b/kayak_widgets/.gitignore deleted file mode 100644 index cdd43ad..0000000 --- a/kayak_widgets/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -target - -# These are backup files generated by rustfmt -**/*.rs.bk - -# MSVC Windows builds of rustc generate these, which store debugging information -*.pdb \ No newline at end of file diff --git a/kayak_widgets/Cargo.toml b/kayak_widgets/Cargo.toml deleted file mode 100644 index eb37067..0000000 --- a/kayak_widgets/Cargo.toml +++ /dev/null @@ -1,13 +0,0 @@ -[package] -name = "kayak_widgets" -version = "0.1.0" -edition = "2021" -resolver = "2" - -[features] -default = [] -bevy_renderer = ["bevy", "kayak_ui/bevy_renderer"] - -[dependencies] -kayak_ui = { path = "../", version = "0.1.0" } -bevy = { git = "https://github.com/bevyengine/bevy", rev = "9a16a4d01830297987db40b45f03382ed3acad62", optional = true } diff --git a/src/lib.rs b/src/lib.rs index c9e0965..b9cbe37 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,5 +1,6 @@ pub mod core { pub use kayak_core::*; + pub use kayak_render_macros::{constructor, render, rsx, use_state, widget}; } #[cfg(feature = "bevy_renderer")] @@ -11,3 +12,5 @@ pub mod font { pub mod bevy { pub use bevy_kayak_ui::*; } + +pub mod widgets; diff --git a/kayak_widgets/src/app.rs b/src/widgets/app.rs similarity index 83% rename from kayak_widgets/src/app.rs rename to src/widgets/app.rs index 76ff212..2d61138 100644 --- a/kayak_widgets/src/app.rs +++ b/src/widgets/app.rs @@ -1,12 +1,12 @@ -use kayak_ui::core::derivative::*; -use kayak_ui::core::{ +use crate::core::derivative::*; +use crate::core::{ render_command::RenderCommand, rsx, styles::{Style, StyleProp}, widget, Children, }; -use crate::Clip; +use crate::widgets::Clip; #[widget] pub fn App(children: Children) { @@ -17,9 +17,9 @@ pub fn App(children: Children) { #[cfg(feature = "bevy_renderer")] { - use kayak_ui::bevy::WindowSize; - use kayak_ui::core::styles::Units; - use kayak_ui::core::{Binding, Bound}; + use crate::bevy::WindowSize; + use crate::core::styles::Units; + use crate::core::{Binding, Bound}; let window_size = if let Ok(world) = context.get_global_state::<bevy::prelude::World>() { if let Some(window_size) = world.get_resource::<Binding<WindowSize>>() { window_size.clone() diff --git a/kayak_widgets/src/background.rs b/src/widgets/background.rs similarity index 95% rename from kayak_widgets/src/background.rs rename to src/widgets/background.rs index f084ec1..abc0a7b 100644 --- a/kayak_widgets/src/background.rs +++ b/src/widgets/background.rs @@ -1,4 +1,4 @@ -use kayak_ui::core::{ +use crate::core::{ render_command::RenderCommand, rsx, styles::{Style, StyleProp}, diff --git a/kayak_widgets/src/button.rs b/src/widgets/button.rs similarity index 97% rename from kayak_widgets/src/button.rs rename to src/widgets/button.rs index 31a3648..5c05b4d 100644 --- a/kayak_widgets/src/button.rs +++ b/src/widgets/button.rs @@ -1,4 +1,4 @@ -use kayak_ui::core::{ +use crate::core::{ color::Color, render_command::RenderCommand, rsx, diff --git a/kayak_widgets/src/clip.rs b/src/widgets/clip.rs similarity index 96% rename from kayak_widgets/src/clip.rs rename to src/widgets/clip.rs index 5c5f212..0a0fec4 100644 --- a/kayak_widgets/src/clip.rs +++ b/src/widgets/clip.rs @@ -1,4 +1,4 @@ -use kayak_ui::core::{ +use crate::core::{ render_command::RenderCommand, rsx, styles::{Style, StyleProp, Units}, diff --git a/kayak_widgets/src/element.rs b/src/widgets/element.rs similarity index 94% rename from kayak_widgets/src/element.rs rename to src/widgets/element.rs index 3c14e83..e5fdadc 100644 --- a/kayak_widgets/src/element.rs +++ b/src/widgets/element.rs @@ -1,4 +1,4 @@ -use kayak_ui::core::{ +use crate::core::{ render_command::RenderCommand, rsx, styles::{Style, StyleProp}, diff --git a/kayak_widgets/src/if_element.rs b/src/widgets/if_element.rs similarity index 80% rename from kayak_widgets/src/if_element.rs rename to src/widgets/if_element.rs index c2e2917..dfe49a9 100644 --- a/kayak_widgets/src/if_element.rs +++ b/src/widgets/if_element.rs @@ -1,4 +1,4 @@ -use kayak_ui::core::{rsx, widget, Children}; +use crate::core::{rsx, widget, Children}; #[widget] pub fn If(children: Children, condition: bool) { diff --git a/kayak_widgets/src/image.rs b/src/widgets/image.rs similarity index 94% rename from kayak_widgets/src/image.rs rename to src/widgets/image.rs index c44cb60..6b97d32 100644 --- a/kayak_widgets/src/image.rs +++ b/src/widgets/image.rs @@ -1,4 +1,4 @@ -use kayak_ui::core::{ +use crate::core::{ render_command::RenderCommand, rsx, styles::{Style, StyleProp}, diff --git a/kayak_widgets/src/lib.rs b/src/widgets/mod.rs similarity index 100% rename from kayak_widgets/src/lib.rs rename to src/widgets/mod.rs diff --git a/kayak_widgets/src/nine_patch.rs b/src/widgets/nine_patch.rs similarity index 95% rename from kayak_widgets/src/nine_patch.rs rename to src/widgets/nine_patch.rs index f491da9..c462e16 100644 --- a/kayak_widgets/src/nine_patch.rs +++ b/src/widgets/nine_patch.rs @@ -1,4 +1,4 @@ -use kayak_ui::core::{ +use crate::core::{ layout_cache::Space, render_command::RenderCommand, rsx, diff --git a/kayak_widgets/src/text.rs b/src/widgets/text.rs similarity index 95% rename from kayak_widgets/src/text.rs rename to src/widgets/text.rs index c09e6ba..14979ee 100644 --- a/kayak_widgets/src/text.rs +++ b/src/widgets/text.rs @@ -1,4 +1,4 @@ -use kayak_ui::core::{ +use crate::core::{ render_command::RenderCommand, styles::{Style, StyleProp}, widget, diff --git a/kayak_widgets/src/text_box.rs b/src/widgets/text_box.rs similarity index 98% rename from kayak_widgets/src/text_box.rs rename to src/widgets/text_box.rs index 2a7f612..ee5ab76 100644 --- a/kayak_widgets/src/text_box.rs +++ b/src/widgets/text_box.rs @@ -1,4 +1,4 @@ -use kayak_ui::core::{ +use crate::core::{ render_command::RenderCommand, rsx, styles::{Style, StyleProp, Units}, @@ -6,7 +6,7 @@ use kayak_ui::core::{ }; use std::sync::{Arc, RwLock}; -use crate::{Background, Clip, Text}; +use crate::widgets::{Background, Clip, Text}; #[derive(Debug, Clone, PartialEq)] pub struct ChangeEvent { diff --git a/kayak_widgets/src/window.rs b/src/widgets/window.rs similarity index 97% rename from kayak_widgets/src/window.rs rename to src/widgets/window.rs index de54a98..cfbe04b 100644 --- a/kayak_widgets/src/window.rs +++ b/src/widgets/window.rs @@ -1,4 +1,4 @@ -use kayak_ui::core::{ +use crate::core::{ color::Color, render_command::RenderCommand, rsx, @@ -6,7 +6,7 @@ use kayak_ui::core::{ widget, Children, }; -use crate::{Background, Clip, Element, Text}; +use crate::widgets::{Background, Clip, Element, Text}; #[widget] pub fn Window( -- GitLab