106 "destroy", |
106 "destroy", |
107 G_CALLBACK(ui_exit_event), |
107 G_CALLBACK(ui_exit_event), |
108 obj); |
108 obj); |
109 |
109 |
110 GtkWidget *vbox = ui_gtk_vbox_new(0); |
110 GtkWidget *vbox = ui_gtk_vbox_new(0); |
|
111 #if GTK_MAJOR_VERSION >= 4 |
|
112 WINDOW_SET_CONTENT(obj->widget, vbox); |
|
113 #else |
111 gtk_container_add(GTK_CONTAINER(obj->widget), vbox); |
114 gtk_container_add(GTK_CONTAINER(obj->widget), vbox); |
112 |
115 |
113 if(!simple) { |
116 if(!simple) { |
114 // menu |
117 // menu |
115 if(uic_get_menu_list()) { |
118 if(uic_get_menu_list()) { |
128 } |
131 } |
129 |
132 |
130 //GtkWidget *hb = ui_create_headerbar(obj); |
133 //GtkWidget *hb = ui_create_headerbar(obj); |
131 //gtk_window_set_titlebar(GTK_WINDOW(obj->widget), hb); |
134 //gtk_window_set_titlebar(GTK_WINDOW(obj->widget), hb); |
132 } |
135 } |
|
136 #endif |
133 |
137 |
134 // window content |
138 // window content |
135 // the content has a (TODO: not yet) configurable frame |
139 // the content has a (TODO: not yet) configurable frame |
|
140 // TODO: really? why |
|
141 /* |
136 GtkWidget *frame = gtk_frame_new(NULL); |
142 GtkWidget *frame = gtk_frame_new(NULL); |
137 gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_NONE); |
143 gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_NONE); |
138 gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0); |
144 gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0); |
139 |
145 |
140 // content vbox |
146 // content vbox |
141 GtkWidget *content_box = ui_gtk_vbox_new(0); |
147 GtkWidget *content_box = ui_gtk_vbox_new(0); |
142 gtk_container_add(GTK_CONTAINER(frame), content_box); |
148 gtk_container_add(GTK_CONTAINER(frame), content_box); |
|
149 obj->container = ui_box_container(obj, content_box); |
|
150 */ |
|
151 GtkWidget *content_box = ui_gtk_vbox_new(0); |
|
152 BOX_ADD(GTK_BOX(vbox), content_box); |
143 obj->container = ui_box_container(obj, content_box); |
153 obj->container = ui_box_container(obj, content_box); |
144 |
154 |
145 nwindows++; |
155 nwindows++; |
146 return obj; |
156 return obj; |
147 } |
157 } |
171 evt.eventdata = NULL; |
181 evt.eventdata = NULL; |
172 evt.intval = 0; |
182 evt.intval = 0; |
173 |
183 |
174 if(data->customdata) { |
184 if(data->customdata) { |
175 GtkWidget *entry = data->customdata; |
185 GtkWidget *entry = data->customdata; |
176 evt.eventdata = (void*)gtk_entry_get_text(GTK_ENTRY(entry)); |
186 evt.eventdata = (void*)ENTRY_GET_TEXT(GTK_ENTRY(entry)); |
177 |
187 |
178 } |
188 } |
179 |
189 |
180 if(response_id == 1 || response_id == 2) { |
190 if(response_id == 1 || response_id == 2) { |
181 evt.intval = response_id; |
191 evt.intval = response_id; |
184 |
194 |
185 if(data->callback) { |
195 if(data->callback) { |
186 data->callback(&evt, data->userdata); |
196 data->callback(&evt, data->userdata); |
187 } |
197 } |
188 |
198 |
189 gtk_widget_destroy(GTK_WIDGET(self)); |
199 WINDOW_DESTROY(GTK_WIDGET(self)); |
190 } |
200 } |
191 |
201 |
192 void ui_dialog_create(UiObject *parent, UiDialogArgs args) { |
202 void ui_dialog_create(UiObject *parent, UiDialogArgs args) { |
193 GtkDialog *dialog = GTK_DIALOG(gtk_dialog_new()); |
203 GtkDialog *dialog = GTK_DIALOG(gtk_dialog_new()); |
194 GtkWidget *dialog_w = GTK_WIDGET(dialog); |
204 GtkWidget *dialog_w = GTK_WIDGET(dialog); |
206 } |
216 } |
207 |
217 |
208 GtkWidget *content_area = gtk_dialog_get_content_area(dialog); |
218 GtkWidget *content_area = gtk_dialog_get_content_area(dialog); |
209 if(args.content) { |
219 if(args.content) { |
210 GtkWidget *label = gtk_label_new(args.content); |
220 GtkWidget *label = gtk_label_new(args.content); |
211 gtk_container_add(GTK_CONTAINER(content_area), label); |
221 BOX_ADD(content_area, label); |
212 } |
222 } |
213 |
223 |
214 GtkWidget *textfield = NULL; |
224 GtkWidget *textfield = NULL; |
215 if(args.input) { |
225 if(args.input) { |
216 textfield = gtk_entry_new(); |
226 textfield = gtk_entry_new(); |
217 gtk_container_add(GTK_CONTAINER(content_area), textfield); |
227 BOX_ADD(content_area, textfield); |
218 } |
228 } |
219 |
229 |
220 UiEventData *event = malloc(sizeof(UiEventData)); |
230 UiEventData *event = malloc(sizeof(UiEventData)); |
221 event->obj = parent; |
231 event->obj = parent; |
222 event->callback = args.result; |
232 event->callback = args.result; |
227 g_signal_connect(dialog_w, |
237 g_signal_connect(dialog_w, |
228 "response", |
238 "response", |
229 G_CALLBACK(ui_dialog_response), |
239 G_CALLBACK(ui_dialog_response), |
230 event); |
240 event); |
231 |
241 |
232 gtk_widget_show_all(GTK_WIDGET(dialog_w)); |
242 WINDOW_SHOW(GTK_WIDGET(dialog_w)); |
233 } |
243 } |
234 |
244 |
235 static void ui_gtkfilechooser(UiObject *obj, GtkFileChooserAction action, unsigned int mode, ui_callback file_selected_callback, void *cbdata) { |
245 static void ui_gtkfilechooser(UiObject *obj, GtkFileChooserAction action, unsigned int mode, ui_callback file_selected_callback, void *cbdata) { |
236 char *button; |
246 char *button; |
237 char *title; |
247 char *title; |