From: Olaf Wintermann Date: Sun, 29 Mar 2026 14:02:36 +0000 (+0200) Subject: add window functions X-Git-Url: https://uap-core.de/gitweb/?a=commitdiff_plain;h=refs%2Fheads%2Fmain;p=note.git add window functions --- diff --git a/application/src/main.rs b/application/src/main.rs index 2a8d14e..a584c1e 100644 --- a/application/src/main.rs +++ b/application/src/main.rs @@ -11,6 +11,7 @@ struct App; impl ui::Application for App { fn on_startup(&self) { - + let obj = ui::window("Test Window"); + obj.show(); } } diff --git a/ui-rs/src/ui/mod.rs b/ui-rs/src/ui/mod.rs index 03628f1..8a061fe 100644 --- a/ui-rs/src/ui/mod.rs +++ b/ui-rs/src/ui/mod.rs @@ -1,6 +1,8 @@ mod ffi; mod toolkit; mod application; +mod window; pub use toolkit::*; -pub use application::*; \ No newline at end of file +pub use application::*; +pub use window::*; diff --git a/ui-rs/src/ui/toolkit.rs b/ui-rs/src/ui/toolkit.rs index f36d57c..ab5b688 100644 --- a/ui-rs/src/ui/toolkit.rs +++ b/ui-rs/src/ui/toolkit.rs @@ -1,6 +1,11 @@ #![allow(dead_code)] use std::ffi::{c_char, c_int, CString}; +use crate::ui::ffi; + +pub struct UiObject { + pub ptr: *const ffi::UiObject +} extern "C" { fn ui_init(appname: *const c_char, argc: c_int, argv: *const *const c_char); diff --git a/ui-rs/src/ui/window.rs b/ui-rs/src/ui/window.rs new file mode 100644 index 0000000..972c101 --- /dev/null +++ b/ui-rs/src/ui/window.rs @@ -0,0 +1,33 @@ +#![allow(dead_code)] +#[allow(unused_imports)] + +use std::ffi::{c_char, c_int, c_void}; +use std::ffi::CString; +use crate::ui::toolkit; +use crate::ui::ffi::UiObject; + +extern "C" { + fn ui_window(title: *const c_char) -> *const UiObject; + fn ui_sidebar_window(title: *const c_char) -> *const UiObject; + fn ui_splitview_window(title: *const c_char, sidebar: c_int) -> *const UiObject; + fn ui_simple_window(title: *const c_char) -> *const UiObject; + + + fn ui_show(ui: *const UiObject); +} + +impl toolkit::UiObject { + pub fn show(&self) { + unsafe { + ui_show(self.ptr); + } + } +} + +pub fn window(title: &str) -> toolkit::UiObject { + unsafe { + let str = CString::new(title).unwrap(); + let objptr = ui_window(str.as_ptr()); + return toolkit::UiObject { ptr: objptr }; + } +} \ No newline at end of file