From 3abc8702133790c9ca6c6629e53ea3dfe1152db4 Mon Sep 17 00:00:00 2001 From: titan Date: Sun, 18 Feb 2007 01:02:43 +0000 Subject: [PATCH] Add editing tools! SVN revision: 28386 --- data/images/Makefile.am | 2 + data/images/media-seek-backward.png | Bin 0 -> 1792 bytes data/images/media-seek-forward.png | Bin 0 -> 1822 bytes data/themes/ephoto/bits/select.edc | 8 ++-- src/bin/ephoto.h | 5 ++ src/bin/ephoto_database.c | 6 +-- src/bin/ephoto_edit_view.c | 69 ++++++++++++++++++++++++++++ src/bin/ephoto_list_view.c | 3 +- src/bin/ephoto_main.c | 40 +++++++++------- src/bin/ephoto_normal_view.c | 1 + 10 files changed, 109 insertions(+), 25 deletions(-) create mode 100644 data/images/media-seek-backward.png create mode 100644 data/images/media-seek-forward.png diff --git a/data/images/Makefile.am b/data/images/Makefile.am index 0b4a45c..a9df573 100644 --- a/data/images/Makefile.am +++ b/data/images/Makefile.am @@ -15,6 +15,8 @@ FILES = add.png \ go-next.png \ image.png \ list_view.png \ + media-seek-backward.png \ + media-seek-forward.png \ normal_view.png \ preferences-system.png \ redo.png \ diff --git a/data/images/media-seek-backward.png b/data/images/media-seek-backward.png new file mode 100644 index 0000000000000000000000000000000000000000..5a08bcecee7141567a19b28d1e226d7234b8e6d7 GIT binary patch literal 1792 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 M07*qoM6N<$f|Y}E82|tP literal 0 HcmV?d00001 diff --git a/data/themes/ephoto/bits/select.edc b/data/themes/ephoto/bits/select.edc index 3e24159..8917545 100644 --- a/data/themes/ephoto/bits/select.edc +++ b/data/themes/ephoto/bits/select.edc @@ -28,7 +28,7 @@ group { name: "select"; signal: "selected"; - source: "*"; + source: "EWL"; action: STATE_SET "selected" 0.0; target: "selection"; } @@ -36,7 +36,7 @@ group { name: "unselect"; signal: "unselected"; - source: "*"; + source: "EWL"; action: STATE_SET "default" 0.0; target: "selection"; } @@ -73,7 +73,7 @@ group { name: "highlighted"; signal: "mouse,in"; - source: "*"; + source: "EWL"; action: STATE_SET "highlighted" 0.0; target: "highlight"; } @@ -81,7 +81,7 @@ group { name: "default"; signal: "mouse,out"; - source: "*"; + source: "EWL"; action: STATE_SET "default" 0.0; target: "highlight"; } diff --git a/src/bin/ephoto.h b/src/bin/ephoto.h index c461eeb..bed1f51 100644 --- a/src/bin/ephoto.h +++ b/src/bin/ephoto.h @@ -52,6 +52,9 @@ unsigned int *rotate_left(Ewl_Widget *image); unsigned int *rotate_right(Ewl_Widget *image); void update_image(Ewl_Widget *image, int w, int h, unsigned int *data); +/* Ephoto Edit View */ +void add_edit_tools(Ewl_Widget *c); + /* Ephoto List View */ Ewl_Widget *add_ltree(Ewl_Widget *c); @@ -83,6 +86,8 @@ extern Ewl_Widget *ilabel; extern Ewl_Widget *currenta; extern Ewl_Widget *currentf; extern Ewl_Widget *currenti; +extern Ewl_Widget *toolbar; +extern Ewl_Widget *edit_tools; extern Ecore_List *images; /* NLS */ diff --git a/src/bin/ephoto_database.c b/src/bin/ephoto_database.c index b2aeb59..bf27697 100644 --- a/src/bin/ephoto_database.c +++ b/src/bin/ephoto_database.c @@ -181,7 +181,7 @@ static int list_images(void *notused, int argc, char **argv, char **col) for(i = 0; i < argc; i++) { - ecore_list_append(images_list, strdup(argv[i] ? argv[i] : "NULL")); + ecore_dlist_append(images_list, strdup(argv[i] ? argv[i] : "NULL")); } return 0; @@ -211,13 +211,13 @@ Ecore_List *ephoto_db_list_images(sqlite3 *db, char *album) if(images_list) { - ecore_list_destroy(images_list); + ecore_dlist_destroy(images_list); } if(image_ids) { ecore_list_destroy(image_ids); } - images_list = ecore_list_new(); + images_list = ecore_dlist_new(); image_ids = ecore_list_new(); snprintf(command, PATH_MAX, "SELECT id FROM albums WHERE name = '%s';", album); diff --git a/src/bin/ephoto_edit_view.c b/src/bin/ephoto_edit_view.c index 8cb64b8..a3bbaa3 100644 --- a/src/bin/ephoto_edit_view.c +++ b/src/bin/ephoto_edit_view.c @@ -1,6 +1,8 @@ #include "ephoto.h" /*Ephoto Image Manipulation*/ +static void previous_image(Ewl_Widget *w, void *event, void *data); +static void next_image(Ewl_Widget *w, void *event, void *data); static void flip_image_horizontal(Ewl_Widget *w, void *event, void *data); static void flip_image_vertical(Ewl_Widget *w, void *event, void *data); static void rotate_image_left(Ewl_Widget *w, void *event, void *data); @@ -10,12 +12,79 @@ static void rotate_image_right(Ewl_Widget *w, void *event, void *data); void show_edit_view(Ewl_Widget *w, void *event, void *data) { ewl_notebook_visible_page_set(EWL_NOTEBOOK(view_box), edit_vbox); + ecore_dlist_goto_first(images); + ewl_widget_show(edit_tools); ewl_widget_hide(atree); ewl_widget_hide(tbar); ewl_widget_hide(ilabel); ewl_widget_reparent(eimage); } +/*Add edit tools to container c*/ +void add_edit_tools(Ewl_Widget *c) +{ + Ewl_Widget *image; + + image = add_image(c, PACKAGE_DATA_DIR "/images/media-seek-backward.png", 0, previous_image, NULL); + ewl_image_constrain_set(EWL_IMAGE(image), 30); + + image = add_image(c, PACKAGE_DATA_DIR "/images/media-seek-forward.png", 0, next_image, NULL); + ewl_image_constrain_set(EWL_IMAGE(image), 30); + + image = add_image(c, PACKAGE_DATA_DIR "/images/undo.png", 0, rotate_image_left, NULL); + ewl_image_constrain_set(EWL_IMAGE(image), 30); + + image = add_image(c, PACKAGE_DATA_DIR "/images/redo.png", 0, rotate_image_right, NULL); + ewl_image_constrain_set(EWL_IMAGE(image), 30); + + image = add_image(c, PACKAGE_DATA_DIR "/images/go-next.png", 0, flip_image_horizontal, NULL); + ewl_image_constrain_set(EWL_IMAGE(image), 30); + + image = add_image(c, PACKAGE_DATA_DIR "/images/go-down.png", 0, flip_image_vertical, NULL); + ewl_image_constrain_set(EWL_IMAGE(image), 30); + + return; +} + +/*Go to the previous image*/ +static void previous_image(Ewl_Widget *w, void *event, void *data) +{ + char *image; + + ecore_dlist_previous(images); + image = ecore_dlist_current(images); + if(!image) + { + ecore_dlist_goto_last(images); + image = ecore_dlist_current(images); + } + ewl_image_file_path_set(EWL_IMAGE(eimage), image); + ewl_widget_configure(eimage->parent); + + return; +} + + +/*Go to the next image*/ +static void next_image(Ewl_Widget *w, void *event, void *data) +{ + char *image; + + ecore_dlist_next(images); + image = ecore_dlist_current(images); + if(!image) + { + ecore_dlist_goto_first(images); + image = ecore_dlist_current(images); + } + ewl_image_file_path_set(EWL_IMAGE(eimage), image); + ewl_widget_configure(eimage->parent); + + return; +} + + + /*Flip the image 180 degrees horizontally*/ static void flip_image_horizontal(Ewl_Widget *w, void *event, void *data) { diff --git a/src/bin/ephoto_list_view.c b/src/bin/ephoto_list_view.c index 216edd7..47e4713 100644 --- a/src/bin/ephoto_list_view.c +++ b/src/bin/ephoto_list_view.c @@ -11,7 +11,8 @@ void show_list_view(Ewl_Widget *w, void *event, void *data) { ewl_notebook_visible_page_set(EWL_NOTEBOOK(view_box), list_vbox); ewl_mvc_dirty_set(EWL_MVC(ltree), 1); - ewl_widget_hide(ilabel); + ewl_widget_hide(edit_tools); + ewl_widget_hide(ilabel); ewl_widget_show(atree); ewl_widget_show(tbar); } diff --git a/src/bin/ephoto_main.c b/src/bin/ephoto_main.c index 9775726..5e4dae3 100644 --- a/src/bin/ephoto_main.c +++ b/src/bin/ephoto_main.c @@ -30,8 +30,8 @@ static void *views_data_fetch(void *data, unsigned int row, unsigned int column) static int views_data_count(void *data); /*Ephoto Global Variables*/ -Ewl_Widget *atree, *tbar, *vcombo, *view_box, *fbox_vbox, *edit_vbox, *list_vbox; -Ewl_Widget *fbox, *eimage, *ltree, *ilabel, *currenta, *currentf, *currenti; +Ewl_Widget *atree, *tbar, *vcombo, *view_box, *fbox_vbox, *edit_vbox, *list_vbox, *fbox; +Ewl_Widget *eimage, *ltree, *ilabel, *currenta, *currentf, *currenti, *toolbar, *edit_tools; Ecore_List *images; @@ -68,10 +68,8 @@ static void window_fullscreen(Ewl_Widget *w, void *event, void *data) /*Create the Main Ephoto Window*/ void create_main_gui(void) { - Ecore_List *images; - Ewl_Widget *win, *vbox, *spacer, *text, *entry, *hbox; - Ewl_Widget *rvbox, *sp, *hsep, *toolbar, *vsep, *image; + Ewl_Widget *rvbox, *sp, *hsep, *vsep, *image; Ewl_Widget *shbox, *seeker; win = ewl_window_new(); @@ -206,16 +204,24 @@ void create_main_gui(void) image = add_image(toolbar, PACKAGE_DATA_DIR "/images/get_exif.png", 0, display_exif_dialog, NULL); ewl_image_constrain_set(EWL_IMAGE(image), 30); - vsep = ewl_vseparator_new(); - ewl_container_child_append(EWL_CONTAINER(toolbar), vsep); - ewl_widget_show(vsep); - image = add_image(toolbar, PACKAGE_DATA_DIR "/images/stock_fullscreen.png", 0, window_fullscreen, win); ewl_image_constrain_set(EWL_IMAGE(image), 30); image = add_image(toolbar, PACKAGE_DATA_DIR "/images/x-office-presentation.png", 0, NULL, NULL); ewl_image_constrain_set(EWL_IMAGE(image), 30); + vsep = ewl_vseparator_new(); + ewl_container_child_append(EWL_CONTAINER(toolbar), vsep); + ewl_widget_show(vsep); + + edit_tools = ewl_hbox_new(); + ewl_object_fill_policy_set(EWL_OBJECT(edit_tools), EWL_FLAG_FILL_HFILL); + ewl_container_child_append(EWL_CONTAINER(toolbar), edit_tools); + ewl_widget_show(edit_tools); + + add_edit_tools(edit_tools); + ewl_widget_hide(edit_tools); + albums = ecore_list_new(); db = ephoto_db_init(); albums = ephoto_db_list_albums(db); @@ -254,31 +260,31 @@ static void populate(Ewl_Widget *w, void *event, void *data) if (images) { - ecore_list_destroy(images); + ecore_dlist_destroy(images); } - images = ecore_list_new(); + images = ecore_dlist_new(); images = ephoto_db_list_images(db, album); - ecore_list_goto_first(images); + ecore_dlist_goto_first(images); ewl_container_reset(EWL_CONTAINER(fbox)); - while (ecore_list_current(images)) + while (ecore_dlist_current(images)) { - imagef = ecore_list_current(images); + imagef = ecore_dlist_current(images); thumb = add_image(fbox, imagef, 1, set_info, NULL); ewl_object_alignment_set(EWL_OBJECT(thumb), EWL_FLAG_ALIGN_CENTER); ewl_widget_name_set(thumb, imagef); - ecore_list_next(images); + ecore_dlist_next(images); } - ecore_list_goto_first(images); + ecore_dlist_goto_first(images); ewl_mvc_data_set(EWL_MVC(ltree), images); ewl_mvc_dirty_set(EWL_MVC(ltree), 1); - ewl_image_file_set(EWL_IMAGE(eimage), ecore_list_current(images), NULL); + ewl_image_file_set(EWL_IMAGE(eimage), ecore_dlist_current(images), NULL); return; } diff --git a/src/bin/ephoto_normal_view.c b/src/bin/ephoto_normal_view.c index 97b9f58..d88b384 100644 --- a/src/bin/ephoto_normal_view.c +++ b/src/bin/ephoto_normal_view.c @@ -7,6 +7,7 @@ void show_normal_view(Ewl_Widget *w, void *event, void *data) ewl_widget_show(atree); ewl_widget_show(tbar); ewl_widget_show(ilabel); + ewl_widget_hide(edit_tools); ewl_widget_configure(fbox); }