diff options
-rw-r--r-- | e-util/ChangeLog | 6 | ||||
-rw-r--r-- | e-util/e-gtk-utils.c | 54 | ||||
-rw-r--r-- | e-util/e-gtk-utils.h | 5 |
3 files changed, 65 insertions, 0 deletions
diff --git a/e-util/ChangeLog b/e-util/ChangeLog index b9cd630ce1..379eae390e 100644 --- a/e-util/ChangeLog +++ b/e-util/ChangeLog @@ -1,3 +1,9 @@ +2001-01-17 Jason Leach <jasonleach@usa.net> + + * e-gtk-utils.c (gtk_radio_button_get_nth_selected): New function, + name describes it well. + (gtk_radio_button_select_nth): New function. + 2001-01-17 Federico Mena Quintero <federico@ximian.com> * e-dialog-widgets.[ch]: Ximianified. diff --git a/e-util/e-gtk-utils.c b/e-util/e-gtk-utils.c index 3cca1d0789..c00ca4c8ef 100644 --- a/e-util/e-gtk-utils.c +++ b/e-util/e-gtk-utils.c @@ -104,3 +104,57 @@ e_gtk_signal_connect_full_while_alive (GtkObject *object, info->disconnect_handler2 = gtk_signal_connect (alive_object, "destroy", GTK_SIGNAL_FUNC (alive_disconnecter), info); } + +/** + * gtk_radio_button_get_nth_selected: + * @button: A GtkRadioButton + * + * Returns an int indicating which button in the radio group is + * toggled active. NOTE: radio group item numbering starts at zero. + **/ +int +gtk_radio_button_get_nth_selected (GtkRadioButton *button) +{ + GSList *l; + int i, c; + + g_return_val_if_fail (button != NULL, 0); + g_return_val_if_fail (GTK_IS_RADIO_BUTTON (button), 0); + + c = g_slist_length (button->group); + + for (i = 0, l = button->group; l; l = l->next, i++) { + GtkRadioButton *tmp = l->data; + + if (GTK_TOGGLE_BUTTON (tmp)->active) + return c - i - 1; + } + + return 0; +} + +/** + * gtk_radio_button_select_nth: + * @button: A GtkRadioButton + * @n: Which button to select from the group + * + * Select the Nth item of a radio group. NOTE: radio group items + * start numbering from zero + **/ +void +gtk_radio_button_select_nth (GtkRadioButton *button, int n) +{ + GSList *l; + int len; + + g_return_if_fail (button != NULL); + g_return_if_fail (GTK_IS_RADIO_BUTTON (button)); + + len = g_slist_length (button->group); + + if ((n <= len) && (n > 0)) { + l = g_slist_nth (button->group, len - n - 1); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (l->data), TRUE); + } + +} diff --git a/e-util/e-gtk-utils.h b/e-util/e-gtk-utils.h index 0dc6b68512..0bbee2910a 100644 --- a/e-util/e-gtk-utils.h +++ b/e-util/e-gtk-utils.h @@ -36,4 +36,9 @@ void e_gtk_signal_connect_full_while_alive (GtkObject *object, gboolean after, GtkObject *alive_object); + +/* GtkRadioButton API extensions */ +void gtk_radio_button_select_nth (GtkRadioButton *button, int n); +int gtk_radio_button_get_nth_selected (GtkRadioButton *button); + #endif |