On Mon, 21 Feb 2011, Atton Jonathan wrote:

> old menu: http://watchwolf.fr/menu1.ogv
> new menu: http://watchwolf.fr/menu2.ogv

with both menu, the app is impressive !

Vincent

>
> 2011/2/21 Enlightenment SVN <no-re...@enlightenment.org>
>
>> Log:
>> enki: replace elm_menu by a edje menu (better for touch screen and small
>> screen)
>>
>>
>>
>> Author:       watchwolf
>> Date:         2011-02-21 11:39:26 -0800 (Mon, 21 Feb 2011)
>> New Revision: 57226
>> Trac:         http://trac.enlightenment.org/e/changeset/57226
>>
>> Added:
>>  trunk/enki/data/themes/default/photo_menu_parts.edc
>> Modified:
>>  trunk/enki/data/themes/default/Makefile.am
>> trunk/enki/data/themes/default/album_header.edc
>> trunk/enki/data/themes/default/default.edc
>> trunk/enki/data/themes/default/main_page.edc
>> trunk/enki/data/themes/default/main_panel.edc
>> trunk/enki/data/themes/default/win_photo_delete.edc
>> trunk/enki/data/themes/default/win_preferences.edc
>> trunk/enki/src/bin/flickr_menu.c trunk/enki/src/bin/inwin.c
>> trunk/enki/src/bin/list_photo.c trunk/enki/src/bin/main.c
>> trunk/enki/src/bin/map.c trunk/enki/src/bin/objects.h
>> trunk/enki/src/bin/photo_menu.c
>>
>> Modified: trunk/enki/data/themes/default/Makefile.am
>> ===================================================================
>> --- trunk/enki/data/themes/default/Makefile.am  2011-02-21 19:19:12 UTC
>> (rev 57225)
>> +++ trunk/enki/data/themes/default/Makefile.am  2011-02-21 19:39:26 UTC
>> (rev 57226)
>> @@ -34,7 +34,8 @@
>>  win_album_tag_new.edc \
>>  win_album_collection_new.edc \
>>  win_photo_delete.edc\
>> -win_library_delete.edc
>> +win_library_delete.edc \
>> +photo_menu_parts.edc
>>        $(EDJE_CC) $(EDJE_FLAGS) default.edc -id ../images/
>>
>>  icondir = $(pkgdatadir)/themes
>>
>> Modified: trunk/enki/data/themes/default/album_header.edc
>> ===================================================================
>> --- trunk/enki/data/themes/default/album_header.edc     2011-02-21 19:19:12
>> UTC (rev 57225)
>> +++ trunk/enki/data/themes/default/album_header.edc     2011-02-21 19:39:26
>> UTC (rev 57226)
>> @@ -51,7 +51,8 @@
>>                 align: 0.0 1.0;
>>
>>                 rel2.to_x: "background";
>> -                rel2.relative: 1.0 1.0;
>> +                rel2.relative: 0.6 1.0;
>> +                rel2.offset: 0 -5;
>>             }
>>         }
>>         part {
>>
>> Modified: trunk/enki/data/themes/default/default.edc
>> ===================================================================
>> --- trunk/enki/data/themes/default/default.edc  2011-02-21 19:19:12 UTC
>> (rev 57225)
>> +++ trunk/enki/data/themes/default/default.edc  2011-02-21 19:39:26 UTC
>> (rev 57226)
>> @@ -92,6 +92,7 @@
>>        #include "win_preferences.edc"
>>        #include "win_photo_delete.edc"
>>        #include "win_library_delete.edc"
>> +
>>
>>        #include "libraries.edc"
>>        #include "map.edc"
>> @@ -101,7 +102,6 @@
>>        #include "list_left.edc"
>>        #include "main_page.edc"
>>
>> -
>>        #include "main.edc"
>>
>>
>>
>> Modified: trunk/enki/data/themes/default/main_page.edc
>> ===================================================================
>> --- trunk/enki/data/themes/default/main_page.edc        2011-02-21 19:19:12
>> UTC (rev 57225)
>> +++ trunk/enki/data/themes/default/main_page.edc        2011-02-21 19:39:26
>> UTC (rev 57226)
>> @@ -16,7 +16,17 @@
>>        //
>>
>>        //
>> -       alias: "object.photos.swallow"
>>  "panes[right]:object.photos.swallow";
>> +       alias: "object.photos.swallow"
>>  "panes[right]:object.photos.swallow";
>> +       alias: "object.photo_menu.tools.reload_thumb"
>> "panes[right]:object.photo_menu.tools.reload_thumb";
>> +       alias: "object.photo_menu.tools.reload_exifs"
>> "panes[right]:object.photo_menu.tools.reload_exifs";
>> +       alias: "object.photo_menu.tools.reload_iptcs"
>> "panes[right]:object.photo_menu.tools.reload_iptcs";
>> +       alias: "object.photo_menu.delete"
>> "panes[right]:object.photo_menu.delete";
>> +       alias: "object.photo_menu.album.move"
>> "panes[right]:object.photo_menu.album.move";
>> +       alias: "object.photo_menu.library.photo.front"
>>  "panes[right]:object.photo_menu.library.photo.front";
>> +       alias: "object.photo_menu.library.photo.back"
>> "panes[right]:object.photo_menu.library.photo.back";
>> +       alias: "object.photo_menu.wallpaper.application"
>> "panes[right]:object.photo_menu.wallpaper.application";
>> +       alias: "object.photo_menu.tags_remove.list"
>> "panes[right]:object.photo_menu.tags_remove.list";
>> +       alias: "object.photo_menu.tags_add.list"
>>  "panes[right]:object.photo_menu.tags_add.list";
>>        //
>>
>>        //list left
>> @@ -68,5 +78,10 @@
>>                transfers_signal("", "list_left,collections,show", "",
>> "panes", "left")
>>                transfers_signal("", "list_left,tags,show", "", "panes",
>> "left")
>>                //
>> +
>> +               //photo menu
>> +               transfers_signal("", "photo,menu,show", "", "panes",
>> "right")
>> +               transfers_signal("", "photo,menu,hide", "", "panes",
>> "right")
>> +               //
>>        }
>>  }
>> \ No newline at end of file
>>
>> Modified: trunk/enki/data/themes/default/main_panel.edc
>> ===================================================================
>> --- trunk/enki/data/themes/default/main_panel.edc       2011-02-21 19:19:12
>> UTC (rev 57225)
>> +++ trunk/enki/data/themes/default/main_panel.edc       2011-02-21 19:39:26
>> UTC (rev 57226)
>> @@ -170,9 +170,13 @@
>>                clip_to: "photos_clipper";
>>             description {
>>                 state : "default" 0.0;
>> +                rel1.to_y: "photo_menu";
>> +                rel1.relative: 0.0 1.0;
>>             }
>>         }
>>
>> +
>> +               #include "photo_menu_parts.edc"
>>        }
>>        programs {
>>                program {
>>
>> Modified: trunk/enki/data/themes/default/win_photo_delete.edc
>> ===================================================================
>> --- trunk/enki/data/themes/default/win_photo_delete.edc 2011-02-21 19:19:12
>> UTC (rev 57225)
>> +++ trunk/enki/data/themes/default/win_photo_delete.edc 2011-02-21 19:39:26
>> UTC (rev 57226)
>> @@ -30,7 +30,7 @@
>>                                rel2.relative: 0.0 0.0;
>>                                align: 0.0 0.0;
>>                                params {
>> -                                       string: "label" "Are you sure you
>> wish to delete these photo(s) ? ";
>> +                                       string: "label" "Are you sure you
>> wish to delete these photos ? ";
>>                                }
>>                        }
>>                }
>> @@ -81,7 +81,7 @@
>>                                rel2.to_y: "object.win.photo.delete.name";
>>                                rel2.relative: 1.0 1.0;
>>                                align: 1.0 1.0;
>> -                               fixed: 1 0;
>> +                               fixed: 1 1;
>>                                params {
>>                                        string: "label" "Apply";
>>                                }
>>
>> Modified: trunk/enki/data/themes/default/win_preferences.edc
>> ===================================================================
>> --- trunk/enki/data/themes/default/win_preferences.edc  2011-02-21 19:19:12
>> UTC (rev 57225)
>> +++ trunk/enki/data/themes/default/win_preferences.edc  2011-02-21 19:39:26
>> UTC (rev 57226)
>> @@ -10,7 +10,8 @@
>>                                state: "default" 0.0;
>>                                align: 0.0 0.0;
>>                                rel1.offset: 5 5;
>> -                               rel2.offset: -20 0;
>> +                               rel2.relative: 0.0 0.0;
>> +                               rel2.offset: 0 0;
>>                                params {
>>                                        string: "label"
>> "<title>Preferences.</title>";
>>                                }
>> @@ -47,7 +48,98 @@
>>                                }
>>                        }
>>                }
>> +
>> +               //libary
>>                part {
>> +                       name: "library_title";
>> +                       type: EXTERNAL;
>> +                       source: "elm/label";
>> +                       description {
>> +                               state: "default" 0.0;
>> +                               align: 0.0 0.0;
>> +                               rel1.to_y:
>> "object.win.preferences.video_software";
>> +                               rel1.relative: 0.0 1.0;
>> +                               rel1.offset: 5 25;
>> +                               rel2.relative: 0.0 0.0;
>> +                               rel2.offset: -20 0;
>> +                               params {
>> +                                       string: "label" "<title>Preferences
>> of the library : </title>";
>> +                               }
>> +                       }
>> +               }
>> +               part {
>> +                       name: "object.win.preferences.library.name";
>> +                       type: EXTERNAL;
>> +                       source: "elm/label";
>> +                       description {
>> +                               state: "default" 0.0;
>> +                               align: 0.0 0.5;
>> +                               rel1.to: "library_title";
>> +                               rel1.relative: 1.0 0.0;
>> +                               rel1.offset: 5 0;
>> +                               rel2.to_y: "library_title";
>> +                               params {
>> +                                       string: "label" "No library
>> selected";
>> +                               }
>> +                       }
>> +               }
>> +               part {
>> +                       name: "lbl_netsync";
>> +                       type: EXTERNAL;
>> +                       source: "elm/label";
>> +                       description {
>> +                               state: "default" 0.0;
>> +                               rel1.to_y: "library_title";
>> +                               rel1.relative: 0.0 1.0;
>> +                               rel1.offset: 20 10;
>> +                               rel2.offset: -20 0;
>> +                               align: 0.5 0.0;
>> +                               params {
>> +                                       string: "label" "Network
>> synchronisation account : ";
>> +                               }
>> +                       }
>> +               }
>> +               part {
>> +                       name:
>> "object.win.preferences.library.netsync.account";
>> +                       type: EXTERNAL;
>> +                       source: "elm/scrolled_entry";
>> +                       description {
>> +                               state: "default" 0.0;
>> +                               rel1.to_y: "lbl_netsync";
>> +                               rel1.offset: 0 5;
>> +                               rel1.relative: 0.05 1.0;
>> +                               align: 0.5 0.0;
>> +                               params {
>> +                                       bool: "single line" 1;
>> +                               }
>> +                       }
>> +               }
>> +
>> +               part {
>> +                       name: "library_no_selected";
>> +                       type: RECT;
>> +                       description {
>> +                               state: "default" 0.0;
>> +                               rel1.to_y: "library_title";
>> +                               rel1.relative: 0.0 1.0;
>> +                               rel1.offset: 0 5;
>> +                               rel2.to_y:
>> "object.win.preferences.library.netsync.account";
>> +                               rel2.relative: 1.0 1.0;
>> +                               rel2.offset: 0 5;
>> +                               color: 0 0 0 0;
>> +                               visible: 0;
>> +                       }
>> +                       description {
>> +                               state: "visible" 0.0;
>> +                               inherit: "default" 0.0;
>> +                               color: 0 0 0 150;
>> +                               visible: 1;
>> +                       }
>> +               }
>> +               //
>> +
>> +
>> +               part {
>>                        name: "object.win.preferences.cancel";
>>                        type: EXTERNAL;
>>                        source: "elm/button";
>> @@ -82,4 +174,18 @@
>>                        }
>>                }
>>        }
>> +       programs {
>> +               program {
>> +                       name: "library_selected";
>> +                       signal: "win,preference,library,selected";
>> +                       action: STATE_SET "default" 0.0;
>> +                       target: "library_no_selected";
>> +               }
>> +               program {
>> +                       name: "library_no_selected";
>> +                       signal: "win,preference,library,no,selected";
>> +                       action: STATE_SET "visible" 0.0;
>> +                       target: "library_no_selected";
>> +               }
>> +       }
>>  }
>>
>> Modified: trunk/enki/src/bin/flickr_menu.c
>> ===================================================================
>> --- trunk/enki/src/bin/flickr_menu.c    2011-02-21 19:19:12 UTC (rev 57225)
>> +++ trunk/enki/src/bin/flickr_menu.c    2011-02-21 19:39:26 UTC (rev 57226)
>> @@ -44,14 +44,14 @@
>>     if(menu) evas_object_del(menu);
>>
>>     menu = elm_menu_add(enlil_data->win->win);
>> -    if(!enlil_library_flickr_account_get(enlil_data->library))
>> +    if(!enlil_library_netsync_account_get(enlil_data->library))
>>     {
>>         elm_menu_item_add(menu, NULL, NULL, D_("Set the Flickr account"),
>> _account_set_cb, NULL);
>>     }
>>     else
>>     {
>>         snprintf(buf, PATH_MAX, D_("Flickr account : %s"),
>> -                enlil_library_flickr_account_get(enlil_data->library));
>> +                enlil_library_netsync_account_get(enlil_data->library));
>>         elm_menu_item_add(menu, NULL, NULL, buf, NULL, NULL);
>>         elm_menu_item_add(menu, NULL, NULL, D_("Change the Flickr
>> account"), _account_set_cb, NULL);
>>     }
>> @@ -188,7 +188,7 @@
>>  {
>>     if(enlil_data->library)
>>     {
>> -        enlil_library_flickr_account_set(enlil_data->library,
>> elm_entry_entry_get(data));
>> +        enlil_library_netsync_account_set(enlil_data->library,
>> elm_entry_entry_get(data));
>>         enlil_library_flickr_auth_token_set(enlil_data->library, NULL);
>>         enlil_flickr_job_reinit_prepend(enlil_data->library);
>>     }
>>
>> Modified: trunk/enki/src/bin/inwin.c
>> ===================================================================
>> --- trunk/enki/src/bin/inwin.c  2011-02-21 19:19:12 UTC (rev 57225)
>> +++ trunk/enki/src/bin/inwin.c  2011-02-21 19:39:26 UTC (rev 57226)
>> @@ -609,7 +609,7 @@
>>
>>  Inwin *inwin_preferences_new()
>>  {
>> -       Evas_Object *bt, *ly;
>> +       Evas_Object *bt, *ly, *lbl;
>>
>>        Inwin *inwin = calloc(1, sizeof(Inwin));
>>        inwin->type = INWIN_PREFERENCES;
>> @@ -627,6 +627,23 @@
>>        inwin->entry = edje_object_part_external_object_get(edje,
>> "object.win.preferences.video_software");
>>        elm_scrolled_entry_entry_set(inwin->entry, media_player);
>>
>> +
>> +       //library
>> +       if(enlil_data->library)
>> +       {
>> +               edje_object_signal_emit(edje,
>> "win,preference,library,selected", "");
>> +
>> +               lbl = edje_object_part_external_object_get(edje, "
>> object.win.preferences.library.name");
>> +               elm_label_label_set(lbl,
>> enlil_library_path_get(enlil_data->library));
>> +
>> +               inwin->entry2 = edje_object_part_external_object_get(edje,
>> "object.win.preferences.library.netsync.account");
>> +               elm_scrolled_entry_entry_set(inwin->entry2,
>> enlil_library_netsync_account_get(enlil_data->library));
>> +       }
>> +       else
>> +               edje_object_signal_emit(edje,
>> "win,preference,library,no,selected", "");
>> +       //
>> +
>> +
>>        bt = edje_object_part_external_object_get(edje,
>> "object.win.preferences.cancel");
>>        evas_object_smart_callback_add(bt, "clicked",
>> _bt_preferences_cancel_cb, inwin);
>>
>> @@ -772,6 +789,13 @@
>>                eina_stringshare_del(string.string);
>>        }
>>
>> +       if(enlil_data->library)
>> +       {
>> +               s = elm_scrolled_entry_entry_get(inwin->entry2);
>> +               enlil_library_netsync_account_set(enlil_data->library, s);
>> +
>> enlil_netsync_account_set(enlil_library_netsync_account_get(enlil_data->library));
>> +       }
>> +
>>        inwin_free(inwin);
>>  }
>>
>>
>> Modified: trunk/enki/src/bin/list_photo.c
>> ===================================================================
>> --- trunk/enki/src/bin/list_photo.c     2011-02-21 19:19:12 UTC (rev 57225)
>> +++ trunk/enki/src/bin/list_photo.c     2011-02-21 19:39:26 UTC (rev 57226)
>> @@ -24,11 +24,16 @@
>>  static void _album_sync_flickr_cb(void *data, Evas *e, Evas_Object *obj,
>> void *event_info);
>>  static void _photo_sync_flickr_cb(void *data, Evas *e, Evas_Object *obj,
>> void *event_info);
>>
>> +static Evas_Object *_edje;
>> +
>> +
>>  List_Photo *list_photo_new(Evas_Object *edje)
>>  {
>>    Evas_Object *bx, *sl, *bx2, *lbl, *bt, *tg;
>>    List_Photo *enlil_photo = calloc(1, sizeof(List_Photo));
>>
>> +   _edje = edje;
>> +
>>    enlil_photo->photo_w = DEFAULT_W;
>>    enlil_photo->photo_h = DEFAULT_H;
>>
>> @@ -362,25 +367,10 @@
>>
>>  static void _right_click(void *data, Evas_Object *obj, void *event_info)
>>  {
>> -   int x, y;
>> -   Enlil_Photo *photo = event_info;
>> -   PL_Child_Item *child;
>> -   Eina_List *l, *photos = NULL;
>> -   Enlil_Photo_Data *photo_data = enlil_photo_user_data_get(photo);
>> -
>> -
>> EINA_LIST_FOREACH(photos_list_object_selected_get(enlil_data->list_photo->o_list),
>> l, child)
>> -       photos = eina_list_append(photos,
>> photos_list_object_item_data_get(child));
>> -
>> -   evas_pointer_output_xy_get(evas_object_evas_get(obj), &x, &y);
>> -   Photo_Menu *photo_menu =
>> photo_menu_new(photo_data->enlil_data->win->win, photo, photos);
>> -   elm_menu_move(photo_menu->menu, x, y);
>> -
>> -   Evas_Object *menu = edje_object_part_external_object_get(global_object,
>> "object.photo.menu");
>> -   printf("%p\n", menu);
>> -   evas_object_show(menu);
>> +   photo_menu_init(enlil_data->list_photo, _edje);
>> +   edje_object_signal_emit(_edje, "photo,menu,show", "");
>>  }
>>
>> -
>>  static void _collection_cb(void *data, Evas_Object *obj, void *event_info)
>>  {
>>    Enlil_Album *album = data;
>>
>> Modified: trunk/enki/src/bin/main.c
>> ===================================================================
>> --- trunk/enki/src/bin/main.c   2011-02-21 19:19:12 UTC (rev 57225)
>> +++ trunk/enki/src/bin/main.c   2011-02-21 19:39:26 UTC (rev 57226)
>> @@ -166,6 +166,10 @@
>>        enlil_load_run(load);
>>        //
>>
>> +       //netsync
>> +
>> enlil_netsync_account_set(enlil_library_netsync_account_get(library));
>> +       //
>> +
>>        //the background
>>        Enlil_String *s;
>>        Eet_Data_Descriptor *edd;
>>
>> Modified: trunk/enki/src/bin/map.c
>> ===================================================================
>> --- trunk/enki/src/bin/map.c    2011-02-21 19:19:12 UTC (rev 57225)
>> +++ trunk/enki/src/bin/map.c    2011-02-21 19:39:26 UTC (rev 57226)
>> @@ -351,16 +351,16 @@
>>
>>  static void _menu(void *data, Evas_Object *obj, void *event_info)
>>  {
>> -   int x, y;
>> -   Enlil_Photo *photo = data;
>> -   Eina_List *photos = NULL;
>> -   Enlil_Photo_Data *photo_data = enlil_photo_user_data_get(photo);
>> -
>> -   photos = eina_list_append(photos, photo);
>> -
>> -   evas_pointer_output_xy_get(evas_object_evas_get(obj), &x, &y);
>> -   Photo_Menu *photo_menu =
>> photo_menu_new(photo_data->enlil_data->win->win, photo, photos);
>> -   elm_menu_move(photo_menu->menu, x, y);
>> +//   int x, y;
>> +//   Enlil_Photo *photo = data;
>> +//   Eina_List *photos = NULL;
>> +//   Enlil_Photo_Data *photo_data = enlil_photo_user_data_get(photo);
>> +//
>> +//   photos = eina_list_append(photos, photo);
>> +//
>> +//   evas_pointer_output_xy_get(evas_object_evas_get(obj), &x, &y);
>> +//   Photo_Menu *photo_menu =
>> photo_menu_new(photo_data->enlil_data->win->win, photo, photos);
>> +//   elm_menu_move(photo_menu->menu, x, y);
>>  }
>>
>>  static void _tg_geocaching_changed_cb(void *data, Evas_Object *obj, void
>> *event_info)
>>
>> Modified: trunk/enki/src/bin/objects.h
>> ===================================================================
>> --- trunk/enki/src/bin/objects.h        2011-02-21 19:19:12 UTC (rev 57225)
>> +++ trunk/enki/src/bin/objects.h        2011-02-21 19:39:26 UTC (rev 57226)
>> @@ -218,6 +218,7 @@
>>
>>    Evas_Object *gl;
>>    Evas_Object *entry;
>> +   Evas_Object *entry2;
>>    Evas_Object *bt_apply;
>>    Evas_Object *check;
>>
>> @@ -248,6 +249,7 @@
>>
>>  Photo_Menu *photo_tag_menu_new(Evas_Object *parent, Enlil_Photo *photo);
>>  Photo_Menu *photo_menu_new(Evas_Object *parent, Enlil_Photo *photo,
>> Eina_List *photos);
>> +void photo_menu_init(List_Photo *enlil_photo, Evas_Object *edje);
>>  void photo_menu_free(Photo_Menu *photo_menu);
>>
>>
>>
>> Modified: trunk/enki/src/bin/photo_menu.c
>> ===================================================================
>> --- trunk/enki/src/bin/photo_menu.c     2011-02-21 19:19:12 UTC (rev 57225)
>> +++ trunk/enki/src/bin/photo_menu.c     2011-02-21 19:39:26 UTC (rev 57226)
>> @@ -1,6 +1,6 @@
>>  #include "main.h"
>> +#include "objects.h"
>>
>> -static void _menu_dismiss_cb(void *data, Evas_Object *obj, void
>> *event_info);
>>  static void _tag_photo_add_cb(void *data, Evas_Object *obj, void
>> *event_info);
>>  static void _tag_photo_remove_cb(void *data, Evas_Object *obj, void
>> *event_info);
>>  static void _tag_new_cb(void *data, Evas_Object *obj, void *event_info);
>> @@ -15,279 +15,324 @@
>>  static void _library_photo2_set_cb(void *data, Evas_Object *obj, void
>> *event_info);
>>  static void _inwin_del_cb(void *data);
>>
>> -Photo_Menu *photo_menu_new(Evas_Object *parent, Enlil_Photo *photo,
>> Eina_List *photos)
>> -{
>> -   Evas_Object *menu;
>> -   Elm_Menu_Item *mi = NULL;
>> -   const Eina_List *l, *_l;
>> -   const Enlil_Tag *tag;
>> -   Enlil_Photo *_photo;
>> -   Eina_Bool empty = EINA_TRUE;
>> -   Photo_Menu * am = calloc(1, sizeof(Photo_Menu));
>> -   am->photo = photo;
>> -   am->photos = photos;
>> +Evas_Object *_edje;
>>
>> -   menu = elm_menu_add(parent);
>> -   evas_object_smart_callback_add(menu, "clicked", _menu_dismiss_cb, am);
>> -   am->menu = menu;
>> +static Eina_Bool _init = EINA_FALSE;
>>
>> -   mi = elm_menu_item_add(menu, NULL, NULL, D_("Remove the tag"), NULL,
>> NULL);
>> +void photo_menu_init(List_Photo *enlil_photo, Evas_Object *edje)
>> +{
>> +       Evas_Object *bt;
>> +       Eina_List *photos = NULL, *l, *_l;
>> +       PL_Child_Item *child;
>> +       Enlil_Photo *photo, *_photo;
>> +       Enlil_Tag *tag;
>> +       Elm_List_Item *item;
>> +       Eina_Bool empty;
>>
>> -   Enlil_Album *album = enlil_photo_album_get(eina_list_data_get(photos));
>> -
>> EINA_LIST_FOREACH(enlil_library_tags_get(enlil_album_library_get(album)),l,
>> tag)
>> -     {
>> -       Eina_Bool find = EINA_FALSE;
>> -       EINA_LIST_FOREACH(photos, _l, _photo)
>> -         {
>> -            if(eina_list_data_find(enlil_tag_photos_get(tag), _photo))
>> -              {
>> -                 find = EINA_TRUE;
>> -                 break;
>> -              }
>> -         }
>> -       if(find)
>> -         {
>> -            elm_menu_item_add(menu, mi, NULL, enlil_tag_name_get(tag),
>> _tag_photo_remove_cb, am);
>> -            empty = EINA_FALSE;
>> -         }
>> -     }
>> +       _edje = edje;
>>
>> -   if(empty)
>> -      elm_menu_item_add(menu, mi, NULL, D_("Empty"), NULL, NULL);
>> +       //build the list of selected photos
>> +
>> EINA_LIST_FOREACH(photos_list_object_selected_get(enlil_photo->o_list), l,
>> child)
>> +       {
>> +               photo = photos_list_object_item_data_get(child);
>> +               photos = eina_list_append(photos, photo);
>> +       }
>> +       //
>>
>> -   mi = elm_menu_item_add(menu, NULL, NULL, D_("Add the tag"), NULL,
>> NULL);
>> -   elm_menu_item_add(menu, mi, NULL, D_("New tag"), _tag_new_cb, am);
>> -   elm_menu_item_separator_add(menu, mi);
>> +       if(!_init)
>> +       {
>> +               _init = EINA_TRUE;
>> +               bt = edje_object_part_external_object_get(edje,
>> "object.photo_menu.tools.reload_thumb");
>> +               evas_object_smart_callback_add(bt, "clicked",
>> _photo_thumb_reload_cb, enlil_photo);
>>
>> -
>> EINA_LIST_FOREACH(enlil_library_tags_get(enlil_album_library_get(album)), l,
>> tag)
>> -   {
>> -      Eina_Bool find = EINA_TRUE;
>> -      EINA_LIST_FOREACH(photos, _l, _photo)
>> -      {
>> -        if(!eina_list_data_find(enlil_tag_photos_get(tag), _photo))
>> -        {
>> -           find = EINA_FALSE;
>> -           break;
>> -        }
>> -      }
>> -      if(!find)
>> -        elm_menu_item_add(menu, mi, NULL, enlil_tag_name_get(tag),
>> _tag_photo_add_cb, am);
>> -   }
>> +               bt = edje_object_part_external_object_get(edje,
>> "object.photo_menu.tools.reload_exifs");
>> +               evas_object_smart_callback_add(bt, "clicked",
>> _photo_exif_reload_cb, enlil_photo);
>>
>> -   if(enlil_photo_type_get(photo) == ENLIL_PHOTO_TYPE_PHOTO)
>> -     {
>> -       elm_menu_item_separator_add(menu, NULL);
>> -       mi = elm_menu_item_add(menu, NULL, NULL, D_("Set as wallpaper"),
>> NULL, NULL);
>> -       elm_menu_item_add(menu, mi, NULL, D_("To the application"),
>> _wall_app_set_cb, am);
>> +               bt = edje_object_part_external_object_get(edje,
>> "object.photo_menu.tools.reload_iptcs");
>> +               evas_object_smart_callback_add(bt, "clicked",
>> _photo_iptc_reload_cb, enlil_photo);
>>
>> +               bt = edje_object_part_external_object_get(edje,
>> "object.photo_menu.wallpaper.application");
>> +               evas_object_smart_callback_add(bt, "clicked",
>> _wall_app_set_cb, enlil_photo);
>>
>> -       mi = elm_menu_item_add(menu, NULL, NULL, D_("Set as library's
>> photo"), NULL, NULL);
>> -       elm_menu_item_add(menu, mi, NULL, D_("Front photo"),
>> _library_photo1_set_cb, am);
>> -       elm_menu_item_add(menu, mi, NULL, D_("Back photo"),
>> _library_photo2_set_cb, am);
>> -     }
>> +               bt = edje_object_part_external_object_get(edje,
>> "object.photo_menu.delete");
>> +               evas_object_smart_callback_add(bt, "clicked",
>> _photo_delete_cb, enlil_photo);
>>
>> +               bt = edje_object_part_external_object_get(edje,
>> "object.photo_menu.album.move");
>> +               evas_object_smart_callback_add(bt, "clicked",
>> _photo_move_album_list_cb, enlil_photo);
>>
>> -   elm_menu_item_separator_add(menu, NULL);
>> -   mi = elm_menu_item_add(menu, NULL, NULL, D_("Move to the album"), NULL,
>> NULL);
>> +               bt = edje_object_part_external_object_get(edje,
>> "object.photo_menu.library.photo.front");
>> +               evas_object_smart_callback_add(bt, "clicked",
>> _library_photo1_set_cb, enlil_photo);
>>
>> -   int i= 0;
>> -
>> EINA_LIST_FOREACH(enlil_library_albums_get(enlil_album_library_get(enlil_photo_album_get(photo))),
>> l, album)
>> -     {
>> -        Elm_Menu_Item *mi2;
>> -        if(album != enlil_photo_album_get(photo))
>> -          mi2 = elm_menu_item_add(menu, mi, NULL,
>> enlil_album_name_get(album), _photo_move_album_cb, am);
>> -        if(++i>15)
>> -          {
>> -              mi2 = elm_menu_item_add(menu, mi, NULL, D_("..."),
>> _photo_move_album_list_cb, am);
>> -              break;
>> -          }
>> -     }
>> +               bt = edje_object_part_external_object_get(edje,
>> "object.photo_menu.library.photo.back");
>> +               evas_object_smart_callback_add(bt, "clicked",
>> _library_photo2_set_cb, enlil_photo);
>> +       }
>>
>> +       //tags to remove
>> +       bt = edje_object_part_external_object_get(edje,
>> "object.photo_menu.tags_remove.list");
>> +       elm_list_clear(bt);
>> +       Enlil_Album *album =
>> enlil_photo_album_get(eina_list_data_get(photos));
>> +       empty = EINA_TRUE;
>> +
>> EINA_LIST_FOREACH(enlil_library_tags_get(enlil_album_library_get(album)),l,
>> tag)
>> +       {
>> +               Eina_Bool find = EINA_FALSE;
>> +               EINA_LIST_FOREACH(photos, _l, _photo)
>> +               {
>> +                       if(eina_list_data_find(enlil_tag_photos_get(tag),
>> _photo))
>> +                       {
>> +                               find = EINA_TRUE;
>> +                               break;
>> +                       }
>> +               }
>> +               if(find)
>> +               {
>> +                       elm_list_item_append(bt, enlil_tag_name_get(tag),
>> NULL, NULL, _tag_photo_remove_cb, enlil_photo);
>> +                       empty = EINA_FALSE;
>> +               }
>> +       }
>> +       if(empty)
>> +               elm_list_item_append(bt, D_("No tags"), NULL, NULL, NULL,
>> NULL);
>> +       elm_list_go(bt);
>> +       //
>>
>> -   elm_menu_item_separator_add(menu, NULL);
>> -   mi = elm_menu_item_add(menu, NULL, NULL, D_("Recreate the thumbnail"),
>> _photo_thumb_reload_cb, am);
>> -   elm_menu_item_add(menu, NULL, NULL, D_("Reload the exifs data"),
>> _photo_exif_reload_cb, am);
>> -   elm_menu_item_add(menu, NULL, NULL, D_("Reload the IPTC data"),
>> _photo_iptc_reload_cb, am);
>> +       //add tags
>> +       bt = edje_object_part_external_object_get(edje,
>> "object.photo_menu.tags_add.list");
>> +       elm_list_clear(bt);
>> +       elm_list_item_append(bt, D_("New tag"), NULL, NULL, _tag_new_cb,
>> enlil_photo);
>>
>> -   elm_menu_item_separator_add(menu, NULL);
>> -   if(enlil_photo_type_get(photo) == ENLIL_PHOTO_TYPE_PHOTO)
>> -     mi = elm_menu_item_add(menu, NULL, NULL, D_("Delete the photo"),
>> _photo_delete_cb, am);
>> -   else
>> -     mi = elm_menu_item_add(menu, NULL, NULL, D_("Delete the video"),
>> _photo_delete_cb, am);
>> +
>> EINA_LIST_FOREACH(enlil_library_tags_get(enlil_album_library_get(album)), l,
>> tag)
>> +       {
>> +               Eina_Bool find = EINA_TRUE;
>> +               EINA_LIST_FOREACH(photos, _l, _photo)
>> +               {
>> +                       if(!eina_list_data_find(enlil_tag_photos_get(tag),
>> _photo))
>> +                       {
>> +                               find = EINA_FALSE;
>> +                               break;
>> +                       }
>> +               }
>> +               if(!find)
>> +                       elm_list_item_append(bt, enlil_tag_name_get(tag),
>> NULL, NULL, _tag_photo_add_cb, enlil_photo);
>> +       }
>> +       elm_list_go(bt);
>> +       //
>>
>> -   evas_object_show(menu);
>> -   return am;
>> +       eina_list_free(photos);
>>  }
>>
>> -static void _menu_dismiss_cb(void *data, Evas_Object *obj, void
>> *event_info)
>> -{
>> -   Photo_Menu *menu = data;
>> -   photo_menu_free(menu);
>> -}
>>
>>  static void _tag_photo_add_cb(void *data, Evas_Object *obj, void
>> *event_info)
>>  {
>> -   Photo_Menu *am = data;
>> -   Elm_Menu_Item *mi = event_info;
>> -   Eina_List *l;
>> -   Enlil_Photo *photo;
>> +       List_Photo *enlil_photo = data;
>> +       Eina_List *l;
>> +       PL_Child_Item *child;
>> +       Enlil_Photo *photo;
>>
>> -   EINA_LIST_FOREACH(am->photos, l, photo)
>> -      enlil_photo_tag_add(photo, elm_menu_item_label_get(mi));
>> +       //build the list of selected photos
>> +
>> EINA_LIST_FOREACH(photos_list_object_selected_get(enlil_photo->o_list), l,
>> child)
>> +       {
>> +               photo = photos_list_object_item_data_get(child);
>> +               enlil_photo_tag_add(photo,
>> elm_list_item_label_get(elm_list_selected_item_get(obj)));
>> +       }
>>
>> -   photo_menu_free(am);
>> +       photo_menu_init(enlil_photo, _edje);
>>  }
>>
>>  static void _tag_photo_remove_cb(void *data, Evas_Object *obj, void
>> *event_info)
>>  {
>> -   Photo_Menu *am = data;
>> -   Elm_Menu_Item *mi = event_info;
>> -   const Eina_List *l, *l2;
>> -   Enlil_Photo_Tag *tag_col;
>> -   Enlil_Photo *photo;
>> +       List_Photo *enlil_photo = data;
>> +       const Eina_List *l, *l2;
>> +       Enlil_Photo_Tag *tag_col;
>> +       PL_Child_Item *child;
>> +       Enlil_Photo *photo;
>>
>> -   EINA_LIST_FOREACH(am->photos, l, photo)
>> -     {
>> -       EINA_LIST_FOREACH(enlil_photo_tags_get(photo), l2, tag_col)
>> -         {
>> -            if(tag_col->name == elm_menu_item_label_get(mi))
>> -              break;
>> -         }
>> -       if(tag_col)
>> -         enlil_photo_tag_remove(photo, tag_col);
>> -     }
>> +
>> EINA_LIST_FOREACH(photos_list_object_selected_get(enlil_photo->o_list), l,
>> child)
>> +       {
>> +               photo = photos_list_object_item_data_get(child);
>> +               EINA_LIST_FOREACH(enlil_photo_tags_get(photo), l2, tag_col)
>> +                         {
>> +                       if(tag_col->name ==
>> elm_list_item_label_get(elm_list_selected_item_get(obj)))
>> +                               break;
>> +                         }
>> +               if(tag_col)
>> +                       enlil_photo_tag_remove(photo, tag_col);
>> +       }
>>
>> -   photo_menu_free(am);
>> +       photo_menu_init(enlil_photo, _edje);
>>  }
>>
>>  static void _tag_new_cb(void *data, Evas_Object *obj, void *event_info)
>>  {
>> -   Photo_Menu *photo_menu = data;
>> -   inwin_tag_new_new(_inwin_del_cb, photo_menu, photo_menu->photos);
>> +       List_Photo *enlil_photo = data;
>> +       Eina_List *photos = NULL, *l;
>> +       PL_Child_Item *child;
>> +       Enlil_Photo *photo;
>> +
>> +       //build the list of selected photos
>> +
>> EINA_LIST_FOREACH(photos_list_object_selected_get(enlil_photo->o_list), l,
>> child)
>> +       {
>> +               photo = photos_list_object_item_data_get(child);
>> +               photos = eina_list_append(photos, photo);
>> +       }
>> +       //
>> +       inwin_tag_new_new(_inwin_del_cb, photos, photos);
>>  }
>>
>>  static void _photo_move_album_list_cb(void *data, Evas_Object *obj, void
>> *event_info)
>>  {
>> -   Photo_Menu *photo_menu = data;
>> -   inwin_photo_move_album_new(_inwin_del_cb, photo_menu,
>> photo_menu->photos);
>> +       List_Photo *enlil_photo = data;
>> +       Eina_List *photos = NULL, *l;
>> +       PL_Child_Item *child;
>> +       Enlil_Photo *photo;
>> +
>> +       //build the list of selected photos
>> +
>> EINA_LIST_FOREACH(photos_list_object_selected_get(enlil_photo->o_list), l,
>> child)
>> +       {
>> +               photo = photos_list_object_item_data_get(child);
>> +               photos = eina_list_append(photos, photo);
>> +       }
>> +       //
>> +       inwin_photo_move_album_new(_inwin_del_cb, photos, photos);
>>  }
>>
>> -static void _photo_move_album_cb(void *data, Evas_Object *obj, void
>> *event_info)
>> -{
>> -   Photo_Menu *photo_menu = data;
>> -   Elm_Menu_Item *mi = event_info;
>> -   char buf[PATH_MAX], buf2[PATH_MAX];
>> -   Eina_List *l;
>> -   Enlil_Photo *photo;
>>
>> -   EINA_LIST_FOREACH(photo_menu->photos, l, photo)
>> -     {
>> -       Enlil_Album *album =
>> enlil_library_album_search_name(enlil_album_library_get(enlil_photo_album_get(photo)),
>> -             elm_menu_item_label_get(mi));
>> -       ASSERT_RETURN_VOID(album != NULL);
>> -
>> -       snprintf(buf, PATH_MAX, "%s/%s", enlil_photo_path_get(photo),
>> -             enlil_photo_file_name_get(photo));
>> -
>> -       snprintf(buf2, PATH_MAX, "%s/%s/%s", enlil_album_path_get(album),
>> enlil_album_file_name_get(album),
>> -             enlil_photo_file_name_get(photo));
>> -
>> -       ecore_file_mv(buf, buf2);
>> -     }
>> -}
>> -
>>  static void _photo_delete_cb(void *data, Evas_Object *obj, void
>> *event_info)
>>  {
>> -   Photo_Menu *photo_menu = data;
>> -   inwin_photo_delete_new(enlil_data->win->win, _inwin_del_cb, photo_menu,
>> photo_menu->photos);
>> +       List_Photo *enlil_photo = data;
>> +       Eina_List *photos = NULL, *l;
>> +       PL_Child_Item *child;
>> +       Enlil_Photo *photo;
>> +
>> +       //build the list of selected photos
>> +
>> EINA_LIST_FOREACH(photos_list_object_selected_get(enlil_photo->o_list), l,
>> child)
>> +       {
>> +               photo = photos_list_object_item_data_get(child);
>> +               photos = eina_list_append(photos, photo);
>> +       }
>> +       //
>> +       inwin_photo_delete_new(enlil_data->win->win, _inwin_del_cb, photos,
>> photos);
>>  }
>>
>>  static void _photo_thumb_reload_cb(void *data, Evas_Object *obj, void
>> *event_info)
>>  {
>> -   Photo_Menu *photo_menu = data;
>> -   Eina_List *l;
>> -   Enlil_Photo_Data *photo_data;
>> -   Enlil_Photo *photo;
>> +       List_Photo *enlil_photo = data;
>> +       PL_Child_Item *child;
>> +       Eina_List *l;
>>
>> -   EINA_LIST_FOREACH(photo_menu->photos, l, photo)
>> -     {
>> -       photo_data = enlil_photo_user_data_get(photo);
>> -       enlil_photo_thumb_fdo_normal_set(photo, NULL);
>> -       enlil_photo_thumb_fdo_large_set(photo, NULL);
>> -       photos_list_object_item_update(photo_data->list_photo_item);
>> -       map_photo_update(enlil_data->map, photo);
>> -     }
>> +       Enlil_Photo_Data *photo_data;
>> +       Enlil_Photo *photo;
>> +
>> +
>> EINA_LIST_FOREACH(photos_list_object_selected_get(enlil_photo->o_list), l,
>> child)
>> +       {
>> +               photo = photos_list_object_item_data_get(child);
>> +               photo_data = enlil_photo_user_data_get(photo);
>> +               enlil_photo_thumb_fdo_normal_set(photo, NULL);
>> +               enlil_photo_thumb_fdo_large_set(photo, NULL);
>> +
>> photos_list_object_item_update(photo_data->list_photo_item);
>> +               map_photo_update(enlil_data->map, photo);
>> +       }
>>  }
>>
>>  static void _photo_exif_reload_cb(void *data, Evas_Object *obj, void
>> *event_info)
>>  {
>> -   Photo_Menu *photo_menu = data;
>> -   Eina_List *l;
>> -   Enlil_Photo *photo;
>> +       List_Photo *enlil_photo = data;
>> +       Eina_List *l;
>> +       Enlil_Photo *photo;
>> +       PL_Child_Item *child;
>>
>> -   EINA_LIST_FOREACH(photo_menu->photos, l, photo)
>> -     {
>> -       enlil_exif_job_prepend(photo, exif_load_done, photo);
>> -     }
>> +
>> EINA_LIST_FOREACH(photos_list_object_selected_get(enlil_photo->o_list), l,
>> child)
>> +       {
>> +               photo = photos_list_object_item_data_get(child);
>> +               enlil_exif_job_prepend(photo, exif_load_done, photo);
>> +       }
>>  }
>>
>>  static void _photo_iptc_reload_cb(void *data, Evas_Object *obj, void
>> *event_info)
>>  {
>> -   Photo_Menu *photo_menu = data;
>> -   Eina_List *l;
>> -   Enlil_Photo *photo;
>> +       List_Photo *enlil_photo = data;
>> +       Eina_List *l;
>> +       Enlil_Photo *photo;
>> +       PL_Child_Item *child;
>>
>> -   EINA_LIST_FOREACH(photo_menu->photos, l, photo)
>> -     {
>> -       enlil_iptc_job_prepend(photo, iptc_load_done, photo);
>> -     }
>> +
>> EINA_LIST_FOREACH(photos_list_object_selected_get(enlil_photo->o_list), l,
>> child)
>> +       {
>> +               photo = photos_list_object_item_data_get(child);
>> +               enlil_iptc_job_prepend(photo, iptc_load_done, photo);
>> +       }
>>  }
>>
>>  static void _wall_app_set_cb(void *data, Evas_Object *obj, void
>> *event_info)
>>  {
>> -   Photo_Menu *photo_menu = data;
>> -   char buf[PATH_MAX];
>> -   Enlil_String s;
>> -   Eet_Data_Descriptor *edd;
>> +       char buf[PATH_MAX];
>> +       Enlil_String s;
>> +       Eet_Data_Descriptor *edd;
>> +       List_Photo *enlil_photo = data;
>> +       Eina_List *l;
>> +       Enlil_Photo *photo;
>> +       PL_Child_Item *child;
>>
>> -   snprintf(buf, PATH_MAX, "%s/%s",
>> enlil_photo_path_get(photo_menu->photo),
>> -        enlil_photo_file_name_get(photo_menu->photo));
>> -   enlil_win_bg_set(enlil_data->win, buf);
>> +
>> EINA_LIST_FOREACH(photos_list_object_selected_get(enlil_photo->o_list), l,
>> child)
>> +       {
>> +               photo = photos_list_object_item_data_get(child);
>> +               snprintf(buf, PATH_MAX, "%s/%s",
>> enlil_photo_path_get(photo),
>> +                               enlil_photo_file_name_get(photo));
>> +               enlil_win_bg_set(enlil_data->win, buf);
>>
>> -   s.string = eina_stringshare_add(buf);
>> -   edd = enlil_string_edd_new();
>> +               s.string = eina_stringshare_add(buf);
>> +               edd = enlil_string_edd_new();
>>
>> -   snprintf(buf, PATH_MAX, "%s %s", APP_NAME" background",
>> enlil_library_path_get(enlil_data->library));
>> -   enlil_eet_app_data_save(edd, buf, &s);
>> -   eet_data_descriptor_free(edd);
>> -   eina_stringshare_del(s.string);
>> +               snprintf(buf, PATH_MAX, "%s %s", APP_NAME" background",
>> enlil_library_path_get(enlil_data->library));
>> +               enlil_eet_app_data_save(edd, buf, &s);
>> +               eet_data_descriptor_free(edd);
>> +               eina_stringshare_del(s.string);
>> +               break;
>> +       }
>>  }
>>
>>  static void _library_photo1_set_cb(void *data, Evas_Object *obj, void
>> *event_info)
>>  {
>> -   Photo_Menu *photo_menu = data;
>> -   enlil_library_photo_set(enlil_data->library, photo_menu->photo, 1);
>> -   main_menu_update_libraries_list();
>> +       List_Photo *enlil_photo = data;
>> +       Eina_List *l;
>> +       Enlil_Photo *photo;
>> +       PL_Child_Item *child;
>> +
>> +
>> EINA_LIST_FOREACH(photos_list_object_selected_get(enlil_photo->o_list), l,
>> child)
>> +       {
>> +               photo = photos_list_object_item_data_get(child);
>> +               enlil_library_photo_set(enlil_data->library, photo, 1);
>> +               break;
>> +       }
>> +       main_menu_update_libraries_list();
>>  }
>>
>>  static void _library_photo2_set_cb(void *data, Evas_Object *obj, void
>> *event_info)
>>  {
>> -   Photo_Menu *photo_menu = data;
>> -   enlil_library_photo_set(enlil_data->library, photo_menu->photo, 2);
>> -   main_menu_update_libraries_list();
>> +       List_Photo *enlil_photo = data;
>> +       Eina_List *l;
>> +       Enlil_Photo *photo;
>> +       PL_Child_Item *child;
>> +
>> +
>> EINA_LIST_FOREACH(photos_list_object_selected_get(enlil_photo->o_list), l,
>> child)
>> +       {
>> +               photo = photos_list_object_item_data_get(child);
>> +               enlil_library_photo_set(enlil_data->library, photo, 2);
>> +               break;
>> +       }
>> +       main_menu_update_libraries_list();
>>  }
>>
>>  void photo_menu_free(Photo_Menu *photo_menu)
>>  {
>> -   ASSERT_RETURN_VOID(photo_menu != NULL);
>> +       ASSERT_RETURN_VOID(photo_menu != NULL);
>>
>> -   if(photo_menu->photos)
>> -     eina_list_free(photo_menu->photos);
>> -   evas_object_del(photo_menu->menu);
>> +       if(photo_menu->photos)
>> +               eina_list_free(photo_menu->photos);
>> +       evas_object_del(photo_menu->menu);
>>  }
>>
>>  static void _inwin_del_cb(void *data)
>>  {
>> -   photo_menu_free(data);
>> +       Eina_List *photos = data;
>> +       eina_list_free(photos);
>> +       photo_menu_init(enlil_data->list_photo, _edje);
>>  }
>>
>>
>>
>>
>> ------------------------------------------------------------------------------
>> The ultimate all-in-one performance toolkit: Intel(R) Parallel Studio XE:
>> Pinpoint memory and threading errors before they happen.
>> Find and fix more than 250 security defects in the development cycle.
>> Locate bottlenecks in serial and parallel code that limit performance.
>> http://p.sf.net/sfu/intel-dev2devfeb
>> _______________________________________________
>> enlightenment-svn mailing list
>> enlightenment-...@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/enlightenment-svn
>>
>
>
>
> -- 
> Regards.
> ------------------------------------------------------------------------------
> The ultimate all-in-one performance toolkit: Intel(R) Parallel Studio XE:
> Pinpoint memory and threading errors before they happen.
> Find and fix more than 250 security defects in the development cycle.
> Locate bottlenecks in serial and parallel code that limit performance.
> http://p.sf.net/sfu/intel-dev2devfeb
> _______________________________________________
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>
>

------------------------------------------------------------------------------
Index, Search & Analyze Logs and other IT data in Real-Time with Splunk 
Collect, index and harness all the fast moving IT data generated by your 
applications, servers and devices whether physical, virtual or in the cloud.
Deliver compliance at lower cost and gain new business insights. 
Free Software Download: http://p.sf.net/sfu/splunk-dev2dev
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to