Enlightenment CVS committal Author : titan Project : e17 Module : apps/ephoto
Dir : e17/apps/ephoto/src/bin Modified Files: ephoto_imaging.c Log Message: Convert the save dialog to use one slider. =================================================================== RCS file: /cvs/e/e17/apps/ephoto/src/bin/ephoto_imaging.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- ephoto_imaging.c 15 May 2007 17:09:26 -0000 1.8 +++ ephoto_imaging.c 18 May 2007 21:16:41 -0000 1.9 @@ -1,6 +1,8 @@ #include "ephoto.h" static void close_dialog(Ewl_Widget *w, void *event, void *data); +static void close_progress(Ewl_Widget *w, void *event, void *data); +static void save_clicked(Ewl_Widget *w, void *event, void *data); static void save_image(Ewl_Widget *w, void *event, void *data); static Ewl_Widget *save_win, *qseek; @@ -299,35 +301,79 @@ ewl_widget_destroy(save_win); } +static void close_progress(Ewl_Widget *w, void *event, void *data) +{ + ewl_widget_destroy(w); +} + static void save_image(Ewl_Widget *w, void *event, void *data) { const char *file; - char *ext; char flags[PATH_MAX]; - pid_t pid; + char *ext; + + file = data; - file = ewl_text_text_get(EWL_TEXT(data)); - ext = strrchr(file, '.')+1; - printf("%s\n", ext); - snprintf(flags, PATH_MAX, "quality=%i", - (int)ewl_range_value_get(EWL_RANGE(qseek))*10); + if (!strncmp(ext, "png", 3)) + { + snprintf(flags, PATH_MAX, "compress=%i", + (int)ewl_range_value_get(EWL_RANGE(qseek))); + } + if (!strncmp(ext, "jpg", 3) || !strncmp(ext, "jpeg", 4)) + { + double svalue; + float jvalue; - if(!file) return; + svalue = ewl_range_value_get(EWL_RANGE(qseek)); + jvalue = (svalue / 9) * 100; - if(VISIBLE(em->eimage)) - { - pid = fork(); - if(pid == 0) - { - evas_object_image_save(EWL_IMAGE(em->eimage)->image, - file, NULL, flags); - exit(0); - } + if (jvalue < 10) + snprintf(flags, PATH_MAX, "quality=%1.0f", jvalue); + + if (jvalue >= 10 && jvalue < 100) + snprintf(flags, PATH_MAX, "quality=%2.0f", jvalue); + + if (jvalue == 100) + snprintf(flags, PATH_MAX, "quality=%3.0f", jvalue); } + printf("%s\n", flags); + if(!file) return; + + if(VISIBLE(em->eimage)) + { + evas_object_image_save(EWL_IMAGE(em->eimage)->image, + file, NULL, flags); + } + + ewl_widget_destroy(EWL_WIDGET(w)); +} + +static void save_clicked(Ewl_Widget *w, void *event, void *data) +{ + char *file; + + Ewl_Widget *pwin, *vbox, *label, *pbar; + + file = ewl_text_text_get(EWL_TEXT(data)); + + if(!file) return; ewl_widget_destroy(save_win); + pwin = add_window("Save Progress", 200, 75, close_progress, NULL); + ewl_callback_append(pwin, EWL_CALLBACK_SHOW, save_image, file); + + vbox = add_box(pwin, EWL_ORIENTATION_VERTICAL, 5); + + label = add_label(vbox, "Save Progress"); + + pbar = ewl_progressbar_new(); + ewl_progressbar_label_set(EWL_PROGRESSBAR(pbar), "Saving..."); + ewl_range_unknown_set(EWL_RANGE(pbar), 1); + ewl_container_child_append(EWL_CONTAINER(vbox), pbar); + ewl_widget_show(pbar); + return; } @@ -347,10 +393,10 @@ add_label(vbox, "Quality/Compression:"); qseek = ewl_hseeker_new(); - ewl_range_minimum_value_set(EWL_RANGE(qseek), 0); - ewl_range_maximum_value_set(EWL_RANGE(qseek), 100); - ewl_range_step_set(EWL_RANGE(qseek), 10); - ewl_range_value_set(EWL_RANGE(qseek), 80); + ewl_range_minimum_value_set(EWL_RANGE(qseek), 1); + ewl_range_maximum_value_set(EWL_RANGE(qseek), 9); + ewl_range_step_set(EWL_RANGE(qseek), 1); + ewl_range_value_set(EWL_RANGE(qseek), 7); ewl_container_child_append(EWL_CONTAINER(vbox), qseek); ewl_widget_show(qseek); @@ -360,7 +406,7 @@ button = add_button(hbox, "Save", PACKAGE_DATA_DIR "/images/stock_save.png", - save_image, entry); + save_clicked, entry); ewl_button_image_size_set(EWL_BUTTON(button), 25, 25); button = add_button(hbox, "Close", ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs