about summary refs log tree commit diff stats
path: root/src/tools
diff options
context:
space:
mode:
authorlizhuoheng <114734429+LiZhuoheng-coder@users.noreply.github.com>2023-04-21 16:37:17 +0800
committerGitHub <noreply@github.com>2023-04-21 10:37:17 +0200
commit1a3d41266972fbc01971ee044ddb7155dc33fa89 (patch)
tree0cb95b9642f5524797c9d0fdceab220501bb46f7 /src/tools
parentae08d21bf12fbefa5a7531cf7b61ea5ba9620bae (diff)
downloadbox64-1a3d41266972fbc01971ee044ddb7155dc33fa89.tar.gz
box64-1a3d41266972fbc01971ee044ddb7155dc33fa89.zip
Added more gtk3 wrapped functions (#720)
Diffstat (limited to 'src/tools')
-rwxr-xr-xsrc/tools/gtkclass.c94
1 files changed, 94 insertions, 0 deletions
diff --git a/src/tools/gtkclass.c b/src/tools/gtkclass.c
index 0335154e..718e32bc 100755
--- a/src/tools/gtkclass.c
+++ b/src/tools/gtkclass.c
@@ -221,6 +221,100 @@ static void bridgeGInitiallyUnownedClass(my_GInitiallyUnownedClass_t* class)
 }
 #undef SUPERGO
 
+// ----- GApplicationClass ------
+// wrapper x86 -> natives of callbacks
+WRAPPER(GApplication, startup, void, (void* application), 1, application);
+WRAPPER(GApplication, activate, void, (void* application), 1, application);
+WRAPPER(GApplication, open, void, (void* application, void* files, int n_files, void* hint), 4, application, files, n_files, hint);
+WRAPPER(GApplication, command_line, void, (void* application, void* command_line), 2, application, command_line);
+WRAPPER(GApplication, local_command_line, void, (void* application, void* arguments, void* exit_status), 3, application, arguments, exit_status);
+WRAPPER(GApplication, before_emit, void*, (void* application, void* platform_data), 2, application, platform_data);
+WRAPPER(GApplication, after_emit, void, (void* application, void* platform_data), 2, application, platform_data);
+WRAPPER(GApplication, add_platform_data, void, (void* application, void* builder), 2, application, builder);
+WRAPPER(GApplication, quit_mainloop, void, (void* application), 1, application);
+WRAPPER(GApplication, run_mainloop, void, (void* application), 1, application);
+WRAPPER(GApplication, shutdown, void, (void* application), 1, application);
+WRAPPER(GApplication, dbus_register, void, (void* application, void* connection, void* object_path, void* error), 4, application, connection, object_path, error);
+WRAPPER(GApplication, dbus_unregister, void, (void* application, void* connection, void* object_path), 3, application, connection, object_path);
+WRAPPER(GApplication, handle_local_options, void, (void* application, void* options), 2, application, options);
+WRAPPER(GApplication, name_lost, void, (void* application), 1, application);
+
+#define SUPERGO()                     \
+    GO(startup, vFp);                 \
+    GO(activate, vFp);                \
+    GO(open, vFppip);                 \
+    GO(command_line, vFpp);           \
+    GO(local_command_line, vFppp);    \
+    GO(before_emit, vFpp);            \
+    GO(after_emit, vFpp);             \
+    GO(add_platform_data, vFpp);      \
+    GO(quit_mainloop, vFp);           \
+    GO(run_mainloop, vFp);            \
+    GO(shutdown, vFp);                \
+    GO(dbus_register, vFpppp);        \
+    GO(dbus_unregister, vFppp);       \
+    GO(handle_local_options, vFpp);   \
+    GO(name_lost, vFp);
+
+// wrap (so bridge all calls, just in case)
+static void wrapGApplicationClass(my_GApplicationClass_t* class)
+{
+    #define GO(A, W) class->A = reverse_##A##_GApplication (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+// unwrap (and use callback if not a native call anymore)
+static void unwrapGApplicationClass(my_GApplicationClass_t* class)
+{
+    #define GO(A, W)   class->A = find_##A##_GApplication (class->A)   //SUPERGO()全部定义,但并未全部调用
+    SUPERGO()
+    #undef GO
+}
+// autobridge
+static void bridgeGApplicationClass(my_GApplicationClass_t* class)
+{
+    #define GO(A, W) autobridge_##A##_GApplication (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+
+#undef SUPERGO
+
+// ----- GtkApplicationClass ------
+// wrapper x86 -> natives of callbacks
+WRAPPER(GtkApplication, window_added, void, (void* application, void* window), 2, application, window);
+WRAPPER(GtkApplication, window_removed, void, (void* application, void* window), 2, application, window);
+
+#define SUPERGO() \
+    GO(window_added, pFpp);   \
+    GO(window_removed, vFpp);
+
+static void wrapGtkApplicationClass(my_GtkApplicationClass_t* class)
+{
+    wrapGApplicationClass(&class->parent_class);
+    #define GO(A, W) class->A = reverse_##A##_GtkApplication (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+
+static void unwrapGtkApplicationClass(my_GtkApplicationClass_t* class)
+{
+    unwrapGApplicationClass(&class->parent_class);
+    #define GO(A, W)   class->A = find_##A##_GtkApplication (class->A)
+    SUPERGO()
+    #undef GO
+}
+
+static void bridgeGtkApplicationClass(my_GtkApplicationClass_t* class)
+{
+    bridgeGApplicationClass(&class->parent_class);
+    #define GO(A, W) autobridge_##A##_GtkApplication (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+
+#undef SUPERGO
+
 // ----- GtkObjectClass ------
 // wrapper x64 -> natives of callbacks
 WRAPPER(GtkObject, set_arg, void, (void* object, void* arg, uint32_t arg_id), 3, object, arg, arg_id);