ui/gtk/button.c

changeset 107
9aff1dc3990d
parent 94
d51e334c1439
child 108
fcf6d5fac8f5
--- 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;
+}
+

mercurial