2 /*----------------------------------------------------------------------
4 gpiv - Graphic program for Particle Image Velocimetry, based on gtk/gnome
7 Copyright (C) 2002, 2003, 2004 Gerber van der Graaf
9 This file is part of gpiv.
11 Gpiv is free software; you can redistribute it and/or modify
12 it under the terms of the GNU General Public License as published by
13 the Free Software Foundation; either version 2, or (at your option)
16 This program is distributed in the hope that it will be useful,
17 but WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 GNU General Public License for more details.
21 You should have received a copy of the GNU General Public License
22 along with this program; if not, write to the Free Software Foundation,
23 Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
25 ----------------------------------------------------------------------*/
28 * PIV Validation interface
29 * $Log: pivvalid_interface.c,v $
30 * Revision 1.11 2007-12-19 08:42:35 gerber
33 * Revision 1.10 2007-11-23 16:24:08 gerber
34 * release 0.5.0: Kafka
36 * Revision 1.9 2007-01-29 11:27:44 gerber
37 * added image formats png, gif, tif png, bmp, improved buffer display
39 * Revision 1.8 2006/01/31 14:28:13 gerber
42 * Revision 1.6 2005/02/12 14:12:12 gerber
43 * Changed tabular names and titles
45 * Revision 1.5 2005/01/19 15:53:42 gerber
46 * Initiation of Data Acquisition (DAC); trigerring of lasers and camera
47 * by using RTAI and Realtime Linux, recording images from IEEE1394
48 * (Firewire) IIDC compliant camera's
50 * Revision 1.4 2004/10/15 19:24:05 gerber
51 * GPIV_ and Gpiv prefix to defines and structure names of libgpiv
53 * Revision 1.3 2004/06/14 21:19:23 gerber
54 * Image depth up to 16 bits.
55 * Improvement "single int" and "drag int" in Eval tab.
56 * Viewer's pop-up menu.
57 * Adaption for gpiv_matrix_* and gpiv_vector_*.
59 * See Changelog for further info.
61 * Revision 1.2 2003/08/22 15:24:52 gerber
62 * interactive spatial scaling
64 * Revision 1.1.1.1 2003/06/17 17:10:52 gerber
74 /* #include "console.h" */
76 #include "pivvalid_interface.h"
80 create_pivvalid (GnomeApp
*main_window
,
83 /*-----------------------------------------------------------------------------
86 GpivConsole
* gpiv
= gtk_object_get_data (GTK_OBJECT (main_window
), "gpiv");
87 PivValid
*valid
= g_new0(PivValid
, 1);
91 valid
->vbox_label
= gtk_vbox_new (FALSE
,
93 gtk_widget_ref(valid
->vbox_label
);
94 gtk_object_set_data_full (GTK_OBJECT (main_window
),
97 (GtkDestroyNotify
) gtk_widget_unref
);
98 gtk_widget_show(valid
->vbox_label
);
99 gtk_container_add (GTK_CONTAINER (container
),
102 valid
->label_title
= gtk_label_new( _("Piv data validation"));
103 gtk_widget_ref(valid
->label_title
);
104 gtk_object_set_data_full (GTK_OBJECT (main_window
),
107 (GtkDestroyNotify
) gtk_widget_unref
);
108 gtk_widget_show (valid
->label_title
);
109 gtk_box_pack_start (GTK_BOX (valid
->vbox_label
),
119 valid
->vbox_scroll
= gtk_vbox_new (FALSE
,
121 gtk_widget_ref (valid
->vbox_scroll
);
122 gtk_object_set_data_full (GTK_OBJECT (main_window
),
125 (GtkDestroyNotify
) gtk_widget_unref
);
126 gtk_widget_show (valid
->vbox_scroll
);
127 gtk_box_pack_start (GTK_BOX (valid
->vbox_label
),
134 valid
->scrolledwindow
= gtk_scrolled_window_new (NULL
,
136 gtk_widget_ref (valid
->scrolledwindow
);
137 gtk_object_set_data_full (GTK_OBJECT (main_window
),
139 valid
->scrolledwindow
,
140 (GtkDestroyNotify
) gtk_widget_unref
);
141 gtk_widget_show (valid
->scrolledwindow
);
142 gtk_box_pack_start (GTK_BOX (valid
->vbox_scroll
),
143 valid
->scrolledwindow
,
147 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW
148 (valid
->scrolledwindow
),
150 GTK_POLICY_AUTOMATIC
);
155 valid
->viewport
= gtk_viewport_new (NULL
,
157 gtk_widget_ref (valid
->viewport
);
158 gtk_object_set_data_full (GTK_OBJECT (main_window
),
161 (GtkDestroyNotify
) gtk_widget_unref
);
162 gtk_widget_show (valid
->viewport
);
163 gtk_container_add (GTK_CONTAINER (valid
->scrolledwindow
),
167 * main table for validation
169 valid
->table
= gtk_table_new (2,
172 gtk_widget_ref (valid
->table
);
173 gtk_object_set_data_full (GTK_OBJECT (main_window
),
176 (GtkDestroyNotify
) gtk_widget_unref
);
177 gtk_widget_show (valid
->table
);
178 gtk_container_add (GTK_CONTAINER (valid
->viewport
),
184 * Enable / Disable frame
187 valid
->frame_disable
= gtk_frame_new ( _("Disable data"));
188 gtk_widget_ref (valid
->frame_disable
);
189 gtk_object_set_data_full (GTK_OBJECT (main_window
),
191 valid
->frame_disable
,
194 gtk_widget_show (valid
->frame_disable
);
195 gtk_table_attach (GTK_TABLE (valid
->table
),
196 valid
->frame_disable
,
201 (GtkAttachOptions
) (GTK_FILL
),
202 (GtkAttachOptions
) (GTK_SHRINK
),
208 valid
->vbox_disable
= gtk_vbox_new (FALSE
,
210 gtk_widget_ref (valid
->vbox_disable
);
211 gtk_object_set_data_full (GTK_OBJECT (main_window
),
214 (GtkDestroyNotify
) gtk_widget_unref
);
215 gtk_widget_show (valid
->vbox_disable
);
216 gtk_container_add (GTK_CONTAINER (valid
->frame_disable
),
217 valid
->vbox_disable
);
221 valid
->radiobutton_disable_0
=
222 gtk_radio_button_new_with_label (gpiv
->mouse_sel_group
,
224 gpiv
->mouse_sel_group
=
225 gtk_radio_button_group (GTK_RADIO_BUTTON
226 (valid
->radiobutton_disable_0
));
227 gtk_widget_ref (valid
->radiobutton_disable_0
);
228 gtk_object_set_data_full (GTK_OBJECT (main_window
),
229 "radiobutton_disable_0",
230 valid
->radiobutton_disable_0
,
231 (GtkDestroyNotify
) gtk_widget_unref
);
232 gtk_widget_show (valid
->radiobutton_disable_0
);
233 gtk_box_pack_start (GTK_BOX (valid
->vbox_disable
),
234 valid
->radiobutton_disable_0
,
240 gtk_object_set_data (GTK_OBJECT (valid
->radiobutton_disable_0
),
243 gtk_object_set_data (GTK_OBJECT (valid
->radiobutton_disable_0
),
247 g_signal_connect (GTK_OBJECT (valid
->radiobutton_disable_0
),
249 G_CALLBACK (on_radiobutton_valid_disable_0_enter
),
251 g_signal_connect (GTK_OBJECT (valid
->radiobutton_disable_0
),
253 G_CALLBACK (on_widget_leave
),
255 g_signal_connect (GTK_OBJECT (valid
->radiobutton_disable_0
),
257 G_CALLBACK (on_radiobutton_valid_disable
),
263 valid
->radiobutton_disable_1
=
264 gtk_radio_button_new_with_label (gpiv
->mouse_sel_group
,
266 gpiv
->mouse_sel_group
=
267 gtk_radio_button_group (GTK_RADIO_BUTTON
268 (valid
->radiobutton_disable_1
));
269 gtk_widget_ref (valid
->radiobutton_disable_1
);
270 gtk_object_set_data_full (GTK_OBJECT (main_window
),
271 "radiobutton_valid_disable_1",
272 valid
->radiobutton_disable_1
,
273 (GtkDestroyNotify
) gtk_widget_unref
);
274 gtk_widget_show (valid
->radiobutton_disable_1
);
275 gtk_box_pack_start (GTK_BOX (valid
->vbox_disable
),
276 valid
->radiobutton_disable_1
,
281 gtk_object_set_data (GTK_OBJECT (valid
->radiobutton_disable_1
),
284 gtk_object_set_data (GTK_OBJECT (valid
->radiobutton_disable_1
),
286 "7" /* ENABLE_POINT_MS */);
287 g_signal_connect (GTK_OBJECT (valid
->radiobutton_disable_1
),
289 G_CALLBACK (on_radiobutton_valid_disable_1_enter
),
291 g_signal_connect (GTK_OBJECT (valid
->radiobutton_disable_1
),
293 G_CALLBACK (on_widget_leave
),
295 g_signal_connect (GTK_OBJECT (valid
->radiobutton_disable_1
),
297 G_CALLBACK (on_radiobutton_valid_disable
),
302 valid
->radiobutton_disable_2
=
303 gtk_radio_button_new_with_label (gpiv
->mouse_sel_group
,
305 gpiv
->mouse_sel_group
=
306 gtk_radio_button_group (GTK_RADIO_BUTTON
307 (valid
->radiobutton_disable_2
));
308 gtk_widget_ref (valid
->radiobutton_disable_2
);
309 gtk_object_set_data_full (GTK_OBJECT (main_window
),
310 "radiobutton_disable_2",
311 valid
->radiobutton_disable_2
,
312 (GtkDestroyNotify
) gtk_widget_unref
);
313 gtk_widget_show (valid
->radiobutton_disable_2
);
314 gtk_box_pack_start (GTK_BOX (valid
->vbox_disable
),
315 valid
->radiobutton_disable_2
,
320 gtk_object_set_data (GTK_OBJECT (valid
->radiobutton_disable_2
),
323 gtk_object_set_data (GTK_OBJECT (valid
->radiobutton_disable_2
),
325 "8" /* DISABLE_POINT_MS */);
326 g_signal_connect (GTK_OBJECT (valid
->radiobutton_disable_2
),
328 G_CALLBACK (on_radiobutton_valid_disable_2_enter
),
330 g_signal_connect (GTK_OBJECT (valid
->radiobutton_disable_2
),
332 G_CALLBACK (on_widget_leave
),
334 g_signal_connect (GTK_OBJECT (valid
->radiobutton_disable_2
),
336 G_CALLBACK (on_radiobutton_valid_disable
),
341 valid
->radiobutton_disable_3
=
342 gtk_radio_button_new_with_label (gpiv
->mouse_sel_group
,
344 gpiv
->mouse_sel_group
=
345 gtk_radio_button_group (GTK_RADIO_BUTTON
346 (valid
->radiobutton_disable_3
));
347 gtk_widget_ref (valid
->radiobutton_disable_3
);
348 gtk_object_set_data_full (GTK_OBJECT (main_window
),
349 "radiobutton_disable_3",
350 valid
->radiobutton_disable_3
,
351 (GtkDestroyNotify
) gtk_widget_unref
);
352 gtk_widget_show (valid
->radiobutton_disable_3
);
353 gtk_box_pack_start (GTK_BOX (valid
->vbox_disable
),
354 valid
->radiobutton_disable_3
,
359 gtk_object_set_data (GTK_OBJECT (valid
->radiobutton_disable_3
),
362 gtk_object_set_data (GTK_OBJECT (valid
->radiobutton_disable_3
),
364 "9" /* ENABLE_AREA_MS */);
365 g_signal_connect (GTK_OBJECT (valid
->radiobutton_disable_3
),
367 G_CALLBACK (on_radiobutton_valid_disable_3_enter
),
369 g_signal_connect (GTK_OBJECT (valid
->radiobutton_disable_3
),
371 G_CALLBACK (on_widget_leave
),
373 g_signal_connect (GTK_OBJECT (valid
->radiobutton_disable_3
),
375 G_CALLBACK (on_radiobutton_valid_disable
),
380 valid
->radiobutton_disable_4
=
381 gtk_radio_button_new_with_label (gpiv
->mouse_sel_group
,
383 gpiv
->mouse_sel_group
=
384 gtk_radio_button_group (GTK_RADIO_BUTTON
385 (valid
->radiobutton_disable_4
));
386 gtk_widget_ref (valid
->radiobutton_disable_4
);
387 gtk_object_set_data_full (GTK_OBJECT (main_window
),
388 "radiobutton_disable_4",
389 valid
->radiobutton_disable_4
,
390 (GtkDestroyNotify
) gtk_widget_unref
);
391 gtk_widget_show (valid
->radiobutton_disable_4
);
392 gtk_box_pack_start (GTK_BOX (valid
->vbox_disable
),
393 valid
->radiobutton_disable_4
,
398 gtk_object_set_data (GTK_OBJECT (valid
->radiobutton_disable_4
),
401 gtk_object_set_data (GTK_OBJECT (valid
->radiobutton_disable_4
),
403 "10" /* DISABLE_AREA_MS */);
404 g_signal_connect (GTK_OBJECT (valid
->radiobutton_disable_4
),
406 G_CALLBACK (on_radiobutton_valid_disable_4_enter
),
408 g_signal_connect (GTK_OBJECT (valid
->radiobutton_disable_4
),
410 G_CALLBACK (on_widget_leave
),
412 g_signal_connect (GTK_OBJECT (valid
->radiobutton_disable_4
),
414 G_CALLBACK (on_radiobutton_valid_disable
),
420 * Button for testing on velocity gradients
422 valid
->button_gradient
=
423 gtk_button_new_with_label ( _("validate on velocity gradient "));
424 gtk_widget_ref (valid
->button_gradient
);
425 gtk_object_set_data_full (GTK_OBJECT (main_window
),
427 valid
->button_gradient
,
428 (GtkDestroyNotify
) gtk_widget_unref
);
429 gtk_widget_show (valid
->button_gradient
);
430 gtk_table_attach (GTK_TABLE (valid
->table
),
431 valid
->button_gradient
,
436 (GtkAttachOptions
)(GTK_SHRINK
/*FILL*/),
437 (GtkAttachOptions
)(GTK_SHRINK
),
441 gtk_tooltips_set_tip(gpiv
->tooltips
,
442 valid
->button_gradient
,
443 _("Disables PIV data that have a too large velocity "
444 "gradient over the Interrogation Area"),
447 gtk_object_set_data (GTK_OBJECT (valid
->button_gradient
),
450 g_signal_connect (GTK_OBJECT (valid
->button_gradient
),
452 G_CALLBACK (on_button_valid_gradient_enter
),
454 g_signal_connect (GTK_OBJECT (valid
->button_gradient
),
456 G_CALLBACK (on_widget_leave
),
458 g_signal_connect (GTK_OBJECT (valid
->button_gradient
),
460 G_CALLBACK (on_button_valid_gradient
),
467 * Frame for histogram of sub-pixel values (used to test on peak-locking
471 valid
->frame_histo
= gtk_frame_new ( _("Histograms"));
472 gtk_widget_ref (valid
->frame_histo
);
473 gtk_object_set_data_full (GTK_OBJECT (main_window
),
476 (GtkDestroyNotify
) gtk_widget_unref
);
477 gtk_widget_show (valid
->frame_histo
);
478 gtk_table_attach (GTK_TABLE (valid
->table
),
484 (GtkAttachOptions
)(GTK_EXPAND
| GTK_FILL
),
485 (GtkAttachOptions
) /* (GTK_SHRINK) */
486 (GTK_EXPAND
| GTK_FILL
),
492 valid
->vbox_histo
= gtk_vbox_new (FALSE
,
494 gtk_widget_ref (valid
->vbox_histo
);
495 gtk_object_set_data_full (GTK_OBJECT (main_window
),
498 (GtkDestroyNotify
) gtk_widget_unref
);
499 gtk_widget_show (valid
->vbox_histo
);
500 gtk_container_add (GTK_CONTAINER (valid
->frame_histo
),
506 valid
->hbox_histo_spin
= gtk_hbox_new (FALSE
,
508 gtk_widget_ref (valid
->hbox_histo_spin
);
509 gtk_object_set_data_full (GTK_OBJECT (main_window
),
511 valid
->hbox_histo_spin
,
512 (GtkDestroyNotify
) gtk_widget_unref
);
513 gtk_widget_show (valid
->hbox_histo_spin
);
514 gtk_box_pack_start (GTK_BOX (valid
->vbox_histo
),
515 valid
->hbox_histo_spin
,
522 valid
->label_histo_bins
= gtk_label_new ( _("# bins: "));
523 gtk_widget_ref (valid
->label_histo_bins
);
524 gtk_object_set_data_full (GTK_OBJECT (main_window
),
526 valid
->label_histo_bins
,
527 (GtkDestroyNotify
) gtk_widget_unref
);
528 gtk_widget_show (valid
->label_histo_bins
);
529 gtk_box_pack_start (GTK_BOX (valid
->hbox_histo_spin
),
530 valid
->label_histo_bins
,
538 * NBINS_DEFAULT defined in gpiv.h
540 valid
->spinbutton_adj_histo_bins
=
541 gtk_adjustment_new (GPIV_NBINS_DEFAULT
,
547 valid
->spinbutton_histo_bins
=
548 gtk_spin_button_new (GTK_ADJUSTMENT
549 (valid
->spinbutton_adj_histo_bins
),
552 gtk_widget_ref (valid
->spinbutton_histo_bins
);
553 gtk_object_set_data_full (GTK_OBJECT (main_window
),
554 "spinbutton_histo_bins",
555 valid
->spinbutton_histo_bins
,
556 (GtkDestroyNotify
) gtk_widget_unref
);
557 gtk_widget_show (valid
->spinbutton_histo_bins
);
558 gtk_box_pack_start (GTK_BOX (valid
->hbox_histo_spin
),
559 valid
->spinbutton_histo_bins
,
564 gtk_object_set_data (GTK_OBJECT (valid
->spinbutton_histo_bins
),
567 g_signal_connect (GTK_OBJECT (valid
->spinbutton_histo_bins
),
569 G_CALLBACK (on_spinbutton_valid_peaklck_bins
),
570 valid
->spinbutton_histo_bins
);
579 /* gtk_widget_push_colormap (GdkColormap *cmap) */
580 /* gtk_widget_push_visual (gdk_imlib_get_visual ()); */
581 /* gtk_widget_push_colormap (gdk_imlib_get_colormap ()); */
582 valid
->canvas_histo
= gnome_canvas_new ();
583 gtk_widget_pop_colormap ();
584 gtk_widget_pop_visual ();
585 gtk_widget_ref (valid
->canvas_histo
);
586 gtk_object_set_data_full (GTK_OBJECT (main_window
),
589 (GtkDestroyNotify
) gtk_widget_unref
);
590 gtk_box_pack_start (GTK_BOX (valid
->vbox_histo
),
595 gtk_widget_show (valid
->canvas_histo
);
600 valid
->hbox_histo_buttons
= gtk_hbox_new (FALSE
,
602 gtk_widget_ref (valid
->hbox_histo_buttons
);
603 gtk_object_set_data_full (GTK_OBJECT (main_window
),
604 "hbox_histo_buttons",
605 valid
->hbox_histo_buttons
,
606 (GtkDestroyNotify
) gtk_widget_unref
);
607 gtk_widget_show (valid
->hbox_histo_buttons
);
608 gtk_box_pack_start (GTK_BOX (valid
->vbox_histo
),
609 valid
->hbox_histo_buttons
,
617 valid
->button_errvec_resstats
=
618 gtk_button_new_with_label ( _("residu"));
619 gtk_widget_ref (valid
->button_errvec_resstats
);
620 gtk_object_set_data_full (GTK_OBJECT (main_window
),
621 "button_errvec_resstats",
622 valid
->button_errvec_resstats
,
623 (GtkDestroyNotify
) gtk_widget_unref
);
624 gtk_widget_show (valid
->button_errvec_resstats
);
625 gtk_box_pack_start (GTK_BOX (valid
->hbox_histo_buttons
),
626 valid
->button_errvec_resstats
,
630 gtk_tooltips_set_tip(gpiv
->tooltips
,
631 valid
->button_errvec_resstats
,
632 _("calculates residus of displacements "
633 "and displays in a histogram"),
636 gtk_object_set_data (GTK_OBJECT (valid
->button_errvec_resstats
),
639 g_signal_connect (GTK_OBJECT (valid
->button_errvec_resstats
),
641 G_CALLBACK (on_button_valid_errvec_resstats_enter
),
643 g_signal_connect (GTK_OBJECT (valid
->button_errvec_resstats
),
645 G_CALLBACK (on_widget_leave
),
647 g_signal_connect (GTK_OBJECT (valid
->button_errvec_resstats
),
649 G_CALLBACK (on_button_valid_errvec_resstats
),
654 valid
->button_peaklck
= gtk_button_new_with_label ( _("sub-pixel"));
655 gtk_widget_ref (valid
->button_peaklck
);
656 gtk_object_set_data_full (GTK_OBJECT (main_window
),
658 valid
->button_peaklck
,
659 (GtkDestroyNotify
) gtk_widget_unref
);
660 gtk_widget_show (valid
->button_peaklck
);
661 gtk_box_pack_start (GTK_BOX (valid
->hbox_histo_buttons
),
662 valid
->button_peaklck
,
666 gtk_tooltips_set_tip(gpiv
->tooltips
,
667 valid
->button_peaklck
,
668 _("shows histogram of sub-pixel displacements "
669 "to check on peak-locking effects"),
672 gtk_object_set_data (GTK_OBJECT (valid
->button_peaklck
),
675 g_signal_connect (GTK_OBJECT (valid
->button_peaklck
),
677 G_CALLBACK (on_button_valid_peaklck_enter
),
678 valid
->button_peaklck
);
679 g_signal_connect (GTK_OBJECT (valid
->button_peaklck
),
681 G_CALLBACK (on_widget_leave
),
682 valid
->button_peaklck
);
683 g_signal_connect (GTK_OBJECT (valid
->button_peaklck
),
685 G_CALLBACK (on_button_valid_peaklck
),
686 valid
->button_peaklck
);
691 valid
->button_uhisto
= gtk_button_new_with_label ( _("U-comp"));
692 gtk_widget_ref (valid
->button_uhisto
);
693 gtk_object_set_data_full (GTK_OBJECT (main_window
),
695 valid
->button_uhisto
,
696 (GtkDestroyNotify
) gtk_widget_unref
);
697 gtk_widget_show (valid
->button_uhisto
);
698 gtk_box_pack_start (GTK_BOX (valid
->hbox_histo_buttons
),
699 valid
->button_uhisto
,
703 gtk_tooltips_set_tip(gpiv
->tooltips
,
704 valid
->button_uhisto
,
705 _("shows histogram of horizontal displacements.\n\
706 Only this histogram will be saved"),
709 gtk_object_set_data (GTK_OBJECT (valid
->button_uhisto
),
712 g_signal_connect (GTK_OBJECT (valid
->button_uhisto
),
714 G_CALLBACK (on_button_valid_uhisto_enter
),
715 valid
->button_uhisto
);
716 g_signal_connect (GTK_OBJECT (valid
->button_uhisto
),
718 G_CALLBACK (on_widget_leave
),
719 valid
->button_uhisto
);
720 g_signal_connect (GTK_OBJECT (valid
->button_uhisto
),
722 G_CALLBACK (on_button_valid_uhisto
),
723 valid
->button_uhisto
);
727 valid
->button_vhisto
= gtk_button_new_with_label ( _("V-comp"));
728 gtk_widget_ref (valid
->button_vhisto
);
729 gtk_object_set_data_full (GTK_OBJECT (main_window
),
731 valid
->button_vhisto
,
732 (GtkDestroyNotify
) gtk_widget_unref
);
733 gtk_widget_show (valid
->button_vhisto
);
734 gtk_box_pack_start (GTK_BOX (valid
->hbox_histo_buttons
),
735 valid
->button_vhisto
,
739 gtk_tooltips_set_tip(gpiv
->tooltips
,
740 valid
->button_vhisto
,
741 _("shows histogram of vertical displacements.\n\
742 Only this histogram will be saved"),
745 gtk_object_set_data (GTK_OBJECT (valid
->button_vhisto
),
748 g_signal_connect (GTK_OBJECT (valid
->button_vhisto
),
750 G_CALLBACK (on_button_valid_vhisto_enter
),
751 valid
->button_vhisto
);
752 g_signal_connect (GTK_OBJECT (valid
->button_vhisto
),
754 G_CALLBACK (on_widget_leave
),
755 valid
->button_vhisto
);
756 g_signal_connect (GTK_OBJECT (valid
->button_vhisto
),
758 G_CALLBACK (on_button_valid_vhisto
),
759 valid
->button_vhisto
);
767 valid
->frame_errvec
= gtk_frame_new ( _("Outliers"));
768 gtk_widget_ref (valid
->frame_errvec
);
769 gtk_object_set_data_full (GTK_OBJECT (main_window
),
774 gtk_widget_show (valid
->frame_errvec
);
775 gtk_table_attach (GTK_TABLE (valid
->table
),
781 (GtkAttachOptions
)(GTK_FILL
),
782 (GtkAttachOptions
)(GTK_SHRINK
),
788 valid
->vbox_errvec
= gtk_vbox_new (FALSE
,
790 gtk_widget_ref (valid
->vbox_errvec
);
791 gtk_object_set_data_full (GTK_OBJECT (main_window
),
794 (GtkDestroyNotify
) gtk_widget_unref
);
795 gtk_widget_show (valid
->vbox_errvec
);
796 gtk_container_add (GTK_CONTAINER (valid
->frame_errvec
),
802 * Spinner for array length of neighboring PIV data
804 valid
->hbox_errvec_neighbors_spin
= gtk_hbox_new (FALSE
,
806 gtk_widget_ref (valid
->hbox_errvec_neighbors_spin
);
807 gtk_object_set_data_full (GTK_OBJECT (main_window
),
808 "hbox_errvec_neighbors_spin",
809 valid
->hbox_errvec_neighbors_spin
,
810 (GtkDestroyNotify
) gtk_widget_unref
);
811 gtk_widget_show (valid
->hbox_errvec_neighbors_spin
);
812 gtk_box_pack_start (GTK_BOX (valid
->vbox_errvec
),
813 valid
->hbox_errvec_neighbors_spin
,
820 valid
->label_errvec_neighbors
= gtk_label_new ( _("Neighbors: "));
821 gtk_widget_ref (valid
->label_errvec_neighbors
);
822 gtk_object_set_data_full (GTK_OBJECT (main_window
),
823 "label_errvec_neighbors",
824 valid
->label_errvec_neighbors
,
825 (GtkDestroyNotify
) gtk_widget_unref
);
826 gtk_widget_show (valid
->label_errvec_neighbors
);
827 gtk_box_pack_start (GTK_BOX (valid
->hbox_errvec_neighbors_spin
),
828 valid
->label_errvec_neighbors
,
835 valid
->spinbutton_adj_errvec_neighbors
=
836 gtk_adjustment_new (gl_valid_par
->neighbors
,
838 GPIV_VALIDPAR_MAX__NEIGHBORS
,
842 valid
->spinbutton_errvec_neighbors
=
843 gtk_spin_button_new (GTK_ADJUSTMENT (valid
->spinbutton_adj_errvec_neighbors
),
846 gtk_widget_ref (valid
->spinbutton_errvec_neighbors
);
847 gtk_object_set_data_full (GTK_OBJECT (main_window
),
848 "spinbutton_errvec_neighbors",
849 valid
->spinbutton_errvec_neighbors
,
850 (GtkDestroyNotify
) gtk_widget_unref
);
851 gtk_widget_show (valid
->spinbutton_errvec_neighbors
);
852 gtk_box_pack_start (GTK_BOX (valid
->hbox_errvec_neighbors_spin
),
853 valid
->spinbutton_errvec_neighbors
,
858 gtk_object_set_data (GTK_OBJECT (valid
->spinbutton_errvec_neighbors
),
861 g_signal_connect (GTK_OBJECT (valid
->spinbutton_errvec_neighbors
),
863 G_CALLBACK (on_spinbutton_valid_errvec_neighbors
),
870 * Spinner for data yield
872 valid
->hbox_errvec_yield_spin
= gtk_hbox_new (FALSE
,
874 gtk_widget_ref (valid
->hbox_errvec_yield_spin
);
875 gtk_object_set_data_full (GTK_OBJECT (main_window
),
876 "hbox_errvec_yield_spin",
877 valid
->hbox_errvec_yield_spin
,
878 (GtkDestroyNotify
) gtk_widget_unref
);
879 gtk_widget_show (valid
->hbox_errvec_yield_spin
);
880 gtk_box_pack_start (GTK_BOX (valid
->vbox_errvec
),
881 valid
->hbox_errvec_yield_spin
,
888 valid
->label_errvec_yield
= gtk_label_new ( _("Data yield: "));
889 gtk_widget_ref (valid
->label_errvec_yield
);
890 gtk_object_set_data_full (GTK_OBJECT (main_window
),
891 "label_errvec_yield",
892 valid
->label_errvec_yield
,
893 (GtkDestroyNotify
) gtk_widget_unref
);
894 gtk_widget_show (valid
->label_errvec_yield
);
895 gtk_box_pack_start (GTK_BOX (valid
->hbox_errvec_yield_spin
),
896 valid
->label_errvec_yield
,
903 valid
->spinbutton_adj_errvec_yield
=
904 gtk_adjustment_new (gl_valid_par
->data_yield
,
910 valid
->spinbutton_errvec_yield
=
911 gtk_spin_button_new (GTK_ADJUSTMENT (valid
->spinbutton_adj_errvec_yield
),
914 gtk_widget_ref (valid
->spinbutton_errvec_yield
);
915 gtk_object_set_data_full (GTK_OBJECT (main_window
),
916 "spinbutton_errvec_yield",
917 valid
->spinbutton_errvec_yield
,
918 (GtkDestroyNotify
) gtk_widget_unref
);
919 gtk_widget_show (valid
->spinbutton_errvec_yield
);
920 gtk_box_pack_start (GTK_BOX (valid
->hbox_errvec_yield_spin
),
921 valid
->spinbutton_errvec_yield
,
926 gtk_object_set_data (GTK_OBJECT (valid
->spinbutton_errvec_yield
),
929 g_signal_connect (GTK_OBJECT (valid
->spinbutton_errvec_yield
),
931 G_CALLBACK (on_spinbutton_valid_errvec_yield
),
938 * Spinner for threshold residu
939 */ valid
->hbox_errvec_residu_spin
= gtk_hbox_new (FALSE
,
941 gtk_widget_ref (valid
->hbox_errvec_residu_spin
);
942 gtk_object_set_data_full (GTK_OBJECT (main_window
),
943 "hbox_errvec_residu_spin",
944 valid
->hbox_errvec_residu_spin
,
945 (GtkDestroyNotify
) gtk_widget_unref
);
946 gtk_widget_show (valid
->hbox_errvec_residu_spin
);
947 gtk_box_pack_start (GTK_BOX (valid
->vbox_errvec
),
948 valid
->hbox_errvec_residu_spin
,
955 valid
->label_errvec_res
= gtk_label_new ( _("Threshold: "));
956 gtk_widget_ref (valid
->label_errvec_res
);
957 gtk_object_set_data_full (GTK_OBJECT (main_window
),
959 valid
->label_errvec_res
,
960 (GtkDestroyNotify
) gtk_widget_unref
);
961 gtk_widget_show (valid
->label_errvec_res
);
962 gtk_box_pack_start (GTK_BOX (valid
->hbox_errvec_residu_spin
),
963 valid
->label_errvec_res
,
970 valid
->spinbutton_adj_errvec_res
=
971 gtk_adjustment_new (gl_valid_par
->residu_max
,
977 valid
->spinbutton_errvec_res
=
978 gtk_spin_button_new (GTK_ADJUSTMENT (valid
->spinbutton_adj_errvec_res
),
981 gtk_widget_ref (valid
->spinbutton_errvec_res
);
982 gtk_object_set_data_full (GTK_OBJECT (main_window
),
983 "spinbutton_errvec_res",
984 valid
->spinbutton_errvec_res
,
985 (GtkDestroyNotify
) gtk_widget_unref
);
986 gtk_widget_show (valid
->spinbutton_errvec_res
);
987 gtk_box_pack_start (GTK_BOX (valid
->hbox_errvec_residu_spin
),
988 valid
->spinbutton_errvec_res
,
993 gtk_object_set_data (GTK_OBJECT (valid
->spinbutton_errvec_res
),
996 g_signal_connect (GTK_OBJECT (valid
->spinbutton_errvec_res
),
998 G_CALLBACK (on_spinbutton_valid_errvec_res
),
1004 valid
->checkbutton_errvec_disres
=
1005 gtk_check_button_new_with_label ( _("Show SNR values"));
1006 gtk_widget_ref (valid
->checkbutton_errvec_disres
);
1007 gtk_object_set_data_full (GTK_OBJECT (main_window
),
1008 "checkbutton_errvec_disres",
1009 valid
->checkbutton_errvec_disres
,
1010 (GtkDestroyNotify
) gtk_widget_unref
);
1011 gtk_widget_show (valid
->checkbutton_errvec_disres
);
1012 gtk_box_pack_start (GTK_BOX (valid
->vbox_errvec
),
1013 valid
->checkbutton_errvec_disres
,
1018 gtk_object_set_data (GTK_OBJECT (valid
->checkbutton_errvec_disres
),
1021 g_signal_connect (GTK_OBJECT (valid
->checkbutton_errvec_disres
),
1024 (on_checkbutton_valid_errvec_disres_enter
),
1026 g_signal_connect (GTK_OBJECT (valid
->checkbutton_errvec_disres
),
1028 G_CALLBACK (on_widget_leave
),
1030 g_signal_connect (GTK_OBJECT (valid
->checkbutton_errvec_disres
),
1032 G_CALLBACK (on_checkbutton_valid_errvec_disres
),
1034 if (v_color
== SHOW_SNR
) {
1035 gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON
1036 (valid
->checkbutton_errvec_disres
),
1042 valid
->frame_errvec_residu
= gtk_frame_new ( _("Residu type:"));
1043 gtk_widget_ref (valid
->frame_errvec_residu
);
1044 gtk_object_set_data_full (GTK_OBJECT (main_window
),
1045 "frame_errvec_residu",
1046 valid
->frame_errvec_residu
,
1047 (GtkDestroyNotify
) gtk_widget_unref
);
1048 gtk_widget_show (valid
->frame_errvec_residu
);
1049 gtk_box_pack_start (GTK_BOX (valid
->vbox_errvec
),
1050 valid
->frame_errvec_residu
,
1054 gtk_frame_set_shadow_type (GTK_FRAME (valid
->frame_errvec_residu
),
1059 valid
->vbox_errvec_residu
= gtk_vbox_new (FALSE
,
1061 gtk_widget_ref (valid
->vbox_errvec_residu
);
1062 gtk_object_set_data_full (GTK_OBJECT (main_window
),
1063 "vbox_errvec_residu",
1064 valid
->vbox_errvec_residu
,
1065 (GtkDestroyNotify
) gtk_widget_unref
);
1066 gtk_widget_show (valid
->vbox_errvec_residu
);
1067 gtk_container_add (GTK_CONTAINER (valid
->frame_errvec_residu
),
1068 valid
->vbox_errvec_residu
);
1072 valid
->radiobutton_errvec_residu_normmedian
=
1073 gtk_radio_button_new_with_label (valid
->vbox_errvec_residu_group
,
1074 _("Normalized median"));
1075 valid
->vbox_errvec_residu_group
=
1076 gtk_radio_button_group (GTK_RADIO_BUTTON
1077 (valid
->radiobutton_errvec_residu_normmedian
));
1078 gtk_widget_ref (valid
->radiobutton_errvec_residu_normmedian
);
1079 gtk_object_set_data_full (GTK_OBJECT (main_window
),
1080 "radiobutton_errvec_residu_normmedian",
1081 valid
->radiobutton_errvec_residu_normmedian
,
1082 (GtkDestroyNotify
) gtk_widget_unref
);
1083 gtk_object_set_data (GTK_OBJECT (valid
->radiobutton_errvec_residu_normmedian
),
1086 gtk_object_set_data (GTK_OBJECT (valid
->radiobutton_errvec_residu_normmedian
),
1089 gtk_widget_show (valid
->radiobutton_errvec_residu_normmedian
);
1090 gtk_box_pack_start (GTK_BOX (valid
->vbox_errvec_residu
),
1091 valid
->radiobutton_errvec_residu_normmedian
,
1095 g_signal_connect (GTK_OBJECT (valid
->radiobutton_errvec_residu_normmedian
),
1098 (on_radiobutton_valid_errvec_residu_enter
),
1100 g_signal_connect (GTK_OBJECT (valid
->radiobutton_errvec_residu_normmedian
),
1102 G_CALLBACK (on_widget_leave
),
1104 g_signal_connect (GTK_OBJECT (valid
->radiobutton_errvec_residu_normmedian
),
1106 G_CALLBACK (on_radiobutton_valid_errvec_residu
),
1108 if (gl_valid_par
->residu_type
== 2) {
1109 gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON
1110 (valid
->radiobutton_errvec_residu_normmedian
),
1116 valid
->radiobutton_errvec_residu_median
=
1117 gtk_radio_button_new_with_label (valid
->vbox_errvec_residu_group
,
1119 valid
->vbox_errvec_residu_group
=
1120 gtk_radio_button_group (GTK_RADIO_BUTTON
1121 (valid
->radiobutton_errvec_residu_median
));
1122 gtk_widget_ref (valid
->radiobutton_errvec_residu_median
);
1123 gtk_object_set_data_full (GTK_OBJECT (main_window
),
1124 "radiobutton_errvec_residu_median",
1125 valid
->radiobutton_errvec_residu_median
,
1126 (GtkDestroyNotify
) gtk_widget_unref
);
1127 gtk_object_set_data (GTK_OBJECT (valid
->radiobutton_errvec_residu_median
),
1130 gtk_object_set_data (GTK_OBJECT (valid
->radiobutton_errvec_residu_median
),
1133 gtk_widget_show (valid
->radiobutton_errvec_residu_median
);
1134 gtk_box_pack_start (GTK_BOX (valid
->vbox_errvec_residu
),
1135 valid
->radiobutton_errvec_residu_median
,
1139 g_signal_connect (GTK_OBJECT (valid
->radiobutton_errvec_residu_median
),
1142 (on_radiobutton_valid_errvec_residu_enter
),
1144 g_signal_connect (GTK_OBJECT (valid
->radiobutton_errvec_residu_median
),
1146 G_CALLBACK (on_widget_leave
),
1148 g_signal_connect (GTK_OBJECT (valid
->radiobutton_errvec_residu_median
),
1150 G_CALLBACK (on_radiobutton_valid_errvec_residu
),
1152 if (gl_valid_par
->residu_type
== 1) {
1153 gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON
1154 (valid
->radiobutton_errvec_residu_median
),
1160 valid
->radiobutton_errvec_residu_snr
=
1161 gtk_radio_button_new_with_label (valid
->vbox_errvec_residu_group
,
1163 valid
->vbox_errvec_residu_group
=
1164 gtk_radio_button_group (GTK_RADIO_BUTTON
1165 (valid
->radiobutton_errvec_residu_snr
));
1166 gtk_widget_ref (valid
->radiobutton_errvec_residu_snr
);
1167 gtk_object_set_data_full (GTK_OBJECT (main_window
),
1168 "radiobutton_errvec_residu_snr",
1169 valid
->radiobutton_errvec_residu_snr
,
1170 (GtkDestroyNotify
) gtk_widget_unref
);
1171 gtk_widget_show (valid
->radiobutton_errvec_residu_snr
);
1172 gtk_box_pack_start (GTK_BOX (valid
->vbox_errvec_residu
),
1173 valid
->radiobutton_errvec_residu_snr
,
1178 gtk_object_set_data (GTK_OBJECT (valid
->radiobutton_errvec_residu_snr
),
1181 gtk_object_set_data (GTK_OBJECT (valid
->radiobutton_errvec_residu_snr
),
1184 g_signal_connect (GTK_OBJECT (valid
->radiobutton_errvec_residu_snr
),
1187 (on_radiobutton_valid_errvec_residu_enter
),
1189 g_signal_connect (GTK_OBJECT (valid
->radiobutton_errvec_residu_snr
),
1191 G_CALLBACK (on_widget_leave
),
1193 g_signal_connect (GTK_OBJECT (valid
->radiobutton_errvec_residu_snr
),
1195 G_CALLBACK (on_radiobutton_valid_errvec_residu
),
1197 if (gl_valid_par
->residu_type
== 0) {
1198 gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON
1199 (valid
->radiobutton_errvec_residu_snr
),
1206 * A long time ago, the GtkWidget valid->button_errvec_resstats was *here*.
1207 * Though it felt in love with valid->button_peaklock.
1208 * Now they are living happily cheeck tot cheeck.
1209 * No, they haven't got child widgets, yet. But maybe, one day ...
1214 * Radio buttons for substitution type
1216 valid
->frame_errvec_subst
= gtk_frame_new ( _("Substituted by:"));
1217 gtk_widget_ref (valid
->frame_errvec_subst
);
1218 gtk_object_set_data_full (GTK_OBJECT (main_window
),
1219 "frame_errvec_subst",
1220 valid
->frame_errvec_subst
,
1221 (GtkDestroyNotify
) gtk_widget_unref
);
1222 gtk_widget_show (valid
->frame_errvec_subst
);
1223 gtk_box_pack_start (GTK_BOX (valid
->vbox_errvec
),
1224 valid
->frame_errvec_subst
,
1228 gtk_frame_set_shadow_type (GTK_FRAME (valid
->frame_errvec_subst
),
1233 valid
->vbox_errvec_subst
= gtk_vbox_new (FALSE
,
1235 gtk_widget_ref (valid
->vbox_errvec_subst
);
1236 gtk_object_set_data_full (GTK_OBJECT (main_window
),
1237 "vbox_errvec_subst",
1238 valid
->vbox_errvec_subst
,
1239 (GtkDestroyNotify
) gtk_widget_unref
);
1240 gtk_widget_show (valid
->vbox_errvec_subst
);
1241 gtk_container_add (GTK_CONTAINER (valid
->frame_errvec_subst
),
1242 valid
->vbox_errvec_subst
);
1247 valid
->radiobutton_errvec_subst_0
=
1248 gtk_radio_button_new_with_label(valid
->vbox_errvec_subst_group
,
1250 valid
->vbox_errvec_subst_group
=
1251 gtk_radio_button_group (GTK_RADIO_BUTTON
1252 (valid
->radiobutton_errvec_subst_0
));
1253 gtk_widget_ref(valid
->radiobutton_errvec_subst_0
);
1254 gtk_object_set_data_full (GTK_OBJECT (main_window
),
1255 "radiobutton_errvec_subst_0",
1256 valid
->radiobutton_errvec_subst_0
,
1257 (GtkDestroyNotify
) gtk_widget_unref
);
1258 gtk_widget_show(valid
->radiobutton_errvec_subst_0
);
1259 gtk_box_pack_start (GTK_BOX(valid
->vbox_errvec_subst
),
1260 valid
->radiobutton_errvec_subst_0
,
1265 gtk_object_set_data (GTK_OBJECT (valid
->radiobutton_errvec_subst_0
),
1268 gtk_object_set_data (GTK_OBJECT (valid
->radiobutton_errvec_subst_0
),
1270 "0" /* GPIV_VALID_SUBSTYPE__NONE */);
1271 g_signal_connect (GTK_OBJECT (valid
->radiobutton_errvec_subst_0
),
1274 (on_radiobutton_valid_errvec_subst_enter
),
1276 g_signal_connect (GTK_OBJECT (valid
->radiobutton_errvec_subst_0
),
1278 G_CALLBACK (on_widget_leave
),
1280 g_signal_connect (GTK_OBJECT (valid
->radiobutton_errvec_subst_0
),
1282 G_CALLBACK (on_radiobutton_valid_errvec_subst
),
1284 if (gl_valid_par
->subst_type
== GPIV_VALID_SUBSTYPE__NONE
) {
1285 gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON
1286 (valid
->radiobutton_errvec_subst_0
),
1293 * Substitute by mean of surroundings
1295 valid
->radiobutton_errvec_subst_1
=
1296 gtk_radio_button_new_with_label (valid
->vbox_errvec_subst_group
,
1297 _("Mean of surroundings"));
1298 valid
->vbox_errvec_subst_group
=
1299 gtk_radio_button_group (GTK_RADIO_BUTTON
1300 (valid
->radiobutton_errvec_subst_1
));
1301 gtk_widget_ref (valid
->radiobutton_errvec_subst_1
);
1302 gtk_object_set_data_full (GTK_OBJECT (main_window
),
1303 "radiobutton_errvec_subst_1",
1304 valid
->radiobutton_errvec_subst_1
,
1305 (GtkDestroyNotify
) gtk_widget_unref
);
1306 gtk_widget_show(valid
->radiobutton_errvec_subst_1
);
1307 gtk_box_pack_start (GTK_BOX(valid
->vbox_errvec_subst
),
1308 valid
->radiobutton_errvec_subst_1
,
1313 gtk_object_set_data (GTK_OBJECT (valid
->radiobutton_errvec_subst_1
),
1316 gtk_object_set_data (GTK_OBJECT (valid
->radiobutton_errvec_subst_1
),
1318 "1" /* GPIV_VALID_SUBSTYPE__L_MEAN */);
1319 g_signal_connect (GTK_OBJECT (valid
->radiobutton_errvec_subst_1
),
1322 (on_radiobutton_valid_errvec_subst_enter
),
1324 g_signal_connect (GTK_OBJECT (valid
->radiobutton_errvec_subst_1
),
1326 G_CALLBACK (on_widget_leave
),
1328 g_signal_connect (GTK_OBJECT (valid
->radiobutton_errvec_subst_1
),
1330 G_CALLBACK (on_radiobutton_valid_errvec_subst
),
1336 * Substitute by median of surroundings
1338 valid
->radiobutton_errvec_subst_2
=
1339 gtk_radio_button_new_with_label (valid
->vbox_errvec_subst_group
,
1341 valid
->vbox_errvec_subst_group
=
1342 gtk_radio_button_group (GTK_RADIO_BUTTON
1343 (valid
->radiobutton_errvec_subst_2
));
1344 gtk_widget_ref (valid
->radiobutton_errvec_subst_2
);
1345 gtk_object_set_data_full (GTK_OBJECT (main_window
),
1346 "radiobutton_errvec_subst_2",
1347 valid
->radiobutton_errvec_subst_2
,
1348 (GtkDestroyNotify
) gtk_widget_unref
);
1349 gtk_widget_show (valid
->radiobutton_errvec_subst_2
);
1350 gtk_box_pack_start (GTK_BOX (valid
->vbox_errvec_subst
),
1351 valid
->radiobutton_errvec_subst_2
,
1356 gtk_object_set_data (GTK_OBJECT (valid
->radiobutton_errvec_subst_2
),
1359 gtk_object_set_data (GTK_OBJECT (valid
->radiobutton_errvec_subst_2
),
1361 "2" /* GPIV_VALID_SUBSTYPE__MEDIAN */);
1362 g_signal_connect (GTK_OBJECT (valid
->radiobutton_errvec_subst_2
),
1364 G_CALLBACK(on_radiobutton_valid_errvec_subst_enter
),
1366 g_signal_connect (GTK_OBJECT (valid
->radiobutton_errvec_subst_2
),
1368 G_CALLBACK (on_widget_leave
),
1370 g_signal_connect (GTK_OBJECT (valid
->radiobutton_errvec_subst_2
),
1372 G_CALLBACK (on_radiobutton_valid_errvec_subst
),
1374 if (gl_valid_par
->subst_type
== GPIV_VALID_SUBSTYPE__MEDIAN
) {
1375 gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON
1376 (valid
->radiobutton_errvec_subst_2
),
1382 valid
->radiobutton_errvec_subst_3
=
1383 gtk_radio_button_new_with_label (valid
->vbox_errvec_subst_group
,
1384 _("Next highest corr. peak"));
1385 valid
->vbox_errvec_subst_group
=
1386 gtk_radio_button_group (GTK_RADIO_BUTTON
1387 (valid
->radiobutton_errvec_subst_3
));
1388 gtk_widget_ref (valid
->radiobutton_errvec_subst_3
);
1389 gtk_object_set_data_full (GTK_OBJECT (main_window
),
1390 "radiobutton_errvec_subst_3",
1391 valid
->radiobutton_errvec_subst_3
,
1392 (GtkDestroyNotify
) gtk_widget_unref
);
1393 gtk_widget_show (valid
->radiobutton_errvec_subst_3
);
1394 gtk_box_pack_start (GTK_BOX (valid
->vbox_errvec_subst
),
1395 valid
->radiobutton_errvec_subst_3
,
1400 gtk_object_set_data (GTK_OBJECT (valid
->radiobutton_errvec_subst_3
),
1403 gtk_object_set_data (GTK_OBJECT (valid
->radiobutton_errvec_subst_3
),
1405 "3" /* GPIV_VALID_SUBSTYPE__COV_PEAK */);
1406 g_signal_connect (GTK_OBJECT (valid
->radiobutton_errvec_subst_3
),
1409 (on_radiobutton_valid_errvec_subst_enter
),
1411 g_signal_connect (GTK_OBJECT (valid
->radiobutton_errvec_subst_3
),
1413 G_CALLBACK (on_widget_leave
),
1415 g_signal_connect (GTK_OBJECT (valid
->radiobutton_errvec_subst_3
),
1417 G_CALLBACK (on_radiobutton_valid_errvec_subst
),
1419 if (gl_valid_par
->subst_type
== GPIV_VALID_SUBSTYPE__COR_PEAK
) {
1420 gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON
1421 (valid
->radiobutton_errvec_subst_3
),
1427 valid
->button_errvec
=
1428 gtk_button_new_with_label ( _("validate on outliers"));
1429 gtk_widget_ref (valid
->button_errvec
);
1430 gtk_object_set_data_full (GTK_OBJECT (main_window
),
1432 valid
->button_errvec
,
1433 (GtkDestroyNotify
) gtk_widget_unref
);
1434 gtk_widget_show (valid
->button_errvec
);
1435 gtk_box_pack_start (GTK_BOX (valid
->vbox_errvec
),
1436 valid
->button_errvec
,
1440 gtk_tooltips_set_tip(gpiv
->tooltips
,
1441 valid
->button_errvec
,
1442 _("substitutes outliers"),
1445 gtk_object_set_data (GTK_OBJECT (valid
->button_errvec
),
1448 g_signal_connect (GTK_OBJECT (valid
->button_errvec
),
1450 G_CALLBACK (on_button_valid_errvec_enter
),
1452 g_signal_connect (GTK_OBJECT (valid
->button_errvec
),
1454 G_CALLBACK (on_widget_leave
),
1456 g_signal_connect (GTK_OBJECT (valid
->button_errvec
),
1458 G_CALLBACK (on_button_valid_errvec
),