1997-11-24 22:37:52 +00:00
|
|
|
/* GTK - The GIMP Toolkit
|
|
|
|
* 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
|
1997-11-28 01:22:38 +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
|
1998-04-13 02:02:47 +00:00
|
|
|
* License along with this library; if not, write to the
|
|
|
|
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
|
|
* Boston, MA 02111-1307, USA.
|
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
|
|
|
|
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
|
|
|
|
*/
|
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
#ifndef __GTK_MAIN_H__
|
|
|
|
#define __GTK_MAIN_H__
|
|
|
|
|
|
|
|
|
|
|
|
#include <gdk/gdk.h>
|
|
|
|
#include <gtk/gtkwidget.h>
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif /* __cplusplus */
|
|
|
|
|
1998-12-19 22:27:03 +00:00
|
|
|
/* Priorities for redrawing and resizing
|
|
|
|
*/
|
|
|
|
#define GTK_PRIORITY_REDRAW (G_PRIORITY_HIGH_IDLE + 20)
|
|
|
|
#define GTK_PRIORITY_RESIZE (G_PRIORITY_HIGH_IDLE + 10)
|
|
|
|
|
|
|
|
/* Deprecated. Use G_PRIORITY #define's instead
|
|
|
|
*/
|
|
|
|
#define GTK_PRIORITY_HIGH G_PRIORITY_HIGH
|
|
|
|
#define GTK_PRIORITY_INTERNAL GTK_PRIORITY_REDRAW
|
|
|
|
#define GTK_PRIORITY_DEFAULT G_PRIORITY_DEFAULT_IDLE
|
|
|
|
#define GTK_PRIORITY_LOW G_PRIORITY_LOW
|
1997-11-24 22:37:52 +00:00
|
|
|
|
1998-08-17 02:41:42 +00:00
|
|
|
typedef void (*GtkModuleInitFunc) (gint *argc,
|
|
|
|
gchar ***argv);
|
1998-03-12 18:00:45 +00:00
|
|
|
typedef gint (*GtkKeySnoopFunc) (GtkWidget *grab_widget,
|
|
|
|
GdkEventKey *event,
|
|
|
|
gpointer func_data);
|
1998-01-18 18:17:23 +00:00
|
|
|
|
1998-03-08 02:04:26 +00:00
|
|
|
/* Gtk version.
|
|
|
|
*/
|
1999-10-04 19:03:05 +00:00
|
|
|
#ifdef G_OS_WIN32
|
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
|
|
|
#ifdef GTK_COMPILATION
|
|
|
|
#define GTKMAIN_C_VAR __declspec(dllexport)
|
|
|
|
#else
|
|
|
|
#define GTKMAIN_C_VAR __declspec(dllimport) extern
|
|
|
|
#endif
|
|
|
|
#else
|
|
|
|
#define GTKMAIN_C_VAR extern
|
|
|
|
#endif
|
|
|
|
|
|
|
|
GTKMAIN_C_VAR const guint gtk_major_version;
|
|
|
|
GTKMAIN_C_VAR const guint gtk_minor_version;
|
|
|
|
GTKMAIN_C_VAR const guint gtk_micro_version;
|
|
|
|
GTKMAIN_C_VAR const guint gtk_binary_age;
|
|
|
|
GTKMAIN_C_VAR const guint gtk_interface_age;
|
1998-08-21 02:22:06 +00:00
|
|
|
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
|
|
|
|
|
|
|
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);
|
2000-08-19 21:46:05 +00:00
|
|
|
#ifdef G_OS_WIN32
|
|
|
|
|
|
|
|
/* Variants that are used to check for correct struct packing
|
|
|
|
* when building GTK+-using code.
|
|
|
|
*/
|
|
|
|
void gtk_init_abi_check (int *argc,
|
|
|
|
char ***argv,
|
|
|
|
int num_checks,
|
|
|
|
size_t sizeof_GtkWindow);
|
|
|
|
gboolean gtk_init_check_abi_check (int *argc,
|
|
|
|
char ***argv,
|
|
|
|
int num_checks,
|
|
|
|
size_t sizeof_GtkWindow);
|
|
|
|
|
|
|
|
#define gtk_init(argc, argv) gtk_init_abi_check (argc, argv, 1, sizeof (GtkWindow))
|
|
|
|
#define gtk_init_check(args, argv) gtk_init_check_abi_check (argc, argv, 1, sizeof (GtkWindow))
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
2000-06-21 20:41:15 +00:00
|
|
|
void gtk_exit (gint error_code);
|
|
|
|
gchar* gtk_set_locale (void);
|
|
|
|
gchar* gtk_get_default_language (void);
|
|
|
|
gint gtk_events_pending (void);
|
|
|
|
|
|
|
|
|
1998-12-15 07:32:11 +00:00
|
|
|
|
|
|
|
/* The following is the event func GTK+ registers with GDK
|
|
|
|
* we expose it mainly to allow filtering of events between
|
|
|
|
* GDK and GTK+.
|
|
|
|
*/
|
|
|
|
void gtk_main_do_event (GdkEvent *event);
|
|
|
|
|
1997-11-28 01:22:38 +00:00
|
|
|
void gtk_main (void);
|
|
|
|
guint gtk_main_level (void);
|
|
|
|
void gtk_main_quit (void);
|
|
|
|
gint gtk_main_iteration (void);
|
1998-01-08 04:13:13 +00:00
|
|
|
/* gtk_main_iteration() calls gtk_main_iteration_do(TRUE) */
|
|
|
|
gint gtk_main_iteration_do (gboolean blocking);
|
1997-11-24 22:37:52 +00:00
|
|
|
|
2000-08-30 00:33:38 +00:00
|
|
|
gint gtk_true (void) G_GNUC_CONST;
|
|
|
|
gint gtk_false (void) G_GNUC_CONST;
|
1997-11-24 22:37:52 +00:00
|
|
|
|
1998-03-12 18:00:45 +00:00
|
|
|
void gtk_grab_add (GtkWidget *widget);
|
1998-02-17 06:03:40 +00:00
|
|
|
GtkWidget* gtk_grab_get_current (void);
|
1998-03-12 18:00:45 +00:00
|
|
|
void gtk_grab_remove (GtkWidget *widget);
|
|
|
|
|
|
|
|
void gtk_init_add (GtkFunction function,
|
|
|
|
gpointer data);
|
1998-03-13 17:45:16 +00:00
|
|
|
void gtk_quit_add_destroy (guint main_level,
|
|
|
|
GtkObject *object);
|
1998-03-12 18:00:45 +00:00
|
|
|
guint gtk_quit_add (guint main_level,
|
|
|
|
GtkFunction function,
|
|
|
|
gpointer data);
|
|
|
|
guint gtk_quit_add_full (guint main_level,
|
|
|
|
GtkFunction function,
|
1998-03-01 04:53:56 +00:00
|
|
|
GtkCallbackMarshal marshal,
|
1998-03-12 18:00:45 +00:00
|
|
|
gpointer data,
|
1998-03-01 04:53:56 +00:00
|
|
|
GtkDestroyNotify destroy);
|
1998-03-12 18:00:45 +00:00
|
|
|
void gtk_quit_remove (guint quit_handler_id);
|
|
|
|
void gtk_quit_remove_by_data (gpointer data);
|
reverted marius change to expose the type systems internal type info data
Mon Dec 7 03:08:39 1998 Tim Janik <timj@gtk.org>
* gtk/gtktypeutils.h:
* gtk/gtktypeutils.c: reverted marius change to expose the type systems
internal type info data to the user. if such functionality is required
we should provide wrapped accessors, ala gtk_signal_query().
* gtk/gtksignal.c (gtk_signal_connect_by_type): reverted marius change,
since it destroys the possibility to implement automatic marshaller
lookups some day, and it also disables third party code's ability to
connect to any signal. also the GtkTypeInfo structures are dynamically
allocated memory portions, so only the type system is really allowed
to access that stuff.
Mon Dec 7 01:32:18 1998 Tim Janik <timj@gtk.org>
* gtk/gtkfilesel.c (gtk_file_selection_key_press): always intercept the
Tab key on the entry. the focus shouldn't get lost even if completion
is attempted from an empty entry, since an empty entry string does
indeed have a valid completion meaning (complete all).
(gtk_file_selection_init): cast the gchar array parameter in calls to
gtk_clist_new_with_titles() to quit compiler warnings.
(check_dir): the no_stat_dirs struct must not be const, since we do
indeed modify its contents.
* gtk/testgtk.c (event_watcher): adapted prototype to fit new emission
hook semantics.
* gtk/gtksignal.h:
* gtk/gtksignal.c:
changed emission allocation, so we don't use a doubly linked list
but link ourselfs (singly linked).
changed emission hooks, they get the emision parameters passed as
well now and are emitted during the actuall signal emission (after
the RUN_FIRST class method, but prior to RUN_FIRST handlers).
the existing restrictions do still apply to signal emission hooks,
i.e. an emission may not be stopped or restarted from an emission hook.
due to possibly huge perfomance impacts, frequent use of emision hooks
is also not recommended.
(gtk_signal_next_and_invalidate): added an
assertments which explicits what the code assumes anyways: a
maximum amount of 65535 signals.
* gtk/gtkcontainer.h: deprecated gtk_container_foreach_interp(),
gtk_container_foreach_full() should be used instead.
* gtk/gtkmain.h:
deprecated gtk_timeout_add_interp and gtk_idle_add_interp, since
we provide _full variants.
* gtk/gtksignal.h: deprecated gtk_signal_connect_interp(), we provide
gtk_signal_connect_full() for long enough now.
1998-12-07 02:31:19 +00:00
|
|
|
guint gtk_timeout_add (guint32 interval,
|
|
|
|
GtkFunction function,
|
|
|
|
gpointer data);
|
1998-03-12 18:00:45 +00:00
|
|
|
guint gtk_timeout_add_full (guint32 interval,
|
|
|
|
GtkFunction function,
|
1998-02-17 06:03:40 +00:00
|
|
|
GtkCallbackMarshal marshal,
|
1998-03-12 18:00:45 +00:00
|
|
|
gpointer data,
|
1998-02-17 06:03:40 +00:00
|
|
|
GtkDestroyNotify destroy);
|
1998-03-12 18:00:45 +00:00
|
|
|
void gtk_timeout_remove (guint timeout_handler_id);
|
1997-11-28 01:22:38 +00:00
|
|
|
|
1998-03-12 18:00:45 +00:00
|
|
|
guint gtk_idle_add (GtkFunction function,
|
1998-02-13 05:19:06 +00:00
|
|
|
gpointer data);
|
1998-03-12 18:00:45 +00:00
|
|
|
guint gtk_idle_add_priority (gint priority,
|
|
|
|
GtkFunction function,
|
|
|
|
gpointer data);
|
|
|
|
guint gtk_idle_add_full (gint priority,
|
|
|
|
GtkFunction function,
|
1998-02-13 05:19:06 +00:00
|
|
|
GtkCallbackMarshal marshal,
|
|
|
|
gpointer data,
|
|
|
|
GtkDestroyNotify destroy);
|
1998-03-12 18:00:45 +00:00
|
|
|
void gtk_idle_remove (guint idle_handler_id);
|
|
|
|
void gtk_idle_remove_by_data (gpointer data);
|
|
|
|
guint gtk_input_add_full (gint source,
|
1998-02-13 05:19:06 +00:00
|
|
|
GdkInputCondition condition,
|
|
|
|
GdkInputFunction function,
|
|
|
|
GtkCallbackMarshal marshal,
|
1998-03-12 18:00:45 +00:00
|
|
|
gpointer data,
|
1998-02-13 05:19:06 +00:00
|
|
|
GtkDestroyNotify destroy);
|
1998-03-12 18:00:45 +00:00
|
|
|
void gtk_input_remove (guint input_handler_id);
|
1998-02-13 05:19:06 +00:00
|
|
|
|
|
|
|
|
1998-03-12 18:00:45 +00:00
|
|
|
guint gtk_key_snooper_install (GtkKeySnoopFunc snooper,
|
1998-01-18 18:17:23 +00:00
|
|
|
gpointer func_data);
|
1998-03-12 18:00:45 +00:00
|
|
|
void gtk_key_snooper_remove (guint snooper_handler_id);
|
1998-01-18 18:17:23 +00:00
|
|
|
|
1997-12-18 02:17:14 +00:00
|
|
|
GdkEvent* gtk_get_current_event (void);
|
1998-12-15 07:32:11 +00:00
|
|
|
GtkWidget* gtk_get_event_widget (GdkEvent *event);
|
1997-11-24 22:37:52 +00:00
|
|
|
|
reverted marius change to expose the type systems internal type info data
Mon Dec 7 03:08:39 1998 Tim Janik <timj@gtk.org>
* gtk/gtktypeutils.h:
* gtk/gtktypeutils.c: reverted marius change to expose the type systems
internal type info data to the user. if such functionality is required
we should provide wrapped accessors, ala gtk_signal_query().
* gtk/gtksignal.c (gtk_signal_connect_by_type): reverted marius change,
since it destroys the possibility to implement automatic marshaller
lookups some day, and it also disables third party code's ability to
connect to any signal. also the GtkTypeInfo structures are dynamically
allocated memory portions, so only the type system is really allowed
to access that stuff.
Mon Dec 7 01:32:18 1998 Tim Janik <timj@gtk.org>
* gtk/gtkfilesel.c (gtk_file_selection_key_press): always intercept the
Tab key on the entry. the focus shouldn't get lost even if completion
is attempted from an empty entry, since an empty entry string does
indeed have a valid completion meaning (complete all).
(gtk_file_selection_init): cast the gchar array parameter in calls to
gtk_clist_new_with_titles() to quit compiler warnings.
(check_dir): the no_stat_dirs struct must not be const, since we do
indeed modify its contents.
* gtk/testgtk.c (event_watcher): adapted prototype to fit new emission
hook semantics.
* gtk/gtksignal.h:
* gtk/gtksignal.c:
changed emission allocation, so we don't use a doubly linked list
but link ourselfs (singly linked).
changed emission hooks, they get the emision parameters passed as
well now and are emitted during the actuall signal emission (after
the RUN_FIRST class method, but prior to RUN_FIRST handlers).
the existing restrictions do still apply to signal emission hooks,
i.e. an emission may not be stopped or restarted from an emission hook.
due to possibly huge perfomance impacts, frequent use of emision hooks
is also not recommended.
(gtk_signal_next_and_invalidate): added an
assertments which explicits what the code assumes anyways: a
maximum amount of 65535 signals.
* gtk/gtkcontainer.h: deprecated gtk_container_foreach_interp(),
gtk_container_foreach_full() should be used instead.
* gtk/gtkmain.h:
deprecated gtk_timeout_add_interp and gtk_idle_add_interp, since
we provide _full variants.
* gtk/gtksignal.h: deprecated gtk_signal_connect_interp(), we provide
gtk_signal_connect_full() for long enough now.
1998-12-07 02:31:19 +00:00
|
|
|
|
1999-01-05 23:45:21 +00:00
|
|
|
/* Private routines internal to GTK+
|
|
|
|
*/
|
|
|
|
void gtk_propagate_event (GtkWidget *widget,
|
|
|
|
GdkEvent *event);
|
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif /* __cplusplus */
|
|
|
|
|
|
|
|
|
|
|
|
#endif /* __GTK_MAIN_H__ */
|