Remove gtk and glib helpers
They're Qt patches now
This commit is contained in:
parent
fdd7abd266
commit
c2b070275e
7 changed files with 0 additions and 1475 deletions
|
|
@ -13,12 +13,6 @@ if (LINUX
|
||||||
AND NOT DESKTOP_APP_DISABLE_WAYLAND_INTEGRATION)
|
AND NOT DESKTOP_APP_DISABLE_WAYLAND_INTEGRATION)
|
||||||
add_subdirectory(linux_wayland_helper)
|
add_subdirectory(linux_wayland_helper)
|
||||||
endif()
|
endif()
|
||||||
if (LINUX AND NOT DESKTOP_APP_USE_PACKAGED)
|
|
||||||
add_subdirectory(linux_glib_helper)
|
|
||||||
endif()
|
|
||||||
if (LINUX AND NOT DESKTOP_APP_USE_PACKAGED)
|
|
||||||
add_subdirectory(linux_gtk_helper)
|
|
||||||
endif()
|
|
||||||
if (DESKTOP_APP_USE_ALLOCATION_TRACER)
|
if (DESKTOP_APP_USE_ALLOCATION_TRACER)
|
||||||
add_subdirectory(linux_allocation_tracer)
|
add_subdirectory(linux_allocation_tracer)
|
||||||
endif()
|
endif()
|
||||||
|
|
|
||||||
4
external/qt/CMakeLists.txt
vendored
4
external/qt/CMakeLists.txt
vendored
|
|
@ -292,10 +292,6 @@ else()
|
||||||
INTERFACE
|
INTERFACE
|
||||||
desktop-app::linux_xcb_helper
|
desktop-app::linux_xcb_helper
|
||||||
$<TARGET_FILE:desktop-app::linux_xcb_helper>
|
$<TARGET_FILE:desktop-app::linux_xcb_helper>
|
||||||
desktop-app::linux_gtk_helper
|
|
||||||
$<TARGET_FILE:desktop-app::linux_gtk_helper>
|
|
||||||
desktop-app::linux_glib_helper
|
|
||||||
$<TARGET_FILE:desktop-app::linux_glib_helper>
|
|
||||||
fontconfig
|
fontconfig
|
||||||
freetype
|
freetype
|
||||||
xcb
|
xcb
|
||||||
|
|
|
||||||
4
external/qt/qt6/CMakeLists.txt
vendored
4
external/qt/qt6/CMakeLists.txt
vendored
|
|
@ -267,10 +267,6 @@ else()
|
||||||
INTERFACE
|
INTERFACE
|
||||||
desktop-app::linux_xcb_helper
|
desktop-app::linux_xcb_helper
|
||||||
$<TARGET_FILE:desktop-app::linux_xcb_helper>
|
$<TARGET_FILE:desktop-app::linux_xcb_helper>
|
||||||
desktop-app::linux_gtk_helper
|
|
||||||
$<TARGET_FILE:desktop-app::linux_gtk_helper>
|
|
||||||
desktop-app::linux_glib_helper
|
|
||||||
$<TARGET_FILE:desktop-app::linux_glib_helper>
|
|
||||||
fontconfig
|
fontconfig
|
||||||
freetype
|
freetype
|
||||||
xcb
|
xcb
|
||||||
|
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
# This file is part of Desktop App Toolkit,
|
|
||||||
# a set of libraries for developing nice desktop applications.
|
|
||||||
#
|
|
||||||
# For license and copyright information please follow this link:
|
|
||||||
# https://github.com/desktop-app/legal/blob/master/LEGAL
|
|
||||||
|
|
||||||
add_library(linux_glib_helper STATIC)
|
|
||||||
init_target(linux_glib_helper "(external)")
|
|
||||||
add_library(desktop-app::linux_glib_helper ALIAS linux_glib_helper)
|
|
||||||
|
|
||||||
nice_target_sources(linux_glib_helper ${CMAKE_CURRENT_SOURCE_DIR}
|
|
||||||
PRIVATE
|
|
||||||
linux_glib_helper.cpp
|
|
||||||
)
|
|
||||||
|
|
||||||
target_link_libraries(linux_glib_helper
|
|
||||||
PUBLIC
|
|
||||||
${CMAKE_DL_LIBS}
|
|
||||||
)
|
|
||||||
|
|
||||||
find_package(PkgConfig REQUIRED)
|
|
||||||
pkg_check_modules(GLIB2 REQUIRED glib-2.0)
|
|
||||||
pkg_check_modules(GOBJECT REQUIRED gobject-2.0)
|
|
||||||
|
|
||||||
target_include_directories(linux_glib_helper SYSTEM
|
|
||||||
PRIVATE
|
|
||||||
${GLIB2_INCLUDE_DIRS}
|
|
||||||
${GOBJECT_INCLUDE_DIRS}
|
|
||||||
)
|
|
||||||
|
|
@ -1,413 +0,0 @@
|
||||||
// This file is part of Desktop App Toolkit,
|
|
||||||
// a set of libraries for developing nice desktop applications.
|
|
||||||
//
|
|
||||||
// For license and copyright information please follow this link:
|
|
||||||
// https://github.com/desktop-app/legal/blob/master/LEGAL
|
|
||||||
//
|
|
||||||
#include <dlfcn.h>
|
|
||||||
#include <glib.h>
|
|
||||||
#include <glib-object.h>
|
|
||||||
#include <memory>
|
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
#define LOAD_SYMBOL(handle, func) LoadSymbol(handle, #func, func)
|
|
||||||
|
|
||||||
namespace GlibHelper {
|
|
||||||
namespace {
|
|
||||||
|
|
||||||
void (*g_free)(gpointer mem);
|
|
||||||
void (*g_log_default_handler)(
|
|
||||||
const gchar* log_domain,
|
|
||||||
GLogLevelFlags log_level,
|
|
||||||
const gchar* message,
|
|
||||||
gpointer unused_data);
|
|
||||||
guint (*g_log_set_handler)(
|
|
||||||
const gchar* log_domain,
|
|
||||||
GLogLevelFlags log_levels,
|
|
||||||
GLogFunc log_func,
|
|
||||||
gpointer user_data);
|
|
||||||
GMainContext* (*g_main_context_default)(void);
|
|
||||||
gboolean (*g_main_context_iteration)(GMainContext* context, gboolean may_block);
|
|
||||||
GMainContext* (*g_main_context_new)(void);
|
|
||||||
// TODO: Remove when Qt 5 support will be dropped
|
|
||||||
gboolean (*g_main_context_pending)(GMainContext* context);
|
|
||||||
void (*g_main_context_pop_thread_default)(GMainContext* context);
|
|
||||||
void (*g_main_context_push_thread_default)(GMainContext* context);
|
|
||||||
GMainContext* (*g_main_context_ref)(GMainContext* context);
|
|
||||||
void (*g_main_context_unref)(GMainContext* context);
|
|
||||||
void (*g_main_context_wakeup)(GMainContext* context);
|
|
||||||
void (*g_return_if_fail_warning)(
|
|
||||||
const char* log_domain,
|
|
||||||
const char* pretty_function,
|
|
||||||
const char* expression);
|
|
||||||
void (*g_slist_free)(GSList* list);
|
|
||||||
void (*g_source_add_poll)(GSource* source, GPollFD* fd);
|
|
||||||
guint (*g_source_attach)(GSource* source, GMainContext* context);
|
|
||||||
void (*g_source_destroy)(GSource* source);
|
|
||||||
GSource* (*g_source_new)(GSourceFuncs* source_funcs, guint struct_size);
|
|
||||||
void (*g_source_remove_poll)(GSource* source, GPollFD* fd);
|
|
||||||
void (*g_source_set_can_recurse)(GSource* source, gboolean can_recurse);
|
|
||||||
void (*g_source_set_name)(GSource* source, const char* name);
|
|
||||||
void (*g_source_unref)(GSource* source);
|
|
||||||
int (*g_strcmp0)(const char* str1, const char* str2);
|
|
||||||
|
|
||||||
GParamSpec* (*g_object_class_find_property)(
|
|
||||||
GObjectClass* oclass,
|
|
||||||
const gchar* property_name);
|
|
||||||
void (*g_object_get_valist)(
|
|
||||||
GObject* object,
|
|
||||||
const gchar* first_property_name,
|
|
||||||
va_list var_args);
|
|
||||||
GObject* (*g_object_new_with_properties)(
|
|
||||||
GType object_type,
|
|
||||||
guint n_properties,
|
|
||||||
const char** names,
|
|
||||||
const GValue* values);
|
|
||||||
GObject* (*g_object_new_valist)(
|
|
||||||
GType object_type,
|
|
||||||
const gchar* first_property_name,
|
|
||||||
va_list var_args);
|
|
||||||
void (*g_object_set_valist)(
|
|
||||||
GObject* object,
|
|
||||||
const gchar* first_property_name,
|
|
||||||
va_list var_args);
|
|
||||||
void (*g_object_unref)(gpointer object);
|
|
||||||
gulong (*g_signal_connect_data)(
|
|
||||||
gpointer instance,
|
|
||||||
const gchar* detailed_signal,
|
|
||||||
GCallback c_handler,
|
|
||||||
gpointer data,
|
|
||||||
GClosureNotify destroy_data,
|
|
||||||
GConnectFlags connect_flags);
|
|
||||||
GTypeInstance* (*g_type_check_instance_cast)(
|
|
||||||
GTypeInstance* instance,
|
|
||||||
GType iface_type);
|
|
||||||
gboolean (*g_type_check_instance_is_a)(
|
|
||||||
GTypeInstance* instance,
|
|
||||||
GType iface_type);
|
|
||||||
gboolean (*g_type_check_instance_is_fundamentally_a)(
|
|
||||||
GTypeInstance* instance,
|
|
||||||
GType fundamental_type);
|
|
||||||
void (*g_type_ensure)(GType type);
|
|
||||||
|
|
||||||
struct HandleDeleter {
|
|
||||||
void operator()(void *handle) {
|
|
||||||
dlclose(handle);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
using Handle = std::unique_ptr<void, HandleDeleter>;
|
|
||||||
|
|
||||||
bool LoadLibrary(Handle &handle, const char *name) {
|
|
||||||
handle = Handle(dlopen(name, RTLD_LAZY | RTLD_NODELETE));
|
|
||||||
if (handle) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
std::cerr << dlerror() << std::endl;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename Function>
|
|
||||||
inline bool LoadSymbol(const Handle &handle, const char *name, Function &func) {
|
|
||||||
func = handle
|
|
||||||
? reinterpret_cast<Function>(dlsym(handle.get(), name))
|
|
||||||
: nullptr;
|
|
||||||
if (const auto error = dlerror()) {
|
|
||||||
std::cerr << error << std::endl;
|
|
||||||
}
|
|
||||||
return (func != nullptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Resolve() {
|
|
||||||
static const auto loaded = [&] {
|
|
||||||
auto lib = Handle();
|
|
||||||
return LoadLibrary(lib, "libglib-2.0.so.0")
|
|
||||||
&& LOAD_SYMBOL(lib, g_free)
|
|
||||||
&& LOAD_SYMBOL(lib, g_log_default_handler)
|
|
||||||
&& LOAD_SYMBOL(lib, g_log_set_handler)
|
|
||||||
&& LOAD_SYMBOL(lib, g_main_context_default)
|
|
||||||
&& LOAD_SYMBOL(lib, g_main_context_iteration)
|
|
||||||
&& LOAD_SYMBOL(lib, g_main_context_new)
|
|
||||||
&& LOAD_SYMBOL(lib, g_main_context_pending)
|
|
||||||
&& LOAD_SYMBOL(lib, g_main_context_pop_thread_default)
|
|
||||||
&& LOAD_SYMBOL(lib, g_main_context_push_thread_default)
|
|
||||||
&& LOAD_SYMBOL(lib, g_main_context_ref)
|
|
||||||
&& LOAD_SYMBOL(lib, g_main_context_unref)
|
|
||||||
&& LOAD_SYMBOL(lib, g_main_context_wakeup)
|
|
||||||
&& LOAD_SYMBOL(lib, g_return_if_fail_warning)
|
|
||||||
&& LOAD_SYMBOL(lib, g_slist_free)
|
|
||||||
&& LOAD_SYMBOL(lib, g_source_add_poll)
|
|
||||||
&& LOAD_SYMBOL(lib, g_source_attach)
|
|
||||||
&& LOAD_SYMBOL(lib, g_source_destroy)
|
|
||||||
&& LOAD_SYMBOL(lib, g_source_new)
|
|
||||||
&& LOAD_SYMBOL(lib, g_source_remove_poll)
|
|
||||||
&& LOAD_SYMBOL(lib, g_source_set_can_recurse)
|
|
||||||
&& LOAD_SYMBOL(lib, g_source_set_name)
|
|
||||||
&& LOAD_SYMBOL(lib, g_source_unref)
|
|
||||||
&& LOAD_SYMBOL(lib, g_strcmp0)
|
|
||||||
&& LoadLibrary(lib, "libgobject-2.0.so.0")
|
|
||||||
&& LOAD_SYMBOL(lib, g_object_class_find_property)
|
|
||||||
&& LOAD_SYMBOL(lib, g_object_get_valist)
|
|
||||||
&& LOAD_SYMBOL(lib, g_object_new_valist)
|
|
||||||
&& LOAD_SYMBOL(lib, g_object_new_with_properties)
|
|
||||||
&& LOAD_SYMBOL(lib, g_object_set_valist)
|
|
||||||
&& LOAD_SYMBOL(lib, g_object_unref)
|
|
||||||
&& LOAD_SYMBOL(lib, g_signal_connect_data)
|
|
||||||
&& LOAD_SYMBOL(lib, g_type_check_instance_cast)
|
|
||||||
&& LOAD_SYMBOL(lib, g_type_check_instance_is_a)
|
|
||||||
&& LOAD_SYMBOL(lib, g_type_check_instance_is_fundamentally_a)
|
|
||||||
&& LOAD_SYMBOL(lib, g_type_ensure);
|
|
||||||
}();
|
|
||||||
return loaded;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace
|
|
||||||
} // namespace GlibHelper
|
|
||||||
|
|
||||||
void g_free(gpointer mem) {
|
|
||||||
GlibHelper::Resolve();
|
|
||||||
GlibHelper::g_free(mem);
|
|
||||||
}
|
|
||||||
|
|
||||||
void g_log_default_handler(
|
|
||||||
const gchar* log_domain,
|
|
||||||
GLogLevelFlags log_level,
|
|
||||||
const gchar* message,
|
|
||||||
gpointer unused_data) {
|
|
||||||
GlibHelper::Resolve();
|
|
||||||
GlibHelper::g_log_default_handler(
|
|
||||||
log_domain,
|
|
||||||
log_level,
|
|
||||||
message,
|
|
||||||
unused_data);
|
|
||||||
}
|
|
||||||
|
|
||||||
guint g_log_set_handler(
|
|
||||||
const gchar* log_domain,
|
|
||||||
GLogLevelFlags log_levels,
|
|
||||||
GLogFunc log_func,
|
|
||||||
gpointer user_data) {
|
|
||||||
GlibHelper::Resolve();
|
|
||||||
return GlibHelper::g_log_set_handler(
|
|
||||||
log_domain,
|
|
||||||
log_levels,
|
|
||||||
log_func,
|
|
||||||
user_data);
|
|
||||||
}
|
|
||||||
|
|
||||||
GMainContext* g_main_context_default(void) {
|
|
||||||
GlibHelper::Resolve();
|
|
||||||
return GlibHelper::g_main_context_default();
|
|
||||||
}
|
|
||||||
|
|
||||||
gboolean g_main_context_iteration(GMainContext* context, gboolean may_block) {
|
|
||||||
GlibHelper::Resolve();
|
|
||||||
return GlibHelper::g_main_context_iteration(context, may_block);
|
|
||||||
}
|
|
||||||
|
|
||||||
GMainContext* g_main_context_new(void) {
|
|
||||||
GlibHelper::Resolve();
|
|
||||||
return GlibHelper::g_main_context_new();
|
|
||||||
}
|
|
||||||
|
|
||||||
gboolean g_main_context_pending(GMainContext* context) {
|
|
||||||
GlibHelper::Resolve();
|
|
||||||
return GlibHelper::g_main_context_pending(context);
|
|
||||||
}
|
|
||||||
|
|
||||||
void g_main_context_pop_thread_default(GMainContext* context) {
|
|
||||||
GlibHelper::Resolve();
|
|
||||||
GlibHelper::g_main_context_pop_thread_default(context);
|
|
||||||
}
|
|
||||||
|
|
||||||
void g_main_context_push_thread_default(GMainContext* context) {
|
|
||||||
GlibHelper::Resolve();
|
|
||||||
GlibHelper::g_main_context_push_thread_default(context);
|
|
||||||
}
|
|
||||||
|
|
||||||
GMainContext* g_main_context_ref(GMainContext* context) {
|
|
||||||
GlibHelper::Resolve();
|
|
||||||
return GlibHelper::g_main_context_ref(context);
|
|
||||||
}
|
|
||||||
|
|
||||||
void g_main_context_unref(GMainContext* context) {
|
|
||||||
GlibHelper::Resolve();
|
|
||||||
GlibHelper::g_main_context_unref(context);
|
|
||||||
}
|
|
||||||
|
|
||||||
void g_main_context_wakeup(GMainContext* context) {
|
|
||||||
GlibHelper::Resolve();
|
|
||||||
GlibHelper::g_main_context_wakeup(context);
|
|
||||||
}
|
|
||||||
|
|
||||||
void g_return_if_fail_warning(
|
|
||||||
const char* log_domain,
|
|
||||||
const char* pretty_function,
|
|
||||||
const char* expression) {
|
|
||||||
GlibHelper::Resolve();
|
|
||||||
GlibHelper::g_return_if_fail_warning(
|
|
||||||
log_domain,
|
|
||||||
pretty_function,
|
|
||||||
expression);
|
|
||||||
}
|
|
||||||
|
|
||||||
void g_slist_free(GSList* list) {
|
|
||||||
GlibHelper::Resolve();
|
|
||||||
GlibHelper::g_slist_free(list);
|
|
||||||
}
|
|
||||||
|
|
||||||
void g_source_add_poll(GSource* source, GPollFD* fd) {
|
|
||||||
GlibHelper::Resolve();
|
|
||||||
GlibHelper::g_source_add_poll(source, fd);
|
|
||||||
}
|
|
||||||
|
|
||||||
guint g_source_attach(GSource* source, GMainContext* context) {
|
|
||||||
GlibHelper::Resolve();
|
|
||||||
return GlibHelper::g_source_attach(source, context);
|
|
||||||
}
|
|
||||||
|
|
||||||
void g_source_destroy(GSource* source) {
|
|
||||||
GlibHelper::Resolve();
|
|
||||||
GlibHelper::g_source_destroy(source);
|
|
||||||
}
|
|
||||||
|
|
||||||
GSource* g_source_new(GSourceFuncs* source_funcs, guint struct_size) {
|
|
||||||
GlibHelper::Resolve();
|
|
||||||
return GlibHelper::g_source_new(source_funcs, struct_size);
|
|
||||||
}
|
|
||||||
|
|
||||||
void g_source_remove_poll(GSource* source, GPollFD* fd) {
|
|
||||||
GlibHelper::Resolve();
|
|
||||||
GlibHelper::g_source_remove_poll(source, fd);
|
|
||||||
}
|
|
||||||
|
|
||||||
void g_source_set_can_recurse(GSource* source, gboolean can_recurse) {
|
|
||||||
GlibHelper::Resolve();
|
|
||||||
GlibHelper::g_source_set_can_recurse(source, can_recurse);
|
|
||||||
}
|
|
||||||
|
|
||||||
void g_source_set_name(GSource* source, const char* name) {
|
|
||||||
GlibHelper::Resolve();
|
|
||||||
GlibHelper::g_source_set_name(source, name);
|
|
||||||
}
|
|
||||||
|
|
||||||
void g_source_unref(GSource* source) {
|
|
||||||
GlibHelper::Resolve();
|
|
||||||
GlibHelper::g_source_unref(source);
|
|
||||||
}
|
|
||||||
|
|
||||||
int g_strcmp0(const char* str1, const char* str2) {
|
|
||||||
GlibHelper::Resolve();
|
|
||||||
return GlibHelper::g_strcmp0(str1, str2);
|
|
||||||
}
|
|
||||||
|
|
||||||
GParamSpec* g_object_class_find_property(
|
|
||||||
GObjectClass* oclass,
|
|
||||||
const gchar* property_name) {
|
|
||||||
GlibHelper::Resolve();
|
|
||||||
return GlibHelper::g_object_class_find_property(
|
|
||||||
oclass,
|
|
||||||
property_name);
|
|
||||||
}
|
|
||||||
|
|
||||||
void g_object_get(
|
|
||||||
gpointer _object,
|
|
||||||
const gchar *first_property_name,
|
|
||||||
...) {
|
|
||||||
GlibHelper::Resolve();
|
|
||||||
|
|
||||||
GObject *object = (GObject*) _object;
|
|
||||||
va_list var_args;
|
|
||||||
|
|
||||||
g_return_if_fail(G_IS_OBJECT(object));
|
|
||||||
|
|
||||||
va_start(var_args, first_property_name);
|
|
||||||
GlibHelper::g_object_get_valist(object, first_property_name, var_args);
|
|
||||||
va_end(var_args);
|
|
||||||
}
|
|
||||||
|
|
||||||
gpointer g_object_new(
|
|
||||||
GType object_type,
|
|
||||||
const gchar *first_property_name,
|
|
||||||
...) {
|
|
||||||
GlibHelper::Resolve();
|
|
||||||
|
|
||||||
GObject *object;
|
|
||||||
va_list var_args;
|
|
||||||
|
|
||||||
/* short circuit for calls supplying no properties */
|
|
||||||
if (!first_property_name)
|
|
||||||
return GlibHelper::g_object_new_with_properties(object_type, 0, NULL, NULL);
|
|
||||||
|
|
||||||
va_start(var_args, first_property_name);
|
|
||||||
object = GlibHelper::g_object_new_valist(object_type, first_property_name, var_args);
|
|
||||||
va_end(var_args);
|
|
||||||
|
|
||||||
return object;
|
|
||||||
}
|
|
||||||
|
|
||||||
void g_object_set(
|
|
||||||
gpointer _object,
|
|
||||||
const gchar *first_property_name,
|
|
||||||
...) {
|
|
||||||
GlibHelper::Resolve();
|
|
||||||
|
|
||||||
GObject *object = (GObject*) _object;
|
|
||||||
va_list var_args;
|
|
||||||
|
|
||||||
g_return_if_fail(G_IS_OBJECT(object));
|
|
||||||
|
|
||||||
va_start(var_args, first_property_name);
|
|
||||||
GlibHelper::g_object_set_valist(object, first_property_name, var_args);
|
|
||||||
va_end(var_args);
|
|
||||||
}
|
|
||||||
|
|
||||||
void g_object_unref(gpointer object) {
|
|
||||||
GlibHelper::Resolve();
|
|
||||||
GlibHelper::g_object_unref(object);
|
|
||||||
}
|
|
||||||
|
|
||||||
gulong g_signal_connect_data(
|
|
||||||
gpointer instance,
|
|
||||||
const gchar* detailed_signal,
|
|
||||||
GCallback c_handler,
|
|
||||||
gpointer data,
|
|
||||||
GClosureNotify destroy_data,
|
|
||||||
GConnectFlags connect_flags) {
|
|
||||||
GlibHelper::Resolve();
|
|
||||||
return GlibHelper::g_signal_connect_data(
|
|
||||||
instance,
|
|
||||||
detailed_signal,
|
|
||||||
c_handler,
|
|
||||||
data,
|
|
||||||
destroy_data,
|
|
||||||
connect_flags);
|
|
||||||
}
|
|
||||||
|
|
||||||
GTypeInstance* g_type_check_instance_cast(
|
|
||||||
GTypeInstance* instance,
|
|
||||||
GType iface_type) {
|
|
||||||
GlibHelper::Resolve();
|
|
||||||
return GlibHelper::g_type_check_instance_cast(instance, iface_type);
|
|
||||||
}
|
|
||||||
|
|
||||||
gboolean g_type_check_instance_is_a(
|
|
||||||
GTypeInstance* instance,
|
|
||||||
GType iface_type) {
|
|
||||||
GlibHelper::Resolve();
|
|
||||||
return GlibHelper::g_type_check_instance_is_a(instance, iface_type);
|
|
||||||
}
|
|
||||||
|
|
||||||
gboolean g_type_check_instance_is_fundamentally_a(
|
|
||||||
GTypeInstance* instance,
|
|
||||||
GType fundamental_type) {
|
|
||||||
GlibHelper::Resolve();
|
|
||||||
return GlibHelper::g_type_check_instance_is_fundamentally_a(
|
|
||||||
instance,
|
|
||||||
fundamental_type);
|
|
||||||
}
|
|
||||||
|
|
||||||
void g_type_ensure(GType type) {
|
|
||||||
GlibHelper::Resolve();
|
|
||||||
GlibHelper::g_type_ensure(type);
|
|
||||||
}
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
||||||
# This file is part of Desktop App Toolkit,
|
|
||||||
# a set of libraries for developing nice desktop applications.
|
|
||||||
#
|
|
||||||
# For license and copyright information please follow this link:
|
|
||||||
# https://github.com/desktop-app/legal/blob/master/LEGAL
|
|
||||||
|
|
||||||
add_library(linux_gtk_helper STATIC)
|
|
||||||
init_target(linux_gtk_helper "(external)")
|
|
||||||
add_library(desktop-app::linux_gtk_helper ALIAS linux_gtk_helper)
|
|
||||||
|
|
||||||
nice_target_sources(linux_gtk_helper ${CMAKE_CURRENT_SOURCE_DIR}
|
|
||||||
PRIVATE
|
|
||||||
linux_gtk_helper.cpp
|
|
||||||
)
|
|
||||||
|
|
||||||
target_link_libraries(linux_gtk_helper
|
|
||||||
PUBLIC
|
|
||||||
${CMAKE_DL_LIBS}
|
|
||||||
)
|
|
||||||
|
|
||||||
find_package(PkgConfig REQUIRED)
|
|
||||||
pkg_check_modules(GTK REQUIRED gtk+-3.0)
|
|
||||||
target_include_directories(linux_gtk_helper SYSTEM PRIVATE ${GTK_INCLUDE_DIRS})
|
|
||||||
|
|
@ -1,996 +0,0 @@
|
||||||
// This file is part of Desktop App Toolkit,
|
|
||||||
// a set of libraries for developing nice desktop applications.
|
|
||||||
//
|
|
||||||
// For license and copyright information please follow this link:
|
|
||||||
// https://github.com/desktop-app/legal/blob/master/LEGAL
|
|
||||||
//
|
|
||||||
#include <dlfcn.h>
|
|
||||||
#include <gdk/gdkx.h>
|
|
||||||
#include <gtk/gtk.h>
|
|
||||||
#include <memory>
|
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
#define LOAD_SYMBOL(handle, func) LoadSymbol(handle, #func, func)
|
|
||||||
|
|
||||||
namespace GtkHelper {
|
|
||||||
namespace {
|
|
||||||
|
|
||||||
GdkPixbuf *(*gdk_pixbuf_new_from_file_at_size)(
|
|
||||||
const char *filename,
|
|
||||||
int width,
|
|
||||||
int height,
|
|
||||||
GError **error);
|
|
||||||
void (*gdk_window_focus)(GdkWindow *window, guint32 timestamp);
|
|
||||||
GdkDisplay *(*gdk_window_get_display)(GdkWindow *window);
|
|
||||||
void (*gdk_window_set_modal_hint)(GdkWindow *window, gboolean modal);
|
|
||||||
Display *(*gdk_x11_display_get_xdisplay)(GdkDisplay *display);
|
|
||||||
GType (*gdk_x11_window_get_type)(void);
|
|
||||||
Window (*gdk_x11_window_get_xid)(GdkWindow *window);
|
|
||||||
GType (*gtk_accel_label_get_type)(void);
|
|
||||||
void (*gtk_accel_label_set_accel)(
|
|
||||||
GtkAccelLabel *accel_label,
|
|
||||||
guint accelerator_key,
|
|
||||||
GdkModifierType accelerator_mods);
|
|
||||||
GtkWidget *(*gtk_bin_get_child)(GtkBin *bin);
|
|
||||||
GType (*gtk_bin_get_type)(void);
|
|
||||||
GType (*gtk_button_get_type)(void);
|
|
||||||
void (*gtk_button_set_label)(GtkButton *button, const gchar *label);
|
|
||||||
gboolean (*gtk_check_menu_item_get_active)(GtkCheckMenuItem *check_menu_item);
|
|
||||||
GType (*gtk_check_menu_item_get_type)(void);
|
|
||||||
GtkWidget* (*gtk_check_menu_item_new)(void);
|
|
||||||
void (*gtk_check_menu_item_set_active)(
|
|
||||||
GtkCheckMenuItem *check_menu_item,
|
|
||||||
gboolean is_active);
|
|
||||||
const gchar *(*gtk_check_version)(
|
|
||||||
guint required_major,
|
|
||||||
guint required_minor,
|
|
||||||
guint required_micro);
|
|
||||||
GtkClipboard *(*gtk_clipboard_get)(GdkAtom selection);
|
|
||||||
void (*gtk_clipboard_store)(GtkClipboard *clipboard);
|
|
||||||
GtkWidget *(*gtk_color_chooser_dialog_new)(
|
|
||||||
const gchar *title,
|
|
||||||
GtkWindow *parent);
|
|
||||||
GType (*gtk_color_chooser_get_type)(void);
|
|
||||||
void (*gtk_color_chooser_get_rgba)(
|
|
||||||
GtkColorChooser *chooser,
|
|
||||||
GdkRGBA *color);
|
|
||||||
void (*gtk_color_chooser_set_rgba)(
|
|
||||||
GtkColorChooser *chooser,
|
|
||||||
const GdkRGBA *color);
|
|
||||||
void (*gtk_color_chooser_set_use_alpha)(
|
|
||||||
GtkColorChooser *chooser,
|
|
||||||
gboolean use_alpha);
|
|
||||||
GType (*gtk_container_get_type)(void);
|
|
||||||
void (*gtk_container_remove)(GtkContainer *container, GtkWidget *widget);
|
|
||||||
GtkWidget *(*gtk_dialog_add_button)(
|
|
||||||
GtkDialog *dialog,
|
|
||||||
const gchar *button_text,
|
|
||||||
gint response_id);
|
|
||||||
GType (*gtk_dialog_get_type)(void);
|
|
||||||
GtkWidget* (*gtk_dialog_get_widget_for_response)(
|
|
||||||
GtkDialog *dialog,
|
|
||||||
gint response_id);
|
|
||||||
gint (*gtk_dialog_run)(GtkDialog *dialog);
|
|
||||||
void (*gtk_file_chooser_add_filter)(
|
|
||||||
GtkFileChooser *chooser,
|
|
||||||
GtkFileFilter *filter);
|
|
||||||
GType (*gtk_file_chooser_dialog_get_type)(void);
|
|
||||||
gchar *(*gtk_file_chooser_get_current_folder)(GtkFileChooser *chooser);
|
|
||||||
gchar *(*gtk_file_chooser_get_filename)(GtkFileChooser *chooser);
|
|
||||||
GSList *(*gtk_file_chooser_get_filenames)(GtkFileChooser *chooser);
|
|
||||||
GtkFileFilter *(*gtk_file_chooser_get_filter)(GtkFileChooser *chooser);
|
|
||||||
char *(*gtk_file_chooser_get_preview_filename)(GtkFileChooser *chooser);
|
|
||||||
GType (*gtk_file_chooser_get_type)(void);
|
|
||||||
void (*gtk_file_chooser_remove_filter)(
|
|
||||||
GtkFileChooser *chooser,
|
|
||||||
GtkFileFilter *filter);
|
|
||||||
gboolean (*gtk_file_chooser_select_filename)(
|
|
||||||
GtkFileChooser *chooser,
|
|
||||||
const char *filename);
|
|
||||||
void (*gtk_file_chooser_set_action)(
|
|
||||||
GtkFileChooser *chooser,
|
|
||||||
GtkFileChooserAction action);
|
|
||||||
void (*gtk_file_chooser_set_create_folders)(
|
|
||||||
GtkFileChooser *chooser,
|
|
||||||
gboolean create_folders);
|
|
||||||
gboolean (*gtk_file_chooser_set_current_folder)(
|
|
||||||
GtkFileChooser *chooser,
|
|
||||||
const gchar *filename);
|
|
||||||
void (*gtk_file_chooser_set_current_name)(
|
|
||||||
GtkFileChooser *chooser,
|
|
||||||
const gchar *name);
|
|
||||||
void (*gtk_file_chooser_set_do_overwrite_confirmation)(
|
|
||||||
GtkFileChooser *chooser,
|
|
||||||
gboolean do_overwrite_confirmation);
|
|
||||||
void (*gtk_file_chooser_set_filter)(
|
|
||||||
GtkFileChooser *chooser,
|
|
||||||
GtkFileFilter *filter);
|
|
||||||
void (*gtk_file_chooser_set_local_only)(
|
|
||||||
GtkFileChooser *chooser,
|
|
||||||
gboolean local_only);
|
|
||||||
void (*gtk_file_chooser_set_preview_widget)(
|
|
||||||
GtkFileChooser *chooser,
|
|
||||||
GtkWidget *preview_widget);
|
|
||||||
void (*gtk_file_chooser_set_preview_widget_active)(
|
|
||||||
GtkFileChooser *chooser,
|
|
||||||
gboolean active);
|
|
||||||
void (*gtk_file_chooser_set_select_multiple)(
|
|
||||||
GtkFileChooser *chooser,
|
|
||||||
gboolean select_multiple);
|
|
||||||
void (*gtk_file_filter_add_pattern)(
|
|
||||||
GtkFileFilter *filter,
|
|
||||||
const gchar *pattern);
|
|
||||||
GtkFileFilter *(*gtk_file_filter_new)(void);
|
|
||||||
void (*gtk_file_filter_set_name)(
|
|
||||||
GtkFileFilter *filter,
|
|
||||||
const gchar *name);
|
|
||||||
GtkWidget* (*gtk_font_chooser_dialog_new)(
|
|
||||||
const gchar *title,
|
|
||||||
GtkWindow *parent);
|
|
||||||
gchar* (*gtk_font_chooser_get_font)(GtkFontChooser *fontchooser);
|
|
||||||
GType (*gtk_font_chooser_get_type)(void);
|
|
||||||
void (*gtk_font_chooser_set_font)(
|
|
||||||
GtkFontChooser *fontchooser,
|
|
||||||
const gchar *fontname);
|
|
||||||
guint32 (*gtk_get_current_event_time)(void);
|
|
||||||
GType (*gtk_image_get_type)(void);
|
|
||||||
GtkWidget* (*gtk_image_new)(void);
|
|
||||||
void (*gtk_image_set_from_pixbuf)(GtkImage *image, GdkPixbuf *pixbuf);
|
|
||||||
void (*gtk_init)(int *argc, char ***argv);
|
|
||||||
GType (*gtk_menu_get_type)(void);
|
|
||||||
GType (*gtk_menu_item_get_type)(void);
|
|
||||||
GtkWidget* (*gtk_menu_item_new)(void);
|
|
||||||
void (*gtk_menu_item_set_label)(GtkMenuItem *menu_item, const gchar *label);
|
|
||||||
void (*gtk_menu_item_set_submenu)(GtkMenuItem *menu_item, GtkWidget *submenu);
|
|
||||||
void (*gtk_menu_item_set_use_underline)(
|
|
||||||
GtkMenuItem *menu_item,
|
|
||||||
gboolean setting);
|
|
||||||
GtkWidget* (*gtk_menu_new)(void);
|
|
||||||
void (*gtk_menu_popdown)(GtkMenu *menu);
|
|
||||||
void (*gtk_menu_popup)(
|
|
||||||
GtkMenu *menu,
|
|
||||||
GtkWidget *parent_menu_shell,
|
|
||||||
GtkWidget *parent_menu_item,
|
|
||||||
GtkMenuPositionFunc func,
|
|
||||||
gpointer data,
|
|
||||||
guint button,
|
|
||||||
guint32 activate_time);
|
|
||||||
GType (*gtk_menu_shell_get_type)(void);
|
|
||||||
void (*gtk_menu_shell_insert)(
|
|
||||||
GtkMenuShell *menu_shell,
|
|
||||||
GtkWidget *child,
|
|
||||||
gint position);
|
|
||||||
void (*gtk_menu_shell_select_item)(
|
|
||||||
GtkMenuShell *menu_shell,
|
|
||||||
GtkWidget *menu_item);
|
|
||||||
GtkWidget* (*gtk_separator_menu_item_new)(void);
|
|
||||||
GtkSettings* (*gtk_settings_get_default)(void);
|
|
||||||
void (*gtk_widget_destroy)(GtkWidget *widget);
|
|
||||||
gint (*gtk_widget_get_scale_factor)(GtkWidget *widget);
|
|
||||||
GType (*gtk_widget_get_type)(void);
|
|
||||||
GdkWindow *(*gtk_widget_get_window)(GtkWidget *widget);
|
|
||||||
void (*gtk_widget_hide)(GtkWidget *widget);
|
|
||||||
gboolean (*gtk_widget_hide_on_delete)(GtkWidget *widget);
|
|
||||||
void (*gtk_widget_realize)(GtkWidget *widget);
|
|
||||||
void (*gtk_widget_set_sensitive)(GtkWidget *widget, gboolean sensitive);
|
|
||||||
void (*gtk_widget_set_visible)(GtkWidget *widget, gboolean visible);
|
|
||||||
void (*gtk_widget_show)(GtkWidget *widget);
|
|
||||||
GType (*gtk_window_get_type)(void);
|
|
||||||
void (*gtk_window_set_title)(GtkWindow *window, const gchar *title);
|
|
||||||
void (*gtk_window_set_transient_for)(GtkWindow *window, GtkWindow *parent);
|
|
||||||
void (*pango_font_description_free)(PangoFontDescription *desc);
|
|
||||||
PangoFontDescription *(*pango_font_description_from_string)(const char *str);
|
|
||||||
const char *(*pango_font_description_get_family)(
|
|
||||||
const PangoFontDescription *desc);
|
|
||||||
gint (*pango_font_description_get_size)(const PangoFontDescription *desc);
|
|
||||||
PangoStyle (*pango_font_description_get_style)(
|
|
||||||
const PangoFontDescription *desc);
|
|
||||||
PangoWeight (*pango_font_description_get_weight)(
|
|
||||||
const PangoFontDescription *desc);
|
|
||||||
PangoFontDescription *(*pango_font_description_new)(void);
|
|
||||||
void (*pango_font_description_set_family)(
|
|
||||||
PangoFontDescription *desc,
|
|
||||||
const char *family);
|
|
||||||
void (*pango_font_description_set_size)(
|
|
||||||
PangoFontDescription *desc,
|
|
||||||
gint size);
|
|
||||||
void (*pango_font_description_set_style)(
|
|
||||||
PangoFontDescription *desc,
|
|
||||||
PangoStyle style);
|
|
||||||
void (*pango_font_description_set_weight)(
|
|
||||||
PangoFontDescription *desc,
|
|
||||||
PangoWeight weight);
|
|
||||||
char *(*pango_font_description_to_string)(const PangoFontDescription *desc);
|
|
||||||
GType (*pango_font_face_get_type)(void);
|
|
||||||
GType (*pango_font_family_get_type)(void);
|
|
||||||
|
|
||||||
struct HandleDeleter {
|
|
||||||
void operator()(void *handle) {
|
|
||||||
dlclose(handle);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
using Handle = std::unique_ptr<void, HandleDeleter>;
|
|
||||||
|
|
||||||
bool LoadLibrary(Handle &handle, const char *name) {
|
|
||||||
handle = Handle(dlopen(name, RTLD_LAZY | RTLD_NODELETE));
|
|
||||||
if (handle) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
std::cerr << dlerror() << std::endl;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename Function>
|
|
||||||
inline bool LoadSymbol(const Handle &handle, const char *name, Function &func) {
|
|
||||||
func = handle
|
|
||||||
? reinterpret_cast<Function>(dlsym(handle.get(), name))
|
|
||||||
: nullptr;
|
|
||||||
if (const auto error = dlerror()) {
|
|
||||||
std::cerr << error << std::endl;
|
|
||||||
}
|
|
||||||
return (func != nullptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Resolve() {
|
|
||||||
static const auto loaded = [&] {
|
|
||||||
auto lib = Handle();
|
|
||||||
return LoadLibrary(lib, "libgtk-3.so.0")
|
|
||||||
&& LOAD_SYMBOL(lib, gdk_pixbuf_new_from_file_at_size)
|
|
||||||
&& LOAD_SYMBOL(lib, gdk_window_focus)
|
|
||||||
&& LOAD_SYMBOL(lib, gdk_window_get_display)
|
|
||||||
&& LOAD_SYMBOL(lib, gdk_window_set_modal_hint)
|
|
||||||
&& LOAD_SYMBOL(lib, gdk_x11_display_get_xdisplay)
|
|
||||||
&& LOAD_SYMBOL(lib, gdk_x11_window_get_type)
|
|
||||||
&& LOAD_SYMBOL(lib, gdk_x11_window_get_xid)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_accel_label_get_type)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_accel_label_set_accel)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_bin_get_child)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_bin_get_type)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_button_get_type)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_button_set_label)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_check_menu_item_get_active)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_check_menu_item_get_type)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_check_menu_item_new)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_check_menu_item_set_active)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_check_version)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_clipboard_get)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_clipboard_store)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_color_chooser_dialog_new)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_color_chooser_get_rgba)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_color_chooser_get_type)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_color_chooser_set_rgba)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_color_chooser_set_use_alpha)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_container_get_type)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_container_remove)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_dialog_add_button)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_dialog_get_type)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_dialog_get_widget_for_response)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_dialog_run)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_file_chooser_add_filter)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_file_chooser_dialog_get_type)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_file_chooser_get_current_folder)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_file_chooser_get_filename)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_file_chooser_get_filenames)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_file_chooser_get_filter)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_file_chooser_get_preview_filename)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_file_chooser_get_type)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_file_chooser_remove_filter)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_file_chooser_select_filename)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_file_chooser_set_action)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_file_chooser_set_create_folders)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_file_chooser_set_current_folder)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_file_chooser_set_current_name)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_file_chooser_set_do_overwrite_confirmation)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_file_chooser_set_filter)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_file_chooser_set_local_only)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_file_chooser_set_preview_widget)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_file_chooser_set_preview_widget_active)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_file_chooser_set_select_multiple)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_file_filter_add_pattern)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_file_filter_new)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_file_filter_set_name)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_font_chooser_dialog_new)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_font_chooser_get_font)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_font_chooser_get_type)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_font_chooser_set_font)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_get_current_event_time)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_image_get_type)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_image_new)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_image_set_from_pixbuf)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_init)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_menu_get_type)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_menu_item_get_type)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_menu_item_new)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_menu_item_set_label)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_menu_item_set_submenu)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_menu_item_set_use_underline)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_menu_new)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_menu_popdown)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_menu_popup)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_menu_shell_get_type)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_menu_shell_insert)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_menu_shell_select_item)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_separator_menu_item_new)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_settings_get_default)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_widget_destroy)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_widget_get_scale_factor)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_widget_get_type)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_widget_get_window)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_widget_hide)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_widget_hide_on_delete)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_widget_realize)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_widget_set_sensitive)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_widget_set_visible)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_widget_show)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_window_get_type)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_window_set_title)
|
|
||||||
&& LOAD_SYMBOL(lib, gtk_window_set_transient_for)
|
|
||||||
&& LOAD_SYMBOL(lib, pango_font_description_free)
|
|
||||||
&& LOAD_SYMBOL(lib, pango_font_description_from_string)
|
|
||||||
&& LOAD_SYMBOL(lib, pango_font_description_get_family)
|
|
||||||
&& LOAD_SYMBOL(lib, pango_font_description_get_size)
|
|
||||||
&& LOAD_SYMBOL(lib, pango_font_description_get_style)
|
|
||||||
&& LOAD_SYMBOL(lib, pango_font_description_get_weight)
|
|
||||||
&& LOAD_SYMBOL(lib, pango_font_description_new)
|
|
||||||
&& LOAD_SYMBOL(lib, pango_font_description_set_family)
|
|
||||||
&& LOAD_SYMBOL(lib, pango_font_description_set_size)
|
|
||||||
&& LOAD_SYMBOL(lib, pango_font_description_set_style)
|
|
||||||
&& LOAD_SYMBOL(lib, pango_font_description_set_weight)
|
|
||||||
&& LOAD_SYMBOL(lib, pango_font_description_to_string)
|
|
||||||
&& LOAD_SYMBOL(lib, pango_font_face_get_type)
|
|
||||||
&& LOAD_SYMBOL(lib, pango_font_family_get_type);
|
|
||||||
}();
|
|
||||||
return loaded;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace
|
|
||||||
} // namespace GtkHelper
|
|
||||||
|
|
||||||
GdkPixbuf *gdk_pixbuf_new_from_file_at_size(
|
|
||||||
const char *filename,
|
|
||||||
int width,
|
|
||||||
int height,
|
|
||||||
GError **error) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gdk_pixbuf_new_from_file_at_size(
|
|
||||||
filename,
|
|
||||||
width,
|
|
||||||
height,
|
|
||||||
error);
|
|
||||||
}
|
|
||||||
|
|
||||||
void gdk_window_focus(GdkWindow *window, guint32 timestamp) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gdk_window_focus(window, timestamp);
|
|
||||||
}
|
|
||||||
|
|
||||||
GdkDisplay *gdk_window_get_display(GdkWindow *window) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gdk_window_get_display(window);
|
|
||||||
}
|
|
||||||
|
|
||||||
void gdk_window_set_modal_hint(GdkWindow *window, gboolean modal) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::gdk_window_set_modal_hint(window, modal);
|
|
||||||
}
|
|
||||||
|
|
||||||
Display *gdk_x11_display_get_xdisplay(GdkDisplay *display) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gdk_x11_display_get_xdisplay(display);
|
|
||||||
}
|
|
||||||
|
|
||||||
GType gdk_x11_window_get_type(void) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gdk_x11_window_get_type();
|
|
||||||
}
|
|
||||||
|
|
||||||
Window gdk_x11_window_get_xid(GdkWindow *window) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gdk_x11_window_get_xid(window);
|
|
||||||
}
|
|
||||||
|
|
||||||
GType gtk_accel_label_get_type(void) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_accel_label_get_type();
|
|
||||||
}
|
|
||||||
|
|
||||||
void gtk_accel_label_set_accel(
|
|
||||||
GtkAccelLabel *accel_label,
|
|
||||||
guint accelerator_key,
|
|
||||||
GdkModifierType accelerator_mods) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::gtk_accel_label_set_accel(
|
|
||||||
accel_label,
|
|
||||||
accelerator_key,
|
|
||||||
accelerator_mods);
|
|
||||||
}
|
|
||||||
|
|
||||||
GtkWidget *gtk_bin_get_child(GtkBin *bin) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_bin_get_child(bin);
|
|
||||||
}
|
|
||||||
|
|
||||||
GType gtk_bin_get_type(void) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_bin_get_type();
|
|
||||||
}
|
|
||||||
|
|
||||||
GType gtk_button_get_type(void) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_button_get_type();
|
|
||||||
}
|
|
||||||
|
|
||||||
void gtk_button_set_label(GtkButton *button, const gchar *label) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::gtk_button_set_label(button, label);
|
|
||||||
}
|
|
||||||
|
|
||||||
gboolean gtk_check_menu_item_get_active(GtkCheckMenuItem *check_menu_item) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_check_menu_item_get_active(check_menu_item);
|
|
||||||
}
|
|
||||||
|
|
||||||
GType gtk_check_menu_item_get_type(void) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_check_menu_item_get_type();
|
|
||||||
}
|
|
||||||
|
|
||||||
GtkWidget* gtk_check_menu_item_new(void) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_check_menu_item_new();
|
|
||||||
}
|
|
||||||
|
|
||||||
void gtk_check_menu_item_set_active(
|
|
||||||
GtkCheckMenuItem *check_menu_item,
|
|
||||||
gboolean is_active) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_check_menu_item_set_active(
|
|
||||||
check_menu_item,
|
|
||||||
is_active);
|
|
||||||
}
|
|
||||||
|
|
||||||
const gchar *gtk_check_version(
|
|
||||||
guint required_major,
|
|
||||||
guint required_minor,
|
|
||||||
guint required_micro) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_check_version(
|
|
||||||
required_major,
|
|
||||||
required_minor,
|
|
||||||
required_micro);
|
|
||||||
}
|
|
||||||
|
|
||||||
GtkClipboard *gtk_clipboard_get(GdkAtom selection) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_clipboard_get(selection);
|
|
||||||
}
|
|
||||||
|
|
||||||
void gtk_clipboard_store(GtkClipboard *clipboard) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::gtk_clipboard_store(clipboard);
|
|
||||||
}
|
|
||||||
|
|
||||||
GtkWidget *gtk_color_chooser_dialog_new(
|
|
||||||
const gchar *title,
|
|
||||||
GtkWindow *parent) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_color_chooser_dialog_new(title, parent);
|
|
||||||
}
|
|
||||||
|
|
||||||
GType gtk_color_chooser_get_type(void) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_color_chooser_get_type();
|
|
||||||
}
|
|
||||||
|
|
||||||
void gtk_color_chooser_get_rgba(
|
|
||||||
GtkColorChooser *chooser,
|
|
||||||
GdkRGBA *color) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::gtk_color_chooser_get_rgba(chooser, color);
|
|
||||||
}
|
|
||||||
|
|
||||||
void gtk_color_chooser_set_rgba(
|
|
||||||
GtkColorChooser *chooser,
|
|
||||||
const GdkRGBA *color) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::gtk_color_chooser_set_rgba(chooser, color);
|
|
||||||
}
|
|
||||||
|
|
||||||
void gtk_color_chooser_set_use_alpha(
|
|
||||||
GtkColorChooser *chooser,
|
|
||||||
gboolean use_alpha) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::gtk_color_chooser_set_use_alpha(chooser, use_alpha);
|
|
||||||
}
|
|
||||||
|
|
||||||
GType gtk_container_get_type(void) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_container_get_type();
|
|
||||||
}
|
|
||||||
|
|
||||||
void gtk_container_remove(GtkContainer *container, GtkWidget *widget) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::gtk_container_remove(container, widget);
|
|
||||||
}
|
|
||||||
|
|
||||||
GType gtk_dialog_get_type(void) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_dialog_get_type();
|
|
||||||
}
|
|
||||||
|
|
||||||
GtkWidget* gtk_dialog_get_widget_for_response(
|
|
||||||
GtkDialog *dialog,
|
|
||||||
gint response_id) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_dialog_get_widget_for_response(
|
|
||||||
dialog,
|
|
||||||
response_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
gint gtk_dialog_run(GtkDialog *dialog) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_dialog_run(dialog);
|
|
||||||
}
|
|
||||||
|
|
||||||
void gtk_file_chooser_add_filter(
|
|
||||||
GtkFileChooser *chooser,
|
|
||||||
GtkFileFilter *filter) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::gtk_file_chooser_add_filter(chooser, filter);
|
|
||||||
}
|
|
||||||
|
|
||||||
GtkWidget *gtk_file_chooser_dialog_new(
|
|
||||||
const gchar *title,
|
|
||||||
GtkWindow *parent,
|
|
||||||
GtkFileChooserAction action,
|
|
||||||
const gchar *first_button_text,
|
|
||||||
...) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
|
|
||||||
va_list varargs;
|
|
||||||
va_start(varargs, first_button_text);
|
|
||||||
|
|
||||||
const auto result = static_cast<GtkWidget*>(g_object_new(
|
|
||||||
GtkHelper::gtk_file_chooser_dialog_get_type(),
|
|
||||||
"title",
|
|
||||||
title,
|
|
||||||
"action",
|
|
||||||
action,
|
|
||||||
nullptr));
|
|
||||||
|
|
||||||
if (parent) {
|
|
||||||
GtkHelper::gtk_window_set_transient_for(GTK_WINDOW(result), parent);
|
|
||||||
}
|
|
||||||
|
|
||||||
auto button_text = first_button_text;
|
|
||||||
gint response_id;
|
|
||||||
while (button_text) {
|
|
||||||
response_id = va_arg(varargs, gint);
|
|
||||||
GtkHelper::gtk_dialog_add_button(
|
|
||||||
GTK_DIALOG(result),
|
|
||||||
button_text,
|
|
||||||
response_id);
|
|
||||||
button_text = va_arg(varargs, const gchar *);
|
|
||||||
}
|
|
||||||
|
|
||||||
va_end(varargs);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
gchar *gtk_file_chooser_get_current_folder(GtkFileChooser *chooser) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_file_chooser_get_current_folder(chooser);
|
|
||||||
}
|
|
||||||
|
|
||||||
gchar *gtk_file_chooser_get_filename(GtkFileChooser *chooser) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_file_chooser_get_filename(chooser);
|
|
||||||
}
|
|
||||||
|
|
||||||
GSList *gtk_file_chooser_get_filenames(GtkFileChooser *chooser) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_file_chooser_get_filenames(chooser);
|
|
||||||
}
|
|
||||||
|
|
||||||
GtkFileFilter *gtk_file_chooser_get_filter(GtkFileChooser *chooser) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_file_chooser_get_filter(chooser);
|
|
||||||
}
|
|
||||||
|
|
||||||
char *gtk_file_chooser_get_preview_filename(GtkFileChooser *chooser) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_file_chooser_get_preview_filename(chooser);
|
|
||||||
}
|
|
||||||
|
|
||||||
GType gtk_file_chooser_get_type(void) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_file_chooser_get_type();
|
|
||||||
}
|
|
||||||
|
|
||||||
void gtk_file_chooser_remove_filter(
|
|
||||||
GtkFileChooser *chooser,
|
|
||||||
GtkFileFilter *filter) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::gtk_file_chooser_remove_filter(chooser, filter);
|
|
||||||
}
|
|
||||||
|
|
||||||
gboolean gtk_file_chooser_select_filename(
|
|
||||||
GtkFileChooser *chooser,
|
|
||||||
const char *filename) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_file_chooser_select_filename(chooser, filename);
|
|
||||||
}
|
|
||||||
|
|
||||||
void gtk_file_chooser_set_action(
|
|
||||||
GtkFileChooser *chooser,
|
|
||||||
GtkFileChooserAction action) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::gtk_file_chooser_set_action(chooser, action);
|
|
||||||
}
|
|
||||||
|
|
||||||
void gtk_file_chooser_set_create_folders(
|
|
||||||
GtkFileChooser *chooser,
|
|
||||||
gboolean create_folders) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::gtk_file_chooser_set_create_folders(
|
|
||||||
chooser,
|
|
||||||
create_folders);
|
|
||||||
}
|
|
||||||
|
|
||||||
gboolean gtk_file_chooser_set_current_folder(
|
|
||||||
GtkFileChooser *chooser,
|
|
||||||
const gchar *filename) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_file_chooser_set_current_folder(chooser, filename);
|
|
||||||
}
|
|
||||||
|
|
||||||
void gtk_file_chooser_set_current_name(
|
|
||||||
GtkFileChooser *chooser,
|
|
||||||
const gchar *name) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::gtk_file_chooser_set_current_name(chooser, name);
|
|
||||||
}
|
|
||||||
|
|
||||||
void gtk_file_chooser_set_do_overwrite_confirmation(
|
|
||||||
GtkFileChooser *chooser,
|
|
||||||
gboolean do_overwrite_confirmation) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::gtk_file_chooser_set_do_overwrite_confirmation(
|
|
||||||
chooser,
|
|
||||||
do_overwrite_confirmation);
|
|
||||||
}
|
|
||||||
|
|
||||||
void gtk_file_chooser_set_filter(
|
|
||||||
GtkFileChooser *chooser,
|
|
||||||
GtkFileFilter *filter) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::gtk_file_chooser_set_filter(chooser, filter);
|
|
||||||
}
|
|
||||||
|
|
||||||
void gtk_file_chooser_set_local_only(
|
|
||||||
GtkFileChooser *chooser,
|
|
||||||
gboolean local_only) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::gtk_file_chooser_set_local_only(chooser, local_only);
|
|
||||||
}
|
|
||||||
|
|
||||||
void gtk_file_chooser_set_preview_widget(
|
|
||||||
GtkFileChooser *chooser,
|
|
||||||
GtkWidget *preview_widget) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::gtk_file_chooser_set_preview_widget(chooser, preview_widget);
|
|
||||||
}
|
|
||||||
|
|
||||||
void gtk_file_chooser_set_preview_widget_active(
|
|
||||||
GtkFileChooser *chooser,
|
|
||||||
gboolean active) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::gtk_file_chooser_set_preview_widget_active(chooser, active);
|
|
||||||
}
|
|
||||||
|
|
||||||
void gtk_file_chooser_set_select_multiple(
|
|
||||||
GtkFileChooser *chooser,
|
|
||||||
gboolean select_multiple) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::gtk_file_chooser_set_select_multiple(chooser, select_multiple);
|
|
||||||
}
|
|
||||||
|
|
||||||
void gtk_file_filter_add_pattern(
|
|
||||||
GtkFileFilter *filter,
|
|
||||||
const gchar *pattern) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::gtk_file_filter_add_pattern(filter, pattern);
|
|
||||||
}
|
|
||||||
|
|
||||||
GtkFileFilter *gtk_file_filter_new(void) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_file_filter_new();
|
|
||||||
}
|
|
||||||
|
|
||||||
void gtk_file_filter_set_name(
|
|
||||||
GtkFileFilter *filter,
|
|
||||||
const gchar *name) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::gtk_file_filter_set_name(filter, name);
|
|
||||||
}
|
|
||||||
|
|
||||||
GtkWidget* gtk_font_chooser_dialog_new(
|
|
||||||
const gchar *title,
|
|
||||||
GtkWindow *parent) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_font_chooser_dialog_new(title, parent);
|
|
||||||
}
|
|
||||||
|
|
||||||
gchar* gtk_font_chooser_get_font(GtkFontChooser *fontchooser) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_font_chooser_get_font(fontchooser);
|
|
||||||
}
|
|
||||||
|
|
||||||
GType gtk_font_chooser_get_type(void) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_font_chooser_get_type();
|
|
||||||
}
|
|
||||||
|
|
||||||
void gtk_font_chooser_set_font(
|
|
||||||
GtkFontChooser *fontchooser,
|
|
||||||
const gchar *fontname) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::gtk_font_chooser_set_font(fontchooser, fontname);
|
|
||||||
}
|
|
||||||
|
|
||||||
guint32 gtk_get_current_event_time(void) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_get_current_event_time();
|
|
||||||
}
|
|
||||||
|
|
||||||
GType gtk_image_get_type(void) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_image_get_type();
|
|
||||||
}
|
|
||||||
|
|
||||||
GtkWidget* gtk_image_new(void) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_image_new();
|
|
||||||
}
|
|
||||||
|
|
||||||
void gtk_image_set_from_pixbuf(GtkImage *image, GdkPixbuf *pixbuf) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::gtk_image_set_from_pixbuf(image, pixbuf);
|
|
||||||
}
|
|
||||||
|
|
||||||
void gtk_init(int *argc, char ***argv) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::gtk_init(argc, argv);
|
|
||||||
}
|
|
||||||
|
|
||||||
GType gtk_menu_get_type(void) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_menu_get_type();
|
|
||||||
}
|
|
||||||
|
|
||||||
GType gtk_menu_item_get_type(void) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_menu_item_get_type();
|
|
||||||
}
|
|
||||||
|
|
||||||
GtkWidget* gtk_menu_item_new(void) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_menu_item_new();
|
|
||||||
}
|
|
||||||
|
|
||||||
void gtk_menu_item_set_label(GtkMenuItem *menu_item, const gchar *label) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::gtk_menu_item_set_label(menu_item, label);
|
|
||||||
}
|
|
||||||
|
|
||||||
void gtk_menu_item_set_submenu(GtkMenuItem *menu_item, GtkWidget *submenu) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::gtk_menu_item_set_submenu(menu_item, submenu);
|
|
||||||
}
|
|
||||||
|
|
||||||
void gtk_menu_item_set_use_underline(
|
|
||||||
GtkMenuItem *menu_item,
|
|
||||||
gboolean setting) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::gtk_menu_item_set_use_underline(menu_item, setting);
|
|
||||||
}
|
|
||||||
|
|
||||||
GtkWidget* gtk_menu_new(void) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_menu_new();
|
|
||||||
}
|
|
||||||
|
|
||||||
void gtk_menu_popdown(GtkMenu *menu) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::gtk_menu_popdown(menu);
|
|
||||||
}
|
|
||||||
|
|
||||||
void gtk_menu_popup(
|
|
||||||
GtkMenu *menu,
|
|
||||||
GtkWidget *parent_menu_shell,
|
|
||||||
GtkWidget *parent_menu_item,
|
|
||||||
GtkMenuPositionFunc func,
|
|
||||||
gpointer data,
|
|
||||||
guint button,
|
|
||||||
guint32 activate_time) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::gtk_menu_popup(
|
|
||||||
menu,
|
|
||||||
parent_menu_shell,
|
|
||||||
parent_menu_item,
|
|
||||||
func,
|
|
||||||
data,
|
|
||||||
button,
|
|
||||||
activate_time);
|
|
||||||
}
|
|
||||||
|
|
||||||
GType gtk_menu_shell_get_type(void) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_menu_shell_get_type();
|
|
||||||
}
|
|
||||||
void gtk_menu_shell_insert(
|
|
||||||
GtkMenuShell *menu_shell,
|
|
||||||
GtkWidget *child,
|
|
||||||
gint position) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::gtk_menu_shell_insert(menu_shell, child, position);
|
|
||||||
}
|
|
||||||
|
|
||||||
void gtk_menu_shell_select_item(
|
|
||||||
GtkMenuShell *menu_shell,
|
|
||||||
GtkWidget *menu_item) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::gtk_menu_shell_select_item(menu_shell, menu_item);
|
|
||||||
}
|
|
||||||
|
|
||||||
GtkWidget* gtk_separator_menu_item_new(void) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_separator_menu_item_new();
|
|
||||||
}
|
|
||||||
|
|
||||||
GtkSettings* gtk_settings_get_default(void) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_settings_get_default();
|
|
||||||
}
|
|
||||||
|
|
||||||
void gtk_widget_destroy(GtkWidget *widget) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::gtk_widget_destroy(widget);
|
|
||||||
}
|
|
||||||
|
|
||||||
gint gtk_widget_get_scale_factor(GtkWidget *widget) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_widget_get_scale_factor(widget);
|
|
||||||
}
|
|
||||||
|
|
||||||
GType gtk_widget_get_type(void) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_widget_get_type();
|
|
||||||
}
|
|
||||||
|
|
||||||
GdkWindow *gtk_widget_get_window(GtkWidget *widget) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_widget_get_window(widget);
|
|
||||||
}
|
|
||||||
|
|
||||||
void gtk_widget_hide(GtkWidget *widget) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::gtk_widget_hide(widget);
|
|
||||||
}
|
|
||||||
|
|
||||||
gboolean gtk_widget_hide_on_delete(GtkWidget *widget) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_widget_hide_on_delete(widget);
|
|
||||||
}
|
|
||||||
|
|
||||||
void gtk_widget_realize(GtkWidget *widget) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::gtk_widget_realize(widget);
|
|
||||||
}
|
|
||||||
|
|
||||||
void gtk_widget_set_sensitive(GtkWidget *widget, gboolean sensitive) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::gtk_widget_set_sensitive(widget, sensitive);
|
|
||||||
}
|
|
||||||
|
|
||||||
void gtk_widget_set_visible(GtkWidget *widget, gboolean visible) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::gtk_widget_set_visible(widget, visible);
|
|
||||||
}
|
|
||||||
|
|
||||||
void gtk_widget_show(GtkWidget *widget) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::gtk_widget_show(widget);
|
|
||||||
}
|
|
||||||
|
|
||||||
GType gtk_window_get_type(void) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::gtk_window_get_type();
|
|
||||||
}
|
|
||||||
|
|
||||||
void gtk_window_set_title(GtkWindow *window, const gchar *title) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::gtk_window_set_title(window, title);
|
|
||||||
}
|
|
||||||
|
|
||||||
void pango_font_description_free(PangoFontDescription *desc) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::pango_font_description_free(desc);
|
|
||||||
}
|
|
||||||
|
|
||||||
PangoFontDescription *pango_font_description_from_string(const char *str) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::pango_font_description_from_string(str);
|
|
||||||
}
|
|
||||||
|
|
||||||
const char *pango_font_description_get_family(
|
|
||||||
const PangoFontDescription *desc) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::pango_font_description_get_family(desc);
|
|
||||||
}
|
|
||||||
|
|
||||||
gint pango_font_description_get_size(const PangoFontDescription *desc) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::pango_font_description_get_size(desc);
|
|
||||||
}
|
|
||||||
|
|
||||||
PangoStyle pango_font_description_get_style(
|
|
||||||
const PangoFontDescription *desc) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::pango_font_description_get_style(desc);
|
|
||||||
}
|
|
||||||
|
|
||||||
PangoWeight pango_font_description_get_weight(
|
|
||||||
const PangoFontDescription *desc) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::pango_font_description_get_weight(desc);
|
|
||||||
}
|
|
||||||
|
|
||||||
PangoFontDescription *pango_font_description_new(void) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::pango_font_description_new();
|
|
||||||
}
|
|
||||||
|
|
||||||
void pango_font_description_set_family(
|
|
||||||
PangoFontDescription *desc,
|
|
||||||
const char *family) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::pango_font_description_set_family(desc, family);
|
|
||||||
}
|
|
||||||
|
|
||||||
void pango_font_description_set_size(
|
|
||||||
PangoFontDescription *desc,
|
|
||||||
gint size) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::pango_font_description_set_size(desc, size);
|
|
||||||
}
|
|
||||||
|
|
||||||
void pango_font_description_set_style(
|
|
||||||
PangoFontDescription *desc,
|
|
||||||
PangoStyle style) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::pango_font_description_set_style(desc, style);
|
|
||||||
}
|
|
||||||
|
|
||||||
void pango_font_description_set_weight(
|
|
||||||
PangoFontDescription *desc,
|
|
||||||
PangoWeight weight) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
GtkHelper::pango_font_description_set_weight(desc, weight);
|
|
||||||
}
|
|
||||||
|
|
||||||
char *pango_font_description_to_string(const PangoFontDescription *desc) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::pango_font_description_to_string(desc);
|
|
||||||
}
|
|
||||||
|
|
||||||
GType pango_font_face_get_type(void) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::pango_font_face_get_type();
|
|
||||||
}
|
|
||||||
|
|
||||||
GType pango_font_family_get_type(void) {
|
|
||||||
GtkHelper::Resolve();
|
|
||||||
return GtkHelper::pango_font_family_get_type();
|
|
||||||
}
|
|
||||||
Loading…
Add table
Reference in a new issue