diff options
-rw-r--r-- | ChangeLog | 16 | ||||
-rw-r--r-- | ChangeLog.pre-2-10 | 16 | ||||
-rw-r--r-- | ChangeLog.pre-2-4 | 16 | ||||
-rw-r--r-- | ChangeLog.pre-2-6 | 16 | ||||
-rw-r--r-- | ChangeLog.pre-2-8 | 16 | ||||
-rw-r--r-- | demos/gtk-demo/appwindow.c | 39 | ||||
-rw-r--r-- | docs/reference/ChangeLog | 4 | ||||
-rw-r--r-- | docs/reference/gtk/gtk-sections.txt | 8 | ||||
-rw-r--r-- | gtk/gtkactiongroup.c | 161 | ||||
-rw-r--r-- | gtk/gtkactiongroup.h | 117 | ||||
-rw-r--r-- | tests/testactions.c | 32 | ||||
-rw-r--r-- | tests/testmerge.c | 15 |
12 files changed, 359 insertions, 97 deletions
@@ -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><Actions>/<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><Actions>/<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); |