Enlightenment CVS committal Author : titan Project : e17 Module : proto
Dir : e17/proto/ephoto/src Modified Files: ephoto.c ephoto.h ephoto_misc.c Log Message: Added slideshow saving and loading! Yay! File->Save and File->Load! =================================================================== RCS file: /cvs/e/e17/proto/ephoto/src/ephoto.c,v retrieving revision 1.35 retrieving revision 1.36 diff -u -3 -r1.35 -r1.36 --- ephoto.c 6 Apr 2006 17:08:21 -0000 1.35 +++ ephoto.c 6 Apr 2006 20:21:09 -0000 1.36 @@ -245,6 +245,18 @@ ewl_container_child_append(EWL_CONTAINER(m->menubar), m->menu); ewl_object_fill_policy_set(EWL_OBJECT(m->menu), EWL_FLAG_FILL_NONE); ewl_widget_show(m->menu); + + m->menu_item = ewl_menu_item_new(); + ewl_button_label_set(EWL_BUTTON(m->menu_item), "Save Slideshow/Presentation"); + ewl_container_child_append(EWL_CONTAINER(m->menu), m->menu_item); + ewl_callback_append(m->menu_item, EWL_CALLBACK_CLICKED, slideshow_save_cb, NULL); + ewl_widget_show(m->menu_item); + + m->menu_item = ewl_menu_item_new(); + ewl_button_label_set(EWL_BUTTON(m->menu_item), "Load Slideshow/Presentation"); + ewl_container_child_append(EWL_CONTAINER(m->menu), m->menu_item); + ewl_callback_append(m->menu_item, EWL_CALLBACK_CLICKED, slideshow_load_cb, NULL); + ewl_widget_show(m->menu_item); m->menu_item = ewl_menu_item_new(); ewl_button_label_set(EWL_BUTTON(m->menu_item), "Exit"); =================================================================== RCS file: /cvs/e/e17/proto/ephoto/src/ephoto.h,v retrieving revision 1.14 retrieving revision 1.15 diff -u -3 -r1.14 -r1.15 --- ephoto.h 6 Apr 2006 00:23:24 -0000 1.14 +++ ephoto.h 6 Apr 2006 20:21:09 -0000 1.15 @@ -37,6 +37,11 @@ void play_cb(Ewl_Widget *w, void *event, void *data); void ephoto_men_cb(Ewl_Widget *w, void *event, void *data); void destroywin_cb(Ewl_Widget *w, void *event, void *data); +void slideshow_save_cb(Ewl_Widget *w, void *event, void *data); +void save_cb(Ewl_Widget *w, void *event, void *data); +void slideshow_load_cb(Ewl_Widget *w, void *event, void *data); +void loadclicked_cb(Ewl_Widget *w, void *event, void *data); +void load_cb(Ewl_Widget *w, void *event, void *data); typedef struct _Main Main; typedef struct _Slide Slide; @@ -44,6 +49,8 @@ struct _Main { Ewl_Widget *win; + Ewl_Widget *save_win; + Ewl_Widget *load_win; Ewl_Widget *scrollpane1; Ewl_Widget *hbox; Ewl_Widget *hboxv; @@ -72,6 +79,7 @@ Ewl_Widget *atext; Ewl_Widget *texta; Ewl_Widget *texti; + Ewl_Widget *otext; Ewl_Widget *rad1; Ewl_Widget *rad2; Ewl_Widget *rad3; =================================================================== RCS file: /cvs/e/e17/proto/ephoto/src/ephoto_misc.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- ephoto_misc.c 6 Apr 2006 00:23:24 -0000 1.8 +++ ephoto_misc.c 6 Apr 2006 20:21:09 -0000 1.9 @@ -125,3 +125,241 @@ ewl_widget_show(cancel); } +void slideshow_save_cb(Ewl_Widget *w, void *event, void *data) +{ + Ewl_Widget *vbox; + Ewl_Widget *hbox; + Ewl_Widget *text; + Ewl_Widget *entry; + Ewl_Widget *ok; + Ewl_Widget *cancel; + + m->save_win = ewl_window_new(); + ewl_window_title_set(EWL_WINDOW(m->save_win), "Save As"); + ewl_window_name_set(EWL_WINDOW(m->save_win), "Save As"); + ewl_object_size_request(EWL_OBJECT(m->save_win), 200, 100); + ewl_callback_append(m->save_win, EWL_CALLBACK_DELETE_WINDOW, destroywin_cb, m->save_win); + ewl_widget_show(m->save_win); + + vbox = ewl_vbox_new(); + ewl_container_child_append(EWL_CONTAINER(m->save_win), vbox); + ewl_object_fill_policy_set(EWL_OBJECT(vbox), EWL_FLAG_FILL_ALL); + ewl_widget_show(vbox); + + text = ewl_text_new(); + ewl_text_text_set(EWL_TEXT(text), "Save As(Enter a name, not a path)"); + ewl_container_child_append(EWL_CONTAINER(vbox), text); + ewl_object_alignment_set(EWL_OBJECT(text), EWL_FLAG_ALIGN_CENTER); + ewl_text_font_size_set(EWL_TEXT(text), 12); + ewl_widget_show(text); + + entry = ewl_entry_new(); + ewl_object_maximum_size_set(EWL_OBJECT(entry), 120, 10); + ewl_object_alignment_set(EWL_OBJECT(entry), EWL_FLAG_ALIGN_CENTER); + ewl_container_child_append(EWL_CONTAINER(vbox), entry); + ewl_text_font_size_set(EWL_TEXT(entry), 10); + ewl_widget_show(entry); + + hbox = ewl_hbox_new(); + ewl_container_child_append(EWL_CONTAINER(vbox), hbox); + ewl_object_fill_policy_set(EWL_OBJECT(hbox), EWL_FLAG_FILL_SHRINK); + ewl_object_alignment_set(EWL_OBJECT(hbox), EWL_FLAG_ALIGN_CENTER); + ewl_widget_show(hbox); + + ok = ewl_button_new(); + ewl_button_label_set(EWL_BUTTON(ok), "Ok"); + ewl_container_child_append(EWL_CONTAINER(hbox), ok); + ewl_object_alignment_set(EWL_OBJECT(ok), EWL_FLAG_ALIGN_CENTER); + ewl_object_maximum_size_set(EWL_OBJECT(ok), 80, 15); + ewl_callback_append(ok, EWL_CALLBACK_CLICKED, save_cb, entry); + ewl_widget_show(ok); + + cancel = ewl_button_new(); + ewl_button_label_set(EWL_BUTTON(cancel), "Close"); + ewl_container_child_append(EWL_CONTAINER(hbox), cancel); + ewl_object_alignment_set(EWL_OBJECT(cancel), EWL_FLAG_ALIGN_CENTER); + ewl_object_maximum_size_set(EWL_OBJECT(cancel), 80, 15); + ewl_callback_append(cancel, EWL_CALLBACK_CLICKED, destroywin_cb, m->save_win); + ewl_widget_show(cancel); + +} + +void save_cb(Ewl_Widget *w, void *event, void *data) +{ + char homepath[PATH_MAX]; + char *home = getenv("HOME"); + char *name; + char create_path[PATH_MAX]; + FILE *file_ptr; + + snprintf(homepath, PATH_MAX, "%s/.e/ephoto/", home); + + if ( !ecore_file_exists(homepath) ) { + ecore_file_mkdir(homepath); + } + + name = ewl_text_text_get(EWL_TEXT(data)); + + if ( name != NULL ) { + snprintf(create_path, PATH_MAX, "%s%s", homepath, name); + + if ( ecore_file_exists(create_path) ) { + ecore_file_recursive_rm(create_path); + } + + file_ptr = fopen(create_path, "w"); + + while ( !ecore_dlist_is_empty(m->imagelist) ) { + char *tempo; + char tempo2[PATH_MAX]; + tempo = ecore_dlist_remove_first(m->imagelist); + snprintf(tempo2, PATH_MAX, "%s\n", tempo); + fputs(tempo2, file_ptr); + } + fclose(file_ptr); + } + + ewl_widget_destroy(m->save_win); +} +void slideshow_load_cb(Ewl_Widget *w, void *event, void *data) +{ + Ewl_Widget *vbox; + Ewl_Widget *hbox; + Ewl_Widget *rtext; + Ewl_Widget *tree; + Ewl_Widget *ok; + Ewl_Widget *cancel; + Ewl_Widget *row; + Ewl_Widget *children[1]; + char *home = getenv("HOME"); + char homepath[PATH_MAX]; + Ecore_List *slideshows; + + slideshows = ecore_list_new(); + + snprintf(homepath, PATH_MAX, "%s/.e/ephoto", home); + + m->load_win = ewl_window_new(); + ewl_window_title_set(EWL_WINDOW(m->load_win), "Load"); + ewl_window_name_set(EWL_WINDOW(m->load_win), "Load"); + ewl_object_size_request(EWL_OBJECT(m->load_win), 200, 210); + ewl_callback_append(m->load_win, EWL_CALLBACK_DELETE_WINDOW, destroywin_cb, m->load_win); + ewl_widget_show(m->load_win); + + vbox = ewl_vbox_new(); + ewl_container_child_append(EWL_CONTAINER(m->load_win), vbox); + ewl_object_fill_policy_set(EWL_OBJECT(vbox), EWL_FLAG_FILL_ALL); + ewl_widget_show(vbox); + + tree = ewl_tree_new(1); + ewl_container_child_append(EWL_CONTAINER(vbox), tree); + ewl_tree_headers_visible_set(EWL_TREE(tree), 0); + ewl_tree_expandable_rows_set(EWL_TREE(tree), FALSE); + ewl_object_maximum_size_set(EWL_OBJECT(tree), 200, 215); + ewl_widget_show(tree); + + slideshows = ecore_file_ls(homepath); + + while ( !ecore_list_is_empty(slideshows) ) { + char *tempo; + tempo = ecore_list_remove_first(slideshows); + + rtext = ewl_text_new(); + ewl_widget_name_set(rtext, tempo); + ewl_text_text_set(EWL_TEXT(rtext), tempo); + ewl_object_minimum_size_set(EWL_OBJECT(rtext), 10, 16); + ewl_object_fill_policy_set(EWL_OBJECT(rtext), EWL_FLAG_FILL_ALL); + ewl_widget_show(rtext); + + children[0] = rtext; + children[1] = NULL; + row = ewl_tree_row_add(EWL_TREE(tree), NULL, children); + ewl_callback_append(rtext, EWL_CALLBACK_CLICKED, loadclicked_cb, NULL); + } + + m->otext = ewl_text_new(); + ewl_container_child_append(EWL_CONTAINER(vbox), m->otext); + ewl_object_alignment_set(EWL_OBJECT(m->otext), EWL_FLAG_ALIGN_CENTER); + ewl_text_font_size_set(EWL_TEXT(m->otext), 12); + ewl_widget_show(m->otext); + + hbox = ewl_hbox_new(); + ewl_container_child_append(EWL_CONTAINER(vbox), hbox); + ewl_object_fill_policy_set(EWL_OBJECT(hbox), EWL_FLAG_FILL_SHRINK); + ewl_object_alignment_set(EWL_OBJECT(hbox), EWL_FLAG_ALIGN_CENTER); + ewl_widget_show(hbox); + + ok = ewl_button_new(); + ewl_button_label_set(EWL_BUTTON(ok), "Ok"); + ewl_container_child_append(EWL_CONTAINER(hbox), ok); + ewl_object_alignment_set(EWL_OBJECT(ok), EWL_FLAG_ALIGN_CENTER); + ewl_object_maximum_size_set(EWL_OBJECT(ok), 80, 15); + ewl_callback_append(ok, EWL_CALLBACK_CLICKED, load_cb, NULL); + ewl_widget_show(ok); + + cancel = ewl_button_new(); + ewl_button_label_set(EWL_BUTTON(cancel), "Close"); + ewl_container_child_append(EWL_CONTAINER(hbox), cancel); + ewl_object_alignment_set(EWL_OBJECT(cancel), EWL_FLAG_ALIGN_CENTER); + ewl_object_maximum_size_set(EWL_OBJECT(cancel), 80, 15); + ewl_callback_append(cancel, EWL_CALLBACK_CLICKED, destroywin_cb, m->load_win); + ewl_widget_show(cancel); +} + +void loadclicked_cb(Ewl_Widget *w, void *event, void *data) +{ + char *rpath; + rpath = ewl_widget_name_get(w); + ewl_text_text_set(EWL_TEXT(m->otext), rpath); +} + +void load_cb(Ewl_Widget *w, void *event, void *data) +{ + char *home = getenv("HOME"); + char homepath[PATH_MAX]; + char *apath; + FILE *file_ptr; + + apath = ewl_text_text_get(EWL_TEXT(m->otext)); + snprintf(homepath, PATH_MAX, "%s/.e/ephoto/%s", home, apath); + printf("%s\n", homepath); + + file_ptr = fopen(homepath, "r"); + + if (file_ptr != NULL) { + char paths[PATH_MAX]; + while (fgets(paths,PATH_MAX,file_ptr)!=NULL) { + char path2[PATH_MAX]; + int strleng; + + strleng = strlen(paths); + + snprintf(path2, strleng, "%s", paths); + + printf("%s\n", path2); + + m->i = ewl_image_thumbnail_new(); + ewl_widget_name_set(m->i, path2); + ewl_image_constrain_set(EWL_IMAGE(m->i), 64); + ewl_image_proportional_set(EWL_IMAGE(m->i), TRUE); + ewl_image_thumbnail_request(EWL_IMAGE(m->i), path2); + ewl_image_file_set(EWL_IMAGE(m->i), PACKAGE_DATA_DIR "images/camera.png", NULL); + ewl_container_child_append(EWL_CONTAINER(m->ib), m->i); + ewl_callback_append(m->i, EWL_CALLBACK_CLICKED, iremove_cb, NULL); + ewl_widget_show(m->i); + + ecore_dlist_append(m->imagelist, strdup(path2)); + slidenum++; + + ewl_widget_enable(m->slideshow); + ewl_widget_state_set(m->slideshow, "enabled"); + ewl_widget_enable(m->presentation); + ewl_widget_state_set(m->presentation, "enabled"); + } + + fclose(file_ptr); + ewl_widget_destroy(m->load_win); + } + +} + ------------------------------------------------------- This SF.Net email is sponsored by xPML, a groundbreaking scripting language that extends applications into web and mobile media. Attend the live webcast and join the prime developer group breaking into this new coding territory! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs