#ifndef RKTWEBVIEW_H #define RKTWEBVIEW_H #include "rktwebview_qt_global.h" #define RKT_WEBVIEW_API_MAJOR 0 #define RKT_WEBVIEW_API_MINOR 1 #define RKT_WEBVIEW_API_PATCH 1 extern "C" { typedef int rktwebview_t; typedef int rkt_wv_context_t; typedef struct { rktwebview_t wv; char *event; } rkt_event_t; typedef enum { no_result_yet = -1, oke = 0, set_html_failed = 1, set_navigate_failed = 2, eval_js_failed = 3, no_devtools_on_platform = 4, no_delegate_for_context = 5, webview_missing_dependency = 6, webview_canceled = 7, webview_invalid_state = 8, webview_invalid_argument = 9, webview_unspecified = 10, webview_dispatch_failed = 11, move_failed = 12, resize_failed = 13, choose_dir_failed = 14, open_file_failed = 15, save_file_failed = 16, failed = 17 } result_t; typedef struct { result_t result; char *value; } rkt_js_result_t; typedef enum { invalid = -1, normal = 0, minimized = 1, maximized = 2, hidden = 3, normal_active = 16, maximized_active = 18 } window_state_t; typedef enum { info = 1, error = 2, warning = 3, yes_no = 4, oke_cancel = 5 } rkt_messagetype_t; typedef struct { int qt_major; int qt_minor; int qt_patch; int api_major; int api_minor; int api_patch; } rkt_version_t; typedef enum { version = 1, event = 2, js_result = 3 } rkt_data_kind_t; typedef struct { rkt_data_kind_t kind; union { rkt_version_t version; rkt_event_t event; rkt_js_result_t js_result; } data; } rkt_data_t; typedef void (*event_cb_t)(rkt_data_t *); RKTWEBVIEW_QT_EXPORT void rkt_webview_init(); RKTWEBVIEW_QT_EXPORT void rkt_webview_cleanup(); RKTWEBVIEW_QT_EXPORT void rkt_webview_process_events(int for_ms); RKTWEBVIEW_QT_EXPORT void rkt_webview_free_data(rkt_data_t *d); RKTWEBVIEW_QT_EXPORT rkt_data_t *rkt_webview_version(); RKTWEBVIEW_QT_EXPORT rkt_wv_context_t rkt_webview_new_context(const char *boilerplate_js, const char *optional_server_cert_pem); RKTWEBVIEW_QT_EXPORT int rkt_webview_create(rkt_wv_context_t context, rktwebview_t parent, event_cb_t js_event_cb); RKTWEBVIEW_QT_EXPORT void rkt_webview_close(rktwebview_t wv); RKTWEBVIEW_QT_EXPORT bool rkt_webview_valid(rktwebview_t wv); RKTWEBVIEW_QT_EXPORT result_t rkt_webview_set_title(rktwebview_t wv, const char *title); RKTWEBVIEW_QT_EXPORT void rkt_webview_set_ou_token(rktwebview_t wv, const char *token); RKTWEBVIEW_QT_EXPORT result_t rkt_webview_set_url(rktwebview_t wv, const char *url); RKTWEBVIEW_QT_EXPORT result_t rkt_webview_set_html(rktwebview_t wv, const char *html); RKTWEBVIEW_QT_EXPORT result_t rkt_webview_run_js(rktwebview_t wv, const char *js); RKTWEBVIEW_QT_EXPORT rkt_data_t *rkt_webview_call_js(rktwebview_t wv, const char *js); RKTWEBVIEW_QT_EXPORT result_t rkt_webview_open_devtools(rktwebview_t wv); RKTWEBVIEW_QT_EXPORT result_t rkt_webview_move(rktwebview_t w, int x, int y); RKTWEBVIEW_QT_EXPORT result_t rkt_webview_resize(rktwebview_t w, int width, int height); RKTWEBVIEW_QT_EXPORT result_t rkt_webview_hide(rktwebview_t w); RKTWEBVIEW_QT_EXPORT result_t rkt_webview_show(rktwebview_t w); RKTWEBVIEW_QT_EXPORT result_t rkt_webview_show_normal(rktwebview_t w); RKTWEBVIEW_QT_EXPORT result_t rkt_webview_present(rktwebview_t w); RKTWEBVIEW_QT_EXPORT result_t rkt_webview_maximize(rktwebview_t w); RKTWEBVIEW_QT_EXPORT result_t rkt_webview_minimize(rktwebview_t w); RKTWEBVIEW_QT_EXPORT window_state_t rkt_webview_window_state(rktwebview_t w); RKTWEBVIEW_QT_EXPORT result_t rkt_webview_choose_dir(rktwebview_t w, const char *title, const char *base_dir); RKTWEBVIEW_QT_EXPORT result_t rkt_webview_file_open(rktwebview_t w, const char *title, const char *base_dir, const char *permitted_exts); RKTWEBVIEW_QT_EXPORT result_t rkt_webview_file_save(rktwebview_t w, const char *title, const char *base_dir, const char *permitted_exts); RKTWEBVIEW_QT_EXPORT result_t rkt_webview_message_box(rktwebview_t w, const char *title, const char *message, const char *submessage, rkt_messagetype_t type); } #endif // RKTWEBVIEW_H