ui/gtk/button.c

changeset 94
d51e334c1439
parent 65
4697592e24ba
child 107
9aff1dc3990d
equal deleted inserted replaced
93:5223de7979e2 94:d51e334c1439
84 e.document = event->obj->ctx->document; 84 e.document = event->obj->ctx->document;
85 e.eventdata = NULL; 85 e.eventdata = NULL;
86 e.intval = gtk_toggle_tool_button_get_active(widget); 86 e.intval = gtk_toggle_tool_button_get_active(widget);
87 event->callback(&e, event->userdata); 87 event->callback(&e, event->userdata);
88 } 88 }
89
90 int ui_toggle_button_get(UiInteger *integer) {
91 GtkToggleButton *button = integer->obj;
92 integer->value = (int)gtk_toggle_button_get_active(button);
93 return integer->value;
94 }
95
96 void ui_toggle_button_set(UiInteger *integer, int value) {
97 GtkToggleButton *button = integer->obj;
98 integer->value = value;
99 gtk_toggle_button_set_active(button, value != 0 ? TRUE : FALSE);
100 }
101
102
103 UIWIDGET ui_checkbox(UiObject *obj, char *label, UiInteger *value) {
104 GtkWidget *button = gtk_check_button_new_with_label(label);
105
106 // bind value
107 if(value) {
108 value->obj = GTK_TOGGLE_BUTTON(button);
109 value->get = ui_toggle_button_get;
110 value->set = ui_toggle_button_set;
111 if(value->value != 0) {
112 gtk_toggle_button_set_active(value->obj, TRUE);
113 }
114 }
115
116 UiContainer *ct = uic_get_current_container(obj);
117 ct->add(ct, button, FALSE);
118
119 return button;
120 }
121
122 UIWIDGET ui_checkbox_cb(UiObject *obj, char *label, ui_callback f, void *data) {
123 GtkWidget *button = gtk_check_button_new_with_label(label);
124
125 if(f) {
126 //UiEventData *event = ucx_mempool_malloc(
127 // obj->ctx->mempool,
128 // sizeof(UiEventData));
129 UiEventData *event = malloc(sizeof(UiEventData));
130 event->obj = obj;
131 event->userdata = data;
132 event->callback = f;
133 event->value = 0;
134
135 g_signal_connect(
136 button,
137 "clicked",
138 G_CALLBACK(ui_button_toggled),
139 event);
140 g_signal_connect(
141 button,
142 "destroy",
143 G_CALLBACK(ui_destroy_userdata),
144 event);
145 }
146
147 UiContainer *ct = uic_get_current_container(obj);
148 ct->add(ct, button, FALSE);
149
150 return button;
151 }
152

mercurial