Elementary:
authorJonathan Atton <jonathan.atton@gmail.com>
Sun, 1 Aug 2010 17:29:20 +0000 (17:29 +0000)
committerJonathan Atton <jonathan.atton@gmail.com>
Sun, 1 Aug 2010 17:29:20 +0000 (17:29 +0000)
- we can get the content of a external object
- a signal can be send to the content of a external object

SVN revision: 50731

30 files changed:
src/edje_externals/elm.c
src/edje_externals/elm_anchorblock.c
src/edje_externals/elm_anchorview.c
src/edje_externals/elm_bubble.c
src/edje_externals/elm_button.c
src/edje_externals/elm_check.c
src/edje_externals/elm_clock.c
src/edje_externals/elm_fileselector.c
src/edje_externals/elm_fileselector_button.c
src/edje_externals/elm_genlist.c
src/edje_externals/elm_hoversel.c
src/edje_externals/elm_list.c
src/edje_externals/elm_map.c
src/edje_externals/elm_notepad.c
src/edje_externals/elm_notify.c
src/edje_externals/elm_panes.c
src/edje_externals/elm_photocam.c
src/edje_externals/elm_progressbar.c
src/edje_externals/elm_radio.c
src/edje_externals/elm_scrolled_entry.c
src/edje_externals/elm_slider.c
src/edje_externals/elm_slideshow.c
src/edje_externals/elm_spinner.c
src/edje_externals/elm_thumb.c
src/edje_externals/elm_toggle.c
src/edje_externals/elm_toolbar.c
src/edje_externals/private.h
src/lib/Elementary.h.in
src/lib/elm_notify.c
src/lib/elm_panes.c

index b2a815e5f8f1e49c8fb4e9b82aafeb1252feb1aa..af91e604fccc79b0889f8f59cfdb397cf0a7083f 100644 (file)
@@ -4,9 +4,39 @@
 int _elm_log_dom = -1;
 
 void
-external_signal(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *signal, const char *source)
+external_signal(void *data __UNUSED__, Evas_Object *obj, const char *signal, const char *source)
 {
-   printf("External Signal received: '%s' '%s'\n", signal, source);
+       char *_signal = strdup(signal);
+       char *p = _signal;
+       Evas_Object *content;
+
+       while((*p!='\0') && (*p!=']'))
+               p++;
+
+
+       if((*p=='\0') || (*(p+1)!=':'))
+       {
+               ERR("Invalid External Signal received: '%s' '%s'\n", signal, source);
+               free(_signal);
+               return ;
+       }
+
+       *p = '\0';
+       p+=2; //jump ']' and ':'
+
+       Edje_External_Type *type = evas_object_data_get(obj, "Edje_External_Type");
+       if (!type->content_get)
+       {
+               ERR("external type '%s' from module '%s' does not provide content_get()",
+                               type->module_name, type->module);
+               free(_signal);
+               return ;
+       }
+
+       content = type->content_get(type->data, obj, _signal);
+       free(_signal);
+       if(content)
+               edje_object_signal_emit(content, signal + (p - _signal), source);
 }
 
 const char *
index cb5dc9196addea792090ca7a458d3b9107c8b8e5..0e0c2ebfa78ea4b3e5112b51f9008d59ec81ad4a 100644 (file)
@@ -76,6 +76,13 @@ external_anchorblock_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUS
    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 88ebdff1cef93e3818f27c220e8247b372879eb7..f4f3d9a40820413e6130ba71c6bb0e6e11edd179 100644 (file)
@@ -76,6 +76,13 @@ external_anchorview_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSE
    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 76eae78256064a235ed165ec65b862d7b3ef27c8..f8f0f2da51cb8d294488fb843c0a9795399ce565 100644 (file)
@@ -130,6 +130,13 @@ external_bubble_params_parse(void *data, Evas_Object *obj, const Eina_List *para
    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 5b8395e87ccb14da08ebaffe488ca65ff05f1ebd..329cf45e4c7fc8620ed45c84cc1418e08afa1e7b 100644 (file)
@@ -86,6 +86,13 @@ external_button_params_parse(void *data, Evas_Object *obj, const Eina_List *para
    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 ac167cabf3822894b17fb2ea4fe081785cd1a664..89e4930da4fe5b27df29f932853baed7b8cc369e 100644 (file)
@@ -114,6 +114,13 @@ external_check_params_parse(void *data, Evas_Object *obj, const Eina_List *param
    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 74f08180b20fcde92cb0a1a5c06c8bf892efd0ca..13bda6dad2953c62fe5568f00a6a6876f6cc62b6 100644 (file)
@@ -210,6 +210,13 @@ external_clock_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSED__,
    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 571cd139b58d89e8465199bb411b3f29d9c8e627..c955bc4fe53cbc105b1da9f69dad3a3040149bbd 100644 (file)
@@ -155,6 +155,13 @@ external_fileselector_params_parse(void *data __UNUSED__, Evas_Object *obj __UNU
    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 f4239d33b30398112508b35e58697dff3ab815f1..f17e6bd7df6f45683d856a4211e6058096e6edbe 100644 (file)
@@ -215,6 +215,13 @@ external_fileselector_button_params_parse(void *data, Evas_Object *obj, const Ei
    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 bc3f63433dec1fa564731305c19833d78dbe2b2c..a8b2405f30e46f2a4703a77f63115fdaaf0d6848 100644 (file)
@@ -297,6 +297,13 @@ external_genlist_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSED__
    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 41f0f117dc3cad60c10e823af79732793627fdda..2bc49e0369538dbe8d87b746d9c80a5f7fa5f98d 100644 (file)
@@ -117,6 +117,13 @@ external_hoversel_params_parse(void *data, Evas_Object *obj, const Eina_List *pa
    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 2f6d193106a26f88daf75f5df312b052fb04f2f6..8f782af4f45d75ebdacacd490e6da4aca0866f6c 100644 (file)
@@ -242,6 +242,13 @@ external_list_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSED__, c
    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 13c0592c4e5358452ae4a09b30f4f2fe8d88e5df..3077cf217ee8745205e2e73645ccb7505c785f81 100644 (file)
@@ -172,6 +172,13 @@ external_map_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSED__, co
    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 7eaef04bb4ee32c751997211399b16ac46ba3ca1..a99eeb6c4efa58a17373bd9cc99e26e2dba6050b 100644 (file)
@@ -37,6 +37,13 @@ external_notepad_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSED__
    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 54db41591b3bda319cb9d01c180b24ac84e99714..5ec004b45c51919db78c89fb0a740fbb7a2193d0 100644 (file)
@@ -186,6 +186,16 @@ static void * external_notify_params_parse(void *data, Evas_Object *obj,
        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 e4d18173836795717e72a3bb0b3cc3d3354f3c61..336e7e900f929064e05c04dc3f9ade606796c04d 100644 (file)
@@ -140,6 +140,20 @@ static void * external_panes_params_parse(void *data, Evas_Object *obj,
        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 4cb821d732173409cd1a8f401421042e8ac9dc05..f4b942f2f37692356ac237674ae9a381dc4c91c8 100644 (file)
@@ -175,6 +175,13 @@ external_photocam_params_parse(void *data, Evas_Object *obj, const Eina_List *pa
    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 c289952a52c931b51ed6a436fbdd0b75c0ff09dc..295ce61c669fdfabc2b90c6b08a4b1a1a032ae7a 100644 (file)
@@ -213,6 +213,13 @@ external_progressbar_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUS
    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 bb1298a6ca38e1de25075688d0ee40746e8a0e5c..ab847e457e9e17f38f5504af165229eb14d871be 100644 (file)
@@ -141,6 +141,13 @@ external_radio_params_parse(void *data, Evas_Object *obj, const Eina_List *param
    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)
 {
index 446106a9f0259cac39794f872e59ab483e59134c..f81ca62d1619cc62f3c9768a36a3d2f1a434ad86 100644 (file)
@@ -153,6 +153,13 @@ external_scrolled_entry_params_parse(void *data __UNUSED__, Evas_Object *obj __U
    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 2c82394ccb9073a5a5710892313ff350fc442913..ba76cd4485993aa9d64a6001c511dc58316d3ba6 100644 (file)
@@ -296,6 +296,13 @@ external_slider_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSED__,
    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 783fa851a9c5618edd8090b0fd1f32742089d0d1..23c50a87d1db025c10b2878f49c708354ea97e7f 100644 (file)
@@ -155,6 +155,13 @@ external_slideshow_params_parse(void *data, Evas_Object *obj, const Eina_List *p
    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 ba86ea0f70688238574286477dd099903cdf06d8..e63e45bb2a268db872ca0be5e2b19e4ea4d85a06 100644 (file)
@@ -211,6 +211,13 @@ external_spinner_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSED__
    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 a548cbfc4d410e6a0597677da68d371ba69a5c28..311ecc90e98d8020aca04239f22edd9a25efe641 100644 (file)
@@ -104,6 +104,13 @@ external_thumb_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSED__,
    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 c226b4371b31d6420246f9a4f870db7b1a244fa4..90c4d2c6840ed46d0c1c908a4f1ecc93bb883634 100644 (file)
@@ -176,6 +176,13 @@ external_toggle_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSED__,
    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 a41cb69def53e99c5f5f9549c28b34852995c865..27c6f2442ed0f8d2cc736a89f9da2ed147925f75 100644 (file)
@@ -103,6 +103,13 @@ external_toolbar_params_parse(void *data, Evas_Object *obj, const Eina_List *par
    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 45591b18db60b849d463ae510a348499e1e51c8d..a4b5a889d617a4d75c4d7d3aae3ecf569890f62c 100644 (file)
@@ -39,6 +39,7 @@ const Edje_External_Type external_##type_name##_type = {\
     .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 57c11720871316d89c2b9226cc8add4b6c355b3b..c935880d61dda7807d4a57a5d1e21e2bad737001 100644 (file)
@@ -685,6 +685,7 @@ extern "C" {
    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);
@@ -1506,6 +1507,8 @@ extern "C" {
    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 e92532f86c4442c647ba048da742bee0b0a84a16..9a026dc54f6abb9796bcdd4f927e76667b5cb42f 100644 (file)
@@ -392,6 +392,25 @@ elm_notify_content_unset(Evas_Object *obj)
    return content;
 }
 
+/**
+ * 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
  *
index e5b6edc6bcef58c28f29e758b651904b75da6586..e880f45cf1545fc6f1226f3ba482837c037c7776 100644 (file)
@@ -220,6 +220,21 @@ 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)
+{
+       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);