303
303
add_preview_motion_event(Preview_t *preview, GCallback func)
305
g_signal_connect(preview->preview, "motion_notify_event",
305
g_return_if_fail (func != NULL);
307
g_signal_connect(preview->preview, "motion-notify-event",
310
312
add_enter_notify_event(Preview_t *preview, GCallback func)
312
g_signal_connect(preview->preview, "enter_notify_event",
314
g_return_if_fail (func != NULL);
316
g_signal_connect(preview->preview, "enter-notify-event",
317
321
add_leave_notify_event(Preview_t *preview, GCallback func)
319
g_signal_connect(preview->preview, "leave_notify_event",
323
g_return_if_fail (func != NULL);
325
g_signal_connect(preview->preview, "leave-notify-event",
324
330
add_preview_button_press_event(Preview_t *preview, GCallback func)
326
g_signal_connect(preview->preview, "button_press_event",
332
g_return_if_fail (func != NULL);
334
g_signal_connect(preview->preview, "button-press-event",
435
452
gtk_widget_set_size_request (preview, data->widget_width,
436
453
data->widget_height);
438
data->window = window = gtk_scrolled_window_new(NULL, NULL);
439
width = (data->width > 600) ? 600 : data->width;
440
height = (data->height > 400) ? 400 : data->height;
441
gtk_widget_set_size_request(window, width, height);
442
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(window),
443
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
444
gtk_widget_show(window);
446
data->frame = frame = gtk_frame_new(NULL);
447
gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(window), frame);
448
gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN);
450
455
/* The main table */
451
table = gtk_table_new(3, 3, FALSE);
452
gtk_table_attach(GTK_TABLE(table), preview, 1, 2, 1, 2, GTK_FILL, GTK_FILL,
454
gtk_container_add(GTK_CONTAINER(frame), table);
456
data->window = table = gtk_table_new(3, 3, FALSE);
457
gtk_table_set_col_spacings (GTK_TABLE (table), 1);
458
gtk_table_set_row_spacings (GTK_TABLE (table), 1);
456
460
/* Create button with arrow */
457
461
button = gtk_button_new();
471
475
/* Create horizontal ruler */
472
476
data->hruler = ruler = gtk_hruler_new();
473
gtk_ruler_set_range(GTK_RULER(ruler), 0, data->width, 0, PREVIEW_SIZE);
474
g_signal_connect_swapped(preview, "motion_notify_event",
477
g_signal_connect_swapped(preview, "motion-notify-event",
475
478
G_CALLBACK(GTK_WIDGET_GET_CLASS(ruler)->motion_notify_event),
478
gtk_table_attach(GTK_TABLE(table), ruler, 1, 2, 0, 1, GTK_FILL, GTK_FILL,
481
gtk_table_attach(GTK_TABLE(table), ruler, 1, 2, 0, 1,
482
GTK_EXPAND | GTK_SHRINK | GTK_FILL, GTK_FILL, 0, 0);
480
483
gtk_widget_show(ruler);
482
485
/* Create vertical ruler */
483
486
data->vruler = ruler = gtk_vruler_new();
484
gtk_ruler_set_range(GTK_RULER(ruler), 0, data->height, 0, PREVIEW_SIZE);
485
g_signal_connect_swapped(preview, "motion_notify_event",
487
g_signal_connect_swapped(preview, "motion-notify-event",
486
488
G_CALLBACK(GTK_WIDGET_GET_CLASS(ruler)->motion_notify_event),
488
gtk_table_attach(GTK_TABLE(table), ruler, 0, 1, 1, 2, GTK_FILL, GTK_FILL,
490
gtk_table_attach(GTK_TABLE(table), ruler, 0, 1, 1, 2,
491
GTK_FILL, GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
492
gtk_widget_show(ruler);
494
window = gtk_scrolled_window_new (NULL, NULL);
495
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(window),
496
GTK_POLICY_NEVER, GTK_POLICY_NEVER);
497
width = (data->width > 600) ? 600 : data->width;
498
height = (data->height > 400) ? 400 : data->height;
499
gtk_widget_set_size_request(window, width, height);
500
gtk_table_attach(GTK_TABLE(table), window, 1, 2, 1, 2, GTK_FILL, GTK_FILL,
490
gtk_widget_show(ruler);
502
gtk_widget_show(window);
504
hadj = gtk_scrolled_window_get_hadjustment (GTK_SCROLLED_WINDOW (window));
506
g_signal_connect (hadj, "changed",
507
G_CALLBACK (scroll_adj_changed),
509
g_signal_connect (hadj, "value-changed",
510
G_CALLBACK (scroll_adj_changed),
513
vadj = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (window));
515
g_signal_connect (vadj, "changed",
516
G_CALLBACK (scroll_adj_changed),
518
g_signal_connect (vadj, "value-changed",
519
G_CALLBACK (scroll_adj_changed),
522
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW(window), preview);
524
scrollbar = gtk_hscrollbar_new (hadj);
525
gtk_table_attach(GTK_TABLE(table), scrollbar, 1, 2, 2, 3,
526
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 0, 0);
527
gtk_widget_show (scrollbar);
529
scrollbar = gtk_vscrollbar_new (vadj);
530
gtk_table_attach(GTK_TABLE(table), scrollbar, 2, 3, 1, 2,
531
GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 0, 0);
532
gtk_widget_show (scrollbar);
534
gtk_widget_show (preview);
492
536
gimp_pixel_rgn_init(&data->src_rgn, drawable, 0, 0, data->width,
493
537
data->height, FALSE, FALSE);
494
538
render_preview(data, &data->src_rgn);
496
gtk_widget_show(preview);
498
gtk_widget_show(frame);
499
540
gtk_widget_show(table);