forked from enlightenment/enventor
file_tab: ++implementation.
allow remove item from the tab.
This commit is contained in:
parent
37770335ff
commit
5b00b70fc2
|
@ -351,15 +351,16 @@ group { name: "elm/list/h_item/enventor";
|
||||||
target: "label2";
|
target: "label2";
|
||||||
target: "label3";
|
target: "label3";
|
||||||
}
|
}
|
||||||
rect {"elm.swallow.icon";
|
swallow {"elm.swallow.icon";
|
||||||
scale: 1;
|
scale: 1;
|
||||||
desc { "default";
|
desc { "default";
|
||||||
fixed: 1 1;
|
fixed: 1 1;
|
||||||
align: 0 0.5;
|
align: 0 0.5;
|
||||||
rel1.relative: 0.0 0.5;
|
rel1.relative: 0.0 0.5;
|
||||||
rel1.offset: 5 0;
|
rel1.offset: 5 -1;
|
||||||
rel2.relative: 0.0 0.5;
|
rel2.relative: 0.0 0.5;
|
||||||
min: 12 12;
|
rel2.offset: 5 -2;
|
||||||
|
min: 15 15;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
part { name: "sel_shine"; mouse_events: 0;
|
part { name: "sel_shine"; mouse_events: 0;
|
||||||
|
|
|
@ -10,6 +10,7 @@ typedef struct file_tab_s
|
||||||
typedef struct file_tab_it_s
|
typedef struct file_tab_it_s
|
||||||
{
|
{
|
||||||
Enventor_Item *enventor_it;
|
Enventor_Item *enventor_it;
|
||||||
|
Elm_Object_Item *it;
|
||||||
} file_tab_it;
|
} file_tab_it;
|
||||||
|
|
||||||
file_data *g_fd = NULL;
|
file_data *g_fd = NULL;
|
||||||
|
@ -58,10 +59,51 @@ list_item_selected_cb(void *data, Evas_Object *obj EINA_UNUSED,
|
||||||
file_mgr_file_focus(fti->enventor_it);
|
file_mgr_file_focus(fti->enventor_it);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
file_tab_it_del(file_tab_it *fti)
|
||||||
|
{
|
||||||
|
Evas_Object *list = elm_object_item_widget_get(fti->it);
|
||||||
|
|
||||||
|
//FIXME: If this item is main, then it needs to close project.
|
||||||
|
|
||||||
|
//If the focused item is removed, then enable next item.
|
||||||
|
if (elm_list_selected_item_get(list) == fti->it)
|
||||||
|
{
|
||||||
|
//Next?
|
||||||
|
Elm_Object_Item *it;
|
||||||
|
it = elm_list_item_next(fti->it);
|
||||||
|
|
||||||
|
//Prev?
|
||||||
|
if (!it) it = elm_list_item_prev(fti->it);
|
||||||
|
|
||||||
|
if (it)
|
||||||
|
{
|
||||||
|
file_tab_it *next_fti = elm_object_item_data_get(it);
|
||||||
|
file_mgr_file_focus(next_fti->enventor_it);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Remove item.
|
||||||
|
elm_object_item_del(fti->it);
|
||||||
|
enventor_item_del(fti->enventor_it);
|
||||||
|
free(fti);
|
||||||
|
|
||||||
|
elm_list_go(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
close_btn_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
|
||||||
|
void *event_info EINA_UNUSED)
|
||||||
|
{
|
||||||
|
file_tab_it *fti = data;
|
||||||
|
file_tab_it_del(fti);
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/* Externally accessible calls */
|
/* Externally accessible calls */
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
Eina_Bool file_tab_it_select(Enventor_Item *enventor_it)
|
Eina_Bool
|
||||||
|
file_tab_it_select(Enventor_Item *enventor_it)
|
||||||
{
|
{
|
||||||
file_data *fd = g_fd;
|
file_data *fd = g_fd;
|
||||||
EINA_SAFETY_ON_NULL_RETURN_VAL(fd, EINA_FALSE);
|
EINA_SAFETY_ON_NULL_RETURN_VAL(fd, EINA_FALSE);
|
||||||
|
@ -83,7 +125,8 @@ Eina_Bool file_tab_it_select(Enventor_Item *enventor_it)
|
||||||
return EINA_FALSE;
|
return EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void file_tab_clear(void)
|
void
|
||||||
|
file_tab_clear(void)
|
||||||
{
|
{
|
||||||
file_data *fd = g_fd;
|
file_data *fd = g_fd;
|
||||||
EINA_SAFETY_ON_NULL_RETURN(fd);
|
EINA_SAFETY_ON_NULL_RETURN(fd);
|
||||||
|
@ -100,7 +143,8 @@ void file_tab_clear(void)
|
||||||
elm_list_clear(fd->list);
|
elm_list_clear(fd->list);
|
||||||
}
|
}
|
||||||
|
|
||||||
Eina_Bool file_tab_it_add(Enventor_Item *enventor_it)
|
Eina_Bool
|
||||||
|
file_tab_it_add(Enventor_Item *enventor_it)
|
||||||
{
|
{
|
||||||
if (!enventor_it)
|
if (!enventor_it)
|
||||||
{
|
{
|
||||||
|
@ -136,10 +180,21 @@ Eina_Bool file_tab_it_add(Enventor_Item *enventor_it)
|
||||||
|
|
||||||
fti->enventor_it = enventor_it;
|
fti->enventor_it = enventor_it;
|
||||||
|
|
||||||
elm_list_item_append(fd->list, filename, NULL, NULL, list_item_selected_cb,
|
//Close Button
|
||||||
fti);
|
Evas_Object *btn = elm_button_add(fd->list);
|
||||||
|
elm_object_style_set(btn, ENVENTOR_NAME);
|
||||||
|
elm_object_focus_allow_set(btn, EINA_FALSE);
|
||||||
|
|
||||||
|
Evas_Object *img = elm_image_add(btn);
|
||||||
|
elm_image_file_set(img, EDJE_PATH, "close");
|
||||||
|
elm_object_content_set(btn, img);
|
||||||
|
|
||||||
|
fti->it = elm_list_item_append(fd->list, filename, btn, NULL,
|
||||||
|
list_item_selected_cb, fti);
|
||||||
elm_list_go(fd->list);
|
elm_list_go(fd->list);
|
||||||
|
|
||||||
|
evas_object_smart_callback_add(btn, "clicked", close_btn_clicked_cb, fti);
|
||||||
|
|
||||||
free(filename);
|
free(filename);
|
||||||
|
|
||||||
return EINA_TRUE;
|
return EINA_TRUE;
|
||||||
|
|
|
@ -26,5 +26,6 @@ EAPI Eina_Bool enventor_item_line_delete(Enventor_Item *it);
|
||||||
EAPI Eina_Bool enventor_item_file_save(Enventor_Item *it, const char *file);
|
EAPI Eina_Bool enventor_item_file_save(Enventor_Item *it, const char *file);
|
||||||
EAPI Eina_Bool enventor_item_modified_get(const Enventor_Item *it);
|
EAPI Eina_Bool enventor_item_modified_get(const Enventor_Item *it);
|
||||||
EAPI void enventor_item_modified_set(Enventor_Item *it, Eina_Bool modified);
|
EAPI void enventor_item_modified_set(Enventor_Item *it, Eina_Bool modified);
|
||||||
|
EAPI Eina_Bool enventor_item_del(Enventor_Item *it);
|
||||||
|
|
||||||
#include "enventor_object.eo.legacy.h"
|
#include "enventor_object.eo.legacy.h"
|
||||||
|
|
|
@ -85,6 +85,16 @@ static void
|
||||||
_enventor_main_item_free(Enventor_Object_Data *pd)
|
_enventor_main_item_free(Enventor_Object_Data *pd)
|
||||||
{
|
{
|
||||||
edit_term(pd->main_it.ed);
|
edit_term(pd->main_it.ed);
|
||||||
|
pd->main_it.ed = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_enventor_sub_items_free(Enventor_Object_Data *pd)
|
||||||
|
{
|
||||||
|
Enventor_Item *it;
|
||||||
|
EINA_LIST_FREE(pd->sub_its, it)
|
||||||
|
enventor_item_del(it);
|
||||||
|
pd->sub_its = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
|
@ -272,6 +282,7 @@ _enventor_object_efl_canvas_group_group_del(Evas_Object *obj EINA_UNUSED, Envent
|
||||||
edj_mgr_term();
|
edj_mgr_term();
|
||||||
build_term();
|
build_term();
|
||||||
|
|
||||||
|
_enventor_sub_items_free(pd);
|
||||||
_enventor_main_item_free(pd);
|
_enventor_main_item_free(pd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1098,5 +1109,23 @@ enventor_item_modified_set(Enventor_Item *it, Eina_Bool modified)
|
||||||
edit_changed_set(it->ed, modified);
|
edit_changed_set(it->ed, modified);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EAPI Eina_Bool
|
||||||
|
enventor_item_del(Enventor_Item *it)
|
||||||
|
{
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(it, EINA_FALSE);
|
||||||
|
|
||||||
|
//Main Item?
|
||||||
|
if (it == &it->pd->main_it)
|
||||||
|
{
|
||||||
|
_enventor_main_item_free(it->pd);
|
||||||
|
}
|
||||||
|
//Sub Items
|
||||||
|
else
|
||||||
|
{
|
||||||
|
it->pd->sub_its = eina_list_remove(it->pd->sub_its, it);
|
||||||
|
edit_term(it->ed);
|
||||||
|
free(it);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#include "enventor_object.eo.c"
|
#include "enventor_object.eo.c"
|
||||||
|
|
Loading…
Reference in New Issue