diff -r a4f4123ca12a -r 9aff1dc3990d ui/gtk/button.c --- a/ui/gtk/button.c Sat Jan 23 20:47:07 2016 +0100 +++ b/ui/gtk/button.c Sat Jan 23 23:44:41 2016 +0100 @@ -150,3 +150,53 @@ return button; } + +UiRadioButtonGroup ui_radiobuttongroup() { + UiRadioButtonGroup rgroup; + rgroup.group = NULL; + rgroup.ref = 0; + return rgroup; +} + +void ui_radiobuttongroup_select(UiRadioButtonGroup *rgroup, int index) { + GSList *ls = rgroup->group; + int s = g_slist_length(rgroup->group) - 1 - index; + int i = 0; + while(ls) { + if(i == s) { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ls->data), TRUE); + break; + } + ls = ls->next; + i++; + } +} + +int ui_radiobuttongroup_selection(UiRadioButtonGroup *rgroup) { + GSList *ls = rgroup->group; + int i = 0; + while(ls) { + if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ls->data))) { + return g_slist_length(rgroup->group) - i - 1; + } + ls = ls->next; + i++; + } + return -1; +} + +int io_radiobuttongroup_count(UiRadioButtonGroup *rgroup) { + return g_slist_length(rgroup->group); +} + +UIWIDGET ui_radiobutton(UiObject *obj, char *label, UiRadioButtonGroup *rgroup) { + GtkWidget *rbutton = gtk_radio_button_new_with_label(rgroup->group, label); + rgroup->group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(rbutton)); + rgroup->ref++; + + UiContainer *ct = uic_get_current_container(obj); + ct->add(ct, rbutton, FALSE); + + return rbutton; +} +