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_MENU_SHELL_H__ 26 #define __GTK_MENU_SHELL_H__ 27 28 #if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) 29 #error "Only <gtk/gtk.h> can be included directly." 30 #endif 31 32 #include <gtk/gtkcontainer.h> 33 34 G_BEGIN_DECLS 35 36 #define GTK_TYPE_MENU_SHELL (gtk_menu_shell_get_type ()) 37 #define GTK_MENU_SHELL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_MENU_SHELL, GtkMenuShell)) 38 #define GTK_MENU_SHELL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_MENU_SHELL, GtkMenuShellClass)) 39 #define GTK_IS_MENU_SHELL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_MENU_SHELL)) 40 #define GTK_IS_MENU_SHELL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_MENU_SHELL)) 41 #define GTK_MENU_SHELL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_MENU_SHELL, GtkMenuShellClass)) 42 43 44 typedef struct _GtkMenuShell GtkMenuShell; 45 typedef struct _GtkMenuShellClass GtkMenuShellClass; 46 typedef struct _GtkMenuShellPrivate GtkMenuShellPrivate; 47 48 struct _GtkMenuShell 49 { 50 GtkContainer container; 51 52 /*< private >*/ 53 GtkMenuShellPrivate *priv; 54 }; 55 56 struct _GtkMenuShellClass 57 { 58 GtkContainerClass parent_class; 59 60 guint submenu_placement : 1; 61 62 void (*deactivate) (GtkMenuShell *menu_shell); 63 void (*selection_done) (GtkMenuShell *menu_shell); 64 65 void (*move_current) (GtkMenuShell *menu_shell, 66 GtkMenuDirectionType direction); 67 void (*activate_current) (GtkMenuShell *menu_shell, 68 gboolean force_hide); 69 void (*cancel) (GtkMenuShell *menu_shell); 70 void (*select_item) (GtkMenuShell *menu_shell, 71 GtkWidget *menu_item); 72 void (*insert) (GtkMenuShell *menu_shell, 73 GtkWidget *child, 74 gint position); 75 gint (*get_popup_delay) (GtkMenuShell *menu_shell); 76 gboolean (*move_selected) (GtkMenuShell *menu_shell, 77 gint distance); 78 79 /* Padding for future expansion */ 80 void (*_gtk_reserved1) (void); 81 void (*_gtk_reserved2) (void); 82 void (*_gtk_reserved3) (void); 83 void (*_gtk_reserved4) (void); 84 }; 85 86 87 GDK_AVAILABLE_IN_ALL 88 GType gtk_menu_shell_get_type (void) G_GNUC_CONST; 89 90 GDK_AVAILABLE_IN_ALL 91 void gtk_menu_shell_append (GtkMenuShell *menu_shell, 92 GtkWidget *child); 93 GDK_AVAILABLE_IN_ALL 94 void gtk_menu_shell_prepend (GtkMenuShell *menu_shell, 95 GtkWidget *child); 96 GDK_AVAILABLE_IN_ALL 97 void gtk_menu_shell_insert (GtkMenuShell *menu_shell, 98 GtkWidget *child, 99 gint position); 100 GDK_AVAILABLE_IN_ALL 101 void gtk_menu_shell_deactivate (GtkMenuShell *menu_shell); 102 GDK_AVAILABLE_IN_ALL 103 void gtk_menu_shell_select_item (GtkMenuShell *menu_shell, 104 GtkWidget *menu_item); 105 GDK_AVAILABLE_IN_ALL 106 void gtk_menu_shell_deselect (GtkMenuShell *menu_shell); 107 GDK_AVAILABLE_IN_ALL 108 void gtk_menu_shell_activate_item (GtkMenuShell *menu_shell, 109 GtkWidget *menu_item, 110 gboolean force_deactivate); 111 GDK_AVAILABLE_IN_ALL 112 void gtk_menu_shell_select_first (GtkMenuShell *menu_shell, 113 gboolean search_sensitive); 114 GDK_AVAILABLE_IN_ALL 115 void gtk_menu_shell_cancel (GtkMenuShell *menu_shell); 116 GDK_AVAILABLE_IN_ALL 117 gboolean gtk_menu_shell_get_take_focus (GtkMenuShell *menu_shell); 118 GDK_AVAILABLE_IN_ALL 119 void gtk_menu_shell_set_take_focus (GtkMenuShell *menu_shell, 120 gboolean take_focus); 121 122 GDK_AVAILABLE_IN_ALL 123 GtkWidget *gtk_menu_shell_get_selected_item (GtkMenuShell *menu_shell); 124 GDK_AVAILABLE_IN_ALL 125 GtkWidget *gtk_menu_shell_get_parent_shell (GtkMenuShell *menu_shell); 126 127 GDK_AVAILABLE_IN_3_6 128 void gtk_menu_shell_bind_model (GtkMenuShell *menu_shell, 129 GMenuModel *model, 130 const gchar *action_namespace, 131 gboolean with_separators); 132 133 G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkMenuShell, g_object_unref) 134 135 G_END_DECLS 136 137 #endif /* __GTK_MENU_SHELL_H__ */ 138