1 /* 2 * GTK - The GIMP Toolkit 3 * Copyright (C) 1998, 1999 Red Hat, Inc. 4 * All rights reserved. 5 * 6 * This Library is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Library General Public License as 8 * published by the Free Software Foundation; either version 2 of the 9 * License, or (at your option) any later version. 10 * 11 * This Library is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Library General Public License for more details. 15 * 16 * You should have received a copy of the GNU Library General Public 17 * License along with this library. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 20 /* 21 * Author: James Henstridge <james@daa.com.au> 22 * 23 * Modified by the GTK+ Team and others 2003. See the AUTHORS 24 * file for a list of people on the GTK+ Team. See the ChangeLog 25 * files for a list of changes. These files are distributed with 26 * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 27 */ 28 29 #ifndef __GTK_ACTION_GROUP_H__ 30 #define __GTK_ACTION_GROUP_H__ 31 32 #if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) 33 #error "Only <gtk/gtk.h> can be included directly." 34 #endif 35 36 #include <gtk/deprecated/gtkaction.h> 37 #include <gtk/deprecated/gtkstock.h> 38 39 G_BEGIN_DECLS 40 41 #define GTK_TYPE_ACTION_GROUP (gtk_action_group_get_type ()) 42 #define GTK_ACTION_GROUP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_ACTION_GROUP, GtkActionGroup)) 43 #define GTK_ACTION_GROUP_CLASS(vtable) (G_TYPE_CHECK_CLASS_CAST ((vtable), GTK_TYPE_ACTION_GROUP, GtkActionGroupClass)) 44 #define GTK_IS_ACTION_GROUP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_ACTION_GROUP)) 45 #define GTK_IS_ACTION_GROUP_CLASS(vtable) (G_TYPE_CHECK_CLASS_TYPE ((vtable), GTK_TYPE_ACTION_GROUP)) 46 #define GTK_ACTION_GROUP_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), GTK_TYPE_ACTION_GROUP, GtkActionGroupClass)) 47 48 typedef struct _GtkActionGroup GtkActionGroup; 49 typedef struct _GtkActionGroupPrivate GtkActionGroupPrivate; 50 typedef struct _GtkActionGroupClass GtkActionGroupClass; 51 typedef struct _GtkActionEntry GtkActionEntry; 52 typedef struct _GtkToggleActionEntry GtkToggleActionEntry; 53 typedef struct _GtkRadioActionEntry GtkRadioActionEntry; 54 55 struct _GtkActionGroup 56 { 57 GObject parent; 58 59 /*< private >*/ 60 GtkActionGroupPrivate *priv; 61 }; 62 63 /** 64 * GtkActionGroupClass: 65 * @parent_class: The parent class. 66 * @get_action: Looks up an action in the action group by name. 67 */ 68 struct _GtkActionGroupClass 69 { 70 GObjectClass parent_class; 71 72 GtkAction *(* get_action) (GtkActionGroup *action_group, 73 const gchar *action_name); 74 75 /*< private >*/ 76 77 /* Padding for future expansion */ 78 void (*_gtk_reserved1) (void); 79 void (*_gtk_reserved2) (void); 80 void (*_gtk_reserved3) (void); 81 void (*_gtk_reserved4) (void); 82 }; 83 84 /** 85 * GtkActionEntry: 86 * @name: The name of the action. 87 * @stock_id: The stock id for the action, or the name of an icon from the 88 * icon theme. 89 * @label: The label for the action. This field should typically be marked 90 * for translation, see gtk_action_group_set_translation_domain(). If 91 * @label is %NULL, the label of the stock item with id @stock_id is used. 92 * @accelerator: The accelerator for the action, in the format understood by 93 * gtk_accelerator_parse(). 94 * @tooltip: The tooltip for the action. This field should typically be 95 * marked for translation, see gtk_action_group_set_translation_domain(). 96 * @callback: The function to call when the action is activated. 97 * 98 * #GtkActionEntry structs are used with gtk_action_group_add_actions() to 99 * construct actions. 100 * 101 * Deprecated: 3.10 102 */ 103 struct _GtkActionEntry 104 { 105 const gchar *name; 106 const gchar *stock_id; 107 const gchar *label; 108 const gchar *accelerator; 109 const gchar *tooltip; 110 GCallback callback; 111 }; 112 113 /** 114 * GtkToggleActionEntry: 115 * @name: The name of the action. 116 * @stock_id: The stock id for the action, or the name of an icon from the 117 * icon theme. 118 * @label: The label for the action. This field should typically be marked 119 * for translation, see gtk_action_group_set_translation_domain(). 120 * @accelerator: The accelerator for the action, in the format understood by 121 * gtk_accelerator_parse(). 122 * @tooltip: The tooltip for the action. This field should typically be 123 * marked for translation, see gtk_action_group_set_translation_domain(). 124 * @callback: The function to call when the action is activated. 125 * @is_active: The initial state of the toggle action. 126 * 127 * #GtkToggleActionEntry structs are used with 128 * gtk_action_group_add_toggle_actions() to construct toggle actions. 129 * 130 * Deprecated: 3.10 131 */ 132 struct _GtkToggleActionEntry 133 { 134 const gchar *name; 135 const gchar *stock_id; 136 const gchar *label; 137 const gchar *accelerator; 138 const gchar *tooltip; 139 GCallback callback; 140 gboolean is_active; 141 }; 142 143 /** 144 * GtkRadioActionEntry: 145 * @name: The name of the action. 146 * @stock_id: The stock id for the action, or the name of an icon from the 147 * icon theme. 148 * @label: The label for the action. This field should typically be marked 149 * for translation, see gtk_action_group_set_translation_domain(). 150 * @accelerator: The accelerator for the action, in the format understood by 151 * gtk_accelerator_parse(). 152 * @tooltip: The tooltip for the action. This field should typically be 153 * marked for translation, see gtk_action_group_set_translation_domain(). 154 * @value: The value to set on the radio action. See 155 * gtk_radio_action_get_current_value(). 156 * 157 * #GtkRadioActionEntry structs are used with 158 * gtk_action_group_add_radio_actions() to construct groups of radio actions. 159 * 160 * Deprecated: 3.10 161 */ 162 struct _GtkRadioActionEntry 163 { 164 const gchar *name; 165 const gchar *stock_id; 166 const gchar *label; 167 const gchar *accelerator; 168 const gchar *tooltip; 169 gint value; 170 }; 171 172 GDK_DEPRECATED_IN_3_10 173 GType gtk_action_group_get_type (void) G_GNUC_CONST; 174 GDK_DEPRECATED_IN_3_10 175 GtkActionGroup *gtk_action_group_new (const gchar *name); 176 GDK_DEPRECATED_IN_3_10 177 const gchar *gtk_action_group_get_name (GtkActionGroup *action_group); 178 GDK_DEPRECATED_IN_3_10 179 gboolean gtk_action_group_get_sensitive (GtkActionGroup *action_group); 180 GDK_DEPRECATED_IN_3_10 181 void gtk_action_group_set_sensitive (GtkActionGroup *action_group, 182 gboolean sensitive); 183 GDK_DEPRECATED_IN_3_10 184 gboolean gtk_action_group_get_visible (GtkActionGroup *action_group); 185 GDK_DEPRECATED_IN_3_10 186 void gtk_action_group_set_visible (GtkActionGroup *action_group, 187 gboolean visible); 188 GDK_DEPRECATED_IN_3_10 189 GtkAccelGroup *gtk_action_group_get_accel_group (GtkActionGroup *action_group); 190 GDK_DEPRECATED_IN_3_10 191 void gtk_action_group_set_accel_group (GtkActionGroup *action_group, 192 GtkAccelGroup *accel_group); 193 194 GDK_DEPRECATED_IN_3_10 195 GtkAction *gtk_action_group_get_action (GtkActionGroup *action_group, 196 const gchar *action_name); 197 GDK_DEPRECATED_IN_3_10 198 GList *gtk_action_group_list_actions (GtkActionGroup *action_group); 199 GDK_DEPRECATED_IN_3_10 200 void gtk_action_group_add_action (GtkActionGroup *action_group, 201 GtkAction *action); 202 GDK_DEPRECATED_IN_3_10 203 void gtk_action_group_add_action_with_accel (GtkActionGroup *action_group, 204 GtkAction *action, 205 const gchar *accelerator); 206 GDK_DEPRECATED_IN_3_10 207 void gtk_action_group_remove_action (GtkActionGroup *action_group, 208 GtkAction *action); 209 GDK_DEPRECATED_IN_3_10 210 void gtk_action_group_add_actions (GtkActionGroup *action_group, 211 const GtkActionEntry *entries, 212 guint n_entries, 213 gpointer user_data); 214 GDK_DEPRECATED_IN_3_10 215 void gtk_action_group_add_toggle_actions (GtkActionGroup *action_group, 216 const GtkToggleActionEntry *entries, 217 guint n_entries, 218 gpointer user_data); 219 GDK_DEPRECATED_IN_3_10 220 void gtk_action_group_add_radio_actions (GtkActionGroup *action_group, 221 const GtkRadioActionEntry *entries, 222 guint n_entries, 223 gint value, 224 GCallback on_change, 225 gpointer user_data); 226 GDK_DEPRECATED_IN_3_10 227 void gtk_action_group_add_actions_full (GtkActionGroup *action_group, 228 const GtkActionEntry *entries, 229 guint n_entries, 230 gpointer user_data, 231 GDestroyNotify destroy); 232 GDK_DEPRECATED_IN_3_10 233 void gtk_action_group_add_toggle_actions_full (GtkActionGroup *action_group, 234 const GtkToggleActionEntry *entries, 235 guint n_entries, 236 gpointer user_data, 237 GDestroyNotify destroy); 238 GDK_DEPRECATED_IN_3_10 239 void gtk_action_group_add_radio_actions_full (GtkActionGroup *action_group, 240 const GtkRadioActionEntry *entries, 241 guint n_entries, 242 gint value, 243 GCallback on_change, 244 gpointer user_data, 245 GDestroyNotify destroy); 246 GDK_DEPRECATED_IN_3_10 247 void gtk_action_group_set_translate_func (GtkActionGroup *action_group, 248 GtkTranslateFunc func, 249 gpointer data, 250 GDestroyNotify notify); 251 GDK_DEPRECATED_IN_3_10 252 void gtk_action_group_set_translation_domain (GtkActionGroup *action_group, 253 const gchar *domain); 254 GDK_DEPRECATED_IN_3_10 255 const gchar * gtk_action_group_translate_string (GtkActionGroup *action_group, 256 const gchar *string); 257 258 /* Protected for use by GtkAction */ 259 void _gtk_action_group_emit_connect_proxy (GtkActionGroup *action_group, 260 GtkAction *action, 261 GtkWidget *proxy); 262 void _gtk_action_group_emit_disconnect_proxy (GtkActionGroup *action_group, 263 GtkAction *action, 264 GtkWidget *proxy); 265 void _gtk_action_group_emit_pre_activate (GtkActionGroup *action_group, 266 GtkAction *action); 267 void _gtk_action_group_emit_post_activate (GtkActionGroup *action_group, 268 GtkAction *action); 269 270 G_END_DECLS 271 272 #endif /* __GTK_ACTION_GROUP_H__ */ 273