Mercurial > cropper
comparison cropper.c @ 19:762de8cee1e4 default tip
fixed makefile; some cleanups
author | meillo@marmaro.de |
---|---|
date | Thu, 04 Mar 2010 19:44:28 +0100 |
parents | 9d6e8105b145 |
children |
comparison
equal
deleted
inserted
replaced
18:9d6e8105b145 | 19:762de8cee1e4 |
---|---|
26 float inc = 0.3; | 26 float inc = 0.3; |
27 float zoom = 1.0; | 27 float zoom = 1.0; |
28 | 28 |
29 /* from callbacks.h */ | 29 /* from callbacks.h */ |
30 double ratio; | 30 double ratio; |
31 | |
32 void crop(void); | |
33 gboolean on_key_press(GtkWidget* window, GdkEventKey* pKey, gpointer userdata); | |
34 void on_cropper_window_create(GtkObject* object, gpointer user_data); | |
35 void on_cropper_window_destroy(GtkObject* object, gpointer user_data); | |
36 | |
37 | 31 |
38 | 32 |
39 | 33 |
40 | 34 |
41 #define GLADE_HOOKUP_OBJECT(component,widget,name) \ | 35 #define GLADE_HOOKUP_OBJECT(component,widget,name) \ |
80 return found_widget; | 74 return found_widget; |
81 } | 75 } |
82 | 76 |
83 | 77 |
84 | 78 |
85 GtkWidget* | 79 |
86 create_cropper_window(void) | 80 |
87 { | 81 |
88 GtkWidget *cropper_window; | 82 |
89 GtkWidget *dialog_vbox1; | 83 |
90 GtkWidget *status; | 84 |
91 GtkWidget *label1; | 85 |
92 GtkWidget *label2; | 86 |
93 | 87 |
94 | 88 |
95 cropper_window = gtk_window_new(GTK_WINDOW_TOPLEVEL); | 89 |
96 gtk_widget_set_name(cropper_window, "cropper_window"); | 90 |
97 gtk_container_set_border_width(GTK_CONTAINER(cropper_window), 6); | 91 |
98 gtk_window_set_title(GTK_WINDOW(cropper_window), "cropper-0.2"); | 92 |
99 | 93 |
100 dialog_vbox1 = gtk_vbox_new(FALSE, 6); | 94 |
101 gtk_widget_set_name(dialog_vbox1, "dialog_vbox1"); | 95 |
102 gtk_widget_show(dialog_vbox1); | 96 |
103 gtk_container_add(GTK_CONTAINER(cropper_window), dialog_vbox1); | |
104 | |
105 | |
106 status = gtk_hbox_new(FALSE, 0); | |
107 gtk_widget_set_name(status, "status"); | |
108 gtk_widget_show(status); | |
109 gtk_box_pack_end(GTK_BOX(dialog_vbox1), status, FALSE, FALSE, 0); | |
110 | |
111 label1 = gtk_label_new("zoom:"); | |
112 gtk_widget_set_name(label1, "label1"); | |
113 gtk_widget_show(label1); | |
114 gtk_box_pack_start(GTK_BOX(status), label1, FALSE, FALSE, 0); | |
115 | |
116 label2 = gtk_label_new("1.0"); | |
117 gtk_widget_set_name(label2, "label2"); | |
118 gtk_widget_show(label2); | |
119 gtk_box_pack_start(GTK_BOX(status), label2, FALSE, FALSE, 0); | |
120 | |
121 /* image_area */ | |
122 image_buffer = gdk_pixbuf_new_from_file(image_filename, NULL); | |
123 image_area = gtk_image_new_from_pixbuf(image_buffer); | |
124 | |
125 gtk_widget_set_name(image_area, "image_area"); | |
126 gtk_widget_show(image_area); | |
127 gtk_box_pack_start(GTK_BOX(dialog_vbox1), image_area, TRUE, TRUE, 0); | |
128 | |
129 | |
130 | |
131 | |
132 | |
133 g_signal_connect(G_OBJECT(cropper_window), "show", | |
134 G_CALLBACK(on_cropper_window_create), NULL); | |
135 | |
136 g_signal_connect(G_OBJECT(cropper_window), "destroy", | |
137 G_CALLBACK(on_cropper_window_destroy), NULL); | |
138 | |
139 g_signal_connect(cropper_window, "key-press-event", | |
140 G_CALLBACK(on_key_press), NULL); | |
141 | |
142 | |
143 /* Store pointers to all widgets, for use by lookup_widget(). */ | |
144 | |
145 GLADE_HOOKUP_OBJECT_NO_REF(cropper_window, cropper_window, "cropper_window"); | |
146 GLADE_HOOKUP_OBJECT(cropper_window, dialog_vbox1, "dialog_vbox1"); | |
147 | |
148 GLADE_HOOKUP_OBJECT(cropper_window, label1, "label1"); | |
149 GLADE_HOOKUP_OBJECT(cropper_window, label2, "label2"); | |
150 GLADE_HOOKUP_OBJECT(cropper_window, status, "status"); | |
151 GLADE_HOOKUP_OBJECT(cropper_window, image_area, "image_area"); | |
152 GLADE_HOOKUP_OBJECT(cropper_window,(GtkWidget*) image_buffer, "image_buffer"); | |
153 | |
154 | |
155 return cropper_window; | |
156 } | |
157 | |
158 | |
159 | |
160 | |
161 | |
162 | |
163 | |
164 | |
165 | |
166 | |
167 | |
168 | |
169 | |
170 | |
171 | |
172 | |
173 | |
174 | |
175 | |
176 | |
177 | |
178 void | |
179 update_title(char* zoom) | |
180 { | |
181 char title[128]; | |
182 snprintf(title, 128, "cropper (%s) %dx%d+%d+%d", zoom, w, h, x, y); | |
183 gtk_window_set_title(GTK_WINDOW(cropper_window), title); | |
184 } | |
185 | 97 |
186 | 98 |
187 /* zoom */ | 99 /* zoom */ |
188 void | 100 void |
189 set_zoom() | 101 set_zoom() |
244 crop(void) | 156 crop(void) |
245 { | 157 { |
246 char crop_call[256]; | 158 char crop_call[256]; |
247 | 159 |
248 sprintf(crop_call, "echo \"convert -crop %ix%i+%i+%i %s cropped_%s\"", | 160 sprintf(crop_call, "echo \"convert -crop %ix%i+%i+%i %s cropped_%s\"", |
249 gtk_spin_button_get_value_as_int((GtkSpinButton*) lookup_widget(cropper_window, | 161 w, h, x, y, image_filename, image_filename); |
250 "crop_width_spinbutton")), | |
251 gtk_spin_button_get_value_as_int((GtkSpinButton*) lookup_widget(cropper_window, | |
252 "crop_height_spinbutton")), | |
253 gtk_spin_button_get_value_as_int((GtkSpinButton*) lookup_widget(cropper_window, | |
254 "crop_x_spinbutton")), | |
255 gtk_spin_button_get_value_as_int((GtkSpinButton*) lookup_widget(cropper_window, | |
256 "crop_y_spinbutton")), | |
257 image_filename, | |
258 image_filename | |
259 ); | |
260 system(crop_call); | 162 system(crop_call); |
261 gtk_main_quit(); | 163 gtk_main_quit(); |
262 } | 164 } |
263 | 165 |
264 | 166 |
322 return TRUE; | 224 return TRUE; |
323 } | 225 } |
324 | 226 |
325 | 227 |
326 | 228 |
229 | |
230 | |
231 GtkWidget* | |
232 create_cropper_window(void) | |
233 { | |
234 GtkWidget *cropper_window; | |
235 GtkWidget *dialog_vbox1; | |
236 GtkWidget *status; | |
237 GtkWidget *label1; | |
238 GtkWidget *label2; | |
239 | |
240 | |
241 cropper_window = gtk_window_new(GTK_WINDOW_TOPLEVEL); | |
242 gtk_widget_set_name(cropper_window, "cropper_window"); | |
243 gtk_container_set_border_width(GTK_CONTAINER(cropper_window), 6); | |
244 gtk_window_set_title(GTK_WINDOW(cropper_window), "cropper-0.2"); | |
245 | |
246 dialog_vbox1 = gtk_vbox_new(FALSE, 6); | |
247 gtk_widget_set_name(dialog_vbox1, "dialog_vbox1"); | |
248 gtk_widget_show(dialog_vbox1); | |
249 gtk_container_add(GTK_CONTAINER(cropper_window), dialog_vbox1); | |
250 | |
251 | |
252 status = gtk_hbox_new(FALSE, 0); | |
253 gtk_widget_set_name(status, "status"); | |
254 gtk_widget_show(status); | |
255 gtk_box_pack_end(GTK_BOX(dialog_vbox1), status, FALSE, FALSE, 0); | |
256 | |
257 label1 = gtk_label_new("zoom:"); | |
258 gtk_widget_set_name(label1, "label1"); | |
259 gtk_widget_show(label1); | |
260 gtk_box_pack_start(GTK_BOX(status), label1, FALSE, FALSE, 0); | |
261 | |
262 label2 = gtk_label_new("1.0"); | |
263 gtk_widget_set_name(label2, "label2"); | |
264 gtk_widget_show(label2); | |
265 gtk_box_pack_start(GTK_BOX(status), label2, FALSE, FALSE, 0); | |
266 | |
267 /* image_area */ | |
268 image_buffer = gdk_pixbuf_new_from_file(image_filename, NULL); | |
269 image_area = gtk_image_new_from_pixbuf(image_buffer); | |
270 | |
271 gtk_widget_set_name(image_area, "image_area"); | |
272 gtk_widget_show(image_area); | |
273 gtk_box_pack_start(GTK_BOX(dialog_vbox1), image_area, TRUE, TRUE, 0); | |
274 | |
275 | |
276 | |
277 | |
278 | |
279 g_signal_connect(G_OBJECT(cropper_window), "show", | |
280 G_CALLBACK(on_cropper_window_create), NULL); | |
281 | |
282 g_signal_connect(G_OBJECT(cropper_window), "destroy", | |
283 G_CALLBACK(on_cropper_window_destroy), NULL); | |
284 | |
285 g_signal_connect(cropper_window, "key-press-event", | |
286 G_CALLBACK(on_key_press), NULL); | |
287 | |
288 | |
289 /* Store pointers to all widgets, for use by lookup_widget(). */ | |
290 | |
291 GLADE_HOOKUP_OBJECT_NO_REF(cropper_window, cropper_window, "cropper_window"); | |
292 GLADE_HOOKUP_OBJECT(cropper_window, dialog_vbox1, "dialog_vbox1"); | |
293 | |
294 GLADE_HOOKUP_OBJECT(cropper_window, label1, "label1"); | |
295 GLADE_HOOKUP_OBJECT(cropper_window, label2, "label2"); | |
296 GLADE_HOOKUP_OBJECT(cropper_window, status, "status"); | |
297 GLADE_HOOKUP_OBJECT(cropper_window, image_area, "image_area"); | |
298 GLADE_HOOKUP_OBJECT(cropper_window,(GtkWidget*) image_buffer, "image_buffer"); | |
299 | |
300 | |
301 return cropper_window; | |
302 } | |
327 | 303 |
328 | 304 |
329 | 305 |
330 | 306 |
331 | 307 |
346 gtk_widget_show(cropper_window); | 322 gtk_widget_show(cropper_window); |
347 gtk_main(); | 323 gtk_main(); |
348 | 324 |
349 return 0; | 325 return 0; |
350 } | 326 } |
351 |