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