X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gtk%2Fgtkmenuitem.h;h=9d546d6c3dd59125a4405c5abd71c9fd9b19da09;hb=ea043cab5718304d9b6170afa2d3f959fc99c718;hp=00fc40f79c32b6bb3954a126aae37ddc5db97197;hpb=584231106242a6dd92f7744c0d9f5617574078c0;p=~andy%2Fgtk diff --git a/gtk/gtkmenuitem.h b/gtk/gtkmenuitem.h index 00fc40f79..9d546d6c3 100644 --- a/gtk/gtkmenuitem.h +++ b/gtk/gtkmenuitem.h @@ -2,98 +2,127 @@ * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald * * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public + * modify it under the terms of the GNU Lesser General Public * 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 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. + * Lesser General Public License for more details. * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . */ + +/* + * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS + * 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/. + */ + #ifndef __GTK_MENU_ITEM_H__ #define __GTK_MENU_ITEM_H__ +#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) +#error "Only can be included directly." +#endif -#include -#include +#include -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ +G_BEGIN_DECLS +#define GTK_TYPE_MENU_ITEM (gtk_menu_item_get_type ()) +#define GTK_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_MENU_ITEM, GtkMenuItem)) +#define GTK_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_MENU_ITEM, GtkMenuItemClass)) +#define GTK_IS_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_MENU_ITEM)) +#define GTK_IS_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_MENU_ITEM)) +#define GTK_MENU_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_MENU_ITEM, GtkMenuItemClass)) -#define GTK_MENU_ITEM(obj) GTK_CHECK_CAST (obj, gtk_menu_item_get_type (), GtkMenuItem) -#define GTK_MENU_ITEM_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, gtk_menu_item_get_type (), GtkMenuItemClass) -#define GTK_IS_MENU_ITEM(obj) GTK_CHECK_TYPE (obj, gtk_menu_item_get_type ()) - -typedef struct _GtkMenuItem GtkMenuItem; -typedef struct _GtkMenuItemClass GtkMenuItemClass; +typedef struct _GtkMenuItem GtkMenuItem; +typedef struct _GtkMenuItemClass GtkMenuItemClass; +typedef struct _GtkMenuItemPrivate GtkMenuItemPrivate; struct _GtkMenuItem { - GtkItem item; - - GtkWidget *submenu; - - gint accelerator_signal; - gchar accelerator_key; - guint8 accelerator_mods; - guint16 accelerator_size; - guint16 toggle_size; - - guint show_toggle_indicator : 1; - guint show_submenu_indicator : 1; - guint submenu_placement : 1; - guint submenu_direction : 1; - guint right_justify: 1; - gint timer; + GtkBin bin; + + /*< private >*/ + GtkMenuItemPrivate *priv; }; struct _GtkMenuItemClass { - GtkItemClass parent_class; - - gint toggle_size; - - gchar *shift_text; - gchar *control_text; - gchar *alt_text; - gchar *separator_text; - - void (* activate) (GtkMenuItem *menu_item); + GtkBinClass parent_class; + + /* If the following flag is true, then we should always + * hide the menu when the MenuItem is activated. Otherwise, + * it is up to the caller. For instance, when navigating + * a menu with the keyboard, doesn't hide, but + * does. + */ + guint hide_on_activate : 1; + + void (* activate) (GtkMenuItem *menu_item); + void (* activate_item) (GtkMenuItem *menu_item); + void (* toggle_size_request) (GtkMenuItem *menu_item, + gint *requisition); + void (* toggle_size_allocate) (GtkMenuItem *menu_item, + gint allocation); + void (* set_label) (GtkMenuItem *menu_item, + const gchar *label); + const gchar * (* get_label) (GtkMenuItem *menu_item); + + void (* select) (GtkMenuItem *menu_item); + void (* deselect) (GtkMenuItem *menu_item); + + /* Padding for future expansion */ + void (*_gtk_reserved1) (void); + void (*_gtk_reserved2) (void); + void (*_gtk_reserved3) (void); + void (*_gtk_reserved4) (void); }; -guint gtk_menu_item_get_type (void); -GtkWidget* gtk_menu_item_new (void); -GtkWidget* gtk_menu_item_new_with_label (const gchar *label); -void gtk_menu_item_set_submenu (GtkMenuItem *menu_item, - GtkWidget *submenu); -void gtk_menu_item_remove_submenu (GtkMenuItem *menu_item); -void gtk_menu_item_set_placement (GtkMenuItem *menu_item, - GtkSubmenuPlacement placement); -void gtk_menu_item_accelerator_size (GtkMenuItem *menu_item); -void gtk_menu_item_accelerator_text (GtkMenuItem *menu_item, - gchar *buffer); -void gtk_menu_item_configure (GtkMenuItem *menu_item, - gint show_toggle_indicator, - gint show_submenu_indicator); -void gtk_menu_item_select (GtkMenuItem *menu_item); -void gtk_menu_item_deselect (GtkMenuItem *menu_item); -void gtk_menu_item_activate (GtkMenuItem *menu_item); -void gtk_menu_item_right_justify (GtkMenuItem *menu_item); - - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - +GType gtk_menu_item_get_type (void) G_GNUC_CONST; + +GtkWidget* gtk_menu_item_new (void); +GtkWidget* gtk_menu_item_new_with_label (const gchar *label); +GtkWidget* gtk_menu_item_new_with_mnemonic (const gchar *label); +void gtk_menu_item_set_submenu (GtkMenuItem *menu_item, + GtkWidget *submenu); +GtkWidget* gtk_menu_item_get_submenu (GtkMenuItem *menu_item); +void gtk_menu_item_select (GtkMenuItem *menu_item); +void gtk_menu_item_deselect (GtkMenuItem *menu_item); +void gtk_menu_item_activate (GtkMenuItem *menu_item); +void gtk_menu_item_toggle_size_request (GtkMenuItem *menu_item, + gint *requisition); +void gtk_menu_item_toggle_size_allocate (GtkMenuItem *menu_item, + gint allocation); +GDK_DEPRECATED_IN_3_2 +void gtk_menu_item_set_right_justified (GtkMenuItem *menu_item, + gboolean right_justified); +GDK_DEPRECATED_IN_3_2 +gboolean gtk_menu_item_get_right_justified (GtkMenuItem *menu_item); +void gtk_menu_item_set_accel_path (GtkMenuItem *menu_item, + const gchar *accel_path); +const gchar * gtk_menu_item_get_accel_path (GtkMenuItem *menu_item); + +void gtk_menu_item_set_label (GtkMenuItem *menu_item, + const gchar *label); +const gchar * gtk_menu_item_get_label (GtkMenuItem *menu_item); + +void gtk_menu_item_set_use_underline (GtkMenuItem *menu_item, + gboolean setting); +gboolean gtk_menu_item_get_use_underline (GtkMenuItem *menu_item); + +void gtk_menu_item_set_reserve_indicator (GtkMenuItem *menu_item, + gboolean reserve); +gboolean gtk_menu_item_get_reserve_indicator (GtkMenuItem *menu_item); + +G_END_DECLS #endif /* __GTK_MENU_ITEM_H__ */