added dialog
[gpiv.git] / src / dialog_interface.c
blob6755e7aabcf4659840d18d4ce3c054156bbce3cc
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 Gerber van der Graaf
11 This file is part of gpiv.
13 Gpiv is free software; you can redistribute it and/or modify
14 it under the terms of the GNU General Public License as published by
15 the Free Software Foundation; either version 2, or (at your option)
16 any later version.
18 This program is distributed in the hope that it will be useful,
19 but WITHOUT ANY WARRANTY; without even the implied warranty of
20 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 GNU General Public License for more details.
23 You should have received a copy of the GNU General Public License
24 along with this program; if not, write to the Free Software Foundation,
25 Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
27 ----------------------------------------------------------------------*/
30 * $Id: dialog_interface.c,v 1.1 2008-09-16 11:19:37 gerber Exp $
32 #ifdef HAVE_CONFIG_H
33 #include <config.h>
34 #endif
35 #include "support.h"
37 #include "gpiv_gui.h"
38 #include "dialog.h"
39 #include "dialog_interface.h"
43 GtkWidget
44 *create_about (void
46 /*-----------------------------------------------------------------------------
49 GtkWidget *about;
50 GdkPixbuf *logo = NULL;
51 const gchar *authors[] = {
52 "Gerber van der Graaf <gerber_graaf@users.sourceforge.net>",
53 #ifdef ENABLE_TRIG
54 "Julio Soria",
55 #endif /* ENABLE_TRIG */
56 NULL
60 logo = gdk_pixbuf_new_from_file(PIXMAPSDIR "gpiv_logo.png", NULL);
62 if (logo != NULL) {
63 GdkPixbuf *temp_logo = NULL;
65 temp_logo = gdk_pixbuf_scale_simple (logo,
66 gdk_pixbuf_get_width (logo),
67 gdk_pixbuf_get_height (logo),
68 GDK_INTERP_HYPER);
69 g_object_unref (logo);
71 logo = temp_logo;
74 about = g_object_new (GTK_TYPE_ABOUT_DIALOG,
75 "name","Gpiv",
76 "version", VERSION,
77 "copyright", _("Copyright G. Van der Graaf"),
78 "comments", _("GPIV is a program for (Digital) \
79 Particle Image Velocimetry. It \
80 interrogates images (pairs) of a fluid flow that has been seeded \
81 with tracer particles, resulting into the velocity field of \
82 the fluid flow."),
83 "authors", authors ,
84 "logo", logo,
85 "icon", logo,
86 NULL);
88 gtk_object_set_data (GTK_OBJECT (about),
89 "about",
90 about);
92 g_signal_connect_swapped (GTK_DIALOG (about),
93 "response",
94 G_CALLBACK (gtk_widget_destroy),
95 about);
97 gtk_widget_show(GTK_WIDGET(about));
98 if (logo != NULL) g_object_unref (logo);
99 return about;
104 GtkDialog
105 *create_exit_dialog (/* GtkWidget *console */
107 /*-----------------------------------------------------------------------------
110 GtkDialog *exit_dialog;
111 GtkWidget *dialog_vbox1;
112 GtkWidget *hbox;
113 GtkImage *icon;
114 GtkLabel *text;
115 GdkPixbuf *logo = NULL;
117 GtkWidget *exit_message_label;
118 gchar *message = _("There are unsaved data that will be lost.\nAre you sure you want to quit?");
122 * Gnome2:
124 /* logo = gdk_pixbuf_new_from_file(PIXMAPSDIR "gpiv_logo.png", NULL); */
125 exit_dialog = GTK_DIALOG( gtk_dialog_new_with_buttons
126 ("gpiv exit",
127 NULL,
128 GTK_DIALOG_DESTROY_WITH_PARENT,
129 GTK_STOCK_NO, GTK_RESPONSE_REJECT,
130 GTK_STOCK_YES, GTK_RESPONSE_ACCEPT,
131 NULL));
133 gtk_dialog_set_default_response(exit_dialog,
134 GTK_RESPONSE_REJECT);
135 g_signal_connect( exit_dialog,
136 "response",
137 G_CALLBACK (on_button_quit_gpiv_clicked),
138 NULL);
140 gtk_window_set_icon(GTK_WINDOW( exit_dialog), logo);
141 if (logo != NULL) g_object_unref (logo);
145 hbox = g_object_new(GTK_TYPE_HBOX,
146 "border-width", 8,
147 NULL);
148 gtk_container_add (GTK_CONTAINER (GTK_DIALOG(exit_dialog)->vbox),
149 hbox);
150 gtk_widget_show(GTK_WIDGET (hbox));
155 icon = g_object_new(GTK_TYPE_IMAGE,
156 "stock", /* GTK_STOCK_DIALOG_QUESTION */ GTK_STOCK_DIALOG_WARNING,
157 "icon-size", GTK_ICON_SIZE_DIALOG,
158 "xalign", 0.5,
159 "yalign", 1.0,
160 NULL);
161 gtk_box_pack_start (GTK_BOX(hbox),
162 GTK_WIDGET(icon),
163 FALSE,
164 FALSE,
166 gtk_widget_show(GTK_WIDGET (icon));
171 text = g_object_new(GTK_TYPE_LABEL,
172 "wrap", TRUE,
173 "use-markup", TRUE,
174 "label", message,
175 NULL);
176 gtk_box_pack_start (GTK_BOX(hbox),
177 GTK_WIDGET(text),
178 FALSE,
179 FALSE,
181 gtk_widget_show(GTK_WIDGET (text));
183 return exit_dialog;
188 GtkDialog
189 *create_message_dialog (gchar * message
191 /*-----------------------------------------------------------------------------
194 GtkDialog *message_dialog;
195 GtkWidget *hbox;
196 GtkImage *icon;
197 GtkLabel *text;
198 GdkPixbuf *logo = NULL;
201 * Gnome2:
203 message_dialog = GTK_DIALOG( gtk_dialog_new_with_buttons
204 ("gpiv message",
205 NULL,
206 GTK_DIALOG_DESTROY_WITH_PARENT,
207 GTK_STOCK_OK, GTK_RESPONSE_NONE,
208 NULL));
210 g_signal_connect_swapped (GTK_DIALOG (message_dialog),
211 "response",
212 G_CALLBACK (gtk_widget_destroy),
213 message_dialog);
216 gtk_window_set_icon(GTK_WINDOW( message_dialog), logo);
217 if (logo != NULL) g_object_unref (logo);
219 hbox = g_object_new(GTK_TYPE_HBOX,
220 "border-width", 8,
221 NULL);
222 gtk_container_add (GTK_CONTAINER (GTK_DIALOG(message_dialog)->vbox),
223 hbox);
224 gtk_widget_show(GTK_WIDGET (hbox));
229 icon = g_object_new(GTK_TYPE_IMAGE,
230 "stock", GTK_STOCK_DIALOG_INFO,
231 "icon-size", GTK_ICON_SIZE_DIALOG,
232 "xalign", 0.5,
233 "yalign", 1.0,
234 NULL);
235 gtk_box_pack_start (GTK_BOX(hbox),
236 GTK_WIDGET(icon),
237 FALSE,
238 FALSE,
240 gtk_widget_show(GTK_WIDGET (icon));
244 text = g_object_new(GTK_TYPE_LABEL,
245 "wrap", TRUE,
246 "use-markup", TRUE,
247 "label", message,
248 NULL);
249 gtk_box_pack_start (GTK_BOX(hbox),
250 GTK_WIDGET(text),
251 FALSE,
252 FALSE,
254 gtk_widget_show(GTK_WIDGET (text));
255 gtk_widget_show(GTK_WIDGET (text));
258 return message_dialog;
263 GtkDialog
264 *create_warning_dialog (gchar * message
266 /*-----------------------------------------------------------------------------
269 GtkDialog *warning_dialog;
270 GtkWidget *hbox;
271 GtkImage *icon;
272 GtkLabel *text;
273 GdkPixbuf *logo = NULL;
276 * Gnome2:
278 warning_dialog = GTK_DIALOG( gtk_dialog_new_with_buttons
279 ("gpiv warning",
280 NULL,
281 GTK_DIALOG_DESTROY_WITH_PARENT,
282 GTK_STOCK_OK, GTK_RESPONSE_NONE,
283 NULL));
285 g_signal_connect_swapped (GTK_DIALOG (warning_dialog),
286 "response",
287 G_CALLBACK (gtk_widget_destroy),
288 warning_dialog);
291 gtk_window_set_icon(GTK_WINDOW( warning_dialog), logo);
292 if (logo != NULL) g_object_unref (logo);
294 hbox = g_object_new(GTK_TYPE_HBOX,
295 "border-width", 8,
296 NULL);
297 gtk_container_add (GTK_CONTAINER (GTK_DIALOG(warning_dialog)->vbox),
298 hbox);
299 gtk_widget_show(GTK_WIDGET (hbox));
304 icon = g_object_new(GTK_TYPE_IMAGE,
305 "stock", GTK_STOCK_DIALOG_WARNING,
306 "icon-size", GTK_ICON_SIZE_DIALOG,
307 "xalign", 0.5,
308 "yalign", 1.0,
309 NULL);
310 gtk_box_pack_start (GTK_BOX(hbox),
311 GTK_WIDGET(icon),
312 FALSE,
313 FALSE,
315 gtk_widget_show(GTK_WIDGET (icon));
319 text = g_object_new(GTK_TYPE_LABEL,
320 "wrap", TRUE,
321 "use-markup", TRUE,
322 "label", message,
323 NULL);
324 gtk_box_pack_start (GTK_BOX(hbox),
325 GTK_WIDGET(text),
326 FALSE,
327 FALSE,
329 gtk_widget_show(GTK_WIDGET (text));
330 /* gtk_container_add (GTK_CONTAINER (GTK_DIALOG(warning_dialog)->vbox), */
331 /* GTK_WIDGET (text)); */
332 gtk_widget_show(GTK_WIDGET (text));
335 return warning_dialog;
340 GtkDialog
341 *create_error_dialog (gchar * message
343 /*-----------------------------------------------------------------------------
346 GtkDialog *error_dialog;
347 GtkWidget *hbox;
348 GtkImage *icon;
349 GtkLabel *text;
352 error_dialog = GTK_DIALOG( gtk_dialog_new_with_buttons
353 ("gpiv error",
354 NULL,
355 GTK_DIALOG_MODAL
356 | GTK_DIALOG_DESTROY_WITH_PARENT,
357 GTK_STOCK_OK, GTK_RESPONSE_NONE,
358 NULL));
360 g_signal_connect_swapped (GTK_DIALOG (error_dialog),
361 "response",
362 G_CALLBACK (gtk_widget_destroy),
363 error_dialog);
366 * BUGFIX: probably not necessary as OK button connect with
368 /* g_signal_connect( error_box, */
369 /* "response", */
370 /* G_CALLBACK(on_error_response), */
371 /* NULL); */
374 hbox = g_object_new(GTK_TYPE_HBOX,
375 "border-width", 8,
376 NULL);
377 gtk_container_add (GTK_CONTAINER (GTK_DIALOG(error_dialog)->vbox),
378 hbox);
379 gtk_widget_show(GTK_WIDGET (hbox));
384 icon = g_object_new(GTK_TYPE_IMAGE,
385 "stock", GTK_STOCK_DIALOG_ERROR,
386 "icon-size", GTK_ICON_SIZE_DIALOG,
387 "xalign", 0.5,
388 "yalign", 1.0,
389 NULL);
390 gtk_box_pack_start (GTK_BOX (hbox),
391 GTK_WIDGET (icon),
392 FALSE,
393 FALSE,
395 gtk_widget_show(GTK_WIDGET (icon));
400 text = g_object_new(GTK_TYPE_LABEL,
401 "wrap", TRUE,
402 "use-markup", TRUE,
403 "label", message,
404 NULL);
405 gtk_box_pack_start (GTK_BOX (hbox),
406 GTK_WIDGET (text),
407 FALSE,
408 FALSE,
410 gtk_widget_show(GTK_WIDGET (text));
412 return error_dialog;
417 GtkDialog
418 *create_close_buffer_dialog (GpivConsole * gpiv,
419 Display *disp,
420 char *message
422 /*-----------------------------------------------------------------------------
425 GtkDialog *close_buffer_dialog;
426 GtkWidget *hbox;
427 GtkImage *icon;
428 GtkLabel *text;
430 close_buffer_dialog = GTK_DIALOG(gtk_dialog_new_with_buttons
431 ("gpiv close_buffer",
432 GTK_WINDOW (gpiv->console),
433 GTK_DIALOG_DESTROY_WITH_PARENT,
434 GTK_STOCK_NO, GTK_RESPONSE_REJECT,
435 GTK_STOCK_YES, GTK_RESPONSE_ACCEPT,
436 NULL));
438 g_signal_connect (close_buffer_dialog,
439 "response",
440 G_CALLBACK (on_close_buffer_response),
441 NULL);
443 g_signal_connect_swapped (GTK_DIALOG (close_buffer_dialog),
444 "response",
445 G_CALLBACK (gtk_widget_destroy),
446 close_buffer_dialog);
449 hbox = g_object_new(GTK_TYPE_HBOX,
450 "border-width", 8,
451 NULL);
452 gtk_container_add (GTK_CONTAINER (GTK_DIALOG(close_buffer_dialog)->vbox),
453 hbox);
454 gtk_widget_show(GTK_WIDGET (hbox));
459 icon = g_object_new(GTK_TYPE_IMAGE,
460 "stock", /* GTK_STOCK_DIALOG_QUESTION */ GTK_STOCK_DIALOG_WARNING,
461 "icon-size", GTK_ICON_SIZE_DIALOG,
462 "xalign", 0.5,
463 "yalign", 1.0,
464 NULL);
465 gtk_box_pack_start (GTK_BOX(hbox),
466 GTK_WIDGET(icon),
467 FALSE,
468 FALSE,
470 gtk_widget_show(GTK_WIDGET (icon));
475 text = g_object_new(GTK_TYPE_LABEL,
476 "wrap", TRUE,
477 "use-markup", TRUE,
478 "label", message,
479 NULL);
480 gtk_box_pack_start (GTK_BOX(hbox),
481 GTK_WIDGET(text),
482 FALSE,
483 FALSE,
485 gtk_widget_show(GTK_WIDGET (text));
487 gtk_object_set_data (GTK_OBJECT (close_buffer_dialog),
488 "gpiv",
489 gpiv);
490 gtk_object_set_data (GTK_OBJECT (close_buffer_dialog),
491 "display",
492 disp);
495 return close_buffer_dialog;