1 /* 2 * Copyright (c) 2005, 2015, 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 _GTK2_INTERFACE_H 26 #define _GTK2_INTERFACE_H 27 28 #include <stdlib.h> 29 #include <jni.h> 30 #include <X11/X.h> 31 32 #define _G_TYPE_CIC(ip, gt, ct) ((ct*) ip) 33 #define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type) (_G_TYPE_CIC ((instance), (g_type), c_type)) 34 #define GTK_TYPE_FILE_CHOOSER (fp_gtk_file_chooser_get_type ()) 35 #define GTK_FILE_CHOOSER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_FILE_CHOOSER, GtkFileChooser)) 36 #define fp_g_signal_connect(instance, detailed_signal, c_handler, data) \ 37 fp_g_signal_connect_data ((instance), (detailed_signal), (c_handler), (data), NULL, (GConnectFlags) 0) 38 #define G_CALLBACK(f) ((GCallback) (f)) 39 #define G_TYPE_FUNDAMENTAL_SHIFT (2) 40 #define G_TYPE_MAKE_FUNDAMENTAL(x) ((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT)) 41 #define G_TYPE_OBJECT G_TYPE_MAKE_FUNDAMENTAL (20) 42 #define G_OBJECT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_OBJECT, GObject)) 43 #define GTK_STOCK_CANCEL "gtk-cancel" 44 #define GTK_STOCK_SAVE "gtk-save" 45 #define GTK_STOCK_OPEN "gtk-open" 46 #define GDK_CURRENT_TIME 0L 47 48 typedef enum _WidgetType 49 { 50 BUTTON, /* GtkButton */ 51 CHECK_BOX, /* GtkCheckButton */ 52 CHECK_BOX_MENU_ITEM, /* GtkCheckMenuItem */ 53 COLOR_CHOOSER, /* GtkColorSelectionDialog */ 54 COMBO_BOX, /* GtkComboBox */ 55 COMBO_BOX_ARROW_BUTTON, /* GtkComboBoxEntry */ 56 COMBO_BOX_TEXT_FIELD, /* GtkComboBoxEntry */ 57 DESKTOP_ICON, /* GtkLabel */ 58 DESKTOP_PANE, /* GtkContainer */ 59 EDITOR_PANE, /* GtkTextView */ 60 FORMATTED_TEXT_FIELD, /* GtkEntry */ 61 HANDLE_BOX, /* GtkHandleBox */ 62 HPROGRESS_BAR, /* GtkProgressBar */ 63 HSCROLL_BAR, /* GtkHScrollbar */ 64 HSCROLL_BAR_BUTTON_LEFT, /* GtkHScrollbar */ 65 HSCROLL_BAR_BUTTON_RIGHT, /* GtkHScrollbar */ 66 HSCROLL_BAR_TRACK, /* GtkHScrollbar */ 67 HSCROLL_BAR_THUMB, /* GtkHScrollbar */ 68 HSEPARATOR, /* GtkHSeparator */ 69 HSLIDER, /* GtkHScale */ 70 HSLIDER_TRACK, /* GtkHScale */ 71 HSLIDER_THUMB, /* GtkHScale */ 72 HSPLIT_PANE_DIVIDER, /* GtkHPaned */ 73 INTERNAL_FRAME, /* GtkWindow */ 74 INTERNAL_FRAME_TITLE_PANE, /* GtkLabel */ 75 IMAGE, /* GtkImage */ 76 LABEL, /* GtkLabel */ 77 LIST, /* GtkTreeView */ 78 MENU, /* GtkMenu */ 79 MENU_BAR, /* GtkMenuBar */ 80 MENU_ITEM, /* GtkMenuItem */ 81 MENU_ITEM_ACCELERATOR, /* GtkLabel */ 82 OPTION_PANE, /* GtkMessageDialog */ 83 PANEL, /* GtkContainer */ 84 PASSWORD_FIELD, /* GtkEntry */ 85 POPUP_MENU, /* GtkMenu */ 86 POPUP_MENU_SEPARATOR, /* GtkSeparatorMenuItem */ 87 RADIO_BUTTON, /* GtkRadioButton */ 88 RADIO_BUTTON_MENU_ITEM, /* GtkRadioMenuItem */ 89 ROOT_PANE, /* GtkContainer */ 90 SCROLL_PANE, /* GtkScrolledWindow */ 91 SPINNER, /* GtkSpinButton */ 92 SPINNER_ARROW_BUTTON, /* GtkSpinButton */ 93 SPINNER_TEXT_FIELD, /* GtkSpinButton */ 94 SPLIT_PANE, /* GtkPaned */ 95 TABBED_PANE, /* GtkNotebook */ 96 TABBED_PANE_TAB_AREA, /* GtkNotebook */ 97 TABBED_PANE_CONTENT, /* GtkNotebook */ 98 TABBED_PANE_TAB, /* GtkNotebook */ 99 TABLE, /* GtkTreeView */ 100 TABLE_HEADER, /* GtkButton */ 101 TEXT_AREA, /* GtkTextView */ 102 TEXT_FIELD, /* GtkEntry */ 103 TEXT_PANE, /* GtkTextView */ 104 TITLED_BORDER, /* GtkFrame */ 105 TOGGLE_BUTTON, /* GtkToggleButton */ 106 TOOL_BAR, /* GtkToolbar */ 107 TOOL_BAR_DRAG_WINDOW, /* GtkToolbar */ 108 TOOL_BAR_SEPARATOR, /* GtkSeparatorToolItem */ 109 TOOL_TIP, /* GtkWindow */ 110 TREE, /* GtkTreeView */ 111 TREE_CELL, /* GtkTreeView */ 112 VIEWPORT, /* GtkViewport */ 113 VPROGRESS_BAR, /* GtkProgressBar */ 114 VSCROLL_BAR, /* GtkVScrollbar */ 115 VSCROLL_BAR_BUTTON_UP, /* GtkVScrollbar */ 116 VSCROLL_BAR_BUTTON_DOWN, /* GtkVScrollbar */ 117 VSCROLL_BAR_TRACK, /* GtkVScrollbar */ 118 VSCROLL_BAR_THUMB, /* GtkVScrollbar */ 119 VSEPARATOR, /* GtkVSeparator */ 120 VSLIDER, /* GtkVScale */ 121 VSLIDER_TRACK, /* GtkVScale */ 122 VSLIDER_THUMB, /* GtkVScale */ 123 VSPLIT_PANE_DIVIDER, /* GtkVPaned */ 124 WIDGET_TYPE_SIZE 125 } WidgetType; 126 127 typedef enum _ColorType 128 { 129 FOREGROUND, 130 BACKGROUND, 131 TEXT_FOREGROUND, 132 TEXT_BACKGROUND, 133 FOCUS, 134 LIGHT, 135 DARK, 136 MID, 137 BLACK, 138 WHITE 139 } ColorType; 140 141 typedef enum _Setting 142 { 143 GTK_FONT_NAME, 144 GTK_ICON_SIZES, 145 GTK_CURSOR_BLINK, 146 GTK_CURSOR_BLINK_TIME 147 } Setting; 148 149 /* GTK types, here to eliminate need for GTK headers at compile time */ 150 151 #ifndef FALSE 152 #define FALSE (0) 153 #define TRUE (!FALSE) 154 #endif 155 156 #define GTK_HAS_FOCUS (1 << 12) 157 #define GTK_HAS_DEFAULT (1 << 14) 158 159 160 /* basic types */ 161 typedef char gchar; 162 typedef short gshort; 163 typedef int gint; 164 typedef long glong; 165 typedef float gfloat; 166 typedef double gdouble; 167 typedef void* gpointer; 168 typedef gint gboolean; 169 170 typedef signed char gint8; 171 typedef signed short gint16; 172 typedef signed int gint32; 173 174 typedef unsigned char guchar; 175 typedef unsigned char guint8; 176 typedef unsigned short gushort; 177 typedef unsigned short guint16; 178 typedef unsigned int guint; 179 typedef unsigned int guint32; 180 typedef unsigned int gsize; 181 typedef unsigned long gulong; 182 183 typedef signed long long gint64; 184 typedef unsigned long long guint64; 185 186 /* enumerated constants */ 187 typedef enum 188 { 189 GTK_ARROW_UP, 190 GTK_ARROW_DOWN, 191 GTK_ARROW_LEFT, 192 GTK_ARROW_RIGHT 193 } GtkArrowType; 194 195 typedef enum { 196 GDK_COLORSPACE_RGB 197 } GdkColorspace; 198 199 typedef enum 200 { 201 GTK_EXPANDER_COLLAPSED, 202 GTK_EXPANDER_SEMI_COLLAPSED, 203 GTK_EXPANDER_SEMI_EXPANDED, 204 GTK_EXPANDER_EXPANDED 205 } GtkExpanderStyle; 206 207 typedef enum 208 { 209 GTK_ICON_SIZE_INVALID, 210 GTK_ICON_SIZE_MENU, 211 GTK_ICON_SIZE_SMALL_TOOLBAR, 212 GTK_ICON_SIZE_LARGE_TOOLBAR, 213 GTK_ICON_SIZE_BUTTON, 214 GTK_ICON_SIZE_DND, 215 GTK_ICON_SIZE_DIALOG 216 } GtkIconSize; 217 218 typedef enum 219 { 220 GTK_ORIENTATION_HORIZONTAL, 221 GTK_ORIENTATION_VERTICAL 222 } GtkOrientation; 223 224 typedef enum 225 { 226 GTK_POS_LEFT, 227 GTK_POS_RIGHT, 228 GTK_POS_TOP, 229 GTK_POS_BOTTOM 230 } GtkPositionType; 231 232 typedef enum 233 { 234 GTK_SHADOW_NONE, 235 GTK_SHADOW_IN, 236 GTK_SHADOW_OUT, 237 GTK_SHADOW_ETCHED_IN, 238 GTK_SHADOW_ETCHED_OUT 239 } GtkShadowType; 240 241 typedef enum 242 { 243 GTK_STATE_NORMAL, 244 GTK_STATE_ACTIVE, 245 GTK_STATE_PRELIGHT, 246 GTK_STATE_SELECTED, 247 GTK_STATE_INSENSITIVE 248 } GtkStateType; 249 250 typedef enum 251 { 252 GTK_TEXT_DIR_NONE, 253 GTK_TEXT_DIR_LTR, 254 GTK_TEXT_DIR_RTL 255 } GtkTextDirection; 256 257 typedef enum 258 { 259 GTK_WINDOW_TOPLEVEL, 260 GTK_WINDOW_POPUP 261 } GtkWindowType; 262 263 typedef enum 264 { 265 G_PARAM_READABLE = 1 << 0, 266 G_PARAM_WRITABLE = 1 << 1, 267 G_PARAM_CONSTRUCT = 1 << 2, 268 G_PARAM_CONSTRUCT_ONLY = 1 << 3, 269 G_PARAM_LAX_VALIDATION = 1 << 4, 270 G_PARAM_PRIVATE = 1 << 5 271 } GParamFlags; 272 273 typedef enum { 274 GDK_INTERP_NEAREST, 275 GDK_INTERP_TILES, 276 GDK_INTERP_BILINEAR, 277 GDK_INTERP_HYPER 278 } GdkInterpType; 279 280 /* We define all structure pointers to be void* */ 281 typedef void GError; 282 typedef void GMainContext; 283 typedef void GVfs; 284 285 typedef struct _GSList GSList; 286 struct _GSList 287 { 288 gpointer data; 289 GSList *next; 290 }; 291 292 typedef struct _GList GList; 293 294 struct _GList 295 { 296 gpointer data; 297 GList *next; 298 GList *prev; 299 }; 300 301 typedef void GdkColormap; 302 typedef void GdkDrawable; 303 typedef void GdkGC; 304 typedef void GdkScreen; 305 typedef void GdkPixbuf; 306 typedef void GdkPixmap; 307 typedef void GdkWindow; 308 309 typedef void GtkFixed; 310 typedef void GtkMenuItem; 311 typedef void GtkMenuShell; 312 typedef void GtkWidgetClass; 313 typedef void PangoFontDescription; 314 typedef void GtkSettings; 315 316 /* Some real structures */ 317 typedef struct 318 { 319 guint32 pixel; 320 guint16 red; 321 guint16 green; 322 guint16 blue; 323 } GdkColor; 324 325 typedef struct { 326 gint fd; 327 gushort events; 328 gushort revents; 329 } GPollFD; 330 331 typedef struct { 332 gint x; 333 gint y; 334 gint width; 335 gint height; 336 } GdkRectangle; 337 338 typedef struct { 339 gint x; 340 gint y; 341 gint width; 342 gint height; 343 } GtkAllocation; 344 345 typedef struct { 346 gint width; 347 gint height; 348 } GtkRequisition; 349 350 typedef struct { 351 GtkWidgetClass *g_class; 352 } GTypeInstance; 353 354 typedef struct { 355 gint left; 356 gint right; 357 gint top; 358 gint bottom; 359 } GtkBorder; 360 361 /****************************************************** 362 * FIXME: it is more safe to include gtk headers for 363 * the precise type definition of GType and other 364 * structures. This is a place where getting rid of gtk 365 * headers may be dangerous. 366 ******************************************************/ 367 typedef gulong GType; 368 369 typedef struct 370 { 371 GType g_type; 372 373 union { 374 gint v_int; 375 guint v_uint; 376 glong v_long; 377 gulong v_ulong; 378 gint64 v_int64; 379 guint64 v_uint64; 380 gfloat v_float; 381 gdouble v_double; 382 gpointer v_pointer; 383 } data[2]; 384 } GValue; 385 386 typedef struct 387 { 388 GTypeInstance g_type_instance; 389 390 gchar *name; 391 GParamFlags flags; 392 GType value_type; 393 GType owner_type; 394 } GParamSpec; 395 396 typedef struct { 397 GTypeInstance g_type_instance; 398 guint ref_count; 399 void *qdata; 400 } GObject; 401 402 typedef struct { 403 GObject parent_instance; 404 guint32 flags; 405 } GtkObject; 406 407 typedef struct 408 { 409 GObject parent_instance; 410 411 GdkColor fg[5]; 412 GdkColor bg[5]; 413 GdkColor light[5]; 414 GdkColor dark[5]; 415 GdkColor mid[5]; 416 GdkColor text[5]; 417 GdkColor base[5]; 418 GdkColor text_aa[5]; /* Halfway between text/base */ 419 420 GdkColor black; 421 GdkColor white; 422 PangoFontDescription *font_desc; 423 424 gint xthickness; 425 gint ythickness; 426 427 GdkGC *fg_gc[5]; 428 GdkGC *bg_gc[5]; 429 GdkGC *light_gc[5]; 430 GdkGC *dark_gc[5]; 431 GdkGC *mid_gc[5]; 432 GdkGC *text_gc[5]; 433 GdkGC *base_gc[5]; 434 GdkGC *text_aa_gc[5]; 435 GdkGC *black_gc; 436 GdkGC *white_gc; 437 438 GdkPixmap *bg_pixmap[5]; 439 } GtkStyle; 440 441 typedef struct _GtkWidget GtkWidget; 442 struct _GtkWidget 443 { 444 GtkObject object; 445 guint16 private_flags; 446 guint8 state; 447 guint8 saved_state; 448 gchar *name; 449 GtkStyle *style; 450 GtkRequisition requisition; 451 GtkAllocation allocation; 452 GdkWindow *window; 453 GtkWidget *parent; 454 }; 455 456 typedef struct 457 { 458 GtkWidget widget; 459 460 gfloat xalign; 461 gfloat yalign; 462 463 guint16 xpad; 464 guint16 ypad; 465 } GtkMisc; 466 467 typedef struct { 468 GtkWidget widget; 469 GtkWidget *focus_child; 470 guint border_width : 16; 471 guint need_resize : 1; 472 guint resize_mode : 2; 473 guint reallocate_redraws : 1; 474 guint has_focus_chain : 1; 475 } GtkContainer; 476 477 typedef struct { 478 GtkContainer container; 479 GtkWidget *child; 480 } GtkBin; 481 482 typedef struct { 483 GtkBin bin; 484 GdkWindow *event_window; 485 gchar *label_text; 486 guint activate_timeout; 487 guint constructed : 1; 488 guint in_button : 1; 489 guint button_down : 1; 490 guint relief : 2; 491 guint use_underline : 1; 492 guint use_stock : 1; 493 guint depressed : 1; 494 guint depress_on_activate : 1; 495 guint focus_on_click : 1; 496 } GtkButton; 497 498 typedef struct { 499 GtkButton button; 500 guint active : 1; 501 guint draw_indicator : 1; 502 guint inconsistent : 1; 503 } GtkToggleButton; 504 505 typedef struct _GtkAdjustment GtkAdjustment; 506 struct _GtkAdjustment 507 { 508 GtkObject parent_instance; 509 510 gdouble lower; 511 gdouble upper; 512 gdouble value; 513 gdouble step_increment; 514 gdouble page_increment; 515 gdouble page_size; 516 }; 517 518 typedef enum 519 { 520 GTK_UPDATE_CONTINUOUS, 521 GTK_UPDATE_DISCONTINUOUS, 522 GTK_UPDATE_DELAYED 523 } GtkUpdateType; 524 525 typedef struct _GtkRange GtkRange; 526 struct _GtkRange 527 { 528 GtkWidget widget; 529 GtkAdjustment *adjustment; 530 GtkUpdateType update_policy; 531 guint inverted : 1; 532 /*< protected >*/ 533 guint flippable : 1; 534 guint has_stepper_a : 1; 535 guint has_stepper_b : 1; 536 guint has_stepper_c : 1; 537 guint has_stepper_d : 1; 538 guint need_recalc : 1; 539 guint slider_size_fixed : 1; 540 gint min_slider_size; 541 GtkOrientation orientation; 542 GdkRectangle range_rect; 543 gint slider_start, slider_end; 544 gint round_digits; 545 /*< private >*/ 546 guint trough_click_forward : 1; 547 guint update_pending : 1; 548 /*GtkRangeLayout * */ void *layout; 549 /*GtkRangeStepTimer * */ void* timer; 550 gint slide_initial_slider_position; 551 gint slide_initial_coordinate; 552 guint update_timeout_id; 553 GdkWindow *event_window; 554 }; 555 556 typedef struct _GtkProgressBar GtkProgressBar; 557 558 typedef enum 559 { 560 GTK_PROGRESS_CONTINUOUS, 561 GTK_PROGRESS_DISCRETE 562 } GtkProgressBarStyle; 563 564 typedef enum 565 { 566 GTK_PROGRESS_LEFT_TO_RIGHT, 567 GTK_PROGRESS_RIGHT_TO_LEFT, 568 GTK_PROGRESS_BOTTOM_TO_TOP, 569 GTK_PROGRESS_TOP_TO_BOTTOM 570 } GtkProgressBarOrientation; 571 572 typedef struct _GtkProgress GtkProgress; 573 574 struct _GtkProgress 575 { 576 GtkWidget widget; 577 GtkAdjustment *adjustment; 578 GdkPixmap *offscreen_pixmap; 579 gchar *format; 580 gfloat x_align; 581 gfloat y_align; 582 guint show_text : 1; 583 guint activity_mode : 1; 584 guint use_text_format : 1; 585 }; 586 587 struct _GtkProgressBar 588 { 589 GtkProgress progress; 590 GtkProgressBarStyle bar_style; 591 GtkProgressBarOrientation orientation; 592 guint blocks; 593 gint in_block; 594 gint activity_pos; 595 guint activity_step; 596 guint activity_blocks; 597 gdouble pulse_fraction; 598 guint activity_dir : 1; 599 guint ellipsize : 3; 600 }; 601 602 typedef enum { 603 GTK_RESPONSE_NONE = -1, 604 GTK_RESPONSE_REJECT = -2, 605 GTK_RESPONSE_ACCEPT = -3, 606 GTK_RESPONSE_DELETE_EVENT = -4, 607 GTK_RESPONSE_OK = -5, 608 GTK_RESPONSE_CANCEL = -6, 609 GTK_RESPONSE_CLOSE = -7, 610 GTK_RESPONSE_YES = -8, 611 GTK_RESPONSE_NO = -9, 612 GTK_RESPONSE_APPLY = -10, 613 GTK_RESPONSE_HELP = -11 614 } GtkResponseType; 615 616 typedef struct _GtkWindow GtkWindow; 617 618 typedef struct _GtkFileChooser GtkFileChooser; 619 620 typedef enum { 621 GTK_FILE_CHOOSER_ACTION_OPEN, 622 GTK_FILE_CHOOSER_ACTION_SAVE, 623 GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, 624 GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER 625 } GtkFileChooserAction; 626 627 typedef struct _GtkFileFilter GtkFileFilter; 628 629 typedef enum { 630 GTK_FILE_FILTER_FILENAME = 1 << 0, 631 GTK_FILE_FILTER_URI = 1 << 1, 632 GTK_FILE_FILTER_DISPLAY_NAME = 1 << 2, 633 GTK_FILE_FILTER_MIME_TYPE = 1 << 3 634 } GtkFileFilterFlags; 635 636 typedef struct { 637 GtkFileFilterFlags contains; 638 const gchar *filename; 639 const gchar *uri; 640 const gchar *display_name; 641 const gchar *mime_type; 642 } GtkFileFilterInfo; 643 644 typedef gboolean (*GtkFileFilterFunc)(const GtkFileFilterInfo *filter_info, 645 gpointer data); 646 647 typedef void (*GDestroyNotify)(gpointer data); 648 649 typedef void (*GCallback)(void); 650 651 typedef struct _GClosure GClosure; 652 653 typedef void (*GClosureNotify)(gpointer data, GClosure *closure); 654 655 typedef enum { 656 G_CONNECT_AFTER = 1 << 0, G_CONNECT_SWAPPED = 1 << 1 657 } GConnectFlags; 658 659 typedef struct _GThreadFunctions GThreadFunctions; 660 661 /* 662 * Converts java.lang.String object to UTF-8 character string. 663 */ 664 const char *getStrFor(JNIEnv *env, jstring value); 665 666 /** 667 * Returns : 668 * NULL if the GLib library is compatible with the given version, or a string 669 * describing the version mismatch. 670 * Please note that the glib_check_version() is available since 2.6, 671 * so you should use GLIB_CHECK_VERSION macro instead. 672 */ 673 gchar* (*fp_glib_check_version)(guint required_major, guint required_minor, 674 guint required_micro); 675 676 /** 677 * Returns : 678 * TRUE if the GLib library is compatible with the given version 679 */ 680 #define GLIB_CHECK_VERSION(major, minor, micro) \ 681 (fp_glib_check_version && fp_glib_check_version(major, minor, micro) == NULL) 682 683 /* 684 * Check whether the gtk2 library is available and meets the minimum 685 * version requirement. If the library is already loaded this method has no 686 * effect and returns success. 687 * Returns FALSE on failure and TRUE on success. 688 */ 689 gboolean gtk2_check_version(); 690 691 /** 692 * Returns : 693 * NULL if the GTK+ library is compatible with the given version, or a string 694 * describing the version mismatch. 695 */ 696 gchar* (*fp_gtk_check_version)(guint required_major, guint required_minor, 697 guint required_micro); 698 /* 699 * Load the gtk2 library. If the library is already loaded this method has no 700 * effect and returns success. 701 * Returns FALSE on failure and TRUE on success. 702 */ 703 gboolean gtk2_load(JNIEnv *env); 704 705 /* 706 * Loads fp_gtk_show_uri function pointer. This initialization is 707 * separated because the function is required only 708 * for java.awt.Desktop API. The function relies on initialization in 709 * gtk2_load, so it must be invoked only after a successful gtk2_load 710 * invocation 711 */ 712 gboolean gtk2_show_uri_load(JNIEnv *env); 713 714 /* 715 * Unload the gtk2 library. If the library is already unloaded this method has 716 * no effect and returns success. 717 * Returns FALSE on failure and TRUE on success. 718 */ 719 gboolean gtk2_unload(); 720 721 void gtk2_paint_arrow(WidgetType widget_type, GtkStateType state_type, 722 GtkShadowType shadow_type, const gchar *detail, 723 gint x, gint y, gint width, gint height, 724 GtkArrowType arrow_type, gboolean fill); 725 void gtk2_paint_box(WidgetType widget_type, GtkStateType state_type, 726 GtkShadowType shadow_type, const gchar *detail, 727 gint x, gint y, gint width, gint height, 728 gint synth_state, GtkTextDirection dir); 729 void gtk2_paint_box_gap(WidgetType widget_type, GtkStateType state_type, 730 GtkShadowType shadow_type, const gchar *detail, 731 gint x, gint y, gint width, gint height, 732 GtkPositionType gap_side, gint gap_x, gint gap_width); 733 void gtk2_paint_check(WidgetType widget_type, gint synth_state, 734 const gchar *detail, gint x, gint y, gint width, gint height); 735 void gtk2_paint_diamond(WidgetType widget_type, GtkStateType state_type, 736 GtkShadowType shadow_type, const gchar *detail, 737 gint x, gint y, gint width, gint height); 738 void gtk2_paint_expander(WidgetType widget_type, GtkStateType state_type, 739 const gchar *detail, gint x, gint y, gint width, gint height, 740 GtkExpanderStyle expander_style); 741 void gtk2_paint_extension(WidgetType widget_type, GtkStateType state_type, 742 GtkShadowType shadow_type, const gchar *detail, 743 gint x, gint y, gint width, gint height, GtkPositionType gap_side); 744 void gtk2_paint_flat_box(WidgetType widget_type, GtkStateType state_type, 745 GtkShadowType shadow_type, const gchar *detail, 746 gint x, gint y, gint width, gint height, gboolean has_focus); 747 void gtk2_paint_focus(WidgetType widget_type, GtkStateType state_type, 748 const char *detail, gint x, gint y, gint width, gint height); 749 void gtk2_paint_handle(WidgetType widget_type, GtkStateType state_type, 750 GtkShadowType shadow_type, const gchar *detail, 751 gint x, gint y, gint width, gint height, GtkOrientation orientation); 752 void gtk2_paint_hline(WidgetType widget_type, GtkStateType state_type, 753 const gchar *detail, gint x, gint y, gint width, gint height); 754 void gtk2_paint_option(WidgetType widget_type, gint synth_state, 755 const gchar *detail, gint x, gint y, gint width, gint height); 756 void gtk2_paint_shadow(WidgetType widget_type, GtkStateType state_type, 757 GtkShadowType shadow_type, const gchar *detail, 758 gint x, gint y, gint width, gint height, 759 gint synth_state, GtkTextDirection dir); 760 void gtk2_paint_slider(WidgetType widget_type, GtkStateType state_type, 761 GtkShadowType shadow_type, const gchar *detail, 762 gint x, gint y, gint width, gint height, GtkOrientation orientation); 763 void gtk2_paint_vline(WidgetType widget_type, GtkStateType state_type, 764 const gchar *detail, gint x, gint y, gint width, gint height); 765 void gtk_paint_background(WidgetType widget_type, GtkStateType state_type, 766 gint x, gint y, gint width, gint height); 767 768 void gtk2_init_painting(JNIEnv *env, gint w, gint h); 769 gint gtk2_copy_image(gint *dest, gint width, gint height); 770 771 gint gtk2_get_xthickness(JNIEnv *env, WidgetType widget_type); 772 gint gtk2_get_ythickness(JNIEnv *env, WidgetType widget_type); 773 gint gtk2_get_color_for_state(JNIEnv *env, WidgetType widget_type, 774 GtkStateType state_type, ColorType color_type); 775 jobject gtk2_get_class_value(JNIEnv *env, WidgetType widget_type, jstring key); 776 777 GdkPixbuf *gtk2_get_stock_icon(gint widget_type, const gchar *stock_id, 778 GtkIconSize size, GtkTextDirection direction, const char *detail); 779 GdkPixbuf *gtk2_get_icon(const gchar *filename, gint size); 780 jstring gtk2_get_pango_font_name(JNIEnv *env, WidgetType widget_type); 781 782 void flush_gtk_event_loop(); 783 784 jobject gtk2_get_setting(JNIEnv *env, Setting property); 785 786 void gtk2_set_range_value(WidgetType widget_type, jdouble value, 787 jdouble min, jdouble max, jdouble visible); 788 789 void (*fp_g_free)(gpointer mem); 790 void (*fp_g_object_unref)(gpointer object); 791 GdkWindow *(*fp_gdk_get_default_root_window) (void); 792 793 int (*fp_gdk_pixbuf_get_bits_per_sample)(const GdkPixbuf *pixbuf); 794 guchar *(*fp_gdk_pixbuf_get_pixels)(const GdkPixbuf *pixbuf); 795 gboolean (*fp_gdk_pixbuf_get_has_alpha)(const GdkPixbuf *pixbuf); 796 int (*fp_gdk_pixbuf_get_height)(const GdkPixbuf *pixbuf); 797 int (*fp_gdk_pixbuf_get_n_channels)(const GdkPixbuf *pixbuf); 798 int (*fp_gdk_pixbuf_get_rowstride)(const GdkPixbuf *pixbuf); 799 int (*fp_gdk_pixbuf_get_width)(const GdkPixbuf *pixbuf); 800 GdkPixbuf *(*fp_gdk_pixbuf_new_from_file)(const char *filename, GError **error); 801 GdkColorspace (*fp_gdk_pixbuf_get_colorspace)(const GdkPixbuf *pixbuf); 802 803 GdkPixbuf *(*fp_gdk_pixbuf_get_from_drawable)(GdkPixbuf *dest, 804 GdkDrawable *src, GdkColormap *cmap, int src_x, int src_y, 805 int dest_x, int dest_y, int width, int height); 806 GdkPixbuf *(*fp_gdk_pixbuf_scale_simple)(GdkPixbuf *src, 807 int dest_width, int dest_heigh, GdkInterpType interp_type); 808 809 810 void (*fp_gtk_widget_destroy)(GtkWidget *widget); 811 void (*fp_gtk_window_present)(GtkWindow *window); 812 void (*fp_gtk_window_move)(GtkWindow *window, gint x, gint y); 813 void (*fp_gtk_window_resize)(GtkWindow *window, gint width, gint height); 814 815 /** 816 * Function Pointers for GtkFileChooser 817 */ 818 gchar* (*fp_gtk_file_chooser_get_filename)(GtkFileChooser *chooser); 819 void (*fp_gtk_widget_hide)(GtkWidget *widget); 820 void (*fp_gtk_main_quit)(void); 821 GtkWidget* (*fp_gtk_file_chooser_dialog_new)(const gchar *title, 822 GtkWindow *parent, GtkFileChooserAction action, 823 const gchar *first_button_text, ...); 824 gboolean (*fp_gtk_file_chooser_set_current_folder)(GtkFileChooser *chooser, 825 const gchar *filename); 826 gboolean (*fp_gtk_file_chooser_set_filename)(GtkFileChooser *chooser, 827 const char *filename); 828 void (*fp_gtk_file_chooser_set_current_name)(GtkFileChooser *chooser, 829 const gchar *name); 830 void (*fp_gtk_file_filter_add_custom)(GtkFileFilter *filter, 831 GtkFileFilterFlags needed, GtkFileFilterFunc func, gpointer data, 832 GDestroyNotify notify); 833 void (*fp_gtk_file_chooser_set_filter)(GtkFileChooser *chooser, 834 GtkFileFilter *filter); 835 GType (*fp_gtk_file_chooser_get_type)(void); 836 GtkFileFilter* (*fp_gtk_file_filter_new)(void); 837 void (*fp_gtk_file_chooser_set_do_overwrite_confirmation)( 838 GtkFileChooser *chooser, gboolean do_overwrite_confirmation); 839 void (*fp_gtk_file_chooser_set_select_multiple)( 840 GtkFileChooser *chooser, gboolean select_multiple); 841 gchar* (*fp_gtk_file_chooser_get_current_folder)(GtkFileChooser *chooser); 842 GSList* (*fp_gtk_file_chooser_get_filenames)(GtkFileChooser *chooser); 843 guint (*fp_gtk_g_slist_length)(GSList *list); 844 gulong (*fp_g_signal_connect_data)(gpointer instance, 845 const gchar *detailed_signal, GCallback c_handler, gpointer data, 846 GClosureNotify destroy_data, GConnectFlags connect_flags); 847 void (*fp_gtk_widget_show)(GtkWidget *widget); 848 void (*fp_gtk_main)(void); 849 guint (*fp_gtk_main_level)(void); 850 gchar* (*fp_g_path_get_dirname) (const gchar *file_name); 851 XID (*fp_gdk_x11_drawable_get_xid) (GdkWindow *drawable); 852 853 854 GList* (*fp_g_list_append) (GList *list, gpointer data); 855 void (*fp_g_list_free) (GList *list); 856 void (*fp_g_list_free_full) (GList *list, GDestroyNotify free_func); 857 858 /** 859 * This function is available for GLIB > 2.20, so it MUST be 860 * called within GLIB_CHECK_VERSION(2, 20, 0) check. 861 */ 862 gboolean (*fp_g_thread_get_initialized)(void); 863 864 void (*fp_g_thread_init)(GThreadFunctions *vtable); 865 void (*fp_gdk_threads_init)(void); 866 void (*fp_gdk_threads_enter)(void); 867 void (*fp_gdk_threads_leave)(void); 868 869 gboolean (*fp_gtk_show_uri)(GdkScreen *screen, const gchar *uri, 870 guint32 timestamp, GError **error); 871 872 #endif /* !_GTK2_INTERFACE_H */