updated copyright statement
[gpiv.git] / src / pivvalid_interface.c
blob6795fb2a1bf667a18f8baea887cb57da5e13e802
2 /*----------------------------------------------------------------------
4 gpiv - Graphic program for Particle Image Velocimetry, based on gtk/gnome
5 libraries.
7 Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008
8 Gerber van der Graaf
10 This file is part of gpiv.
12 Gpiv is free software; you can redistribute it and/or modify
13 it under the terms of the GNU General Public License as published by
14 the Free Software Foundation; either version 2, or (at your option)
15 any later version.
17 This program is distributed in the hope that it will be useful,
18 but WITHOUT ANY WARRANTY; without even the implied warranty of
19 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 GNU General Public License for more details.
22 You should have received a copy of the GNU General Public License
23 along with this program; if not, write to the Free Software Foundation,
24 Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
26 ----------------------------------------------------------------------*/
29 * PIV Validation interface
30 * $Log: pivvalid_interface.c,v $
31 * Revision 1.11 2007-12-19 08:42:35 gerber
32 * debugged
34 * Revision 1.10 2007-11-23 16:24:08 gerber
35 * release 0.5.0: Kafka
37 * Revision 1.9 2007-01-29 11:27:44 gerber
38 * added image formats png, gif, tif png, bmp, improved buffer display
40 * Revision 1.8 2006/01/31 14:28:13 gerber
41 * version 0.3.0
43 * Revision 1.6 2005/02/12 14:12:12 gerber
44 * Changed tabular names and titles
46 * Revision 1.5 2005/01/19 15:53:42 gerber
47 * Initiation of Data Acquisition (DAC); trigerring of lasers and camera
48 * by using RTAI and Realtime Linux, recording images from IEEE1394
49 * (Firewire) IIDC compliant camera's
51 * Revision 1.4 2004/10/15 19:24:05 gerber
52 * GPIV_ and Gpiv prefix to defines and structure names of libgpiv
54 * Revision 1.3 2004/06/14 21:19:23 gerber
55 * Image depth up to 16 bits.
56 * Improvement "single int" and "drag int" in Eval tab.
57 * Viewer's pop-up menu.
58 * Adaption for gpiv_matrix_* and gpiv_vector_*.
59 * Resizing console.
60 * See Changelog for further info.
62 * Revision 1.2 2003/08/22 15:24:52 gerber
63 * interactive spatial scaling
65 * Revision 1.1.1.1 2003/06/17 17:10:52 gerber
66 * Imported gpiv
70 #ifdef HAVE_CONFIG_H
71 # include <config.h>
72 #endif
74 #include "gpiv_gui.h"
75 /* #include "console.h" */
76 #include "utils.h"
77 #include "pivvalid_interface.h"
78 #include "pivvalid.h"
80 PivValid *
81 create_pivvalid (GnomeApp *main_window,
82 GtkWidget *container
84 /*-----------------------------------------------------------------------------
87 GpivConsole * gpiv = gtk_object_get_data (GTK_OBJECT (main_window), "gpiv");
88 PivValid *valid = g_new0(PivValid, 1);
92 valid->vbox_label = gtk_vbox_new (FALSE,
93 0);
94 gtk_widget_ref(valid->vbox_label);
95 gtk_object_set_data_full (GTK_OBJECT (main_window),
96 "vbox_label",
97 valid->vbox_label,
98 (GtkDestroyNotify) gtk_widget_unref);
99 gtk_widget_show(valid->vbox_label);
100 gtk_container_add (GTK_CONTAINER (container),
101 valid->vbox_label);
103 valid->label_title = gtk_label_new( _("Piv data validation"));
104 gtk_widget_ref(valid->label_title);
105 gtk_object_set_data_full (GTK_OBJECT (main_window),
106 "label_title",
107 valid->label_title,
108 (GtkDestroyNotify) gtk_widget_unref);
109 gtk_widget_show (valid->label_title);
110 gtk_box_pack_start (GTK_BOX (valid->vbox_label),
111 valid->label_title,
112 FALSE,
113 FALSE,
118 * Scrolled window
120 valid->vbox_scroll = gtk_vbox_new (FALSE,
122 gtk_widget_ref (valid->vbox_scroll);
123 gtk_object_set_data_full (GTK_OBJECT (main_window),
124 "vbox_scroll",
125 valid->vbox_scroll,
126 (GtkDestroyNotify) gtk_widget_unref);
127 gtk_widget_show (valid->vbox_scroll);
128 gtk_box_pack_start (GTK_BOX (valid->vbox_label),
129 valid->vbox_scroll,
130 TRUE,
131 TRUE,
135 valid->scrolledwindow = gtk_scrolled_window_new (NULL,
136 NULL);
137 gtk_widget_ref (valid->scrolledwindow);
138 gtk_object_set_data_full (GTK_OBJECT (main_window),
139 "scrolledwindow",
140 valid->scrolledwindow,
141 (GtkDestroyNotify) gtk_widget_unref);
142 gtk_widget_show (valid->scrolledwindow);
143 gtk_box_pack_start (GTK_BOX (valid->vbox_scroll),
144 valid->scrolledwindow,
145 TRUE,
146 TRUE,
148 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW
149 (valid->scrolledwindow),
150 GTK_POLICY_NEVER,
151 GTK_POLICY_AUTOMATIC);
156 valid->viewport = gtk_viewport_new (NULL,
157 NULL);
158 gtk_widget_ref (valid->viewport);
159 gtk_object_set_data_full (GTK_OBJECT (main_window),
160 "viewport",
161 valid->viewport,
162 (GtkDestroyNotify) gtk_widget_unref);
163 gtk_widget_show (valid->viewport);
164 gtk_container_add (GTK_CONTAINER (valid->scrolledwindow),
165 valid->viewport);
168 * main table for validation
170 valid->table = gtk_table_new (2,
172 FALSE);
173 gtk_widget_ref (valid->table);
174 gtk_object_set_data_full (GTK_OBJECT (main_window),
175 "table",
176 valid->table,
177 (GtkDestroyNotify) gtk_widget_unref);
178 gtk_widget_show (valid->table);
179 gtk_container_add (GTK_CONTAINER (valid->viewport),
180 valid->table);
185 * Enable / Disable frame
188 valid->frame_disable = gtk_frame_new ( _("Disable data"));
189 gtk_widget_ref (valid->frame_disable);
190 gtk_object_set_data_full (GTK_OBJECT (main_window),
191 "frame_disable",
192 valid->frame_disable,
193 (GtkDestroyNotify)
194 gtk_widget_unref);
195 gtk_widget_show (valid->frame_disable);
196 gtk_table_attach (GTK_TABLE (valid->table),
197 valid->frame_disable,
202 (GtkAttachOptions) (GTK_FILL),
203 (GtkAttachOptions) (GTK_SHRINK),
209 valid->vbox_disable = gtk_vbox_new (FALSE,
211 gtk_widget_ref (valid->vbox_disable);
212 gtk_object_set_data_full (GTK_OBJECT (main_window),
213 "vbox_disable",
214 valid->vbox_disable,
215 (GtkDestroyNotify) gtk_widget_unref);
216 gtk_widget_show (valid->vbox_disable);
217 gtk_container_add (GTK_CONTAINER (valid->frame_disable),
218 valid->vbox_disable);
222 valid->radiobutton_disable_0 =
223 gtk_radio_button_new_with_label (gpiv->mouse_sel_group,
224 _("None"));
225 gpiv->mouse_sel_group =
226 gtk_radio_button_group (GTK_RADIO_BUTTON
227 (valid->radiobutton_disable_0));
228 gtk_widget_ref (valid->radiobutton_disable_0);
229 gtk_object_set_data_full (GTK_OBJECT (main_window),
230 "radiobutton_disable_0",
231 valid->radiobutton_disable_0,
232 (GtkDestroyNotify) gtk_widget_unref);
233 gtk_widget_show (valid->radiobutton_disable_0);
234 gtk_box_pack_start (GTK_BOX (valid->vbox_disable),
235 valid->radiobutton_disable_0,
236 FALSE,
237 FALSE,
241 gtk_object_set_data (GTK_OBJECT (valid->radiobutton_disable_0),
242 "valid",
243 valid);
244 gtk_object_set_data (GTK_OBJECT (valid->radiobutton_disable_0),
245 "mouse_select",
246 "0" /* NO_MS */);
248 g_signal_connect (GTK_OBJECT (valid->radiobutton_disable_0),
249 "enter",
250 G_CALLBACK (on_radiobutton_valid_disable_0_enter),
251 NULL);
252 g_signal_connect (GTK_OBJECT (valid->radiobutton_disable_0),
253 "leave",
254 G_CALLBACK (on_widget_leave),
255 NULL);
256 g_signal_connect (GTK_OBJECT (valid->radiobutton_disable_0),
257 "toggled",
258 G_CALLBACK (on_radiobutton_valid_disable),
259 NULL);
264 valid->radiobutton_disable_1 =
265 gtk_radio_button_new_with_label (gpiv->mouse_sel_group,
266 _("Enable point"));
267 gpiv->mouse_sel_group =
268 gtk_radio_button_group (GTK_RADIO_BUTTON
269 (valid->radiobutton_disable_1));
270 gtk_widget_ref (valid->radiobutton_disable_1);
271 gtk_object_set_data_full (GTK_OBJECT (main_window),
272 "radiobutton_valid_disable_1",
273 valid->radiobutton_disable_1,
274 (GtkDestroyNotify) gtk_widget_unref);
275 gtk_widget_show (valid->radiobutton_disable_1);
276 gtk_box_pack_start (GTK_BOX (valid->vbox_disable),
277 valid->radiobutton_disable_1,
278 FALSE,
279 FALSE,
282 gtk_object_set_data (GTK_OBJECT (valid->radiobutton_disable_1),
283 "valid",
284 valid);
285 gtk_object_set_data (GTK_OBJECT (valid->radiobutton_disable_1),
286 "mouse_select",
287 "7" /* ENABLE_POINT_MS */);
288 g_signal_connect (GTK_OBJECT (valid->radiobutton_disable_1),
289 "enter",
290 G_CALLBACK (on_radiobutton_valid_disable_1_enter),
291 NULL);
292 g_signal_connect (GTK_OBJECT (valid->radiobutton_disable_1),
293 "leave",
294 G_CALLBACK (on_widget_leave),
295 NULL);
296 g_signal_connect (GTK_OBJECT (valid->radiobutton_disable_1),
297 "toggled",
298 G_CALLBACK (on_radiobutton_valid_disable),
299 NULL);
303 valid->radiobutton_disable_2 =
304 gtk_radio_button_new_with_label (gpiv->mouse_sel_group,
305 _("Disable point"));
306 gpiv->mouse_sel_group =
307 gtk_radio_button_group (GTK_RADIO_BUTTON
308 (valid->radiobutton_disable_2));
309 gtk_widget_ref (valid->radiobutton_disable_2);
310 gtk_object_set_data_full (GTK_OBJECT (main_window),
311 "radiobutton_disable_2",
312 valid->radiobutton_disable_2,
313 (GtkDestroyNotify) gtk_widget_unref);
314 gtk_widget_show (valid->radiobutton_disable_2);
315 gtk_box_pack_start (GTK_BOX (valid->vbox_disable),
316 valid->radiobutton_disable_2,
317 FALSE,
318 FALSE,
321 gtk_object_set_data (GTK_OBJECT (valid->radiobutton_disable_2),
322 "valid",
323 valid);
324 gtk_object_set_data (GTK_OBJECT (valid->radiobutton_disable_2),
325 "mouse_select",
326 "8" /* DISABLE_POINT_MS */);
327 g_signal_connect (GTK_OBJECT (valid->radiobutton_disable_2),
328 "enter",
329 G_CALLBACK (on_radiobutton_valid_disable_2_enter),
330 NULL);
331 g_signal_connect (GTK_OBJECT (valid->radiobutton_disable_2),
332 "leave",
333 G_CALLBACK (on_widget_leave),
334 NULL);
335 g_signal_connect (GTK_OBJECT (valid->radiobutton_disable_2),
336 "toggled",
337 G_CALLBACK (on_radiobutton_valid_disable),
338 NULL);
342 valid->radiobutton_disable_3 =
343 gtk_radio_button_new_with_label (gpiv->mouse_sel_group,
344 _("Enable area"));
345 gpiv->mouse_sel_group =
346 gtk_radio_button_group (GTK_RADIO_BUTTON
347 (valid->radiobutton_disable_3));
348 gtk_widget_ref (valid->radiobutton_disable_3);
349 gtk_object_set_data_full (GTK_OBJECT (main_window),
350 "radiobutton_disable_3",
351 valid->radiobutton_disable_3,
352 (GtkDestroyNotify) gtk_widget_unref);
353 gtk_widget_show (valid->radiobutton_disable_3);
354 gtk_box_pack_start (GTK_BOX (valid->vbox_disable),
355 valid->radiobutton_disable_3,
356 FALSE,
357 FALSE,
360 gtk_object_set_data (GTK_OBJECT (valid->radiobutton_disable_3),
361 "valid",
362 valid);
363 gtk_object_set_data (GTK_OBJECT (valid->radiobutton_disable_3),
364 "mouse_select",
365 "9" /* ENABLE_AREA_MS */);
366 g_signal_connect (GTK_OBJECT (valid->radiobutton_disable_3),
367 "enter",
368 G_CALLBACK (on_radiobutton_valid_disable_3_enter),
369 NULL);
370 g_signal_connect (GTK_OBJECT (valid->radiobutton_disable_3),
371 "leave",
372 G_CALLBACK (on_widget_leave),
373 NULL);
374 g_signal_connect (GTK_OBJECT (valid->radiobutton_disable_3),
375 "toggled",
376 G_CALLBACK (on_radiobutton_valid_disable),
377 NULL);
381 valid->radiobutton_disable_4 =
382 gtk_radio_button_new_with_label (gpiv->mouse_sel_group,
383 _("Disable area"));
384 gpiv->mouse_sel_group =
385 gtk_radio_button_group (GTK_RADIO_BUTTON
386 (valid->radiobutton_disable_4));
387 gtk_widget_ref (valid->radiobutton_disable_4);
388 gtk_object_set_data_full (GTK_OBJECT (main_window),
389 "radiobutton_disable_4",
390 valid->radiobutton_disable_4,
391 (GtkDestroyNotify) gtk_widget_unref);
392 gtk_widget_show (valid->radiobutton_disable_4);
393 gtk_box_pack_start (GTK_BOX (valid->vbox_disable),
394 valid->radiobutton_disable_4,
395 FALSE,
396 FALSE,
399 gtk_object_set_data (GTK_OBJECT (valid->radiobutton_disable_4),
400 "valid",
401 valid);
402 gtk_object_set_data (GTK_OBJECT (valid->radiobutton_disable_4),
403 "mouse_select",
404 "10" /* DISABLE_AREA_MS */);
405 g_signal_connect (GTK_OBJECT (valid->radiobutton_disable_4),
406 "enter",
407 G_CALLBACK (on_radiobutton_valid_disable_4_enter),
408 NULL);
409 g_signal_connect (GTK_OBJECT (valid->radiobutton_disable_4),
410 "leave",
411 G_CALLBACK (on_widget_leave),
412 NULL);
413 g_signal_connect (GTK_OBJECT (valid->radiobutton_disable_4),
414 "toggled",
415 G_CALLBACK (on_radiobutton_valid_disable),
416 NULL);
421 * Button for testing on velocity gradients
423 valid->button_gradient =
424 gtk_button_new_with_label ( _("validate on velocity gradient "));
425 gtk_widget_ref (valid->button_gradient);
426 gtk_object_set_data_full (GTK_OBJECT (main_window),
427 "button_gradient",
428 valid->button_gradient,
429 (GtkDestroyNotify) gtk_widget_unref);
430 gtk_widget_show (valid->button_gradient);
431 gtk_table_attach (GTK_TABLE (valid->table),
432 valid->button_gradient,
437 (GtkAttachOptions)(GTK_SHRINK /*FILL*/),
438 (GtkAttachOptions)(GTK_SHRINK),
442 gtk_tooltips_set_tip(gpiv->tooltips,
443 valid->button_gradient,
444 _("Disables PIV data that have a too large velocity "
445 "gradient over the Interrogation Area"),
446 NULL);
448 gtk_object_set_data (GTK_OBJECT (valid->button_gradient),
449 "valid",
450 valid);
451 g_signal_connect (GTK_OBJECT (valid->button_gradient),
452 "enter",
453 G_CALLBACK (on_button_valid_gradient_enter),
454 NULL);
455 g_signal_connect (GTK_OBJECT (valid->button_gradient),
456 "leave",
457 G_CALLBACK (on_widget_leave),
458 NULL);
459 g_signal_connect (GTK_OBJECT (valid->button_gradient),
460 "clicked",
461 G_CALLBACK (on_button_valid_gradient),
462 NULL);
468 * Frame for histogram of sub-pixel values (used to test on peak-locking
469 * effect)
472 valid->frame_histo = gtk_frame_new ( _("Histograms"));
473 gtk_widget_ref (valid->frame_histo);
474 gtk_object_set_data_full (GTK_OBJECT (main_window),
475 "frame_histo",
476 valid->frame_histo,
477 (GtkDestroyNotify) gtk_widget_unref);
478 gtk_widget_show (valid->frame_histo);
479 gtk_table_attach (GTK_TABLE (valid->table),
480 valid->frame_histo,
485 (GtkAttachOptions)(GTK_EXPAND | GTK_FILL),
486 (GtkAttachOptions) /* (GTK_SHRINK) */
487 (GTK_EXPAND | GTK_FILL),
493 valid->vbox_histo = gtk_vbox_new (FALSE,
495 gtk_widget_ref (valid->vbox_histo);
496 gtk_object_set_data_full (GTK_OBJECT (main_window),
497 "vbox_histo",
498 valid->vbox_histo,
499 (GtkDestroyNotify) gtk_widget_unref);
500 gtk_widget_show (valid->vbox_histo);
501 gtk_container_add (GTK_CONTAINER (valid->frame_histo),
502 valid->vbox_histo);
507 valid->hbox_histo_spin = gtk_hbox_new (FALSE,
509 gtk_widget_ref (valid->hbox_histo_spin);
510 gtk_object_set_data_full (GTK_OBJECT (main_window),
511 "hbox_histo_spin",
512 valid->hbox_histo_spin,
513 (GtkDestroyNotify) gtk_widget_unref);
514 gtk_widget_show (valid->hbox_histo_spin);
515 gtk_box_pack_start (GTK_BOX (valid->vbox_histo),
516 valid->hbox_histo_spin,
517 FALSE,
518 FALSE,
523 valid->label_histo_bins = gtk_label_new ( _("# bins: "));
524 gtk_widget_ref (valid->label_histo_bins);
525 gtk_object_set_data_full (GTK_OBJECT (main_window),
526 "label_histo_bins",
527 valid->label_histo_bins,
528 (GtkDestroyNotify) gtk_widget_unref);
529 gtk_widget_show (valid->label_histo_bins);
530 gtk_box_pack_start (GTK_BOX (valid->hbox_histo_spin),
531 valid->label_histo_bins,
532 FALSE,
533 FALSE,
539 * NBINS_DEFAULT defined in gpiv.h
541 valid->spinbutton_adj_histo_bins =
542 gtk_adjustment_new (GPIV_NBINS_DEFAULT,
544 100,
546 10,
547 100);
548 valid->spinbutton_histo_bins =
549 gtk_spin_button_new (GTK_ADJUSTMENT
550 (valid->spinbutton_adj_histo_bins),
553 gtk_widget_ref (valid->spinbutton_histo_bins);
554 gtk_object_set_data_full (GTK_OBJECT (main_window),
555 "spinbutton_histo_bins",
556 valid->spinbutton_histo_bins,
557 (GtkDestroyNotify) gtk_widget_unref);
558 gtk_widget_show (valid->spinbutton_histo_bins);
559 gtk_box_pack_start (GTK_BOX (valid->hbox_histo_spin),
560 valid->spinbutton_histo_bins,
561 FALSE,
562 FALSE,
565 gtk_object_set_data (GTK_OBJECT (valid->spinbutton_histo_bins),
566 "valid",
567 valid);
568 g_signal_connect (GTK_OBJECT (valid->spinbutton_histo_bins),
569 "changed",
570 G_CALLBACK (on_spinbutton_valid_peaklck_bins),
571 valid->spinbutton_histo_bins);
578 * Gnome2:
580 /* gtk_widget_push_colormap (GdkColormap *cmap) */
581 /* gtk_widget_push_visual (gdk_imlib_get_visual ()); */
582 /* gtk_widget_push_colormap (gdk_imlib_get_colormap ()); */
583 valid->canvas_histo = gnome_canvas_new ();
584 gtk_widget_pop_colormap ();
585 gtk_widget_pop_visual ();
586 gtk_widget_ref (valid->canvas_histo);
587 gtk_object_set_data_full (GTK_OBJECT (main_window),
588 "canvas_histo",
589 valid->canvas_histo,
590 (GtkDestroyNotify) gtk_widget_unref);
591 gtk_box_pack_start (GTK_BOX (valid->vbox_histo),
592 valid->canvas_histo,
593 TRUE,
594 TRUE,
596 gtk_widget_show (valid->canvas_histo);
601 valid->hbox_histo_buttons = gtk_hbox_new (FALSE,
603 gtk_widget_ref (valid->hbox_histo_buttons);
604 gtk_object_set_data_full (GTK_OBJECT (main_window),
605 "hbox_histo_buttons",
606 valid->hbox_histo_buttons,
607 (GtkDestroyNotify) gtk_widget_unref);
608 gtk_widget_show (valid->hbox_histo_buttons);
609 gtk_box_pack_start (GTK_BOX (valid->vbox_histo),
610 valid->hbox_histo_buttons,
611 FALSE,
612 FALSE,
618 valid->button_errvec_resstats =
619 gtk_button_new_with_label ( _("residu"));
620 gtk_widget_ref (valid->button_errvec_resstats);
621 gtk_object_set_data_full (GTK_OBJECT (main_window),
622 "button_errvec_resstats",
623 valid->button_errvec_resstats,
624 (GtkDestroyNotify) gtk_widget_unref);
625 gtk_widget_show (valid->button_errvec_resstats);
626 gtk_box_pack_start (GTK_BOX (valid->hbox_histo_buttons),
627 valid->button_errvec_resstats,
628 FALSE,
629 FALSE,
631 gtk_tooltips_set_tip(gpiv->tooltips,
632 valid->button_errvec_resstats,
633 _("calculates residus of displacements "
634 "and displays in a histogram"),
635 NULL);
637 gtk_object_set_data (GTK_OBJECT (valid->button_errvec_resstats),
638 "valid",
639 valid);
640 g_signal_connect (GTK_OBJECT (valid->button_errvec_resstats),
641 "enter",
642 G_CALLBACK (on_button_valid_errvec_resstats_enter),
643 NULL);
644 g_signal_connect (GTK_OBJECT (valid->button_errvec_resstats),
645 "leave",
646 G_CALLBACK (on_widget_leave),
647 NULL);
648 g_signal_connect (GTK_OBJECT (valid->button_errvec_resstats),
649 "clicked",
650 G_CALLBACK (on_button_valid_errvec_resstats),
651 NULL);
655 valid->button_peaklck = gtk_button_new_with_label ( _("sub-pixel"));
656 gtk_widget_ref (valid->button_peaklck);
657 gtk_object_set_data_full (GTK_OBJECT (main_window),
658 "button_peaklck",
659 valid->button_peaklck,
660 (GtkDestroyNotify) gtk_widget_unref);
661 gtk_widget_show (valid->button_peaklck);
662 gtk_box_pack_start (GTK_BOX (valid->hbox_histo_buttons),
663 valid->button_peaklck,
664 FALSE,
665 FALSE,
667 gtk_tooltips_set_tip(gpiv->tooltips,
668 valid->button_peaklck,
669 _("shows histogram of sub-pixel displacements "
670 "to check on peak-locking effects"),
671 NULL);
673 gtk_object_set_data (GTK_OBJECT (valid->button_peaklck),
674 "valid",
675 valid);
676 g_signal_connect (GTK_OBJECT (valid->button_peaklck),
677 "enter",
678 G_CALLBACK (on_button_valid_peaklck_enter),
679 valid->button_peaklck);
680 g_signal_connect (GTK_OBJECT (valid->button_peaklck),
681 "leave",
682 G_CALLBACK (on_widget_leave),
683 valid->button_peaklck);
684 g_signal_connect (GTK_OBJECT (valid->button_peaklck),
685 "clicked",
686 G_CALLBACK (on_button_valid_peaklck),
687 valid->button_peaklck);
692 valid->button_uhisto = gtk_button_new_with_label ( _("U-comp"));
693 gtk_widget_ref (valid->button_uhisto);
694 gtk_object_set_data_full (GTK_OBJECT (main_window),
695 "button_uhisto",
696 valid->button_uhisto,
697 (GtkDestroyNotify) gtk_widget_unref);
698 gtk_widget_show (valid->button_uhisto);
699 gtk_box_pack_start (GTK_BOX (valid->hbox_histo_buttons),
700 valid->button_uhisto,
701 FALSE,
702 FALSE,
704 gtk_tooltips_set_tip(gpiv->tooltips,
705 valid->button_uhisto,
706 _("shows histogram of horizontal displacements.\n\
707 Only this histogram will be saved"),
708 NULL);
710 gtk_object_set_data (GTK_OBJECT (valid->button_uhisto),
711 "valid",
712 valid);
713 g_signal_connect (GTK_OBJECT (valid->button_uhisto),
714 "enter",
715 G_CALLBACK (on_button_valid_uhisto_enter),
716 valid->button_uhisto);
717 g_signal_connect (GTK_OBJECT (valid->button_uhisto),
718 "leave",
719 G_CALLBACK (on_widget_leave),
720 valid->button_uhisto);
721 g_signal_connect (GTK_OBJECT (valid->button_uhisto),
722 "clicked",
723 G_CALLBACK (on_button_valid_uhisto),
724 valid->button_uhisto);
728 valid->button_vhisto = gtk_button_new_with_label ( _("V-comp"));
729 gtk_widget_ref (valid->button_vhisto);
730 gtk_object_set_data_full (GTK_OBJECT (main_window),
731 "button_vhisto",
732 valid->button_vhisto,
733 (GtkDestroyNotify) gtk_widget_unref);
734 gtk_widget_show (valid->button_vhisto);
735 gtk_box_pack_start (GTK_BOX (valid->hbox_histo_buttons),
736 valid->button_vhisto,
737 FALSE,
738 FALSE,
740 gtk_tooltips_set_tip(gpiv->tooltips,
741 valid->button_vhisto,
742 _("shows histogram of vertical displacements.\n\
743 Only this histogram will be saved"),
744 NULL);
746 gtk_object_set_data (GTK_OBJECT (valid->button_vhisto),
747 "valid",
748 valid);
749 g_signal_connect (GTK_OBJECT (valid->button_vhisto),
750 "enter",
751 G_CALLBACK (on_button_valid_vhisto_enter),
752 valid->button_vhisto);
753 g_signal_connect (GTK_OBJECT (valid->button_vhisto),
754 "leave",
755 G_CALLBACK (on_widget_leave),
756 valid->button_vhisto);
757 g_signal_connect (GTK_OBJECT (valid->button_vhisto),
758 "clicked",
759 G_CALLBACK (on_button_valid_vhisto),
760 valid->button_vhisto);
766 * Errvec frame
768 valid->frame_errvec = gtk_frame_new ( _("Outliers"));
769 gtk_widget_ref (valid->frame_errvec);
770 gtk_object_set_data_full (GTK_OBJECT (main_window),
771 "frame_errvec",
772 valid->frame_errvec,
773 (GtkDestroyNotify)
774 gtk_widget_unref);
775 gtk_widget_show (valid->frame_errvec);
776 gtk_table_attach (GTK_TABLE (valid->table),
777 valid->frame_errvec,
782 (GtkAttachOptions)(GTK_FILL),
783 (GtkAttachOptions)(GTK_SHRINK),
789 valid->vbox_errvec = gtk_vbox_new (FALSE,
791 gtk_widget_ref (valid->vbox_errvec);
792 gtk_object_set_data_full (GTK_OBJECT (main_window),
793 "vbox_errvec",
794 valid->vbox_errvec,
795 (GtkDestroyNotify) gtk_widget_unref);
796 gtk_widget_show (valid->vbox_errvec);
797 gtk_container_add (GTK_CONTAINER (valid->frame_errvec),
798 valid->vbox_errvec);
803 * Spinner for array length of neighboring PIV data
805 valid->hbox_errvec_neighbors_spin = gtk_hbox_new (FALSE,
807 gtk_widget_ref (valid->hbox_errvec_neighbors_spin);
808 gtk_object_set_data_full (GTK_OBJECT (main_window),
809 "hbox_errvec_neighbors_spin",
810 valid->hbox_errvec_neighbors_spin,
811 (GtkDestroyNotify) gtk_widget_unref);
812 gtk_widget_show (valid->hbox_errvec_neighbors_spin);
813 gtk_box_pack_start (GTK_BOX (valid->vbox_errvec),
814 valid->hbox_errvec_neighbors_spin,
815 TRUE,
816 TRUE,
821 valid->label_errvec_neighbors = gtk_label_new ( _("Neighbors: "));
822 gtk_widget_ref (valid->label_errvec_neighbors);
823 gtk_object_set_data_full (GTK_OBJECT (main_window),
824 "label_errvec_neighbors",
825 valid->label_errvec_neighbors,
826 (GtkDestroyNotify) gtk_widget_unref);
827 gtk_widget_show (valid->label_errvec_neighbors);
828 gtk_box_pack_start (GTK_BOX (valid->hbox_errvec_neighbors_spin),
829 valid->label_errvec_neighbors,
830 FALSE,
831 FALSE,
836 valid->spinbutton_adj_errvec_neighbors =
837 gtk_adjustment_new (gl_valid_par->neighbors,
839 GPIV_VALIDPAR_MAX__NEIGHBORS,
843 valid->spinbutton_errvec_neighbors =
844 gtk_spin_button_new (GTK_ADJUSTMENT (valid->spinbutton_adj_errvec_neighbors),
847 gtk_widget_ref (valid->spinbutton_errvec_neighbors);
848 gtk_object_set_data_full (GTK_OBJECT (main_window),
849 "spinbutton_errvec_neighbors",
850 valid->spinbutton_errvec_neighbors,
851 (GtkDestroyNotify) gtk_widget_unref);
852 gtk_widget_show (valid->spinbutton_errvec_neighbors);
853 gtk_box_pack_start (GTK_BOX (valid->hbox_errvec_neighbors_spin),
854 valid->spinbutton_errvec_neighbors,
855 TRUE,
856 TRUE,
859 gtk_object_set_data (GTK_OBJECT (valid->spinbutton_errvec_neighbors),
860 "valid",
861 valid);
862 g_signal_connect (GTK_OBJECT (valid->spinbutton_errvec_neighbors),
863 "changed",
864 G_CALLBACK (on_spinbutton_valid_errvec_neighbors),
865 NULL);
871 * Spinner for data yield
873 valid->hbox_errvec_yield_spin = gtk_hbox_new (FALSE,
875 gtk_widget_ref (valid->hbox_errvec_yield_spin);
876 gtk_object_set_data_full (GTK_OBJECT (main_window),
877 "hbox_errvec_yield_spin",
878 valid->hbox_errvec_yield_spin,
879 (GtkDestroyNotify) gtk_widget_unref);
880 gtk_widget_show (valid->hbox_errvec_yield_spin);
881 gtk_box_pack_start (GTK_BOX (valid->vbox_errvec),
882 valid->hbox_errvec_yield_spin,
883 TRUE,
884 TRUE,
889 valid->label_errvec_yield = gtk_label_new ( _("Data yield: "));
890 gtk_widget_ref (valid->label_errvec_yield);
891 gtk_object_set_data_full (GTK_OBJECT (main_window),
892 "label_errvec_yield",
893 valid->label_errvec_yield,
894 (GtkDestroyNotify) gtk_widget_unref);
895 gtk_widget_show (valid->label_errvec_yield);
896 gtk_box_pack_start (GTK_BOX (valid->hbox_errvec_yield_spin),
897 valid->label_errvec_yield,
898 FALSE,
899 FALSE,
904 valid->spinbutton_adj_errvec_yield =
905 gtk_adjustment_new (gl_valid_par->data_yield,
906 0.0,
907 1.0,
908 0.01,
909 0.1,
910 0.1);
911 valid->spinbutton_errvec_yield =
912 gtk_spin_button_new (GTK_ADJUSTMENT (valid->spinbutton_adj_errvec_yield),
913 0.1,
915 gtk_widget_ref (valid->spinbutton_errvec_yield);
916 gtk_object_set_data_full (GTK_OBJECT (main_window),
917 "spinbutton_errvec_yield",
918 valid->spinbutton_errvec_yield,
919 (GtkDestroyNotify) gtk_widget_unref);
920 gtk_widget_show (valid->spinbutton_errvec_yield);
921 gtk_box_pack_start (GTK_BOX (valid->hbox_errvec_yield_spin),
922 valid->spinbutton_errvec_yield,
923 TRUE,
924 TRUE,
927 gtk_object_set_data (GTK_OBJECT (valid->spinbutton_errvec_yield),
928 "valid",
929 valid);
930 g_signal_connect (GTK_OBJECT (valid->spinbutton_errvec_yield),
931 "changed",
932 G_CALLBACK (on_spinbutton_valid_errvec_yield),
933 NULL);
939 * Spinner for threshold residu
940 */ valid->hbox_errvec_residu_spin = gtk_hbox_new (FALSE,
942 gtk_widget_ref (valid->hbox_errvec_residu_spin);
943 gtk_object_set_data_full (GTK_OBJECT (main_window),
944 "hbox_errvec_residu_spin",
945 valid->hbox_errvec_residu_spin,
946 (GtkDestroyNotify) gtk_widget_unref);
947 gtk_widget_show (valid->hbox_errvec_residu_spin);
948 gtk_box_pack_start (GTK_BOX (valid->vbox_errvec),
949 valid->hbox_errvec_residu_spin,
950 TRUE,
951 TRUE,
956 valid->label_errvec_res = gtk_label_new ( _("Threshold: "));
957 gtk_widget_ref (valid->label_errvec_res);
958 gtk_object_set_data_full (GTK_OBJECT (main_window),
959 "label_errvec_res",
960 valid->label_errvec_res,
961 (GtkDestroyNotify) gtk_widget_unref);
962 gtk_widget_show (valid->label_errvec_res);
963 gtk_box_pack_start (GTK_BOX (valid->hbox_errvec_residu_spin),
964 valid->label_errvec_res,
965 FALSE,
966 FALSE,
971 valid->spinbutton_adj_errvec_res =
972 gtk_adjustment_new (gl_valid_par->residu_max,
973 0.,
974 THRESHOLD_MAX,
975 0.1,
976 1.0,
977 1.0);
978 valid->spinbutton_errvec_res =
979 gtk_spin_button_new (GTK_ADJUSTMENT (valid->spinbutton_adj_errvec_res),
980 0.1,
982 gtk_widget_ref (valid->spinbutton_errvec_res);
983 gtk_object_set_data_full (GTK_OBJECT (main_window),
984 "spinbutton_errvec_res",
985 valid->spinbutton_errvec_res,
986 (GtkDestroyNotify) gtk_widget_unref);
987 gtk_widget_show (valid->spinbutton_errvec_res);
988 gtk_box_pack_start (GTK_BOX (valid->hbox_errvec_residu_spin),
989 valid->spinbutton_errvec_res,
990 TRUE,
991 TRUE,
994 gtk_object_set_data (GTK_OBJECT (valid->spinbutton_errvec_res),
995 "valid",
996 valid);
997 g_signal_connect (GTK_OBJECT (valid->spinbutton_errvec_res),
998 "changed",
999 G_CALLBACK (on_spinbutton_valid_errvec_res),
1000 NULL);
1005 valid->checkbutton_errvec_disres =
1006 gtk_check_button_new_with_label ( _("Show SNR values"));
1007 gtk_widget_ref (valid->checkbutton_errvec_disres);
1008 gtk_object_set_data_full (GTK_OBJECT (main_window),
1009 "checkbutton_errvec_disres",
1010 valid->checkbutton_errvec_disres,
1011 (GtkDestroyNotify) gtk_widget_unref);
1012 gtk_widget_show (valid->checkbutton_errvec_disres);
1013 gtk_box_pack_start (GTK_BOX (valid->vbox_errvec),
1014 valid->checkbutton_errvec_disres,
1015 FALSE,
1016 FALSE,
1019 gtk_object_set_data (GTK_OBJECT (valid->checkbutton_errvec_disres),
1020 "valid",
1021 valid);
1022 g_signal_connect (GTK_OBJECT (valid->checkbutton_errvec_disres),
1023 "enter",
1024 G_CALLBACK
1025 (on_checkbutton_valid_errvec_disres_enter),
1026 NULL);
1027 g_signal_connect (GTK_OBJECT (valid->checkbutton_errvec_disres),
1028 "leave",
1029 G_CALLBACK (on_widget_leave),
1030 NULL);
1031 g_signal_connect (GTK_OBJECT (valid->checkbutton_errvec_disres),
1032 "toggled",
1033 G_CALLBACK (on_checkbutton_valid_errvec_disres),
1034 NULL);
1035 if (v_color == SHOW_SNR) {
1036 gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON
1037 (valid->checkbutton_errvec_disres),
1038 TRUE);
1043 valid->frame_errvec_residu = gtk_frame_new ( _("Residu type:"));
1044 gtk_widget_ref (valid->frame_errvec_residu);
1045 gtk_object_set_data_full (GTK_OBJECT (main_window),
1046 "frame_errvec_residu",
1047 valid->frame_errvec_residu,
1048 (GtkDestroyNotify) gtk_widget_unref);
1049 gtk_widget_show (valid->frame_errvec_residu);
1050 gtk_box_pack_start (GTK_BOX (valid->vbox_errvec),
1051 valid->frame_errvec_residu,
1052 FALSE,
1053 FALSE,
1055 gtk_frame_set_shadow_type (GTK_FRAME (valid->frame_errvec_residu),
1056 GTK_SHADOW_NONE);
1060 valid->vbox_errvec_residu = gtk_vbox_new (FALSE,
1062 gtk_widget_ref (valid->vbox_errvec_residu);
1063 gtk_object_set_data_full (GTK_OBJECT (main_window),
1064 "vbox_errvec_residu",
1065 valid->vbox_errvec_residu,
1066 (GtkDestroyNotify) gtk_widget_unref);
1067 gtk_widget_show (valid->vbox_errvec_residu);
1068 gtk_container_add (GTK_CONTAINER (valid->frame_errvec_residu),
1069 valid->vbox_errvec_residu);
1073 valid->radiobutton_errvec_residu_normmedian =
1074 gtk_radio_button_new_with_label (valid->vbox_errvec_residu_group,
1075 _("Normalized median"));
1076 valid->vbox_errvec_residu_group =
1077 gtk_radio_button_group (GTK_RADIO_BUTTON
1078 (valid->radiobutton_errvec_residu_normmedian));
1079 gtk_widget_ref (valid->radiobutton_errvec_residu_normmedian);
1080 gtk_object_set_data_full (GTK_OBJECT (main_window),
1081 "radiobutton_errvec_residu_normmedian",
1082 valid->radiobutton_errvec_residu_normmedian,
1083 (GtkDestroyNotify) gtk_widget_unref);
1084 gtk_object_set_data (GTK_OBJECT (valid->radiobutton_errvec_residu_normmedian),
1085 "valid",
1086 valid);
1087 gtk_object_set_data (GTK_OBJECT (valid->radiobutton_errvec_residu_normmedian),
1088 "residu",
1089 "2");
1090 gtk_widget_show (valid->radiobutton_errvec_residu_normmedian);
1091 gtk_box_pack_start (GTK_BOX (valid->vbox_errvec_residu),
1092 valid->radiobutton_errvec_residu_normmedian,
1093 FALSE,
1094 FALSE,
1096 g_signal_connect (GTK_OBJECT (valid->radiobutton_errvec_residu_normmedian),
1097 "enter",
1098 G_CALLBACK
1099 (on_radiobutton_valid_errvec_residu_enter),
1100 NULL);
1101 g_signal_connect (GTK_OBJECT (valid->radiobutton_errvec_residu_normmedian),
1102 "leave",
1103 G_CALLBACK (on_widget_leave),
1104 NULL);
1105 g_signal_connect (GTK_OBJECT (valid->radiobutton_errvec_residu_normmedian),
1106 "clicked",
1107 G_CALLBACK (on_radiobutton_valid_errvec_residu),
1108 NULL);
1109 if (gl_valid_par->residu_type == 2) {
1110 gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON
1111 (valid->radiobutton_errvec_residu_normmedian),
1112 TRUE);
1117 valid->radiobutton_errvec_residu_median =
1118 gtk_radio_button_new_with_label (valid->vbox_errvec_residu_group,
1119 _("Median"));
1120 valid->vbox_errvec_residu_group =
1121 gtk_radio_button_group (GTK_RADIO_BUTTON
1122 (valid->radiobutton_errvec_residu_median));
1123 gtk_widget_ref (valid->radiobutton_errvec_residu_median);
1124 gtk_object_set_data_full (GTK_OBJECT (main_window),
1125 "radiobutton_errvec_residu_median",
1126 valid->radiobutton_errvec_residu_median,
1127 (GtkDestroyNotify) gtk_widget_unref);
1128 gtk_object_set_data (GTK_OBJECT (valid->radiobutton_errvec_residu_median),
1129 "valid",
1130 valid);
1131 gtk_object_set_data (GTK_OBJECT (valid->radiobutton_errvec_residu_median),
1132 "residu",
1133 "1");
1134 gtk_widget_show (valid->radiobutton_errvec_residu_median);
1135 gtk_box_pack_start (GTK_BOX (valid->vbox_errvec_residu),
1136 valid->radiobutton_errvec_residu_median,
1137 FALSE,
1138 FALSE,
1140 g_signal_connect (GTK_OBJECT (valid->radiobutton_errvec_residu_median),
1141 "enter",
1142 G_CALLBACK
1143 (on_radiobutton_valid_errvec_residu_enter),
1144 NULL);
1145 g_signal_connect (GTK_OBJECT (valid->radiobutton_errvec_residu_median),
1146 "leave",
1147 G_CALLBACK (on_widget_leave),
1148 NULL);
1149 g_signal_connect (GTK_OBJECT (valid->radiobutton_errvec_residu_median),
1150 "clicked",
1151 G_CALLBACK (on_radiobutton_valid_errvec_residu),
1152 NULL);
1153 if (gl_valid_par->residu_type == 1) {
1154 gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON
1155 (valid->radiobutton_errvec_residu_median),
1156 TRUE);
1161 valid->radiobutton_errvec_residu_snr =
1162 gtk_radio_button_new_with_label (valid->vbox_errvec_residu_group,
1163 _("Snr"));
1164 valid->vbox_errvec_residu_group =
1165 gtk_radio_button_group (GTK_RADIO_BUTTON
1166 (valid->radiobutton_errvec_residu_snr));
1167 gtk_widget_ref (valid->radiobutton_errvec_residu_snr);
1168 gtk_object_set_data_full (GTK_OBJECT (main_window),
1169 "radiobutton_errvec_residu_snr",
1170 valid->radiobutton_errvec_residu_snr,
1171 (GtkDestroyNotify) gtk_widget_unref);
1172 gtk_widget_show (valid->radiobutton_errvec_residu_snr);
1173 gtk_box_pack_start (GTK_BOX (valid->vbox_errvec_residu),
1174 valid->radiobutton_errvec_residu_snr,
1175 FALSE,
1176 FALSE,
1179 gtk_object_set_data (GTK_OBJECT (valid->radiobutton_errvec_residu_snr),
1180 "valid",
1181 valid);
1182 gtk_object_set_data (GTK_OBJECT (valid->radiobutton_errvec_residu_snr),
1183 "residu",
1184 "0");
1185 g_signal_connect (GTK_OBJECT (valid->radiobutton_errvec_residu_snr),
1186 "enter",
1187 G_CALLBACK
1188 (on_radiobutton_valid_errvec_residu_enter),
1189 NULL);
1190 g_signal_connect (GTK_OBJECT (valid->radiobutton_errvec_residu_snr),
1191 "leave",
1192 G_CALLBACK (on_widget_leave),
1193 NULL);
1194 g_signal_connect (GTK_OBJECT (valid->radiobutton_errvec_residu_snr),
1195 "toggled",
1196 G_CALLBACK (on_radiobutton_valid_errvec_residu),
1197 NULL);
1198 if (gl_valid_par->residu_type == 0) {
1199 gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON
1200 (valid->radiobutton_errvec_residu_snr),
1201 TRUE);
1207 * A long time ago, the GtkWidget valid->button_errvec_resstats was *here*.
1208 * Though it felt in love with valid->button_peaklock.
1209 * Now they are living happily cheeck tot cheeck.
1210 * No, they haven't got child widgets, yet. But maybe, one day ...
1215 * Radio buttons for substitution type
1217 valid->frame_errvec_subst = gtk_frame_new ( _("Substituted by:"));
1218 gtk_widget_ref (valid->frame_errvec_subst);
1219 gtk_object_set_data_full (GTK_OBJECT (main_window),
1220 "frame_errvec_subst",
1221 valid->frame_errvec_subst,
1222 (GtkDestroyNotify) gtk_widget_unref);
1223 gtk_widget_show (valid->frame_errvec_subst);
1224 gtk_box_pack_start (GTK_BOX (valid->vbox_errvec),
1225 valid->frame_errvec_subst,
1226 FALSE,
1227 FALSE,
1229 gtk_frame_set_shadow_type (GTK_FRAME (valid->frame_errvec_subst),
1230 GTK_SHADOW_NONE);
1234 valid->vbox_errvec_subst = gtk_vbox_new (FALSE,
1236 gtk_widget_ref (valid->vbox_errvec_subst);
1237 gtk_object_set_data_full (GTK_OBJECT (main_window),
1238 "vbox_errvec_subst",
1239 valid->vbox_errvec_subst,
1240 (GtkDestroyNotify) gtk_widget_unref);
1241 gtk_widget_show (valid->vbox_errvec_subst);
1242 gtk_container_add (GTK_CONTAINER (valid->frame_errvec_subst),
1243 valid->vbox_errvec_subst);
1248 valid->radiobutton_errvec_subst_0 =
1249 gtk_radio_button_new_with_label(valid->vbox_errvec_subst_group,
1250 _("Nothing"));
1251 valid->vbox_errvec_subst_group =
1252 gtk_radio_button_group (GTK_RADIO_BUTTON
1253 (valid->radiobutton_errvec_subst_0));
1254 gtk_widget_ref(valid->radiobutton_errvec_subst_0);
1255 gtk_object_set_data_full (GTK_OBJECT (main_window),
1256 "radiobutton_errvec_subst_0",
1257 valid->radiobutton_errvec_subst_0,
1258 (GtkDestroyNotify) gtk_widget_unref);
1259 gtk_widget_show(valid->radiobutton_errvec_subst_0);
1260 gtk_box_pack_start (GTK_BOX(valid->vbox_errvec_subst),
1261 valid->radiobutton_errvec_subst_0,
1262 FALSE,
1263 FALSE,
1266 gtk_object_set_data (GTK_OBJECT (valid->radiobutton_errvec_subst_0),
1267 "valid",
1268 valid);
1269 gtk_object_set_data (GTK_OBJECT (valid->radiobutton_errvec_subst_0),
1270 "substitute",
1271 "0" /* GPIV_VALID_SUBSTYPE__NONE */);
1272 g_signal_connect (GTK_OBJECT (valid->radiobutton_errvec_subst_0),
1273 "enter",
1274 G_CALLBACK
1275 (on_radiobutton_valid_errvec_subst_enter),
1276 NULL);
1277 g_signal_connect (GTK_OBJECT (valid->radiobutton_errvec_subst_0),
1278 "leave",
1279 G_CALLBACK (on_widget_leave),
1280 NULL);
1281 g_signal_connect (GTK_OBJECT (valid->radiobutton_errvec_subst_0),
1282 "toggled",
1283 G_CALLBACK (on_radiobutton_valid_errvec_subst),
1284 NULL);
1285 if (gl_valid_par->subst_type == GPIV_VALID_SUBSTYPE__NONE) {
1286 gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON
1287 (valid->radiobutton_errvec_subst_0),
1288 TRUE);
1294 * Substitute by mean of surroundings
1296 valid->radiobutton_errvec_subst_1 =
1297 gtk_radio_button_new_with_label (valid->vbox_errvec_subst_group,
1298 _("Mean of surroundings"));
1299 valid->vbox_errvec_subst_group =
1300 gtk_radio_button_group (GTK_RADIO_BUTTON
1301 (valid->radiobutton_errvec_subst_1));
1302 gtk_widget_ref (valid->radiobutton_errvec_subst_1);
1303 gtk_object_set_data_full (GTK_OBJECT (main_window),
1304 "radiobutton_errvec_subst_1",
1305 valid->radiobutton_errvec_subst_1,
1306 (GtkDestroyNotify) gtk_widget_unref);
1307 gtk_widget_show(valid->radiobutton_errvec_subst_1);
1308 gtk_box_pack_start (GTK_BOX(valid->vbox_errvec_subst),
1309 valid->radiobutton_errvec_subst_1,
1310 FALSE,
1311 FALSE,
1314 gtk_object_set_data (GTK_OBJECT (valid->radiobutton_errvec_subst_1),
1315 "valid",
1316 valid);
1317 gtk_object_set_data (GTK_OBJECT (valid->radiobutton_errvec_subst_1),
1318 "substitute",
1319 "1" /* GPIV_VALID_SUBSTYPE__L_MEAN */);
1320 g_signal_connect (GTK_OBJECT (valid->radiobutton_errvec_subst_1),
1321 "enter",
1322 G_CALLBACK
1323 (on_radiobutton_valid_errvec_subst_enter),
1324 NULL);
1325 g_signal_connect (GTK_OBJECT (valid->radiobutton_errvec_subst_1),
1326 "leave",
1327 G_CALLBACK (on_widget_leave),
1328 NULL);
1329 g_signal_connect (GTK_OBJECT (valid->radiobutton_errvec_subst_1),
1330 "toggled",
1331 G_CALLBACK (on_radiobutton_valid_errvec_subst),
1332 NULL);
1337 * Substitute by median of surroundings
1339 valid->radiobutton_errvec_subst_2 =
1340 gtk_radio_button_new_with_label (valid->vbox_errvec_subst_group,
1341 _("Median"));
1342 valid->vbox_errvec_subst_group =
1343 gtk_radio_button_group (GTK_RADIO_BUTTON
1344 (valid->radiobutton_errvec_subst_2));
1345 gtk_widget_ref (valid->radiobutton_errvec_subst_2);
1346 gtk_object_set_data_full (GTK_OBJECT (main_window),
1347 "radiobutton_errvec_subst_2",
1348 valid->radiobutton_errvec_subst_2,
1349 (GtkDestroyNotify) gtk_widget_unref);
1350 gtk_widget_show (valid->radiobutton_errvec_subst_2);
1351 gtk_box_pack_start (GTK_BOX (valid->vbox_errvec_subst),
1352 valid->radiobutton_errvec_subst_2,
1353 FALSE,
1354 FALSE,
1357 gtk_object_set_data (GTK_OBJECT (valid->radiobutton_errvec_subst_2),
1358 "valid",
1359 valid);
1360 gtk_object_set_data (GTK_OBJECT (valid->radiobutton_errvec_subst_2),
1361 "substitute",
1362 "2" /* GPIV_VALID_SUBSTYPE__MEDIAN */);
1363 g_signal_connect (GTK_OBJECT (valid->radiobutton_errvec_subst_2),
1364 "enter",
1365 G_CALLBACK(on_radiobutton_valid_errvec_subst_enter),
1366 NULL);
1367 g_signal_connect (GTK_OBJECT (valid->radiobutton_errvec_subst_2),
1368 "leave",
1369 G_CALLBACK (on_widget_leave),
1370 NULL);
1371 g_signal_connect (GTK_OBJECT (valid->radiobutton_errvec_subst_2),
1372 "toggled",
1373 G_CALLBACK (on_radiobutton_valid_errvec_subst),
1374 NULL);
1375 if (gl_valid_par->subst_type == GPIV_VALID_SUBSTYPE__MEDIAN ) {
1376 gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON
1377 (valid->radiobutton_errvec_subst_2),
1378 TRUE);
1383 valid->radiobutton_errvec_subst_3 =
1384 gtk_radio_button_new_with_label (valid->vbox_errvec_subst_group,
1385 _("Next highest corr. peak"));
1386 valid->vbox_errvec_subst_group =
1387 gtk_radio_button_group (GTK_RADIO_BUTTON
1388 (valid->radiobutton_errvec_subst_3));
1389 gtk_widget_ref (valid->radiobutton_errvec_subst_3);
1390 gtk_object_set_data_full (GTK_OBJECT (main_window),
1391 "radiobutton_errvec_subst_3",
1392 valid->radiobutton_errvec_subst_3,
1393 (GtkDestroyNotify) gtk_widget_unref);
1394 gtk_widget_show (valid->radiobutton_errvec_subst_3);
1395 gtk_box_pack_start (GTK_BOX (valid->vbox_errvec_subst),
1396 valid->radiobutton_errvec_subst_3,
1397 FALSE,
1398 FALSE,
1401 gtk_object_set_data (GTK_OBJECT (valid->radiobutton_errvec_subst_3),
1402 "valid",
1403 valid);
1404 gtk_object_set_data (GTK_OBJECT (valid->radiobutton_errvec_subst_3),
1405 "substitute",
1406 "3" /* GPIV_VALID_SUBSTYPE__COV_PEAK */);
1407 g_signal_connect (GTK_OBJECT (valid->radiobutton_errvec_subst_3),
1408 "enter",
1409 G_CALLBACK
1410 (on_radiobutton_valid_errvec_subst_enter),
1411 NULL);
1412 g_signal_connect (GTK_OBJECT (valid->radiobutton_errvec_subst_3),
1413 "leave",
1414 G_CALLBACK (on_widget_leave),
1415 NULL);
1416 g_signal_connect (GTK_OBJECT (valid->radiobutton_errvec_subst_3),
1417 "toggled",
1418 G_CALLBACK (on_radiobutton_valid_errvec_subst),
1419 NULL);
1420 if (gl_valid_par->subst_type == GPIV_VALID_SUBSTYPE__COR_PEAK) {
1421 gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON
1422 (valid->radiobutton_errvec_subst_3),
1423 TRUE);
1428 valid->button_errvec =
1429 gtk_button_new_with_label ( _("validate on outliers"));
1430 gtk_widget_ref (valid->button_errvec);
1431 gtk_object_set_data_full (GTK_OBJECT (main_window),
1432 "button_errvec",
1433 valid->button_errvec,
1434 (GtkDestroyNotify) gtk_widget_unref);
1435 gtk_widget_show (valid->button_errvec);
1436 gtk_box_pack_start (GTK_BOX (valid->vbox_errvec),
1437 valid->button_errvec,
1438 FALSE,
1439 FALSE,
1441 gtk_tooltips_set_tip(gpiv->tooltips,
1442 valid->button_errvec,
1443 _("substitutes outliers"),
1444 NULL);
1446 gtk_object_set_data (GTK_OBJECT (valid->button_errvec),
1447 "valid",
1448 valid);
1449 g_signal_connect (GTK_OBJECT (valid->button_errvec),
1450 "enter",
1451 G_CALLBACK (on_button_valid_errvec_enter),
1452 NULL);
1453 g_signal_connect (GTK_OBJECT (valid->button_errvec),
1454 "leave",
1455 G_CALLBACK (on_widget_leave),
1456 NULL);
1457 g_signal_connect (GTK_OBJECT (valid->button_errvec),
1458 "clicked",
1459 G_CALLBACK (on_button_valid_errvec),
1460 NULL);
1463 return valid;