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