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

Reply via email to