cropper

annotate 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
rev   line source
meillo@0 1 #include <gtk/gtk.h>
meillo@0 2
meillo@2 3 #include "main.h"
meillo@0 4 #include "callbacks.h"
meillo@0 5 #include "interface.h"
meillo@0 6 #include "support.h"
meillo@0 7
meillo@4 8 /*
meillo@3 9 void update_spin_button_ratio(GtkWidget* spinbutton) {
meillo@3 10 g_print("ratio change: %f\n", ratio);
meillo@3 11 on_ratio_w_spinbutton_value_changed(spinbutton, NULL);
meillo@3 12 }
meillo@2 13
meillo@4 14
meillo@4 15
meillo@4 16
meillo@4 17
meillo@2 18 void on_ratio_none_activate (GtkMenuItem* menuitem, gpointer user_data) {
meillo@4 19 ratio = 1;
meillo@3 20 update_spin_button_ratio(lookup_widget(cropper_window, "ratio_w_spinbutton"));
meillo@2 21 }
meillo@2 22
meillo@2 23
meillo@2 24 void on_ratio_square_activate (GtkMenuItem* menuitem, gpointer user_data) {
meillo@4 25 ratio = 1;
meillo@3 26 update_spin_button_ratio(lookup_widget(cropper_window, "ratio_w_spinbutton"));
meillo@2 27 }
meillo@2 28
meillo@2 29
meillo@2 30 void on_ratio_4x3_activate (GtkMenuItem* menuitem, gpointer user_data) {
meillo@4 31 ratio = 4.0/3.0;
meillo@3 32 update_spin_button_ratio(lookup_widget(cropper_window, "ratio_w_spinbutton"));
meillo@2 33 }
meillo@2 34
meillo@2 35
meillo@2 36 void on_ratio_3x2_activate (GtkMenuItem* menuitem, gpointer user_data) {
meillo@4 37 ratio = 1.5;
meillo@3 38 update_spin_button_ratio(lookup_widget(cropper_window, "ratio_w_spinbutton"));
meillo@2 39 }
meillo@2 40
meillo@2 41
meillo@2 42 void on_ratio_custom_activate (GtkMenuItem* menuitem, gpointer user_data) {
meillo@4 43 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 44 update_spin_button_ratio(lookup_widget(cropper_window, "ratio_w_spinbutton"));
meillo@3 45 }
meillo@4 46 */
meillo@3 47
meillo@3 48
meillo@3 49
meillo@3 50
meillo@3 51
meillo@4 52
meillo@4 53
meillo@4 54
meillo@4 55
meillo@4 56 /*
meillo@4 57 static void ratio_optionmenu_changed_cb (GtkOptionMenu* optionmenu, gpointer unser_data) {
meillo@4 58 int idx = gtk_option_menu_get_history (optionmenu);
meillo@4 59 int w = 1, h = 1;
meillo@4 60 gboolean use_ratio = TRUE;
meillo@4 61
meillo@4 62 switch (idx) {
meillo@4 63 case GTH_CROP_RATIO_NONE:
meillo@4 64 use_ratio = FALSE;
meillo@4 65 break;
meillo@4 66 case GTH_CROP_RATIO_SQUARE:
meillo@4 67 w = h = 1;
meillo@4 68 break;
meillo@4 69 case GTH_CROP_RATIO_IMAGE:
meillo@4 70 w = lookup_widget(cropper_window, "image_width");
meillo@4 71 h = lookup_widget(cropper_window, "image_height");
meillo@4 72 break;
meillo@4 73 case GTH_CROP_RATIO_DISPLAY:
meillo@4 74 w = lookup_widget(cropper_window, "display_width");
meillo@4 75 h = lookup_widget(cropper_window, "display_height");
meillo@4 76 break;
meillo@4 77 case GTH_CROP_RATIO_4_3:
meillo@4 78 w = 4;
meillo@4 79 h = 3;
meillo@4 80 break;
meillo@4 81 case GTH_CROP_RATIO_4_6:
meillo@4 82 w = 4;
meillo@4 83 h = 6;
meillo@4 84 break;
meillo@4 85 case GTH_CROP_RATIO_CUSTOM:
meillo@4 86 default:
meillo@4 87 w = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (lookup_widget(cropper_window, "ratio_w_spinbutton")));
meillo@4 88 h = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (lookup_widget(cropper_window, "ratio_h_spinbutton")));
meillo@4 89 break;
meillo@4 90 }
meillo@4 91
meillo@4 92 gtk_widget_set_sensitive (lookup_widget(cropper_window, "custom_ratio_box"), idx == GTH_CROP_RATIO_CUSTOM);
meillo@4 93 set_spin_value (cropper_window, lookup_widget(cropper_window, "ratio_w_spinbutton"), w);
meillo@4 94 set_spin_value (cropper_window, lookup_widget(cropper_window, "ratio_h_spinbutton"), h);
meillo@4 95
meillo@4 96 gth_image_selector_set_ratio (GTH_IMAGE_SELECTOR (lookup_widget(cropper_window, "crop_image")), use_ratio, (double) w / h);
meillo@4 97 }
meillo@4 98
meillo@4 99
meillo@4 100 static void ratio_value_changed_cb (GtkSpinButton* spin, gpointer unser_data) {
meillo@4 101 int w, h;
meillo@4 102
meillo@4 103 w = gtk_spin_button_get_value_as_int (lookup_widget(cropper_window, "ratio_w_spinbutton"));
meillo@4 104 h = gtk_spin_button_get_value_as_int (lookup_widget(cropper_window, "ratio_h_spinbutton"));
meillo@4 105
meillo@4 106 gth_image_selector_set_ratio (GTH_IMAGE_SELECTOR (lookup_widget(cropper_window, "crop_image")), TRUE, (double) w / h);
meillo@4 107 }
meillo@4 108
meillo@4 109
meillo@4 110 static void ratio_swap_button_cb (GtkButton* button, gpointer unser_data) {
meillo@4 111 int w, h;
meillo@4 112
meillo@4 113 w = gtk_spin_button_get_value_as_int(lookup_widget(cropper_window, "ratio_w_spinbutton"));
meillo@4 114 h = gtk_spin_button_get_value_as_int(lookup_widget(cropper_window, "ratio_h_spinbutton"));
meillo@4 115
meillo@4 116 set_spin_value(cropper_window, lookup_widget(cropper_window, "ratio_w_spinbutton"), h);
meillo@4 117 set_spin_value(cropper_window, lookup_widget(cropper_window, "ratio_h_spinbutton"), w);
meillo@4 118
meillo@4 119 gth_image_selector_set_ratio(GTH_IMAGE_SELECTOR (lookup_widget(cropper_window, "crop_image")), TRUE, (double) h / w);
meillo@4 120 }
meillo@4 121
meillo@4 122 */
meillo@4 123
meillo@4 124
meillo@4 125
meillo@4 126
meillo@4 127
meillo@4 128
meillo@4 129
meillo@4 130
meillo@4 131 /*
meillo@3 132 void on_ratio_w_spinbutton_value_changed (GtkSpinButton* spinbutton, gpointer user_data) {
meillo@3 133 g_print("spinbutton W - ratio: %f\n", ratio);
meillo@3 134 gtk_spin_button_set_value(lookup_widget(cropper_window, "ratio_h_spinbutton"), gtk_spin_button_get_value(spinbutton) / ratio);
meillo@3 135 }
meillo@3 136
meillo@3 137
meillo@3 138 void on_ratio_w_spinbutton_change_value (GtkSpinButton* spinbutton, GtkScrollType scroll, gpointer user_data) {
meillo@3 139 }
meillo@3 140
meillo@3 141
meillo@3 142 void on_ratio_h_spinbutton_change_value (GtkSpinButton* spinbutton, GtkScrollType scroll, gpointer user_data) {
meillo@3 143 }
meillo@3 144
meillo@3 145
meillo@3 146 void on_ratio_h_spinbutton_value_changed (GtkSpinButton* spinbutton, gpointer user_data) {
meillo@3 147 g_print("spinbutton H - ratio: %f\n", ratio);
meillo@3 148 gtk_spin_button_set_value(lookup_widget(cropper_window, "ratio_w_spinbutton"), gtk_spin_button_get_value(spinbutton) * ratio);
meillo@0 149
meillo@0 150 }
meillo@0 151
meillo@0 152
meillo@3 153 void on_ratio_swap_button_clicked (GtkButton* button, gpointer user_data) {
meillo@3 154
meillo@3 155 ratio = 1.0 / ratio;
meillo@3 156 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 157 gtk_spin_button_update(lookup_widget(cropper_window, "ratio_w_spinbutton"));
meillo@0 158
meillo@2 159 }
meillo@4 160 */
meillo@2 161
meillo@2 162
meillo@2 163
meillo@4 164 void on_crop_clicked(GtkButton* button, gpointer user_data) {
meillo@4 165 char crop_call[256];
meillo@2 166
meillo@4 167 sprintf(crop_call, "echo \"convert -crop %ix%i+%i+%i %s cropped_%s\"",
meillo@4 168 gtk_spin_button_get_value_as_int(lookup_widget(cropper_window, "crop_width_spinbutton")),
meillo@4 169 gtk_spin_button_get_value_as_int(lookup_widget(cropper_window, "crop_height_spinbutton")),
meillo@4 170 gtk_spin_button_get_value_as_int(lookup_widget(cropper_window, "crop_x_spinbutton")),
meillo@4 171 gtk_spin_button_get_value_as_int(lookup_widget(cropper_window, "crop_y_spinbutton")),
meillo@4 172 image_filename,
meillo@4 173 image_filename
meillo@4 174 );
meillo@4 175 system(crop_call);
meillo@4 176 gtk_main_quit();
meillo@4 177 }
meillo@2 178
meillo@0 179
meillo@1 180 void on_cropper_window_destroy (GtkObject* object, gpointer user_data) {
meillo@0 181 gtk_main_quit();
meillo@0 182 }
meillo@0 183