- exebuf: only create param items for executables that exist

- calc/aspell, dont show in agregator. looks bad to have only text items in icon view
- calc: show plugin item in aggregator
- files: fix files plugin to provide items for 'object'
- files: make browse action show inheriting folder for files, content for dirs
- help: hide view on input (other than up/down)


SVN revision: 49125
This commit is contained in:
Hannes Janetzek 2010-05-22 06:35:46 +00:00
parent 0a06d5d298
commit 965f96fb14
9 changed files with 276 additions and 251 deletions

View File

@ -182,19 +182,24 @@ _item_exe_add(Plugin *p, const char *exe, int match)
return app; return app;
} }
static void static int
_add_executables(Plugin *p, const char *input) _add_executables(Plugin *p, const char *input)
{ {
Eina_List *l; Eina_List *l;
char *file, *space; char *file, *space;
int len, match, cnt = 0; int len = 0, match, cnt = 0, found = 0;
if (input) if (input)
{ {
if ((space = strchr(input, ' '))) if ((space = strchr(input, ' ')))
len = (space - input); {
input = eina_stringshare_add_length(input, (space - input));
}
else else
len = strlen(input); {
input = eina_stringshare_add(input);
}
len = strlen(input);
} }
EINA_LIST_FOREACH(exe_list, l, file) EINA_LIST_FOREACH(exe_list, l, file)
@ -207,10 +212,17 @@ _add_executables(Plugin *p, const char *input)
else if ((match = evry->fuzzy_match(file, input))) else if ((match = evry->fuzzy_match(file, input)))
{ {
_item_exe_add(p, file, match); _item_exe_add(p, file, match);
if (!strncmp(input, file, len))
found = 1;
cnt++; cnt++;
} }
if (cnt > 100) break; if (cnt > 50) break;
} }
IF_RELEASE(input);
return found;
} }
static Eina_Bool static Eina_Bool
@ -228,7 +240,7 @@ _hist_exe_get_cb(const Eina_Hash *hash, const void *key, void *data, void *fdata
{ {
app = NULL; app = NULL;
if (strcmp(hi->plugin, EVRY_PLUGIN(p)->name)) if (strcmp(hi->plugin, EVRY_PLUGIN(p)->name))
continue; continue;
@ -277,15 +289,16 @@ _fetch_exe(Evry_Plugin *plugin, const char *input)
if (input) if (input)
{ {
GET_ITEM(it, p->command); if (_add_executables(p, input))
EVRY_ITEM_LABEL_SET(it, input); {
IF_RELEASE(it->id); GET_ITEM(it, p->command);
it->id = eina_stringshare_ref(it->label); EVRY_ITEM_LABEL_SET(it, input);
p->command->file = eina_stringshare_ref(it->id); IF_RELEASE(p->command->file);
it->fuzzy_match = 15; p->command->file = eina_stringshare_ref(it->label);
EVRY_PLUGIN_ITEM_APPEND(p, it); it->fuzzy_match = 1;
evry->item_changed(it, 0, 0); EVRY_PLUGIN_ITEM_APPEND(p, it);
_add_executables(p, input); evry->item_changed(it, 0, 0);
}
} }
EINA_LIST_FOREACH(plugin->items, l, it) EINA_LIST_FOREACH(plugin->items, l, it)
@ -965,7 +978,7 @@ _plugins_init(const Evry_API *api)
p->complete = &_complete; p->complete = &_complete;
p->config_path = "extensions/everything-apps"; p->config_path = "extensions/everything-apps";
_plugins = eina_list_append(_plugins, p); _plugins = eina_list_append(_plugins, p);
if (evry->plugin_register(p, EVRY_PLUGIN_SUBJECT, 1)) if (evry->plugin_register(p, EVRY_PLUGIN_SUBJECT, 3))
p->config->min_query = 5; p->config->min_query = 5;
p = EVRY_PLUGIN_NEW(Plugin, N_("Applications"), NULL, EVRY_TYPE_APP, p = EVRY_PLUGIN_NEW(Plugin, N_("Applications"), NULL, EVRY_TYPE_APP,

View File

@ -397,10 +397,10 @@ _plugins_init(const Evry_API *_api)
{ {
Plugin_Config *pc = _plug->config; Plugin_Config *pc = _plug->config;
pc->view_mode = VIEW_MODE_LIST; pc->view_mode = VIEW_MODE_LIST;
pc->aggregate = EINA_TRUE; pc->aggregate = EINA_FALSE;
pc->top_level = EINA_FALSE; /* pc->top_level = EINA_FALSE; */
pc->trigger = eina_stringshare_add(TRIGGER); pc->trigger = eina_stringshare_add(TRIGGER);
/* pc->trigger_only = EINA_TRUE; */ pc->trigger_only = EINA_TRUE;
pc->min_query = 4; pc->min_query = 4;
} }

View File

@ -128,6 +128,7 @@ _cb_action_performed(void *data, int type, void *event)
if (!strcmp(it->label, it2->label)) if (!strcmp(it->label, it2->label))
{ {
p->items = eina_list_promote_list(p->items, l); p->items = eina_list_promote_list(p->items, l);
evry->item_changed(it, 0, 1);
EVRY_PLUGIN_UPDATE(p, EVRY_UPDATE_ADD); EVRY_PLUGIN_UPDATE(p, EVRY_UPDATE_ADD);
return 1; return 1;
} }
@ -140,7 +141,7 @@ _cb_action_performed(void *data, int type, void *event)
it2 = EVRY_ITEM_NEW(Evry_Item, p, it_old->label, NULL, NULL); it2 = EVRY_ITEM_NEW(Evry_Item, p, it_old->label, NULL, NULL);
it2->context = eina_stringshare_ref(p->name); it2->context = eina_stringshare_ref(p->name);
p->items = eina_list_prepend(p->items, it2); p->items = eina_list_prepend(p->items, it2);
evry->item_changed(it2, 0, 1);
EVRY_PLUGIN_UPDATE(p, EVRY_UPDATE_ADD); EVRY_PLUGIN_UPDATE(p, EVRY_UPDATE_ADD);
return 1; return 1;
@ -248,7 +249,10 @@ _plugins_init(const Evry_API *_api)
Plugin_Config *pc = _plug->config; Plugin_Config *pc = _plug->config;
pc->view_mode = VIEW_MODE_LIST; pc->view_mode = VIEW_MODE_LIST;
pc->trigger = eina_stringshare_add("="); pc->trigger = eina_stringshare_add("=");
pc->trigger_only = EINA_TRUE; /* pc->trigger_only = EINA_TRUE; */
pc->aggregate = EINA_FALSE;
pc->top_level = EINA_FALSE;
pc->min_query = 3;
} }
return EINA_TRUE; return EINA_TRUE;

View File

@ -2,7 +2,10 @@
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
*/ */
/* TODO option for maximum items to cache */ /***************************************************
TODO option for maximum items to cache
TODO keep common list for recent file instances
*/
#include "e.h" #include "e.h"
#include "e_mod_main.h" #include "e_mod_main.h"
@ -466,7 +469,8 @@ _scan_end_func(void *data)
{ {
GET_FILE(file, item); GET_FILE(file, item);
if ((!(item->hi) && (hi = evry->history_item_add(item, NULL, NULL)))) if (!(item->hi) &&
(hi = evry->history_item_add(item, NULL, NULL)))
{ {
hi->last_used = SIX_DAYS_AGO; hi->last_used = SIX_DAYS_AGO;
hi->usage = MIN_USAGE * (double) cnt++; hi->usage = MIN_USAGE * (double) cnt++;
@ -594,26 +598,37 @@ _begin(Evry_Plugin *plugin, const Evry_Item *it)
if (it) if (it)
{ {
const char *dir = NULL; const char *dir = NULL;
/* provide object */
if ((CHECK_TYPE(it, EVRY_TYPE_FILE)) || if ((CHECK_TYPE(it, EVRY_TYPE_FILE)) ||
(CHECK_SUBTYPE(it, EVRY_TYPE_FILE))) (CHECK_SUBTYPE(it, EVRY_TYPE_FILE)))
{ {
/* browse */
GET_FILE(file, it); GET_FILE(file, it);
if (!evry->file_path_get(file)) if (!evry->file_path_get(file))
return NULL; return NULL;
char *tmp = ecore_file_dir_get(file->path); if (!ecore_file_is_dir(file->path))
dir = eina_stringshare_add(tmp); {
E_FREE(tmp); char *tmp = ecore_file_dir_get(file->path);
dir = eina_stringshare_add(tmp);
E_FREE(tmp);
}
else
{
dir = eina_stringshare_add(file->path);
}
}
else
{
/* provide object */
if (!CHECK_TYPE(it, EVRY_TYPE_ACTION))
return NULL;
} }
else return NULL;
if (!dir) if (!dir)
dir = eina_stringshare_add(e_user_homedir_get()); dir = eina_stringshare_add(e_user_homedir_get());
p = E_NEW(Plugin, 1); EVRY_PLUGIN_INSTANCE(p, plugin);
p->base = *plugin;
p->base.items = NULL;
p->directory = dir; p->directory = dir;
p->parent = EINA_FALSE; p->parent = EINA_FALSE;
_read_directory(p); _read_directory(p);
@ -621,9 +636,7 @@ _begin(Evry_Plugin *plugin, const Evry_Item *it)
else else
{ {
/* provide subject */ /* provide subject */
p = E_NEW(Plugin, 1); EVRY_PLUGIN_INSTANCE(p, plugin);
p->base = *plugin;
p->base.items = NULL;
p->min_query = plugin->config->min_query; p->min_query = plugin->config->min_query;
if (_conf->show_homedir) if (_conf->show_homedir)
@ -1072,10 +1085,7 @@ _recentf_browse(Evry_Plugin *plugin, const Evry_Item *it)
!ecore_file_is_dir(file->path)) !ecore_file_is_dir(file->path))
return NULL; return NULL;
p = E_NEW(Plugin, 1); EVRY_PLUGIN_INSTANCE(p, plugin);
p->base = *plugin;
p->base.items = NULL;
p->directory = eina_stringshare_add(file->path); p->directory = eina_stringshare_add(file->path);
p->parent = EINA_TRUE; p->parent = EINA_TRUE;
@ -1282,30 +1292,27 @@ _plugins_init(const Evry_API *api)
_mime_dir = eina_stringshare_add("inode/directory"); _mime_dir = eina_stringshare_add("inode/directory");
_mime_mount = eina_stringshare_add("inode/mountpoint"); _mime_mount = eina_stringshare_add("inode/mountpoint");
#define PLUGIN_NEW(_name, _icon, _begin, _finish, _fetch) \ #define PLUGIN_NEW(_name, _icon, _begin, _finish, _fetch, _browse) \
p = EVRY_PLUGIN_NEW(Evry_Plugin, _name, _icon, EVRY_TYPE_FILE, \ p = EVRY_PLUGIN_NEW(Evry_Plugin, _name, _icon, EVRY_TYPE_FILE, \
_begin, _finish, _fetch, NULL); \ _begin, _finish, _fetch, NULL); \
p->config_path = "extensions/everything-files"; \ p->browse = &_browse; \
_plugins = eina_list_append(_plugins, p); \ p->config_path = "extensions/everything-files"; \
_plugins = eina_list_append(_plugins, p); \
PLUGIN_NEW(N_("Files"), _module_icon, PLUGIN_NEW(N_("Files"), _module_icon, _begin, _finish, _fetch, _browse);
_begin, _finish, _fetch);
p->browse = &_browse;
p->input_type = EVRY_TYPE_FILE; p->input_type = EVRY_TYPE_FILE;
if (evry->plugin_register(p, EVRY_PLUGIN_SUBJECT, 2)) if (evry->plugin_register(p, EVRY_PLUGIN_SUBJECT, 2))
p->config->min_query = 1; p->config->min_query = 1;
PLUGIN_NEW(N_("Files"), _module_icon, PLUGIN_NEW(N_("Files"), _module_icon, _begin, _finish, _fetch, _browse);
_begin, _finish, _fetch);
p->browse = &_browse;
evry->plugin_register(p, EVRY_PLUGIN_OBJECT, 2); evry->plugin_register(p, EVRY_PLUGIN_OBJECT, 2);
if (_conf->show_recent || _conf->search_recent) if (_conf->show_recent || _conf->search_recent)
{ {
PLUGIN_NEW(N_("Recent Files"), _module_icon, PLUGIN_NEW(N_("Recent Files"), _module_icon,
_recentf_begin, _finish, _recentf_fetch); _recentf_begin, _finish, _recentf_fetch, _recentf_browse);
p->browse = &_recentf_browse;
if (evry->plugin_register(p, EVRY_PLUGIN_SUBJECT, 3)) if (evry->plugin_register(p, EVRY_PLUGIN_SUBJECT, 3))
{ {
p->config->top_level = EINA_FALSE; p->config->top_level = EINA_FALSE;
@ -1313,8 +1320,8 @@ _plugins_init(const Evry_API *api)
} }
PLUGIN_NEW(N_("Recent Files"), _module_icon, PLUGIN_NEW(N_("Recent Files"), _module_icon,
_recentf_begin, _finish, _recentf_fetch); _recentf_begin, _finish, _recentf_fetch, _recentf_browse);
p->browse = &_recentf_browse;
if (evry->plugin_register(p, EVRY_PLUGIN_OBJECT, 3)) if (evry->plugin_register(p, EVRY_PLUGIN_OBJECT, 3))
{ {
p->config->top_level = EINA_FALSE; p->config->top_level = EINA_FALSE;

View File

@ -359,7 +359,7 @@ _config_init()
/* setup defaults */ /* setup defaults */
IFMODCFG(0x0001); IFMODCFG(0x0001);
evry_conf->rel_x = 0.5; evry_conf->rel_x = 0.5;
evry_conf->rel_y = 0.32; evry_conf->rel_y = 0.33;
evry_conf->width = 435; evry_conf->width = 435;
evry_conf->height = 415; evry_conf->height = 415;
evry_conf->scroll_animate = 1; evry_conf->scroll_animate = 1;
@ -372,9 +372,6 @@ _config_init()
evry_conf->cycle_mode = 0; evry_conf->cycle_mode = 0;
evry_conf->history_sort_mode = 0; evry_conf->history_sort_mode = 0;
evry_conf->first_run = EINA_TRUE; evry_conf->first_run = EINA_TRUE;
IFMODCFGEND;
IFMODCFG(0x0002);
evry_conf->width = 435; evry_conf->width = 435;
evry_conf->height = 415; evry_conf->height = 415;
evry_conf->rel_y = 0.40; evry_conf->rel_y = 0.40;
@ -420,7 +417,7 @@ _config_free(void)
/* action callback */ /* action callback */
static Ecore_Idle_Enterer *idler = NULL; static Ecore_Idle_Enterer *_idler = NULL;
static const char *_params = NULL; static const char *_params = NULL;
static int static int
@ -430,6 +427,8 @@ _e_mod_run_defer_cb(void *data)
zone = data; zone = data;
if (zone) evry_show(zone, _params); if (zone) evry_show(zone, _params);
_idler = NULL;
return 0; return 0;
} }
@ -456,9 +455,10 @@ _e_mod_action_cb(E_Object *obj, const char *params)
IF_RELEASE(_params); IF_RELEASE(_params);
if (params && params[0]) if (params && params[0])
_params = eina_stringshare_add(params); _params = eina_stringshare_add(params);
/* if (zone) evry_show(zone, _params); */
if (idler) ecore_idle_enterer_del(idler); if (_idler) ecore_idle_enterer_del(_idler);
ecore_idle_enterer_add(_e_mod_run_defer_cb, zone); _idler = ecore_idle_enterer_add(_e_mod_run_defer_cb, zone);
} }
/* menu item callback(s) */ /* menu item callback(s) */

View File

@ -209,6 +209,7 @@ void evry_clear_input(Evry_Plugin *p);
Evas_Object *evry_icon_mime_get(const char *mime, Evas *e); Evas_Object *evry_icon_mime_get(const char *mime, Evas *e);
Evas_Object *evry_icon_theme_get(const char *icon, Evas *e); Evas_Object *evry_icon_theme_get(const char *icon, Evas *e);
int evry_fuzzy_match(const char *str, const char *match); int evry_fuzzy_match(const char *str, const char *match);
int evry_fuzzy_match_len(const char *str, const char *match, int len);
Eina_List *evry_fuzzy_match_sort(Eina_List *items); Eina_List *evry_fuzzy_match_sort(Eina_List *items);
int evry_util_exec_app(const Evry_Item *it_app, const Evry_Item *it_file); int evry_util_exec_app(const Evry_Item *it_app, const Evry_Item *it_file);
char *evry_util_url_escape(const char *string, int inlength); char *evry_util_url_escape(const char *string, int inlength);
@ -296,10 +297,11 @@ void evry_history_free(void);
int evry_browse_item(Evry_Item *it); int evry_browse_item(Evry_Item *it);
int evry_browse_back(Evry_Selector *sel); int evry_browse_back(Evry_Selector *sel);
void evry_plugin_action(int finished); void evry_plugin_action(int finished);
int evry_state_push(Evry_Selector *sel, Eina_List *plugins); int evry_state_push(Evry_Selector *sel, Eina_List *plugins);
void evry_selectors_switch(int dir); void evry_selectors_switch(int dir);
int evry_view_toggle(Evry_State *s, const char *trigger);
extern Evry_History *evry_hist; extern Evry_History *evry_hist;
extern Evry_Config *evry_conf; extern Evry_Config *evry_conf;

View File

@ -49,7 +49,6 @@ static void _evry_list_win_clear(int hide);
static void _evry_view_clear(Evry_State *s); static void _evry_view_clear(Evry_State *s);
static void _evry_view_update(Evry_State *s, Evry_Plugin *plugin); static void _evry_view_update(Evry_State *s, Evry_Plugin *plugin);
static int _evry_view_key_press(Evry_State *s, Ecore_Event_Key *ev); static int _evry_view_key_press(Evry_State *s, Ecore_Event_Key *ev);
static int _evry_view_toggle(Evry_State *s, const char *trigger);
static void _evry_view_show(Evry_View *v); static void _evry_view_show(Evry_View *v);
static void _evry_view_hide(Evry_View *v, int slide); static void _evry_view_hide(Evry_View *v, int slide);
@ -60,6 +59,30 @@ static int _evry_cb_key_down(void *data, int type, void *event);
static int _evry_cb_selection_notify(void *data, int type, void *event); static int _evry_cb_selection_notify(void *data, int type, void *event);
static int _evry_cb_mouse(void *data, int type, void *event); static int _evry_cb_mouse(void *data, int type, void *event);
/* local subsystem globals */
static Evry_Window *win = NULL;
static Ecore_X_Window input_window = 0;
#define SUBJ_SEL win->selectors[0]
#define ACTN_SEL win->selectors[1]
#define OBJ_SEL win->selectors[2]
#define CUR_SEL win->selector
/* externally accessible functions */
int
evry_init(void)
{
return 1;
}
int
evry_shutdown(void)
{
evry_hide(0);
return 1;
}
static int static int
_evry_aggregator_fetch(Evry_Selector *sel, const char *input) _evry_aggregator_fetch(Evry_Selector *sel, const char *input)
{ {
@ -81,25 +104,6 @@ _evry_aggregator_fetch(Evry_Selector *sel, const char *input)
return 1; return 1;
} }
/* local subsystem globals */
static Evry_Window *win = NULL;
static Ecore_X_Window input_window = 0;
/* externally accessible functions */
int
evry_init(void)
{
return 1;
}
int
evry_shutdown(void)
{
evry_hide(0);
return 1;
}
static int static int
_evry_cb_item_changed(void *data, int type, void *event) _evry_cb_item_changed(void *data, int type, void *event)
{ {
@ -126,7 +130,7 @@ static int
_cb_show_timer(void *data) _cb_show_timer(void *data)
{ {
Evry_Window *win = data; Evry_Window *win = data;
Evry_Selector *sel = win->selector; Evry_Selector *sel = CUR_SEL;
win->show_timer = NULL; win->show_timer = NULL;
@ -137,7 +141,7 @@ _cb_show_timer(void *data)
if (evry_conf->first_run) if (evry_conf->first_run)
{ {
_evry_view_toggle(s, "?"); evry_view_toggle(s, "?");
evry_conf->first_run = EINA_FALSE; evry_conf->first_run = EINA_FALSE;
} }
else else
@ -167,24 +171,24 @@ evry_show(E_Zone *zone, const char *params)
return 1; return 1;
if (!(params) && if (!(params) &&
(win->selector == win->selectors[2]) && (CUR_SEL == OBJ_SEL) &&
(win->selector->state && win->selector->state->cur_item)) ((CUR_SEL)->state && (CUR_SEL)->state->cur_item))
{ {
_evry_selectors_shift(1); _evry_selectors_shift(1);
return 1; return 1;
} }
if (!(params && eina_list_count(win->selectors[0]->states) == 1)) if (!(params && eina_list_count((SUBJ_SEL)->states) == 1))
evry_hide(1); evry_hide(1);
if (win && win->selector && params) if (win && CUR_SEL && params)
{ {
EINA_LIST_FOREACH(win->selectors[0]->plugins, l, p) EINA_LIST_FOREACH((SUBJ_SEL)->plugins, l, p)
if (!strcmp(params, p->name)) break; if (!strcmp(params, p->name)) break;
_evry_plugin_select(win->selector->state, p); _evry_plugin_select((CUR_SEL)->state, p);
_evry_selector_update(win->selector); _evry_selector_update(CUR_SEL);
_evry_view_update(win->selector->state, p); _evry_view_update((CUR_SEL)->state, p);
} }
return 1; return 1;
} }
@ -257,8 +261,8 @@ evry_show(E_Zone *zone, const char *params)
e_popup_show(win->popup); e_popup_show(win->popup);
_evry_selector_subjects_get(params); _evry_selector_subjects_get(params);
_evry_selector_update(win->selectors[0]); _evry_selector_update(SUBJ_SEL);
_evry_selector_activate(win->selectors[0]); _evry_selector_activate(SUBJ_SEL);
if (!evry_conf->hide_input) if (!evry_conf->hide_input)
edje_object_signal_emit(win->o_main, "e,state,entry_show", "e"); edje_object_signal_emit(win->o_main, "e,state,entry_show", "e");
@ -277,33 +281,33 @@ evry_hide(int clear)
if (!win) return; if (!win) return;
if ((clear && win->selector) && if ((clear && CUR_SEL) &&
((eina_list_count(win->selectors[0]->states) > 1) || ((eina_list_count((SUBJ_SEL)->states) > 1) ||
((win->selectors[0]->state) && (((SUBJ_SEL)->state) &&
(win->selectors[0]->state->input[0])))) ((SUBJ_SEL)->state->input[0]))))
{ {
int slide = 0; int slide = 0;
Evry_Selector *sel; Evry_Selector *sel;
Evry_State *s; Evry_State *s;
if (win->selector != win->selectors[0]) if (CUR_SEL != SUBJ_SEL)
{ {
if (win->selector == win->selectors[1]) if (CUR_SEL == ACTN_SEL)
evry_selectors_switch(-1); evry_selectors_switch(-1);
else if (win->selector == win->selectors[2]) else if (CUR_SEL == OBJ_SEL)
evry_selectors_switch(1); evry_selectors_switch(1);
} }
/* just to be sure */ /* just to be sure */
win->selector = win->selectors[0]; CUR_SEL = SUBJ_SEL;
while (win->selector->states->next) while ((CUR_SEL)->states->next)
{ {
slide = 1; slide = 1;
_evry_state_pop(win->selector); _evry_state_pop(CUR_SEL);
} }
sel = win->selector; sel = CUR_SEL;
s = sel->state; s = sel->state;
_evry_clear(sel); _evry_clear(sel);
@ -372,14 +376,14 @@ _evry_selectors_shift(int dir)
_evry_selector_new(win, EVRY_PLUGIN_ACTION); _evry_selector_new(win, EVRY_PLUGIN_ACTION);
_evry_selector_new(win, EVRY_PLUGIN_OBJECT); _evry_selector_new(win, EVRY_PLUGIN_OBJECT);
win->selector = win->selectors[0]; CUR_SEL = SUBJ_SEL;
sel = win->selector; sel = CUR_SEL;
_evry_selector_signal_emit(sel, "e,state,selected"); _evry_selector_signal_emit(sel, "e,state,selected");
_evry_selector_item_update(win->selectors[0]); _evry_selector_item_update(SUBJ_SEL);
_evry_selector_item_update(win->selectors[1]); _evry_selector_item_update(ACTN_SEL);
_evry_selector_item_update(win->selectors[2]); _evry_selector_item_update(OBJ_SEL);
/* was checked before. anyway */ /* was checked before. anyway */
if ((s = sel->state) && (s->cur_item)) if ((s = sel->state) && (s->cur_item))
@ -391,20 +395,20 @@ _evry_selectors_shift(int dir)
} }
else if ((dir < 0) && (win->level > 0)) else if ((dir < 0) && (win->level > 0))
{ {
_evry_selector_item_clear(win->selectors[0]); _evry_selector_item_clear(SUBJ_SEL);
_evry_selector_free(win->selectors[1]); _evry_selector_free(ACTN_SEL);
_evry_selector_free(win->selectors[2]); _evry_selector_free(OBJ_SEL);
win->selectors = win->sel_list; win->selectors = win->sel_list;
win->sel_list[3] = NULL; win->sel_list[3] = NULL;
win->selector = NULL; CUR_SEL = NULL;
edje_object_signal_emit(win->o_main, edje_object_signal_emit(win->o_main,
"e,state,object_selector_show", "e"); "e,state,object_selector_show", "e");
_evry_selector_item_update(win->selectors[0]); _evry_selector_item_update(SUBJ_SEL);
_evry_selector_item_update(win->selectors[1]); _evry_selector_item_update(ACTN_SEL);
_evry_selector_item_update(win->selectors[2]); _evry_selector_item_update(OBJ_SEL);
_evry_selector_activate(win->selectors[2]); _evry_selector_activate(OBJ_SEL);
win->level = 0; win->level = 0;
@ -422,7 +426,7 @@ evry_clear_input(Evry_Plugin *p)
if (!(s = p->state)) if (!(s = p->state))
return; return;
if (s->selector != win->selector) return; if (s->selector != CUR_SEL) return;
if (s->inp[0] != 0) if (s->inp[0] != 0)
{ {
@ -517,7 +521,7 @@ static int
_evry_timer_cb_actions_get(void *data) _evry_timer_cb_actions_get(void *data)
{ {
Evry_Item *it = data; Evry_Item *it = data;
Evry_Selector *sel = win->selectors[1]; Evry_Selector *sel = ACTN_SEL;
Evry_State *s; Evry_State *s;
sel->update_timer = NULL; sel->update_timer = NULL;
@ -525,7 +529,7 @@ _evry_timer_cb_actions_get(void *data)
_evry_selector_actions_get(it); _evry_selector_actions_get(it);
_evry_selector_update(sel); _evry_selector_update(sel);
if (win->selector == sel && win->selector->state) if (CUR_SEL == sel && (CUR_SEL)->state)
{ {
s = sel->state; s = sel->state;
if (s->view) if (s->view)
@ -541,7 +545,7 @@ static void
_evry_selector_update_actions(Evry_Selector *sel) _evry_selector_update_actions(Evry_Selector *sel)
{ {
Evry_Item *it = sel->state->cur_item; Evry_Item *it = sel->state->cur_item;
sel = win->selectors[1]; sel = ACTN_SEL;
if (sel->update_timer) if (sel->update_timer)
ecore_timer_del(sel->update_timer); ecore_timer_del(sel->update_timer);
@ -565,7 +569,7 @@ evry_item_select(const Evry_State *state, Evry_Item *it)
if (s == sel->state) if (s == sel->state)
{ {
_evry_selector_update(sel); _evry_selector_update(sel);
if (win->selector == win->selectors[0]) if (CUR_SEL == SUBJ_SEL)
_evry_selector_update_actions(sel); _evry_selector_update_actions(sel);
} }
} }
@ -658,12 +662,12 @@ evry_plugin_update(Evry_Plugin *p, int action)
} }
/* switch back to subject selector when no current items */ /* switch back to subject selector when no current items */
if ((sel == win->selectors[0]) && if ((sel == SUBJ_SEL) &&
(!(s->plugin) || !(s->plugin->items)) && (!(s->plugin) || !(s->plugin->items)) &&
(win->selector == win->selectors[1])) (CUR_SEL == ACTN_SEL))
{ {
evry_selectors_switch(-1); evry_selectors_switch(-1);
_evry_clear(win->selectors[0]); _evry_clear(SUBJ_SEL);
} }
} }
else if (action == EVRY_UPDATE_REFRESH) else if (action == EVRY_UPDATE_REFRESH)
@ -682,7 +686,7 @@ _evry_list_win_show(void)
if (win->visible) return; if (win->visible) return;
win->visible = EINA_TRUE; win->visible = EINA_TRUE;
_evry_list_win_update(win->selector->state); _evry_list_win_update((CUR_SEL)->state);
edje_object_signal_emit(win->o_main, "e,state,list_show", "e"); edje_object_signal_emit(win->o_main, "e,state,list_show", "e");
edje_object_signal_emit(win->o_main, "e,state,entry_show", "e"); edje_object_signal_emit(win->o_main, "e,state,entry_show", "e");
@ -691,18 +695,19 @@ _evry_list_win_show(void)
static void static void
_evry_list_win_clear(int hide) _evry_list_win_clear(int hide)
{ {
Evry_Selector *sel = CUR_SEL;
if (!win->visible) return; if (!win->visible) return;
if (win->selector->state) if (sel->state)
_evry_view_clear(win->selector->state); _evry_view_clear(sel->state);
if (hide) if (hide)
{ {
win->visible = EINA_FALSE; win->visible = EINA_FALSE;
edje_object_signal_emit(win->o_main, "e,state,list_hide", "e"); edje_object_signal_emit(win->o_main, "e,state,list_hide", "e");
if (evry_conf->hide_input &&
(!win->selector->state || !win->selector->state->input || if (evry_conf->hide_input && (!(sel->state) || (sel->state->input[0])))
strlen(win->selector->state->input) == 0))
edje_object_signal_emit(win->o_main, "e,state,entry_hide", "e"); edje_object_signal_emit(win->o_main, "e,state,entry_hide", "e");
} }
} }
@ -798,7 +803,7 @@ _evry_cb_mouse(void *data, int type, void *event)
Evry_State *s; Evry_State *s;
if ((win->mouse_button == 3) && if ((win->mouse_button == 3) &&
(s = win->selector->state) && (s->cur_item) && (s = (CUR_SEL)->state) && (s->cur_item) &&
(CHECK_TYPE(s->cur_item, EVRY_TYPE_FILE)) && (CHECK_TYPE(s->cur_item, EVRY_TYPE_FILE)) &&
(!E_INSIDE(ev->x, ev->y, pop->x + pop->zone->x, (!E_INSIDE(ev->x, ev->y, pop->x + pop->zone->x,
pop->y + pop->zone->y, pop->w, pop->h))) pop->y + pop->zone->y, pop->w, pop->h)))
@ -893,7 +898,6 @@ _evry_window_free(Evry_Window *win)
e_popup_hide(win->popup); e_popup_hide(win->popup);
evas_event_freeze(win->popup->evas); evas_event_freeze(win->popup->evas);
evas_object_del(win->o_main); evas_object_del(win->o_main);
/* evas_event_thaw(win->popup->evas); */
e_object_del(E_OBJECT(win->popup)); e_object_del(E_OBJECT(win->popup));
E_FREE(win); E_FREE(win);
} }
@ -919,7 +923,7 @@ _evry_selector_cb_wheel(void *data, Evas *e, Evas_Object *obj, void *event_info)
if (ev->z > 0) if (ev->z > 0)
{ {
/* FIXME dont loose selector 2 state until state 0 changed: */ /* FIXME dont loose selector 2 state until state 0 changed: */
if (win->selector != win->selectors[2]) if (CUR_SEL != OBJ_SEL)
evry_selectors_switch(1); evry_selectors_switch(1);
} }
else if (ev->z < 0) else if (ev->z < 0)
@ -934,7 +938,7 @@ _evry_selector_cb_up(void *data, Evas *e, Evas_Object *obj, void *event_info)
Evas_Event_Mouse_Up *ev = event_info; Evas_Event_Mouse_Up *ev = event_info;
Evry_Selector *sel = data; Evry_Selector *sel = data;
if (sel == win->selector) if (sel == CUR_SEL)
return; return;
if (ev->button == 3) if (ev->button == 3)
@ -943,24 +947,24 @@ _evry_selector_cb_up(void *data, Evas *e, Evas_Object *obj, void *event_info)
} }
else if (ev->button == 1) else if (ev->button == 1)
{ {
if (sel == win->selectors[0]) if (sel == SUBJ_SEL)
{ {
if (win->selector == win->selectors[1]) if (CUR_SEL == ACTN_SEL)
evry_selectors_switch(-1); evry_selectors_switch(-1);
else else
evry_selectors_switch(1); evry_selectors_switch(1);
} }
else if (sel == win->selectors[1]) else if (sel == ACTN_SEL)
{ {
if (win->selector == win->selectors[0]) if (CUR_SEL == SUBJ_SEL)
evry_selectors_switch(1); evry_selectors_switch(1);
else else
evry_selectors_switch(-1); evry_selectors_switch(-1);
} }
else if (sel == win->selectors[2]) else if (sel == OBJ_SEL)
{ {
if (win->selector == win->selectors[1]) if (CUR_SEL == ACTN_SEL)
evry_selectors_switch(1); evry_selectors_switch(1);
} }
} }
@ -1022,7 +1026,7 @@ _evry_selector_free(Evry_Selector *sel)
{ {
_evry_selector_item_clear(sel); _evry_selector_item_clear(sel);
if (win->visible && (sel == win->selector)) if (win->visible && (sel == CUR_SEL))
_evry_view_clear(sel->state); _evry_view_clear(sel->state);
while (sel->states) while (sel->states)
@ -1043,11 +1047,11 @@ static void
_evry_selector_signal_emit(Evry_Selector *sel, const char *msg) _evry_selector_signal_emit(Evry_Selector *sel, const char *msg)
{ {
char buf[1024]; char buf[1024];
if (sel == win->selectors[0]) if (sel == SUBJ_SEL)
snprintf(buf, sizeof(buf), "subject_selector:%s", msg); snprintf(buf, sizeof(buf), "subject_selector:%s", msg);
else if (sel == win->selectors[1]) else if (sel == ACTN_SEL)
snprintf(buf, sizeof(buf), "action_selector:%s", msg); snprintf(buf, sizeof(buf), "action_selector:%s", msg);
else if (sel == win->selectors[2]) else if (sel == OBJ_SEL)
snprintf(buf, sizeof(buf), "object_selector:%s", msg); snprintf(buf, sizeof(buf), "object_selector:%s", msg);
edje_object_signal_emit(win->o_main, buf, "e"); edje_object_signal_emit(win->o_main, buf, "e");
@ -1057,11 +1061,11 @@ static void
_evry_selector_label_set(Evry_Selector *sel, const char *part, const char *label) _evry_selector_label_set(Evry_Selector *sel, const char *part, const char *label)
{ {
char buf[1024]; char buf[1024];
if (sel == win->selectors[0]) if (sel == SUBJ_SEL)
snprintf(buf, sizeof(buf), "subject_selector:%s", part); snprintf(buf, sizeof(buf), "subject_selector:%s", part);
else if (sel == win->selectors[1]) else if (sel == ACTN_SEL)
snprintf(buf, sizeof(buf), "action_selector:%s", part); snprintf(buf, sizeof(buf), "action_selector:%s", part);
else if (sel == win->selectors[2]) else if (sel == OBJ_SEL)
snprintf(buf, sizeof(buf), "object_selector:%s", part); snprintf(buf, sizeof(buf), "object_selector:%s", part);
edje_object_part_text_set(win->o_main, buf, label); edje_object_part_text_set(win->o_main, buf, label);
@ -1072,14 +1076,13 @@ _evry_selector_activate(Evry_Selector *sel)
{ {
Evry_State *s; Evry_State *s;
if (win->selector) if (CUR_SEL)
{ {
Evry_Selector *sel = win->selector; Evry_Selector *cur = CUR_SEL;
_evry_selector_label_set(sel, "e.text.plugin", ""); _evry_selector_signal_emit(cur, "e,state,unselected");
_evry_selector_signal_emit(sel, "e,state,unselected");
if (sel->state && sel->state->view) if (cur->state && cur->state->view)
_evry_view_hide(sel->state->view, 0); _evry_view_hide(cur->state->view, 0);
_evry_list_win_clear(evry_conf->hide_list); _evry_list_win_clear(evry_conf->hide_list);
} }
@ -1090,7 +1093,7 @@ _evry_selector_activate(Evry_Selector *sel)
return; return;
} }
win->selector = sel; CUR_SEL = sel;
_evry_selector_signal_emit(sel, "e,state,selected"); _evry_selector_signal_emit(sel, "e,state,selected");
@ -1121,11 +1124,11 @@ _evry_selector_thumb_gen(void *data, Evas_Object *obj, void *event_info)
e_icon_size_get(sel->o_thumb, &w, &h); e_icon_size_get(sel->o_thumb, &w, &h);
edje_extern_object_aspect_set(sel->o_thumb, EDJE_ASPECT_CONTROL_BOTH, w, h); edje_extern_object_aspect_set(sel->o_thumb, EDJE_ASPECT_CONTROL_BOTH, w, h);
if (sel == win->selectors[0]) if (sel == SUBJ_SEL)
edje_object_part_swallow(win->o_main, "subject_selector:e.swallow.thumb", sel->o_thumb); edje_object_part_swallow(win->o_main, "subject_selector:e.swallow.thumb", sel->o_thumb);
else if (sel == win->selectors[1]) else if (sel == ACTN_SEL)
edje_object_part_swallow(win->o_main, "action_selector:e.swallow.thumb", sel->o_thumb); edje_object_part_swallow(win->o_main, "action_selector:e.swallow.thumb", sel->o_thumb);
else if (sel == win->selectors[2]) else if (sel == OBJ_SEL)
edje_object_part_swallow(win->o_main, "object_selector:e.swallow.thumb", sel->o_thumb); edje_object_part_swallow(win->o_main, "object_selector:e.swallow.thumb", sel->o_thumb);
evas_object_show(sel->o_thumb); evas_object_show(sel->o_thumb);
@ -1211,7 +1214,7 @@ _evry_selector_item_update(Evry_Selector *sel)
/* no items for this state - clear selector */ /* no items for this state - clear selector */
_evry_selector_label_set(sel, "e.text.label",""); _evry_selector_label_set(sel, "e.text.label","");
if (sel == win->selector && s && s->plugin) if (sel == CUR_SEL && s && s->plugin)
_evry_selector_label_set(sel, "e.text.plugin", _evry_selector_label_set(sel, "e.text.plugin",
EVRY_ITEM(s->plugin)->label); EVRY_ITEM(s->plugin)->label);
else else
@ -1224,11 +1227,8 @@ _evry_selector_item_update(Evry_Selector *sel)
{ {
_evry_selector_label_set(sel, "e.text.label", it->label); _evry_selector_label_set(sel, "e.text.label", it->label);
if (sel == win->selector) _evry_selector_label_set(sel, "e.text.plugin",
_evry_selector_label_set(sel, "e.text.plugin", EVRY_ITEM(it->plugin)->label);
EVRY_ITEM(s->plugin)->label);
else
_evry_selector_label_set(sel, "e.text.plugin", "");
if (!_evry_selector_thumb(sel, it)) if (!_evry_selector_thumb(sel, it))
{ {
@ -1246,11 +1246,11 @@ _evry_selector_item_update(Evry_Selector *sel)
if (o) if (o)
{ {
if (sel == win->selectors[0]) if (sel == SUBJ_SEL)
edje_object_part_swallow(win->o_main, "subject_selector:e.swallow.icons", o); edje_object_part_swallow(win->o_main, "subject_selector:e.swallow.icons", o);
else if (sel == win->selectors[1]) else if (sel == ACTN_SEL)
edje_object_part_swallow(win->o_main, "action_selector:e.swallow.icons", o); edje_object_part_swallow(win->o_main, "action_selector:e.swallow.icons", o);
else if (sel == win->selectors[2]) else if (sel == OBJ_SEL)
edje_object_part_swallow(win->o_main, "object_selector:e.swallow.icons", o); edje_object_part_swallow(win->o_main, "object_selector:e.swallow.icons", o);
evas_object_show(o); evas_object_show(o);
@ -1299,7 +1299,7 @@ _evry_selector_update(Evry_Selector *sel)
_evry_selector_item_update(sel); _evry_selector_item_update(sel);
if (sel == win->selectors[0]) if (sel == SUBJ_SEL)
{ {
if (item_changed) if (item_changed)
{ {
@ -1307,7 +1307,7 @@ _evry_selector_update(Evry_Selector *sel)
} }
else else
{ {
sel = win->selectors[1]; sel = ACTN_SEL;
if (sel->update_timer) if (sel->update_timer)
ecore_timer_del(sel->update_timer); ecore_timer_del(sel->update_timer);
sel->update_timer = NULL; sel->update_timer = NULL;
@ -1318,7 +1318,7 @@ _evry_selector_update(Evry_Selector *sel)
static void static void
_evry_list_win_update(Evry_State *s) _evry_list_win_update(Evry_State *s)
{ {
if (s != win->selector->state) return; if (s != (CUR_SEL)->state) return;
if (!win->visible) return; if (!win->visible) return;
/* if (s->changed) */ /* if (s->changed) */
@ -1330,7 +1330,7 @@ _evry_selector_subjects_get(const char *plugin_name)
{ {
Eina_List *l, *plugins = NULL; Eina_List *l, *plugins = NULL;
Evry_Plugin *p, *pp; Evry_Plugin *p, *pp;
Evry_Selector *sel = win->selectors[0]; Evry_Selector *sel = SUBJ_SEL;
EINA_LIST_FOREACH(sel->plugins, l, p) EINA_LIST_FOREACH(sel->plugins, l, p)
{ {
@ -1364,7 +1364,7 @@ _evry_selector_actions_get(Evry_Item *it)
{ {
Eina_List *l, *plugins = NULL; Eina_List *l, *plugins = NULL;
Evry_Plugin *p, *pp; Evry_Plugin *p, *pp;
Evry_Selector *sel = win->selectors[1]; Evry_Selector *sel = ACTN_SEL;
while (sel->state) while (sel->state)
_evry_state_pop(sel); _evry_state_pop(sel);
@ -1398,13 +1398,13 @@ _evry_selector_objects_get(Evry_Action *act)
{ {
Eina_List *l, *plugins = NULL; Eina_List *l, *plugins = NULL;
Evry_Plugin *p, *pp; Evry_Plugin *p, *pp;
Evry_Selector *sel = win->selectors[2]; Evry_Selector *sel = OBJ_SEL;
Evry_Item *it; Evry_Item *it;
while (sel->state) while (sel->state)
_evry_state_pop(sel); _evry_state_pop(sel);
it = win->selectors[1]->state->cur_item; it = (ACTN_SEL)->state->cur_item;
EINA_LIST_FOREACH(sel->plugins, l, p) EINA_LIST_FOREACH(sel->plugins, l, p)
{ {
@ -1645,7 +1645,7 @@ evry_browse_item(Evry_Item *it)
int int
evry_browse_back(Evry_Selector *sel) evry_browse_back(Evry_Selector *sel)
{ {
if (!sel) sel = win->selector; if (!sel) sel = CUR_SEL;
Evry_State *s = sel->state; Evry_State *s = sel->state;
DBG("%p", sel); DBG("%p", sel);
@ -1658,7 +1658,7 @@ evry_browse_back(Evry_Selector *sel)
s = sel->state; s = sel->state;
_evry_aggregator_fetch(sel, s->input); _evry_aggregator_fetch(sel, s->input);
_evry_selector_update(sel); _evry_selector_update(sel);
if (sel == win->selectors[0]) if (sel == SUBJ_SEL)
_evry_selector_update_actions(sel); _evry_selector_update_actions(sel);
_evry_update_text_label(s); _evry_update_text_label(s);
_evry_view_show(s->view); _evry_view_show(s->view);
@ -1670,61 +1670,62 @@ evry_browse_back(Evry_Selector *sel)
void void
evry_selectors_switch(int dir) evry_selectors_switch(int dir)
{ {
Evry_State *s = win->selector->state; Evry_State *s = (CUR_SEL)->state;
if (win->show_timer) if (win->show_timer)
_cb_show_timer(NULL); _cb_show_timer(NULL);
if (win->selector->update_timer) if ((CUR_SEL)->update_timer)
{ {
if ((win->selector == win->selectors[0]) || if ((CUR_SEL == SUBJ_SEL) ||
(win->selector == win->selectors[1])) (CUR_SEL == ACTN_SEL))
{ {
_evry_matches_update(win->selector, 0); _evry_matches_update(CUR_SEL, 0);
_evry_selector_update(win->selector); _evry_selector_update(CUR_SEL);
} }
} }
if (win->selector == win->selectors[0] && dir > 0) if (CUR_SEL == SUBJ_SEL && dir > 0)
{ {
if (s->cur_item) if (s->cur_item)
_evry_selector_activate(win->selectors[1]); _evry_selector_activate(ACTN_SEL);
} }
else if (win->selector == win->selectors[1] && dir > 0) else if (CUR_SEL == ACTN_SEL && dir > 0)
{ {
int next_selector = 0; int next_selector = 0;
Evry_Item *it; Evry_Item *it;
if (s && (it = s->cur_item) && if (s && (it = s->cur_item) &&
(it->plugin == win->selector->actions)) (it->plugin == (CUR_SEL)->actions))
{ {
GET_ACTION(act,it); GET_ACTION(act,it);
if (act->it2.type) if (act->it2.type)
{ {
_evry_selector_objects_get(act); _evry_selector_objects_get(act);
_evry_selector_update(win->selectors[2]); _evry_selector_update(OBJ_SEL);
edje_object_signal_emit(win->o_main, "e,state,object_selector_show", "e"); edje_object_signal_emit
(win->o_main, "e,state,object_selector_show", "e");
next_selector = 2; next_selector = 2;
} }
} }
_evry_selector_activate(win->selectors[next_selector]); _evry_selector_activate(win->selectors[next_selector]);
} }
else if (win->selector == win->selectors[1] && dir < 0) else if (CUR_SEL == ACTN_SEL && dir < 0)
{ {
_evry_selector_activate(win->selectors[0]); _evry_selector_activate(SUBJ_SEL);
edje_object_signal_emit(win->o_main, "e,state,object_selector_hide", "e"); edje_object_signal_emit(win->o_main, "e,state,object_selector_hide", "e");
} }
else if (win->selector == win->selectors[2] && dir > 0) else if (CUR_SEL == OBJ_SEL && dir > 0)
{ {
while (win->selector->states) while ((CUR_SEL)->states)
_evry_state_pop(win->selector); _evry_state_pop(CUR_SEL);
edje_object_signal_emit(win->o_main, "e,state,object_selector_hide", "e"); edje_object_signal_emit(win->o_main, "e,state,object_selector_hide", "e");
_evry_selector_activate(win->selectors[0]); _evry_selector_activate(SUBJ_SEL);
} }
else if (win->selector == win->selectors[2] && dir < 0) else if (CUR_SEL == OBJ_SEL && dir < 0)
{ {
_evry_selector_activate(win->selectors[1]); _evry_selector_activate(ACTN_SEL);
} }
} }
static int static int
@ -1749,7 +1750,7 @@ _evry_input_complete(Evry_State *s)
{ {
strncpy(s->input, input, INPUTLEN - 1); strncpy(s->input, input, INPUTLEN - 1);
_evry_update_text_label(s); _evry_update_text_label(s);
_evry_cb_update_timer(win->selector); _evry_cb_update_timer(CUR_SEL);
evry_item_select(s, it); evry_item_select(s, it);
} }
@ -1910,7 +1911,7 @@ _evry_cb_key_down(void *data __UNUSED__, int type __UNUSED__, void *event)
ev->key = "Return"; ev->key = "Return";
} }
if (!win || !(sel = win->selector)) if (!win || !(sel = CUR_SEL))
goto end; goto end;
if (!strcmp(ev->key, "Tab") && if (!strcmp(ev->key, "Tab") &&
@ -1927,6 +1928,7 @@ _evry_cb_key_down(void *data __UNUSED__, int type __UNUSED__, void *event)
if (!win->visible && (!strcmp(ev->key, "Down"))) if (!win->visible && (!strcmp(ev->key, "Down")))
{ {
_evry_list_win_show(); _evry_list_win_show();
goto end;
} }
else if ((!strcmp(ev->key, "ISO_Left_Tab") || else if ((!strcmp(ev->key, "ISO_Left_Tab") ||
(((ev->modifiers & ECORE_EVENT_MODIFIER_CTRL) || (((ev->modifiers & ECORE_EVENT_MODIFIER_CTRL) ||
@ -1955,7 +1957,7 @@ _evry_cb_key_down(void *data __UNUSED__, int type __UNUSED__, void *event)
goto end; goto end;
} }
else if (!strcmp(ev->key, "1")) else if (!strcmp(ev->key, "1"))
_evry_view_toggle(s, NULL); evry_view_toggle(s, NULL);
else if (!strcmp(ev->key, "Return")) else if (!strcmp(ev->key, "Return"))
_evry_plugin_action(sel, 0); _evry_plugin_action(sel, 0);
else if (!strcmp(ev->key, "v")) else if (!strcmp(ev->key, "v"))
@ -1980,7 +1982,7 @@ _evry_cb_key_down(void *data __UNUSED__, int type __UNUSED__, void *event)
else if (!strcmp(ev->key, "Right")) else if (!strcmp(ev->key, "Right"))
{ {
if (!evry_browse_item(sel->state->cur_item) && if (!evry_browse_item(sel->state->cur_item) &&
(sel != win->selectors[2])) (sel != OBJ_SEL))
evry_selectors_switch(1); evry_selectors_switch(1);
} }
else if (!strcmp(ev->key, "Left")) else if (!strcmp(ev->key, "Left"))
@ -2006,7 +2008,7 @@ _evry_cb_key_down(void *data __UNUSED__, int type __UNUSED__, void *event)
{ {
int len = strlen(s->inp); int len = strlen(s->inp);
if (len == 0 && (_evry_view_toggle(s, ev->compose))) if (len == 0 && (evry_view_toggle(s, ev->compose)))
goto end; goto end;
if (len < (INPUTLEN - strlen(ev->compose))) if (len < (INPUTLEN - strlen(ev->compose)))
@ -2168,7 +2170,7 @@ _evry_action_do(Evry_Action *act)
void void
evry_plugin_action(int finished) evry_plugin_action(int finished)
{ {
_evry_plugin_action(win->selector, finished); _evry_plugin_action(CUR_SEL, finished);
} }
static void static void
@ -2178,30 +2180,30 @@ _evry_plugin_action(Evry_Selector *sel, int finished)
Evry_Item *it, *it_subj, *it_act, *it_obj = NULL; Evry_Item *it, *it_subj, *it_act, *it_obj = NULL;
Eina_List *l; Eina_List *l;
if (win->selectors[0]->update_timer) if ((SUBJ_SEL)->update_timer)
{ {
_evry_matches_update(win->selectors[0], 0); _evry_matches_update(SUBJ_SEL, 0);
_evry_selector_update(win->selectors[0]); _evry_selector_update(SUBJ_SEL);
} }
if (!(s_subj = win->selectors[0]->state)) if (!(s_subj = (SUBJ_SEL)->state))
return; return;
if (!(it_subj = s_subj->cur_item)) if (!(it_subj = s_subj->cur_item))
return; return;
if (win->selector == win->selectors[0] && if (CUR_SEL == SUBJ_SEL &&
win->selectors[1]->update_timer) (ACTN_SEL)->update_timer)
{ {
_evry_selector_actions_get(it_subj); _evry_selector_actions_get(it_subj);
if (!win->selectors[1]->state) if (!(ACTN_SEL)->state)
return; return;
_evry_selector_update(win->selectors[1]); _evry_selector_update(ACTN_SEL);
} }
if (!(s_act = win->selectors[1]->state)) if (!(s_act = (ACTN_SEL)->state))
return; return;
if (!(it_act = s_act->cur_item)) if (!(it_act = s_act->cur_item))
@ -2219,14 +2221,14 @@ _evry_plugin_action(Evry_Selector *sel, int finished)
if (act->it2.type) if (act->it2.type)
{ {
/* check if object is provided */ /* check if object is provided */
if ((s_obj = win->selectors[2]->state)) if ((s_obj = (OBJ_SEL)->state))
{ {
it_obj = s_obj->cur_item; it_obj = s_obj->cur_item;
} }
if (!it_obj) if (!it_obj)
{ {
if (win->selectors[1] == win->selector) if (ACTN_SEL == CUR_SEL)
evry_selectors_switch(1); evry_selectors_switch(1);
return; return;
} }
@ -2353,8 +2355,8 @@ _evry_view_key_press(Evry_State *s, Ecore_Event_Key *ev)
return s->view->cb_key_down(s->view, ev); return s->view->cb_key_down(s->view, ev);
} }
static int int
_evry_view_toggle(Evry_State *s, const char *trigger) evry_view_toggle(Evry_State *s, const char *trigger)
{ {
Evry_View *view, *v = NULL; Evry_View *view, *v = NULL;
Eina_List *l, *ll; Eina_List *l, *ll;
@ -2423,17 +2425,17 @@ _evry_matches_update(Evry_Selector *sel, int async)
Evry_Plugin *p; Evry_Plugin *p;
Eina_List *l; Eina_List *l;
Evry_Item *it; Evry_Item *it;
const char *input; const char *input = NULL;
int len_inp = 0;
s->changed = 1; s->changed = 1;
s->request++;
if (s->inp[0]) if (s->inp[0])
input = s->inp; {
else len_inp = strlen(s->inp);
input = NULL; input = s->inp;
}
s->request++;
DBG("matches update %d", s->request);
if (s->sel_items) if (s->sel_items)
eina_list_free(s->sel_items); eina_list_free(s->sel_items);
@ -2459,7 +2461,6 @@ _evry_matches_update(Evry_Selector *sel, int async)
if (!s->cur_plugins && input) if (!s->cur_plugins && input)
{ {
int len_trigger = 0; int len_trigger = 0;
int len_inp = strlen(s->inp);
EINA_LIST_FOREACH(s->plugins, l, p) EINA_LIST_FOREACH(s->plugins, l, p)
{ {
@ -2503,13 +2504,20 @@ _evry_matches_update(Evry_Selector *sel, int async)
{ {
EINA_LIST_FOREACH(s->plugins, l, p) EINA_LIST_FOREACH(s->plugins, l, p)
{ {
/* skip plugins in toplevel which trigger-only */ if (!sel->states->next)
if ((!(sel->states->next)) && {
(sel == win->selectors[0]) && /* skip plugins in toplevel which trigger-only */
(p->config->top_level) && if ((sel == SUBJ_SEL) &&
(p->config->trigger) && (p->config->top_level) &&
(p->config->trigger_only)) (p->config->trigger) &&
continue; (p->config->trigger_only))
continue;
/* skip non-toplevel plugins when input < min_query */
if ((!p->config->top_level) &&
(p->config->min_query > len_inp))
continue;
}
/* dont wait for async plugin. use their current items */ /* dont wait for async plugin. use their current items */
if (!async && p->async_fetch && p->items) if (!async && p->async_fetch && p->items)
@ -2628,7 +2636,7 @@ _evry_cb_selection_notify(void *data, int type, void *event)
{ {
Ecore_X_Event_Selection_Notify *ev; Ecore_X_Event_Selection_Notify *ev;
/* FIXME Evry_Selector *sel = data; */ /* FIXME Evry_Selector *sel = data; */
Evry_State *s = win->selector->state; Evry_State *s = (CUR_SEL)->state;
if (!s || (data != win)) return 1; if (!s || (data != win)) return 1;
if (!win->request_selection) return 1; if (!win->request_selection) return 1;
@ -2646,7 +2654,7 @@ _evry_cb_selection_notify(void *data, int type, void *event)
text_data = ev->data; text_data = ev->data;
strncat(s->input, text_data->text, (INPUTLEN - strlen(s->input)) - 1); strncat(s->input, text_data->text, (INPUTLEN - strlen(s->input)) - 1);
_evry_update(win->selector, 1); _evry_update(CUR_SEL, 1);
} }
} }

View File

@ -2,6 +2,7 @@
static Evry_View *view; static Evry_View *view;
static Evas_Object *o_text = NULL; static Evas_Object *o_text = NULL;
static const Evry_State *state = NULL;
static void static void
_view_clear(Evry_View *v, int slide) _view_clear(Evry_View *v, int slide)
@ -51,8 +52,9 @@ _cb_key_down(Evry_View *v, const Ecore_Event_Key *ev)
e_box_align_set(v->o_list, 0.5, align); e_box_align_set(v->o_list, 0.5, align);
return 1; return 1;
} }
return 0; evry_view_toggle(state, NULL);
return 1;
} }
static Evry_View * static Evry_View *
@ -102,7 +104,8 @@ _view_create(Evry_View *v, const Evry_State *s, const Evas_Object *swallow)
o_text = o; o_text = o;
v->active = 1; v->active = 1;
state = s;
return v; return v;
} }

View File

@ -862,18 +862,6 @@ evry_file_url_get(Evry_Item_File *file)
file->url = eina_stringshare_add(dest); file->url = eina_stringshare_add(dest);
return file->url; return file->url;
/* escaped = _evry_util_url_escape(file->path, 0, 1);
*
* if (escaped)
* {
* snprintf(buf, sizeof(buf), "file://%s", escaped);
* E_FREE(escaped);
*
* file->url = eina_stringshare_add(buf);
*
* return file->url;
* } */
} }
static void static void