ui/gtk/button.c

changeset 94
d51e334c1439
parent 65
4697592e24ba
child 107
9aff1dc3990d
--- a/ui/gtk/button.c	Thu Aug 20 17:14:27 2015 +0200
+++ b/ui/gtk/button.c	Sat Oct 10 15:29:31 2015 +0200
@@ -86,3 +86,67 @@
     e.intval = gtk_toggle_tool_button_get_active(widget);
     event->callback(&e, event->userdata);
 }
+
+int ui_toggle_button_get(UiInteger *integer) {
+    GtkToggleButton *button = integer->obj;
+    integer->value = (int)gtk_toggle_button_get_active(button);
+    return integer->value;
+}
+
+void ui_toggle_button_set(UiInteger *integer, int value) {
+    GtkToggleButton *button = integer->obj;
+    integer->value = value;
+    gtk_toggle_button_set_active(button, value != 0 ? TRUE : FALSE);
+}
+
+
+UIWIDGET ui_checkbox(UiObject *obj, char *label, UiInteger *value) {
+    GtkWidget *button = gtk_check_button_new_with_label(label);
+    
+    // bind value
+    if(value) {
+        value->obj = GTK_TOGGLE_BUTTON(button);
+        value->get = ui_toggle_button_get;
+        value->set = ui_toggle_button_set;
+        if(value->value != 0) {
+            gtk_toggle_button_set_active(value->obj, TRUE);
+        }
+    }
+    
+    UiContainer *ct = uic_get_current_container(obj);
+    ct->add(ct, button, FALSE);
+    
+    return button;
+}
+
+UIWIDGET ui_checkbox_cb(UiObject *obj, char *label, ui_callback f, void *data) {
+    GtkWidget *button = gtk_check_button_new_with_label(label);
+    
+    if(f) {
+        //UiEventData *event = ucx_mempool_malloc(
+        //        obj->ctx->mempool,
+        //        sizeof(UiEventData));
+        UiEventData *event = malloc(sizeof(UiEventData));
+        event->obj = obj;
+        event->userdata = data;
+        event->callback = f;
+        event->value = 0;
+
+        g_signal_connect(
+                button,
+                "clicked",
+                G_CALLBACK(ui_button_toggled),
+                event);
+        g_signal_connect(
+                button,
+                "destroy",
+                G_CALLBACK(ui_destroy_userdata),
+                event);
+    }
+    
+    UiContainer *ct = uic_get_current_container(obj);
+    ct->add(ct, button, FALSE);
+    
+    return button;
+}
+

mercurial