2008-07-01 22:57:50 +00:00
|
|
|
/* GTK - The GIMP Toolkit
|
1997-11-24 22:37:52 +00:00
|
|
|
* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
|
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
2000-07-26 11:33:08 +00:00
|
|
|
* modify it under the terms of the GNU Lesser General Public
|
1997-11-24 22:37:52 +00:00
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
* version 2 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
2011-01-04 22:32:12 +00:00
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
2000-07-26 11:33:08 +00:00
|
|
|
* Lesser General Public License for more details.
|
1997-11-24 22:37:52 +00:00
|
|
|
*
|
2000-07-26 11:33:08 +00:00
|
|
|
* You should have received a copy of the GNU Lesser General Public
|
2012-02-27 13:01:10 +00:00
|
|
|
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
1997-11-24 22:37:52 +00:00
|
|
|
*/
|
1999-02-24 07:37:18 +00:00
|
|
|
|
|
|
|
/*
|
2000-07-26 11:33:08 +00:00
|
|
|
* Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
|
1999-02-24 07:37:18 +00:00
|
|
|
* file for a list of people on the GTK+ Team. See the ChangeLog
|
|
|
|
* files for a list of changes. These files are distributed with
|
2008-05-28 15:35:43 +00:00
|
|
|
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
|
1999-02-24 07:37:18 +00:00
|
|
|
*/
|
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
#ifndef __GTK_MAIN_H__
|
|
|
|
#define __GTK_MAIN_H__
|
|
|
|
|
|
|
|
|
2012-12-28 14:57:34 +00:00
|
|
|
#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
|
|
|
|
#error "Only <gtk/gtk.h> can be included directly."
|
|
|
|
#endif
|
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
#include <gdk/gdk.h>
|
|
|
|
#include <gtk/gtkwidget.h>
|
2002-08-24 23:06:16 +00:00
|
|
|
#ifdef G_PLATFORM_WIN32
|
|
|
|
#include <gtk/gtkbox.h>
|
|
|
|
#include <gtk/gtkwindow.h>
|
|
|
|
#endif
|
1997-11-24 22:37:52 +00:00
|
|
|
|
2005-03-20 07:01:23 +00:00
|
|
|
G_BEGIN_DECLS
|
1997-11-24 22:37:52 +00:00
|
|
|
|
2011-01-04 22:32:12 +00:00
|
|
|
/**
|
|
|
|
* GTK_PRIORITY_RESIZE:
|
|
|
|
*
|
|
|
|
* Use this priority for functionality related to size allocation.
|
|
|
|
*
|
|
|
|
* It is used internally by GTK+ to compute the sizes of widgets.
|
|
|
|
* This priority is higher than %GDK_PRIORITY_REDRAW to avoid
|
|
|
|
* resizing a widget which was just redrawn.
|
1998-12-19 22:27:03 +00:00
|
|
|
*/
|
2011-01-04 22:32:12 +00:00
|
|
|
#define GTK_PRIORITY_RESIZE (G_PRIORITY_HIGH_IDLE + 10)
|
1998-12-19 22:27:03 +00:00
|
|
|
|
2011-01-04 22:32:12 +00:00
|
|
|
/**
|
|
|
|
* GtkKeySnoopFunc:
|
|
|
|
* @grab_widget: the widget to which the event will be delivered
|
|
|
|
* @event: the key event
|
|
|
|
* @func_data: data supplied to gtk_key_snooper_install()
|
|
|
|
*
|
|
|
|
* Key snooper functions are called before normal event delivery.
|
|
|
|
* They can be used to implement custom key event handling.
|
|
|
|
*
|
|
|
|
* Returns: %TRUE to stop further processing of @event, %FALSE to continue.
|
|
|
|
*/
|
|
|
|
typedef gint (*GtkKeySnoopFunc) (GtkWidget *grab_widget,
|
|
|
|
GdkEventKey *event,
|
|
|
|
gpointer func_data);
|
1998-01-18 18:17:23 +00:00
|
|
|
|
2011-01-04 22:32:12 +00:00
|
|
|
/* GTK+ version
|
1998-03-08 02:04:26 +00:00
|
|
|
*/
|
2010-09-09 08:03:22 +00:00
|
|
|
guint gtk_get_major_version (void) G_GNUC_CONST;
|
|
|
|
guint gtk_get_minor_version (void) G_GNUC_CONST;
|
|
|
|
guint gtk_get_micro_version (void) G_GNUC_CONST;
|
|
|
|
guint gtk_get_binary_age (void) G_GNUC_CONST;
|
|
|
|
guint gtk_get_interface_age (void) G_GNUC_CONST;
|
|
|
|
|
|
|
|
#define gtk_major_version gtk_get_major_version ()
|
|
|
|
#define gtk_minor_version gtk_get_minor_version ()
|
|
|
|
#define gtk_micro_version gtk_get_micro_version ()
|
|
|
|
#define gtk_binary_age gtk_get_binary_age ()
|
|
|
|
#define gtk_interface_age gtk_get_interface_age ()
|
This might seem like a large patch, but it isn't that bad, and nothing
should break on Unix/X11.
Win32 merge and general portability stuff:
* acconfig.h,configure.in: Check for <sys/time.h>.
* gdk/win32: New directory (actually, been there for a while).
* gtk/fnmatch.c: Include <glib.h> for G_DIR_SEPARATOR, WIN32 and
NATIVE_WIN32, and use these. Always case fold on Win32. No
backslashed escapes on native Win32.
* gtk/{gtk.def,makefile.msc}: New files.
* gtk/Makefile.am: Add above new files.
* gtk/{gtkaccelgroup,gtkbindings}.c: Include <string.h>
instead of <strings.h>.
* gtk/{gtkcalendar,gtkitemfactory,gtkpreview,gtkrc}.c: Include
config.h. Protect inclusion of <sys/param.h>, <sys/time.h>, and
<unistd.h> appropriately.
* gtk/gtkdnd.c: Merge in Win32 version (which doesn't do much).
Use ABS() (from <glib.h>) instead of abs().
* gtk/gtkfilesel.c: Moved Win32-specific includes after inclusion
of gtk (and thus glib) headers, so that WIN32 will be
defined. With MS C, include <direct.h> for mkdir prototype.
* gtk/gtkitemfactory.c (gtk_item_factory_callback_marshal): Add
some casts, needed by MS C.
* gtk/{gtklayout,gtkplug}.c: Merge in Win32 version (which isn't
implemented).
* gtk/gtkmain.c: Include gdk/gdkx.h for GDK_WINDOWING. Include
<X11/Xlocale.h> only on X11 platform, otherwise <locale.h>. Use
G_SEARCHPATH_SEPARATOR_S and g_module_build_path.
* gtk/gtkmain.h: Mark variables for export/import on Win32.
* gtk/gtkrange.c (gtk_range_motion_notify): Set mods also in case
the event is not a hint, or its window is not the slider. Needed
on Win32, at least.
* gtk/gtkrc.c: Include config.h and gdk/gdkx.h. Use <locale.h>
unless on X11. Skip \r chars, too. Use G_DIR_SEPARATOR and
G_SEARCHPATH_SEPARATOR(_S). Use g_path_is_absolute. On Win32, use
a subdirectory of the Windows directory as gtk system
configuration directory.
* gtk/gtkselection.c: No chunks on Win32.
* gtk/gtksocket.c: Not implemented on Win32.
* gtk/gtkthemes.c (gtk_theme_engine_get): Use g_module_build_path.
* gtk/makeenums.h: Include gdkprivate.h after gdk.h.
* gtk/testrgb.c: Use dynamically allocated buffer. Use GTimers.
1999-03-15 00:03:37 +00:00
|
|
|
|
2011-01-04 22:32:12 +00:00
|
|
|
const gchar* gtk_check_version (guint required_major,
|
|
|
|
guint required_minor,
|
|
|
|
guint required_micro);
|
1998-07-19 19:09:27 +00:00
|
|
|
|
1998-01-18 18:17:23 +00:00
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
/* Initialization, exit, mainloop and miscellaneous routines
|
|
|
|
*/
|
2000-06-21 20:41:15 +00:00
|
|
|
|
2004-07-13 14:17:49 +00:00
|
|
|
gboolean gtk_parse_args (int *argc,
|
2011-01-04 22:32:12 +00:00
|
|
|
char ***argv);
|
2004-07-13 14:17:49 +00:00
|
|
|
|
2000-06-21 20:41:15 +00:00
|
|
|
void gtk_init (int *argc,
|
|
|
|
char ***argv);
|
2000-08-19 21:46:05 +00:00
|
|
|
|
2000-06-21 20:41:15 +00:00
|
|
|
gboolean gtk_init_check (int *argc,
|
|
|
|
char ***argv);
|
2010-06-09 17:12:27 +00:00
|
|
|
|
|
|
|
gboolean gtk_init_with_args (gint *argc,
|
|
|
|
gchar ***argv,
|
|
|
|
const gchar *parameter_string,
|
|
|
|
const GOptionEntry *entries,
|
|
|
|
const gchar *translation_domain,
|
|
|
|
GError **error);
|
Make gtk argument parsing use goption. Add gtk_get_option_group and
2004-09-05 Anders Carlsson <andersca@gnome.org>
* gdk/gdk.c: (gdk_arg_class_cb), (gdk_arg_name_cb),
(gdk_add_option_entries_libgtk_only), (gdk_pre_parse_libgtk_only),
(gdk_parse_args):
* gdk/gdk.h:
* gdk/gdkinternals.h:
* gdk/linux-fb/gdkmain-fb.c: (_gdk_windowing_init):
* gdk/win32/gdkmain-win32.c: (_gdk_windowing_init):
* gdk/x11/gdkdisplay-x11.c: (gdk_display_open):
* gdk/x11/gdkmain-x11.c: (_gdk_windowing_init):
* gtk/gtkmain.c: (gtk_arg_debug_cb), (gtk_arg_no_debug_cb),
(gtk_arg_module_cb), (gtk_arg_warnings_cb),
(do_pre_parse_initialization), (do_post_parse_initialization),
(pre_parse_hook), (post_parse_hook), (gtk_get_option_group),
(gtk_init_with_args), (gtk_parse_args):
* gtk/gtkmain.h:
Make gtk argument parsing use goption. Add gtk_get_option_group and
gtk_init_with_args.
* tests/testtreemodel.c: (main):
Use gtk_init_with_args.
2004-09-05 15:09:55 +00:00
|
|
|
|
|
|
|
GOptionGroup *gtk_get_option_group (gboolean open_default_display);
|
2011-01-04 22:32:12 +00:00
|
|
|
|
2011-01-11 15:13:34 +00:00
|
|
|
#ifdef G_OS_WIN32
|
2000-08-19 21:46:05 +00:00
|
|
|
|
|
|
|
/* Variants that are used to check for correct struct packing
|
|
|
|
* when building GTK+-using code.
|
|
|
|
*/
|
2011-01-04 22:32:12 +00:00
|
|
|
void gtk_init_abi_check (int *argc,
|
|
|
|
char ***argv,
|
|
|
|
int num_checks,
|
|
|
|
size_t sizeof_GtkWindow,
|
|
|
|
size_t sizeof_GtkBox);
|
|
|
|
gboolean gtk_init_check_abi_check (int *argc,
|
|
|
|
char ***argv,
|
|
|
|
int num_checks,
|
|
|
|
size_t sizeof_GtkWindow,
|
|
|
|
size_t sizeof_GtkBox);
|
2000-08-19 21:46:05 +00:00
|
|
|
|
2002-04-18 11:21:21 +00:00
|
|
|
#define gtk_init(argc, argv) gtk_init_abi_check (argc, argv, 2, sizeof (GtkWindow), sizeof (GtkBox))
|
|
|
|
#define gtk_init_check(argc, argv) gtk_init_check_abi_check (argc, argv, 2, sizeof (GtkWindow), sizeof (GtkBox))
|
2000-08-19 21:46:05 +00:00
|
|
|
|
|
|
|
#endif
|
|
|
|
|
2001-10-19 15:27:43 +00:00
|
|
|
void gtk_disable_setlocale (void);
|
2001-06-14 20:41:44 +00:00
|
|
|
PangoLanguage *gtk_get_default_language (void);
|
2004-01-07 22:06:07 +00:00
|
|
|
gboolean gtk_events_pending (void);
|
1998-12-15 07:32:11 +00:00
|
|
|
|
2011-01-04 22:32:12 +00:00
|
|
|
void gtk_main_do_event (GdkEvent *event);
|
|
|
|
void gtk_main (void);
|
|
|
|
guint gtk_main_level (void);
|
|
|
|
void gtk_main_quit (void);
|
|
|
|
gboolean gtk_main_iteration (void);
|
|
|
|
gboolean gtk_main_iteration_do (gboolean blocking);
|
1997-11-24 22:37:52 +00:00
|
|
|
|
2011-01-04 22:32:12 +00:00
|
|
|
gboolean gtk_true (void) G_GNUC_CONST;
|
|
|
|
gboolean gtk_false (void) G_GNUC_CONST;
|
1997-11-24 22:37:52 +00:00
|
|
|
|
2011-01-04 22:32:12 +00:00
|
|
|
void gtk_grab_add (GtkWidget *widget);
|
|
|
|
GtkWidget* gtk_grab_get_current (void);
|
|
|
|
void gtk_grab_remove (GtkWidget *widget);
|
1998-03-12 18:00:45 +00:00
|
|
|
|
2010-05-25 22:38:44 +00:00
|
|
|
void gtk_device_grab_add (GtkWidget *widget,
|
|
|
|
GdkDevice *device,
|
|
|
|
gboolean block_others);
|
|
|
|
void gtk_device_grab_remove (GtkWidget *widget,
|
|
|
|
GdkDevice *device);
|
|
|
|
|
2012-02-27 12:10:59 +00:00
|
|
|
GDK_DEPRECATED_IN_3_4
|
2011-01-04 22:32:12 +00:00
|
|
|
guint gtk_key_snooper_install (GtkKeySnoopFunc snooper,
|
|
|
|
gpointer func_data);
|
2012-02-27 12:10:59 +00:00
|
|
|
GDK_DEPRECATED_IN_3_4
|
2011-01-04 22:32:12 +00:00
|
|
|
void gtk_key_snooper_remove (guint snooper_handler_id);
|
Adapt to uscore-ification of gtktextiterprivate
2001-01-03 Havoc Pennington <hp@redhat.com>
* gtk/gtktextbtree.c: Adapt to uscore-ification of gtktextiterprivate
* gtk/gtktextdisplay.c (gtk_text_layout_draw): remove use
of private functions; remove inclusion of private headers.
* gtk/gtktextlayout.c (gtk_text_layout_get_iter_at_line): Add this
function, so we don't need private functions in gtktextdisplay.c
* gtk/gtktextiterprivate.h: underscore-ification
* gtk/gtkwidget.c: Clean up a bunch of docs that said "INTERNAL"
to instead say "only useful to implement widgets"
* gtk/gtkenums.h (GtkMovementStep): Rename GTK_MOVEMENT_CHARS,
GTK_MOVEMENT_POSITIONS to GTK_MOVEMENT_LOGICAL_POSITIONS,
GTK_MOVEMENT_VISUAL_POSITIONS. Resolves bug 40249.
* gdk/x11/gdkwindow-x11.c (gdk_window_impl_x11_set_colormap):
This function was completely broken
* gtk/testtext.c (line_numbers_expose): use gtk_paint_layout
* gtk/gtkvscale.c (gtk_vscale_draw_value): use gtk_paint_layout
* gtk/gtkvruler.c (gtk_vruler_draw_ticks): use gtk_paint_layout
* gtk/gtklabel.c (gtk_label_expose): use gtk_paint_layout
* gtk/gtkhscale.c (gtk_hscale_draw_value): use gtk_paint_layout
* gtk/gtkhruler.c (gtk_hruler_draw_ticks): use gtk_paint_layout
* gtk/gtkcellrenderertext.c (gtk_cell_renderer_text_render): use
gtk_paint_layout
* gtk/gtkaccellabel.c (gtk_accel_label_expose_event): use
gtk_paint_layout
* gtk/gtkstyle.h: Add draw/paint expander to draw tree expanders.
Progress on bug 40103. Add draw_layout to draw a PangoLayout.
(struct _GtkStyleClass): Remove draw_cross, draw_oval, draw_ramp,
which were not implemented.
* gtk/gtktextbuffer.h (struct _GtkTextBufferClass): Add
insert_pixbuf signal. Rename delete_text to delete_range since it
also deletes pixbufs and child anchors. This almost closes bug
40245 (still need to deal with child anchors)
* gtk/gtktextbuffer.c (gtk_text_buffer_class_init): Add
insert_pixbuf, change signal names as appropriate, change types of
signals taking marks/tags to have the specific type, not just
G_TYPE_OBJECT
* gtk/gtkmain.c (gtk_get_current_event_state): Add this function;
closes bug 40051
* gtk/gtkoptionmenu.c (gtk_option_menu_set_history): clean up
unnecessary remove_contents() call
(gtk_option_menu_class_init): add a "changed" signal, closes
bug 40039
(gtk_option_menu_update_contents): emit "changed" if the
active menu item changes
* gtk/gdk-pixbuf-loader.c (gdk_pixbuf_loader_frame_done): fix bad
cast to GtkObject, reported by Jonas Borgstrom
(gdk_pixbuf_loader_finalize): don't close the loader on finalize;
we can't do stuff with side effects in finalize. Instead, spew a
warning if the loader isn't closed.
* gdk/x11/gdkdrawable-x11.c (gdk_drawable_impl_x11_finalize): free
colormap in here, non-X ports probably need to sync to this change
* gdk/x11/gdkdrawable-x11.c (gdk_x11_set_colormap): remove
assertion that colormap != NULL, you can set the colormap to NULL
if you like.
* Makefile.am: remove gtk-config-2.0
* configure.in: Use pkg-config to locate GLib. Remove
separated-out GMODULE_LIBS, GMODULE_CFLAGS; these were not used,
and the gmodule libs/cflags were in GLIB_LIBS GLIB_CFLAGS anyhow.
Use pkg-config to locate Pango. Output correct Pango libs to
gdk-2.0.pc.in. Fix test for FREETYPE_CONFIG (typo fix).
* Makefile.am (pkgconfig_DATA): install only target-specific pc
files
(install-data-local): symlink gtk+-2.0.pc and gdk-2.0.pc to the
X11 pc files
* gtk+-2.0.pc.in (Requires): require the GDK for the current target
unref from here
2001-01-04 17:48:43 +00:00
|
|
|
|
2011-01-04 22:32:12 +00:00
|
|
|
GdkEvent * gtk_get_current_event (void);
|
|
|
|
guint32 gtk_get_current_event_time (void);
|
|
|
|
gboolean gtk_get_current_event_state (GdkModifierType *state);
|
|
|
|
GdkDevice *gtk_get_current_event_device (void);
|
Remove g_convert (moved to glib) and now useless utf_to_latin1()
Thu Sep 14 12:21:12 2000 Owen Taylor <otaylor@redhat.com>
* gtk/gtktexttypes.[ch]: Remove g_convert (moved to
glib) and now useless utf_to_latin1() latin1_to_utf()
* gtk/gtktextview.[ch]: Change ::move_insert and
::delete_text action signals to ::move and ::delete;
create the signals with the right enumeration type,
not GTK_TYPE_ENUM so that bindings work. Add C-d, M-d,
C-v bindings, change Home, End to move to beginning/end
of line, Add C-Home C-End to move to beginning/end
of buffer. Change ::cut_text to ::cut_clipboard, etc;
combine ::scroll_text into ::move; use new GtkSelectionData
functions to simplify DND text handling.
* gtk/gtkenums.h gtk/gtktextview.h: Move movement,
deletion enumerations here, rename enumeration values to
be consistently plural.
* gtk/gtktextbuffer.c: Use new clipboard interfaces
for cut/copy/paste and primary selection.
* gtk/gtktextbuffer.[ch]: Remove excess time and
'interactive' arguments from cut/copy/paste;
rename cut to cut_clipboard, etc; remove
gtk_text_buffer_get_clipboard_contents().
* gtk/gtktextlayout.[ch]: Add
gtk_text_layout_move_iter_to_line_end() to move the iter to
line ends.
* gtk/gtkselection.[ch] (gtk_selection_data_set/get_text):
Functions to set or get a UTF-8 string on the selection
data.
* gtk/gtkclipboard.[ch]: New, simplified selection handling
interfaces.
* gtk/gtkinvisible.c (gtk_invisible_new): Realize newly
created widgets - one of these is useless if we don't.
* gtk/gtkselection.[ch] (gtk_selection_clear_targets): Export
a public function clear all targets registered for the
widget.
* gtk/gtkselection.c (gtk_selection_owner_set) docs/Changes-2.0.txt:
Never call gtk_widget_realize() - that was just asking
for bizarre side-effects.
* gtk/gtkselection.c (gtk_selection_owner_set): Call
gdk_selection_owner_set even if the widget is the
same so that we reliably update the timestamp on
the server.
* gdk/x11/gdkevents-x11.c gdk/x11/gdkx.h: Add a
gdk_x11_get_server_time() function.
* gdk/x11/gdkevents-x11.c gdk/x11/gdkprivate-x11.h
gdk/x11/gdkselection-x11.c gdk/x11/gdkwindow-x11.h:
Add some tricky filtering on serial numbers for
selection clear events to fix up long-standard
race condition FIXME's in gtkselection.c.
* gdk/gdkproperty.h gdk/x11/gdkselection-x11.h: Add
routines to convert from utf8 to compound text or
STRING and from a text property to UTF-8.
* gtk/gtkmain.[ch] (gtk_get_current_event_time): Add
a convenience function gdk_get_current_event_time().
* gtk/gtkselection.c (gtk_selection_data_copy/free): Copy
and free selection_data->data properly
2000-09-14 16:41:20 +00:00
|
|
|
|
2011-01-04 22:32:12 +00:00
|
|
|
GtkWidget *gtk_get_event_widget (GdkEvent *event);
|
1999-01-05 23:45:21 +00:00
|
|
|
|
2011-01-04 22:32:12 +00:00
|
|
|
void gtk_propagate_event (GtkWidget *widget,
|
|
|
|
GdkEvent *event);
|
2001-04-02 22:45:19 +00:00
|
|
|
|
2003-09-20 23:52:16 +00:00
|
|
|
|
2005-03-20 07:01:23 +00:00
|
|
|
G_END_DECLS
|
1997-11-24 22:37:52 +00:00
|
|
|
|
|
|
|
#endif /* __GTK_MAIN_H__ */
|