1 /* 2 * Copyright (c) 2005, 2020, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 #ifdef HEADLESS 27 #error This file should not be included in headless library 28 #endif 29 30 #ifndef _GTK_INTERFACE_H 31 #define _GTK_INTERFACE_H 32 33 #include <X11/X.h> 34 #include <jni.h> 35 36 #ifndef FALSE 37 #define FALSE (0) 38 #define TRUE (!FALSE) 39 #endif 40 41 #define GTHREAD_LIB_VERSIONED VERSIONED_JNI_LIB_NAME("gthread-2.0", "0") 42 #define GTHREAD_LIB JNI_LIB_NAME("gthread-2.0") 43 44 #define _G_TYPE_CIC(ip, gt, ct) ((ct*) ip) 45 #define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type) \ 46 (_G_TYPE_CIC ((instance), (g_type), c_type)) 47 #define GTK_TYPE_FILE_CHOOSER (fp_gtk_file_chooser_get_type ()) 48 #define GTK_FILE_CHOOSER(obj) \ 49 (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_FILE_CHOOSER, GtkFileChooser)) 50 #define G_CALLBACK(f) ((GCallback) (f)) 51 #define G_TYPE_FUNDAMENTAL_SHIFT (2) 52 #define G_TYPE_MAKE_FUNDAMENTAL(x) ((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT)) 53 #define G_TYPE_OBJECT G_TYPE_MAKE_FUNDAMENTAL (20) 54 #define GTK_STOCK_CANCEL "gtk-cancel" 55 #define GTK_STOCK_SAVE "gtk-save" 56 #define GTK_STOCK_OPEN "gtk-open" 57 #define GDK_CURRENT_TIME 0L 58 59 #define G_TYPE_INVALID G_TYPE_MAKE_FUNDAMENTAL (0) 60 #define G_TYPE_NONE G_TYPE_MAKE_FUNDAMENTAL (1) 61 #define G_TYPE_INTERFACE G_TYPE_MAKE_FUNDAMENTAL (2) 62 #define G_TYPE_CHAR G_TYPE_MAKE_FUNDAMENTAL (3) 63 #define G_TYPE_UCHAR G_TYPE_MAKE_FUNDAMENTAL (4) 64 #define G_TYPE_BOOLEAN G_TYPE_MAKE_FUNDAMENTAL (5) 65 #define G_TYPE_INT G_TYPE_MAKE_FUNDAMENTAL (6) 66 #define G_TYPE_UINT G_TYPE_MAKE_FUNDAMENTAL (7) 67 #define G_TYPE_LONG G_TYPE_MAKE_FUNDAMENTAL (8) 68 #define G_TYPE_ULONG G_TYPE_MAKE_FUNDAMENTAL (9) 69 #define G_TYPE_INT64 G_TYPE_MAKE_FUNDAMENTAL (10) 70 #define G_TYPE_UINT64 G_TYPE_MAKE_FUNDAMENTAL (11) 71 #define G_TYPE_ENUM G_TYPE_MAKE_FUNDAMENTAL (12) 72 #define G_TYPE_FLAGS G_TYPE_MAKE_FUNDAMENTAL (13) 73 #define G_TYPE_FLOAT G_TYPE_MAKE_FUNDAMENTAL (14) 74 #define G_TYPE_DOUBLE G_TYPE_MAKE_FUNDAMENTAL (15) 75 #define G_TYPE_STRING G_TYPE_MAKE_FUNDAMENTAL (16) 76 #define G_TYPE_POINTER G_TYPE_MAKE_FUNDAMENTAL (17) 77 #define G_TYPE_BOXED G_TYPE_MAKE_FUNDAMENTAL (18) 78 #define G_TYPE_PARAM G_TYPE_MAKE_FUNDAMENTAL (19) 79 #define G_TYPE_OBJECT G_TYPE_MAKE_FUNDAMENTAL (20) 80 81 #define GTK_TYPE_BORDER ((*fp_gtk_border_get_type)()) 82 83 #define G_TYPE_FUNDAMENTAL_SHIFT (2) 84 #define G_TYPE_MAKE_FUNDAMENTAL(x) ((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT)) 85 86 #ifndef MIN 87 #define MIN(a, b) (((a) < (b)) ? (a) : (b)) 88 #endif 89 90 #define CONV_BUFFER_SIZE 128 91 #define NO_SYMBOL_EXCEPTION 1 92 93 /* basic types */ 94 typedef char gchar; 95 typedef short gshort; 96 typedef int gint; 97 typedef long glong; 98 typedef float gfloat; 99 typedef double gdouble; 100 typedef void* gpointer; 101 typedef gint gboolean; 102 typedef signed char gint8; 103 typedef signed short gint16; 104 typedef signed int gint32; 105 typedef unsigned char guchar; 106 typedef unsigned char guint8; 107 typedef unsigned short gushort; 108 typedef unsigned short guint16; 109 typedef unsigned int guint; 110 typedef unsigned int guint32; 111 typedef unsigned int gsize; 112 typedef unsigned long gulong; 113 typedef signed long long gint64; 114 typedef unsigned long long guint64; 115 typedef gulong GType; 116 117 typedef struct _GList GList; 118 struct _GList 119 { 120 gpointer data; 121 GList *next; 122 GList *prev; 123 }; 124 125 typedef struct _GSList GSList; 126 struct _GSList { 127 gpointer data; 128 GSList *next; 129 }; 130 131 typedef enum { 132 BUTTON, /* GtkButton */ 133 CHECK_BOX, /* GtkCheckButton */ 134 CHECK_BOX_MENU_ITEM, /* GtkCheckMenuItem */ 135 COLOR_CHOOSER, /* GtkColorSelectionDialog */ 136 COMBO_BOX, /* GtkComboBox */ 137 COMBO_BOX_ARROW_BUTTON, /* GtkComboBoxEntry */ 138 COMBO_BOX_TEXT_FIELD, /* GtkComboBoxEntry */ 139 DESKTOP_ICON, /* GtkLabel */ 140 DESKTOP_PANE, /* GtkContainer */ 141 EDITOR_PANE, /* GtkTextView */ 142 FORMATTED_TEXT_FIELD, /* GtkEntry */ 143 HANDLE_BOX, /* GtkHandleBox */ 144 HPROGRESS_BAR, /* GtkProgressBar */ 145 HSCROLL_BAR, /* GtkHScrollbar */ 146 HSCROLL_BAR_BUTTON_LEFT, /* GtkHScrollbar */ 147 HSCROLL_BAR_BUTTON_RIGHT, /* GtkHScrollbar */ 148 HSCROLL_BAR_TRACK, /* GtkHScrollbar */ 149 HSCROLL_BAR_THUMB, /* GtkHScrollbar */ 150 HSEPARATOR, /* GtkHSeparator */ 151 HSLIDER, /* GtkHScale */ 152 HSLIDER_TRACK, /* GtkHScale */ 153 HSLIDER_THUMB, /* GtkHScale */ 154 HSPLIT_PANE_DIVIDER, /* GtkHPaned */ 155 INTERNAL_FRAME, /* GtkWindow */ 156 INTERNAL_FRAME_TITLE_PANE, /* GtkLabel */ 157 IMAGE, /* GtkImage */ 158 LABEL, /* GtkLabel */ 159 LIST, /* GtkTreeView */ 160 MENU, /* GtkMenu */ 161 MENU_BAR, /* GtkMenuBar */ 162 MENU_ITEM, /* GtkMenuItem */ 163 MENU_ITEM_ACCELERATOR, /* GtkLabel */ 164 OPTION_PANE, /* GtkMessageDialog */ 165 PANEL, /* GtkContainer */ 166 PASSWORD_FIELD, /* GtkEntry */ 167 POPUP_MENU, /* GtkMenu */ 168 POPUP_MENU_SEPARATOR, /* GtkSeparatorMenuItem */ 169 RADIO_BUTTON, /* GtkRadioButton */ 170 RADIO_BUTTON_MENU_ITEM, /* GtkRadioMenuItem */ 171 ROOT_PANE, /* GtkContainer */ 172 SCROLL_PANE, /* GtkScrolledWindow */ 173 SPINNER, /* GtkSpinButton */ 174 SPINNER_ARROW_BUTTON, /* GtkSpinButton */ 175 SPINNER_TEXT_FIELD, /* GtkSpinButton */ 176 SPLIT_PANE, /* GtkPaned */ 177 TABBED_PANE, /* GtkNotebook */ 178 TABBED_PANE_TAB_AREA, /* GtkNotebook */ 179 TABBED_PANE_CONTENT, /* GtkNotebook */ 180 TABBED_PANE_TAB, /* GtkNotebook */ 181 TABLE, /* GtkTreeView */ 182 TABLE_HEADER, /* GtkButton */ 183 TEXT_AREA, /* GtkTextView */ 184 TEXT_FIELD, /* GtkEntry */ 185 TEXT_PANE, /* GtkTextView */ 186 TITLED_BORDER, /* GtkFrame */ 187 TOGGLE_BUTTON, /* GtkToggleButton */ 188 TOOL_BAR, /* GtkToolbar */ 189 TOOL_BAR_DRAG_WINDOW, /* GtkToolbar */ 190 TOOL_BAR_SEPARATOR, /* GtkSeparatorToolItem */ 191 TOOL_TIP, /* GtkWindow */ 192 TREE, /* GtkTreeView */ 193 TREE_CELL, /* GtkTreeView */ 194 VIEWPORT, /* GtkViewport */ 195 VPROGRESS_BAR, /* GtkProgressBar */ 196 VSCROLL_BAR, /* GtkVScrollbar */ 197 VSCROLL_BAR_BUTTON_UP, /* GtkVScrollbar */ 198 VSCROLL_BAR_BUTTON_DOWN, /* GtkVScrollbar */ 199 VSCROLL_BAR_TRACK, /* GtkVScrollbar */ 200 VSCROLL_BAR_THUMB, /* GtkVScrollbar */ 201 VSEPARATOR, /* GtkVSeparator */ 202 VSLIDER, /* GtkVScale */ 203 VSLIDER_TRACK, /* GtkVScale */ 204 VSLIDER_THUMB, /* GtkVScale */ 205 VSPLIT_PANE_DIVIDER, /* GtkVPaned */ 206 WIDGET_TYPE_SIZE 207 } WidgetType; 208 209 typedef enum 210 { 211 _GTK_ARROW_TYPE, 212 _GTK_BUTTON_TYPE, 213 _GTK_CHECK_BUTTON_TYPE, 214 _GTK_CHECK_MENU_ITEM_TYPE, 215 _GTK_COLOR_SELECTION_DIALOG_TYPE, 216 _GTK_COMBO_BOX_TYPE, 217 _GTK_COMBO_BOX_ARROW_BUTTON_TYPE, 218 _GTK_COMBO_BOX_TEXT_FIELD_TYPE, 219 _GTK_CONTAINER_TYPE, 220 _GTK_ENTRY_TYPE, 221 _GTK_FRAME_TYPE, 222 _GTK_HANDLE_BOX_TYPE, 223 _GTK_HPANED_TYPE, 224 _GTK_HPROGRESS_BAR_TYPE, 225 _GTK_HSCALE_TYPE, 226 _GTK_HSCROLLBAR_TYPE, 227 _GTK_HSEPARATOR_TYPE, 228 _GTK_IMAGE_TYPE, 229 _GTK_MENU_TYPE, 230 _GTK_MENU_BAR_TYPE, 231 _GTK_MENU_ITEM_TYPE, 232 _GTK_NOTEBOOK_TYPE, 233 _GTK_LABEL_TYPE, 234 _GTK_RADIO_BUTTON_TYPE, 235 _GTK_RADIO_MENU_ITEM_TYPE, 236 _GTK_SCROLLED_WINDOW_TYPE, 237 _GTK_SEPARATOR_MENU_ITEM_TYPE, 238 _GTK_SEPARATOR_TOOL_ITEM_TYPE, 239 _GTK_SPIN_BUTTON_TYPE, 240 _GTK_TEXT_VIEW_TYPE, 241 _GTK_TOGGLE_BUTTON_TYPE, 242 _GTK_TOOLBAR_TYPE, 243 _GTK_TOOLTIP_TYPE, 244 _GTK_TREE_VIEW_TYPE, 245 _GTK_VIEWPORT_TYPE, 246 _GTK_VPANED_TYPE, 247 _GTK_VPROGRESS_BAR_TYPE, 248 _GTK_VSCALE_TYPE, 249 _GTK_VSCROLLBAR_TYPE, 250 _GTK_VSEPARATOR_TYPE, 251 _GTK_WINDOW_TYPE, 252 _GTK_DIALOG_TYPE, 253 _GTK_WIDGET_TYPE_SIZE 254 } GtkWidgetType; 255 256 typedef enum 257 { 258 GTK_STATE_NORMAL, 259 GTK_STATE_ACTIVE, 260 GTK_STATE_PRELIGHT, 261 GTK_STATE_SELECTED, 262 GTK_STATE_INSENSITIVE, 263 GTK_STATE_INCONSISTENT, 264 GTK_STATE_FOCUSED 265 } GtkStateType; 266 267 typedef enum 268 { 269 GTK_SHADOW_NONE, 270 GTK_SHADOW_IN, 271 GTK_SHADOW_OUT, 272 GTK_SHADOW_ETCHED_IN, 273 GTK_SHADOW_ETCHED_OUT 274 } GtkShadowType; 275 276 typedef enum 277 { 278 GTK_EXPANDER_COLLAPSED, 279 GTK_EXPANDER_SEMI_COLLAPSED, 280 GTK_EXPANDER_SEMI_EXPANDED, 281 GTK_EXPANDER_EXPANDED 282 } GtkExpanderStyle; 283 284 typedef enum 285 { 286 GTK_ICON_SIZE_INVALID, 287 GTK_ICON_SIZE_MENU, 288 GTK_ICON_SIZE_SMALL_TOOLBAR, 289 GTK_ICON_SIZE_LARGE_TOOLBAR, 290 GTK_ICON_SIZE_BUTTON, 291 GTK_ICON_SIZE_DND, 292 GTK_ICON_SIZE_DIALOG 293 } GtkIconSize; 294 295 typedef enum 296 { 297 GTK_ORIENTATION_HORIZONTAL, 298 GTK_ORIENTATION_VERTICAL 299 } GtkOrientation; 300 301 typedef enum 302 { 303 FOREGROUND, 304 BACKGROUND, 305 TEXT_FOREGROUND, 306 TEXT_BACKGROUND, 307 FOCUS, 308 LIGHT, 309 DARK, 310 MID, 311 BLACK, 312 WHITE 313 } ColorType; 314 315 typedef enum 316 { 317 GTK_FONT_NAME, 318 GTK_ICON_SIZES, 319 GTK_CURSOR_BLINK, 320 GTK_CURSOR_BLINK_TIME 321 } Setting; 322 323 typedef enum 324 { 325 GTK_ARROW_UP, 326 GTK_ARROW_DOWN, 327 GTK_ARROW_LEFT, 328 GTK_ARROW_RIGHT, 329 GTK_ARROW_NONE 330 } GtkArrowType; 331 332 typedef enum 333 { 334 GTK_TEXT_DIR_NONE, 335 GTK_TEXT_DIR_LTR, 336 GTK_TEXT_DIR_RTL 337 } GtkTextDirection; 338 339 typedef enum 340 { 341 GTK_POS_LEFT, 342 GTK_POS_RIGHT, 343 GTK_POS_TOP, 344 GTK_POS_BOTTOM 345 } GtkPositionType; 346 347 /* SynthConstants */ 348 static const gint ENABLED = 1 << 0; 349 static const gint MOUSE_OVER = 1 << 1; 350 static const gint PRESSED = 1 << 2; 351 static const gint DISABLED = 1 << 3; 352 static const gint FOCUSED = 1 << 8; 353 static const gint SELECTED = 1 << 9; 354 static const gint DEFAULT = 1 << 10; 355 356 typedef enum 357 { 358 GTK_ANY, 359 GTK_1, 360 GTK_2, 361 GTK_3 362 } GtkVersion; 363 364 //------------------------------ 365 366 367 368 typedef enum { 369 GTK_RESPONSE_NONE = -1, 370 GTK_RESPONSE_REJECT = -2, 371 GTK_RESPONSE_ACCEPT = -3, 372 GTK_RESPONSE_DELETE_EVENT = -4, 373 GTK_RESPONSE_OK = -5, 374 GTK_RESPONSE_CANCEL = -6, 375 GTK_RESPONSE_CLOSE = -7, 376 GTK_RESPONSE_YES = -8, 377 GTK_RESPONSE_NO = -9, 378 GTK_RESPONSE_APPLY = -10, 379 GTK_RESPONSE_HELP = -11 380 } GtkResponseType; 381 382 typedef enum { 383 GTK_FILE_CHOOSER_ACTION_OPEN, 384 GTK_FILE_CHOOSER_ACTION_SAVE, 385 GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, 386 GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER 387 } GtkFileChooserAction; 388 389 typedef enum { 390 GTK_FILE_FILTER_FILENAME = 1 << 0, 391 GTK_FILE_FILTER_URI = 1 << 1, 392 GTK_FILE_FILTER_DISPLAY_NAME = 1 << 2, 393 GTK_FILE_FILTER_MIME_TYPE = 1 << 3 394 } GtkFileFilterFlags; 395 396 typedef enum { 397 GDK_COLORSPACE_RGB 398 } GdkColorspace; 399 400 typedef enum { 401 GDK_INTERP_NEAREST, 402 GDK_INTERP_TILES, 403 GDK_INTERP_BILINEAR, 404 GDK_INTERP_HYPER 405 } GdkInterpType; 406 407 typedef enum { 408 G_CONNECT_AFTER = 1 << 0, G_CONNECT_SWAPPED = 1 << 1 409 } GConnectFlags; 410 //------------------------------ 411 412 413 typedef void GError; 414 typedef void GdkScreen; 415 typedef void GtkWindow; 416 typedef void GdkWindow; 417 typedef void GClosure; 418 typedef void GtkFileChooser; 419 typedef void GtkFileFilter; 420 typedef struct { 421 GtkFileFilterFlags contains; 422 const gchar *filename; 423 const gchar *uri; 424 const gchar *display_name; 425 const gchar *mime_type; 426 } GtkFileFilterInfo; 427 typedef gboolean (*GtkFileFilterFunc)(const GtkFileFilterInfo *filter_info, 428 gpointer data); 429 typedef void (*GClosureNotify)(gpointer data, GClosure *closure); 430 typedef void (*GDestroyNotify)(gpointer data); 431 typedef void (*GCallback)(void); 432 433 434 typedef struct GtkApi { 435 int version; 436 gboolean (*show_uri_load)(JNIEnv *env); 437 gboolean (*unload)(); 438 void (*flush_event_loop)(); 439 gchar* (*gtk_check_version)(guint required_major, guint required_minor, 440 guint required_micro); 441 jobject (*get_setting)(JNIEnv *env, Setting property); 442 443 void (*paint_arrow)(WidgetType widget_type, GtkStateType state_type, 444 GtkShadowType shadow_type, const gchar *detail, 445 gint x, gint y, gint width, gint height, 446 GtkArrowType arrow_type, gboolean fill); 447 void (*paint_box)(WidgetType widget_type, GtkStateType state_type, 448 GtkShadowType shadow_type, const gchar *detail, 449 gint x, gint y, gint width, gint height, 450 gint synth_state, GtkTextDirection dir); 451 void (*paint_box_gap)(WidgetType widget_type, GtkStateType state_type, 452 GtkShadowType shadow_type, const gchar *detail, 453 gint x, gint y, gint width, gint height, 454 GtkPositionType gap_side, gint gap_x, gint gap_width); 455 void (*paint_expander)(WidgetType widget_type, GtkStateType state_type, 456 const gchar *detail, gint x, gint y, gint width, gint height, 457 GtkExpanderStyle expander_style); 458 void (*paint_extension)(WidgetType widget_type, GtkStateType state_type, 459 GtkShadowType shadow_type, const gchar *detail, 460 gint x, gint y, gint width, gint height, GtkPositionType gap_side); 461 void (*paint_flat_box)(WidgetType widget_type, GtkStateType state_type, 462 GtkShadowType shadow_type, const gchar *detail, 463 gint x, gint y, gint width, gint height, gboolean has_focus); 464 void (*paint_focus)(WidgetType widget_type, GtkStateType state_type, 465 const char *detail, gint x, gint y, gint width, gint height); 466 void (*paint_handle)(WidgetType widget_type, GtkStateType state_type, 467 GtkShadowType shadow_type, const gchar *detail, 468 gint x, gint y, gint width, gint height, GtkOrientation orientation); 469 void (*paint_hline)(WidgetType widget_type, GtkStateType state_type, 470 const gchar *detail, gint x, gint y, gint width, gint height); 471 void (*paint_vline)(WidgetType widget_type, GtkStateType state_type, 472 const gchar *detail, gint x, gint y, gint width, gint height); 473 void (*paint_option)(WidgetType widget_type, gint synth_state, 474 const gchar *detail, gint x, gint y, gint width, gint height); 475 void (*paint_shadow)(WidgetType widget_type, GtkStateType state_type, 476 GtkShadowType shadow_type, const gchar *detail, 477 gint x, gint y, gint width, gint height, 478 gint synth_state, GtkTextDirection dir); 479 void (*paint_slider)(WidgetType widget_type, GtkStateType state_type, 480 GtkShadowType shadow_type, const gchar *detail, 481 gint x, gint y, gint width, gint height, GtkOrientation orientation, 482 gboolean has_focus); 483 void (*paint_background)(WidgetType widget_type, GtkStateType state_type, 484 gint x, gint y, gint width, gint height); 485 void (*paint_check)(WidgetType widget_type, gint synth_state, 486 const gchar *detail, gint x, gint y, gint width, gint height); 487 void (*set_range_value)(WidgetType widget_type, jdouble value, 488 jdouble min, jdouble max, jdouble visible); 489 490 void (*init_painting)(JNIEnv *env, gint w, gint h); 491 gint (*copy_image)(gint *dest, gint width, gint height); 492 493 gint (*get_xthickness)(JNIEnv *env, WidgetType widget_type); 494 gint (*get_ythickness)(JNIEnv *env, WidgetType widget_type); 495 gint (*get_color_for_state)(JNIEnv *env, WidgetType widget_type, 496 GtkStateType state_type, ColorType color_type); 497 jobject (*get_class_value)(JNIEnv *env, WidgetType widget_type, 498 const char* key); 499 500 jstring (*get_pango_font_name)(JNIEnv *env, WidgetType widget_type); 501 jboolean (*get_icon_data)(JNIEnv *env, gint widget_type, 502 const gchar *stock_id, GtkIconSize size, 503 GtkTextDirection direction, const char *detail, 504 jmethodID icon_upcall_method, jobject this); 505 jboolean (*get_file_icon_data)(JNIEnv *env, const char *filename, 506 GError **error, jmethodID icon_upcall_method, jobject this); 507 void (*gdk_threads_enter)(void); 508 void (*gdk_threads_leave)(void); 509 gboolean (*gtk_show_uri)(GdkScreen *screen, const gchar *uri, 510 guint32 timestamp, GError **error); 511 gboolean (*get_drawable_data)(JNIEnv *env, jintArray pixelArray, 512 jint x, jint y, jint width, jint height, 513 jint jwidth, int dx, int dy, jint scale); 514 void (*g_free)(gpointer mem); 515 516 517 gchar* (*gtk_file_chooser_get_filename)(GtkFileChooser *chooser); 518 void (*gtk_widget_hide)(void* widget); 519 void (*gtk_main_quit)(void); 520 void* (*gtk_file_chooser_dialog_new)(const gchar *title, 521 GtkWindow *parent, GtkFileChooserAction action, 522 const gchar *first_button_text, ...); 523 gboolean (*gtk_file_chooser_set_current_folder)(GtkFileChooser *chooser, 524 const gchar *filename); 525 gboolean (*gtk_file_chooser_set_filename)(GtkFileChooser *chooser, 526 const char *filename); 527 void (*gtk_file_chooser_set_current_name)(GtkFileChooser *chooser, 528 const gchar *name); 529 void (*gtk_file_filter_add_custom)(GtkFileFilter *filter, 530 GtkFileFilterFlags needed, GtkFileFilterFunc func, gpointer data, 531 GDestroyNotify notify); 532 void (*gtk_file_chooser_set_filter)(GtkFileChooser *chooser, 533 GtkFileFilter *filter); 534 GType (*gtk_file_chooser_get_type)(void); 535 GtkFileFilter* (*gtk_file_filter_new)(void); 536 void (*gtk_file_chooser_set_do_overwrite_confirmation)( 537 GtkFileChooser *chooser, gboolean do_overwrite_confirmation); 538 void (*gtk_file_chooser_set_select_multiple)( 539 GtkFileChooser *chooser, gboolean select_multiple); 540 gchar* (*gtk_file_chooser_get_current_folder)(GtkFileChooser *chooser); 541 GSList* (*gtk_file_chooser_get_filenames)(GtkFileChooser *chooser); 542 guint (*gtk_g_slist_length)(GSList *list); 543 gulong (*g_signal_connect_data)(gpointer instance, 544 const gchar *detailed_signal, GCallback c_handler, gpointer data, 545 GClosureNotify destroy_data, GConnectFlags connect_flags); 546 void (*gtk_widget_show)(void *widget); 547 void (*gtk_main)(void); 548 guint (*gtk_main_level)(void); 549 gchar* (*g_path_get_dirname) (const gchar *file_name); 550 XID (*gdk_x11_drawable_get_xid) (void *drawable); 551 void (*gtk_widget_destroy)(void *widget); 552 void (*gtk_window_present)(void *window); 553 void (*gtk_window_move)(void *window, gint x, gint y); 554 void (*gtk_window_resize)(void *window, gint width, gint height); 555 GdkWindow *(*get_window)(void *widget); 556 557 void (*g_object_unref)(gpointer object); 558 GList* (*g_list_append) (GList *list, gpointer data); 559 void (*g_list_free) (GList *list); 560 void (*g_list_free_full) (GList *list, GDestroyNotify free_func); 561 } GtkApi; 562 563 gboolean gtk_load(JNIEnv *env, GtkVersion version, gboolean verbose); 564 gboolean gtk_check_version(GtkVersion version); 565 566 typedef struct _GThreadFunctions GThreadFunctions; 567 static gboolean (*fp_g_thread_get_initialized)(void); 568 static void (*fp_g_thread_init)(GThreadFunctions *vtable); 569 static void (*fp_gdk_threads_init)(void); 570 static void (*fp_gdk_threads_enter)(void); 571 static void (*fp_gdk_threads_leave)(void); 572 573 extern GtkApi* gtk; 574 575 #endif /* !_GTK_INTERFACE_H */