]> uap-core.de Git - note.git/commitdiff
add app_run_startup_error
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Sun, 10 May 2026 07:15:11 +0000 (09:15 +0200)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Sun, 10 May 2026 07:15:11 +0000 (09:15 +0200)
ui-rs/src/ui/application.rs

index 1ab0aedc64cbfda7c36d03c0e4c0fdfba57e6f28..af70f6500d368acf43518b0a74c8fc7a43975bce 100644 (file)
@@ -30,8 +30,9 @@
 
 use std::ffi::{c_char, c_int, c_void, CString};
 use std::marker::PhantomData;
+use ui_rs_derive::UiModel;
 use crate::ui::ffi::{UiCallback, UiEvent};
-use crate::ui::{toolkit, ui_global_context, UiActions, UiModel};
+use crate::ui::{dialog, toolkit, ui_global_context, UiActions, UiContext, UiModel};
 
 pub trait Application<T: UiModel + UiActions> {
     fn on_startup(&mut self, app: &AppContext<T>);
@@ -44,6 +45,15 @@ pub struct AppContext<T: UiModel + UiActions> {
     _marker: PhantomData<T>,
 }
 
+pub struct NoAppData {}
+
+impl UiModel for NoAppData {
+    fn init(&mut self, ctx: &UiContext) {}
+}
+
+impl UiActions for NoAppData {
+    fn init_actions(&mut self, _ctx: &mut UiContext) {}
+}
 
 extern "C" {
     fn ui_main();
@@ -89,6 +99,29 @@ pub fn app_run<T: UiModel + UiActions>(app: &mut dyn Application<T>) {
     }
 }
 
+
+
+
+struct ErrApp<'a> {
+    title: &'a str,
+    message: &'a str
+}
+
+impl<'a> Application<NoAppData> for ErrApp<'a> {
+    fn on_startup(&mut self, app: &AppContext<NoAppData>) {
+        dialog(|d| {
+            d.title(self.title);
+            d.content(self.message);
+            d.button1_label("OK");
+        });
+    }
+}
+
+pub fn app_run_startup_error(title: &str, message: &str) {
+    let mut app = ErrApp { title, message };
+    app_run(&mut app);
+}
+
 #[repr(C)]
 struct AppWrapper<'a, T> {
     app: &'a mut dyn Application<T>,