X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gtk%2Fgtkactiongroup.h;h=94a378244b679ac976cf0c2c5612c3710b3169ee;hb=4fe1effb36836ce16068e4c0e1ef5a65b810fa88;hp=1489006d858ab97213b72b345be68ebdce6a2fd5;hpb=32c6a944cfc5db7f59ee6232a8d76c04a27e908e;p=~andy%2Fgtk diff --git a/gtk/gtkactiongroup.h b/gtk/gtkactiongroup.h index 1489006d8..94a378244 100644 --- a/gtk/gtkactiongroup.h +++ b/gtk/gtkactiongroup.h @@ -14,23 +14,29 @@ * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public - * License along with the Gnome Library; see the file COPYING.LIB. If not, - * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library. If not, see . */ -/* +/* * Author: James Henstridge * * Modified by the GTK+ Team and others 2003. 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/. + * GTK+ at ftp://ftp.gtk.org/pub/gtk/. */ + #ifndef __GTK_ACTION_GROUP_H__ #define __GTK_ACTION_GROUP_H__ +#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) +#error "Only can be included directly." +#endif + #include +#include + +G_BEGIN_DECLS #define GTK_TYPE_ACTION_GROUP (gtk_action_group_get_type ()) #define GTK_ACTION_GROUP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_ACTION_GROUP, GtkActionGroup)) @@ -42,15 +48,16 @@ typedef struct _GtkActionGroup GtkActionGroup; typedef struct _GtkActionGroupPrivate GtkActionGroupPrivate; typedef struct _GtkActionGroupClass GtkActionGroupClass; -typedef struct _GtkActionGroupEntry GtkActionGroupEntry; +typedef struct _GtkActionEntry GtkActionEntry; +typedef struct _GtkToggleActionEntry GtkToggleActionEntry; +typedef struct _GtkRadioActionEntry GtkRadioActionEntry; struct _GtkActionGroup { GObject parent; /*< private >*/ - - GtkActionGroupPrivate *private_data; + GtkActionGroupPrivate *priv; }; struct _GtkActionGroupClass @@ -58,7 +65,7 @@ struct _GtkActionGroupClass GObjectClass parent_class; GtkAction *(* get_action) (GtkActionGroup *action_group, - const gchar *action_name); + const gchar *action_name); /* Padding for future expansion */ void (*_gtk_reserved1) (void); @@ -67,43 +74,165 @@ struct _GtkActionGroupClass void (*_gtk_reserved4) (void); }; -typedef enum +/** + * GtkActionEntry: + * @name: The name of the action. + * @stock_id: The stock id for the action, or the name of an icon from the + * icon theme. + * @label: The label for the action. This field should typically be marked + * for translation, see gtk_action_group_set_translation_domain(). If + * @label is %NULL, the label of the stock item with id @stock_id is used. + * @accelerator: The accelerator for the action, in the format understood by + * gtk_accelerator_parse(). + * @tooltip: The tooltip for the action. This field should typically be + * marked for translation, see gtk_action_group_set_translation_domain(). + * @callback: The function to call when the action is activated. + * + * #GtkActionEntry structs are used with gtk_action_group_add_actions() to + * construct actions. + */ +struct _GtkActionEntry { - GTK_ACTION_NORMAL, - GTK_ACTION_TOGGLE, - GTK_ACTION_RADIO -} GtkActionGroupEntryType; + const gchar *name; + const gchar *stock_id; + const gchar *label; + const gchar *accelerator; + const gchar *tooltip; + GCallback callback; +}; -struct _GtkActionGroupEntry +/** + * GtkToggleActionEntry: + * @name: The name of the action. + * @stock_id: The stock id for the action, or the name of an icon from the + * icon theme. + * @label: The label for the action. This field should typically be marked + * for translation, see gtk_action_group_set_translation_domain(). + * @accelerator: The accelerator for the action, in the format understood by + * gtk_accelerator_parse(). + * @tooltip: The tooltip for the action. This field should typically be + * marked for translation, see gtk_action_group_set_translation_domain(). + * @callback: The function to call when the action is activated. + * @is_active: The initial state of the toggle action. + * + * #GtkToggleActionEntry structs are used with + * gtk_action_group_add_toggle_actions() to construct toggle actions. + */ +struct _GtkToggleActionEntry { - gchar *name; - gchar *label; - gchar *stock_id; - gchar *accelerator; - gchar *tooltip; - - GCallback callback; - gpointer user_data; - - GtkActionGroupEntryType entry_type; - gchar *extra_data; + const gchar *name; + const gchar *stock_id; + const gchar *label; + const gchar *accelerator; + const gchar *tooltip; + GCallback callback; + gboolean is_active; }; -GType gtk_action_group_get_type (void); - -GtkActionGroup *gtk_action_group_new (const gchar *name); - -const gchar *gtk_action_group_get_name (GtkActionGroup *action_group); -GtkAction *gtk_action_group_get_action (GtkActionGroup *action_group, - const gchar *action_name); -GList *gtk_action_group_list_actions (GtkActionGroup *action_group); -void gtk_action_group_add_action (GtkActionGroup *action_group, - GtkAction *action); -void gtk_action_group_remove_action (GtkActionGroup *action_group, - GtkAction *action); +/** + * GtkRadioActionEntry: + * @name: The name of the action. + * @stock_id: The stock id for the action, or the name of an icon from the + * icon theme. + * @label: The label for the action. This field should typically be marked + * for translation, see gtk_action_group_set_translation_domain(). + * @accelerator: The accelerator for the action, in the format understood by + * gtk_accelerator_parse(). + * @tooltip: The tooltip for the action. This field should typically be + * marked for translation, see gtk_action_group_set_translation_domain(). + * @value: The value to set on the radio action. See + * gtk_radio_action_get_current_value(). + * + * #GtkRadioActionEntry structs are used with + * gtk_action_group_add_radio_actions() to construct groups of radio actions. + */ +struct _GtkRadioActionEntry +{ + const gchar *name; + const gchar *stock_id; + const gchar *label; + const gchar *accelerator; + const gchar *tooltip; + gint value; +}; -void gtk_action_group_add_actions (GtkActionGroup *action_group, - GtkActionGroupEntry *entries, - guint n_entries); +GType gtk_action_group_get_type (void) G_GNUC_CONST; +GtkActionGroup *gtk_action_group_new (const gchar *name); +const gchar *gtk_action_group_get_name (GtkActionGroup *action_group); +gboolean gtk_action_group_get_sensitive (GtkActionGroup *action_group); +void gtk_action_group_set_sensitive (GtkActionGroup *action_group, + gboolean sensitive); +gboolean gtk_action_group_get_visible (GtkActionGroup *action_group); +void gtk_action_group_set_visible (GtkActionGroup *action_group, + gboolean visible); +GDK_AVAILABLE_IN_3_6 +GtkAccelGroup *gtk_action_group_get_accel_group (GtkActionGroup *action_group); +GDK_AVAILABLE_IN_3_6 +void gtk_action_group_set_accel_group (GtkActionGroup *action_group, + GtkAccelGroup *accel_group); + +GtkAction *gtk_action_group_get_action (GtkActionGroup *action_group, + const gchar *action_name); +GList *gtk_action_group_list_actions (GtkActionGroup *action_group); +void gtk_action_group_add_action (GtkActionGroup *action_group, + GtkAction *action); +void gtk_action_group_add_action_with_accel (GtkActionGroup *action_group, + GtkAction *action, + const gchar *accelerator); +void gtk_action_group_remove_action (GtkActionGroup *action_group, + GtkAction *action); +void gtk_action_group_add_actions (GtkActionGroup *action_group, + const GtkActionEntry *entries, + guint n_entries, + gpointer user_data); +void gtk_action_group_add_toggle_actions (GtkActionGroup *action_group, + const GtkToggleActionEntry *entries, + guint n_entries, + gpointer user_data); +void gtk_action_group_add_radio_actions (GtkActionGroup *action_group, + const GtkRadioActionEntry *entries, + guint n_entries, + gint value, + GCallback on_change, + gpointer user_data); +void gtk_action_group_add_actions_full (GtkActionGroup *action_group, + const GtkActionEntry *entries, + guint n_entries, + gpointer user_data, + GDestroyNotify destroy); +void gtk_action_group_add_toggle_actions_full (GtkActionGroup *action_group, + const GtkToggleActionEntry *entries, + guint n_entries, + gpointer user_data, + GDestroyNotify destroy); +void gtk_action_group_add_radio_actions_full (GtkActionGroup *action_group, + const GtkRadioActionEntry *entries, + guint n_entries, + gint value, + GCallback on_change, + gpointer user_data, + GDestroyNotify destroy); +void gtk_action_group_set_translate_func (GtkActionGroup *action_group, + GtkTranslateFunc func, + gpointer data, + GDestroyNotify notify); +void gtk_action_group_set_translation_domain (GtkActionGroup *action_group, + const gchar *domain); +const gchar * gtk_action_group_translate_string (GtkActionGroup *action_group, + const gchar *string); + +/* Protected for use by GtkAction */ +void _gtk_action_group_emit_connect_proxy (GtkActionGroup *action_group, + GtkAction *action, + GtkWidget *proxy); +void _gtk_action_group_emit_disconnect_proxy (GtkActionGroup *action_group, + GtkAction *action, + GtkWidget *proxy); +void _gtk_action_group_emit_pre_activate (GtkActionGroup *action_group, + GtkAction *action); +void _gtk_action_group_emit_post_activate (GtkActionGroup *action_group, + GtkAction *action); + +G_END_DECLS #endif /* __GTK_ACTION_GROUP_H__ */