From 629a293a664533cc467529e2ab2ba1bab08bf0b6 Mon Sep 17 00:00:00 2001 From: Al Poole Date: Fri, 24 Mar 2017 22:24:33 +0000 Subject: [PATCH] Add option to delete file in browser Reviewers: ajwillia.ms Reviewed By: ajwillia.ms Differential Revision: https://phab.enlightenment.org/D4742 --- src/bin/edi_filepanel.c | 13 +++++++++++++ src/bin/mainview/edi_mainview.c | 16 ++++++++++++++++ src/bin/mainview/edi_mainview.h | 9 +++++++++ 3 files changed, 38 insertions(+) diff --git a/src/bin/edi_filepanel.c b/src/bin/edi_filepanel.c index 49cf909..b04d9df 100644 --- a/src/bin/edi_filepanel.c +++ b/src/bin/edi_filepanel.c @@ -14,6 +14,7 @@ #include "edi_filepanel.h" #include "edi_content_provider.h" +#include "mainview/edi_mainview.h" #include "edi_private.h" @@ -117,6 +118,17 @@ _item_menu_open_as_image_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED _open_cb(_menu_cb_path, "image", EINA_FALSE); } +static void +_item_menu_del_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, + void *event_info EINA_UNUSED) +{ + const char *filename = _menu_cb_path; + + edi_mainview_item_close_path(filename); + + ecore_file_unlink(filename); +} + static void _item_menu_dismissed_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *ev EINA_UNUSED) @@ -155,6 +167,7 @@ _item_menu_create(Evas_Object *win) _item_menu_filetype_create(menu, menu_it, "text", _item_menu_open_as_text_cb); _item_menu_filetype_create(menu, menu_it, "code", _item_menu_open_as_code_cb); _item_menu_filetype_create(menu, menu_it, "image", _item_menu_open_as_image_cb); + menu_it = elm_menu_item_add(menu, NULL, "edit-delete", "delete", _item_menu_del_cb, NULL); } static void diff --git a/src/bin/mainview/edi_mainview.c b/src/bin/mainview/edi_mainview.c index 04c44c5..6bbbda7 100644 --- a/src/bin/mainview/edi_mainview.c +++ b/src/bin/mainview/edi_mainview.c @@ -511,6 +511,22 @@ edi_mainview_open_window(Edi_Path_Options *options) } } +void +edi_mainview_item_close_path(const char *path) +{ + Eina_List *item; + Edi_Mainview_Item *it; + + EINA_LIST_FOREACH(_edi_mainview_items, item, it) + { + if (it && !strcmp(it->path, path)) + { + _edi_mainview_item_close(it); + return; + } + } +} + void edi_mainview_save() { diff --git a/src/bin/mainview/edi_mainview.h b/src/bin/mainview/edi_mainview.h index 87268b6..d1580fe 100644 --- a/src/bin/mainview/edi_mainview.h +++ b/src/bin/mainview/edi_mainview.h @@ -37,6 +37,15 @@ extern "C" { */ void edi_mainview_add(Evas_Object *parent, Evas_Object *win); +/** + * Delete a mainview by its path + * @param parh The path of the file associated with tab to close. + * + * @ingroup UI + */ +void edi_mainview_item_close_path(const char *path); + + /** * @} *