A patch to get the content of a elementary object from edje. I have
implemented a new function: external_content_get() but maybe I should use
external_param_get() ?



2010/7/25 Atton Jonathan <jonathan.at...@gmail.com>

> My idea is to have 1 edje group by window. The application create the
> window, load the group and get the objects needed (buttons, list ...).
> With this method in the theme you have a complete controls: you can use 5
> panels or 2, display 3 list or 3 buttons to display one of the three list
> ...
>
> With generic interface we will have a way to have a theme for bif screen
> with a list and a second for small screen with a hoversel. But this part is
> not my priority, this is a big job.
>
> This is what I try to do with Enki. Then I will write a theme for small
> screen like phone.
>
> My first problem will be to retrieve the content of a elementary object.
> The first object in the current enki theme is a elm_panels. I will add the
> possibility to do this.
>
> 2010/7/19 Dave Andreoli <d...@gurumeditation.it>
>
> 2010/7/18 Gustavo Sverzut Barbieri <barbi...@profusion.mobi>:
>> > On Sat, Jul 17, 2010 at 8:08 AM, Atton Jonathan
>> > <jonathan.at...@gmail.com> wrote:
>> >> Hello,
>> >>
>> >> I am writting this messages to give a list of what is needed in edje
>> >> external. I am rewriting the layout of  enki and I see some
>> limitations.
>> >>
>> >>
>> >>   - We can't access to the content of a elementary widget (the content
>> of
>> >>   elm_notify for example). With a evas box we can use "box[item_name]",
>> we
>> >>   need the same tips with a external widget "notify[content]" or
>> >>   "panes["left"].
>> >
>> > As said at IRC, this is a problem harder to solve in Elementary than
>> > in Edje/Externals API. We could just add a sub_object_get(name) to the
>> > externals API, but we have no standard way to get them from
>> > Elementary. If we need to implement it per-widget, it will be a major
>> > pain to keep in sync.
>> >
>> >
>> >>   - a  program which is in a group can't access to a sub-group. Simple
>> >>   example : I have a part in a item of a box, a program can't have this
>> item
>> >>   as target "target:box[item]:part". If my program send a signal which
>> should
>> >>   set the state of this rectangle, I can't :(
>> >
>> > I recall Cedric and Sachiel doing something related to it these days.
>> > It should work with box and table at least.
>> >
>> >
>> >>   - We can set the target of a elementary widget. For example, I have a
>> >>   hoversel, I can't set his target. I have patched the hoversel, now
>> the
>> >>   default target is the edje group but we can't set a part as target.
>> >
>> > Again, this is highly specific of the Elementary's EXTERNAL
>> > implementation. You could do this today by exposing a property target
>> > with a string property that internally retrieves the object by name
>> > and calls the C function with it.
>> >
>> >
>> >>   - Currently a program can't listen a smart event from  a elementary
>> >>   object. For example I can't have a program which listen the signal
>> "clicked"
>> >>   of a elementary button.
>> >
>> > Well, it should be possible! Isn't it working? I did the initial
>> > implementation in external_signals_proxy(). It will use the
>> > introspection to listen to widget signals and proxy them to Edje, most
>> > of the objects exposed already have that, but if some are missing you
>> > can extend them just grep for Evas_Smart_Cb_Description in src/lib/,
>> > usually you find some code like elm_button.c:
>> >
>> > static const Evas_Smart_Cb_Description _signals[] = {
>> >  {SIG_CLICKED, ""},
>> >  {SIG_REPEATED, ""},
>> >  {SIG_UNPRESSED, ""},
>> >  {NULL, NULL}
>> > };
>> >
>> > ...
>> >
>> > evas_object_smart_callbacks_descriptions_set(obj, _signals);
>> >
>> >
>> > If the part that contains the button is called "bt" you should receive
>> > a "bt" "clicked" signal in Edje.
>> >
>> >
>> >>   - we need generic interface for list/genlist/hoversel ... then in the
>> >>   theme we can use other widegts (a list instead of a hoversel ...).
>> This part
>> >>   is a big job.
>> >
>> > The sub-object management is not there, the problem is to define how
>> > to interact with it without being too specific to some lib. For
>> > instance, should we handle sub_object_get(name) (as above) and
>> > sub_object_set(name, value), choosing inside name if we want to
>> > append, prepend, insert or replace? Or should we create an extensive
>> > API, with replication in Embryo and Lua and probably
>> > edje_object_part_external with all possible sub-object management like
>> > append/prepend/insert/remove/replace?  Of course we have
>> > middle-ground, with set, insert with key values such as -1 for end,
>> > remove... without replace/append/prepend variants.
>> >
>> > Anyway, the api is easy to extend, however if we're doing it, better
>> > do it sooner than later.
>> >
>> > But I'd like to see some real world use cases. In real world use
>> > cases, one often populate things like boxes from C... often those uses
>> > that you try to use them from Edje are wrong-usage, which you should
>> > just have many parts in the same object, or use Edje's native
>> > BOX/TABLE objects, or going even further, if you want your app to
>> > provide specific hoversel to some items, you create your specialized
>> > hoversel EXTERNAL in your app, register it to be used by Edje and have
>> > fun.
>> >
>> > One of the bad points of abusing these interfaces is that in a way or
>> > another, these are slower than plain C access. If you have to populate
>> > a huge genlist, for instance, for each item you'd have to call a
>> > function, resolve some text->object, then resolve text->function, then
>> > do some strcmp(), then call the final function.... but if you just get
>> > your edje_object_part_external_object_get(), you have the maximum
>> > speed, with all the required interface, checks and clear API usage.
>> >
>> > IOW, I don't want to introduce some option of bad habits just to make
>> > some demos simpler :-)
>> >
>> I totally agree with your position :)
>> We need to NOT abuse edje, edje files should just describe your interface,
>> don't make themes 'another program'
>>
>> DaveMDS
>>
>> >
>> > --
>> > Gustavo Sverzut Barbieri
>> > http://profusion.mobi embedded systems
>> > --------------------------------------
>> > MSN: barbi...@gmail.com
>> > Skype: gsbarbieri
>> > Mobile: +55 (19) 9225-2202
>> >
>> >
>> ------------------------------------------------------------------------------
>> > This SF.net email is sponsored by Sprint
>> > What will you do first with EVO, the first 4G phone?
>> > Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
>> > _______________________________________________
>> > enlightenment-devel mailing list
>> > enlightenment-devel@lists.sourceforge.net
>> > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>> >
>>
>
>
>
> --
> Regards.
>



-- 
Regards.
Index: src/lib/edje_private.h
===================================================================
--- src/lib/edje_private.h	(revision 50512)
+++ src/lib/edje_private.h	(working copy)
@@ -1624,6 +1624,7 @@
 void _edje_external_signal_emit(Evas_Object *obj, const char *emission, const char *source);
 Eina_Bool _edje_external_param_set(Evas_Object *obj, const Edje_External_Param *param) EINA_ARG_NONNULL(1, 2);
 Eina_Bool _edje_external_param_get(const Evas_Object *obj, Edje_External_Param *param) EINA_ARG_NONNULL(1, 2);
+Evas_Object *_edje_external_content_get(const Evas_Object *obj, const char *content) EINA_ARG_NONNULL(1, 2);
 void _edje_external_params_free(Eina_List *params, Eina_Bool free_strings);
 void _edje_external_recalc_apply(Edje *ed, Edje_Real_Part *ep, Edje_Calc_Params *params, Edje_Part_Description *chosen_desc);
 void *_edje_external_params_parse(Evas_Object *obj, const Eina_List *params);
Index: src/lib/edje_external.c
===================================================================
--- src/lib/edje_external.c	(revision 50512)
+++ src/lib/edje_external.c	(working copy)
@@ -181,6 +181,29 @@
    return _edje_external_param_get(rp->swallowed_object, param);
 }
 
+
+
+EAPI Evas_Object*
+edje_object_part_external_content_get(const Evas_Object *obj, const char *part, const char *content)
+{
+   Edje *ed;
+   Edje_Real_Part *rp;
+
+   if (!content) return EINA_FALSE;
+
+   ed = _edje_fetch(obj);
+   if ((!ed) || (!part)) return EINA_FALSE;
+
+   rp = _edje_real_part_recursive_get(ed, (char *)part);
+   if (!rp)
+     {
+	ERR("no part '%s'", part);
+	return EINA_FALSE;
+     }
+
+   return _edje_external_content_get(rp->swallowed_object, content);
+}
+
 /**
  * Facility to query the type of the given parameter of the given part.
  *
@@ -594,13 +617,31 @@
      }
    if (!type->param_get)
      {
-	ERR("external type '%s' from module '%s' does not provide param_set()",
+	ERR("external type '%s' from module '%s' does not provide param_get()",
 	    type->module_name, type->module);
 	return EINA_FALSE;
      }
    return type->param_get(type->data, obj, param);
 }
 
+Evas_Object*
+_edje_external_content_get(const Evas_Object *obj, const char *content)
+{
+   Edje_External_Type *type = evas_object_data_get(obj, "Edje_External_Type");
+   if (!type)
+     {
+	ERR("no external type for object %p", obj);
+	return EINA_FALSE;
+     }
+   if (!type->content_get)
+     {
+	ERR("external type '%s' from module '%s' does not provide content_get()",
+	    type->module_name, type->module);
+	return EINA_FALSE;
+     }
+   return type->content_get(type->data, obj, content);
+}
+
 void
 _edje_external_params_free(Eina_List *external_params, Eina_Bool free_strings)
 {
Index: src/lib/edje_util.c
===================================================================
--- src/lib/edje_util.c	(revision 50512)
+++ src/lib/edje_util.c	(working copy)
@@ -4257,6 +4257,9 @@
      if (rp->part->type == EDJE_PART_TYPE_TABLE)
        l = evas_object_table_children_get(rp->object);
      else
+       if (rp->part->type == EDJE_PART_TYPE_EXTERNAL)
+    	 return _edje_external_content_get(rp->swallowed_object, partid);
+     else
        return NULL;
 
    if (number)
@@ -4324,6 +4327,7 @@
 	 return _edje_real_part_recursive_get_helper(ed, path);
       case EDJE_PART_TYPE_BOX:
       case EDJE_PART_TYPE_TABLE:
+      case EDJE_PART_TYPE_EXTERNAL:
 	 if (!idx) return rp;
 	 path++;
 
Index: src/lib/Edje.h
===================================================================
--- src/lib/Edje.h	(revision 50512)
+++ src/lib/Edje.h	(working copy)
@@ -384,6 +384,7 @@
   void (*signal_emit) (void *data, Evas_Object *obj, const char *emission, const char *source); /**< Feed a signal emitted with emission originally set as part_name:signal to this object (without the "part_name:" prefix) */
   Eina_Bool (*param_set) (void *data, Evas_Object *obj, const Edje_External_Param *param); /**< dynamically change a parameter of this external, called by scripts and user code. Returns @c EINA_TRUE on success */
   Eina_Bool (*param_get) (void *data, const Evas_Object *obj, Edje_External_Param *param); /**< dynamically fetch a parameter of this external, called by scripts and user code. Returns @c EINA_TRUE on success. (Must check parameter name and type!) */
+  Evas_Object *(*content_get) (void *data, const Evas_Object *obj, const char *content); /**< dynamically fetch a sub object of this external, called by scripts and user code. Returns @c Evas_Object * on success. (Must check parameter name and type!) */
   void *(*params_parse) (void *data, Evas_Object *obj, const Eina_List *params); /**< parses the list of parameters, converting into a friendly representation. Used with state_set() */
   void (*params_free) (void *params); /**< free parameters parsed with params_parse() */
 
@@ -555,6 +556,7 @@
    EAPI Evas_Object              *edje_object_part_external_object_get     (const Evas_Object *obj, const char *part);
    EAPI Eina_Bool                 edje_object_part_external_param_set      (Evas_Object *obj, const char *part, const Edje_External_Param *param);
    EAPI Eina_Bool                 edje_object_part_external_param_get      (const Evas_Object *obj, const char *part, Edje_External_Param *param);
+   EAPI Evas_Object 			 *edje_object_part_external_content_get    (const Evas_Object *obj, const char *part, const char *content);
    EAPI Edje_External_Param_Type  edje_object_part_external_param_type_get (const Evas_Object *obj, const char *part, const char *param);
 
    EAPI Eina_Bool    edje_object_part_box_append             (Evas_Object *obj, const char *part, Evas_Object *child);
Index: src/lib/elm_notify.c
===================================================================
--- src/lib/elm_notify.c	(revision 50519)
+++ src/lib/elm_notify.c	(working copy)
@@ -393,6 +393,25 @@
 }
 
 /**
+ * Return the content of the notify widget
+ *
+ * @param obj The notify object
+ * @return The content that is being used
+ *
+ * @ingroup Notify
+ */
+EAPI Evas_Object *
+elm_notify_content_get(const Evas_Object *obj)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+   Widget_Data *wd = elm_widget_data_get(obj);
+   Evas_Object *content;
+   if (!wd) return NULL;
+   if (!wd->content) return NULL;
+   return wd->content;
+}
+
+/**
  * Set the notify parent
  *
  * @param obj The notify object
Index: src/lib/elm_panes.c
===================================================================
--- src/lib/elm_panes.c	(revision 50520)
+++ src/lib/elm_panes.c	(working copy)
@@ -220,6 +220,21 @@
      }
 }
 
+
+EAPI Evas_Object
+*elm_panes_content_left_get(const Evas_Object *obj)
+{
+	Widget_Data *wd = elm_widget_data_get(obj);
+	return wd->contents.left;
+}
+
+EAPI Evas_Object
+*elm_panes_content_right_get(const Evas_Object *obj)
+{
+	Widget_Data *wd = elm_widget_data_get(obj);
+	return wd->contents.right;
+}
+
 EAPI double elm_panes_content_left_size_get(const Evas_Object *obj)
 {
    Widget_Data *wd = elm_widget_data_get(obj);
Index: src/lib/Elementary.h.in
===================================================================
--- src/lib/Elementary.h.in	(revision 50520)
+++ src/lib/Elementary.h.in	(working copy)
@@ -685,6 +685,7 @@
    EAPI Evas_Object *elm_notify_add(Evas_Object *parent);
    EAPI void         elm_notify_content_set(Evas_Object *obj, Evas_Object *content);
    EAPI Evas_Object *elm_notify_content_unset(Evas_Object *obj);
+   EAPI Evas_Object *elm_notify_content_get(const Evas_Object *obj);
    EAPI void	     elm_notify_parent_set(Evas_Object *obj, Evas_Object *parent);
    EAPI void	     elm_notify_orient_set(Evas_Object *obj, Elm_Notify_Orient orient);
    EAPI Elm_Notify_Orient	    elm_notify_orient_get(const Evas_Object *obj);
@@ -1503,6 +1504,8 @@
    EAPI Evas_Object          *elm_panes_add(Evas_Object *parent);
    EAPI void                  elm_panes_content_left_set(Evas_Object *obj, Evas_Object *content);
    EAPI void                  elm_panes_content_right_set(Evas_Object *obj, Evas_Object *content);
+   EAPI Evas_Object 		 *elm_panes_content_left_get(const Evas_Object *obj);
+   EAPI Evas_Object 		 *elm_panes_content_right_get(const Evas_Object *obj);
    EAPI double		      elm_panes_content_left_size_get(const Evas_Object *obj);
    EAPI void		      elm_panes_content_left_size_set(Evas_Object *obj, double size);
    EAPI void		      elm_panes_horizontal_set(Evas_Object *obj, Eina_Bool horizontal);
Index: src/bin/test_slideshow.c
===================================================================
--- src/bin/test_slideshow.c	(revision 50519)
+++ src/bin/test_slideshow.c	(working copy)
@@ -93,11 +93,12 @@
    //elm_photocam_file_set(photo, data);
    //elm_photocam_zoom_mode_set(photo, ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT);
 
-   Evas_Object *photo = elm_photo_add(obj);
-   elm_photo_file_set(photo, data);
-   elm_photo_fill_inside_set(photo, EINA_TRUE);
-   elm_widget_style_set(photo, "shadow");
+   //Evas_Object *photo = elm_photo_add(obj);
+   //elm_photo_file_set(photo, data);
 
+   Evas_Object *photo = elm_image_add(obj);
+   elm_image_file_set(photo, data, NULL);
+
    return photo;
 }
 
Index: src/edje_externals/elm_slideshow.c
===================================================================
--- src/edje_externals/elm_slideshow.c	(revision 50519)
+++ src/edje_externals/elm_slideshow.c	(working copy)
@@ -155,6 +155,13 @@
    return mem;
 }
 
+static Evas_Object *external_slideshow_content_get(void *data __UNUSED__,
+		const Evas_Object *obj, const char *content)
+{
+	ERR("so content");
+	return NULL;
+}
+
 static void
 external_slideshow_params_free(void *params)
 {
Index: src/edje_externals/elm_toolbar.c
===================================================================
--- src/edje_externals/elm_toolbar.c	(revision 50519)
+++ src/edje_externals/elm_toolbar.c	(working copy)
@@ -103,6 +103,13 @@
    return mem;
 }
 
+static Evas_Object *external_toolbar_content_get(void *data __UNUSED__,
+		const Evas_Object *obj, const char *content)
+{
+	ERR("so content");
+	return NULL;
+}
+
 static void
 external_toolbar_params_free(void *params)
 {
Index: src/edje_externals/elm_genlist.c
===================================================================
--- src/edje_externals/elm_genlist.c	(revision 50519)
+++ src/edje_externals/elm_genlist.c	(working copy)
@@ -297,6 +297,13 @@
    return mem;
 }
 
+static Evas_Object *external_genlist_content_get(void *data __UNUSED__,
+		const Evas_Object *obj, const char *content)
+{
+	ERR("so content");
+	return NULL;
+}
+
 static void
 external_genlist_params_free(void *params)
 {
Index: src/edje_externals/elm_anchorview.c
===================================================================
--- src/edje_externals/elm_anchorview.c	(revision 50519)
+++ src/edje_externals/elm_anchorview.c	(working copy)
@@ -76,6 +76,13 @@
    return mem;
 }
 
+static Evas_Object *external_anchorview_content_get(void *data __UNUSED__,
+		const Evas_Object *obj, const char *content)
+{
+	ERR("so content");
+	return NULL;
+}
+
 static void
 external_anchorview_params_free(void *params)
 {
Index: src/edje_externals/elm_panes.c
===================================================================
--- src/edje_externals/elm_panes.c	(revision 50520)
+++ src/edje_externals/elm_panes.c	(working copy)
@@ -140,6 +140,20 @@
 	return mem;
 }
 
+static Evas_Object *external_panes_content_get(void *data __UNUSED__,
+		const Evas_Object *obj, const char *content)
+{
+	if (!strcmp(content, "left"))
+		return elm_panes_content_left_get(obj);
+	else if (!strcmp(content, "right"))
+		return elm_panes_content_right_get(obj);
+
+	ERR("unknown content '%s'", content);
+
+	return NULL;
+}
+
+
 static void external_panes_params_free(void *params) {
 	Elm_Params_Panes *mem = params;
 
Index: src/edje_externals/elm_notify.c
===================================================================
--- src/edje_externals/elm_notify.c	(revision 50519)
+++ src/edje_externals/elm_notify.c	(working copy)
@@ -186,6 +186,16 @@
 	return mem;
 }
 
+static Evas_Object *external_notify_content_get(void *data __UNUSED__,
+		const Evas_Object *obj, const char *content)
+{
+	if (!strcmp(content, "content"))
+		return elm_notify_content_get(obj);
+
+	ERR("unknown content '%s'", content);
+	return NULL;
+}
+
 static void external_notify_params_free(void *params) {
 	Elm_Params_Notify *mem = params;
 
Index: src/edje_externals/elm_photocam.c
===================================================================
--- src/edje_externals/elm_photocam.c	(revision 50519)
+++ src/edje_externals/elm_photocam.c	(working copy)
@@ -175,6 +175,13 @@
    return mem;
 }
 
+static Evas_Object *external_photocam_content_get(void *data __UNUSED__,
+		const Evas_Object *obj, const char *content)
+{
+	ERR("so content");
+	return NULL;
+}
+
 static void
 external_photocam_params_free(void *params)
 {
Index: src/edje_externals/elm_list.c
===================================================================
--- src/edje_externals/elm_list.c	(revision 50519)
+++ src/edje_externals/elm_list.c	(working copy)
@@ -242,6 +242,13 @@
    return mem;
 }
 
+static Evas_Object *external_list_content_get(void *data __UNUSED__,
+		const Evas_Object *obj, const char *content)
+{
+	ERR("so content");
+	return NULL;
+}
+
 static void
 external_list_params_free(void *params)
 {
Index: src/edje_externals/elm_fileselector_button.c
===================================================================
--- src/edje_externals/elm_fileselector_button.c	(revision 50519)
+++ src/edje_externals/elm_fileselector_button.c	(working copy)
@@ -215,6 +215,13 @@
    return mem;
 }
 
+static Evas_Object *external_fileselector_button_content_get(void *data __UNUSED__,
+		const Evas_Object *obj, const char *content)
+{
+	ERR("so content");
+	return NULL;
+}
+
  static void
 external_fileselector_button_params_free(void *params)
 {
Index: src/edje_externals/elm_button.c
===================================================================
--- src/edje_externals/elm_button.c	(revision 50519)
+++ src/edje_externals/elm_button.c	(working copy)
@@ -86,6 +86,13 @@
    return mem;
 }
 
+static Evas_Object *external_button_content_get(void *data __UNUSED__,
+		const Evas_Object *obj, const char *content)
+{
+	ERR("so content");
+	return NULL;
+}
+
 static void
 external_button_params_free(void *params)
 {
Index: src/edje_externals/elm_map.c
===================================================================
--- src/edje_externals/elm_map.c	(revision 50519)
+++ src/edje_externals/elm_map.c	(working copy)
@@ -172,6 +172,13 @@
    return mem;
 }
 
+static Evas_Object *external_map_content_get(void *data __UNUSED__,
+		const Evas_Object *obj, const char *content)
+{
+	ERR("so content");
+	return NULL;
+}
+
 static void
 external_map_params_free(void *params)
 {
Index: src/edje_externals/elm_check.c
===================================================================
--- src/edje_externals/elm_check.c	(revision 50519)
+++ src/edje_externals/elm_check.c	(working copy)
@@ -114,6 +114,13 @@
    return mem;
 }
 
+static Evas_Object *external_check_content_get(void *data __UNUSED__,
+		const Evas_Object *obj, const char *content)
+{
+	ERR("so content");
+	return NULL;
+}
+
 static void
 external_check_params_free(void *params)
 {
Index: src/edje_externals/elm_spinner.c
===================================================================
--- src/edje_externals/elm_spinner.c	(revision 50519)
+++ src/edje_externals/elm_spinner.c	(working copy)
@@ -211,6 +211,13 @@
    return mem;
 }
 
+static Evas_Object *external_spinner_content_get(void *data __UNUSED__,
+		const Evas_Object *obj, const char *content)
+{
+	ERR("so content");
+	return NULL;
+}
+
 static void
 external_spinner_params_free(void *params)
 {
Index: src/edje_externals/elm_thumb.c
===================================================================
--- src/edje_externals/elm_thumb.c	(revision 50519)
+++ src/edje_externals/elm_thumb.c	(working copy)
@@ -104,6 +104,13 @@
    return mem;
 }
 
+static Evas_Object *external_thumb_content_get(void *data __UNUSED__,
+		const Evas_Object *obj, const char *content)
+{
+	ERR("so content");
+	return NULL;
+}
+
 static void
 external_thumb_params_free(void *params)
 {
Index: src/edje_externals/elm_fileselector.c
===================================================================
--- src/edje_externals/elm_fileselector.c	(revision 50519)
+++ src/edje_externals/elm_fileselector.c	(working copy)
@@ -155,6 +155,13 @@
    return mem;
 }
 
+static Evas_Object *external_fileselector_content_get(void *data __UNUSED__,
+		const Evas_Object *obj, const char *content)
+{
+	ERR("so content");
+	return NULL;
+}
+
 static void
 external_fileselector_params_free(void *params)
 {
Index: src/edje_externals/elm_toggle.c
===================================================================
--- src/edje_externals/elm_toggle.c	(revision 50519)
+++ src/edje_externals/elm_toggle.c	(working copy)
@@ -176,6 +176,13 @@
    return mem;
 }
 
+static Evas_Object *external_toggle_content_get(void *data __UNUSED__,
+		const Evas_Object *obj, const char *content)
+{
+	ERR("so content");
+	return NULL;
+}
+
 static void
 external_toggle_params_free(void *params)
 {
Index: src/edje_externals/elm_slider.c
===================================================================
--- src/edje_externals/elm_slider.c	(revision 50519)
+++ src/edje_externals/elm_slider.c	(working copy)
@@ -296,6 +296,13 @@
    return mem;
 }
 
+static Evas_Object *external_slider_content_get(void *data __UNUSED__,
+		const Evas_Object *obj, const char *content)
+{
+	ERR("so content");
+	return NULL;
+}
+
 static void
 external_slider_params_free(void *params)
 {
Index: src/edje_externals/private.h
===================================================================
--- src/edje_externals/private.h	(revision 50519)
+++ src/edje_externals/private.h	(working copy)
@@ -39,6 +39,7 @@
     .params_parse = external_##type_name##_params_parse,\
     .params_free = external_##type_name##_params_free,  \
     .label_get = external_##type_name##_label_get,      \
+    .content_get = external_##type_name##_content_get,  \
     .description_get = NULL,                            \
     .icon_add = external_##type_name##_icon_add,        \
     .preview_add = NULL,                                \
Index: src/edje_externals/elm_anchorblock.c
===================================================================
--- src/edje_externals/elm_anchorblock.c	(revision 50519)
+++ src/edje_externals/elm_anchorblock.c	(working copy)
@@ -76,6 +76,13 @@
    return mem;
 }
 
+static Evas_Object *external_anchorblock_content_get(void *data __UNUSED__,
+		const Evas_Object *obj, const char *content)
+{
+	ERR("so content");
+	return NULL;
+}
+
 static void
 external_anchorblock_params_free(void *params)
 {
Index: src/edje_externals/elm_hoversel.c
===================================================================
--- src/edje_externals/elm_hoversel.c	(revision 50519)
+++ src/edje_externals/elm_hoversel.c	(working copy)
@@ -117,6 +117,13 @@
    return mem;
 }
 
+static Evas_Object *external_hoversel_content_get(void *data __UNUSED__,
+		const Evas_Object *obj, const char *content)
+{
+	ERR("so content");
+	return NULL;
+}
+
  static void
 external_hoversel_params_free(void *params)
 {
Index: src/edje_externals/elm_scrolled_entry.c
===================================================================
--- src/edje_externals/elm_scrolled_entry.c	(revision 50519)
+++ src/edje_externals/elm_scrolled_entry.c	(working copy)
@@ -153,6 +153,13 @@
    return mem;
 }
 
+static Evas_Object *external_scrolled_entry_content_get(void *data __UNUSED__,
+		const Evas_Object *obj, const char *content)
+{
+	ERR("so content");
+	return NULL;
+}
+
 static void
 external_scrolled_entry_params_free(void *params)
 {
Index: src/edje_externals/elm_progressbar.c
===================================================================
--- src/edje_externals/elm_progressbar.c	(revision 50519)
+++ src/edje_externals/elm_progressbar.c	(working copy)
@@ -213,6 +213,13 @@
    return mem;
 }
 
+static Evas_Object *external_progressbar_content_get(void *data __UNUSED__,
+		const Evas_Object *obj, const char *content)
+{
+	ERR("so content");
+	return NULL;
+}
+
 static void
 external_progressbar_params_free(void *params)
 {
Index: src/edje_externals/elm_notepad.c
===================================================================
--- src/edje_externals/elm_notepad.c	(revision 50519)
+++ src/edje_externals/elm_notepad.c	(working copy)
@@ -37,6 +37,13 @@
    return NULL;
 }
 
+static Evas_Object *external_notepad_content_get(void *data __UNUSED__,
+		const Evas_Object *obj, const char *content)
+{
+	ERR("so content");
+	return NULL;
+}
+
 static void
 external_notepad_params_free(void *params)
 {
Index: src/edje_externals/elm_clock.c
===================================================================
--- src/edje_externals/elm_clock.c	(revision 50519)
+++ src/edje_externals/elm_clock.c	(working copy)
@@ -210,6 +210,13 @@
    return mem;
 }
 
+static Evas_Object *external_clock_content_get(void *data __UNUSED__,
+		const Evas_Object *obj, const char *content)
+{
+	ERR("so content");
+	return NULL;
+}
+
 static void
 external_clock_params_free(void *params)
 {
Index: src/edje_externals/elm_bubble.c
===================================================================
--- src/edje_externals/elm_bubble.c	(revision 50519)
+++ src/edje_externals/elm_bubble.c	(working copy)
@@ -130,6 +130,13 @@
    return mem;
 }
 
+static Evas_Object *external_bubble_content_get(void *data __UNUSED__,
+		const Evas_Object *obj, const char *content)
+{
+	ERR("so content");
+	return NULL;
+}
+
 static void
 external_bubble_params_free(void *params)
 {
Index: src/edje_externals/elm_radio.c
===================================================================
--- src/edje_externals/elm_radio.c	(revision 50519)
+++ src/edje_externals/elm_radio.c	(working copy)
@@ -141,6 +141,13 @@
    return mem;
 }
 
+static Evas_Object *external_radio_content_get(void *data __UNUSED__,
+		const Evas_Object *obj, const char *content)
+{
+	ERR("so content");
+	return NULL;
+}
+
 static void
 external_radio_params_free(void *params)
 {
------------------------------------------------------------------------------
The Palm PDK Hot Apps Program offers developers who use the
Plug-In Development Kit to bring their C/C++ apps to Palm for a share
of $1 Million in cash or HP Products. Visit us here for more details:
http://p.sf.net/sfu/dev2dev-palm
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to