* 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 <http://www.gnu.org/licenses/>.
*/
-/*
+/*
* Author: James Henstridge <james@daa.com.au>
*
* 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 <gtk/gtk.h> can be included directly."
+#endif
+
#include <gtk/gtkaction.h>
-#include <gtk/gtkitemfactory.h> /* for GtkTranslateFunc */
+#include <gtk/gtkstock.h>
+
+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))
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
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);
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);
-
-void gtk_action_group_add_actions (GtkActionGroup *action_group,
- GtkActionGroupEntry *entries,
- guint n_entries);
-
-void gtk_action_group_set_translate_func (GtkActionGroup *action_group,
- GtkTranslateFunc func,
- gpointer data,
- GtkDestroyNotify notify);
+/**
+ * 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_set_translation_domain (GtkActionGroup *action_group,
- const gchar *domain);
+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__ */