basic_lua/
basic-lua.rs

1// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: 2025 Fundament Research Institute <https://fundament.institute>
3
4use feather_ui::component::mouse_area;
5use feather_ui::lua::LuaApp;
6use feather_ui::mlua::Lua;
7use feather_ui::{InputResult, WrapEventEx, handlers};
8
9const LAYOUT: &[u8] = include_bytes!("./basic.lua");
10
11#[derive(PartialEq, Clone, Debug, feather_macro::UserData)]
12struct CounterState {
13    count: i32,
14}
15
16fn main() {
17    let lua = Lua::new();
18
19    let onclick = |_: mouse_area::MouseAreaEvent,
20                   mut appdata: feather_ui::AccessCell<CounterState>|
21     -> InputResult<()> {
22        {
23            appdata.count += 1;
24            InputResult::Forward(())
25        }
26    }
27    .wrap();
28
29    let (mut app, event_loop) = LuaApp::<CounterState>::new::<()>(
30        &lua,
31        CounterState { count: 0 },
32        handlers![CounterState, onclick],
33        LAYOUT,
34    )
35    .unwrap();
36
37    event_loop.run_app(&mut app).unwrap();
38}