implement first toolkit functions (WIN32)

4 days ago

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Tue, 25 Mar 2025 15:06:50 +0100 (4 days ago)
changeset 513
a4e0ef98a8b4
parent 512
3cb2587f8891
child 517
ac867877999e

implement first toolkit functions (WIN32)

application/main.c file | annotate | diff | comparison | revisions
ui/common/properties.c file | annotate | diff | comparison | revisions
ui/win32/toolkit.c file | annotate | diff | comparison | revisions
--- a/application/main.c	Tue Mar 25 14:17:00 2025 +0100
+++ b/application/main.c	Tue Mar 25 15:06:50 2025 +0100
@@ -773,8 +773,18 @@
 
 #ifdef UI_WIN32
 
+void application_startup(UiEvent *event, void *data) {
+
+}
+
 int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {
+    ui_init("app1", 0, NULL);
+    ui_onstartup(application_startup, NULL);
+
+    ui_main();
+
     return 0;
 }
 
 #endif
+
--- a/ui/common/properties.c	Tue Mar 25 14:17:00 2025 +0100
+++ b/ui/common/properties.c	Tue Mar 25 15:06:50 2025 +0100
@@ -116,7 +116,7 @@
 
 static int ui_mkdir(char *path) {
 #ifdef _WIN32
-    return mkdir(path);
+    return _mkdir(path);
 #else
     return mkdir(path, S_IRWXU);
 #endif
--- a/ui/win32/toolkit.c	Tue Mar 25 14:17:00 2025 +0100
+++ b/ui/win32/toolkit.c	Tue Mar 25 15:06:50 2025 +0100
@@ -27,7 +27,59 @@
  */
 
 #include "toolkit.h"
+#include "Windows.h"
+
+#include "../common/properties.h"
 
 #include <stdio.h>
 #include <stdlib.h>
 
+static const char *application_name;
+
+static ui_callback   startup_func;
+static void          *startup_data;
+static ui_callback   open_func;
+void                 *open_data;
+static ui_callback   exit_func;
+void                 *exit_data;
+
+void ui_init(const char *appname, int argc, char **argv) {
+      application_name = appname;
+}
+
+const char* ui_appname() {
+    return application_name;
+}
+
+void ui_onstartup(ui_callback f, void *userdata) {
+    startup_func = f;
+    startup_data = userdata;
+}
+
+void ui_onopen(ui_callback f, void *userdata) {
+    open_func = f;
+    open_data = userdata;
+}
+
+void ui_onexit(ui_callback f, void *userdata) {
+    exit_func = f;
+    exit_data = userdata;
+}
+
+void ui_main() {
+    if(startup_func) {
+        startup_func(NULL, startup_data);
+    }
+
+    // event loop
+    MSG msg;
+    while (GetMessage(&msg, NULL, 0, 0)) {
+        TranslateMessage(&msg);
+        DispatchMessage(&msg);
+    }
+
+    if(exit_func) {
+        exit_func(NULL, exit_data);
+    }
+    uic_store_app_properties();
+}

mercurial