Initial revision
[gpiv.git] / src / display_interface.c
blob6318520c315ba5673cddda345a3d05819da56cc4
2 /*----------------------------------------------------------------------
4 gpiv - Graphic program for Particle Image Velocimetry, based on gtk/gnome
5 libraries.
7 Copyright (C) 2002 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)
14 any later version.
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 * interface for create_display
29 * $Log: display_interface.c,v $
30 * Revision 1.1 2003-06-17 17:10:52 gerber
31 * Initial revision
34 #include "gpiv_gtk.h"
35 #include "utils.h"
36 #include "display_interface.h"
37 #include "display_menus.h"
38 #include "display.h"
41 Display *
42 create_display(gchar * fname,
43 gint display_count,
44 GpivConsole * gpiv)
47 Display *disp = g_new0(Display,
48 1);
49 static gint screen_width = 0, screen_height = 0;
50 static gint width = 0, height = 0;
51 static gchar title[MAX_CHARS];
53 snprintf(title,
54 MAX_CHARS,
55 "gpiv display #%d",
56 display_count);
58 snprintf(disp->msg_display_default,
59 MAX_CHARS,
60 "%s",
61 fname);
63 disp->count = display_count;
64 disp->zoom_index = gpiv_par.zoom_index;
65 disp->zoom_factor = zfactor[disp->zoom_index];
66 disp->vector_scale = gpiv_par.vector_scale;
67 disp->display_img1 = gpiv_par.display_img1;
68 disp->display_img2 = gpiv_par.display_img2;
69 disp->display_intregs = gpiv_par.display_intregs;
70 disp->display_piv = gpiv_par.display_piv;
71 disp->display_vor = gpiv_par.display_vor;
72 disp->display_sstrain = gpiv_par.display_sstrain;
73 disp->display_nstrain = gpiv_par.display_nstrain;
75 disp->img.exist_img = FALSE;
76 disp->gpd.exist_piv = FALSE;
77 disp->gpd.saved_piv = TRUE;
78 disp->gpd.scaled_piv = FALSE;
79 disp->gpd.exist_valid = FALSE;
80 disp->gpd.exist_vor = FALSE;
81 disp->gpd.exist_vor_scaled = FALSE;
82 disp->gpd.saved_vor = TRUE;
83 disp->gpd.exist_sstrain = FALSE;
84 disp->gpd.exist_sstrain_scaled = FALSE;
85 disp->gpd.saved_sstrain = TRUE;
86 disp->gpd.exist_nstrain = FALSE;
87 disp->gpd.exist_nstrain_scaled = FALSE;
88 disp->gpd.saved_nstrain = TRUE;
92 /* disp->intreg.gci_intreg1 = alloc_gci_matrix(MAX_DATA, MAX_DATA); */
93 /* gpiv_warning("create_display:: A back from alloc_gci_matrix"); */
94 /* disp->intreg.gci_intreg2 = alloc_gci_matrix(MAX_DATA, MAX_DATA); */
95 /* gpiv_warning("create_display:: B back from alloc_gci_matrix"); */
98 disp->mwin = gtk_window_new(GTK_WINDOW_TOPLEVEL);
99 gtk_window_set_title(GTK_WINDOW(disp->mwin),
100 title);
101 gtk_object_set_data(GTK_OBJECT(disp->mwin),
102 "disp",
103 disp);
104 gtk_object_set_data(GTK_OBJECT(disp->mwin),
105 "gpiv",
106 gpiv);
109 * DESTROYN ITEM
111 /* gtk_object_set_data_full(GTK_OBJECT(disp->mwin), */
112 /* "mwin", */
113 /* disp->mwin, */
114 /* (GtkDestroyNotify) gtk_widget_unref); */
115 /* gtk_signal_connect (GTK_OBJECT (disp->mwin), "destroy", */
116 /* GTK_SIGNAL_FUNC (destroy), NULL); */
120 * focussing the actual display
122 gtk_signal_connect(GTK_OBJECT(disp->mwin),
123 "focus_in_event",
124 GTK_SIGNAL_FUNC(on_display_set_focus),
125 NULL);
127 if (screen_width == 0 || screen_height == 0) {
128 screen_width = gdk_screen_width();
129 screen_height = gdk_screen_height();
132 width = (gint) (disp->zoom_factor * gpiv_par.img_width + VIEW_HMARGE);
133 height = (gint) (disp->zoom_factor * gpiv_par.img_height + VIEW_VMARGE);
134 /* if (width < screen_width && height < screen_height) { */
135 gtk_window_set_default_size(GTK_WINDOW(disp->mwin),
136 width,
137 height);
139 /* }*/
141 /* gtk_window_set_policy (GTK_WINDOW (disp->mwin), */
142 /* FALSE, */
143 /* TRUE, */
144 /* FALSE); */
147 /* table */
148 disp->table = gtk_table_new(2,
150 FALSE);
151 gtk_widget_ref(disp->table);
152 gtk_object_set_data_full(GTK_OBJECT(disp->mwin),
153 "table",
154 disp->table,
155 (GtkDestroyNotify) gtk_widget_unref);
156 gtk_widget_show(disp->table);
157 /* gtk_container_add (GTK_CONTAINER (viewport_display),
158 disp->table); */
159 gtk_container_add(GTK_CONTAINER(disp->mwin),
160 disp->table);
164 * button with arrow disabled as conflicts with popup menu
166 /* disp->button_origin = gtk_button_new(); */
167 /* disp->arrow_origin = gtk_arrow_new(GTK_ARROW_RIGHT, GTK_SHADOW_OUT); */
168 /* gtk_container_add(GTK_CONTAINER(disp->button_origin), */
169 /* disp->arrow_origin); */
170 /* gtk_widget_show(disp->arrow_origin); */
171 /* gtk_signal_connect(GTK_OBJECT(disp->button_origin), */
172 /* "button_press_event", */
173 /* GTK_SIGNAL_FUNC(on_view_options_clicked), NULL); */
174 /* gtk_widget_show(disp->button_origin); */
175 /* gtk_table_attach(GTK_TABLE(disp->table), disp->button_origin, 0, 1, */
176 /* 0, 1, (GtkAttachOptions) (GTK_FILL), */
177 /* (GtkAttachOptions) (0), 0, 0); */
178 /* gtk_widget_set_usize(disp->button_origin, 1, 0); */
179 /* gtk_signal_connect(GTK_OBJECT(disp->button_origin), */
180 /* "button_press_event", */
181 /* GTK_SIGNAL_FUNC */
182 /* (on_button_display_origin_press_event), NULL); */
186 * rulers
188 #define EVENT_METHOD(i, x) GTK_WIDGET_CLASS(GTK_OBJECT(i)->klass)->x
190 disp->hruler = gtk_hruler_new();
191 gtk_widget_ref(disp->hruler);
192 gtk_object_set_data_full(GTK_OBJECT(disp->mwin),
193 "hruler",
194 disp->hruler,
195 (GtkDestroyNotify) gtk_widget_unref);
196 gtk_widget_show(disp->hruler);
197 gtk_table_attach(GTK_TABLE(disp->table),
198 disp->hruler,
203 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
204 (GtkAttachOptions) (GTK_FILL),
207 /* gtk_ruler_set_range (GTK_RULER (disp->hruler), 0, 500, 0, 1279); */
208 gtk_ruler_set_range(GTK_RULER(disp->hruler),
210 gpiv_par.img_width - 1,
212 gpiv_par.img_height - 1);
214 disp->vruler = gtk_vruler_new();
215 gtk_widget_ref(disp->vruler);
216 gtk_object_set_data_full(GTK_OBJECT(disp->mwin),
217 "vruler",
218 disp->vruler,
219 (GtkDestroyNotify) gtk_widget_unref);
220 gtk_widget_show(disp->vruler);
221 gtk_table_attach(GTK_TABLE(disp->table),
222 disp->vruler,
227 (GtkAttachOptions) (GTK_FILL),
228 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
231 /* gtk_ruler_set_range (GTK_RULER (disp->vruler), 0, 550, 0, 1023); */
232 gtk_ruler_set_range(GTK_RULER(disp->vruler),
234 gpiv_par.img_width - 1,
236 gpiv_par.img_height - 1);
240 * scrolledwindow
242 disp->scrolledwindow = gtk_scrolled_window_new(NULL,
243 NULL);
244 gtk_widget_ref(disp->scrolledwindow);
245 gtk_object_set_data_full(GTK_OBJECT(disp->mwin),
246 "scrolledwindow",
247 disp->scrolledwindow,
248 (GtkDestroyNotify) gtk_widget_unref);
249 gtk_widget_show(disp->scrolledwindow);
250 /* gtk_container_add (GTK_CONTAINER (disp->mwin), disp->scrolledwindow); */
251 gtk_table_attach(GTK_TABLE(disp->table),
252 disp->scrolledwindow,
257 (GtkAttachOptions) (GTK_FILL),
258 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
261 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW
262 (disp->scrolledwindow),
263 GTK_POLICY_ALWAYS,
264 GTK_POLICY_ALWAYS);
265 /* gtk_widget_set_usize (disp->scrolledwindow_buf, 160, -2); */
268 disp->scrolledwindow_hadj =
269 gtk_adjustment_new(0.0,
270 0.0,
271 (gfloat) gpiv_par.img_width,
272 5.0,
273 50.0,
274 50.0);
275 gtk_scrolled_window_set_hadjustment(GTK_SCROLLED_WINDOW
276 (disp->scrolledwindow),
277 GTK_ADJUSTMENT
278 (disp->scrolledwindow_hadj));
279 gtk_object_set_data_full(GTK_OBJECT(disp->mwin),
280 "scrolledwindow_hadj",
281 disp->scrolledwindow_hadj,
282 (GtkDestroyNotify) gtk_widget_unref);
283 gtk_object_set_data(GTK_OBJECT(disp->scrolledwindow_hadj),
284 "var_type",
285 "0");
286 gtk_signal_connect(GTK_OBJECT(disp->scrolledwindow_hadj),
287 "value_changed",
288 GTK_SIGNAL_FUNC
289 (on_scrolledwindow_display_adj_changed),
290 NULL);
293 disp->scrolledwindow_vadj =
294 gtk_adjustment_new(0.0,
295 0.0,
296 (gfloat) gpiv_par.img_height,
297 5.0,
298 50.0,
299 50.0);
300 gtk_scrolled_window_set_vadjustment(GTK_SCROLLED_WINDOW
301 (disp->scrolledwindow),
302 GTK_ADJUSTMENT
303 (disp->scrolledwindow_vadj));
304 gtk_object_set_data_full(GTK_OBJECT(disp->mwin),
305 "scrolledwindow_vadj",
306 disp->scrolledwindow_vadj,
307 (GtkDestroyNotify) gtk_widget_unref);
308 gtk_object_set_data(GTK_OBJECT(disp->scrolledwindow_vadj),
309 "var_type",
310 "1");
311 gtk_signal_connect(GTK_OBJECT(disp->scrolledwindow_vadj),
312 "value_changed",
313 GTK_SIGNAL_FUNC
314 (on_scrolledwindow_display_adj_changed),
315 NULL);
318 * gnome canvas
320 gtk_widget_push_visual(gdk_imlib_get_visual());
321 gtk_widget_push_colormap(gdk_imlib_get_colormap());
322 /* gtk_widget_push_visual (gdk_rgb_get_visual ()); */
323 /* gtk_widget_push_colormap (gdk_rgb_get_cmap ()); */
325 disp->canvas = gnome_canvas_new /* _aa */ ();
326 gtk_widget_pop_colormap();
327 gtk_widget_pop_visual();
328 gtk_widget_ref(disp->canvas);
329 gtk_widget_set_events(GTK_WIDGET(disp->canvas),
330 GDK_LEAVE_NOTIFY_MASK |
331 GDK_BUTTON_PRESS_MASK |
332 GDK_BUTTON_RELEASE_MASK |
333 GDK_POINTER_MOTION_MASK |
334 GDK_POINTER_MOTION_HINT_MASK);
336 gtk_object_set_data_full(GTK_OBJECT(disp->mwin),
337 "canvas",
338 disp->canvas,
339 (GtkDestroyNotify) gtk_widget_unref);
340 gtk_widget_show(disp->canvas);
341 gnome_canvas_set_scroll_region(GNOME_CANVAS(disp->canvas),
344 gpiv_par.img_width - 1,
345 gpiv_par.img_height - 1);
346 gtk_container_add(GTK_CONTAINER(disp->scrolledwindow),
347 disp->canvas);
351 gtk_object_set_data(GTK_OBJECT(disp->canvas),
352 "disp",
353 disp);
354 gtk_object_set_data(GTK_OBJECT(disp->canvas),
355 "gpiv",
356 gpiv);
357 gtk_signal_connect(GTK_OBJECT(disp->canvas),
358 "enter_notify_event",
359 GTK_SIGNAL_FUNC(canvas_display_enter_notify),
360 NULL);
361 gtk_signal_connect(GTK_OBJECT(disp->canvas),
362 "motion_notify_event",
363 GTK_SIGNAL_FUNC(canvas_display_motion_notify),
364 NULL);
365 gtk_signal_connect(GTK_OBJECT(disp->canvas),
366 "button_press_event",
367 GTK_SIGNAL_FUNC(canvas_display_button_press),
368 NULL);
369 gtk_signal_connect(GTK_OBJECT(disp->canvas),
370 "button_release_event",
371 GTK_SIGNAL_FUNC(canvas_display_button_release),
372 NULL);
373 gtk_signal_connect(GTK_OBJECT(disp->canvas),
374 "leave_notify_event",
375 GTK_SIGNAL_FUNC(canvas_display_leave_notify),
376 NULL);
380 * connect rulers to gnome_canvas drawing area
382 gtk_signal_connect_object(GTK_OBJECT(disp->canvas),
383 "motion_notify_event",
384 (GtkSignalFunc)
385 EVENT_METHOD(disp->vruler,
386 motion_notify_event),
387 GTK_OBJECT(disp->vruler));
389 gtk_signal_connect_object(GTK_OBJECT(disp->canvas),
390 "motion_notify_event",
391 (GtkSignalFunc)
392 EVENT_METHOD(disp->hruler,
393 motion_notify_event),
394 GTK_OBJECT(disp->hruler));
398 * application/status bar
400 disp->appbar = gnome_appbar_new(FALSE,
401 TRUE,
402 GNOME_PREFERENCES_NEVER);
403 gtk_widget_ref(disp->appbar);
404 gtk_object_set_data_full(GTK_OBJECT(disp->mwin),
405 "appbar",
406 disp->appbar,
407 (GtkDestroyNotify) gtk_widget_unref);
408 gtk_widget_show(disp->appbar);
409 gtk_table_attach(GTK_TABLE(disp->table),
410 disp->appbar,
415 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
416 (GtkAttachOptions) (GTK_FILL),
419 gnome_appbar_set_default(GNOME_APPBAR(disp->appbar),
420 disp->msg_display_default);
425 /* gtk_signal_connect_object(GTK_OBJECT(disp->mwin), "button_press_event", */
426 /* GTK_SIGNAL_FUNC (on_my_popup_handler), */
427 /* GTK_OBJECT(display_menu)); */
429 /* the navigation window button See GIMP */
430 disp->nav_ebox = gtk_event_box_new();
431 gtk_widget_ref(disp->nav_ebox);
432 gtk_object_set_data_full(GTK_OBJECT(disp->mwin),
433 "nav_ebox",
434 disp->nav_ebox,
435 (GtkDestroyNotify) gtk_widget_unref);
436 gtk_table_attach(GTK_TABLE(disp->table),
437 disp->nav_ebox,
442 (GtkAttachOptions) (GTK_FILL),
443 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
446 gtk_widget_show(disp->nav_ebox);
447 gtk_signal_connect(GTK_OBJECT(disp->nav_ebox),
448 "button_press_event",
449 GTK_SIGNAL_FUNC(nav_popup_click_handler),
450 NULL);
452 /* disp->pixmap = gtk_pixmap_new (navbutton_pixmap, navbutton_mask); */
453 /* gtk_container_add (GTK_CONTAINER (disp->nav_ebox), disp->pixmap); */
454 /* gtk_widget_show (disp->pixmap); */
457 return disp;
462 GtkWidget *
463 create_display_menu(Display * disp)
465 GtkWidget *display_menu = NULL;
467 display_menu = gtk_menu_new();
468 gtk_object_set_data(
469 /* GTK_OBJECT(display_act->gpd.display->mwin), */
470 GTK_OBJECT(disp->mwin),
471 "display_menu",
472 display_menu);
473 gnome_app_fill_menu(GTK_MENU_SHELL(display_menu),
474 display_menu_uiinfo,
475 NULL,
476 FALSE,
481 * view menu widgets
483 gtk_widget_ref(display_menu_uiinfo[0].widget);
484 gtk_object_set_data_full(GTK_OBJECT(display_menu),
485 "v_m",
486 display_menu_uiinfo[0].widget,
487 (GtkDestroyNotify) gtk_widget_unref);
490 gtk_widget_ref(view_menu_display[2].widget);
491 gtk_object_set_data_full(GTK_OBJECT(display_menu),
492 "view_img1",
493 view_menu_display[2].widget,
494 (GtkDestroyNotify) gtk_widget_unref);
495 gtk_object_set_data(GTK_OBJECT(disp->mwin),
496 "view_menu_display2",
497 view_menu_display[2].widget);
498 g_warning("display_img1 = %d", disp->display_img1);
499 if (disp->display_img1) {
500 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
501 (view_menu_display[2].widget),
502 TRUE);
507 gtk_widget_ref(view_menu_display[3].widget);
508 gtk_object_set_data_full(GTK_OBJECT(display_menu),
509 "view_img1",
510 view_menu_display[3].widget,
511 (GtkDestroyNotify) gtk_widget_unref);
512 gtk_object_set_data(GTK_OBJECT(disp->mwin),
513 "view_menu_display3",
514 view_menu_display[3].widget);
515 g_warning("display_img2 = %d", disp->display_img2);
516 if (disp->display_img2) {
517 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
518 (view_menu_display[3].widget),
519 TRUE);
524 gtk_widget_ref(view_menu_display[4].widget);
525 gtk_object_set_data_full(GTK_OBJECT(display_menu),
526 "view_intreg",
527 view_menu_display[4].widget,
528 (GtkDestroyNotify) gtk_widget_unref);
529 gtk_object_set_data(GTK_OBJECT(disp->mwin),
530 "view_menu_display4",
531 view_menu_display[4].widget);
532 g_warning("display_intregs = %d", disp->display_intregs);
533 if (disp->display_intregs) {
534 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
535 (view_menu_display[4].widget),
536 TRUE);
541 gtk_widget_ref(view_menu_display[5].widget);
542 gtk_object_set_data_full(GTK_OBJECT(display_menu),
543 "view_piv",
544 view_menu_display[5].widget,
545 (GtkDestroyNotify) gtk_widget_unref);
546 /* gtk_object_set_data(GTK_OBJECT(disp->mwin), */
547 /* "view_menu_display5", */
548 /* view_menu_display[5].widget); */
549 if (disp->display_piv) {
550 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
551 (view_menu_display[5].widget),
552 TRUE);
557 gtk_widget_ref(view_menu_display[6].widget);
558 gtk_object_set_data_full(GTK_OBJECT(display_menu),
559 "view_vor",
560 view_menu_display[6].widget,
561 (GtkDestroyNotify) gtk_widget_unref);
562 if (gpiv_par.display_vor) {
563 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
564 (view_menu_display[6].widget),
565 TRUE);
566 } else {
567 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
568 (view_menu_display[6].widget),
569 FALSE);
574 gtk_widget_ref(view_menu_display[7].widget);
575 gtk_object_set_data_full(GTK_OBJECT(display_menu),
576 "view_sstrain",
577 view_menu_display[7].widget,
578 (GtkDestroyNotify) gtk_widget_unref);
579 if (gpiv_par.display_sstrain) {
580 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
581 (view_menu_display[7].widget),
582 TRUE);
583 } else {
584 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
585 (view_menu_display[7].widget),
586 FALSE);
591 gtk_widget_ref(view_menu_display[8].widget);
592 gtk_object_set_data_full(GTK_OBJECT(display_menu),
593 "view_nstrain",
594 view_menu_display[8].widget,
595 (GtkDestroyNotify) gtk_widget_unref);
596 if (gpiv_par.display_nstrain) {
597 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
598 (view_menu_display[8].widget),
599 TRUE);
600 } else {
601 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
602 (view_menu_display[8].widget),
603 FALSE);
609 * zoom menu widgets
611 gtk_widget_ref(zoomscale_menu_display[0].widget);
612 gtk_object_set_data_full(GTK_OBJECT(display_menu),
613 "zmv_0",
614 zoomscale_menu_display[0].widget,
615 (GtkDestroyNotify) gtk_widget_unref);
616 if (disp->zoom_index == ZOOM_0) {
617 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
618 (zoomscale_menu_display[0].widget),
619 TRUE);
624 gtk_widget_ref(zoomscale_menu_display[1].widget);
625 gtk_object_set_data_full(GTK_OBJECT(display_menu),
626 "zmv_1",
627 zoomscale_menu_display[1].widget,
628 (GtkDestroyNotify) gtk_widget_unref);
629 if (disp->zoom_index == ZOOM_1) {
630 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
631 (zoomscale_menu_display[1].widget),
632 TRUE);
637 gtk_widget_ref(zoomscale_menu_display[2].widget);
638 gtk_object_set_data_full(GTK_OBJECT(display_menu),
639 "zmv_2",
640 zoomscale_menu_display[2].widget,
641 (GtkDestroyNotify) gtk_widget_unref);
642 if (disp->zoom_index == ZOOM_2) {
643 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
644 (zoomscale_menu_display[2].widget),
645 TRUE);
650 gtk_widget_ref(zoomscale_menu_display[3].widget);
651 gtk_object_set_data_full(GTK_OBJECT(display_menu),
652 "zmv_3",
653 zoomscale_menu_display[3].widget,
654 (GtkDestroyNotify) gtk_widget_unref);
655 if (disp->zoom_index == ZOOM_3) {
656 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
657 (zoomscale_menu_display[3].widget),
658 TRUE);
663 gtk_widget_ref(zoomscale_menu_display[4].widget);
664 gtk_object_set_data_full(GTK_OBJECT(display_menu),
665 "zmv_4",
666 zoomscale_menu_display[4].widget,
667 (GtkDestroyNotify) gtk_widget_unref);
668 if (disp->zoom_index == ZOOM_4) {
669 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
670 (zoomscale_menu_display[4].widget),
671 TRUE);
676 gtk_widget_ref(zoomscale_menu_display[5].widget);
677 gtk_object_set_data_full(GTK_OBJECT(display_menu),
678 "zmv_5",
679 zoomscale_menu_display[5].widget,
680 (GtkDestroyNotify) gtk_widget_unref);
681 if (disp->zoom_index == ZOOM_5) {
682 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
683 (zoomscale_menu_display[5].widget),
684 TRUE);
689 * stretch window menu widget to resize window after zoomscaling
692 gtk_widget_ref(view_menu_display[0].widget);
693 gtk_object_set_data_full(GTK_OBJECT(display_menu),
694 "v_mv_0",
695 view_menu_display[0].widget,
696 (GtkDestroyNotify) gtk_widget_unref);
697 gtk_menu_item_activate(GTK_MENU_ITEM(view_menu_display[0].widget));
701 * vectorscale menu widgets
703 gtk_widget_ref(vectorscale_menu_display[0].widget);
704 gtk_object_set_data_full(GTK_OBJECT(display_menu),
705 "vs_mv_0",
706 vectorscale_menu_display[0].widget,
707 (GtkDestroyNotify) gtk_widget_unref);
708 if (gpiv_par.vector_scale == 1) {
709 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
710 (vectorscale_menu_display[0].widget),
711 TRUE);
716 gtk_widget_ref(vectorscale_menu_display[1].widget);
717 gtk_object_set_data_full(GTK_OBJECT(display_menu),
718 "vs_mv_1",
719 vectorscale_menu_display[1].widget,
720 (GtkDestroyNotify) gtk_widget_unref);
721 if (gpiv_par.vector_scale == 2) {
722 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
723 (vectorscale_menu_display[1].widget),
724 TRUE);
729 gtk_widget_ref(vectorscale_menu_display[2].widget);
730 gtk_object_set_data_full(GTK_OBJECT(display_menu),
731 "vs_mv_2",
732 vectorscale_menu_display[2].widget,
733 (GtkDestroyNotify) gtk_widget_unref);
734 if (gpiv_par.vector_scale == 4) {
735 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
736 (vectorscale_menu_display[2].widget),
737 TRUE);
742 gtk_widget_ref(vectorscale_menu_display[3].widget);
743 gtk_object_set_data_full(GTK_OBJECT(display_menu),
744 "vs_mv_3",
745 vectorscale_menu_display[3].widget,
746 (GtkDestroyNotify) gtk_widget_unref);
747 if (gpiv_par.vector_scale == 8) {
748 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
749 (vectorscale_menu_display[3].widget),
750 TRUE);
755 gtk_widget_ref(vectorscale_menu_display[4].widget);
756 gtk_object_set_data_full(GTK_OBJECT(display_menu),
757 "vs_mv_4",
758 vectorscale_menu_display[0].widget,
759 (GtkDestroyNotify) gtk_widget_unref);
760 if (gpiv_par.vector_scale == 16) {
761 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
762 (vectorscale_menu_display[4].widget),
763 TRUE);
768 gtk_widget_ref(vectorscale_menu_display[5].widget);
769 gtk_object_set_data_full(GTK_OBJECT(display_menu),
770 "vs_mv_0",
771 vectorscale_menu_display[5].widget,
772 (GtkDestroyNotify) gtk_widget_unref);
773 if (gpiv_par.vector_scale == 32) {
774 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
775 (vectorscale_menu_display[5].widget),
776 TRUE);
781 gtk_widget_ref(vectorscale_menu_display[6].widget);
782 gtk_object_set_data_full(GTK_OBJECT(display_menu),
783 "vs_mv_6",
784 vectorscale_menu_display[6].widget,
785 (GtkDestroyNotify) gtk_widget_unref);
786 if (gpiv_par.vector_scale == 64) {
787 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
788 (vectorscale_menu_display[6].widget),
789 TRUE);
794 gtk_widget_ref(vectorscale_menu_display[7].widget);
795 gtk_object_set_data_full(GTK_OBJECT(display_menu),
796 "vs_mv_7",
797 vectorscale_menu_display[7].widget,
798 (GtkDestroyNotify) gtk_widget_unref);
799 if (gpiv_par.vector_scale == 128) {
800 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
801 (vectorscale_menu_display[7].widget),
802 TRUE);
807 gtk_widget_ref(vectorscale_menu_display[8].widget);
808 gtk_object_set_data_full(GTK_OBJECT(display_menu),
809 "vs_mv_8",
810 vectorscale_menu_display[8].widget,
811 (GtkDestroyNotify) gtk_widget_unref);
812 if (gpiv_par.vector_scale == 256) {
813 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
814 (vectorscale_menu_display[8].widget),
815 TRUE);
819 return display_menu;
826 GtkWidget *create_img_display(gchar * fname,
827 ImagePar image_par)
830 img_display_window = NULL;
831 darea = NULL;
834 img_display_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
835 gtk_object_set_data(GTK_OBJECT(img_display_window),
836 "img_display_window",
837 img_display_window);
838 gtk_window_set_title(GTK_WINDOW(img_display_window),
839 fname);
842 * drawing area
845 darea = gtk_drawing_area_new();
846 gtk_drawing_area_size(GTK_DRAWING_AREA(darea),
847 gpiv_par.img_width,
848 gpiv_par.img_height);
849 gtk_container_add(GTK_CONTAINER(img_display_window),
850 darea);
851 gtk_signal_connect(GTK_OBJECT(darea),
852 "expose-event",
853 GTK_SIGNAL_FUNC(on_darea_img_expose),
854 NULL);
856 /* if (gpiv_par.view_gpivbuttons) { */
857 /* gtk_widget_show(handlebox1); */
859 /* } else { */
860 /* gtk_widget_hide(handlebox1); */
861 /* } */
862 /* gtk_widget_show(handlebox1); */
863 /* gtk_widget_show(scrolledwindow_handbox1); */
864 /* gtk_widget_show(viewport_handbox1); */
865 /* gtk_widget_show(toolbar2); */
866 /* gtk_widget_show (hbox_toolbar2); */
867 return img_display_window;