1 /* GTK - The GIMP Toolkit 2 * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library. If not, see <http://www.gnu.org/licenses/>. 16 */ 17 18 /* 19 * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS 20 * file for a list of people on the GTK+ Team. See the ChangeLog 21 * files for a list of changes. These files are distributed with 22 * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 23 */ 24 25 #ifndef __GTK_MAIN_H__ 26 #define __GTK_MAIN_H__ 27 28 29 #if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) 30 #error "Only <gtk/gtk.h> can be included directly." 31 #endif 32 33 #include <gdk/gdk.h> 34 #include <gtk/gtkwidget.h> 35 #ifdef G_PLATFORM_WIN32 36 #include <gtk/gtkbox.h> 37 #include <gtk/gtkwindow.h> 38 #endif 39 40 G_BEGIN_DECLS 41 42 /** 43 * GTK_PRIORITY_RESIZE: (value 110) 44 * 45 * Use this priority for functionality related to size allocation. 46 * 47 * It is used internally by GTK+ to compute the sizes of widgets. 48 * This priority is higher than %GDK_PRIORITY_REDRAW to avoid 49 * resizing a widget which was just redrawn. 50 */ 51 #define GTK_PRIORITY_RESIZE (G_PRIORITY_HIGH_IDLE + 10) 52 53 /** 54 * GtkKeySnoopFunc: 55 * @grab_widget: the widget to which the event will be delivered 56 * @event: the key event 57 * @func_data: (closure): data supplied to gtk_key_snooper_install() 58 * 59 * Key snooper functions are called before normal event delivery. 60 * They can be used to implement custom key event handling. 61 * 62 * Returns: %TRUE to stop further processing of @event, %FALSE to continue. 63 */ 64 typedef gint (*GtkKeySnoopFunc) (GtkWidget *grab_widget, 65 GdkEventKey *event, 66 gpointer func_data); 67 68 /* GTK+ version 69 */ 70 GDK_AVAILABLE_IN_ALL 71 guint gtk_get_major_version (void) G_GNUC_CONST; 72 GDK_AVAILABLE_IN_ALL 73 guint gtk_get_minor_version (void) G_GNUC_CONST; 74 GDK_AVAILABLE_IN_ALL 75 guint gtk_get_micro_version (void) G_GNUC_CONST; 76 GDK_AVAILABLE_IN_ALL 77 guint gtk_get_binary_age (void) G_GNUC_CONST; 78 GDK_AVAILABLE_IN_ALL 79 guint gtk_get_interface_age (void) G_GNUC_CONST; 80 81 #define gtk_major_version gtk_get_major_version () 82 #define gtk_minor_version gtk_get_minor_version () 83 #define gtk_micro_version gtk_get_micro_version () 84 #define gtk_binary_age gtk_get_binary_age () 85 #define gtk_interface_age gtk_get_interface_age () 86 87 GDK_AVAILABLE_IN_ALL 88 const gchar* gtk_check_version (guint required_major, 89 guint required_minor, 90 guint required_micro); 91 92 93 /* Initialization, exit, mainloop and miscellaneous routines 94 */ 95 96 GDK_AVAILABLE_IN_ALL 97 gboolean gtk_parse_args (int *argc, 98 char ***argv); 99 100 GDK_AVAILABLE_IN_ALL 101 void gtk_init (int *argc, 102 char ***argv); 103 104 GDK_AVAILABLE_IN_ALL 105 gboolean gtk_init_check (int *argc, 106 char ***argv); 107 108 GDK_AVAILABLE_IN_ALL 109 gboolean gtk_init_with_args (gint *argc, 110 gchar ***argv, 111 const gchar *parameter_string, 112 const GOptionEntry *entries, 113 const gchar *translation_domain, 114 GError **error); 115 116 GDK_AVAILABLE_IN_ALL 117 GOptionGroup *gtk_get_option_group (gboolean open_default_display); 118 119 #ifdef G_OS_WIN32 120 121 /* Variants that are used to check for correct struct packing 122 * when building GTK+-using code. 123 */ 124 GDK_AVAILABLE_IN_ALL 125 void gtk_init_abi_check (int *argc, 126 char ***argv, 127 int num_checks, 128 size_t sizeof_GtkWindow, 129 size_t sizeof_GtkBox); 130 GDK_AVAILABLE_IN_ALL 131 gboolean gtk_init_check_abi_check (int *argc, 132 char ***argv, 133 int num_checks, 134 size_t sizeof_GtkWindow, 135 size_t sizeof_GtkBox); 136 137 #define gtk_init(argc, argv) gtk_init_abi_check (argc, argv, 2, sizeof (GtkWindow), sizeof (GtkBox)) 138 #define gtk_init_check(argc, argv) gtk_init_check_abi_check (argc, argv, 2, sizeof (GtkWindow), sizeof (GtkBox)) 139 140 #endif 141 142 GDK_AVAILABLE_IN_ALL 143 void gtk_disable_setlocale (void); 144 GDK_AVAILABLE_IN_ALL 145 PangoLanguage *gtk_get_default_language (void); 146 GDK_AVAILABLE_IN_3_12 147 GtkTextDirection gtk_get_locale_direction (void); 148 GDK_AVAILABLE_IN_ALL 149 gboolean gtk_events_pending (void); 150 151 GDK_AVAILABLE_IN_ALL 152 void gtk_main_do_event (GdkEvent *event); 153 GDK_AVAILABLE_IN_ALL 154 void gtk_main (void); 155 GDK_AVAILABLE_IN_ALL 156 guint gtk_main_level (void); 157 GDK_AVAILABLE_IN_ALL 158 void gtk_main_quit (void); 159 GDK_AVAILABLE_IN_ALL 160 gboolean gtk_main_iteration (void); 161 GDK_AVAILABLE_IN_ALL 162 gboolean gtk_main_iteration_do (gboolean blocking); 163 164 GDK_AVAILABLE_IN_ALL 165 gboolean gtk_true (void) G_GNUC_CONST; 166 GDK_AVAILABLE_IN_ALL 167 gboolean gtk_false (void) G_GNUC_CONST; 168 169 GDK_AVAILABLE_IN_ALL 170 void gtk_grab_add (GtkWidget *widget); 171 GDK_AVAILABLE_IN_ALL 172 GtkWidget* gtk_grab_get_current (void); 173 GDK_AVAILABLE_IN_ALL 174 void gtk_grab_remove (GtkWidget *widget); 175 176 GDK_AVAILABLE_IN_ALL 177 void gtk_device_grab_add (GtkWidget *widget, 178 GdkDevice *device, 179 gboolean block_others); 180 GDK_AVAILABLE_IN_ALL 181 void gtk_device_grab_remove (GtkWidget *widget, 182 GdkDevice *device); 183 184 GDK_DEPRECATED_IN_3_4 185 guint gtk_key_snooper_install (GtkKeySnoopFunc snooper, 186 gpointer func_data); 187 GDK_DEPRECATED_IN_3_4 188 void gtk_key_snooper_remove (guint snooper_handler_id); 189 190 GDK_AVAILABLE_IN_ALL 191 GdkEvent * gtk_get_current_event (void); 192 GDK_AVAILABLE_IN_ALL 193 guint32 gtk_get_current_event_time (void); 194 GDK_AVAILABLE_IN_ALL 195 gboolean gtk_get_current_event_state (GdkModifierType *state); 196 GDK_AVAILABLE_IN_ALL 197 GdkDevice *gtk_get_current_event_device (void); 198 199 GDK_AVAILABLE_IN_ALL 200 GtkWidget *gtk_get_event_widget (GdkEvent *event); 201 202 GDK_AVAILABLE_IN_ALL 203 void gtk_propagate_event (GtkWidget *widget, 204 GdkEvent *event); 205 206 207 G_END_DECLS 208 209 #endif /* __GTK_MAIN_H__ */ 210