Commit 74014f33 authored by Bilal Elmoussaoui's avatar Bilal Elmoussaoui

Add basic examples

parent 97188cbc
Pipeline #160771 passed with stage
in 10 minutes and 32 seconds
///
/// `get_widget!` allows retrieving a widget from a gtk::Builder
///
/// Example 1:
///
/// ```no_run
/// let builder = gtk::Builder::new_from_resource("/org/gnome/App/ui/widget.ui");
/// get_widget!(builder, gtk::Label, my_label);
/// my_label.set_text("Salut world");
/// ```
/// Example 2:
///
/// ```no_run
/// let builder = gtk::Builder::new_from_resource("/org/gnome/App/ui/widget.ui");
/// get_widget!(builder, gtk::Label, @my_label).set_text("Salut world");
/// ```
#[macro_export] #[macro_export]
macro_rules! get_widget { macro_rules! get_widget {
($builder:expr, $wtype:ty, @$name:ident) => {{ ($builder:expr, $wtype:ty, @$name:ident) => {{
...@@ -9,6 +25,13 @@ macro_rules! get_widget { ...@@ -9,6 +25,13 @@ macro_rules! get_widget {
}; };
} }
/// Example:
/// ```no_run
/// spawn!(async {
/// something.await;
/// });
/// ```
#[macro_export] #[macro_export]
macro_rules! spawn { macro_rules! spawn {
($future:expr) => { ($future:expr) => {
...@@ -26,6 +49,20 @@ macro_rules! send { ...@@ -26,6 +49,20 @@ macro_rules! send {
}; };
} }
/// Example:
/// ```no_run
/// let widget = get_widget!(builder, gtk::Window, widget);
/// let actions = gio::SimpleActionGroup::new();
/// widget.insert_action_group("export", Some(&actions));
/// action!(
/// actions,
/// "do",
/// move |action, _| {
/// // do something
/// },
///);
/// ```
#[macro_export] #[macro_export]
macro_rules! action { macro_rules! action {
($actions_group:expr, $name:expr, $callback:expr) => { ($actions_group:expr, $name:expr, $callback:expr) => {
...@@ -40,6 +77,19 @@ macro_rules! action { ...@@ -40,6 +77,19 @@ macro_rules! action {
}; };
} }
/// Example:
/// ```no_run
/// let actions = gio::SimpleActionGroup::new();
/// let is_dark_mode = false;
/// stateful_action!(actions, "dark-mode", is_dark_mode, move |action, _| {
/// let state = action.get_state().unwrap();
/// let action_state: bool = state.get().unwrap();
/// let is_dark_mode = !action_state;
/// action.set_state(&is_dark_mode.to_variant());
///
/// // Store the state using gsettings for example
/// });
/// ```
#[macro_export] #[macro_export]
macro_rules! stateful_action { macro_rules! stateful_action {
($actions_group:expr, $name:expr, $state:expr, $callback:expr) => { ($actions_group:expr, $name:expr, $state:expr, $callback:expr) => {
...@@ -55,6 +105,19 @@ macro_rules! stateful_action { ...@@ -55,6 +105,19 @@ macro_rules! stateful_action {
} }
/// Example:
/// ```no_run
/// let actions = gio::SimpleActionGroup::new();
/// widget.insert_action_group("export", Some(&actions));
/// action!(
/// actions,
/// "do",
/// move |action, _| {
/// // do something
/// },
///);
/// get_action!(actions, @delete).set_enabled(false);
/// ```
#[macro_export] #[macro_export]
macro_rules! get_action { macro_rules! get_action {
($actions:expr, @$name:ident) => {{ ($actions:expr, @$name:ident) => {{
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment