meillo@0: #include meillo@0: meillo@2: #include "main.h" meillo@0: #include "callbacks.h" meillo@0: #include "interface.h" meillo@0: #include "support.h" meillo@0: meillo@4: /* meillo@3: void update_spin_button_ratio(GtkWidget* spinbutton) { meillo@3: g_print("ratio change: %f\n", ratio); meillo@3: on_ratio_w_spinbutton_value_changed(spinbutton, NULL); meillo@3: } meillo@2: meillo@4: meillo@4: meillo@4: meillo@4: meillo@2: void on_ratio_none_activate (GtkMenuItem* menuitem, gpointer user_data) { meillo@4: ratio = 1; meillo@3: update_spin_button_ratio(lookup_widget(cropper_window, "ratio_w_spinbutton")); meillo@2: } meillo@2: meillo@2: meillo@2: void on_ratio_square_activate (GtkMenuItem* menuitem, gpointer user_data) { meillo@4: ratio = 1; meillo@3: update_spin_button_ratio(lookup_widget(cropper_window, "ratio_w_spinbutton")); meillo@2: } meillo@2: meillo@2: meillo@2: void on_ratio_4x3_activate (GtkMenuItem* menuitem, gpointer user_data) { meillo@4: ratio = 4.0/3.0; meillo@3: update_spin_button_ratio(lookup_widget(cropper_window, "ratio_w_spinbutton")); meillo@2: } meillo@2: meillo@2: meillo@2: void on_ratio_3x2_activate (GtkMenuItem* menuitem, gpointer user_data) { meillo@4: ratio = 1.5; meillo@3: update_spin_button_ratio(lookup_widget(cropper_window, "ratio_w_spinbutton")); meillo@2: } meillo@2: meillo@2: meillo@2: void on_ratio_custom_activate (GtkMenuItem* menuitem, gpointer user_data) { meillo@4: 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")); meillo@3: update_spin_button_ratio(lookup_widget(cropper_window, "ratio_w_spinbutton")); meillo@3: } meillo@4: */ meillo@3: meillo@3: meillo@3: meillo@3: meillo@3: meillo@4: meillo@4: meillo@4: meillo@4: meillo@4: /* meillo@4: static void ratio_optionmenu_changed_cb (GtkOptionMenu* optionmenu, gpointer unser_data) { meillo@4: int idx = gtk_option_menu_get_history (optionmenu); meillo@4: int w = 1, h = 1; meillo@4: gboolean use_ratio = TRUE; meillo@4: meillo@4: switch (idx) { meillo@4: case GTH_CROP_RATIO_NONE: meillo@4: use_ratio = FALSE; meillo@4: break; meillo@4: case GTH_CROP_RATIO_SQUARE: meillo@4: w = h = 1; meillo@4: break; meillo@4: case GTH_CROP_RATIO_IMAGE: meillo@4: w = lookup_widget(cropper_window, "image_width"); meillo@4: h = lookup_widget(cropper_window, "image_height"); meillo@4: break; meillo@4: case GTH_CROP_RATIO_DISPLAY: meillo@4: w = lookup_widget(cropper_window, "display_width"); meillo@4: h = lookup_widget(cropper_window, "display_height"); meillo@4: break; meillo@4: case GTH_CROP_RATIO_4_3: meillo@4: w = 4; meillo@4: h = 3; meillo@4: break; meillo@4: case GTH_CROP_RATIO_4_6: meillo@4: w = 4; meillo@4: h = 6; meillo@4: break; meillo@4: case GTH_CROP_RATIO_CUSTOM: meillo@4: default: meillo@4: w = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (lookup_widget(cropper_window, "ratio_w_spinbutton"))); meillo@4: h = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (lookup_widget(cropper_window, "ratio_h_spinbutton"))); meillo@4: break; meillo@4: } meillo@4: meillo@4: gtk_widget_set_sensitive (lookup_widget(cropper_window, "custom_ratio_box"), idx == GTH_CROP_RATIO_CUSTOM); meillo@4: set_spin_value (cropper_window, lookup_widget(cropper_window, "ratio_w_spinbutton"), w); meillo@4: set_spin_value (cropper_window, lookup_widget(cropper_window, "ratio_h_spinbutton"), h); meillo@4: meillo@4: gth_image_selector_set_ratio (GTH_IMAGE_SELECTOR (lookup_widget(cropper_window, "crop_image")), use_ratio, (double) w / h); meillo@4: } meillo@4: meillo@4: meillo@4: static void ratio_value_changed_cb (GtkSpinButton* spin, gpointer unser_data) { meillo@4: int w, h; meillo@4: meillo@4: w = gtk_spin_button_get_value_as_int (lookup_widget(cropper_window, "ratio_w_spinbutton")); meillo@4: h = gtk_spin_button_get_value_as_int (lookup_widget(cropper_window, "ratio_h_spinbutton")); meillo@4: meillo@4: gth_image_selector_set_ratio (GTH_IMAGE_SELECTOR (lookup_widget(cropper_window, "crop_image")), TRUE, (double) w / h); meillo@4: } meillo@4: meillo@4: meillo@4: static void ratio_swap_button_cb (GtkButton* button, gpointer unser_data) { meillo@4: int w, h; meillo@4: meillo@4: w = gtk_spin_button_get_value_as_int(lookup_widget(cropper_window, "ratio_w_spinbutton")); meillo@4: h = gtk_spin_button_get_value_as_int(lookup_widget(cropper_window, "ratio_h_spinbutton")); meillo@4: meillo@4: set_spin_value(cropper_window, lookup_widget(cropper_window, "ratio_w_spinbutton"), h); meillo@4: set_spin_value(cropper_window, lookup_widget(cropper_window, "ratio_h_spinbutton"), w); meillo@4: meillo@4: gth_image_selector_set_ratio(GTH_IMAGE_SELECTOR (lookup_widget(cropper_window, "crop_image")), TRUE, (double) h / w); meillo@4: } meillo@4: meillo@4: */ meillo@4: meillo@4: meillo@4: meillo@4: meillo@4: meillo@4: meillo@4: meillo@4: meillo@4: /* meillo@3: void on_ratio_w_spinbutton_value_changed (GtkSpinButton* spinbutton, gpointer user_data) { meillo@3: g_print("spinbutton W - ratio: %f\n", ratio); meillo@3: gtk_spin_button_set_value(lookup_widget(cropper_window, "ratio_h_spinbutton"), gtk_spin_button_get_value(spinbutton) / ratio); meillo@3: } meillo@3: meillo@3: meillo@3: void on_ratio_w_spinbutton_change_value (GtkSpinButton* spinbutton, GtkScrollType scroll, gpointer user_data) { meillo@3: } meillo@3: meillo@3: meillo@3: void on_ratio_h_spinbutton_change_value (GtkSpinButton* spinbutton, GtkScrollType scroll, gpointer user_data) { meillo@3: } meillo@3: meillo@3: meillo@3: void on_ratio_h_spinbutton_value_changed (GtkSpinButton* spinbutton, gpointer user_data) { meillo@3: g_print("spinbutton H - ratio: %f\n", ratio); meillo@3: gtk_spin_button_set_value(lookup_widget(cropper_window, "ratio_w_spinbutton"), gtk_spin_button_get_value(spinbutton) * ratio); meillo@0: meillo@0: } meillo@0: meillo@0: meillo@3: void on_ratio_swap_button_clicked (GtkButton* button, gpointer user_data) { meillo@3: meillo@3: ratio = 1.0 / ratio; meillo@3: gtk_spin_button_set_value(lookup_widget(cropper_window, "ratio_w_spinbutton"), gtk_spin_button_get_value(lookup_widget(cropper_window, "ratio_h_spinbutton"))); meillo@3: gtk_spin_button_update(lookup_widget(cropper_window, "ratio_w_spinbutton")); meillo@0: meillo@2: } meillo@4: */ meillo@2: meillo@2: meillo@2: meillo@4: void on_crop_clicked(GtkButton* button, gpointer user_data) { meillo@4: char crop_call[256]; meillo@2: meillo@4: sprintf(crop_call, "echo \"convert -crop %ix%i+%i+%i %s cropped_%s\"", meillo@4: gtk_spin_button_get_value_as_int(lookup_widget(cropper_window, "crop_width_spinbutton")), meillo@4: gtk_spin_button_get_value_as_int(lookup_widget(cropper_window, "crop_height_spinbutton")), meillo@4: gtk_spin_button_get_value_as_int(lookup_widget(cropper_window, "crop_x_spinbutton")), meillo@4: gtk_spin_button_get_value_as_int(lookup_widget(cropper_window, "crop_y_spinbutton")), meillo@4: image_filename, meillo@4: image_filename meillo@4: ); meillo@4: system(crop_call); meillo@4: gtk_main_quit(); meillo@4: } meillo@2: meillo@0: meillo@1: void on_cropper_window_destroy (GtkObject* object, gpointer user_data) { meillo@0: gtk_main_quit(); meillo@0: } meillo@0: