Mercurial > cropper
diff callbacks.c @ 4:2f11ab3e6047
added option handling; added output for convert; commented all ratio code cause it is not really important now
author | meillo@marmaro.de |
---|---|
date | Fri, 07 Dec 2007 17:40:08 +0100 |
parents | 6aaba3a61563 |
children | ec2d11d96fb0 |
line wrap: on
line diff
--- a/callbacks.c Wed Dec 05 00:08:39 2007 +0100 +++ b/callbacks.c Fri Dec 07 17:40:08 2007 +0100 @@ -5,49 +5,131 @@ #include "interface.h" #include "support.h" - +/* void update_spin_button_ratio(GtkWidget* spinbutton) { g_print("ratio change: %f\n", ratio); - /*gtk_spin_button_set_value((spinbutton), gtk_spin_button_get_value(spinbutton));*/ - /*gtk_spin_button_update(spinbutton);*/ on_ratio_w_spinbutton_value_changed(spinbutton, NULL); } -void on_ratio_none_activate (GtkMenuItem* menuitem, gpointer user_data) { - ratio = (double) 1; - update_spin_button_ratio(lookup_widget(cropper_window, "ratio_w_spinbutton")); -} - - -void on_ratio_square_activate (GtkMenuItem* menuitem, gpointer user_data) { - ratio = (double) 1; - update_spin_button_ratio(lookup_widget(cropper_window, "ratio_w_spinbutton")); -} - - -void on_ratio_4x3_activate (GtkMenuItem* menuitem, gpointer user_data) { - ratio = (double) 4/3; - update_spin_button_ratio(lookup_widget(cropper_window, "ratio_w_spinbutton")); -} - - -void on_ratio_3x2_activate (GtkMenuItem* menuitem, gpointer user_data) { - ratio = (double) 3/2; - update_spin_button_ratio(lookup_widget(cropper_window, "ratio_w_spinbutton")); -} - - -void on_ratio_custom_activate (GtkMenuItem* menuitem, gpointer user_data) { - ratio = (double) gtk_spin_button_get_value_as_int(lookup_widget(cropper_window, "ratio_w_spinbutton")) / gtk_spin_button_get_value_as_int(lookup_widget(cropper_window, "ratio_h_spinbutton")); - update_spin_button_ratio(lookup_widget(cropper_window, "ratio_w_spinbutton")); -} - +void on_ratio_none_activate (GtkMenuItem* menuitem, gpointer user_data) { + ratio = 1; + update_spin_button_ratio(lookup_widget(cropper_window, "ratio_w_spinbutton")); +} + + +void on_ratio_square_activate (GtkMenuItem* menuitem, gpointer user_data) { + ratio = 1; + update_spin_button_ratio(lookup_widget(cropper_window, "ratio_w_spinbutton")); +} + + +void on_ratio_4x3_activate (GtkMenuItem* menuitem, gpointer user_data) { + ratio = 4.0/3.0; + update_spin_button_ratio(lookup_widget(cropper_window, "ratio_w_spinbutton")); +} + + +void on_ratio_3x2_activate (GtkMenuItem* menuitem, gpointer user_data) { + ratio = 1.5; + update_spin_button_ratio(lookup_widget(cropper_window, "ratio_w_spinbutton")); +} + + +void on_ratio_custom_activate (GtkMenuItem* menuitem, gpointer user_data) { + ratio = gtk_spin_button_get_value(lookup_widget(cropper_window, "ratio_w_spinbutton")) / gtk_spin_button_get_value(lookup_widget(cropper_window, "ratio_h_spinbutton")); + update_spin_button_ratio(lookup_widget(cropper_window, "ratio_w_spinbutton")); +} +*/ + + + + + + + + + +/* +static void ratio_optionmenu_changed_cb (GtkOptionMenu* optionmenu, gpointer unser_data) { + int idx = gtk_option_menu_get_history (optionmenu); + int w = 1, h = 1; + gboolean use_ratio = TRUE; + + switch (idx) { + case GTH_CROP_RATIO_NONE: + use_ratio = FALSE; + break; + case GTH_CROP_RATIO_SQUARE: + w = h = 1; + break; + case GTH_CROP_RATIO_IMAGE: + w = lookup_widget(cropper_window, "image_width"); + h = lookup_widget(cropper_window, "image_height"); + break; + case GTH_CROP_RATIO_DISPLAY: + w = lookup_widget(cropper_window, "display_width"); + h = lookup_widget(cropper_window, "display_height"); + break; + case GTH_CROP_RATIO_4_3: + w = 4; + h = 3; + break; + case GTH_CROP_RATIO_4_6: + w = 4; + h = 6; + break; + case GTH_CROP_RATIO_CUSTOM: + default: + w = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (lookup_widget(cropper_window, "ratio_w_spinbutton"))); + h = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (lookup_widget(cropper_window, "ratio_h_spinbutton"))); + break; + } + + gtk_widget_set_sensitive (lookup_widget(cropper_window, "custom_ratio_box"), idx == GTH_CROP_RATIO_CUSTOM); + set_spin_value (cropper_window, lookup_widget(cropper_window, "ratio_w_spinbutton"), w); + set_spin_value (cropper_window, lookup_widget(cropper_window, "ratio_h_spinbutton"), h); + + gth_image_selector_set_ratio (GTH_IMAGE_SELECTOR (lookup_widget(cropper_window, "crop_image")), use_ratio, (double) w / h); +} + + +static void ratio_value_changed_cb (GtkSpinButton* spin, gpointer unser_data) { + int w, h; + + w = gtk_spin_button_get_value_as_int (lookup_widget(cropper_window, "ratio_w_spinbutton")); + h = gtk_spin_button_get_value_as_int (lookup_widget(cropper_window, "ratio_h_spinbutton")); + + gth_image_selector_set_ratio (GTH_IMAGE_SELECTOR (lookup_widget(cropper_window, "crop_image")), TRUE, (double) w / h); +} + + +static void ratio_swap_button_cb (GtkButton* button, gpointer unser_data) { + int w, h; + + w = gtk_spin_button_get_value_as_int(lookup_widget(cropper_window, "ratio_w_spinbutton")); + h = gtk_spin_button_get_value_as_int(lookup_widget(cropper_window, "ratio_h_spinbutton")); + + set_spin_value(cropper_window, lookup_widget(cropper_window, "ratio_w_spinbutton"), h); + set_spin_value(cropper_window, lookup_widget(cropper_window, "ratio_h_spinbutton"), w); + + gth_image_selector_set_ratio(GTH_IMAGE_SELECTOR (lookup_widget(cropper_window, "crop_image")), TRUE, (double) h / w); +} + +*/ + + + + + + + + +/* void on_ratio_w_spinbutton_value_changed (GtkSpinButton* spinbutton, gpointer user_data) { - /*gtk_spin_button_set_value(lookup_widget(cropper_window, "ratio_h_spinbutton"), gtk_spin_button_get_value(spinbutton) / ratio);*/ g_print("spinbutton W - ratio: %f\n", ratio); gtk_spin_button_set_value(lookup_widget(cropper_window, "ratio_h_spinbutton"), gtk_spin_button_get_value(spinbutton) / ratio); } @@ -62,7 +144,6 @@ void on_ratio_h_spinbutton_value_changed (GtkSpinButton* spinbutton, gpointer user_data) { - /*gtk_spin_button_set_value(lookup_widget(cropper_window, "ratio_w_spinbutton"), gtk_spin_button_get_value(spinbutton) * ratio);*/ g_print("spinbutton H - ratio: %f\n", ratio); gtk_spin_button_set_value(lookup_widget(cropper_window, "ratio_w_spinbutton"), gtk_spin_button_get_value(spinbutton) * ratio); @@ -76,16 +157,26 @@ gtk_spin_button_update(lookup_widget(cropper_window, "ratio_w_spinbutton")); } - - +*/ -gboolean on_cropper_window_delete_event (GtkWidget* widget, GdkEvent *event, gpointer user_data) { - /* g_print("thanks for using the program - visit http://prog.marmaro.de\n"); */ - return FALSE; +void on_crop_clicked(GtkButton* button, gpointer user_data) { + char crop_call[256]; + + sprintf(crop_call, "echo \"convert -crop %ix%i+%i+%i %s cropped_%s\"", + gtk_spin_button_get_value_as_int(lookup_widget(cropper_window, "crop_width_spinbutton")), + gtk_spin_button_get_value_as_int(lookup_widget(cropper_window, "crop_height_spinbutton")), + gtk_spin_button_get_value_as_int(lookup_widget(cropper_window, "crop_x_spinbutton")), + gtk_spin_button_get_value_as_int(lookup_widget(cropper_window, "crop_y_spinbutton")), + image_filename, + image_filename + ); + system(crop_call); + gtk_main_quit(); } + void on_cropper_window_destroy (GtkObject* object, gpointer user_data) { gtk_main_quit(); }