#ifndef TOOLKIT_H
#define TOOLKIT_H
#include "../ui/toolkit.h"
#include "../common/context.h"
#include "../common/object.h"
#ifdef __cplusplus
extern "C" {
#endif
#pragma clang diagnostic ignored
"-Wdeprecated-declarations"
#if GLIB_MAJOR_VERSION *
1000 +
GLIB_MINOR_VERSION >
2074
#define UI_G_APPLICATION_FLAGS G_APPLICATION_DEFAULT_FLAGS
#else
#define UI_G_APPLICATION_FLAGS G_APPLICATION_FLAGS_NONE
#endif
#ifdef UI_LIBADWAITA
#define UI_APPLICATION AdwApplication*
#define UI_APPLICATION_NEW(id) adw_application_new(id,
UI_G_APPLICATION_FLAGS)
#elif GTK_MAJOR_VERSION >=
3
#define UI_APPLICATION GtkApplication*
#define UI_APPLICATION_NEW(id) gtk_application_new(id,
UI_G_APPLICATION_FLAGS)
#endif
#if GTK_MAJOR_VERSION >=
4
#define WINDOW_SHOW(window) gtk_window_present(
GTK_WINDOW(window))
#define WINDOW_DESTROY(window) gtk_window_destroy(
GTK_WINDOW(window))
#define WINDOW_SET_CONTENT(window, child) gtk_window_set_child(
GTK_WINDOW(window), child)
#define BOX_ADD(box, child) gtk_box_append(
GTK_BOX(box), child)
#define BOX_ADD_EXPAND(box, child) gtk_widget_set_hexpand(child,
TRUE); gtk_widget_set_vexpand(child,
TRUE); gtk_box_append(
GTK_BOX(box), child)
#define BOX_ADD_NO_EXPAND(box, child) gtk_box_append(
GTK_BOX(box), child)
#define ENTRY_SET_TEXT(entry, text) gtk_editable_set_text(
GTK_EDITABLE(entry), text)
#define ENTRY_GET_TEXT(entry) gtk_editable_get_text(
GTK_EDITABLE(entry))
#define SCROLLEDWINDOW_NEW() gtk_scrolled_window_new()
#define SCROLLEDWINDOW_SET_CHILD(sw, child) gtk_scrolled_window_set_child(
GTK_SCROLLED_WINDOW(sw), child)
#define SCROLLEDWINDOW_GET_CHILD(sw) gtk_scrolled_window_get_child(
GTK_SCROLLED_WINDOW(sw))
#define FRAME_SET_CHILD(frame, child) gtk_frame_set_child(
GTK_FRAME(frame), child)
#define EXPANDER_SET_CHILD(expander, child) gtk_expander_set_child(
GTK_EXPANDER(expander), child)
#define WIDGET_ADD_CSS_CLASS(w, cssclass) gtk_widget_add_css_class(w, cssclass)
#define WIDGET_REMOVE_CSS_CLASS(w, cssclass) gtk_widget_remove_css_class(w, cssclass)
#define ICON_IMAGE(icon) gtk_image_new_from_icon_name(icon)
#define LISTBOX_REMOVE(listbox, row) gtk_list_box_remove(
GTK_LIST_BOX(listbox), row)
#define LISTBOX_ROW_SET_CHILD(row, child) gtk_list_box_row_set_child(
GTK_LIST_BOX_ROW(row), child)
#else
#define WINDOW_SHOW(window) gtk_widget_show_all(window)
#define WINDOW_DESTROY(window) gtk_widget_destroy(window)
#define WINDOW_SET_CONTENT(window, child) gtk_container_add(
GTK_CONTAINER(window), child)
#define BOX_ADD(box, child) gtk_container_add(
GTK_CONTAINER(box), child)
#define BOX_ADD_EXPAND(box, child) gtk_box_pack_start(
GTK_BOX(box), child,
TRUE,
TRUE,
0)
#define BOX_ADD_NO_EXPAND(box, child) gtk_box_pack_start(
GTK_BOX(box), child,
TRUE,
FALSE,
0)
#define ENTRY_SET_TEXT(entry, text) gtk_entry_set_text(
GTK_ENTRY(entry), text)
#define ENTRY_GET_TEXT(entry) gtk_entry_get_text(
GTK_ENTRY(entry))
#define SCROLLEDWINDOW_NEW() gtk_scrolled_window_new(
NULL,
NULL)
#define SCROLLEDWINDOW_SET_CHILD(sw, child) gtk_container_add(
GTK_CONTAINER(sw), child)
#define SCROLLEDWINDOW_GET_CHILD(sw) gtk_bin_get_child(
GTK_BIN(sw))
#define FRAME_SET_CHILD(frame, child) gtk_container_add(
GTK_CONTAINER(frame), child)
#define EXPANDER_SET_CHILD(expander, child) gtk_container_add(
GTK_CONTAINER(expander), child)
#define WIDGET_ADD_CSS_CLASS(w, cssclass) gtk_style_context_add_class(gtk_widget_get_style_context(w), cssclass)
#define WIDGET_REMOVE_CSS_CLASS(w, cssclass) gtk_style_context_remove_class(gtk_widget_get_style_context(w), cssclass)
#define ICON_IMAGE(icon) gtk_image_new_from_icon_name(icon,
GTK_ICON_SIZE_BUTTON)
#define LISTBOX_REMOVE(listbox, row) gtk_container_remove(
GTK_CONTAINER(listbox), row)
#define LISTBOX_ROW_SET_CHILD(row, child) gtk_container_add(
GTK_CONTAINER(row), child)
#endif
#ifdef UI_GTK2
#undef SCROLLEDWINDOW_SET_CHILD
#define SCROLLEDWINDOW_SET_CHILD(sw, child) gtk_scrolled_window_add_with_viewport(
GTK_SCROLLED_WINDOW(sw), child)
#endif
#if GTK_MAJOR_VERSION >=
4
#define UI_GTK_SINCE_V4(st) st
#define UI_GTK_SINCE_V3(st)
#define UI_GTK_V2(st)
#define UI_GTK_V3(st)
#define UI_GTK_V4(st) st
#elif GTK_MAJOR_VERSION >=
3
#define UI_GTK_SINCE_V4(st) st
#define UI_GTK_SINCE_V3(st) st
#define UI_GTK_V2(st)
#define UI_GTK_V3(st) st
#define UI_GTK_V4(st)
#else
#define UI_GTK_SINCE_V4(st)
#define UI_GTK_SINCE_V3(st)
#define UI_GTK_V2(st) st
#define UI_GTK_V3(st)
#define UI_GTK_V4(st)
#endif
typedef struct UiEventData {
UiObject *obj;
ui_callback callback;
void *userdata;
int value;
void *customdata;
} UiEventData;
typedef struct UiEventDataExt {
UiObject *obj;
ui_callback callback;
void *userdata;
ui_callback callback2;
void *userdata2;
int value0;
int value1;
int value2;
int value3;
void *customdata0;
void *customdata1;
void *customdata2;
void *customdata3;
} UiEventDataExt;
typedef struct UiVarEventData {
UiObject *obj;
UiVar *var;
UiObserver **observers;
ui_callback callback;
void *userdata;
} UiVarEventData;
#ifndef UI_GTK4
struct UiSelection {
GtkSelectionData *data;
};
#endif
typedef enum UiOrientation UiOrientation;
enum UiOrientation {
UI_HORIZONTAL =
0,
UI_VERTICAL };
#ifdef UI_APPLICATION
void ui_app_quit();
GtkApplication* ui_get_application();
#endif
int ui_get_scalefactor();
void ui_set_name_and_style(GtkWidget *widget,
const char *name,
const char *style);
void ui_set_widget_groups(UiContext *ctx, GtkWidget *widget,
const int *groups);
void ui_set_widget_ngroups(UiContext *ctx, GtkWidget *widget,
const int *groups,
size_t ngroups);
void ui_destroy_userdata(GtkWidget *object,
void *userdata);
void ui_destroy_vardata(GtkWidget *object, UiVarEventData *data);
void ui_destroy_widget_var(GtkWidget *object, UiVar *var);
void ui_destroy_boundvar(UiContext *ctx, UiVar *var);
void ui_set_active_window(UiObject *obj);
UiObject *ui_get_active_window();
#if GTK_MAJOR_VERSION >=
3
void ui_css_init(
void);
#endif
#ifdef __cplusplus
}
#endif
#endif