summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog16
-rw-r--r--ChangeLog.pre-2-1016
-rw-r--r--ChangeLog.pre-2-416
-rw-r--r--ChangeLog.pre-2-616
-rw-r--r--ChangeLog.pre-2-816
-rw-r--r--demos/gtk-demo/appwindow.c39
-rw-r--r--docs/reference/ChangeLog4
-rw-r--r--docs/reference/gtk/gtk-sections.txt8
-rw-r--r--gtk/gtkactiongroup.c161
-rw-r--r--gtk/gtkactiongroup.h117
-rw-r--r--tests/testactions.c32
-rw-r--r--tests/testmerge.c15
12 files changed, 359 insertions, 97 deletions
diff --git a/ChangeLog b/ChangeLog
index fcb2731f03..95b37d0b83 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+2003-09-15 Matthias Clasen <maclas@gmx.de>
+
+ * gtk/gtkactiongroup.[hc]: (gtk_action_group_add_radio_actions):
+ (gtk_action_group_add_radio_actions_full): Add value parameter to allow
+ setting the currently selected group member before connecting signals.
+ (GtkToggleActionEntry): Separate struct for constructing toggle actions,
+ including a boolean to initialize the action state before connecting
+ signals.
+ (gtk_action_group_add_toggle_actions):
+ (gtk_action_group_add_toggle_actions_full): New functions to construct
+ toggle actions from an array of GtkToggleActionEntries.
+
+ * demos/gtk-demo/appwindow.c:
+ * tests/testactions.c:
+ * tests/testmerge.c: Adjust to new action group API.
+
Sun Sep 14 16:59:52 2003 Soeren Sandmann <sandmann@daimi.au.dk>
* gtk/gtktoolbar.c (gtk_toolbar_init): Name the arrow
diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10
index fcb2731f03..95b37d0b83 100644
--- a/ChangeLog.pre-2-10
+++ b/ChangeLog.pre-2-10
@@ -1,3 +1,19 @@
+2003-09-15 Matthias Clasen <maclas@gmx.de>
+
+ * gtk/gtkactiongroup.[hc]: (gtk_action_group_add_radio_actions):
+ (gtk_action_group_add_radio_actions_full): Add value parameter to allow
+ setting the currently selected group member before connecting signals.
+ (GtkToggleActionEntry): Separate struct for constructing toggle actions,
+ including a boolean to initialize the action state before connecting
+ signals.
+ (gtk_action_group_add_toggle_actions):
+ (gtk_action_group_add_toggle_actions_full): New functions to construct
+ toggle actions from an array of GtkToggleActionEntries.
+
+ * demos/gtk-demo/appwindow.c:
+ * tests/testactions.c:
+ * tests/testmerge.c: Adjust to new action group API.
+
Sun Sep 14 16:59:52 2003 Soeren Sandmann <sandmann@daimi.au.dk>
* gtk/gtktoolbar.c (gtk_toolbar_init): Name the arrow
diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4
index fcb2731f03..95b37d0b83 100644
--- a/ChangeLog.pre-2-4
+++ b/ChangeLog.pre-2-4
@@ -1,3 +1,19 @@
+2003-09-15 Matthias Clasen <maclas@gmx.de>
+
+ * gtk/gtkactiongroup.[hc]: (gtk_action_group_add_radio_actions):
+ (gtk_action_group_add_radio_actions_full): Add value parameter to allow
+ setting the currently selected group member before connecting signals.
+ (GtkToggleActionEntry): Separate struct for constructing toggle actions,
+ including a boolean to initialize the action state before connecting
+ signals.
+ (gtk_action_group_add_toggle_actions):
+ (gtk_action_group_add_toggle_actions_full): New functions to construct
+ toggle actions from an array of GtkToggleActionEntries.
+
+ * demos/gtk-demo/appwindow.c:
+ * tests/testactions.c:
+ * tests/testmerge.c: Adjust to new action group API.
+
Sun Sep 14 16:59:52 2003 Soeren Sandmann <sandmann@daimi.au.dk>
* gtk/gtktoolbar.c (gtk_toolbar_init): Name the arrow
diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6
index fcb2731f03..95b37d0b83 100644
--- a/ChangeLog.pre-2-6
+++ b/ChangeLog.pre-2-6
@@ -1,3 +1,19 @@
+2003-09-15 Matthias Clasen <maclas@gmx.de>
+
+ * gtk/gtkactiongroup.[hc]: (gtk_action_group_add_radio_actions):
+ (gtk_action_group_add_radio_actions_full): Add value parameter to allow
+ setting the currently selected group member before connecting signals.
+ (GtkToggleActionEntry): Separate struct for constructing toggle actions,
+ including a boolean to initialize the action state before connecting
+ signals.
+ (gtk_action_group_add_toggle_actions):
+ (gtk_action_group_add_toggle_actions_full): New functions to construct
+ toggle actions from an array of GtkToggleActionEntries.
+
+ * demos/gtk-demo/appwindow.c:
+ * tests/testactions.c:
+ * tests/testmerge.c: Adjust to new action group API.
+
Sun Sep 14 16:59:52 2003 Soeren Sandmann <sandmann@daimi.au.dk>
* gtk/gtktoolbar.c (gtk_toolbar_init): Name the arrow
diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8
index fcb2731f03..95b37d0b83 100644
--- a/ChangeLog.pre-2-8
+++ b/ChangeLog.pre-2-8
@@ -1,3 +1,19 @@
+2003-09-15 Matthias Clasen <maclas@gmx.de>
+
+ * gtk/gtkactiongroup.[hc]: (gtk_action_group_add_radio_actions):
+ (gtk_action_group_add_radio_actions_full): Add value parameter to allow
+ setting the currently selected group member before connecting signals.
+ (GtkToggleActionEntry): Separate struct for constructing toggle actions,
+ including a boolean to initialize the action state before connecting
+ signals.
+ (gtk_action_group_add_toggle_actions):
+ (gtk_action_group_add_toggle_actions_full): New functions to construct
+ toggle actions from an array of GtkToggleActionEntries.
+
+ * demos/gtk-demo/appwindow.c:
+ * tests/testactions.c:
+ * tests/testmerge.c: Adjust to new action group API.
+
Sun Sep 14 16:59:52 2003 Soeren Sandmann <sandmann@daimi.au.dk>
* gtk/gtktoolbar.c (gtk_toolbar_init): Name the arrow
diff --git a/demos/gtk-demo/appwindow.c b/demos/gtk-demo/appwindow.c
index 841ba4dd43..4ac1c2c746 100644
--- a/demos/gtk-demo/appwindow.c
+++ b/demos/gtk-demo/appwindow.c
@@ -99,6 +99,16 @@ static GtkActionEntry entries[] = {
};
static guint n_entries = G_N_ELEMENTS (entries);
+
+static GtkToggleActionEntry toggle_entries[] = {
+ { "Bold", GTK_STOCK_BOLD, /* name, stock id */
+ "_Bold", "<control>B", /* label, accelerator */
+ "Bold", /* tooltip */
+ G_CALLBACK (activate_action),
+ TRUE }, /* is_active */
+};
+static guint n_toggle_entries = G_N_ELEMENTS (toggle_entries);
+
enum {
COLOR_RED,
COLOR_GREEN,
@@ -159,6 +169,7 @@ static const gchar *ui_info =
" <menuitem action='Rectangle'/>"
" <menuitem action='Oval'/>"
" </menu>"
+" <menuitem action='Bold'/>"
" </menu>"
" <menu action='HelpMenu'>"
" <menuitem action='About'/>"
@@ -300,7 +311,6 @@ do_appwindow (void)
GtkWidget *bar;
GtkTextBuffer *buffer;
GtkActionGroup *action_group;
- GtkAction *action;
GtkUIManager *merge;
GError *error = NULL;
@@ -325,18 +335,25 @@ do_appwindow (void)
*/
action_group = gtk_action_group_new ("AppWindowActions");
- gtk_action_group_add_actions (action_group, entries, n_entries, NULL);
- gtk_action_group_add_radio_actions (action_group, color_entries, n_color_entries,
- G_CALLBACK (activate_radio_action), NULL);
- gtk_action_group_add_radio_actions (action_group, shape_entries, n_shape_entries,
- G_CALLBACK (activate_radio_action), NULL);
-
- action = gtk_action_group_get_action (action_group, "Red");
- gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), TRUE);
- action = gtk_action_group_get_action (action_group, "Square");
- gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), TRUE);
+ gtk_action_group_add_actions (action_group,
+ entries, n_entries,
+ NULL);
+ gtk_action_group_add_toggle_actions (action_group,
+ toggle_entries, n_toggle_entries,
+ NULL);
+ gtk_action_group_add_radio_actions (action_group,
+ color_entries, n_color_entries,
+ COLOR_RED,
+ G_CALLBACK (activate_radio_action),
+ NULL);
+ gtk_action_group_add_radio_actions (action_group,
+ shape_entries, n_shape_entries,
+ SHAPE_SQUARE,
+ G_CALLBACK (activate_radio_action),
+ NULL);
merge = gtk_ui_manager_new ();
+ g_object_set_data_full (G_OBJECT (window), "ui-manager", merge, g_object_unref);
gtk_ui_manager_insert_action_group (merge, action_group, 0);
gtk_window_add_accel_group (GTK_WINDOW (window),
gtk_ui_manager_get_accel_group (merge));
diff --git a/docs/reference/ChangeLog b/docs/reference/ChangeLog
index 0ecf9cb9f1..bf0bc1a7ed 100644
--- a/docs/reference/ChangeLog
+++ b/docs/reference/ChangeLog
@@ -1,3 +1,7 @@
+2003-09-15 Matthias Clasen <maclas@gmx.de>
+
+ * gtk/gtk-sections.txt: Add gtk_action_group_add_toggle_actions[_full].
+
2003-09-12 Matthias Clasen <maclas@gmx.de>
* gdk/tmpl/drawing.sgml: Add deprecation note for gdk_draw_pixmap().
diff --git a/docs/reference/gtk/gtk-sections.txt b/docs/reference/gtk/gtk-sections.txt
index 851d80d037..5c9cf15a3f 100644
--- a/docs/reference/gtk/gtk-sections.txt
+++ b/docs/reference/gtk/gtk-sections.txt
@@ -130,16 +130,19 @@ GtkActionPrivate
<FILE>gtkactiongroup</FILE>
<TITLE>GtkActionGroup</TITLE>
GtkActionGroup
-GtkActionEntry
-GtkRadioActionEntry
gtk_action_group_new
gtk_action_group_get_name
gtk_action_group_get_action
gtk_action_group_list_actions
gtk_action_group_add_action
gtk_action_group_remove_action
+GtkActionEntry
gtk_action_group_add_actions
gtk_action_group_add_actions_full
+GtkToggleActionEntry
+gtk_action_group_add_toggle_actions
+gtk_action_group_add_toggle_actions_full
+GtkRadioActionEntry
gtk_action_group_add_radio_actions
gtk_action_group_add_radio_actions_full
gtk_action_group_set_translate_func
@@ -1734,6 +1737,7 @@ gtk_ui_manager_get_action
gtk_ui_manager_add_ui_from_string
gtk_ui_manager_add_ui_from_file
gtk_ui_manager_new_merge_id
+GtkUIManagerItemType
gtk_ui_manager_add_ui
gtk_ui_manager_remove_ui
gtk_ui_manager_get_ui
diff --git a/gtk/gtkactiongroup.c b/gtk/gtkactiongroup.c
index 8e35839ecd..f09e2e4ae9 100644
--- a/gtk/gtkactiongroup.c
+++ b/gtk/gtkactiongroup.c
@@ -48,8 +48,12 @@ struct _GtkActionGroupPrivate
GtkDestroyNotify translate_notify;
};
-static void gtk_action_group_init (GtkActionGroup *self);
-static void gtk_action_group_class_init (GtkActionGroupClass *class);
+static void gtk_action_group_init (GtkActionGroup *self);
+static void gtk_action_group_class_init (GtkActionGroupClass *class);
+static void gtk_action_group_finalize (GObject *object);
+static GtkAction *gtk_action_group_real_get_action (GtkActionGroup *self,
+ const gchar *name);
+
GType
gtk_action_group_get_type (void)
@@ -79,9 +83,6 @@ gtk_action_group_get_type (void)
}
static GObjectClass *parent_class = NULL;
-static void gtk_action_group_finalize (GObject *object);
-static GtkAction *gtk_action_group_real_get_action (GtkActionGroup *self,
- const gchar *name);
static void
gtk_action_group_class_init (GtkActionGroupClass *klass)
@@ -284,8 +285,8 @@ gtk_action_group_list_actions (GtkActionGroup *action_group)
* @n_entries: the number of entries
* @user_data: data to pass to the action callbacks
*
- * This is a convenience function to create a number of actions and add them to the
- * action group.
+ * This is a convenience function to create a number of actions and add them
+ * to the action group.
*
* The "activate" signals of the actions are connected to the callbacks and
* their accel paths are set to
@@ -337,15 +338,118 @@ gtk_action_group_add_actions_full (GtkActionGroup *action_group,
for (i = 0; i < n_entries; i++)
{
GtkAction *action;
- GType action_type;
gchar *accel_path;
gchar *label;
gchar *tooltip;
- if (entries[i].is_toggle)
- action_type = GTK_TYPE_TOGGLE_ACTION;
+ if (translate_func)
+ {
+ label = translate_func (entries[i].label, translate_data);
+ tooltip = translate_func (entries[i].tooltip, translate_data);
+ }
else
- action_type = GTK_TYPE_ACTION;
+ {
+ label = entries[i].label;
+ tooltip = entries[i].tooltip;
+ }
+
+ action = g_object_new (GTK_TYPE_ACTION,
+ "name", entries[i].name,
+ "label", label,
+ "tooltip", tooltip,
+ "stock_id", entries[i].stock_id,
+ NULL);
+
+ if (entries[i].callback)
+ g_signal_connect_data (action, "activate",
+ entries[i].callback,
+ user_data, (GClosureNotify)destroy, 0);
+
+ /* set the accel path for the menu item */
+ accel_path = g_strconcat ("<Actions>/", action_group->private_data->name, "/",
+ entries[i].name, NULL);
+ if (entries[i].accelerator)
+ {
+ guint accel_key = 0;
+ GdkModifierType accel_mods;
+
+ gtk_accelerator_parse (entries[i].accelerator, &accel_key,
+ &accel_mods);
+ if (accel_key)
+ gtk_accel_map_add_entry (accel_path, accel_key, accel_mods);
+ }
+
+ gtk_action_set_accel_path (action, accel_path);
+ g_free (accel_path);
+
+ gtk_action_group_add_action (action_group, action);
+ g_object_unref (action);
+ }
+}
+
+/**
+ * gtk_action_group_add_toggle_actions:
+ * @action_group: the action group
+ * @entries: an array of toggle action descriptions
+ * @n_entries: the number of entries
+ * @user_data: data to pass to the action callbacks
+ *
+ * This is a convenience function to create a number of toggle actions and add them
+ * to the action group.
+ *
+ * The "activate" signals of the actions are connected to the callbacks and
+ * their accel paths are set to
+ * <literal>&lt;Actions&gt;/<replaceable>group-name</replaceable>/<replaceable>action-name</replaceable></literal>.
+ *
+ * Since: 2.4
+ */
+void
+gtk_action_group_add_toggle_actions (GtkActionGroup *action_group,
+ GtkToggleActionEntry *entries,
+ guint n_entries,
+ gpointer user_data)
+{
+ gtk_action_group_add_toggle_actions_full (action_group,
+ entries, n_entries,
+ user_data, NULL);
+}
+
+
+/**
+ * gtk_action_group_add_toggle_actions_full:
+ * @action_group: the action group
+ * @entries: an array of toggle action descriptions
+ * @n_entries: the number of entries
+ * @user_data: data to pass to the action callbacks
+ * @destroy: destroy notification callback for @user_data
+ *
+ * This variant of gtk_action_group_add_toggle_actions() adds a
+ * #GDestroyNotify callback for @user_data.
+ *
+ * Since: 2.4
+ */
+void
+gtk_action_group_add_toggle_actions_full (GtkActionGroup *action_group,
+ GtkToggleActionEntry *entries,
+ guint n_entries,
+ gpointer user_data,
+ GDestroyNotify destroy)
+{
+ guint i;
+ GtkTranslateFunc translate_func;
+ gpointer translate_data;
+
+ g_return_if_fail (GTK_IS_ACTION_GROUP (action_group));
+
+ translate_func = action_group->private_data->translate_func;
+ translate_data = action_group->private_data->translate_data;
+
+ for (i = 0; i < n_entries; i++)
+ {
+ GtkAction *action;
+ gchar *accel_path;
+ gchar *label;
+ gchar *tooltip;
if (translate_func)
{
@@ -358,13 +462,16 @@ gtk_action_group_add_actions_full (GtkActionGroup *action_group,
tooltip = entries[i].tooltip;
}
- action = g_object_new (action_type,
+ action = g_object_new (GTK_TYPE_TOGGLE_ACTION,
"name", entries[i].name,
"label", label,
"tooltip", tooltip,
"stock_id", entries[i].stock_id,
NULL);
+ gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action),
+ entries[i].is_active);
+
if (entries[i].callback)
g_signal_connect_data (action, "activate",
entries[i].callback,
@@ -397,14 +504,16 @@ gtk_action_group_add_actions_full (GtkActionGroup *action_group,
* @action_group: the action group
* @entries: an array of radio action descriptions
* @n_entries: the number of entries
+ * @value: the value of the action to activate initially, or -1 if
+ * no action should be activated
* @on_change: the callback to connect to the changed signal
* @user_data: data to pass to the action callbacks
*
* This is a convenience routine to create a group of radio actions and
* add them to the action group.
*
- * The"changed" signal of the first radio action is connected to the @on_change
- * callback and the accel paths of the actions are set to
+ * The "changed" signal of the first radio action is connected to the
+ * @on_change callback and the accel paths of the actions are set to
* <literal>&lt;Actions&gt;/<replaceable>group-name</replaceable>/<replaceable>action-name</replaceable></literal>.
*
* Since: 2.4
@@ -413,11 +522,13 @@ void
gtk_action_group_add_radio_actions (GtkActionGroup *action_group,
GtkRadioActionEntry *entries,
guint n_entries,
+ gint value,
GCallback on_change,
gpointer user_data)
{
gtk_action_group_add_radio_actions_full (action_group,
entries, n_entries,
+ value,
on_change, user_data, NULL);
}
@@ -426,6 +537,8 @@ gtk_action_group_add_radio_actions (GtkActionGroup *action_group,
* @action_group: the action group
* @entries: an array of radio action descriptions
* @n_entries: the number of entries
+ * @value: the value of the action to activate initially, or -1 if
+ * no action should be activated
* @on_change: the callback to connect to the changed signal
* @user_data: data to pass to the action callbacks
* @destroy: destroy notification callback for @user_data
@@ -439,6 +552,7 @@ void
gtk_action_group_add_radio_actions_full (GtkActionGroup *action_group,
GtkRadioActionEntry *entries,
guint n_entries,
+ gint value,
GCallback on_change,
gpointer user_data,
GDestroyNotify destroy)
@@ -447,6 +561,7 @@ gtk_action_group_add_radio_actions_full (GtkActionGroup *action_group,
GtkTranslateFunc translate_func;
gpointer translate_data;
GSList *group = NULL;
+ GtkAction *first_action;
g_return_if_fail (GTK_IS_ACTION_GROUP (action_group));
@@ -478,14 +593,13 @@ gtk_action_group_add_radio_actions_full (GtkActionGroup *action_group,
"stock_id", entries[i].stock_id,
"value", entries[i].value,
NULL);
-
+
if (i == 0)
- {
- if (on_change)
- g_signal_connect_data (action, "changed",
- on_change, user_data,
- (GClosureNotify)destroy, 0);
- }
+ first_action = action;
+
+ if (value == entries[i].value)
+ gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), TRUE);
+
gtk_radio_action_set_group (GTK_RADIO_ACTION (action), group);
group = gtk_radio_action_get_group (GTK_RADIO_ACTION (action));
@@ -509,6 +623,11 @@ gtk_action_group_add_radio_actions_full (GtkActionGroup *action_group,
gtk_action_group_add_action (action_group, action);
g_object_unref (action);
}
+
+ if (on_change)
+ g_signal_connect_data (first_action, "changed",
+ on_change, user_data,
+ (GClosureNotify)destroy, 0);
}
/**
diff --git a/gtk/gtkactiongroup.h b/gtk/gtkactiongroup.h
index f3a01b5375..22d99f48dc 100644
--- a/gtk/gtkactiongroup.h
+++ b/gtk/gtkactiongroup.h
@@ -44,6 +44,7 @@ typedef struct _GtkActionGroup GtkActionGroup;
typedef struct _GtkActionGroupPrivate GtkActionGroupPrivate;
typedef struct _GtkActionGroupClass GtkActionGroupClass;
typedef struct _GtkActionEntry GtkActionEntry;
+typedef struct _GtkToggleActionEntry GtkToggleActionEntry;
typedef struct _GtkRadioActionEntry GtkRadioActionEntry;
struct _GtkActionGroup
@@ -71,15 +72,23 @@ struct _GtkActionGroupClass
struct _GtkActionEntry
{
- gchar *name;
- gchar *stock_id;
- gchar *label;
- gchar *accelerator;
- gchar *tooltip;
-
- GCallback callback;
+ gchar *name;
+ gchar *stock_id;
+ gchar *label;
+ gchar *accelerator;
+ gchar *tooltip;
+ GCallback callback;
+};
- gboolean is_toggle;
+struct _GtkToggleActionEntry
+{
+ gchar *name;
+ gchar *stock_id;
+ gchar *label;
+ gchar *accelerator;
+ gchar *tooltip;
+ GCallback callback;
+ gboolean is_active;
};
struct _GtkRadioActionEntry
@@ -89,50 +98,56 @@ struct _GtkRadioActionEntry
gchar *label;
gchar *accelerator;
gchar *tooltip;
-
- gint value;
+ gint value;
};
-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,
- GtkActionEntry *entries,
- guint n_entries,
- gpointer user_data);
-void gtk_action_group_add_radio_actions (GtkActionGroup *action_group,
- GtkRadioActionEntry *entries,
- guint n_entries,
- GCallback on_change,
- gpointer user_data);
-void gtk_action_group_add_actions_full (GtkActionGroup *action_group,
- GtkActionEntry *entries,
- guint n_entries,
- gpointer user_data,
- GDestroyNotify destroy);
-void gtk_action_group_add_radio_actions_full (GtkActionGroup *action_group,
- GtkRadioActionEntry *entries,
- guint n_entries,
- GCallback on_change,
- gpointer user_data,
- GDestroyNotify destroy);
-
-void gtk_action_group_set_translate_func (GtkActionGroup *action_group,
- GtkTranslateFunc func,
- gpointer data,
- GtkDestroyNotify notify);
-
-void gtk_action_group_set_translation_domain (GtkActionGroup *action_group,
- const gchar *domain);
+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,
+ GtkActionEntry *entries,
+ guint n_entries,
+ gpointer user_data);
+void gtk_action_group_add_toggle_actions (GtkActionGroup *action_group,
+ GtkToggleActionEntry *entries,
+ guint n_entries,
+ gpointer user_data);
+void gtk_action_group_add_radio_actions (GtkActionGroup *action_group,
+ GtkRadioActionEntry *entries,
+ guint n_entries,
+ gint value,
+ GCallback on_change,
+ gpointer user_data);
+void gtk_action_group_add_actions_full (GtkActionGroup *action_group,
+ GtkActionEntry *entries,
+ guint n_entries,
+ gpointer user_data,
+ GDestroyNotify destroy);
+void gtk_action_group_add_toggle_actions_full (GtkActionGroup *action_group,
+ GtkToggleActionEntry *entries,
+ guint n_entries,
+ gpointer user_data,
+ GDestroyNotify destroy);
+void gtk_action_group_add_radio_actions_full (GtkActionGroup *action_group,
+ 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,
+ GtkDestroyNotify notify);
+void gtk_action_group_set_translation_domain (GtkActionGroup *action_group,
+ const gchar *domain);
+
#endif /* __GTK_ACTION_GROUP_H__ */
diff --git a/tests/testactions.c b/tests/testactions.c
index cae4f0ef91..9c3939b9ae 100644
--- a/tests/testactions.c
+++ b/tests/testactions.c
@@ -100,12 +100,8 @@ static GtkActionEntry entries[] = {
"Copy the selected text to the clipboard", G_CALLBACK (activate_action) },
{ "paste", GTK_STOCK_PASTE, "_Paste", "<control>V",
"Paste the text from the clipboard", G_CALLBACK (activate_action) },
- { "bold", GTK_STOCK_BOLD, "_Bold", "<control>B",
- "Change to bold face", G_CALLBACK (toggle_action), TRUE },
{ "quit", GTK_STOCK_QUIT, NULL, "<control>Q",
"Quit the application", G_CALLBACK (gtk_main_quit) },
- { "toggle-cnp", NULL, "Enable Cut/Copy/Paste", NULL,
- "Change the sensitivity of the cut, copy and paste actions", G_CALLBACK (toggle_cnp_actions), TRUE },
{ "customise-accels", NULL, "Customise _Accels", NULL,
"Customise keyboard shortcuts", G_CALLBACK (show_accel_dialog) },
{ "toolbar-small-icons", NULL, "Small Icons", NULL,
@@ -115,6 +111,16 @@ static GtkActionEntry entries[] = {
};
static guint n_entries = G_N_ELEMENTS (entries);
+static GtkToggleActionEntry toggle_entries[] = {
+ { "bold", GTK_STOCK_BOLD, "_Bold", "<control>B",
+ "Change to bold face",
+ G_CALLBACK (toggle_action), FALSE },
+ { "toggle-cnp", NULL, "Enable Cut/Copy/Paste", NULL,
+ "Change the sensitivity of the cut, copy and paste actions",
+ G_CALLBACK (toggle_cnp_actions), TRUE },
+};
+static guint n_toggle_entries = G_N_ELEMENTS (toggle_entries);
+
enum {
JUSTIFY_LEFT,
JUSTIFY_CENTER,
@@ -254,15 +260,21 @@ main (int argc, char **argv)
gtk_accel_map_load ("accels");
action_group = gtk_action_group_new ("TestActions");
- gtk_action_group_add_actions (action_group, entries, n_entries, NULL);
- gtk_action_group_add_radio_actions (action_group, justify_entries, n_justify_entries,
+ gtk_action_group_add_actions (action_group,
+ entries, n_entries,
+ NULL);
+ gtk_action_group_add_toggle_actions (action_group,
+ toggle_entries, n_toggle_entries,
+ NULL);
+ gtk_action_group_add_radio_actions (action_group,
+ justify_entries, n_justify_entries,
+ JUSTIFY_LEFT,
G_CALLBACK (radio_action), NULL);
- gtk_action_group_add_radio_actions (action_group, toolbar_entries, n_toolbar_entries,
+ gtk_action_group_add_radio_actions (action_group,
+ toolbar_entries, n_toolbar_entries,
+ GTK_TOOLBAR_BOTH,
G_CALLBACK (radio_action), NULL);
- gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (gtk_action_group_get_action (action_group, "toggle-cnp")),
- FALSE);
-
create_window (action_group);
gtk_main ();
diff --git a/tests/testmerge.c b/tests/testmerge.c
index 0d50a39151..4b40f12628 100644
--- a/tests/testmerge.c
+++ b/tests/testmerge.c
@@ -126,10 +126,15 @@ static GtkActionEntry entries[] = {
{ "CopyAction", GTK_STOCK_COPY, NULL, "<control>c", NULL, G_CALLBACK (activate_action) },
{ "PasteAction", GTK_STOCK_PASTE, NULL, "<control>v", NULL, G_CALLBACK (activate_action) },
{ "AboutAction", NULL, "_About", NULL, NULL, G_CALLBACK (activate_action) },
- { "BoldAction", GTK_STOCK_BOLD, "_Bold", "<control>b", NULL, G_CALLBACK (toggle_action), TRUE },
};
static guint n_entries = G_N_ELEMENTS (entries);
+static GtkToggleActionEntry toggle_entries[] = {
+ { "BoldAction", GTK_STOCK_BOLD, "_Bold", "<control>b", NULL, G_CALLBACK (toggle_action),
+ TRUE },
+};
+static guint n_toggle_entries = G_N_ELEMENTS (toggle_entries);
+
enum {
JUSTIFY_LEFT,
JUSTIFY_CENTER,
@@ -442,9 +447,15 @@ main (int argc, char **argv)
gtk_init (&argc, &argv);
action_group = gtk_action_group_new ("TestActions");
- gtk_action_group_add_actions (action_group, entries, n_entries, NULL);
+ gtk_action_group_add_actions (action_group,
+ entries, n_entries,
+ NULL);
+ gtk_action_group_add_toggle_actions (action_group,
+ toggle_entries, n_toggle_entries,
+ NULL);
gtk_action_group_add_radio_actions (action_group,
radio_entries, n_radio_entries,
+ JUSTIFY_LEFT,
G_CALLBACK (radio_action_changed), NULL);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);