display ruler, line/point evaluation
[gpiv.git] / src / display_interface.c
blob5c62b8df553ec07c424d191989235a9234e96472
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.2 2003-06-27 13:47:26 gerber
31 * display ruler, line/point evaluation
33 * Revision 1.1.1.1 2003/06/17 17:10:52 gerber
34 * Imported gpiv
37 #include "gpiv_gtk.h"
38 #include "utils.h"
39 #include "display_interface.h"
40 #include "display_menus.h"
41 #include "display.h"
44 Display *
45 create_display(gchar * fname,
46 gint display_count,
47 GpivConsole * gpiv)
50 Display *disp = g_new0(Display,
51 1);
52 static gint screen_width = 0, screen_height = 0;
53 static gint width = 0, height = 0;
54 static gchar title[MAX_CHARS];
56 snprintf(title,
57 MAX_CHARS,
58 "gpiv display #%d",
59 display_count);
61 snprintf(disp->msg_display_default,
62 MAX_CHARS,
63 "%s",
64 fname);
66 disp->count = display_count;
67 disp->zoom_index = gpiv_par.zoom_index;
68 disp->zoom_factor = zfactor[disp->zoom_index];
69 disp->vector_scale = gpiv_par.vector_scale;
70 disp->display_img1 = gpiv_par.display_img1;
71 disp->display_img2 = gpiv_par.display_img2;
72 disp->display_intregs = gpiv_par.display_intregs;
73 disp->display_piv = gpiv_par.display_piv;
74 disp->display_vor = gpiv_par.display_vor;
75 disp->display_sstrain = gpiv_par.display_sstrain;
76 disp->display_nstrain = gpiv_par.display_nstrain;
78 disp->img.exist_img = FALSE;
79 disp->gpd.exist_piv = FALSE;
80 disp->gpd.saved_piv = TRUE;
81 disp->gpd.scaled_piv = FALSE;
82 disp->gpd.exist_valid = FALSE;
83 disp->gpd.exist_vor = FALSE;
84 disp->gpd.exist_vor_scaled = FALSE;
85 disp->gpd.saved_vor = TRUE;
86 disp->gpd.exist_sstrain = FALSE;
87 disp->gpd.exist_sstrain_scaled = FALSE;
88 disp->gpd.saved_sstrain = TRUE;
89 disp->gpd.exist_nstrain = FALSE;
90 disp->gpd.exist_nstrain_scaled = FALSE;
91 disp->gpd.saved_nstrain = TRUE;
95 /* disp->intreg.gci_intreg1 = alloc_gci_matrix(MAX_DATA, MAX_DATA); */
96 /* gpiv_warning("create_display:: A back from alloc_gci_matrix"); */
97 /* disp->intreg.gci_intreg2 = alloc_gci_matrix(MAX_DATA, MAX_DATA); */
98 /* gpiv_warning("create_display:: B back from alloc_gci_matrix"); */
101 disp->mwin = gtk_window_new(GTK_WINDOW_TOPLEVEL);
102 gtk_window_set_title(GTK_WINDOW(disp->mwin),
103 title);
104 gtk_object_set_data(GTK_OBJECT(disp->mwin),
105 "disp",
106 disp);
107 gtk_object_set_data(GTK_OBJECT(disp->mwin),
108 "gpiv",
109 gpiv);
112 * DESTROYN ITEM
114 /* gtk_object_set_data_full(GTK_OBJECT(disp->mwin), */
115 /* "mwin", */
116 /* disp->mwin, */
117 /* (GtkDestroyNotify) gtk_widget_unref); */
118 /* gtk_signal_connect (GTK_OBJECT (disp->mwin), "destroy", */
119 /* GTK_SIGNAL_FUNC (destroy), NULL); */
123 * focussing the actual display
125 gtk_signal_connect(GTK_OBJECT(disp->mwin),
126 "focus_in_event",
127 GTK_SIGNAL_FUNC(on_display_set_focus),
128 NULL);
130 if (screen_width == 0 || screen_height == 0) {
131 screen_width = gdk_screen_width();
132 screen_height = gdk_screen_height();
135 width = (gint) (disp->zoom_factor * gpiv_par.img_width + VIEW_HMARGE);
136 height = (gint) (disp->zoom_factor * gpiv_par.img_height + VIEW_VMARGE);
137 /* if (width < screen_width && height < screen_height) { */
138 gtk_window_set_default_size(GTK_WINDOW(disp->mwin),
139 width,
140 height);
142 /* }*/
144 gtk_window_set_policy (GTK_WINDOW (disp->mwin),
145 FALSE,
146 FALSE,
147 TRUE);
150 * for gtk 1.4 (or newer?)
152 /* gtk_window_set_user_resizeable(GTK_WINDOW (disp->mwin), */
153 /* FALSE); */
156 * table
158 disp->table = gtk_table_new(2,
160 FALSE);
161 gtk_widget_ref(disp->table);
162 gtk_object_set_data_full(GTK_OBJECT(disp->mwin),
163 "table",
164 disp->table,
165 (GtkDestroyNotify) gtk_widget_unref);
166 gtk_widget_show(disp->table);
167 gtk_container_add(GTK_CONTAINER(disp->mwin),
168 disp->table);
172 * button with arrow disabled as it conflicts with popup menu
174 /* disp->button_origin = gtk_button_new(); */
175 /* disp->arrow_origin = gtk_arrow_new(GTK_ARROW_RIGHT, GTK_SHADOW_OUT); */
176 /* gtk_container_add(GTK_CONTAINER(disp->button_origin), */
177 /* disp->arrow_origin); */
178 /* gtk_widget_show(disp->arrow_origin); */
179 /* gtk_signal_connect(GTK_OBJECT(disp->button_origin), */
180 /* "button_press_event", */
181 /* GTK_SIGNAL_FUNC(on_view_options_clicked), NULL); */
182 /* gtk_widget_show(disp->button_origin); */
183 /* gtk_table_attach(GTK_TABLE(disp->table), disp->button_origin, 0, 1, */
184 /* 0, 1, (GtkAttachOptions) (GTK_FILL), */
185 /* (GtkAttachOptions) (0), 0, 0); */
186 /* gtk_widget_set_usize(disp->button_origin, 1, 0); */
187 /* gtk_signal_connect(GTK_OBJECT(disp->button_origin), */
188 /* "button_press_event", */
189 /* GTK_SIGNAL_FUNC */
190 /* (on_button_display_origin_press_event), NULL); */
194 * rulers
196 #define EVENT_METHOD(i, x) GTK_WIDGET_CLASS(GTK_OBJECT(i)->klass)->x
198 disp->hruler = gtk_hruler_new();
199 gtk_widget_ref(disp->hruler);
200 gtk_object_set_data_full(GTK_OBJECT(disp->mwin),
201 "hruler",
202 disp->hruler,
203 (GtkDestroyNotify) gtk_widget_unref);
204 gtk_widget_show(disp->hruler);
205 gtk_table_attach(GTK_TABLE(disp->table),
206 disp->hruler,
211 (GtkAttachOptions) (GTK_EXPAND/* | GTK_FILL */),
212 (GtkAttachOptions) (GTK_FILL),
216 gtk_ruler_set_range(GTK_RULER(disp->hruler),
217 0.0,
218 (gfloat) (gpiv_par.img_width - 1),
219 0.0,
220 (gfloat) (gpiv_par.img_width - 1));
221 gtk_widget_set_usize (disp->hruler,
222 (gint) (disp->zoom_factor * gpiv_par.img_width),
223 RULER_WIDTH);
224 gtk_widget_set_uposition (disp->hruler, RULER_WIDTH, 0);
228 disp->vruler = gtk_vruler_new();
229 gtk_widget_ref(disp->vruler);
230 gtk_object_set_data_full(GTK_OBJECT(disp->mwin),
231 "vruler",
232 disp->vruler,
233 (GtkDestroyNotify) gtk_widget_unref);
234 gtk_widget_show(disp->vruler);
235 gtk_table_attach(GTK_TABLE(disp->table),
236 disp->vruler,
241 (GtkAttachOptions) (GTK_EXPAND /* GTK_FILL */),
242 (GtkAttachOptions) (GTK_EXPAND /* | GTK_FILL */),
246 gtk_ruler_set_range(GTK_RULER(disp->vruler),
247 0.0,
248 (gfloat) (gpiv_par.img_height - 1),
249 0.0,
250 (gfloat) (gpiv_par.img_height - 1));
251 gtk_widget_set_usize (disp->vruler,
252 RULER_WIDTH,
253 (gint) (disp->zoom_factor * gpiv_par.img_height));
254 gtk_widget_set_uposition (disp->vruler, 0, RULER_WIDTH);
258 * scrolledwindow
260 disp->scrolledwindow = gtk_scrolled_window_new(NULL,
261 NULL);
262 gtk_widget_ref(disp->scrolledwindow);
263 gtk_object_set_data_full(GTK_OBJECT(disp->mwin),
264 "scrolledwindow",
265 disp->scrolledwindow,
266 (GtkDestroyNotify) gtk_widget_unref);
267 gtk_widget_show(disp->scrolledwindow);
268 gtk_table_attach(GTK_TABLE(disp->table),
269 disp->scrolledwindow,
274 (GtkAttachOptions) (GTK_FILL),
275 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
278 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW
279 (disp->scrolledwindow),
280 GTK_POLICY_ALWAYS,
281 GTK_POLICY_ALWAYS);
283 /* gtk_widget_set_usize (disp->scrolledwindow, */
284 /* gpiv_par.img_width, */
285 /* gpiv_par.img_height); */
288 disp->scrolledwindow_hadj =
289 gtk_adjustment_new(0.0,
290 0.0,
291 (gfloat) gpiv_par.img_width,
292 5.0,
293 50.0,
294 50.0);
295 gtk_scrolled_window_set_hadjustment(GTK_SCROLLED_WINDOW
296 (disp->scrolledwindow),
297 GTK_ADJUSTMENT
298 (disp->scrolledwindow_hadj));
299 gtk_object_set_data_full(GTK_OBJECT(disp->mwin),
300 "scrolledwindow_hadj",
301 disp->scrolledwindow_hadj,
302 (GtkDestroyNotify) gtk_widget_unref);
303 gtk_object_set_data(GTK_OBJECT(disp->scrolledwindow_hadj),
304 "var_type",
305 "0");
306 gtk_object_set_data(GTK_OBJECT(disp->scrolledwindow_hadj),
307 "disp",
308 disp);
309 gtk_signal_connect(GTK_OBJECT(disp->scrolledwindow_hadj),
310 "value_changed",
311 GTK_SIGNAL_FUNC
312 (on_scrolledwindow_display_adj_changed),
313 NULL);
316 disp->scrolledwindow_vadj =
317 gtk_adjustment_new(0.0,
318 0.0,
319 (gfloat) gpiv_par.img_height,
320 5.0,
321 50.0,
322 50.0);
323 gtk_scrolled_window_set_vadjustment(GTK_SCROLLED_WINDOW
324 (disp->scrolledwindow),
325 GTK_ADJUSTMENT
326 (disp->scrolledwindow_vadj));
327 gtk_object_set_data_full(GTK_OBJECT(disp->mwin),
328 "scrolledwindow_vadj",
329 disp->scrolledwindow_vadj,
330 (GtkDestroyNotify) gtk_widget_unref);
331 gtk_object_set_data(GTK_OBJECT(disp->scrolledwindow_vadj),
332 "var_type",
333 "1");
334 gtk_object_set_data(GTK_OBJECT(disp->scrolledwindow_vadj),
335 "disp",
336 disp);
337 gtk_signal_connect(GTK_OBJECT(disp->scrolledwindow_vadj),
338 "value_changed",
339 GTK_SIGNAL_FUNC
340 (on_scrolledwindow_display_adj_changed),
341 NULL);
344 * gnome canvas
346 /* gtk_widget_push_visual (gdk_rgb_get_visual ()); */
347 /* gtk_widget_push_colormap (gdk_rgb_get_cmap ()); */
348 /* disp->canvas = gnome_canvas_new_aa (); */
350 gtk_widget_push_visual(gdk_imlib_get_visual());
351 gtk_widget_push_colormap(gdk_imlib_get_colormap());
353 disp->canvas = gnome_canvas_new ();
354 gtk_widget_pop_colormap();
355 gtk_widget_pop_visual();
356 gtk_widget_ref(disp->canvas);
357 gtk_widget_set_events(GTK_WIDGET(disp->canvas),
358 GDK_LEAVE_NOTIFY_MASK |
359 GDK_BUTTON_PRESS_MASK |
360 GDK_BUTTON_RELEASE_MASK |
361 GDK_POINTER_MOTION_MASK |
362 GDK_POINTER_MOTION_HINT_MASK);
364 gtk_object_set_data_full(GTK_OBJECT(disp->mwin),
365 "canvas",
366 disp->canvas,
367 (GtkDestroyNotify) gtk_widget_unref);
368 gtk_widget_show(disp->canvas);
369 gnome_canvas_set_scroll_region(GNOME_CANVAS(disp->canvas),
372 gpiv_par.img_width - 1,
373 gpiv_par.img_height - 1);
374 gtk_container_add(GTK_CONTAINER(disp->scrolledwindow),
375 disp->canvas);
378 gtk_object_set_data(GTK_OBJECT(disp->canvas),
379 "disp",
380 disp);
381 gtk_object_set_data(GTK_OBJECT(disp->canvas),
382 "gpiv",
383 gpiv);
384 gtk_signal_connect(GTK_OBJECT(disp->canvas),
385 "enter_notify_event",
386 GTK_SIGNAL_FUNC(canvas_display_enter_notify),
387 NULL);
388 gtk_signal_connect(GTK_OBJECT(disp->canvas),
389 "motion_notify_event",
390 GTK_SIGNAL_FUNC(canvas_display_motion_notify),
391 NULL);
392 gtk_signal_connect(GTK_OBJECT(disp->canvas),
393 "button_press_event",
394 GTK_SIGNAL_FUNC(canvas_display_button_press),
395 NULL);
396 gtk_signal_connect(GTK_OBJECT(disp->canvas),
397 "button_release_event",
398 GTK_SIGNAL_FUNC(canvas_display_button_release),
399 NULL);
400 gtk_signal_connect(GTK_OBJECT(disp->canvas),
401 "leave_notify_event",
402 GTK_SIGNAL_FUNC(canvas_display_leave_notify),
403 NULL);
407 * connect rulers to gnome_canvas drawing area
409 gtk_signal_connect_object(GTK_OBJECT(disp->canvas),
410 "motion_notify_event",
411 (GtkSignalFunc)
412 EVENT_METHOD(disp->hruler,
413 motion_notify_event),
414 GTK_OBJECT(disp->hruler));
416 gtk_signal_connect_object(GTK_OBJECT(disp->canvas),
417 "motion_notify_event",
418 (GtkSignalFunc)
419 EVENT_METHOD(disp->vruler,
420 motion_notify_event),
421 GTK_OBJECT(disp->vruler));
425 * application/status bar
427 disp->appbar = gnome_appbar_new(FALSE,
428 TRUE,
429 GNOME_PREFERENCES_NEVER);
430 gtk_widget_ref(disp->appbar);
431 gtk_object_set_data_full(GTK_OBJECT(disp->mwin),
432 "appbar",
433 disp->appbar,
434 (GtkDestroyNotify) gtk_widget_unref);
435 gtk_widget_show(disp->appbar);
436 gtk_table_attach(GTK_TABLE(disp->table),
437 disp->appbar,
442 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
443 (GtkAttachOptions) (GTK_FILL),
446 gnome_appbar_set_default(GNOME_APPBAR(disp->appbar),
447 disp->msg_display_default);
452 /* gtk_signal_connect_object(GTK_OBJECT(disp->mwin), "button_press_event", */
453 /* GTK_SIGNAL_FUNC (on_my_popup_handler), */
454 /* GTK_OBJECT(display_menu)); */
456 /* the navigation window button See GIMP */
457 /* disp->nav_ebox = gtk_event_box_new(); */
458 /* gtk_widget_ref(disp->nav_ebox); */
459 /* gtk_object_set_data_full(GTK_OBJECT(disp->mwin), */
460 /* "nav_ebox", */
461 /* disp->nav_ebox, */
462 /* (GtkDestroyNotify) gtk_widget_unref); */
463 /* gtk_table_attach(GTK_TABLE(disp->table), */
464 /* disp->nav_ebox, */
465 /* 1, */
466 /* 2, */
467 /* 1, */
468 /* 2, */
469 /* (GtkAttachOptions) (GTK_FILL), */
470 /* (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), */
471 /* 0, */
472 /* 0); */
473 /* gtk_widget_show(disp->nav_ebox); */
474 /* gtk_signal_connect(GTK_OBJECT(disp->nav_ebox), */
475 /* "button_press_event", */
476 /* GTK_SIGNAL_FUNC(nav_popup_click_handler), */
477 /* NULL); */
479 /* disp->pixmap = gtk_pixmap_new (navbutton_pixmap, navbutton_mask); */
480 /* gtk_container_add (GTK_CONTAINER (disp->nav_ebox), disp->pixmap); */
481 /* gtk_widget_show (disp->pixmap); */
484 g_warning("::5 END");
485 return disp;
490 GtkWidget *
491 create_display_menu(Display * disp)
493 GtkWidget *display_menu = NULL;
495 display_menu = gtk_menu_new();
496 gtk_object_set_data(GTK_OBJECT(disp->mwin),
497 "display_menu",
498 display_menu);
499 gnome_app_fill_menu(GTK_MENU_SHELL(display_menu),
500 display_menu_uiinfo,
501 NULL,
502 FALSE,
507 * view menu widgets
509 gtk_widget_ref(display_menu_uiinfo[0].widget);
510 gtk_object_set_data_full(GTK_OBJECT(display_menu),
511 "v_m",
512 display_menu_uiinfo[0].widget,
513 (GtkDestroyNotify) gtk_widget_unref);
516 gtk_widget_ref(view_menu_display[2].widget);
517 gtk_object_set_data_full(GTK_OBJECT(display_menu),
518 "view_img1",
519 view_menu_display[2].widget,
520 (GtkDestroyNotify) gtk_widget_unref);
521 gtk_object_set_data(GTK_OBJECT(disp->mwin),
522 "view_menu_display2",
523 view_menu_display[2].widget);
524 if (disp->display_img1) {
525 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
526 (view_menu_display[2].widget),
527 TRUE);
532 gtk_widget_ref(view_menu_display[3].widget);
533 gtk_object_set_data_full(GTK_OBJECT(display_menu),
534 "view_img1",
535 view_menu_display[3].widget,
536 (GtkDestroyNotify) gtk_widget_unref);
537 gtk_object_set_data(GTK_OBJECT(disp->mwin),
538 "view_menu_display3",
539 view_menu_display[3].widget);
540 if (disp->display_img2) {
541 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
542 (view_menu_display[3].widget),
543 TRUE);
548 gtk_widget_ref(view_menu_display[4].widget);
549 gtk_object_set_data_full(GTK_OBJECT(display_menu),
550 "view_intreg",
551 view_menu_display[4].widget,
552 (GtkDestroyNotify) gtk_widget_unref);
553 gtk_object_set_data(GTK_OBJECT(disp->mwin),
554 "view_menu_display4",
555 view_menu_display[4].widget);
556 if (disp->display_intregs) {
557 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
558 (view_menu_display[4].widget),
559 TRUE);
564 gtk_widget_ref(view_menu_display[5].widget);
565 gtk_object_set_data_full(GTK_OBJECT(display_menu),
566 "view_piv",
567 view_menu_display[5].widget,
568 (GtkDestroyNotify) gtk_widget_unref);
569 /* gtk_object_set_data(GTK_OBJECT(disp->mwin), */
570 /* "view_menu_display5", */
571 /* view_menu_display[5].widget); */
572 if (disp->display_piv) {
573 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
574 (view_menu_display[5].widget),
575 TRUE);
580 gtk_widget_ref(view_menu_display[6].widget);
581 gtk_object_set_data_full(GTK_OBJECT(display_menu),
582 "view_vor",
583 view_menu_display[6].widget,
584 (GtkDestroyNotify) gtk_widget_unref);
585 if (gpiv_par.display_vor) {
586 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
587 (view_menu_display[6].widget),
588 TRUE);
589 } else {
590 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
591 (view_menu_display[6].widget),
592 FALSE);
597 gtk_widget_ref(view_menu_display[7].widget);
598 gtk_object_set_data_full(GTK_OBJECT(display_menu),
599 "view_sstrain",
600 view_menu_display[7].widget,
601 (GtkDestroyNotify) gtk_widget_unref);
602 if (gpiv_par.display_sstrain) {
603 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
604 (view_menu_display[7].widget),
605 TRUE);
606 } else {
607 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
608 (view_menu_display[7].widget),
609 FALSE);
614 gtk_widget_ref(view_menu_display[8].widget);
615 gtk_object_set_data_full(GTK_OBJECT(display_menu),
616 "view_nstrain",
617 view_menu_display[8].widget,
618 (GtkDestroyNotify) gtk_widget_unref);
619 if (gpiv_par.display_nstrain) {
620 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
621 (view_menu_display[8].widget),
622 TRUE);
623 } else {
624 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
625 (view_menu_display[8].widget),
626 FALSE);
632 * zoom menu widgets
634 gtk_widget_ref(zoomscale_menu_display[0].widget);
635 gtk_object_set_data_full(GTK_OBJECT(display_menu),
636 "zmv_0",
637 zoomscale_menu_display[0].widget,
638 (GtkDestroyNotify) gtk_widget_unref);
639 if (disp->zoom_index == ZOOM_0) {
640 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
641 (zoomscale_menu_display[0].widget),
642 TRUE);
644 gtk_object_set_data(GTK_OBJECT(zoomscale_menu_display[0].widget),
645 "disp",
646 disp);
647 gtk_object_set_data(GTK_OBJECT(zoomscale_menu_display[0].widget),
648 "zoom_index",
649 "0");
653 gtk_widget_ref(zoomscale_menu_display[1].widget);
654 gtk_object_set_data_full(GTK_OBJECT(display_menu),
655 "zmv_1",
656 zoomscale_menu_display[1].widget,
657 (GtkDestroyNotify) gtk_widget_unref);
658 if (disp->zoom_index == ZOOM_1) {
659 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
660 (zoomscale_menu_display[1].widget),
661 TRUE);
663 gtk_object_set_data(GTK_OBJECT(zoomscale_menu_display[1].widget),
664 "disp",
665 disp);
666 gtk_object_set_data(GTK_OBJECT(zoomscale_menu_display[1].widget),
667 "zoom_index",
668 "1");
672 gtk_widget_ref(zoomscale_menu_display[2].widget);
673 gtk_object_set_data_full(GTK_OBJECT(display_menu),
674 "zmv_2",
675 zoomscale_menu_display[2].widget,
676 (GtkDestroyNotify) gtk_widget_unref);
677 if (disp->zoom_index == ZOOM_2) {
678 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
679 (zoomscale_menu_display[2].widget),
680 TRUE);
682 gtk_object_set_data(GTK_OBJECT(zoomscale_menu_display[2].widget),
683 "disp",
684 disp);
685 gtk_object_set_data(GTK_OBJECT(zoomscale_menu_display[2].widget),
686 "zoom_index",
687 "2");
691 gtk_widget_ref(zoomscale_menu_display[3].widget);
692 gtk_object_set_data_full(GTK_OBJECT(display_menu),
693 "zmv_3",
694 zoomscale_menu_display[3].widget,
695 (GtkDestroyNotify) gtk_widget_unref);
696 if (disp->zoom_index == ZOOM_3) {
697 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
698 (zoomscale_menu_display[3].widget),
699 TRUE);
701 gtk_object_set_data(GTK_OBJECT(zoomscale_menu_display[3].widget),
702 "disp",
703 disp);
704 gtk_object_set_data(GTK_OBJECT(zoomscale_menu_display[3].widget),
705 "zoom_index",
706 "3");
710 gtk_widget_ref(zoomscale_menu_display[4].widget);
711 gtk_object_set_data_full(GTK_OBJECT(display_menu),
712 "zmv_4",
713 zoomscale_menu_display[4].widget,
714 (GtkDestroyNotify) gtk_widget_unref);
715 if (disp->zoom_index == ZOOM_4) {
716 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
717 (zoomscale_menu_display[4].widget),
718 TRUE);
720 gtk_object_set_data(GTK_OBJECT(zoomscale_menu_display[4].widget),
721 "disp",
722 disp);
723 gtk_object_set_data(GTK_OBJECT(zoomscale_menu_display[4].widget),
724 "zoom_index",
725 "4");
729 gtk_widget_ref(zoomscale_menu_display[5].widget);
730 gtk_object_set_data_full(GTK_OBJECT(display_menu),
731 "zmv_5",
732 zoomscale_menu_display[5].widget,
733 (GtkDestroyNotify) gtk_widget_unref);
734 if (disp->zoom_index == ZOOM_5) {
735 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
736 (zoomscale_menu_display[5].widget),
737 TRUE);
739 gtk_object_set_data(GTK_OBJECT(zoomscale_menu_display[5].widget),
740 "disp",
741 disp);
742 gtk_object_set_data(GTK_OBJECT(zoomscale_menu_display[5].widget),
743 "zoom_index",
744 "5");
748 * stretch window menu widget to resize window after zoomscaling
751 gtk_widget_ref(view_menu_display[0].widget);
752 gtk_object_set_data_full(GTK_OBJECT(display_menu),
753 "v_mv_0",
754 view_menu_display[0].widget,
755 (GtkDestroyNotify) gtk_widget_unref);
756 gtk_menu_item_activate(GTK_MENU_ITEM(view_menu_display[0].widget));
760 * vectorscale menu widgets
762 gtk_widget_ref(vectorscale_menu_display[0].widget);
763 gtk_object_set_data_full(GTK_OBJECT(display_menu),
764 "vs_mv_0",
765 vectorscale_menu_display[0].widget,
766 (GtkDestroyNotify) gtk_widget_unref);
767 if (gpiv_par.vector_scale == 1) {
768 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
769 (vectorscale_menu_display[0].widget),
770 TRUE);
775 gtk_widget_ref(vectorscale_menu_display[1].widget);
776 gtk_object_set_data_full(GTK_OBJECT(display_menu),
777 "vs_mv_1",
778 vectorscale_menu_display[1].widget,
779 (GtkDestroyNotify) gtk_widget_unref);
780 if (gpiv_par.vector_scale == 2) {
781 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
782 (vectorscale_menu_display[1].widget),
783 TRUE);
788 gtk_widget_ref(vectorscale_menu_display[2].widget);
789 gtk_object_set_data_full(GTK_OBJECT(display_menu),
790 "vs_mv_2",
791 vectorscale_menu_display[2].widget,
792 (GtkDestroyNotify) gtk_widget_unref);
793 if (gpiv_par.vector_scale == 4) {
794 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
795 (vectorscale_menu_display[2].widget),
796 TRUE);
801 gtk_widget_ref(vectorscale_menu_display[3].widget);
802 gtk_object_set_data_full(GTK_OBJECT(display_menu),
803 "vs_mv_3",
804 vectorscale_menu_display[3].widget,
805 (GtkDestroyNotify) gtk_widget_unref);
806 if (gpiv_par.vector_scale == 8) {
807 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
808 (vectorscale_menu_display[3].widget),
809 TRUE);
814 gtk_widget_ref(vectorscale_menu_display[4].widget);
815 gtk_object_set_data_full(GTK_OBJECT(display_menu),
816 "vs_mv_4",
817 vectorscale_menu_display[0].widget,
818 (GtkDestroyNotify) gtk_widget_unref);
819 if (gpiv_par.vector_scale == 16) {
820 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
821 (vectorscale_menu_display[4].widget),
822 TRUE);
827 gtk_widget_ref(vectorscale_menu_display[5].widget);
828 gtk_object_set_data_full(GTK_OBJECT(display_menu),
829 "vs_mv_0",
830 vectorscale_menu_display[5].widget,
831 (GtkDestroyNotify) gtk_widget_unref);
832 if (gpiv_par.vector_scale == 32) {
833 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
834 (vectorscale_menu_display[5].widget),
835 TRUE);
840 gtk_widget_ref(vectorscale_menu_display[6].widget);
841 gtk_object_set_data_full(GTK_OBJECT(display_menu),
842 "vs_mv_6",
843 vectorscale_menu_display[6].widget,
844 (GtkDestroyNotify) gtk_widget_unref);
845 if (gpiv_par.vector_scale == 64) {
846 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
847 (vectorscale_menu_display[6].widget),
848 TRUE);
853 gtk_widget_ref(vectorscale_menu_display[7].widget);
854 gtk_object_set_data_full(GTK_OBJECT(display_menu),
855 "vs_mv_7",
856 vectorscale_menu_display[7].widget,
857 (GtkDestroyNotify) gtk_widget_unref);
858 if (gpiv_par.vector_scale == 128) {
859 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
860 (vectorscale_menu_display[7].widget),
861 TRUE);
866 gtk_widget_ref(vectorscale_menu_display[8].widget);
867 gtk_object_set_data_full(GTK_OBJECT(display_menu),
868 "vs_mv_8",
869 vectorscale_menu_display[8].widget,
870 (GtkDestroyNotify) gtk_widget_unref);
871 if (gpiv_par.vector_scale == 256) {
872 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
873 (vectorscale_menu_display[8].widget),
874 TRUE);
878 return display_menu;
885 GtkWidget *create_img_display(gchar * fname,
886 ImagePar image_par)
889 img_display_window = NULL;
890 darea = NULL;
893 img_display_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
894 gtk_object_set_data(GTK_OBJECT(img_display_window),
895 "img_display_window",
896 img_display_window);
897 gtk_window_set_title(GTK_WINDOW(img_display_window),
898 fname);
901 * drawing area
904 darea = gtk_drawing_area_new();
905 gtk_drawing_area_size(GTK_DRAWING_AREA(darea),
906 gpiv_par.img_width,
907 gpiv_par.img_height);
908 gtk_container_add(GTK_CONTAINER(img_display_window),
909 darea);
910 gtk_signal_connect(GTK_OBJECT(darea),
911 "expose-event",
912 GTK_SIGNAL_FUNC(on_darea_img_expose),
913 NULL);
915 /* if (gpiv_par.view_gpivbuttons) { */
916 /* gtk_widget_show(handlebox1); */
918 /* } else { */
919 /* gtk_widget_hide(handlebox1); */
920 /* } */
921 /* gtk_widget_show(handlebox1); */
922 /* gtk_widget_show(scrolledwindow_handbox1); */
923 /* gtk_widget_show(viewport_handbox1); */
924 /* gtk_widget_show(toolbar2); */
925 /* gtk_widget_show (hbox_toolbar2); */
926 return img_display_window;