bug repair: loading .png image, from Adrian Daerr
[gpiv.git] / src / dialog_interface.c
blob12e9c46f24f58b48a741c88f69a3f823dce785e3
1 /* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8 c-style: "K&R" -*- */
4 /*----------------------------------------------------------------------
6 gpiv - Graphic program for Particle Image Velocimetry, based on gtk/gnome
7 libraries.
9 Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008
10 Gerber van der Graaf
12 This file is part of gpiv.
14 Gpiv is free software; you can redistribute it and/or modify
15 it under the terms of the GNU General Public License as published by
16 the Free Software Foundation; either version 2, or (at your option)
17 any later version.
19 This program is distributed in the hope that it will be useful,
20 but WITHOUT ANY WARRANTY; without even the implied warranty of
21 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 GNU General Public License for more details.
24 You should have received a copy of the GNU General Public License
25 along with this program; if not, write to the Free Software Foundation,
26 Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
28 ----------------------------------------------------------------------*/
31 * $Id: dialog_interface.c,v 1.1 2008-09-16 11:19:37 gerber Exp $
33 #ifdef HAVE_CONFIG_H
34 #include <config.h>
35 #endif
36 #include "support.h"
38 #include "gpiv_gui.h"
39 #include "dialog.h"
40 #include "dialog_interface.h"
44 GtkWidget
45 *create_about (void
47 /*-----------------------------------------------------------------------------
50 GtkWidget *about;
51 GdkPixbuf *logo = NULL;
52 const gchar *authors[] = {
53 "Gerber van der Graaf <gerber_graaf@users.sourceforge.net>",
54 #ifdef ENABLE_TRIG
55 "Julio Soria",
56 #endif /* ENABLE_TRIG */
57 NULL
61 logo = gdk_pixbuf_new_from_file(PIXMAPSDIR "gpiv_logo.png", NULL);
63 if (logo != NULL) {
64 GdkPixbuf *temp_logo = NULL;
66 temp_logo = gdk_pixbuf_scale_simple (logo,
67 gdk_pixbuf_get_width (logo),
68 gdk_pixbuf_get_height (logo),
69 GDK_INTERP_HYPER);
70 g_object_unref (logo);
72 logo = temp_logo;
75 about = g_object_new (GTK_TYPE_ABOUT_DIALOG,
76 "name","Gpiv",
77 "version", VERSION,
78 "copyright", _("Copyright G. Van der Graaf"),
79 "comments", _("GPIV is a program for (Digital) \
80 Particle Image Velocimetry. It \
81 interrogates images (pairs) of a fluid flow that has been seeded \
82 with tracer particles, resulting into the velocity field of \
83 the fluid flow."),
84 "authors", authors ,
85 "logo", logo,
86 "icon", logo,
87 NULL);
89 gtk_object_set_data (GTK_OBJECT (about),
90 "about",
91 about);
93 g_signal_connect_swapped (GTK_DIALOG (about),
94 "response",
95 G_CALLBACK (gtk_widget_destroy),
96 about);
98 gtk_widget_show(GTK_WIDGET(about));
99 if (logo != NULL) g_object_unref (logo);
100 return about;
105 GtkDialog
106 *create_exit_dialog (/* GtkWidget *console */
108 /*-----------------------------------------------------------------------------
111 GtkDialog *exit_dialog;
112 GtkWidget *dialog_vbox1;
113 GtkWidget *hbox;
114 GtkImage *icon;
115 GtkLabel *text;
116 GdkPixbuf *logo = NULL;
118 GtkWidget *exit_message_label;
119 gchar *message = _("There are unsaved data that will be lost.\nAre you sure you want to quit?");
123 * Gnome2:
125 /* logo = gdk_pixbuf_new_from_file(PIXMAPSDIR "gpiv_logo.png", NULL); */
126 exit_dialog = GTK_DIALOG( gtk_dialog_new_with_buttons
127 ("gpiv exit",
128 NULL,
129 GTK_DIALOG_DESTROY_WITH_PARENT,
130 GTK_STOCK_NO, GTK_RESPONSE_REJECT,
131 GTK_STOCK_YES, GTK_RESPONSE_ACCEPT,
132 NULL));
134 gtk_dialog_set_default_response(exit_dialog,
135 GTK_RESPONSE_REJECT);
136 g_signal_connect( exit_dialog,
137 "response",
138 G_CALLBACK (on_button_quit_gpiv_clicked),
139 NULL);
141 gtk_window_set_icon(GTK_WINDOW( exit_dialog), logo);
142 if (logo != NULL) g_object_unref (logo);
146 hbox = g_object_new(GTK_TYPE_HBOX,
147 "border-width", 8,
148 NULL);
149 gtk_container_add (GTK_CONTAINER (GTK_DIALOG(exit_dialog)->vbox),
150 hbox);
151 gtk_widget_show(GTK_WIDGET (hbox));
156 icon = g_object_new(GTK_TYPE_IMAGE,
157 "stock", /* GTK_STOCK_DIALOG_QUESTION */ GTK_STOCK_DIALOG_WARNING,
158 "icon-size", GTK_ICON_SIZE_DIALOG,
159 "xalign", 0.5,
160 "yalign", 1.0,
161 NULL);
162 gtk_box_pack_start (GTK_BOX(hbox),
163 GTK_WIDGET(icon),
164 FALSE,
165 FALSE,
167 gtk_widget_show(GTK_WIDGET (icon));
172 text = g_object_new(GTK_TYPE_LABEL,
173 "wrap", TRUE,
174 "use-markup", TRUE,
175 "label", message,
176 NULL);
177 gtk_box_pack_start (GTK_BOX(hbox),
178 GTK_WIDGET(text),
179 FALSE,
180 FALSE,
182 gtk_widget_show(GTK_WIDGET (text));
184 return exit_dialog;
189 GtkDialog
190 *create_message_dialog (gchar * message
192 /*-----------------------------------------------------------------------------
195 GtkDialog *message_dialog;
196 GtkWidget *hbox;
197 GtkImage *icon;
198 GtkLabel *text;
199 GdkPixbuf *logo = NULL;
202 * Gnome2:
204 message_dialog = GTK_DIALOG( gtk_dialog_new_with_buttons
205 ("gpiv message",
206 NULL,
207 GTK_DIALOG_DESTROY_WITH_PARENT,
208 GTK_STOCK_OK, GTK_RESPONSE_NONE,
209 NULL));
211 g_signal_connect_swapped (GTK_DIALOG (message_dialog),
212 "response",
213 G_CALLBACK (gtk_widget_destroy),
214 message_dialog);
217 gtk_window_set_icon(GTK_WINDOW( message_dialog), logo);
218 if (logo != NULL) g_object_unref (logo);
220 hbox = g_object_new(GTK_TYPE_HBOX,
221 "border-width", 8,
222 NULL);
223 gtk_container_add (GTK_CONTAINER (GTK_DIALOG(message_dialog)->vbox),
224 hbox);
225 gtk_widget_show(GTK_WIDGET (hbox));
230 icon = g_object_new(GTK_TYPE_IMAGE,
231 "stock", GTK_STOCK_DIALOG_INFO,
232 "icon-size", GTK_ICON_SIZE_DIALOG,
233 "xalign", 0.5,
234 "yalign", 1.0,
235 NULL);
236 gtk_box_pack_start (GTK_BOX(hbox),
237 GTK_WIDGET(icon),
238 FALSE,
239 FALSE,
241 gtk_widget_show(GTK_WIDGET (icon));
245 text = g_object_new(GTK_TYPE_LABEL,
246 "wrap", TRUE,
247 "use-markup", TRUE,
248 "label", message,
249 NULL);
250 gtk_box_pack_start (GTK_BOX(hbox),
251 GTK_WIDGET(text),
252 FALSE,
253 FALSE,
255 gtk_widget_show(GTK_WIDGET (text));
256 gtk_widget_show(GTK_WIDGET (text));
259 return message_dialog;
264 GtkDialog
265 *create_warning_dialog (gchar * message
267 /*-----------------------------------------------------------------------------
270 GtkDialog *warning_dialog;
271 GtkWidget *hbox;
272 GtkImage *icon;
273 GtkLabel *text;
274 GdkPixbuf *logo = NULL;
277 * Gnome2:
279 warning_dialog = GTK_DIALOG( gtk_dialog_new_with_buttons
280 ("gpiv warning",
281 NULL,
282 GTK_DIALOG_DESTROY_WITH_PARENT,
283 GTK_STOCK_OK, GTK_RESPONSE_NONE,
284 NULL));
286 g_signal_connect_swapped (GTK_DIALOG (warning_dialog),
287 "response",
288 G_CALLBACK (gtk_widget_destroy),
289 warning_dialog);
292 gtk_window_set_icon(GTK_WINDOW( warning_dialog), logo);
293 if (logo != NULL) g_object_unref (logo);
295 hbox = g_object_new(GTK_TYPE_HBOX,
296 "border-width", 8,
297 NULL);
298 gtk_container_add (GTK_CONTAINER (GTK_DIALOG(warning_dialog)->vbox),
299 hbox);
300 gtk_widget_show(GTK_WIDGET (hbox));
305 icon = g_object_new(GTK_TYPE_IMAGE,
306 "stock", GTK_STOCK_DIALOG_WARNING,
307 "icon-size", GTK_ICON_SIZE_DIALOG,
308 "xalign", 0.5,
309 "yalign", 1.0,
310 NULL);
311 gtk_box_pack_start (GTK_BOX(hbox),
312 GTK_WIDGET(icon),
313 FALSE,
314 FALSE,
316 gtk_widget_show(GTK_WIDGET (icon));
320 text = g_object_new(GTK_TYPE_LABEL,
321 "wrap", TRUE,
322 "use-markup", TRUE,
323 "label", message,
324 NULL);
325 gtk_box_pack_start (GTK_BOX(hbox),
326 GTK_WIDGET(text),
327 FALSE,
328 FALSE,
330 gtk_widget_show(GTK_WIDGET (text));
331 /* gtk_container_add (GTK_CONTAINER (GTK_DIALOG(warning_dialog)->vbox), */
332 /* GTK_WIDGET (text)); */
333 gtk_widget_show(GTK_WIDGET (text));
336 return warning_dialog;
341 GtkDialog
342 *create_error_dialog (gchar * message
344 /*-----------------------------------------------------------------------------
347 GtkDialog *error_dialog;
348 GtkWidget *hbox;
349 GtkImage *icon;
350 GtkLabel *text;
353 error_dialog = GTK_DIALOG( gtk_dialog_new_with_buttons
354 ("gpiv error",
355 NULL,
356 GTK_DIALOG_MODAL
357 | GTK_DIALOG_DESTROY_WITH_PARENT,
358 GTK_STOCK_OK, GTK_RESPONSE_NONE,
359 NULL));
361 g_signal_connect_swapped (GTK_DIALOG (error_dialog),
362 "response",
363 G_CALLBACK (gtk_widget_destroy),
364 error_dialog);
367 * BUGFIX: probably not necessary as OK button connect with
369 /* g_signal_connect( error_box, */
370 /* "response", */
371 /* G_CALLBACK(on_error_response), */
372 /* NULL); */
375 hbox = g_object_new(GTK_TYPE_HBOX,
376 "border-width", 8,
377 NULL);
378 gtk_container_add (GTK_CONTAINER (GTK_DIALOG(error_dialog)->vbox),
379 hbox);
380 gtk_widget_show(GTK_WIDGET (hbox));
385 icon = g_object_new(GTK_TYPE_IMAGE,
386 "stock", GTK_STOCK_DIALOG_ERROR,
387 "icon-size", GTK_ICON_SIZE_DIALOG,
388 "xalign", 0.5,
389 "yalign", 1.0,
390 NULL);
391 gtk_box_pack_start (GTK_BOX (hbox),
392 GTK_WIDGET (icon),
393 FALSE,
394 FALSE,
396 gtk_widget_show(GTK_WIDGET (icon));
401 text = g_object_new(GTK_TYPE_LABEL,
402 "wrap", TRUE,
403 "use-markup", TRUE,
404 "label", message,
405 NULL);
406 gtk_box_pack_start (GTK_BOX (hbox),
407 GTK_WIDGET (text),
408 FALSE,
409 FALSE,
411 gtk_widget_show(GTK_WIDGET (text));
413 return error_dialog;
418 GtkDialog
419 *create_close_buffer_dialog (GpivConsole * gpiv,
420 Display *disp,
421 char *message
423 /*-----------------------------------------------------------------------------
426 GtkDialog *close_buffer_dialog;
427 GtkWidget *hbox;
428 GtkImage *icon;
429 GtkLabel *text;
431 close_buffer_dialog = GTK_DIALOG(gtk_dialog_new_with_buttons
432 ("gpiv close_buffer",
433 GTK_WINDOW (gpiv->console),
434 GTK_DIALOG_DESTROY_WITH_PARENT,
435 GTK_STOCK_NO, GTK_RESPONSE_REJECT,
436 GTK_STOCK_YES, GTK_RESPONSE_ACCEPT,
437 NULL));
439 g_signal_connect (close_buffer_dialog,
440 "response",
441 G_CALLBACK (on_close_buffer_response),
442 NULL);
444 g_signal_connect_swapped (GTK_DIALOG (close_buffer_dialog),
445 "response",
446 G_CALLBACK (gtk_widget_destroy),
447 close_buffer_dialog);
450 hbox = g_object_new(GTK_TYPE_HBOX,
451 "border-width", 8,
452 NULL);
453 gtk_container_add (GTK_CONTAINER (GTK_DIALOG(close_buffer_dialog)->vbox),
454 hbox);
455 gtk_widget_show(GTK_WIDGET (hbox));
460 icon = g_object_new(GTK_TYPE_IMAGE,
461 "stock", /* GTK_STOCK_DIALOG_QUESTION */ GTK_STOCK_DIALOG_WARNING,
462 "icon-size", GTK_ICON_SIZE_DIALOG,
463 "xalign", 0.5,
464 "yalign", 1.0,
465 NULL);
466 gtk_box_pack_start (GTK_BOX(hbox),
467 GTK_WIDGET(icon),
468 FALSE,
469 FALSE,
471 gtk_widget_show(GTK_WIDGET (icon));
476 text = g_object_new(GTK_TYPE_LABEL,
477 "wrap", TRUE,
478 "use-markup", TRUE,
479 "label", message,
480 NULL);
481 gtk_box_pack_start (GTK_BOX(hbox),
482 GTK_WIDGET(text),
483 FALSE,
484 FALSE,
486 gtk_widget_show(GTK_WIDGET (text));
488 gtk_object_set_data (GTK_OBJECT (close_buffer_dialog),
489 "gpiv",
490 gpiv);
491 gtk_object_set_data (GTK_OBJECT (close_buffer_dialog),
492 "display",
493 disp);
496 return close_buffer_dialog;