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
|