]> uap-core.de Git - note.git/commitdiff
add window functions main
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Sun, 29 Mar 2026 14:02:36 +0000 (16:02 +0200)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Sun, 29 Mar 2026 14:02:36 +0000 (16:02 +0200)
application/src/main.rs
ui-rs/src/ui/mod.rs
ui-rs/src/ui/toolkit.rs
ui-rs/src/ui/window.rs [new file with mode: 0644]

index 2a8d14ea44bd08120b3c14a3e435fed007c72b49..a584c1e2e46d82f16e832d72e800ff55685bdd12 100644 (file)
@@ -11,6 +11,7 @@ struct App;
 
 impl ui::Application for App {
     fn on_startup(&self) {
-
+        let obj = ui::window("Test Window");
+        obj.show();
     }
 }
index 03628f1dbe3f03b18901f38ac507dce123b43d79..8a061feec112fec5e4211e8ba52cdd256a5810af 100644 (file)
@@ -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::*;
index f36d57cdd160aa1b701523cc4ac1a5b834acbf34..ab5b688c0e529034389130fb4b588c48fd08d252 100644 (file)
@@ -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 (file)
index 0000000..972c101
--- /dev/null
@@ -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