Improving the readmes a bit

This commit is contained in:
Jonathan Johnson 2023-12-15 14:31:44 -08:00
parent 7ae4374411
commit 01e04a4eb9
No known key found for this signature in database
GPG key ID: A66D6A34D6620579
5 changed files with 120 additions and 24 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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()
}

View file

@ -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<'_, '_, '_, '_, '_>);