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