start a shelf config for all shelves (for listing adding/deleting shelves)

SVN revision: 22404
This commit is contained in:
Carsten Haitzler 2006-04-30 03:43:47 +00:00
parent 5853d2c7b7
commit d6ff645451
13 changed files with 101 additions and 51 deletions

View File

@ -152,7 +152,8 @@ e_gadcon.h \
e_shelf.h \ e_shelf.h \
e_widget_preview.h \ e_widget_preview.h \
e_int_config_paths.h \ e_int_config_paths.h \
e_int_shelf_config.h e_int_shelf_config.h \
e_int_config_shelf.h
enlightenment_src = \ enlightenment_src = \
e_user.c \ e_user.c \
@ -286,6 +287,7 @@ e_shelf.c \
e_widget_preview.c \ e_widget_preview.c \
e_int_config_paths.c \ e_int_config_paths.c \
e_int_shelf_config.c \ e_int_shelf_config.c \
e_int_config_shelf.c \
$(ENLIGHTENMENTHEADERS) $(ENLIGHTENMENTHEADERS)
enlightenment_SOURCES = \ enlightenment_SOURCES = \

View File

@ -64,38 +64,39 @@ e_configure_show(E_Container *con)
/* add items here */ /* add items here */
e_configure_header_item_add(eco, "enlightenment/appearance", _("Appearance")); e_configure_header_item_add(eco, "enlightenment/appearance", _("Appearance"));
e_configure_standard_item_add(eco, "enlightenment/desktops", _("Background Settings"), e_int_config_background); e_configure_standard_item_add(eco, "enlightenment/desktops", _("Background"), e_int_config_background);
e_configure_standard_item_add(eco, "enlightenment/themes", _("Theme Selector"), e_int_config_theme); e_configure_standard_item_add(eco, "enlightenment/themes", _("Theme"), e_int_config_theme);
e_configure_standard_item_add(eco, "enlightenment/e", _("Font Properties"), e_int_config_fonts); e_configure_standard_item_add(eco, "enlightenment/e", _("Fonts"), e_int_config_fonts);
/* /*
e_configure_standard_item_add(eco, "enlightenment/e", _("Font Display Hinting"), e_int_config_hinting); e_configure_standard_item_add(eco, "enlightenment/e", _("Font Display Hinting"), e_int_config_hinting);
*/ */
e_configure_standard_item_add(eco, "enlightenment/mouse", _("Cursor Settings"), e_int_config_cursor); e_configure_standard_item_add(eco, "enlightenment/mouse", _("Mouse Cursor"), e_int_config_cursor);
e_configure_standard_item_add(eco, "enlightenment/windows", _("Window Display Settings"), e_int_config_window_display); e_configure_standard_item_add(eco, "enlightenment/windows", _("Window Display"), e_int_config_window_display);
e_configure_standard_item_add(eco, "enlightenment/shelf", _("Shelves"), e_int_config_shelf);
e_configure_header_item_add(eco, "enlightenment/extensions", _("Extensions")); e_configure_header_item_add(eco, "enlightenment/extensions", _("Extensions"));
e_configure_standard_item_add(eco, "enlightenment/modules", _("Module Settings"), e_int_config_modules); e_configure_standard_item_add(eco, "enlightenment/modules", _("Modules"), e_int_config_modules);
e_configure_header_item_add(eco, "enlightenment/screen_setup", _("Screen")); e_configure_header_item_add(eco, "enlightenment/screen_setup", _("Screen"));
e_configure_standard_item_add(eco, "enlightenment/desktops", _("Desktop Settings"), e_int_config_desks); e_configure_standard_item_add(eco, "enlightenment/desktops", _("Virtual Desktops"), e_int_config_desks);
e_configure_standard_item_add(eco, "enlightenment/desktops", _("Display Settings"), e_int_config_display); e_configure_standard_item_add(eco, "enlightenment/desktops", _("Screen Resolution"), e_int_config_display);
e_configure_standard_item_add(eco, "enlightenment/desktops", _("Desktop Lock Settings"), e_int_config_desklock); e_configure_standard_item_add(eco, "enlightenment/desktops", _("Screen Lock"), e_int_config_desklock);
e_configure_header_item_add(eco, "enlightenment/behavior", _("Behavior")); e_configure_header_item_add(eco, "enlightenment/behavior", _("Behavior"));
e_configure_standard_item_add(eco, "enlightenment/e", _("Focus Settings"), e_int_config_focus); e_configure_standard_item_add(eco, "enlightenment/e", _("Window Focus"), e_int_config_focus);
e_configure_standard_item_add(eco, "enlightenment/e", _("Key Binding Settings"), e_int_config_keybindings); e_configure_standard_item_add(eco, "enlightenment/e", _("Key Bindings"), e_int_config_keybindings);
e_configure_standard_item_add(eco, "enlightenment/favorites", _("Menu Settings"), e_int_config_menus); e_configure_standard_item_add(eco, "enlightenment/favorites", _("Menus"), e_int_config_menus);
e_configure_header_item_add(eco, "enlightenment/misc", _("Miscellaneous")); e_configure_header_item_add(eco, "enlightenment/misc", _("Miscellaneous"));
e_configure_standard_item_add(eco, "enlightenment/configuration", _("Performance Settings"), e_int_config_performance); e_configure_standard_item_add(eco, "enlightenment/configuration", _("Performance"), e_int_config_performance);
e_configure_standard_item_add(eco, "enlightenment/configuration", _("Config Dialog Settings"), e_int_config_cfgdialogs); e_configure_standard_item_add(eco, "enlightenment/configuration", _("Configuration Dialogs"), e_int_config_cfgdialogs);
e_configure_header_item_add(eco, "enlightenment/advanced", _("Advanced")); e_configure_header_item_add(eco, "enlightenment/advanced", _("Advanced"));
e_configure_standard_item_add(eco, "enlightenment/run", _("Startup Settings"), e_int_config_startup); e_configure_standard_item_add(eco, "enlightenment/run", _("Startup"), e_int_config_startup);
e_configure_standard_item_add(eco, "enlightenment/windows", _("Window List Settings"), e_int_config_winlist); e_configure_standard_item_add(eco, "enlightenment/windows", _("Window List"), e_int_config_winlist);
e_configure_standard_item_add(eco, "enlightenment/windows", _("Window Manipulation Settings"), e_int_config_window_manipulation); e_configure_standard_item_add(eco, "enlightenment/windows", _("Window Manipulation"), e_int_config_window_manipulation);
e_configure_standard_item_add(eco, "enlightenment/run", _("Run Command Settings"), e_int_config_exebuf); e_configure_standard_item_add(eco, "enlightenment/run", _("Run Command"), e_int_config_exebuf);
e_configure_standard_item_add(eco, "enlightenment/e", _("Search Paths"), e_int_config_paths); e_configure_standard_item_add(eco, "enlightenment/e", _("Search Directories"), e_int_config_paths);
/* FIXME: we should have a way for modules to hook in here and add their /* FIXME: we should have a way for modules to hook in here and add their
* own entries * own entries

View File

@ -133,3 +133,4 @@
#include "e_widget_preview.h" #include "e_widget_preview.h"
#include "e_int_config_paths.h" #include "e_int_config_paths.h"
#include "e_int_shelf_config.h" #include "e_int_shelf_config.h"
#include "e_int_config_shelf.h"

View File

@ -61,9 +61,7 @@ _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
static int static int
_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{ {
e_border_button_bindings_ungrab_all();
e_config->cfgdlg_auto_apply = cfdata->auto_apply; e_config->cfgdlg_auto_apply = cfdata->auto_apply;
e_border_button_bindings_grab_all();
e_config_save_queue(); e_config_save_queue();
return 1; return 1;
} }
@ -85,10 +83,8 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
static int static int
_advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{ {
e_border_button_bindings_ungrab_all();
e_config->cfgdlg_auto_apply = cfdata->auto_apply; e_config->cfgdlg_auto_apply = cfdata->auto_apply;
e_config->cfgdlg_default_mode = cfdata->default_mode; e_config->cfgdlg_default_mode = cfdata->default_mode;
e_border_button_bindings_grab_all();
e_config_save_queue(); e_config_save_queue();
return 1; return 1;
} }

View File

@ -64,9 +64,7 @@ _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
if (e_config->use_e_cursor != cfdata->use_e_cursor) changed = 1; if (e_config->use_e_cursor != cfdata->use_e_cursor) changed = 1;
e_border_button_bindings_ungrab_all();
e_config->use_e_cursor = cfdata->use_e_cursor; e_config->use_e_cursor = cfdata->use_e_cursor;
e_border_button_bindings_grab_all();
e_config_save_queue(); e_config_save_queue();
if (changed) if (changed)
@ -112,13 +110,11 @@ _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
if (e_config->use_e_cursor != cfdata->use_e_cursor) changed = 1; if (e_config->use_e_cursor != cfdata->use_e_cursor) changed = 1;
if (e_config->cursor_size != cfdata->cursor_size) changed = 1; if (e_config->cursor_size != cfdata->cursor_size) changed = 1;
e_border_button_bindings_ungrab_all();
e_config->use_e_cursor = cfdata->use_e_cursor; e_config->use_e_cursor = cfdata->use_e_cursor;
if (cfdata->cursor_size <= 0) cfdata->cursor_size = 1; if (cfdata->cursor_size <= 0) cfdata->cursor_size = 1;
e_config->cursor_size = cfdata->cursor_size; e_config->cursor_size = cfdata->cursor_size;
e_border_button_bindings_grab_all();
e_config_save_queue(); e_config_save_queue();
if (changed) if (changed)
{ {
Evas_List *l; Evas_List *l;

View File

@ -81,11 +81,9 @@ _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
static int static int
_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{ {
e_border_button_bindings_ungrab_all();
e_config->exebuf_max_exe_list = cfdata->max_exe_list; e_config->exebuf_max_exe_list = cfdata->max_exe_list;
e_config->exebuf_max_eap_list = cfdata->max_eap_list; e_config->exebuf_max_eap_list = cfdata->max_eap_list;
e_config->exebuf_scroll_animate = cfdata->scroll_animate; e_config->exebuf_scroll_animate = cfdata->scroll_animate;
e_border_button_bindings_grab_all();
e_config_save_queue(); e_config_save_queue();
return 1; return 1;
} }
@ -118,7 +116,6 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
static int static int
_advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{ {
e_border_button_bindings_ungrab_all();
e_config->exebuf_max_exe_list = cfdata->max_exe_list; e_config->exebuf_max_exe_list = cfdata->max_exe_list;
e_config->exebuf_max_eap_list = cfdata->max_eap_list; e_config->exebuf_max_eap_list = cfdata->max_eap_list;
e_config->exebuf_scroll_animate = cfdata->scroll_animate; e_config->exebuf_scroll_animate = cfdata->scroll_animate;
@ -129,7 +126,6 @@ _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
e_config->exebuf_pos_min_h = cfdata->pos_min_h; e_config->exebuf_pos_min_h = cfdata->pos_min_h;
e_config->exebuf_pos_max_w = cfdata->pos_max_w; e_config->exebuf_pos_max_w = cfdata->pos_max_w;
e_config->exebuf_pos_max_h = cfdata->pos_max_h; e_config->exebuf_pos_max_h = cfdata->pos_max_h;
e_border_button_bindings_grab_all();
e_config_save_queue(); e_config_save_queue();
return 1; return 1;

View File

@ -72,11 +72,9 @@ _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
static int static int
_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{ {
e_border_button_bindings_ungrab_all();
e_config->menu_eap_name_show = cfdata->menu_eap_name_show; e_config->menu_eap_name_show = cfdata->menu_eap_name_show;
e_config->menu_eap_generic_show = cfdata->menu_eap_generic_show; e_config->menu_eap_generic_show = cfdata->menu_eap_generic_show;
e_config->menu_eap_comment_show = cfdata->menu_eap_comment_show; e_config->menu_eap_comment_show = cfdata->menu_eap_comment_show;
e_border_button_bindings_grab_all();
e_config_save_queue(); e_config_save_queue();
return 1; return 1;
} }
@ -101,7 +99,6 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
static int static int
_advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{ {
e_border_button_bindings_ungrab_all();
e_config->menu_eap_name_show = cfdata->menu_eap_name_show; e_config->menu_eap_name_show = cfdata->menu_eap_name_show;
e_config->menu_eap_generic_show = cfdata->menu_eap_generic_show; e_config->menu_eap_generic_show = cfdata->menu_eap_generic_show;
e_config->menu_eap_comment_show = cfdata->menu_eap_comment_show; e_config->menu_eap_comment_show = cfdata->menu_eap_comment_show;
@ -119,7 +116,6 @@ _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
e_config->menus_click_drag_timeout = cfdata->menus_click_drag_timeout; e_config->menus_click_drag_timeout = cfdata->menus_click_drag_timeout;
e_config->menu_autoscroll_margin = cfdata->menu_autoscroll_margin; e_config->menu_autoscroll_margin = cfdata->menu_autoscroll_margin;
e_config->menu_autoscroll_cursor_margin = cfdata->menu_autoscroll_cursor_margin; e_config->menu_autoscroll_cursor_margin = cfdata->menu_autoscroll_cursor_margin;
e_border_button_bindings_grab_all();
e_config_save_queue(); e_config_save_queue();
return 1; return 1;
} }

View File

@ -68,10 +68,8 @@ _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
static int static int
_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{ {
e_border_button_bindings_ungrab_all();
if (cfdata->framerate <= 0.0) cfdata->framerate = 1.0; if (cfdata->framerate <= 0.0) cfdata->framerate = 1.0;
e_config->framerate = cfdata->framerate; e_config->framerate = cfdata->framerate;
e_border_button_bindings_grab_all();
e_config_save_queue(); e_config_save_queue();
return 1; return 1;
} }
@ -97,7 +95,6 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
static int static int
_advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{ {
e_border_button_bindings_ungrab_all();
if (cfdata->framerate <= 0.0) cfdata->framerate = 1.0; if (cfdata->framerate <= 0.0) cfdata->framerate = 1.0;
e_config->framerate = cfdata->framerate; e_config->framerate = cfdata->framerate;
e_config->cache_flush_interval = cfdata->cache_flush_interval; e_config->cache_flush_interval = cfdata->cache_flush_interval;
@ -105,7 +102,6 @@ _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
e_config->image_cache = (cfdata->image_cache * 1024); e_config->image_cache = (cfdata->image_cache * 1024);
e_config->edje_cache = cfdata->edje_cache; e_config->edje_cache = cfdata->edje_cache;
e_config->edje_collection_cache = cfdata->edje_collection_cache; e_config->edje_collection_cache = cfdata->edje_collection_cache;
e_border_button_bindings_grab_all();
e_config_save_queue(); e_config_save_queue();
return 1; return 1;
} }

View File

@ -0,0 +1,66 @@
#include "e.h"
static void *_create_data(E_Config_Dialog *cfd);
static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
static int _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
static Evas_Object *_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata);
struct _E_Config_Dialog_Data
{
int dummy;
};
EAPI E_Config_Dialog *
e_int_config_shelf(E_Container *con)
{
E_Config_Dialog *cfd;
E_Config_Dialog_View *v;
v = E_NEW(E_Config_Dialog_View, 1);
v->create_cfdata = _create_data;
v->free_cfdata = _free_data;
v->basic.apply_cfdata = _basic_apply_data;
v->basic.create_widgets = _basic_create_widgets;
v->advanced.apply_cfdata = NULL;
v->advanced.create_widgets = NULL;
cfd = e_config_dialog_new(con, _("Shelf Settings"), NULL, 0, v, NULL);
return cfd;
}
static void
_fill_data(E_Config_Dialog_Data *cfdata)
{
}
static void *
_create_data(E_Config_Dialog *cfd)
{
E_Config_Dialog_Data *cfdata;
cfdata = E_NEW(E_Config_Dialog_Data, 1);
_fill_data(cfdata);
return cfdata;
}
static void
_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{
free(cfdata);
}
static int
_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{
return 1;
}
static Evas_Object *
_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
{
Evas_Object *o;
o = e_widget_list_add(evas, 0, 0);
return o;
}

View File

@ -0,0 +1,9 @@
#ifdef E_TYPEDEFS
#else
#ifndef E_INT_CONFIG_SHELF_H
#define E_INT_CONFIG_SHELF_H
EAPI E_Config_Dialog *e_int_config_shelf(E_Container *con);
#endif
#endif

View File

@ -52,11 +52,8 @@ _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
static int static int
_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{ {
e_border_button_bindings_ungrab_all();
e_config->show_splash = cfdata->show_splash; e_config->show_splash = cfdata->show_splash;
e_border_button_bindings_grab_all();
e_config_save_queue(); e_config_save_queue();
return 1; return 1;
} }

View File

@ -96,7 +96,6 @@ _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
static int static int
_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{ {
e_border_button_bindings_ungrab_all();
e_config->winlist_list_show_iconified = cfdata->list_show_iconified; e_config->winlist_list_show_iconified = cfdata->list_show_iconified;
e_config->winlist_list_show_other_desk_windows = cfdata->list_show_other_desk_windows; e_config->winlist_list_show_other_desk_windows = cfdata->list_show_other_desk_windows;
e_config->winlist_list_show_other_screen_windows = cfdata->list_show_other_screen_windows; e_config->winlist_list_show_other_screen_windows = cfdata->list_show_other_screen_windows;
@ -107,7 +106,6 @@ _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
e_config->winlist_scroll_animate = cfdata->scroll_animate; e_config->winlist_scroll_animate = cfdata->scroll_animate;
e_config->winlist_list_focus_while_selecting = cfdata->list_focus_while_selecting; e_config->winlist_list_focus_while_selecting = cfdata->list_focus_while_selecting;
e_config->winlist_list_raise_while_selecting = cfdata->list_raise_while_selecting; e_config->winlist_list_raise_while_selecting = cfdata->list_raise_while_selecting;
e_border_button_bindings_grab_all();
e_config_save_queue(); e_config_save_queue();
return 1; return 1;
@ -158,7 +156,6 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
static int static int
_advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{ {
e_border_button_bindings_ungrab_all();
e_config->winlist_list_show_iconified = cfdata->list_show_iconified; e_config->winlist_list_show_iconified = cfdata->list_show_iconified;
e_config->winlist_list_show_other_desk_windows = cfdata->list_show_other_desk_windows; e_config->winlist_list_show_other_desk_windows = cfdata->list_show_other_desk_windows;
e_config->winlist_list_show_other_screen_windows = cfdata->list_show_other_screen_windows; e_config->winlist_list_show_other_screen_windows = cfdata->list_show_other_screen_windows;
@ -177,7 +174,6 @@ _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
e_config->winlist_pos_min_h = cfdata->pos_min_h; e_config->winlist_pos_min_h = cfdata->pos_min_h;
e_config->winlist_pos_max_w = cfdata->pos_max_w; e_config->winlist_pos_max_w = cfdata->pos_max_w;
e_config->winlist_pos_max_h = cfdata->pos_max_h; e_config->winlist_pos_max_h = cfdata->pos_max_h;
e_border_button_bindings_grab_all();
e_config_save_queue(); e_config_save_queue();
return 1; return 1;

View File

@ -122,8 +122,6 @@ _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
cfdata->escfg->fit_size = cfdata->fit_size; cfdata->escfg->fit_size = cfdata->fit_size;
cfdata->escfg->size = cfdata->size; cfdata->escfg->size = cfdata->size;
printf("%i %i %i\n", cfdata->fit_along, cfdata->fit_size, cfdata->size);
if (cfdata->escfg->style) evas_stringshare_del(cfdata->escfg->style); if (cfdata->escfg->style) evas_stringshare_del(cfdata->escfg->style);
cfdata->escfg->style = evas_stringshare_add(cfdata->style); cfdata->escfg->style = evas_stringshare_add(cfdata->style);
if (cfdata->layering == 0) if (cfdata->layering == 0)
@ -174,7 +172,7 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
CFStyle *cfs; CFStyle *cfs;
/* FIXME: this is just raw config now - it needs UI improvments */ /* FIXME: this is just raw config now - it needs UI improvments */
o = e_widget_list_add(evas, 1, 1); o = e_widget_list_add(evas, 0, 1);
o2 = e_widget_list_add(evas, 0, 0); o2 = e_widget_list_add(evas, 0, 0);