use std::ffi::{c_char, c_int, c_void, CString};
use std::marker::PhantomData;
use crate::ui::ffi::{UiCallback, UiEvent};
-use crate::ui::{UiActions, UiModel};
+use crate::ui::{toolkit, ui_global_context, UiActions, UiModel};
pub trait Application<T: UiModel + UiActions> {
fn on_startup(&mut self, app: &AppContext<T>);
}
pub struct AppContext<T: UiModel + UiActions> {
+ pub ctx: toolkit::UiContext,
_marker: PhantomData<T>,
}
unsafe {
let app_ptr = data as *mut AppWrapper<T>;
let app_ref: &mut AppWrapper<T> = &mut *app_ptr;
+ let global_ctx = toolkit::UiContext::from_ptr(ui_global_context());
let ctx = AppContext::<T> {
+ ctx: global_ctx,
_marker: PhantomData,
};
app_ref.app.on_startup(&ctx);
unsafe {
let app_ptr = data as *mut AppWrapper<T>;
let app_ref: &mut AppWrapper<T> = &mut *app_ptr;
+ let global_ctx = toolkit::UiContext::from_ptr(ui_global_context());
let ctx = AppContext::<T> {
+ ctx: global_ctx,
_marker: PhantomData,
};
app_ref.app.on_exit(&ctx);