1 /* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 4 c-style: "K&R" -*- */
3 /*----------------------------------------------------------------------
5 gpiv - Graphic program for Particle Image Velocimetry, based on gtk/gnome
8 Copyright (C) 2002, 2003, 2004 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)
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 * interface for create_display
30 * $Log: display_interface.c,v $
31 * Revision 1.19 2008-04-28 12:00:57 gerber
32 * hdf-formatted files are now with .hdf extension (previously: .gpi)
34 * Revision 1.18 2007-12-19 08:42:35 gerber
37 * Revision 1.17 2007-11-23 16:24:07 gerber
38 * release 0.5.0: Kafka
40 * Revision 1.16 2007-06-06 17:00:48 gerber
41 * Retreives images/data from URI using Gnome Virtual File System.
43 * Revision 1.15 2007-03-22 16:00:32 gerber
44 * Added image processing tabulator
46 * Revision 1.14 2007-02-16 17:09:48 gerber
47 * added Gauss weighting on I.A. and SPOF filtering (on correlation function)
49 * Revision 1.13 2007/02/05 15:17:09 gerber
50 * auto stretching, broadcast display settings to buffers from preferences
52 * Revision 1.12 2007-01-29 11:27:43 gerber
53 * added image formats png, gif, tif png, bmp, improved buffer display
55 * Revision 1.11 2006-09-18 07:27:05 gerber
56 * *** empty log message ***
58 * Revision 1.10 2006/01/31 14:28:12 gerber
61 * Revision 1.9 2005/06/15 15:03:54 gerber
62 * Optional Anti Aliased canvas for viewer
64 * Revision 1.8 2005/06/15 09:40:40 gerber
67 * Revision 1.7 2005/01/19 15:53:41 gerber
68 * Initiation of Data Acquisition (DAC); trigerring of lasers and camera
69 * by using RTAI and Realtime Linux, recording images from IEEE1394
70 * (Firewire) IIDC compliant camera's
72 * Revision 1.6 2004/10/15 19:24:05 gerber
73 * GPIV_ and Gpiv prefix to defines and structure names of libgpiv
75 * Revision 1.5 2004/06/14 21:19:23 gerber
76 * Image depth up to 16 bits.
77 * Improvement "single int" and "drag int" in Eval tab.
78 * Viewer's pop-up menu.
79 * Adaption for gpiv_matrix_* and gpiv_vector_*.
81 * See Changelog for further info.
83 * Revision 1.4 2003/09/01 11:17:14 gerber
84 * improved monitoring of interrogation process
86 * Revision 1.3 2003/07/04 10:47:01 gerber
89 * Revision 1.2 2003/06/27 13:47:26 gerber
90 * display ruler, line/point evaluation
92 * Revision 1.1.1.1 2003/06/17 17:10:52 gerber
99 #include "display_interface.h"
100 #include "display_menus.h"
103 #define EVENT_METHOD(i, x) GTK_WIDGET_GET_CLASS(i)->x
107 create_display (gchar
*fname
,
112 /*-----------------------------------------------------------------------------
132 -----------------------------------------------------------------------------*/
135 Display
*disp
= g_new0 (Display
, 1);
136 Image
*img
= g_new0 (Image
, 1);
137 Intreg
*intreg
= g_new0 (Intreg
, 1);
138 GpivPivPar
*intreg_pivp
= g_new0 (GpivPivPar
, 1);
139 PivData
*pd
= g_new0 (PivData
, 1);
140 GpivValidPar
*pd_valp
= g_new0 (GpivValidPar
, 1);
141 GpivPostPar
*pd_postp
= g_new0 (GpivPostPar
, 1);
143 static gint width
= 0, height
= 0;
144 static gchar title
[GPIV_MAX_CHARS
];
145 static GdkPixbuf
*icon
= NULL
;
150 static const gchar
* zoom_label
[8] = {
161 static const gchar
* vector_scale_label
[9] = {
176 disp
->zoom_group
= NULL
;
177 disp
->background_group
= NULL
;
178 disp
->scalar_group
= NULL
;
179 disp
->vector_scale_group
= NULL
;
180 disp
->vector_color_group
= NULL
;
187 g_snprintf (disp
->msg_display_default
,
192 disp
->id
= display_id
;
193 disp
->zoom_index
= gpiv_par
->display__zoom_index
;
194 disp
->zoom_factor
= zfactor
[disp
->zoom_index
];
195 disp
->zoom_factor_old
= zfactor
[disp
->zoom_index
];
196 /* g_message ("CREATE_DISPLAY:: zoom_factor = %f zoom_factor_old = %f", */
197 /* disp->zoom_factor, disp->zoom_factor_old); */
198 disp
->vector_scale
= gpiv_par
->display__vector_scale
;
199 disp
->vector_color
= gpiv_par
->display__vector_color
;
200 disp
->display_backgrnd
= gpiv_par
->display__backgrnd
;
201 /* disp->display_img1 = gpiv_par->display__img1; */
202 /* disp->display_img2 = gpiv_par->display__img2; */
203 disp
->display_intregs
= gpiv_par
->display__intregs
;
204 disp
->display_piv
= gpiv_par
->display__piv
;
205 disp
->display_scalar
= gpiv_par
->display__scalar
;
206 /* disp->display_vor = gpiv_par->display__vor; */
207 /* disp->display_sstrain = gpiv_par->display__sstrain; */
208 /* disp->display_nstrain = gpiv_par->display__nstrain; */
210 disp
->file_uri_name
= g_strdup_printf ("%s" , fname
);
214 disp
->img
->exist_img
= FALSE
;
215 disp
->img
->saved_img
= FALSE
;
216 disp
->img
->rgb_img_width
= 0;
217 disp
->img
->img_mean
= 0.0;
220 * PIV data and related do not exist, yet. 'Saved' is set TRUE to avoid
221 * message of unsaved data while deleting display or console
222 * Values of these boolean variables are updated in the 'exec_' functions.
225 disp
->pida
->exist_piv
= FALSE
;
226 disp
->pida
->saved_piv
= TRUE
;
227 disp
->pida
->scaled_piv
= FALSE
;
228 disp
->pida
->exist_histo
= FALSE
;
229 disp
->pida
->saved_histo
= TRUE
;
230 disp
->pida
->exist_valid
= FALSE
;
231 disp
->pida
->exist_vor
= FALSE
;
232 disp
->pida
->exist_vor_scaled
= FALSE
;
233 disp
->pida
->saved_vor
= TRUE
;
234 disp
->pida
->exist_sstrain
= FALSE
;
235 disp
->pida
->exist_sstrain_scaled
= FALSE
;
236 disp
->pida
->saved_sstrain
= TRUE
;
237 disp
->pida
->exist_nstrain
= FALSE
;
238 disp
->pida
->exist_nstrain_scaled
= FALSE
;
239 disp
->pida
->saved_nstrain
= TRUE
;
244 * Initialising of parameter values for image, evaluation and interrogation regions
246 disp
->img
->image
= image
;
247 /* disp->img->image->header = gpiv_img_cp_parameters (gl_image_par); */
248 disp
->pida
->piv_par
= gpiv_piv_cp_parameters (gl_piv_par
);
249 disp
->pida
->valid_par
= pd_valp
;
250 disp
->pida
->post_par
= pd_postp
;
253 if (disp
->pida
->piv_par
->row_start
> disp
->img
->image
->header
->nrows
254 - disp
->pida
->piv_par
->pre_shift_row
- 1) {
255 disp
->pida
->piv_par
->row_start
= 0;
257 disp
->pida
->piv_par
->row_end
=
258 MIN (disp
->img
->image
->header
->nrows
, gl_piv_par
->row_end
);
259 if (disp
->pida
->piv_par
->col_start
> disp
->img
->image
->header
->ncolumns
260 - disp
->pida
->piv_par
->pre_shift_col
- 1) {
261 disp
->pida
->piv_par
->col_start
= 0;
263 disp
->pida
->piv_par
->col_end
=
264 MIN (disp
->img
->image
->header
->ncolumns
, gl_piv_par
->col_end
);
267 * Copy _PART_ of piv_par to intreg for displaying Interrogation Area contours
269 disp
->intreg
= intreg
;
270 disp
->intreg
->exist_int
= FALSE
;
271 disp
->intreg
->row_start_old
= 0;
272 disp
->intreg
->col_start_old
= 0;
274 disp
->intreg
->par
= intreg_pivp
;
275 disp
->intreg
->par
->row_start
= disp
->pida
->piv_par
->row_start
;
276 disp
->intreg
->par
->row_end
= disp
->pida
->piv_par
->row_end
;
277 disp
->intreg
->par
->col_start
= disp
->pida
->piv_par
->col_start
;
278 disp
->intreg
->par
->col_end
= disp
->pida
->piv_par
->col_end
;
279 disp
->intreg
->par
->int_size_f
= disp
->pida
->piv_par
->int_size_f
;
280 disp
->intreg
->par
->int_size_i
= disp
->pida
->piv_par
->int_size_i
;
281 disp
->intreg
->par
->int_shift
= disp
->pida
->piv_par
->int_shift
;
282 disp
->intreg
->par
->pre_shift_row
= disp
->pida
->piv_par
->pre_shift_row
;
283 disp
->intreg
->par
->pre_shift_col
= disp
->pida
->piv_par
->pre_shift_col
;
285 disp
->intreg
->par
->row_start__set
= TRUE
;
286 disp
->intreg
->par
->row_end__set
= TRUE
;
287 disp
->intreg
->par
->col_start__set
= TRUE
;
288 disp
->intreg
->par
->col_end__set
= TRUE
;
289 disp
->intreg
->par
->int_size_f__set
= TRUE
;
290 disp
->intreg
->par
->int_size_i__set
= TRUE
;
291 disp
->intreg
->par
->int_shift__set
= TRUE
;
292 disp
->intreg
->par
->pre_shift_row__set
= TRUE
;
293 disp
->intreg
->par
->pre_shift_col__set
= TRUE
;
297 width
= (gint
) (disp
->zoom_factor
* disp
->img
->image
->header
->ncolumns
+ VIEW_HMARGE
);
298 height
= (gint
) (disp
->zoom_factor
* disp
->img
->image
->header
->nrows
+ VIEW_VMARGE
);
299 /* disp->mwin = g_object_new (GTK_TYPE_WINDOW, */
300 /* "default-height", height, */
301 /* "default-width", width, */
302 /* "title", title, */
308 disp
->mwin
= gtk_window_new (GTK_WINDOW_TOPLEVEL
);
309 gtk_window_set_title (GTK_WINDOW (disp
->mwin
), title
);
310 /* gtk_window_set_default_size (GTK_WINDOW (disp->mwin), width, height); */
311 gtk_window_set_default_size (GTK_WINDOW (disp
->mwin
), 20, 20);
312 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
315 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
322 g_signal_connect (GTK_OBJECT (disp
->mwin
),
324 G_CALLBACK (delete_display
),
328 * focussing the actual display
330 g_signal_connect (GTK_OBJECT (disp
->mwin
),
332 G_CALLBACK (on_display_set_focus
),
334 gtk_window_set_resizable (GTK_WINDOW (disp
->mwin
), FALSE
);
339 icon
= gdk_pixbuf_new_from_file(PIXMAPSDIR
"gpiv_logo.png", NULL
);
340 gtk_window_set_icon(GTK_WINDOW(disp
->mwin
), icon
);
343 disp
->vbox
= gtk_vbox_new ( FALSE
/* TRUE */, 0);
344 gtk_widget_show (disp
->vbox
);
345 gtk_container_add (GTK_CONTAINER (disp
->mwin
), disp
->vbox
);
350 disp
->menubar
= gtk_menu_bar_new ();
351 gtk_box_pack_start (GTK_BOX (disp
->vbox
),
356 if (gpiv_par
->display__view_menubar
) {
357 gtk_widget_show (GTK_WIDGET (disp
->menubar
));
359 gtk_widget_hide (GTK_WIDGET (disp
->menubar
));
366 disp
->menuitem_view
=
367 gtk_menu_item_new_with_mnemonic (_("_View"));
368 gtk_widget_show (disp
->menuitem_view
);
369 gtk_container_add (GTK_CONTAINER (disp
->menubar
),
370 disp
->menuitem_view
);
372 /* gtk_object_set_data_full (GTK_OBJECT (disp->mwin), */
373 /* "menuitem_view", */
374 /* disp->menuitem_view, */
375 /* (GtkDestroyNotify) gtk_widget_unref); */
378 disp
->menuitem_view_menu
= gtk_menu_new ();
379 gtk_menu_item_set_submenu (GTK_MENU_ITEM
380 (disp
->menuitem_view
),
381 disp
->menuitem_view_menu
);
386 gtk_check_menu_item_new_with_mnemonic (_("View menu bar"));
387 gtk_widget_show (disp
->view_menubar
);
388 gtk_container_add (GTK_CONTAINER (disp
->menuitem_view_menu
),
390 g_signal_connect ((gpointer
) disp
->view_menubar
, "activate",
391 G_CALLBACK (on_menu_synchronize_popup
),
392 (int *) VIEW_MENUBAR
);
397 gtk_check_menu_item_new_with_mnemonic (_("View rulers"));
398 gtk_widget_show (disp
->view_rulers
);
399 gtk_container_add (GTK_CONTAINER (disp
->menuitem_view_menu
),
401 g_signal_connect ((gpointer
) disp
->view_rulers
, "activate",
402 G_CALLBACK (on_menu_synchronize_popup
),
403 (int *) VIEW_RULERS
);
406 * Menu for automatic stretching the window when zooming in
409 gtk_check_menu_item_new_with_mnemonic (_("Stretch auto"));
410 gtk_widget_show (disp
->stretch_auto
);
411 gtk_container_add (GTK_CONTAINER (disp
->menuitem_view_menu
),
413 g_signal_connect ((gpointer
) disp
->stretch_auto
, "activate",
414 G_CALLBACK (on_menu_synchronize_popup
),
415 (int *) STRETCH_AUTO
);
418 * Menu for stretching the window
421 gtk_menu_item_new_with_label (_("Stretch display"));
422 gtk_widget_show (disp
->stretch
);
423 gtk_container_add (GTK_CONTAINER (disp
->menuitem_view_menu
),
425 gtk_tooltips_set_tip (gpiv
->tooltips
,
427 _("Stretch or fit display window to the image area"),
429 g_signal_connect ((gpointer
) disp
->stretch
,
431 G_CALLBACK (on_stretch_activate
),
437 disp
->separator_zoom
= gtk_separator_menu_item_new ();
438 gtk_widget_show (disp
->separator_zoom
);
439 gtk_container_add (GTK_CONTAINER (disp
->menuitem_view_menu
),
440 disp
->separator_zoom
);
445 for (i
= 0; i
< 8; i
++) {
446 /* gchar *zoom_index = g_strdup_printf ("zoom_%d", i) */
447 disp
->zoom_key
[i
] = g_strdup_printf ("zoom_menu_%d", i
);
448 disp
->zoom_menu
[i
] = gtk_radio_menu_item_new_with_label
449 (disp
->zoom_group
, zoom_label
[i
]);
450 disp
->zoom_group
= gtk_radio_menu_item_get_group
451 (GTK_RADIO_MENU_ITEM (disp
->zoom_menu
[i
]));
452 gtk_widget_show (disp
->zoom_menu
[i
]);
453 gtk_container_add (GTK_CONTAINER (disp
->menuitem_view_menu
),
455 gtk_tooltips_set_tip (gpiv
->tooltips
,
457 _("set zoom factor"),
459 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
462 g_signal_connect ((gpointer
) disp
->zoom_menu
[i
],
464 G_CALLBACK (on_zoom_activate
),
468 /* if (disp->zoom_index == i) { */
469 /* gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM */
470 /* (disp->zoom_menu[i]), */
477 * Background (image) menu
479 disp
->menuitem_background
=
480 gtk_menu_item_new_with_mnemonic (_("_Background"));
481 gtk_widget_show (disp
->menuitem_background
);
482 gtk_container_add (GTK_CONTAINER (disp
->menubar
),
483 disp
->menuitem_background
);
486 disp
->menuitem_background_menu
= gtk_menu_new ();
487 gtk_menu_item_set_submenu (GTK_MENU_ITEM
488 (disp
->menuitem_background
),
489 disp
->menuitem_background_menu
);
493 disp
->view_blue
= gtk_radio_menu_item_new_with_mnemonic
494 (disp
->background_group
, _("Blue"));
495 disp
->background_group
= gtk_radio_menu_item_get_group
496 (GTK_RADIO_MENU_ITEM (disp
->view_blue
));
497 gtk_widget_show (disp
->view_blue
);
498 gtk_container_add (GTK_CONTAINER (disp
->menuitem_background_menu
),
500 gtk_tooltips_set_tip (gpiv
->tooltips
,
502 _("set blue background"),
504 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
505 "blue_background_menu",
507 g_signal_connect ((gpointer
) disp
->view_blue
, "activate",
508 G_CALLBACK (on_menu_synchronize_popup
),
513 disp
->view_black
= gtk_radio_menu_item_new_with_mnemonic
514 (disp
->background_group
, _("Black"));
515 disp
->background_group
= gtk_radio_menu_item_get_group
516 (GTK_RADIO_MENU_ITEM (disp
->view_black
));
517 gtk_widget_show (disp
->view_black
);
518 gtk_container_add (GTK_CONTAINER (disp
->menuitem_background_menu
),
520 gtk_tooltips_set_tip (gpiv
->tooltips
,
522 _("set black background"),
524 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
525 "black_background_menu",
527 g_signal_connect ((gpointer
) disp
->view_black
, "activate",
528 G_CALLBACK (on_menu_synchronize_popup
),
533 disp
->view_image_a
= gtk_radio_menu_item_new_with_mnemonic
534 (disp
->background_group
, _("Image_A"));
535 disp
->background_group
= gtk_radio_menu_item_get_group
536 (GTK_RADIO_MENU_ITEM (disp
->view_image_a
));
537 gtk_widget_show (disp
->view_image_a
);
538 gtk_container_add (GTK_CONTAINER (disp
->menuitem_background_menu
),
540 gtk_tooltips_set_tip (gpiv
->tooltips
,
542 _("set first image as background"),
544 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
545 "image_a_background_menu",
547 g_signal_connect ((gpointer
) disp
->view_image_a
, "activate",
548 G_CALLBACK (on_menu_synchronize_popup
),
549 (int *) VIEW_IMAGE_A
);
553 disp
->view_image_b
= gtk_radio_menu_item_new_with_mnemonic
554 (disp
->background_group
, ("Image_B"));
555 disp
->background_group
= gtk_radio_menu_item_get_group
556 (GTK_RADIO_MENU_ITEM (disp
->view_image_b
));
557 gtk_widget_show (disp
->view_image_b
);
558 gtk_container_add (GTK_CONTAINER (disp
->menuitem_background_menu
),
560 gtk_tooltips_set_tip (gpiv
->tooltips
,
562 _("set second image as background"),
564 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
565 "image_b_background_menu",
567 g_signal_connect ((gpointer
) disp
->view_image_b
, "activate",
568 G_CALLBACK (on_menu_synchronize_popup
),
569 (int *) VIEW_IMAGE_B
);
575 disp
->menuitem_view_piv_data
=
576 gtk_menu_item_new_with_mnemonic (_("_Piv"));
577 gtk_widget_show (disp
->menuitem_view_piv_data
);
578 gtk_container_add (GTK_CONTAINER (disp
->menubar
),
579 disp
->menuitem_view_piv_data
);
582 disp
->menuitem_view_piv_data_menu
= gtk_menu_new ();
583 gtk_menu_item_set_submenu (GTK_MENU_ITEM (disp
->menuitem_view_piv_data
),
584 disp
->menuitem_view_piv_data_menu
);
587 disp
->view_interrogation_areas
=
588 gtk_check_menu_item_new_with_mnemonic (_("Interrogation area's"));
589 gtk_widget_show (disp
->view_interrogation_areas
);
590 gtk_container_add (GTK_CONTAINER (disp
->menuitem_view_piv_data_menu
),
591 disp
->view_interrogation_areas
);
592 g_signal_connect ((gpointer
) disp
->view_interrogation_areas
, "activate",
593 G_CALLBACK (on_menu_synchronize_popup
),
594 (int *) VIEW_INTERROGATION_AREAS
);
597 disp
->view_velocity_vectors
=
598 gtk_check_menu_item_new_with_mnemonic (_("Velocity vectors"));
599 gtk_widget_show (disp
->view_velocity_vectors
);
600 gtk_container_add (GTK_CONTAINER (disp
->menuitem_view_piv_data_menu
),
601 disp
->view_velocity_vectors
);
602 g_signal_connect ((gpointer
) disp
->view_velocity_vectors
, "activate",
603 G_CALLBACK (on_menu_synchronize_popup
),
604 (int *) VIEW_VELOCITY_VECTORS
);
607 * Scalar data display menu
610 disp
->menuitem_view_scalar_data
=
611 gtk_menu_item_new_with_mnemonic (_("_Scalar"));
612 gtk_widget_show (disp
->menuitem_view_scalar_data
);
613 gtk_container_add (GTK_CONTAINER (disp
->menubar
), disp
->menuitem_view_scalar_data
);
615 disp
->menuitem_view_scalar_data_menu
= gtk_menu_new ();
616 gtk_menu_item_set_submenu (GTK_MENU_ITEM (disp
->menuitem_view_scalar_data
),
617 disp
->menuitem_view_scalar_data_menu
);
622 gtk_radio_menu_item_new_with_mnemonic (disp
->scalar_group
, _("None"));
624 gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (disp
->view_none
));
625 gtk_widget_show (disp
->view_none
);
626 gtk_container_add (GTK_CONTAINER (disp
->menuitem_view_scalar_data_menu
),
628 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
631 g_signal_connect ((gpointer
) disp
->view_none
, "activate",
632 G_CALLBACK (on_menu_synchronize_popup
),
633 (int *) VIEW_NONE_SCALARS
);
636 disp
->view_vorticity
=
637 gtk_radio_menu_item_new_with_mnemonic (disp
->scalar_group
,
640 gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (disp
->view_vorticity
));
641 gtk_widget_show (disp
->view_vorticity
);
642 gtk_container_add (GTK_CONTAINER (disp
->menuitem_view_scalar_data_menu
),
643 disp
->view_vorticity
);
644 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
646 disp
->view_vorticity
);
647 g_signal_connect ((gpointer
) disp
->view_vorticity
, "activate",
648 G_CALLBACK (on_menu_synchronize_popup
),
649 (int *) VIEW_VORTICITY
);
652 disp
->view_shear_strain
=
653 gtk_radio_menu_item_new_with_mnemonic (disp
->scalar_group
, _("Shear strain"));
655 gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (disp
->view_shear_strain
));
656 gtk_widget_show (disp
->view_shear_strain
);
657 gtk_container_add (GTK_CONTAINER (disp
->menuitem_view_scalar_data_menu
),
658 disp
->view_shear_strain
);
659 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
661 disp
->view_shear_strain
);
662 g_signal_connect ((gpointer
) disp
->view_shear_strain
, "activate",
663 G_CALLBACK (on_menu_synchronize_popup
),
664 (int *) VIEW_SHEAR_STRAIN
);
667 disp
->view_normal_strain
=
668 gtk_radio_menu_item_new_with_mnemonic (disp
->scalar_group
,
671 gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (disp
->view_normal_strain
));
672 gtk_widget_show (disp
->view_normal_strain
);
673 gtk_container_add (GTK_CONTAINER (disp
->menuitem_view_scalar_data_menu
),
674 disp
->view_normal_strain
);
675 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
676 "view_normal_strain",
677 disp
->view_normal_strain
);
678 g_signal_connect ((gpointer
) disp
->view_normal_strain
, "activate",
679 G_CALLBACK (on_menu_synchronize_popup
),
680 (int *) VIEW_NORMAL_STRAIN
);
685 disp
->menuitem_vector_scale
=
686 gtk_menu_item_new_with_mnemonic (_("Scal_e"));
687 gtk_widget_show (disp
->menuitem_vector_scale
);
688 gtk_container_add (GTK_CONTAINER (disp
->menubar
),
689 disp
->menuitem_vector_scale
);
691 disp
->menuitem_vector_scale_menu
= gtk_menu_new ();
692 gtk_menu_item_set_submenu (GTK_MENU_ITEM (disp
->menuitem_vector_scale
),
693 disp
->menuitem_vector_scale_menu
);
696 for (i
= 0; i
< 9; i
++) {
697 disp
->vector_scale_key
[i
] = g_strdup_printf ("vector_scale_menu_%d", i
);
699 disp
->vector_scale_menu
[i
] = gtk_radio_menu_item_new_with_label
700 (disp
->vector_scale_group
, vector_scale_label
[i
]);
702 disp
->vector_scale_group
= gtk_radio_menu_item_get_group
703 (GTK_RADIO_MENU_ITEM (disp
->vector_scale_menu
[i
]));
705 gtk_widget_show (disp
->vector_scale_menu
[i
]);
707 gtk_container_add (GTK_CONTAINER (disp
->menuitem_vector_scale_menu
),
708 disp
->vector_scale_menu
[i
]);
709 gtk_tooltips_set_tip (gpiv
->tooltips
,
710 disp
->vector_scale_menu
[i
],
711 _("set vector_scale"),
713 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
714 disp
->vector_scale_key
[i
],
715 disp
->vector_scale_menu
[i
]);
716 g_signal_connect ((gpointer
) disp
->vector_scale_menu
[i
],
718 G_CALLBACK (on_vector_scale_activate
),
725 disp
->menuitem_vector_color
=
726 gtk_menu_item_new_with_mnemonic (_("C_olor"));
727 gtk_widget_show (disp
->menuitem_vector_color
);
728 gtk_container_add (GTK_CONTAINER (disp
->menubar
),
729 disp
->menuitem_vector_color
);
731 disp
->menuitem_vector_color_menu
= gtk_menu_new ();
732 gtk_menu_item_set_submenu (GTK_MENU_ITEM (disp
->menuitem_vector_color
),
733 disp
->menuitem_vector_color_menu
);
736 disp
->vector_color_peak_nr
=
737 gtk_radio_menu_item_new_with_mnemonic (disp
->vector_color_group
,
739 disp
->vector_color_group
=
740 gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM
741 (disp
->vector_color_peak_nr
));
742 gtk_widget_show (disp
->vector_color_peak_nr
);
743 gtk_container_add (GTK_CONTAINER (disp
->menuitem_vector_color_menu
),
744 disp
->vector_color_peak_nr
);
745 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
746 "vector_color_peak_nr",
747 disp
->vector_color_peak_nr
);
748 g_signal_connect ((gpointer
) disp
->vector_color_peak_nr
, "activate",
749 G_CALLBACK (on_menu_synchronize_popup
),
750 (int *) VECTOR_COLOR_PEAK
);
753 disp
->vector_color_snr
=
754 gtk_radio_menu_item_new_with_mnemonic (disp
->vector_color_group
,
756 /* disp->vector_color_snr = */
757 /* gtk_radio_menu_item_new_with_mnemonic (disp->vector_color_group, */
759 disp
->vector_color_group
=
760 gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM
761 (disp
->vector_color_snr
));
762 gtk_widget_show (disp
->vector_color_snr
);
763 gtk_container_add (GTK_CONTAINER (disp
->menuitem_vector_color_menu
),
764 disp
->vector_color_snr
);
765 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
767 disp
->vector_color_snr
);
768 g_signal_connect ((gpointer
) disp
->vector_color_snr
, "activate",
769 G_CALLBACK (on_menu_synchronize_popup
),
770 (int *) VECTOR_COLOR_SNR
);
773 disp
->vector_color_magngray
=
774 gtk_radio_menu_item_new_with_mnemonic (disp
->vector_color_group
,
776 disp
->vector_color_group
=
777 gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM
778 (disp
->vector_color_magngray
));
779 gtk_widget_show (disp
->vector_color_magngray
);
780 gtk_container_add (GTK_CONTAINER (disp
->menuitem_vector_color_menu
),
781 disp
->vector_color_magngray
);
782 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
783 "vector_color_magngray",
784 disp
->vector_color_magngray
);
785 g_signal_connect ((gpointer
) disp
->vector_color_magngray
, "activate",
786 G_CALLBACK (on_menu_synchronize_popup
),
787 (int *) VECTOR_COLOR_MAGNGRAY
);
791 disp
->vector_color_magncolor
=
792 gtk_radio_menu_item_new_with_mnemonic (disp
->vector_color_group
,
793 ("Magnitude color"));
794 disp
->vector_color_group
=
795 gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM
796 (disp
->vector_color_magncolor
));
797 gtk_widget_show (disp
->vector_color_magncolor
);
798 gtk_container_add (GTK_CONTAINER (disp
->menuitem_vector_color_menu
),
799 disp
->vector_color_magncolor
);
800 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
801 "vector_color_magncolor",
802 disp
->vector_color_magncolor
);
803 g_signal_connect ((gpointer
) disp
->vector_color_magncolor
, "activate",
804 G_CALLBACK (on_menu_synchronize_popup
),
805 (int *) VECTOR_COLOR_MAGNCOLOR
);
810 disp
->table
= gtk_table_new (4,
813 gtk_widget_ref (disp
->table
);
814 gtk_object_set_data_full (GTK_OBJECT (disp
->mwin
),
817 (GtkDestroyNotify
) gtk_widget_unref
);
818 gtk_box_pack_start (GTK_BOX (disp
->vbox
),
823 gtk_widget_show (disp
->table
);
827 * Adjustments for scrollbars or scrolled window
830 gtk_adjustment_new (0.0,
832 (gdouble
) disp
->img
->image
->header
->ncolumns
- 1.0,
835 (gdouble
) disp
->img
->image
->header
->ncolumns
- 1.0
836 /* * disp->zoom_factor */
838 gtk_object_set_data (GTK_OBJECT (disp
->hadj
),
841 gtk_object_set_data (GTK_OBJECT (disp
->hadj
),
844 g_signal_connect (GTK_OBJECT (disp
->hadj
),
853 gtk_adjustment_new (0.0,
855 (gdouble
) disp
->img
->image
->header
->nrows
- 1.0,
858 (gfloat
) disp
->img
->image
->header
->nrows
- 1.0
859 /* * disp->zoom_factor */
862 gtk_object_set_data (GTK_OBJECT (disp
->vadj
),
865 gtk_object_set_data (GTK_OBJECT (disp
->vadj
),
868 g_signal_connect (GTK_OBJECT (disp
->vadj
),
878 disp
->hruler
= gtk_hruler_new();
879 gtk_widget_ref(disp
->hruler
);
880 gtk_object_set_data_full(GTK_OBJECT(disp
->mwin
),
883 (GtkDestroyNotify
) gtk_widget_unref
);
885 gtk_table_attach (GTK_TABLE (disp
->table
),
891 (GtkAttachOptions
) (GTK_EXPAND
| GTK_SHRINK
| GTK_FILL
),
892 (GtkAttachOptions
) (GTK_FILL
),
895 if (gpiv_par
->display__view_rulers
) {
896 gtk_widget_show (GTK_WIDGET (disp
->hruler
));
898 gtk_widget_hide (GTK_WIDGET (disp
->hruler
));
902 gtk_ruler_set_range (GTK_RULER (disp
->hruler
),
904 (gfloat
) (disp
->img
->image
->header
->ncolumns
- 1),
906 (gfloat
) (disp
->img
->image
->header
->ncolumns
- 1));
907 /* gtk_widget_set_size_request (disp->hruler, */
908 /* (gint) (disp->zoom_factor * */
909 /* disp->img.image_par->ncolumns), */
915 disp
->vruler
= gtk_vruler_new ();
916 gtk_widget_ref (disp
->vruler
);
917 gtk_object_set_data_full (GTK_OBJECT (disp
->mwin
),
920 (GtkDestroyNotify
) gtk_widget_unref
);
921 if (gpiv_par
->display__view_rulers
) {
922 gtk_widget_show (GTK_WIDGET (disp
->vruler
));
924 gtk_widget_hide (GTK_WIDGET (disp
->vruler
));
926 gtk_table_attach (GTK_TABLE (disp
->table
),
932 (GtkAttachOptions
) (GTK_EXPAND
),
933 (GtkAttachOptions
) (GTK_EXPAND
| GTK_SHRINK
| GTK_FILL
),
937 gtk_ruler_set_range (GTK_RULER (disp
->vruler
),
939 (gfloat
) (disp
->img
->image
->header
->nrows
- 1),
941 (gfloat
) (disp
->img
->image
->header
->nrows
- 1));
942 /* gtk_widget_set_size_request (disp->vruler, */
944 /* (gint) (disp->zoom_factor * */
945 /* disp->img.image_par->nrows)); */
951 gtk_vscrollbar_new( GTK_ADJUSTMENT (disp
->vadj
));
952 gtk_widget_ref (disp
->vscrollbar
);
953 gtk_object_set_data_full (GTK_OBJECT (disp
->mwin
),
956 (GtkDestroyNotify
) gtk_widget_unref
);
957 gtk_widget_show (disp
->vscrollbar
);
958 gtk_table_attach (GTK_TABLE (disp
->table
),
964 (GtkAttachOptions
) (GTK_EXPAND
| GTK_FILL
),
965 (GtkAttachOptions
) (GTK_EXPAND
| GTK_FILL
),
969 /* gtk_viewport_get_vadjustment (viewport) */
972 gtk_hscrollbar_new (GTK_ADJUSTMENT (disp
->hadj
));
973 gtk_widget_ref (disp
->hscrollbar
);
974 gtk_object_set_data_full (GTK_OBJECT (disp
->mwin
),
977 (GtkDestroyNotify
) gtk_widget_unref
);
978 gtk_widget_show (disp
->hscrollbar
);
979 gtk_table_attach (GTK_TABLE (disp
->table
),
985 (GtkAttachOptions
) (GTK_EXPAND
| GTK_FILL
),
986 (GtkAttachOptions
) (GTK_EXPAND
| GTK_FILL
),
994 gtk_widget_push_visual (gdk_rgb_get_visual ());
995 gtk_widget_push_colormap (gdk_rgb_get_cmap ());
996 disp
->canvas
= gnome_canvas_new_aa ();
998 gtk_widget_push_visual (gdk_imlib_get_visual ());
999 gtk_widget_push_colormap (NULL
);
1000 disp
->canvas
= gnome_canvas_new ();
1003 gtk_widget_pop_colormap ();
1004 gtk_widget_pop_visual ();
1005 gtk_widget_ref (disp
->canvas
);
1006 gtk_object_set_data_full (GTK_OBJECT (disp
->mwin
),
1009 (GtkDestroyNotify
) gtk_widget_unref
);
1010 gtk_widget_show (disp
->canvas
);
1011 gnome_canvas_set_scroll_region (GNOME_CANVAS (disp
->canvas
),
1014 disp
->img
->image
->header
->ncolumns
- 1,
1015 disp
->img
->image
->header
->nrows
- 1);
1017 gtk_table_attach (GTK_TABLE (disp
->table
),
1023 (GtkAttachOptions
) (GTK_EXPAND
| GTK_FILL
),
1024 (GtkAttachOptions
) (GTK_EXPAND
| GTK_FILL
),
1030 gtk_widget_set_events (GTK_WIDGET (disp
->canvas
),
1031 GDK_LEAVE_NOTIFY_MASK
1032 | GDK_BUTTON_PRESS_MASK
1033 | GDK_BUTTON_RELEASE_MASK
1034 | GDK_POINTER_MOTION_MASK
1035 | GDK_POINTER_MOTION_HINT_MASK
1040 gtk_object_set_data (GTK_OBJECT (disp
->canvas
),
1043 gtk_object_set_data (GTK_OBJECT (disp
->canvas
),
1049 * connect rulers to gnome_canvas drawing area
1051 g_signal_connect_swapped (G_OBJECT (disp
->canvas
),
1052 "motion_notify_event",
1053 G_CALLBACK (EVENT_METHOD (disp
->hruler
, motion_notify_event
)),
1054 G_OBJECT (disp
->hruler
));
1056 g_signal_connect_swapped (G_OBJECT (disp
->canvas
),
1057 "motion_notify_event",
1058 G_CALLBACK (GTK_WIDGET_GET_CLASS (disp
->vruler
)->motion_notify_event
),
1059 G_OBJECT (disp
->vruler
));
1062 g_signal_connect (G_OBJECT (disp
->canvas
),
1063 "enter_notify_event",
1064 G_CALLBACK (canvas_display_enter_notify
),
1066 g_signal_connect (G_OBJECT (disp
->canvas
),
1067 "motion_notify_event",
1068 G_CALLBACK (canvas_display_motion_notify
),
1070 g_signal_connect (G_OBJECT (disp
->canvas
),
1071 "button_press_event",
1072 G_CALLBACK (canvas_display_button_press
),
1074 g_signal_connect (G_OBJECT (disp
->canvas
),
1075 "button_release_event",
1076 G_CALLBACK (canvas_display_button_release
),
1078 g_signal_connect (G_OBJECT (disp
->canvas
),
1079 "leave_notify_event",
1080 G_CALLBACK (canvas_display_leave_notify
),
1082 g_signal_connect (G_OBJECT (disp
->canvas
),
1084 G_CALLBACK (canvas_display_button_scroll
),
1089 * application/status bar
1091 disp
->appbar
= gnome_appbar_new (FALSE
,
1093 GNOME_PREFERENCES_NEVER
);
1094 gtk_widget_ref (disp
->appbar
);
1095 gtk_object_set_data_full (GTK_OBJECT (disp
->mwin
),
1098 (GtkDestroyNotify
) gtk_widget_unref
);
1099 gtk_table_attach (GTK_TABLE (disp
->table
),
1105 (GtkAttachOptions
) (GTK_EXPAND
| GTK_FILL
),
1106 (GtkAttachOptions
) (GTK_FILL
),
1109 gtk_widget_show (disp
->appbar
);
1110 gnome_appbar_set_default (GNOME_APPBAR (disp
->appbar
),
1111 disp
->msg_display_default
);
1115 gtk_widget_show (disp
->mwin
);
1122 create_display_popupmenu (Display
*disp
1124 /*-----------------------------------------------------------------------------
1127 GtkWidget
*display_menu
= NULL
;
1130 display_menu
= gtk_menu_new ();
1131 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
1134 gnome_app_fill_menu (GTK_MENU_SHELL (display_menu
),
1135 display_menu_uiinfo
,
1142 * view menubar widget
1144 gtk_widget_ref (display_menu_uiinfo
[0].widget
);
1145 gtk_object_set_data_full (GTK_OBJECT (display_menu
),
1146 "view_menubar_popup_menu",
1147 display_menu_uiinfo
[0].widget
,
1148 (GtkDestroyNotify
) gtk_widget_unref
);
1149 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
1150 "view_menubar_popup_menu",
1151 display_menu_uiinfo
[0].widget
);
1152 if (gpiv_par
->display__view_menubar
) {
1153 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
1154 (display_menu_uiinfo
[0].widget
),
1157 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
1158 (display_menu_uiinfo
[0].widget
),
1161 gtk_object_set_data (GTK_OBJECT (display_menu_uiinfo
[0].widget
),
1167 * view rulers widget
1169 gtk_widget_ref (display_menu_uiinfo
[1].widget
);
1170 gtk_object_set_data_full (GTK_OBJECT (display_menu
),
1171 "view_rulers_popup_menu",
1172 display_menu_uiinfo
[1].widget
,
1173 (GtkDestroyNotify
) gtk_widget_unref
);
1174 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
1175 "view_rulers_popup_menu",
1176 display_menu_uiinfo
[1].widget
);
1177 if (gpiv_par
->display__view_rulers
) {
1178 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
1179 (display_menu_uiinfo
[1].widget
),
1182 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
1183 (display_menu_uiinfo
[1].widget
),
1186 gtk_object_set_data (GTK_OBJECT (display_menu_uiinfo
[1].widget
),
1192 * stretch when zoom automatic
1194 gtk_widget_ref (display_menu_uiinfo
[2].widget
);
1195 gtk_object_set_data_full (GTK_OBJECT (display_menu
),
1196 "stretch_auto_popup_menu",
1197 display_menu_uiinfo
[2].widget
,
1198 (GtkDestroyNotify
) gtk_widget_unref
);
1199 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
1200 "stretch_auto_popup_menu",
1201 display_menu_uiinfo
[2].widget
);
1202 if (gpiv_par
->display__stretch_auto
) {
1203 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
1204 (display_menu_uiinfo
[2].widget
),
1207 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
1208 (display_menu_uiinfo
[2].widget
),
1211 gtk_object_set_data (GTK_OBJECT (display_menu_uiinfo
[2].widget
),
1219 gtk_widget_ref (zoomscale_menu_display
[0].widget
);
1220 gtk_object_set_data_full (GTK_OBJECT (display_menu
),
1222 zoomscale_menu_display
[0].widget
,
1223 (GtkDestroyNotify
) gtk_widget_unref
);
1224 if (disp
->zoom_index
== ZOOM_0
) {
1225 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
1226 (zoomscale_menu_display
[0].widget
),
1229 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
1231 zoomscale_menu_display
[0].widget
);
1232 gtk_object_set_data (GTK_OBJECT (zoomscale_menu_display
[0].widget
),
1235 gtk_object_set_data (GTK_OBJECT (zoomscale_menu_display
[0].widget
),
1241 gtk_widget_ref (zoomscale_menu_display
[1].widget
);
1242 gtk_object_set_data_full (GTK_OBJECT (display_menu
),
1244 zoomscale_menu_display
[1].widget
,
1245 (GtkDestroyNotify
) gtk_widget_unref
);
1246 if (disp
->zoom_index
== ZOOM_1
) {
1247 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
1248 (zoomscale_menu_display
[1].widget
),
1251 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
1253 zoomscale_menu_display
[1].widget
);
1254 gtk_object_set_data (GTK_OBJECT (zoomscale_menu_display
[1].widget
),
1257 gtk_object_set_data (GTK_OBJECT (zoomscale_menu_display
[1].widget
),
1263 gtk_widget_ref (zoomscale_menu_display
[2].widget
);
1264 gtk_object_set_data_full (GTK_OBJECT (display_menu
),
1266 zoomscale_menu_display
[2].widget
,
1267 (GtkDestroyNotify
) gtk_widget_unref
);
1268 if (disp
->zoom_index
== ZOOM_2
) {
1269 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
1270 (zoomscale_menu_display
[2].widget
),
1273 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
1275 zoomscale_menu_display
[2].widget
);
1276 gtk_object_set_data (GTK_OBJECT (zoomscale_menu_display
[2].widget
),
1279 gtk_object_set_data (GTK_OBJECT (zoomscale_menu_display
[2].widget
),
1285 gtk_widget_ref (zoomscale_menu_display
[3].widget
);
1286 gtk_object_set_data_full (GTK_OBJECT (display_menu
),
1288 zoomscale_menu_display
[3].widget
,
1289 (GtkDestroyNotify
) gtk_widget_unref
);
1290 if (disp
->zoom_index
== ZOOM_3
) {
1291 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
1292 (zoomscale_menu_display
[3].widget
),
1295 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
1297 zoomscale_menu_display
[3].widget
);
1298 gtk_object_set_data (GTK_OBJECT (zoomscale_menu_display
[3].widget
),
1301 gtk_object_set_data (GTK_OBJECT (zoomscale_menu_display
[3].widget
),
1307 gtk_widget_ref (zoomscale_menu_display
[4].widget
);
1308 gtk_object_set_data_full (GTK_OBJECT (display_menu
),
1310 zoomscale_menu_display
[4].widget
,
1311 (GtkDestroyNotify
) gtk_widget_unref
);
1312 if (disp
->zoom_index
== ZOOM_4
) {
1313 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
1314 (zoomscale_menu_display
[4].widget
),
1317 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
1319 zoomscale_menu_display
[4].widget
);
1320 gtk_object_set_data (GTK_OBJECT (zoomscale_menu_display
[4].widget
),
1323 gtk_object_set_data (GTK_OBJECT (zoomscale_menu_display
[4].widget
),
1329 gtk_widget_ref (zoomscale_menu_display
[5].widget
);
1330 gtk_object_set_data_full (GTK_OBJECT (display_menu
),
1332 zoomscale_menu_display
[5].widget
,
1333 (GtkDestroyNotify
) gtk_widget_unref
);
1334 if (disp
->zoom_index
== ZOOM_5
) {
1335 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
1336 (zoomscale_menu_display
[5].widget
),
1339 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
1341 zoomscale_menu_display
[5].widget
);
1342 gtk_object_set_data (GTK_OBJECT (zoomscale_menu_display
[5].widget
),
1345 gtk_object_set_data (GTK_OBJECT (zoomscale_menu_display
[5].widget
),
1350 gtk_widget_ref (zoomscale_menu_display
[6].widget
);
1351 gtk_object_set_data_full (GTK_OBJECT (display_menu
),
1353 zoomscale_menu_display
[6].widget
,
1354 (GtkDestroyNotify
) gtk_widget_unref
);
1355 if (disp
->zoom_index
== ZOOM_6
) {
1356 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
1357 (zoomscale_menu_display
[6].widget
),
1360 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
1362 zoomscale_menu_display
[6].widget
);
1363 gtk_object_set_data (GTK_OBJECT (zoomscale_menu_display
[6].widget
),
1366 gtk_object_set_data (GTK_OBJECT (zoomscale_menu_display
[6].widget
),
1371 gtk_widget_ref (zoomscale_menu_display
[7].widget
);
1372 gtk_object_set_data_full (GTK_OBJECT (display_menu
),
1374 zoomscale_menu_display
[7].widget
,
1375 (GtkDestroyNotify
) gtk_widget_unref
);
1376 if (disp
->zoom_index
== ZOOM_7
) {
1377 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
1378 (zoomscale_menu_display
[7].widget
),
1381 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
1383 zoomscale_menu_display
[7].widget
);
1384 gtk_object_set_data (GTK_OBJECT (zoomscale_menu_display
[7].widget
),
1387 gtk_object_set_data (GTK_OBJECT (zoomscale_menu_display
[7].widget
),
1393 * background menu widgets
1395 gtk_widget_ref (view_background_display
[0].widget
);
1396 gtk_object_set_data_full (GTK_OBJECT (display_menu
),
1398 view_background_display
[0].widget
,
1399 (GtkDestroyNotify
) gtk_widget_unref
);
1400 if (gpiv_par
->display__backgrnd
== SHOW_BG_DARKBLUE
) {
1401 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
1402 (view_background_display
[0].widget
),
1405 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
1406 "view_background_display0",
1407 view_background_display
[0].widget
);
1408 gtk_object_set_data (GTK_OBJECT (view_background_display
[0].widget
),
1414 gtk_widget_ref (view_background_display
[1].widget
);
1415 gtk_object_set_data_full (GTK_OBJECT (display_menu
),
1417 view_background_display
[1].widget
,
1418 (GtkDestroyNotify
) gtk_widget_unref
);
1419 if (gpiv_par
->display__backgrnd
== SHOW_BG_BLACK
) {
1420 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
1421 (view_background_display
[1].widget
),
1424 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
1425 "view_background_display1",
1426 view_background_display
[1].widget
);
1427 gtk_object_set_data (GTK_OBJECT (view_background_display
[1].widget
),
1433 gtk_widget_ref (view_background_display
[2].widget
);
1434 gtk_object_set_data_full (GTK_OBJECT (display_menu
),
1436 view_background_display
[2].widget
,
1437 (GtkDestroyNotify
) gtk_widget_unref
);
1438 if (gpiv_par
->display__backgrnd
== SHOW_BG_IMG1
) {
1439 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
1440 (view_background_display
[2].widget
),
1443 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
1444 "view_background_display2",
1445 view_background_display
[2].widget
);
1446 gtk_object_set_data (GTK_OBJECT (view_background_display
[2].widget
),
1452 gtk_widget_ref (view_background_display
[3].widget
);
1453 gtk_object_set_data_full (GTK_OBJECT (display_menu
),
1455 view_background_display
[3].widget
,
1456 (GtkDestroyNotify
) gtk_widget_unref
);
1457 if (gpiv_par
->display__backgrnd
== SHOW_BG_IMG2
) {
1458 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
1459 (view_background_display
[3].widget
),
1462 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
1463 "view_background_display3",
1464 view_background_display
[3].widget
);
1465 gtk_object_set_data (GTK_OBJECT (view_background_display
[3].widget
),
1471 * view menu widgets to display PIV data and interrrogation area's
1473 gtk_widget_ref (view_piv_display
[0].widget
);
1474 gtk_object_set_data_full (GTK_OBJECT (display_menu
),
1476 view_piv_display
[0].widget
,
1477 (GtkDestroyNotify
) gtk_widget_unref
);
1478 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
1479 "view_piv_display0",
1480 view_piv_display
[0].widget
);
1481 if (disp
->display_intregs
) {
1482 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
1483 (view_piv_display
[0].widget
),
1486 gtk_object_set_data (GTK_OBJECT (view_piv_display
[0].widget
),
1492 gtk_widget_ref (view_piv_display
[1].widget
);
1493 gtk_object_set_data_full (GTK_OBJECT (display_menu
),
1495 view_piv_display
[1].widget
,
1496 (GtkDestroyNotify
) gtk_widget_unref
);
1497 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
1498 "view_piv_display1",
1499 view_piv_display
[1].widget
);
1500 if (disp
->display_piv
) {
1501 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
1502 (view_piv_display
[1].widget
),
1505 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
1506 (view_piv_display
[1].widget
),
1509 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
1510 "view_piv_display1",
1511 view_piv_display
[1].widget
);
1514 * Display scalar data
1516 gtk_widget_ref (view_scalardata_display
[0].widget
);
1517 gtk_object_set_data_full (GTK_OBJECT (display_menu
),
1519 view_scalardata_display
[0].widget
,
1520 (GtkDestroyNotify
) gtk_widget_unref
);
1521 if (gpiv_par
->display__scalar
== SHOW_SC_NONE
) {
1522 if (gpiv_par
->verbose
) g_message ("create_display_popupmenu:: display__scalar == SHOW_SC_NONE");
1523 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
1524 (view_scalardata_display
[0].widget
),
1527 gtk_object_set_data (GTK_OBJECT (view_scalardata_display
[0].widget
),
1530 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
1531 "view_scalardata_display0",
1532 view_scalardata_display
[0].widget
);
1536 gtk_widget_ref (view_scalardata_display
[1].widget
);
1537 gtk_object_set_data_full (GTK_OBJECT (display_menu
),
1539 view_scalardata_display
[1].widget
,
1540 (GtkDestroyNotify
) gtk_widget_unref
);
1541 if (gpiv_par
->display__scalar
== SHOW_SC_VORTICITY
) {
1542 if (gpiv_par
->verbose
) g_message ("create_display_popupmenu:: display__scalar == SHOW_SC_VORTICITY");
1543 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
1544 (view_scalardata_display
[1].widget
),
1547 gtk_object_set_data (GTK_OBJECT (view_scalardata_display
[1].widget
),
1550 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
1551 "view_scalardata_display1",
1552 view_scalardata_display
[1].widget
);
1556 gtk_widget_ref (view_scalardata_display
[2].widget
);
1557 gtk_object_set_data_full (GTK_OBJECT (display_menu
),
1559 view_scalardata_display
[2].widget
,
1560 (GtkDestroyNotify
) gtk_widget_unref
);
1561 if (gpiv_par
->display__scalar
== SHOW_SC_SSTRAIN
) {
1562 if (gpiv_par
->verbose
) g_message ("create_display_popupmenu:: display__scalar == SHOW_SC_SSTRAIN");
1563 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
1564 (view_scalardata_display
[2].widget
),
1567 gtk_object_set_data (GTK_OBJECT (view_scalardata_display
[2].widget
),
1570 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
1571 "view_scalardata_display2",
1572 view_scalardata_display
[2].widget
);
1576 gtk_widget_ref (view_scalardata_display
[3].widget
);
1577 gtk_object_set_data_full (GTK_OBJECT (display_menu
),
1579 view_scalardata_display
[3].widget
,
1580 (GtkDestroyNotify
) gtk_widget_unref
);
1581 if (gpiv_par
->display__scalar
== SHOW_SC_NSTRAIN
) {
1582 if (gpiv_par
->verbose
) g_message ("create_display_popupmenu:: display__scalar == SHOW_SC_NSTRAIN");
1583 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
1584 (view_scalardata_display
[3].widget
),
1587 gtk_object_set_data (GTK_OBJECT (view_scalardata_display
[3].widget
),
1590 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
1591 "view_scalardata_display3",
1592 view_scalardata_display
[3].widget
);
1595 * vectorscale menu widgets
1597 gtk_widget_ref (vectorscale_menu_display
[0].widget
);
1598 gtk_object_set_data_full (GTK_OBJECT (display_menu
),
1600 vectorscale_menu_display
[0].widget
,
1601 (GtkDestroyNotify
) gtk_widget_unref
);
1602 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
1604 vectorscale_menu_display
[0].widget
);
1605 if (gpiv_par
->display__vector_scale
== 1) {
1606 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
1607 (vectorscale_menu_display
[0].widget
),
1613 gtk_widget_ref (vectorscale_menu_display
[1].widget
);
1614 gtk_object_set_data_full (GTK_OBJECT (display_menu
),
1616 vectorscale_menu_display
[1].widget
,
1617 (GtkDestroyNotify
) gtk_widget_unref
);
1618 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
1620 vectorscale_menu_display
[1].widget
);
1621 if (gpiv_par
->display__vector_scale
== 2) {
1622 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
1623 (vectorscale_menu_display
[1].widget
),
1629 gtk_widget_ref (vectorscale_menu_display
[2].widget
);
1630 gtk_object_set_data_full (GTK_OBJECT (display_menu
),
1632 vectorscale_menu_display
[2].widget
,
1633 (GtkDestroyNotify
) gtk_widget_unref
);
1634 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
1636 vectorscale_menu_display
[2].widget
);
1637 if (gpiv_par
->display__vector_scale
== 4) {
1638 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
1639 (vectorscale_menu_display
[2].widget
),
1645 gtk_widget_ref (vectorscale_menu_display
[3].widget
);
1646 gtk_object_set_data_full (GTK_OBJECT (display_menu
),
1648 vectorscale_menu_display
[3].widget
,
1649 (GtkDestroyNotify
) gtk_widget_unref
);
1650 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
1652 vectorscale_menu_display
[3].widget
);
1653 if (gpiv_par
->display__vector_scale
== 8) {
1654 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
1655 (vectorscale_menu_display
[3].widget
),
1661 gtk_widget_ref (vectorscale_menu_display
[4].widget
);
1662 gtk_object_set_data_full (GTK_OBJECT (display_menu
),
1664 vectorscale_menu_display
[0].widget
,
1665 (GtkDestroyNotify
) gtk_widget_unref
);
1666 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
1668 vectorscale_menu_display
[4].widget
);
1669 if (gpiv_par
->display__vector_scale
== 16) {
1670 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
1671 (vectorscale_menu_display
[4].widget
),
1677 gtk_widget_ref (vectorscale_menu_display
[5].widget
);
1678 gtk_object_set_data_full (GTK_OBJECT (display_menu
),
1680 vectorscale_menu_display
[5].widget
,
1681 (GtkDestroyNotify
) gtk_widget_unref
);
1682 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
1684 vectorscale_menu_display
[5].widget
);
1685 if (gpiv_par
->display__vector_scale
== 32) {
1686 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
1687 (vectorscale_menu_display
[5].widget
),
1693 gtk_widget_ref (vectorscale_menu_display
[6].widget
);
1694 gtk_object_set_data_full (GTK_OBJECT (display_menu
),
1696 vectorscale_menu_display
[6].widget
,
1697 (GtkDestroyNotify
) gtk_widget_unref
);
1698 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
1700 vectorscale_menu_display
[6].widget
);
1701 if (gpiv_par
->display__vector_scale
== 64) {
1702 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
1703 (vectorscale_menu_display
[6].widget
),
1709 gtk_widget_ref (vectorscale_menu_display
[7].widget
);
1710 gtk_object_set_data_full (GTK_OBJECT (display_menu
),
1712 vectorscale_menu_display
[7].widget
,
1713 (GtkDestroyNotify
) gtk_widget_unref
);
1714 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
1716 vectorscale_menu_display
[7].widget
);
1717 if (gpiv_par
->display__vector_scale
== 128) {
1718 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
1719 (vectorscale_menu_display
[7].widget
),
1725 gtk_widget_ref (vectorscale_menu_display
[8].widget
);
1726 gtk_object_set_data_full (GTK_OBJECT (display_menu
),
1728 vectorscale_menu_display
[8].widget
,
1729 (GtkDestroyNotify
) gtk_widget_unref
);
1730 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
1732 vectorscale_menu_display
[8].widget
);
1733 if (gpiv_par
->display__vector_scale
== 256) {
1734 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
1735 (vectorscale_menu_display
[8].widget
),
1741 * vectorcolor menu widgets
1743 gtk_widget_ref (vectorcolor_menu_display
[0].widget
);
1744 gtk_object_set_data_full (GTK_OBJECT (display_menu
),
1746 vectorcolor_menu_display
[0].widget
,
1747 (GtkDestroyNotify
) gtk_widget_unref
);
1748 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
1749 "vectorcolor_menu_display0",
1750 vectorcolor_menu_display
[0].widget
);
1751 if (gpiv_par
->display__vector_color
== SHOW_PEAKNR
) {
1752 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
1753 (vectorcolor_menu_display
[0].widget
),
1759 gtk_widget_ref (vectorcolor_menu_display
[1].widget
);
1760 gtk_object_set_data_full (GTK_OBJECT (display_menu
),
1762 vectorcolor_menu_display
[1].widget
,
1763 (GtkDestroyNotify
) gtk_widget_unref
);
1764 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
1765 "vectorcolor_menu_display1",
1766 vectorcolor_menu_display
[1].widget
);
1767 if (gpiv_par
->display__vector_color
== SHOW_SNR
) {
1768 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
1769 (vectorcolor_menu_display
[1].widget
),
1775 gtk_widget_ref (vectorcolor_menu_display
[2].widget
);
1776 gtk_object_set_data_full (GTK_OBJECT (display_menu
),
1778 vectorcolor_menu_display
[2].widget
,
1779 (GtkDestroyNotify
) gtk_widget_unref
);
1780 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
1781 "vectorcolor_menu_display2",
1782 vectorcolor_menu_display
[2].widget
);
1783 if (gpiv_par
->display__vector_color
== SHOW_MAGNITUDE_GRAY
) {
1784 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
1785 (vectorcolor_menu_display
[2].widget
),
1791 gtk_widget_ref (vectorcolor_menu_display
[3].widget
);
1792 gtk_object_set_data_full (GTK_OBJECT (display_menu
),
1794 vectorcolor_menu_display
[3].widget
,
1795 (GtkDestroyNotify
) gtk_widget_unref
);
1796 gtk_object_set_data (GTK_OBJECT (disp
->mwin
),
1797 "vectorcolor_menu_display3",
1798 vectorcolor_menu_display
[3].widget
);
1799 if (gpiv_par
->display__vector_color
== SHOW_MAGNITUDE
) {
1800 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
1801 (vectorcolor_menu_display
[3].widget
),
1807 return display_menu
;