Changeset 70
- Timestamp:
- 10/16/07 21:32:39 (1 year ago)
- Files:
-
- mh-shot-tool/trunk/debian/changelog (modified) (1 diff)
- mh-shot-tool/trunk/shot.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
mh-shot-tool/trunk/debian/changelog
r64 r70 1 mh-shot-tool (0.0.2) mistral; urgency=low 2 3 * Add possibility to grab with delay. 4 5 -- Santtu Lakkala <inz@inz.fi> Tue, 16 Oct 2007 21:32:10 +0300 6 1 7 mh-shot-tool (0.0.1) mistral; urgency=low 2 8 mh-shot-tool/trunk/shot.c
r64 r70 394 394 } 395 395 396 struct GrabbedData { 397 GdkPixbuf *buf; 398 GtkWidget *image; 399 GtkWidget *window; 400 GtkWidget *spinner; 401 }; 402 403 static gboolean do_grab(struct GrabbedData *grab) 404 { 405 GdkPixbuf *thumb; 406 grab->buf = gdk_pixbuf_get_from_drawable(NULL, 407 GDK_DRAWABLE(gdk_get_default_root_window()), 408 gdk_colormap_get_system(), 409 0, 0, 410 0, 0, 411 gdk_screen_width(), 412 gdk_screen_height()); 413 thumb = gdk_pixbuf_scale_simple(grab->buf, 414 gdk_screen_width() / 4, 415 gdk_screen_height() / 4, 416 GDK_INTERP_BILINEAR); 417 418 gtk_image_set_from_pixbuf(GTK_IMAGE(grab->image), 419 thumb); 420 g_object_unref(thumb); 421 422 gtk_widget_show_all(grab->window); 423 424 return FALSE; 425 } 426 427 static void _regrab(GtkWidget *button, struct GrabbedData *grab) 428 { 429 (void)button; 430 431 g_object_unref(grab->buf); 432 g_timeout_add(gtk_spin_button_get_value(GTK_SPIN_BUTTON(grab->spinner)) * 1000, 433 (GSourceFunc)do_grab, 434 grab); 435 gtk_widget_hide(grab->window); 436 } 437 396 438 int main(int argc, char **argv) 397 439 { 398 GtkWidget *window; 399 GtkWidget *image; 440 struct GrabbedData grab; 400 441 GtkWidget *combo; 401 GdkPixbuf *buf;402 GdkPixbuf *buf2;403 442 GtkWidget *vbox; 404 443 GtkWidget *hbox; … … 415 454 FALSE, NULL); 416 455 #ifdef HILDON 417 window = hildon_window_new();456 grab.window = hildon_window_new(); 418 457 #else 419 window = gtk_window_new(GTK_WINDOW_TOPLEVEL);458 grab.window = gtk_window_new(GTK_WINDOW_TOPLEVEL); 420 459 #endif 421 g_signal_connect( window, "delete-event",460 g_signal_connect(grab.window, "delete-event", 422 461 G_CALLBACK(gtk_main_quit), NULL); 423 gtk_window_set_title(GTK_WINDOW( window), "Take screenshot");462 gtk_window_set_title(GTK_WINDOW(grab.window), "Take screenshot"); 424 463 vbox = gtk_vbox_new(FALSE, 0); 464 465 grab.image = gtk_image_new(); 466 gtk_container_add(GTK_CONTAINER(vbox), grab.image); 467 468 hbox = gtk_hbox_new(FALSE, HILDON_MARGIN_DEFAULT); 469 button = gtk_button_new_with_label("Re-grab"); 470 g_signal_connect(button, "clicked", G_CALLBACK(_regrab), &grab); 471 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); 472 gtk_box_pack_start(GTK_BOX(hbox), gtk_label_new("with"), FALSE, FALSE, 0); 473 grab.spinner = gtk_spin_button_new_with_range(0.0, 3600.0, 0.5); 474 gtk_spin_button_set_value(GTK_SPIN_BUTTON(grab.spinner), 5.0); 475 gtk_box_pack_start(GTK_BOX(hbox), grab.spinner, FALSE, FALSE, 0); 476 gtk_box_pack_start(GTK_BOX(hbox), gtk_label_new("second interval"), FALSE, FALSE, 0); 477 gtk_container_add(GTK_CONTAINER(vbox), hbox); 478 425 479 hbox = gtk_hbox_new(FALSE, HILDON_MARGIN_DEFAULT); 426 480 button = gtk_button_new_with_label("Ok"); … … 435 489 gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0); 436 490 437 buf = gdk_pixbuf_get_from_drawable(NULL,438 GDK_DRAWABLE(gdk_get_default_root_window()),439 gdk_colormap_get_system(),440 0, 0,441 0, 0,442 gdk_screen_width(),443 gdk_screen_height());444 buf2 = gdk_pixbuf_scale_simple(buf,445 gdk_screen_width() / 4,446 gdk_screen_height() / 4,447 GDK_INTERP_BILINEAR);448 449 image = gtk_image_new_from_pixbuf(buf2);450 g_object_unref(buf2);451 452 491 combo = gtk_combo_box_new_text(); 453 492 for (i = 0; handlers[i].name; i++) { … … 457 496 gtk_combo_box_set_active(GTK_COMBO_BOX(combo), 0); 458 497 459 gtk_container_add(GTK_CONTAINER(vbox), image);460 498 gtk_container_add(GTK_CONTAINER(vbox), combo); 461 499 gtk_box_pack_end(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); 462 gtk_container_add(GTK_CONTAINER(window), vbox); 463 gtk_widget_show_all(window); 500 gtk_container_add(GTK_CONTAINER(grab.window), vbox); 501 502 (void)do_grab(&grab); 464 503 465 504 gtk_main(); … … 468 507 { 469 508 case SHOT_RESPONSE_OK: 470 handlers[gtk_combo_box_get_active(GTK_COMBO_BOX(combo))].save( buf, GTK_WINDOW(window), osso);509 handlers[gtk_combo_box_get_active(GTK_COMBO_BOX(combo))].save(grab.buf, GTK_WINDOW(grab.window), osso); 471 510 break; 472 511 case SHOT_RESPONSE_CANCEL: … … 474 513 break; 475 514 } 476 g_object_unref( buf);515 g_object_unref(grab.buf); 477 516 osso_deinitialize(osso); 478 517
