Enlightenment CVS committal

Author  : moom
Project : e17
Module  : proto

Dir     : e17/proto/etk/src/lib


Modified Files:
        etk_combobox.c etk_image.c etk_image.h 


Log Message:
* [Etk_Image] *API BREAK* etk_image_new_from_file() and 
etk_image_set_from_file() now takes a "key" parameter that allows you to 
load images from Eet files. You can just set it to NULL if you don't 
need it.


===================================================================
RCS file: /cvs/e/e17/proto/etk/src/lib/etk_combobox.c,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -3 -r1.33 -r1.34
--- etk_combobox.c      10 Dec 2006 13:12:23 -0000      1.33
+++ etk_combobox.c      29 Dec 2006 22:10:13 -0000      1.34
@@ -294,7 +294,7 @@
                if (item)
                   etk_image_copy(ETK_IMAGE(combobox->active_item_children[j]), 
ETK_IMAGE(item->widgets[i]));
                else
-                  
etk_image_set_from_file(ETK_IMAGE(combobox->active_item_children[j]), NULL);
+                  
etk_image_set_from_file(ETK_IMAGE(combobox->active_item_children[j]), NULL, 
NULL);
                break;
             default:
                break;
===================================================================
RCS file: /cvs/e/e17/proto/etk/src/lib/etk_image.c,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -3 -r1.27 -r1.28
--- etk_image.c 29 Dec 2006 21:50:46 -0000      1.27
+++ etk_image.c 29 Dec 2006 22:10:13 -0000      1.28
@@ -92,14 +92,15 @@
 /**
  * @brief Creates a new image and loads the image from an image file
  * @param filename the path of the file to load
+ * @param key the key to load (only used if the file is an Eet file, otherwise 
you can set it to NULL)
  * @return Returns the new image widget
  */
-Etk_Widget *etk_image_new_from_file(const char *filename)
+Etk_Widget *etk_image_new_from_file(const char *filename, const char *key)
 {
    Etk_Widget *image;
    
    image = etk_image_new();
-   etk_image_set_from_file(ETK_IMAGE(image), filename);
+   etk_image_set_from_file(ETK_IMAGE(image), filename, key);
    return image;
 }
 
@@ -169,8 +170,9 @@
  * @brief Loads the image from a file
  * @param image an image
  * @param filename the path to the file to load
+ * @param key the key to load (only used if the file is an Eet file, otherwise 
you can set it to NULL)
  */
-void etk_image_set_from_file(Etk_Image *image, const char *filename)
+void etk_image_set_from_file(Etk_Image *image, const char *filename, const 
char *key)
 {
    if (!image)
       return;
@@ -182,6 +184,12 @@
       image->info.file.filename = filename ? strdup(filename) : NULL;
       etk_object_notify(ETK_OBJECT(image), "file");
    }
+   if (image->info.file.key != key)
+   {
+      free(image->info.file.key);
+      image->info.file.key = key ? strdup(key) : NULL;
+      etk_object_notify(ETK_OBJECT(image), "key");
+   }
 
    _etk_image_load(image);
 }
@@ -189,13 +197,25 @@
 /**
  * @brief Gets the path to the file used by the image
  * @param image an image
- * @return Returns the path to the file used by the image (NULL on failure)
+ * @param filename the location where to store the path to the loaded file
+ * @param key the location where to store the key of the loaded image (NULL if 
the file is not loaded from an Eet file)
  */
-const char *etk_image_file_get(Etk_Image *image)
+void etk_image_file_get(Etk_Image *image, char **filename, char **key)
 {
    if (!image || image->source != ETK_IMAGE_FILE)
-      return NULL;
-   return image->info.file.filename;
+   {
+      if (filename)
+         *filename = NULL;
+      if (key)
+         *key = NULL;
+   }
+   else
+   {
+      if (filename)
+         *filename = image->info.file.filename;
+      if (key)
+         *key = image->info.file.key;
+   }
 }
 
 /**
@@ -458,8 +478,7 @@
    switch (src_image->source)
    {
       case ETK_IMAGE_FILE:
-         /* TODO: copy the key too.. */
-         etk_image_set_from_file(dest_image, src_image->info.file.filename);
+         etk_image_set_from_file(dest_image, src_image->info.file.filename, 
src_image->info.file.key);
          break;
       case ETK_IMAGE_EDJE:
          etk_image_set_from_edje(dest_image, src_image->info.edje.filename, 
src_image->info.edje.group);
@@ -637,17 +656,11 @@
          if (image->source == ETK_IMAGE_EDJE)
             etk_image_set_from_edje(image, 
etk_property_value_string_get(value), image->info.edje.group);
          else
-         {
-            /* TODO: set the key! */
-            etk_image_set_from_file(image, 
etk_property_value_string_get(value));
-         }
+            etk_image_set_from_file(image, 
etk_property_value_string_get(value), image->info.file.key);
          break;
       case ETK_IMAGE_KEY_PROPERTY:
          if (image->source == ETK_IMAGE_FILE)
-         {
-            /* TODO: set the key! */
-            //etk_image_set_from_file(image, image->info.file.filename, 
etk_property_value_string_get(value));
-         }
+            etk_image_set_from_file(image, image->info.file.filename, 
etk_property_value_string_get(value));
          else if (image->source == ETK_IMAGE_EDJE)
             etk_image_set_from_edje(image, image->info.edje.filename, 
etk_property_value_string_get(value));
          break;
@@ -902,7 +915,7 @@
          if (!image_file || !image->info.file.filename || strcmp(image_file, 
image->info.file.filename) != 0)
          {
             evas_object_image_file_set(image->object, 
image->info.file.filename, image->info.file.key);
-            if ((error_code = evas_object_image_load_error_get(image->object)))
+            if (image->info.file.filename && (error_code = 
evas_object_image_load_error_get(image->object)))
                ETK_WARNING("Unable to load image from file \"%s\", error %d", 
image->info.file.filename, error_code);
          }
          break;
@@ -925,7 +938,7 @@
          }
          
          edje_object_file_set(image->object, file, key);
-         if ((error_code = edje_object_load_error_get(image->object)))
+         if (file && (error_code = edje_object_load_error_get(image->object)))
             ETK_WARNING("Unable to load image from edje-file  \"%s\"/\"%s\", 
error %d", file, key, error_code);
          break;
       }
===================================================================
RCS file: /cvs/e/e17/proto/etk/src/lib/etk_image.h,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -3 -r1.12 -r1.13
--- etk_image.h 29 Dec 2006 21:50:46 -0000      1.12
+++ etk_image.h 29 Dec 2006 22:10:13 -0000      1.13
@@ -77,14 +77,14 @@
 Etk_Type *etk_image_type_get(void);
 
 Etk_Widget *etk_image_new(void);
-Etk_Widget *etk_image_new_from_file(const char *filename);
+Etk_Widget *etk_image_new_from_file(const char *filename, const char *key);
 Etk_Widget *etk_image_new_from_edje(const char *filename, const char *group);
 Etk_Widget *etk_image_new_from_stock(Etk_Stock_Id stock_id, Etk_Stock_Size 
stock_size);
 Etk_Widget *etk_image_new_from_evas_object(Evas_Object *evas_object);
 Etk_Widget *etk_image_new_from_data(int width, int height, void *data, 
Etk_Bool copy);
 
-void         etk_image_set_from_file(Etk_Image *image, const char *filename);
-const char  *etk_image_file_get(Etk_Image *image);
+void         etk_image_set_from_file(Etk_Image *image, const char *filename, 
const char *key);
+void         etk_image_file_get(Etk_Image *image, char **filename, char **key);
 void         etk_image_set_from_edje(Etk_Image *image, const char *filename, 
const char *group);
 void         etk_image_edje_get(Etk_Image *image, char **filename, char 
**group);
 void         etk_image_set_from_stock(Etk_Image *image, Etk_Stock_Id stock_id, 
Etk_Stock_Size stock_size);



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to