cacao/examples/readme.md
Ryan McGrath 93424f74c0
Throw autolayout behind a feature flag.
- AutoLayout is now behind a feature flag (that is defaulted) to enable
  building and running on platforms that do _not_ support AutoLayout.

- Added a frame-based Layout example for platforms that don't have
  AutoLayout support.

- Fixed a bug in geometry.rs where x/y coordinates would get swapped on
  conversion to `CGRect`.

- Added a README to the examples directory to aid in first time users
  running examples.
2021-08-08 18:42:07 -07:00

65 lines
2.5 KiB
Markdown

# Cacao Examples
This directory contains example code for apps written in cacao. To run an example, check out the list of commands below - some require certain features to be enabled.
## AutoLayout
An example that showcases layout out a view with AutoLayout. This requires the feature flag `autolayout` to be enabled, but it's defaulted for ease of use so doesn't need to be specified here. Platforms where AutoLayout is not supported will likely not work with this example.
`cargo run --example autolayout`
## Frame Layout
An example that showcases laying out with a more old school Frame-based approach. Platforms where AutoLayout are not supported will want to try this instead of the AutoLayout example.
**macOS:**
`cargo run --example frame_layout`
**Platforms lacking AutoLayout:**
`cargo run --example frame_layout --no-default-features --features appkit`
## Defaults
This example isn't GUI-specific, but showcases accessing `NSUserDefaults` from Rust for persisting basic data.
`cargo run --example defaults`
## Window
This example showcases creating a basic `Window`. This should run on all AppKit-supporting platforms.
`cargo run --example window`
## Window Controller
This example showcases creating a basic `WindowController`. This may run on all AppKit-supporting platforms.
`cargo run --example window_controller`
## Window Delegate
This example showcases creating a basic `WindowDelegate` to receive and handle events. This may run on all AppKit-supporting platforms.
`cargo run --example window_delegate`
## Text Input
This example showcases text input, and logs it to the underlying console. It's mostly a testbed to ensure that the backing widget for input behaves as expected.
`cargo run --example text_input`
## Calculator
A Rust-rendition of the macOS Calculator app.
`cargo run --example calculator`
## To-Do List
A "kitchen sink" example that showcases how to do more advanced things, such as cached reusable ListView components.
`cargo run --example todos_list`
## Browser
A _very_ basic web browser. Platforms that don't support WKWebView will likely not work with this example.
`cargo run --example browser --features webview`
## Webview Custom Protocol
This example showcases a custom protocol for the webview feature. Platforms that don't support WKWebView will likely not work with this example.
`cargo run --example webview_custom_protocol --features webview`
## iOS (Beta)
This example showcases how to build and run an iOS app in Rust. See the README in the `ios-beta` folder for instructions on how to run.