From 01e04a4eb940f4751369456e4c8a917f36b47b4b Mon Sep 17 00:00:00 2001 From: Jonathan Johnson Date: Fri, 15 Dec 2023 14:31:44 -0800 Subject: [PATCH] Improving the readmes a bit --- .crate-docs.md | 45 +++++++++++++++++++++++++++++++----- .rustme/docs.md | 28 +++++++++++++++-------- README.md | 49 +++++++++++++++++++++++++++++++++------- examples/basic-button.rs | 2 +- src/widget.rs | 20 ++++++++++++++++ 5 files changed, 120 insertions(+), 24 deletions(-) diff --git a/.crate-docs.md b/.crate-docs.md index 088a382..e6cd99f 100644 --- a/.crate-docs.md +++ b/.crate-docs.md @@ -3,13 +3,22 @@ [![Documentation for `main` branch](https://img.shields.io/badge/docs-main-informational)](https://gooey.rs/main/gooey/) Gooey is an experimental Graphical User Interface (GUI) crate for the Rust -programming language. It is built using [`Kludgine`][kludgine], which is powered -by [`winit`][winit] and [`wgpu`][wgpu]. It is incredibly early in development, -and is being developed for a game that will hopefully be developed shortly. +programming language. It is powered by: + +- [`Kludgine`][kludgine], a 2d graphics library powered by: + - [`winit`][winit] for windowing/input + - [`wgpu`][wgpu] for graphics + - [`cosmic_text`][cosmic_text] for text layout + rasterization +- [`palette`][palette] for OKLab-based HSL color calculations +- [`arboard`][arboard] for clipboard support +- [`figures`][figures] for integer-based 2d math + +## Getting Started with Gooey The [`Widget`][widget] trait is the building block of Gooey: Every user -interface element implements `Widget`. A full list of built-in widgets can be -found in the [`gooey::widgets`][widgets] module. +interface element implements `Widget`. The `Widget` trait +[documentation][widget] has an overview of how Gooey works. A list of built-in +widgets can be found in the [`gooey::widgets`][widgets] module. Gooey uses a reactive data model. To see [an example][button-example] of how reactive data models work, consider this example that displays a button that @@ -26,18 +35,42 @@ fn main() -> gooey::Result { count_label .into_button() // Set the `on_click` callback to a closure that increments the counter. - .on_click(count.with_clone(|count| move |_| count.set(count.get() + 1))) + .on_click(move |_| count.set(count.get() + 1)) // Run the application .run() } ``` +A great way to learn more about Gooey is to explore the [examples +directory][examples]. Nearly every feature in Gooey was initially tested by +creating an example. + +## Project Status + +This project is early in development, but is quickly becoming a decent +framework. It is considered experimental and unspported at this time, and the +primary focus for [@ecton][ecton] is to use this for his own projects. Feature +requests and bug fixes will be prioritized based on @ecton's own needs. + +If you would like to contribute, bug fixes are always appreciated. Before +working on a new feature, please [open an issue][issues] proposing the feature +and problem it aims to solve. Doing so will help prevent friction in merging +pull requests, as it ensures changes fit the vision the maintainers have for +Gooey. + [widget]: crate::widget::Widget [kludgine]: https://github.com/khonsulabs/kludgine +[figures]: https://github.com/khonsulabs/figures [wgpu]: https://github.com/gfx-rs/wgpu [winit]: https://github.com/rust-windowing/winit [widgets]: mod@crate::widgets [button-example]: https://github.com/khonsulabs/gooey/tree/main/examples/basic-button.rs +[examples]: https://github.com/khonsulabs/gooey/tree/main/examples/ +[cosmic_text]: https://github.com/pop-os/cosmic-text +[palette]: https://github.com/Ogeon/palette +[arboard]: https://github.com/1Password/arboard +[ecton]: https://github.com/khonsulabs/ecton +[issues]: https://github.com/khonsulabs/gooey/issues ## Open-source Licenses diff --git a/.rustme/docs.md b/.rustme/docs.md index 0a32b17..3f4d7e4 100644 --- a/.rustme/docs.md +++ b/.rustme/docs.md @@ -8,15 +8,17 @@ programming language. It is powered by: - [`Kludgine`][kludgine], a 2d graphics library powered by: - [`winit`][winit] for windowing/input - [`wgpu`][wgpu] for graphics - - [`cosmic_text`][cosmic_text] -- [`palette`][palette] -- [`arboard`][arboard] + - [`cosmic_text`][cosmic_text] for text layout + rasterization +- [`palette`][palette] for OKLab-based HSL color calculations +- [`arboard`][arboard] for clipboard support +- [`figures`][figures] for integer-based 2d math ## Getting Started with Gooey The [`Widget`][widget] trait is the building block of Gooey: Every user -interface element implements `Widget`. A full list of built-in widgets can be -found in the [`gooey::widgets`][widgets] module. +interface element implements `Widget`. The `Widget` trait +[documentation][widget] has an overview of how Gooey works. A list of built-in +widgets can be found in the [`gooey::widgets`][widgets] module. Gooey uses a reactive data model. To see [an example][button-example] of how reactive data models work, consider this example that displays a button that @@ -37,14 +39,22 @@ framework. It is considered experimental and unspported at this time, and the primary focus for [@ecton][ecton] is to use this for his own projects. Feature requests and bug fixes will be prioritized based on @ecton's own needs. -[widget]: $widget$ +If you would like to contribute, bug fixes are always appreciated. Before +working on a new feature, please [open an issue][issues] proposing the feature +and problem it aims to solve. Doing so will help prevent friction in merging +pull requests, as it ensures changes fit the vision the maintainers have for +Gooey. + +[widget]: crate::widget::Widget [kludgine]: https://github.com/khonsulabs/kludgine +[figures]: https://github.com/khonsulabs/figures [wgpu]: https://github.com/gfx-rs/wgpu [winit]: https://github.com/rust-windowing/winit -[widgets]: $widgets$ -[button-example]: https://github.com/khonsulabs/gooey/tree/$ref-name$/examples/basic-button.rs -[examples]: https://github.com/khonsulabs/gooey/tree/$ref-name$/examples/ +[widgets]: mod@crate::widgets +[button-example]: https://github.com/khonsulabs/gooey/tree/main/examples/basic-button.rs +[examples]: https://github.com/khonsulabs/gooey/tree/main/examples/ [cosmic_text]: https://github.com/pop-os/cosmic-text [palette]: https://github.com/Ogeon/palette [arboard]: https://github.com/1Password/arboard [ecton]: https://github.com/khonsulabs/ecton +[issues]: https://github.com/khonsulabs/gooey/issues diff --git a/README.md b/README.md index 33a9ff5..c50692e 100644 --- a/README.md +++ b/README.md @@ -5,13 +5,22 @@ [![Documentation for `main` branch](https://img.shields.io/badge/docs-main-informational)](https://gooey.rs/main/gooey/) Gooey is an experimental Graphical User Interface (GUI) crate for the Rust -programming language. It is built using [`Kludgine`][kludgine], which is powered -by [`winit`][winit] and [`wgpu`][wgpu]. It is incredibly early in development, -and is being developed for a game that will hopefully be developed shortly. +programming language. It is powered by: + +- [`Kludgine`][kludgine], a 2d graphics library powered by: + - [`winit`][winit] for windowing/input + - [`wgpu`][wgpu] for graphics + - [`cosmic_text`][cosmic_text] for text layout + rasterization +- [`palette`][palette] for OKLab-based HSL color calculations +- [`arboard`][arboard] for clipboard support +- [`figures`][figures] for integer-based 2d math + +## Getting Started with Gooey The [`Widget`][widget] trait is the building block of Gooey: Every user -interface element implements `Widget`. A full list of built-in widgets can be -found in the [`gooey::widgets`][widgets] module. +interface element implements `Widget`. The `Widget` trait +[documentation][widget] has an overview of how Gooey works. A list of built-in +widgets can be found in the [`gooey::widgets`][widgets] module. Gooey uses a reactive data model. To see [an example][button-example] of how reactive data models work, consider this example that displays a button that @@ -28,18 +37,42 @@ fn main() -> gooey::Result { count_label .into_button() // Set the `on_click` callback to a closure that increments the counter. - .on_click(count.with_clone(|count| move |_| count.set(count.get() + 1))) + .on_click(move |_| count.set(count.get() + 1)) // Run the application .run() } ``` -[widget]: https://gooey.rs/main/gooey/widget/trait.Widget.html +A great way to learn more about Gooey is to explore the [examples +directory][examples]. Nearly every feature in Gooey was initially tested by +creating an example. + +## Project Status + +This project is early in development, but is quickly becoming a decent +framework. It is considered experimental and unspported at this time, and the +primary focus for [@ecton][ecton] is to use this for his own projects. Feature +requests and bug fixes will be prioritized based on @ecton's own needs. + +If you would like to contribute, bug fixes are always appreciated. Before +working on a new feature, please [open an issue][issues] proposing the feature +and problem it aims to solve. Doing so will help prevent friction in merging +pull requests, as it ensures changes fit the vision the maintainers have for +Gooey. + +[widget]: crate::widget::Widget [kludgine]: https://github.com/khonsulabs/kludgine +[figures]: https://github.com/khonsulabs/figures [wgpu]: https://github.com/gfx-rs/wgpu [winit]: https://github.com/rust-windowing/winit -[widgets]: https://gooey.rs/main/gooey/widgets/index.html +[widgets]: mod@crate::widgets [button-example]: https://github.com/khonsulabs/gooey/tree/main/examples/basic-button.rs +[examples]: https://github.com/khonsulabs/gooey/tree/main/examples/ +[cosmic_text]: https://github.com/pop-os/cosmic-text +[palette]: https://github.com/Ogeon/palette +[arboard]: https://github.com/1Password/arboard +[ecton]: https://github.com/khonsulabs/ecton +[issues]: https://github.com/khonsulabs/gooey/issues ## Open-source Licenses diff --git a/examples/basic-button.rs b/examples/basic-button.rs index cdccc9f..5dd6cde 100644 --- a/examples/basic-button.rs +++ b/examples/basic-button.rs @@ -13,7 +13,7 @@ fn main() -> gooey::Result { count_label .into_button() // Set the `on_click` callback to a closure that increments the counter. - .on_click(count.with_clone(|count| move |_| count.set(count.get() + 1))) + .on_click(move |_| count.set(count.get() + 1)) // Run the application .run() } diff --git a/src/widget.rs b/src/widget.rs index 5e9dbb4..0291a24 100644 --- a/src/widget.rs +++ b/src/widget.rs @@ -51,6 +51,26 @@ use crate::{ConstraintLimit, Run}; /// /// This type can go by many names in other UI frameworks: View, Component, /// Control. +/// +/// # How layout and rendering works +/// +/// TODO write layout + rendering docs +/// +/// # Hit Testing +/// +/// TODO write hit testing docs +/// +/// # Mouse Button Events +/// +/// TODO write mouse button docs +/// +/// # User Input Focus +/// +/// TODO write focus docs +/// +/// # Styling +/// +/// TODO write styling docs pub trait Widget: Send + UnwindSafe + Debug + 'static { /// Redraw the contents of this widget. fn redraw(&mut self, context: &mut GraphicsContext<'_, '_, '_, '_, '_>);