# HG changeset patch # User meillo@marmaro.de # Date 1197045608 -3600 # Node ID 2f11ab3e60471107e8fe70d0aa0c7a33385e3657 # Parent 6aaba3a61563a4f22be41858c03af625a69710b7 added option handling; added output for convert; commented all ratio code cause it is not really important now diff -r 6aaba3a61563 -r 2f11ab3e6047 Makefile --- a/Makefile Wed Dec 05 00:08:39 2007 +0100 +++ b/Makefile Fri Dec 07 17:40:08 2007 +0100 @@ -19,8 +19,8 @@ clean: - rm *.o - rm ${PACKAGE} + rm -f *.o + rm -f ${PACKAGE} # end of file diff -r 6aaba3a61563 -r 2f11ab3e6047 callbacks.c --- 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; + ratio = 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; + ratio = 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; + 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 = (double) 3/2; + 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 = (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")); + 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,15 +157,25 @@ gtk_spin_button_update(lookup_widget(cropper_window, "ratio_w_spinbutton")); } +*/ +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(); +} -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_cropper_window_destroy (GtkObject* object, gpointer user_data) { gtk_main_quit(); diff -r 6aaba3a61563 -r 2f11ab3e6047 callbacks.h --- a/callbacks.h Wed Dec 05 00:08:39 2007 +0100 +++ b/callbacks.h Fri Dec 07 17:40:08 2007 +0100 @@ -1,19 +1,32 @@ +#ifndef _CALLBACKS_H_ +#define _CALLBACKS_H_ + #include double ratio; +/* void on_ratio_none_activate(GtkMenuItem* menuitem, gpointer user_data); void on_ratio_square_activate(GtkMenuItem* menuitem, gpointer user_data); void on_ratio_4x3_activate(GtkMenuItem* menuitem, gpointer user_data); void on_ratio_3x2_activate(GtkMenuItem* menuitem, gpointer user_data); void on_ratio_custom_activate(GtkMenuItem* menuitem, gpointer user_data); +static void ratio_optionmenu_changed_cb (GtkOptionMenu* optionmenu, gpointer unser_data); +static void ratio_value_changed_cb (GtkSpinButton* spin, gpointer unser_data); +static void ratio_swap_button_cb (GtkButton* button, gpointer unser_data); + void on_ratio_w_spinbutton_value_changed(GtkSpinButton* spinbutton, gpointer user_data); void on_ratio_w_spinbutton_change_value(GtkSpinButton* spinbutton, GtkScrollType scroll, gpointer user_data); void on_ratio_h_spinbutton_change_value(GtkSpinButton* spinbutton, GtkScrollType scroll, gpointer user_data); void on_ratio_h_spinbutton_value_changed(GtkSpinButton* spinbutton, gpointer user_data); void on_ratio_swap_button_clicked(GtkButton* button, gpointer user_data); +*/ + +void on_crop_clicked(GtkButton* button, gpointer user_data); void on_cropper_window_destroy(GtkObject* object, gpointer user_data); -gboolean on_cropper_window_delete_event(GtkWidget* widget, GdkEvent *event, gpointer user_data); +/*gboolean on_cropper_window_delete_event(GtkWidget* widget, GdkEvent *event, gpointer user_data);*/ + +#endif diff -r 6aaba3a61563 -r 2f11ab3e6047 interface.c --- a/interface.c Wed Dec 05 00:08:39 2007 +0100 +++ b/interface.c Fri Dec 07 17:40:08 2007 +0100 @@ -81,6 +81,13 @@ GtkWidget *image3; GtkWidget *crop_zoom_fit_button; GtkWidget *image1; + GtkWidget *dialog_action_area1; + GtkWidget *crop_okbutton; + GtkWidget *alignment1; + GtkWidget *hbox11; + GtkWidget *crop_image; + GtkWidget *label12; + cropper_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_widget_set_name (cropper_window, "cropper_window"); @@ -400,48 +407,148 @@ +/* + okay_box = gtk_hbox_new (FALSE, 0); + gtk_widget_set_name (okay_box, "okay_box"); + gtk_widget_show (okay_box); + gtk_box_pack_end (GTK_BOX (hbox16), okay_box, FALSE, TRUE, 0); +*/ + crop_okbutton = gtk_button_new (); + gtk_widget_set_name (crop_okbutton, "crop_okbutton"); + gtk_widget_show (crop_okbutton); + gtk_box_pack_end (GTK_BOX (dialog_vbox1), crop_okbutton, FALSE, FALSE, 0); + GTK_WIDGET_SET_FLAGS (crop_okbutton, GTK_CAN_DEFAULT); + alignment1 = gtk_alignment_new (0.5, 0.5, 0, 0); + gtk_widget_set_name (alignment1, "alignment1"); + gtk_widget_show (alignment1); + gtk_container_add (GTK_CONTAINER (crop_okbutton), alignment1); - g_signal_connect ((gpointer) cropper_window, "delete_event", - G_CALLBACK (on_cropper_window_delete_event), - NULL); - g_signal_connect ((gpointer) cropper_window, "destroy", + hbox11 = gtk_hbox_new (FALSE, 2); + gtk_widget_set_name (hbox11, "hbox11"); + gtk_widget_show (hbox11); + gtk_container_add (GTK_CONTAINER (alignment1), hbox11); + + crop_image = gtk_image_new_from_stock ("gtk-ok", GTK_ICON_SIZE_BUTTON); + gtk_widget_set_name (crop_image, "crop_image"); + gtk_widget_show (crop_image); + gtk_box_pack_start (GTK_BOX (hbox11), crop_image, FALSE, FALSE, 0); + + label12 = gtk_label_new_with_mnemonic ("_Crop"); + gtk_widget_set_name (label12, "label12"); + gtk_widget_show (label12); + gtk_box_pack_start (GTK_BOX (hbox11), label12, FALSE, FALSE, 0); + + + + + +/* destroy */ + g_signal_connect (G_OBJECT (cropper_window), "destroy", G_CALLBACK (on_cropper_window_destroy), NULL); - g_signal_connect ((gpointer) ratio_w_spinbutton, "value_changed", + +/* crop */ + g_signal_connect (G_OBJECT (crop_okbutton), "clicked", + G_CALLBACK (on_crop_clicked), + NULL); + + + +/* aspect ratio */ +/* + g_signal_connect (G_OBJECT (ratio_w_spinbutton), "value_changed", G_CALLBACK (on_ratio_w_spinbutton_value_changed), NULL); - g_signal_connect ((gpointer) ratio_w_spinbutton, "change_value", - G_CALLBACK (on_ratio_w_spinbutton_change_value), - NULL); - g_signal_connect ((gpointer) ratio_swap_button, "clicked", + g_signal_connect (G_OBJECT (ratio_swap_button), "clicked", G_CALLBACK (on_ratio_swap_button_clicked), NULL); - g_signal_connect ((gpointer) ratio_h_spinbutton, "change_value", - G_CALLBACK (on_ratio_h_spinbutton_change_value), - NULL); - g_signal_connect ((gpointer) ratio_h_spinbutton, "value_changed", + g_signal_connect (G_OBJECT (ratio_h_spinbutton), "value_changed", G_CALLBACK (on_ratio_h_spinbutton_value_changed), NULL); - g_signal_connect ((gpointer) ratio_none, "activate", + g_signal_connect (G_OBJECT (ratio_none), "activate", G_CALLBACK (on_ratio_none_activate), NULL); - g_signal_connect ((gpointer) ratio_square, "activate", + g_signal_connect (G_OBJECT (ratio_square), "activate", G_CALLBACK (on_ratio_square_activate), NULL); - g_signal_connect ((gpointer) ratio_4x3, "activate", + g_signal_connect (G_OBJECT (ratio_4x3), "activate", G_CALLBACK (on_ratio_4x3_activate), NULL); - g_signal_connect ((gpointer) ratio_3x2, "activate", + g_signal_connect (G_OBJECT (ratio_3x2), "activate", G_CALLBACK (on_ratio_3x2_activate), NULL); - g_signal_connect ((gpointer) ratio_custom, "activate", + g_signal_connect (G_OBJECT (ratio_custom), "activate", G_CALLBACK (on_ratio_custom_activate), NULL); +g_signal_connect (G_OBJECT (lookup_widget(cropper_window, "ratio_optionmenu")), "changed", + G_CALLBACK (ratio_optionmenu_changed_cb), + NULL); +g_signal_connect (G_OBJECT (lookup_widget(cropper_window, "ratio_w_spinbutton")), "value_changed", + G_CALLBACK (ratio_value_changed_cb), + NULL); +g_signal_connect (G_OBJECT (lookup_widget(cropper_window, "ratio_h_spinbutton")), "value_changed", + G_CALLBACK (ratio_value_changed_cb), + NULL); +g_signal_connect (G_OBJECT (lookup_widget(cropper_window, "ratio_swap_button")), "clicked", + G_CALLBACK (ratio_swap_button_cb), + NULL); +*/ + + +/* selection */ +/* +g_signal_connect (G_OBJECT (lookup_widget(cropper_window, "crop_x_spinbutton")), "value_changed", + G_CALLBACK (selection_x_value_changed_cb), + data); +g_signal_connect (G_OBJECT (lookup_widget(cropper_window, "crop_y_spinbutton")), "value_changed", + G_CALLBACK (selection_y_value_changed_cb), + data); +g_signal_connect (G_OBJECT (lookup_widget(cropper_window, "crop_width_spinbutton")), "value_changed", + G_CALLBACK (selection_width_value_changed_cb), + data); +g_signal_connect (G_OBJECT (lookup_widget(cropper_window, "crop_height_spinbutton")), "value_changed", + G_CALLBACK (selection_height_value_changed_cb), + data); +g_signal_connect (G_OBJECT (lookup_widget(cropper_window, "crop_image")), "selection_changed", + G_CALLBACK (selection_changed_cb), + data); +*/ + + +/* zoom */ +/* +g_signal_connect (G_OBJECT (zoom_in_button), "clicked", + G_CALLBACK (zoom_in_button_clicked_cb), + data); +g_signal_connect (G_OBJECT (zoom_out_button), "clicked", + G_CALLBACK (zoom_out_button_clicked_cb), + data); +g_signal_connect (G_OBJECT (zoom_100_button), "clicked", + G_CALLBACK (zoom_100_button_clicked_cb), + data); +g_signal_connect (G_OBJECT (zoom_fit_button), "clicked", + G_CALLBACK (zoom_fit_button_clicked_cb), + data); +*/ + + + + + + + + + + + + + + /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (cropper_window, cropper_window, "cropper_window"); @@ -498,6 +605,13 @@ GLADE_HOOKUP_OBJECT (cropper_window, image3, "image3"); GLADE_HOOKUP_OBJECT (cropper_window, crop_zoom_fit_button, "crop_zoom_fit_button"); GLADE_HOOKUP_OBJECT (cropper_window, image1, "image1"); + /*GLADE_HOOKUP_OBJECT_NO_REF (cropper_window, dialog_action_area1, "dialog_action_area1"); */ + GLADE_HOOKUP_OBJECT (cropper_window, crop_okbutton, "crop_okbutton"); + GLADE_HOOKUP_OBJECT (cropper_window, alignment1, "alignment1"); + GLADE_HOOKUP_OBJECT (cropper_window, hbox11, "hbox11"); + GLADE_HOOKUP_OBJECT (cropper_window, crop_image, "crop_image"); + GLADE_HOOKUP_OBJECT (cropper_window, label12, "label12"); + return cropper_window; } diff -r 6aaba3a61563 -r 2f11ab3e6047 main.c --- a/main.c Wed Dec 05 00:08:39 2007 +0100 +++ b/main.c Fri Dec 07 17:40:08 2007 +0100 @@ -7,6 +7,23 @@ int main (int argc, char *argv[]) { + /* printf("argc: %i\nargv[0]: %s\nargv[1]: %s\nargv[2]: %s\n", argc, argv[0], argv[1], argv[2]); */ + + /* commandline option handling */ + if (argc == 2) { + if (strcmp(argv[1], "--version") == 0) { + g_print("cropper - a crop frontend for convert\nversion 0.1\nhttp://prog.marmaro.de\n"); + return(0); + } else { + image_filename = argv[1]; + } + } else { + g_print("usage: %s \n", argv[0]); + return(1); + } + + + gtk_set_locale (); gtk_init (&argc, &argv); diff -r 6aaba3a61563 -r 2f11ab3e6047 main.h --- a/main.h Wed Dec 05 00:08:39 2007 +0100 +++ b/main.h Fri Dec 07 17:40:08 2007 +0100 @@ -4,5 +4,6 @@ #include GtkWidget* cropper_window; +char* image_filename; #endif