#pragma once
#include <stdbool.h>
#include <stdint.h>
#include "../rute_base.h"
#ifdef __cplusplus
extern "C" {
#endif
#include "font_ffi.h"
#include "widget_ffi.h"
struct RUApplicationFuncs;
struct RUApplication;
typedef struct RUApplicationFuncs {
void (*destroy)(struct RUBase* self);
int (*color_spec)(struct RUBase* self_c);
void (*set_color_spec)(struct RUBase* self_c, int arg0);
struct RUFont (*get_font)(struct RUBase* self_c);
struct RUWidget (*active_popup_widget)(struct RUBase* self_c);
struct RUWidget (*active_modal_widget)(struct RUBase* self_c);
struct RUWidget (*focus_widget)(struct RUBase* self_c);
struct RUWidget (*active_window)(struct RUBase* self_c);
void (*set_active_window)(struct RUBase* self_c, struct RUBase* actor);
struct RUWidget (*widget_at)(struct RUBase* self_c, int x, int y);
struct RUWidget (*top_level_at)(struct RUBase* self_c, int x, int y);
void (*beep)(struct RUBase* self_c);
void (*set_cursor_flash_time)(struct RUBase* self_c, int arg0);
int (*cursor_flash_time)(struct RUBase* self_c);
void (*set_double_click_interval)(struct RUBase* self_c, int arg0);
int (*double_click_interval)(struct RUBase* self_c);
void (*set_keyboard_input_interval)(struct RUBase* self_c, int arg0);
int (*keyboard_input_interval)(struct RUBase* self_c);
void (*set_wheel_scroll_lines)(struct RUBase* self_c, int arg0);
int (*wheel_scroll_lines)(struct RUBase* self_c);
void (*set_start_drag_time)(struct RUBase* self_c, int ms);
int (*start_drag_time)(struct RUBase* self_c);
void (*set_start_drag_distance)(struct RUBase* self_c, int l);
int (*start_drag_distance)(struct RUBase* self_c);
int (*exec)(struct RUBase* self_c);
void (*set_about_to_quit_event)(void* object, void* user_data,
void* wrapped_func,
void (*event)(void*, void* self_c));
void (*set_screen_added_event)(void* object, void* user_data,
void* wrapped_func,
void (*event)(void*, void* self_c,
struct RUBase* screen));
void (*set_style_sheet)(struct RUBase* self_c, const char* sheet);
void (*set_auto_sip_enabled)(struct RUBase* self_c, bool enabled);
bool (*auto_sip_enabled)(struct RUBase* self_c);
void (*close_all_windows)(struct RUBase* self_c);
void (*about_qt)(struct RUBase* self_c);
} RUApplicationFuncs;
typedef struct RUApplicationAllFuncs {
struct RUApplicationFuncs* application_funcs;
} RUApplicationAllFuncs;
typedef struct RUApplication {
RUBase* qt_data;
RUBase* host_data;
struct RUApplicationAllFuncs* all_funcs;
} RUApplication;
extern RUApplicationFuncs s_application_funcs;
extern RUApplicationAllFuncs s_application_all_funcs;
#ifdef __cplusplus
}
#endif