Signed-off-by: Hans Dijkema <hans@dijkewijk.nl>
This commit is contained in:
2025-11-18 18:03:58 +01:00
parent 9c99a01464
commit 6784ba6ebc
8 changed files with 348 additions and 10 deletions

View File

@@ -36,11 +36,35 @@ typedef void GApplication;
typedef void GObject;
typedef void *GCallback;
typedef void *gpointer;
typedef void GClosure;
typedef void (*GClosureNotify) (gpointer data, GClosure *closure);
typedef void GtkStatusIcon;
typedef void GtkMenuShell;
typedef GtkMenuShell GtkMenu;
typedef void GtkMenuItem;
typedef void GdkEvent;
typedef void GtkTextBuffer;
typedef void GtkTextTagTable;
typedef void GtkContainer;
typedef void GtkLabel;
typedef void GtkHeaderBar;
typedef void GdkWindow;
typedef void GdkDevice;
typedef int gboolean;
typedef int gint;
typedef char gchar;
typedef void GClosure;
typedef void (*GClosureNotify) (gpointer data, GClosure *closure);
typedef long glong;
typedef unsigned long gulong;
typedef unsigned long guint32;
typedef unsigned int guint;
typedef long long gint64;
typedef unsigned long long guint64;
typedef float gfloat;
typedef double gdouble;
typedef char gint8;
typedef short gint16;
typedef enum {
GTK_WINDOW_TOPLEVEL = 0
@@ -66,6 +90,190 @@ typedef enum {
G_CONNECT_SWAPPED = 2
} GConnectFlags;
typedef enum {
GDK_GRAVITY_NORTH_WEST = 1,
GDK_GRAVITY_NORTH,
GDK_GRAVITY_NORTH_EAST,
GDK_GRAVITY_WEST,
GDK_GRAVITY_CENTER,
GDK_GRAVITY_EAST,
GDK_GRAVITY_SOUTH_WEST,
GDK_GRAVITY_SOUTH,
GDK_GRAVITY_SOUTH_EAST,
GDK_GRAVITY_STATIC
} GdkGravity;
typedef enum {
GTK_ORIENTATION_HORIZONTAL = 0,
GTK_ORIENTATION_VERTICAL = 1
} GtkOrientation;
typedef enum {
PANGO_ELLIPSIZE_NONE = 0,
PANGO_ELLIPSIZE_START = 1,
PANGO_ELLIPSIZE_MIDDLE = 2,
PANGO_ELLIPSIZE_END = 3
} PangoEllipsizeMode;
struct GdkRectangle {
int x;
int y;
int width;
int height;
};
typedef struct GdkRectangle GtkAllocation;
#define G_VALUE_INIT { 0, { { 0 } } }
typedef void *GType;
typedef struct _GValue
{
/*< private >*/
GType g_type;
/* public for GTypeValueTable methods */
union {
gint v_int;
guint v_uint;
glong v_long;
gulong v_ulong;
gint64 v_int64;
guint64 v_uint64;
gfloat v_float;
gdouble v_double;
gpointer v_pointer;
} data[2];
} GValue;
typedef struct _GtkTextIter {
/* GtkTextIter is an opaque datatype; ignore all these fields.
* Initialize the iter with gtk_text_buffer_get_iter_*
* functions
*/
/*< private >*/
gpointer dummy1;
gpointer dummy2;
gint dummy3;
gint dummy4;
gint dummy5;
gint dummy6;
gint dummy7;
gint dummy8;
gpointer dummy9;
gpointer dummy10;
gint dummy11;
gint dummy12;
/* padding */
gint dummy13;
gpointer dummy14;
} GtkTextIter;
typedef enum
{
GDK_DELETE,
GDK_MOTION_NOTIFY,
GDK_BUTTON_PRESS,
GDK_BUTTON_RELEASE,
GDK_KEY_PRESS,
GDK_KEY_RELEASE,
GDK_ENTER_NOTIFY,
GDK_LEAVE_NOTIFY,
GDK_FOCUS_CHANGE,
GDK_PROXIMITY_IN,
GDK_PROXIMITY_OUT,
GDK_DRAG_ENTER,
GDK_DRAG_LEAVE,
GDK_DRAG_MOTION,
GDK_DROP_START,
GDK_SCROLL,
GDK_GRAB_BROKEN,
GDK_TOUCH_BEGIN,
GDK_TOUCH_UPDATE,
GDK_TOUCH_END,
GDK_TOUCH_CANCEL,
GDK_TOUCHPAD_SWIPE,
GDK_TOUCHPAD_PINCH,
GDK_PAD_BUTTON_PRESS,
GDK_PAD_BUTTON_RELEASE,
GDK_PAD_RING,
GDK_PAD_STRIP,
GDK_PAD_GROUP_MODE,
GDK_TOUCHPAD_HOLD,
GDK_PAD_DIAL,
GDK_EVENT_LAST /* helper variable for decls */
} GdkEventType;
typedef struct _GdkEventButton
{
GdkEventType type;
GdkWindow *window;
gint8 send_event;
guint32 time;
gdouble x;
gdouble y;
gdouble *axes;
guint state;
guint button;
GdkDevice *device;
gdouble x_root, y_root;
} GdkEventButton;
typedef struct _GdkEventMotion
{
GdkEventType type;
GdkWindow *window;
gint8 send_event;
guint32 time;
gdouble x;
gdouble y;
gdouble *axes;
guint state;
gint16 is_hint;
GdkDevice *device;
gdouble x_root, y_root;
} GdkEventMotion;
typedef enum
{
GDK_EXPOSURE_MASK = 1 << 1,
GDK_POINTER_MOTION_MASK = 1 << 2,
GDK_POINTER_MOTION_HINT_MASK = 1 << 3,
GDK_BUTTON_MOTION_MASK = 1 << 4,
GDK_BUTTON1_MOTION_MASK = 1 << 5,
GDK_BUTTON2_MOTION_MASK = 1 << 6,
GDK_BUTTON3_MOTION_MASK = 1 << 7,
GDK_BUTTON_PRESS_MASK = 1 << 8,
GDK_BUTTON_RELEASE_MASK = 1 << 9,
GDK_KEY_PRESS_MASK = 1 << 10,
GDK_KEY_RELEASE_MASK = 1 << 11,
GDK_ENTER_NOTIFY_MASK = 1 << 12,
GDK_LEAVE_NOTIFY_MASK = 1 << 13,
GDK_FOCUS_CHANGE_MASK = 1 << 14,
GDK_STRUCTURE_MASK = 1 << 15,
GDK_PROPERTY_CHANGE_MASK = 1 << 16,
GDK_VISIBILITY_NOTIFY_MASK = 1 << 17,
GDK_PROXIMITY_IN_MASK = 1 << 18,
GDK_PROXIMITY_OUT_MASK = 1 << 19,
GDK_SUBSTRUCTURE_MASK = 1 << 20,
GDK_SCROLL_MASK = 1 << 21,
GDK_TOUCH_MASK = 1 << 22,
GDK_SMOOTH_SCROLL_MASK = 1 << 23,
GDK_TOUCHPAD_GESTURE_MASK = 1 << 24,
GDK_TABLET_PAD_MASK = 1 << 25,
GDK_ALL_EVENTS_MASK = 0x3FFFFFE
} GdkEventMask;
#define G_TYPE_FUNDAMENTAL_SHIFT (2)
#define G_TYPE_MAKE_FUNDAMENTAL(x) ((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
#define G_TYPE_INT G_TYPE_MAKE_FUNDAMENTAL (6)
#endif
DECL(GtkApplication *, gtk_application_new, (const char *name, GApplicationFlags flags))
@@ -74,23 +282,80 @@ DECL(int, g_application_run, (GApplication* application, int argc, char** argv))
DECL(GtkWidget*, gtk_application_window_new, ( GtkApplication* application ))
DECL(GtkWidget *, gtk_window_new, (GtkWindowType))
DECL(void, gtk_window_close, (GtkWindow *))
DECL(void, gtk_window_set_decorated, (GtkWindow* window, gboolean setting ))
DECL(void, gtk_widget_show_all, (GtkWindow *window))
DECL(void, gtk_widget_hide, (GtkWidget* widget ))
DECL(GtkWidget*, gtk_event_box_new, (void))
DECL(void, gtk_window_get_size, (GtkWindow *win, int *width, int *height))
DECL(void, gtk_window_resize, (GtkWindow* window, gint width, gint height))
DECL(void, gtk_window_set_default_size, (GtkWindow *window, gint width, gint height))
DECL(void, gtk_window_get_position, (GtkWindow* window, gint* root_x, gint* root_y))
DECL(void, gtk_window_move, (GtkWindow* window, gint x, gint y))
DECL(void, gtk_window_set_resizable, (GtkWindow* window, gboolean resizable))
DECL(GdkWindow *, gtk_widget_get_window, (GtkWidget *w));
DECL(gboolean, gtk_window_get_decorated, (GtkWindow* window))
DECL(void, gdk_window_set_events, (GdkWindow* window, GdkEventMask event_mask ))
DECL(void, gtk_window_set_title, (GtkWindow* window, const gchar* title))
DECL(const gchar*, gtk_window_get_title, (GtkWindow* window))
DECL(void, gtk_widget_destroy, (GtkWidget* widget))
DECL(void, gtk_container_add, (GtkContainer* container, GtkWidget* widget))
DECL(gboolean, gtk_widget_is_visible, (GtkWidget* widget))
DECL(GtkWidget*, gtk_label_new, (const char* str))
DECL(void, gtk_label_set_ellipsize, (GtkLabel* label, PangoEllipsizeMode mode))
DECL(void, gtk_label_set_label, (GtkLabel* label, const gchar* str))
DECL(const gchar*, gtk_label_get_text, (GtkLabel* label))
DECL(GtkWidget*, gtk_box_new, (GtkOrientation orientation, gint spacing ))
DECL(void, gtk_main, (void))
DECL(void, gtk_main_quit, (void))
DECL(unsigned long, g_signal_connect_data, (GObject *obj, const char *signal, GCallback c_handler, gpointer data, GClosureNotify destroy_data, GConnectFlags connect_flags))
// GObject / GValue
DECL(void, g_object_unref, (GObject* object))
DECL(void, g_object_set_property, (GObject* object, const gchar* property_name, const GValue* value))
DECL(GValue*, g_value_init, (GValue* value, GType g_type))
DECL(void, g_value_unset, (GValue* value))
DECL(void, g_value_set_int, (GValue* value, gint v_int))
// Menus
DECL(void, gtk_menu_popup_at_pointer, (GtkMenu* menu, const GdkEvent* trigger_event))
DECL(void, gtk_menu_popup_at_widget, (GtkMenu *menu, GtkWidget *widget, GdkGravity widget_anchor, GdkGravity menu_anchor, const GdkEvent *trigger_event))
DECL(GtkMenu *, gtk_menu_new, (void))
DECL(GtkMenuItem *, gtk_menu_item_new, (void));
DECL(GtkMenuItem *, gtk_menu_item_new_with_label, (const gchar *label));
DECL(void, gtk_menu_shell_append, (GtkMenuShell* menu_shell, GtkWidget* child))
DECL(GtkWidget *, gtk_separator_menu_item_new, (void))
// Text Buffer / Widget
DECL(GtkTextBuffer*, gtk_text_buffer_new, (GtkTextTagTable* table))
DECL(gchar*, gtk_text_buffer_get_text, (GtkTextBuffer* buffer, const GtkTextIter* start, const GtkTextIter* end, gboolean include_hidden_chars))
DECL(void,gtk_text_buffer_get_start_iter, (GtkTextBuffer* buffer, GtkTextIter* iter))
DECL(void, gtk_text_buffer_get_end_iter, (GtkTextBuffer* buffer, GtkTextIter* iter))
DECL(GtkWidget*, gtk_text_view_new, (void))
DECL(GtkWidget*, gtk_text_view_new_with_buffer, ( GtkTextBuffer* buffer ))
DECL(void, gtk_text_buffer_set_text, (GtkTextBuffer* buffer, const gchar* text, gint len ))
// Titlebar
DECL(GtkWidget*, gtk_header_bar_new, (void))
DECL(void, gtk_header_bar_set_custom_title, (GtkHeaderBar* bar, GtkWidget* title_widget))
// Deprecated in Gtk3
DECL(GtkStatusIcon*, gtk_status_icon_new, (void ))
DECL(GtkStatusIcon*, gtk_status_icon_new_from_file, (const gchar* filename))
#define g_signal_connect(instance, signal, c_handler, data) \
g_signal_connect_data(instance, signal, reinterpret_cast<void *>(c_handler), data, NULL, G_CONNECT_DEFAULT)