parent
75774581ca
commit
db8fad47d1
|
@ -2,7 +2,9 @@
|
|||
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
|
||||
*/
|
||||
|
||||
#include "Evry.h"
|
||||
#include "e.h"
|
||||
#include "e_mod_main.h"
|
||||
#include "evry_api.h"
|
||||
#include "e_mod_main.h"
|
||||
|
||||
typedef struct _Plugin Plugin;
|
||||
|
@ -33,14 +35,20 @@ struct _E_Exe_List
|
|||
Eina_List *list;
|
||||
};
|
||||
|
||||
struct _Module_Config
|
||||
{
|
||||
int version;
|
||||
unsigned char list_executables;
|
||||
E_Config_Dialog *cfd;
|
||||
E_Module *module;
|
||||
struct _Module_Config
|
||||
{
|
||||
int version;
|
||||
unsigned char list_executables;
|
||||
const char *cmd_terminal;
|
||||
const char *cmd_sudo;
|
||||
|
||||
E_Config_Dialog *cfd;
|
||||
E_Module *module;
|
||||
};
|
||||
|
||||
static const Evry_API *evry = NULL;
|
||||
static Evry_Module *evry_module = NULL;
|
||||
|
||||
static Module_Config *_conf;
|
||||
static Evry_Plugin *plug_apps = NULL;
|
||||
static Evry_Plugin *plug_apps2 = NULL;
|
||||
|
@ -61,7 +69,7 @@ static void _scan_executables();
|
|||
static void _hash_free(void *data)
|
||||
{
|
||||
GET_APP(app, data);
|
||||
evry_item_free(EVRY_ITEM(app));
|
||||
EVRY_ITEM_FREE(app);
|
||||
}
|
||||
|
||||
static Evry_Plugin *
|
||||
|
@ -72,13 +80,13 @@ _begin_open_with(Evry_Plugin *plugin, const Evry_Item *item)
|
|||
Efreet_Desktop *d, *d2;
|
||||
const char *mime;
|
||||
const char *path = NULL;
|
||||
|
||||
|
||||
if (CHECK_TYPE(item, EVRY_TYPE_ACTION))
|
||||
{
|
||||
GET_ACTION(act, item);
|
||||
GET_FILE(file, act->it1.item);
|
||||
|
||||
if (!evry_file_path_get(file))
|
||||
if (!evry->file_path_get(file))
|
||||
return NULL;
|
||||
|
||||
path = file->path;
|
||||
|
@ -88,7 +96,7 @@ _begin_open_with(Evry_Plugin *plugin, const Evry_Item *item)
|
|||
{
|
||||
GET_FILE(file, item);
|
||||
|
||||
if (!evry_file_path_get(file))
|
||||
if (!evry->file_path_get(file))
|
||||
return NULL;
|
||||
|
||||
path = file->path;
|
||||
|
@ -115,7 +123,7 @@ _begin_open_with(Evry_Plugin *plugin, const Evry_Item *item)
|
|||
if (!eina_list_data_find_list(p->apps_mime, d))
|
||||
p->apps_mime = eina_list_append(p->apps_mime, d);
|
||||
else
|
||||
efreet_desktop_free(d);
|
||||
efreet_desktop_free(d);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -127,10 +135,10 @@ _begin_open_with(Evry_Plugin *plugin, const Evry_Item *item)
|
|||
p->apps_mime = eina_list_remove(p->apps_mime, d2);
|
||||
efreet_desktop_free(d2);
|
||||
}
|
||||
|
||||
|
||||
p->apps_mime = eina_list_prepend(p->apps_mime, d);
|
||||
}
|
||||
|
||||
|
||||
p->added = eina_hash_string_small_new(_hash_free);
|
||||
|
||||
return plugin;
|
||||
|
@ -142,15 +150,15 @@ _begin(Evry_Plugin *plugin, const Evry_Item *item)
|
|||
GET_PLUGIN(p, plugin);
|
||||
|
||||
DBG("begin %p %p\n", item, _act_open_with);
|
||||
|
||||
|
||||
if (item && (item != _act_open_with))
|
||||
return NULL;
|
||||
|
||||
|
||||
p->added = eina_hash_string_small_new(_hash_free);
|
||||
|
||||
if (_conf->list_executables)
|
||||
_scan_executables();
|
||||
|
||||
|
||||
return plugin;
|
||||
}
|
||||
|
||||
|
@ -161,7 +169,7 @@ _finish(Evry_Plugin *plugin)
|
|||
GET_PLUGIN(p, plugin);
|
||||
Efreet_Desktop *desktop;
|
||||
char *str;
|
||||
|
||||
|
||||
if (p->added)
|
||||
eina_hash_free(p->added);
|
||||
|
||||
|
@ -196,7 +204,7 @@ _finish(Evry_Plugin *plugin)
|
|||
EINA_LIST_FREE(exe_list2, str)
|
||||
free(str);
|
||||
}
|
||||
|
||||
|
||||
p->app_command = NULL;
|
||||
p->app_parameter = NULL;
|
||||
|
||||
|
@ -220,7 +228,7 @@ _finish_mime(Evry_Plugin *plugin)
|
|||
static int
|
||||
_exec_open_file_action(Evry_Action *act)
|
||||
{
|
||||
return evry_util_exec_app(EVRY_ITEM(act), act->it1.item);
|
||||
return evry->util_exec_app(EVRY_ITEM(act), act->it1.item);
|
||||
}
|
||||
|
||||
static Evas_Object *
|
||||
|
@ -233,7 +241,7 @@ _icon_get(Evry_Item *it, Evas *e)
|
|||
o = e_util_desktop_icon_add(app->desktop, 64, e);
|
||||
|
||||
if (!o)
|
||||
o = evry_icon_theme_get("system-run", e);
|
||||
o = evry->icon_theme_get("system-run", e);
|
||||
|
||||
return o;
|
||||
}
|
||||
|
@ -258,7 +266,7 @@ _item_add(Plugin *p, Efreet_Desktop *desktop, const char *file, int match)
|
|||
Efreet_Desktop *d2;
|
||||
int already_refd = 0;
|
||||
const char *exe;
|
||||
|
||||
|
||||
if (file)
|
||||
{
|
||||
Eina_List *l;
|
||||
|
@ -304,7 +312,7 @@ _item_add(Plugin *p, Efreet_Desktop *desktop, const char *file, int match)
|
|||
{
|
||||
exe = file;
|
||||
}
|
||||
|
||||
|
||||
if (!exe) return NULL;
|
||||
|
||||
if ((app = eina_hash_find(p->added, exe)))
|
||||
|
@ -333,7 +341,7 @@ _item_add(Plugin *p, Efreet_Desktop *desktop, const char *file, int match)
|
|||
EVRY_ACTN(app)->remember_context = EINA_TRUE;
|
||||
EVRY_ITEM(app)->id = eina_stringshare_add(desktop->exec);
|
||||
EVRY_ITEM(app)->subtype = EVRY_TYPE_ACTION;
|
||||
|
||||
|
||||
if (desktop->comment)
|
||||
EVRY_ITEM(app)->detail = eina_stringshare_add(desktop->comment);
|
||||
else if (desktop->generic_name)
|
||||
|
@ -347,7 +355,7 @@ _item_add(Plugin *p, Efreet_Desktop *desktop, const char *file, int match)
|
|||
EVRY_ITEM(app)->id = eina_stringshare_add(file);
|
||||
EVRY_ITEM(app)->subtype = EVRY_TYPE_ACTION;
|
||||
}
|
||||
|
||||
|
||||
app->desktop = desktop;
|
||||
|
||||
eina_hash_add(p->added, exe, app);
|
||||
|
@ -358,7 +366,7 @@ _item_add(Plugin *p, Efreet_Desktop *desktop, const char *file, int match)
|
|||
|
||||
if (tmp && strcmp(exe, tmp))
|
||||
{
|
||||
evry_item_ref(EVRY_ITEM(app));
|
||||
EVRY_ITEM_REF(app);
|
||||
eina_hash_add(p->added, tmp, app);
|
||||
}
|
||||
}
|
||||
|
@ -369,11 +377,11 @@ _item_add(Plugin *p, Efreet_Desktop *desktop, const char *file, int match)
|
|||
|
||||
if (strcmp(exe, file))
|
||||
{
|
||||
evry_item_ref(EVRY_ITEM(app));
|
||||
evry->item_ref(EVRY_ITEM(app));
|
||||
eina_hash_add(p->added, file, app);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
EVRY_ITEM(app)->fuzzy_match = match;
|
||||
EVRY_PLUGIN_ITEM_APPEND(p, app);
|
||||
|
||||
|
@ -397,13 +405,13 @@ _add_desktop_list(Plugin *p, Eina_List *apps, const char *input)
|
|||
char *exec = strrchr(desktop->exec, '/');
|
||||
if (!exec++ || !exec) exec = desktop->exec;
|
||||
|
||||
m1 = evry_fuzzy_match(exec, input);
|
||||
m2 = evry_fuzzy_match(desktop->name, input);
|
||||
m1 = evry->fuzzy_match(exec, input);
|
||||
m2 = evry->fuzzy_match(desktop->name, input);
|
||||
|
||||
if (!m1 || (m2 && m2 < m1))
|
||||
m1 = m2;
|
||||
}
|
||||
|
||||
|
||||
if (!input || m1) _item_add(p, desktop, NULL, m1);
|
||||
}
|
||||
}
|
||||
|
@ -432,7 +440,7 @@ _cb_sort(const void *data1, const void *data2)
|
|||
if (it1->fuzzy_match - it2->fuzzy_match)
|
||||
return (it1->fuzzy_match - it2->fuzzy_match);
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -453,18 +461,18 @@ _hist_items_add_cb(const Eina_Hash *hash, const void *key, void *data, void *fda
|
|||
/* ignore executables for parameter */
|
||||
if (!strncmp(key, "_", 1))
|
||||
continue;
|
||||
|
||||
|
||||
if ((d = efreet_util_desktop_exec_find(key)))
|
||||
{
|
||||
app = _item_add(p, d, NULL, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
app = _item_add(p, NULL, (char *) key, 1);
|
||||
if (app && app->desktop)
|
||||
efreet_desktop_ref(app->desktop);
|
||||
}
|
||||
|
||||
|
||||
if (app && app->desktop)
|
||||
{
|
||||
p->apps_hist = eina_list_append(p->apps_hist, app->desktop);
|
||||
|
@ -475,15 +483,6 @@ _hist_items_add_cb(const Eina_Hash *hash, const void *key, void *data, void *fda
|
|||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
_cb_free_item_changed(void *data, void *event)
|
||||
{
|
||||
Evry_Event_Item_Changed *ev = event;
|
||||
|
||||
evry_item_free(ev->item);
|
||||
E_FREE(ev);
|
||||
}
|
||||
|
||||
/* TODO make this an option */
|
||||
static void
|
||||
_add_executables(Plugin *p, const char *input)
|
||||
|
@ -491,33 +490,32 @@ _add_executables(Plugin *p, const char *input)
|
|||
|
||||
Evry_Item_App *app;
|
||||
Evry_Item_App *app2;
|
||||
Evry_Event_Item_Changed *ev;
|
||||
Eina_List *l;
|
||||
char buf[256];
|
||||
char *space, *file;
|
||||
char *space, *file;
|
||||
int found_app = 0;
|
||||
int found_cmd = 0;
|
||||
int len;
|
||||
|
||||
if (!input) goto end;
|
||||
|
||||
|
||||
if ((space = strchr(input, ' ')))
|
||||
len = (space - input);
|
||||
else
|
||||
len = strlen(input);
|
||||
|
||||
|
||||
if (len < 2) goto end;
|
||||
|
||||
|
||||
EINA_LIST_FOREACH(exe_list, l, file)
|
||||
{
|
||||
if (strncmp(file, input, len)) continue;
|
||||
|
||||
|
||||
if (!(app = _item_add(p, NULL, file, 100)))
|
||||
continue;
|
||||
|
||||
if ((space) && (app->desktop))
|
||||
{
|
||||
|
||||
|
||||
/* restore old desktop entry */
|
||||
if (p->app_parameter)
|
||||
{
|
||||
|
@ -544,10 +542,7 @@ _add_executables(Plugin *p, const char *input)
|
|||
if (!eina_list_data_find(p->base.items, app))
|
||||
EVRY_PLUGIN_ITEM_APPEND(p, app);
|
||||
|
||||
ev = E_NEW(Evry_Event_Item_Changed, 1);
|
||||
evry_item_ref(EVRY_ITEM(app));
|
||||
ev->item = EVRY_ITEM(app);
|
||||
ecore_event_add(EVRY_EVENT_ITEM_CHANGED, ev, _cb_free_item_changed, NULL);
|
||||
evry->item_changed(EVRY_ITEM(app), 0, 0);
|
||||
found_app = 1;
|
||||
}
|
||||
|
||||
|
@ -556,7 +551,7 @@ _add_executables(Plugin *p, const char *input)
|
|||
snprintf(buf, sizeof(buf), "_%s_", file);
|
||||
app = _item_add(p, NULL, buf, 100);
|
||||
if (!app) continue;
|
||||
|
||||
|
||||
eina_stringshare_del(EVRY_ITEM(app)->label);
|
||||
eina_stringshare_del(app->file);
|
||||
|
||||
|
@ -586,23 +581,20 @@ _add_executables(Plugin *p, const char *input)
|
|||
|
||||
snprintf(buf, sizeof(buf), "%s %s", file, space);
|
||||
EVRY_ITEM(app)->label = eina_stringshare_add(buf);
|
||||
|
||||
|
||||
app->file = eina_stringshare_add(buf);
|
||||
|
||||
if (!eina_list_data_find(p->base.items, app))
|
||||
EVRY_PLUGIN_ITEM_APPEND(p, app);
|
||||
|
||||
ev = E_NEW(Evry_Event_Item_Changed, 1);
|
||||
evry_item_ref(EVRY_ITEM(app));
|
||||
ev->item = EVRY_ITEM(app);
|
||||
ecore_event_add(EVRY_EVENT_ITEM_CHANGED, ev, _cb_free_item_changed, NULL);
|
||||
evry->item_changed(EVRY_ITEM(app), 0, 0);
|
||||
found_cmd = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
end:
|
||||
|
||||
|
||||
if (!found_app && p->app_parameter)
|
||||
{
|
||||
/* restore old desktop entry */
|
||||
|
@ -613,10 +605,10 @@ _add_executables(Plugin *p, const char *input)
|
|||
EVRY_ITEM(app2)->label = eina_stringshare_add(app2->desktop->name);
|
||||
p->app_parameter = NULL;
|
||||
}
|
||||
|
||||
|
||||
if (!found_cmd && p->app_command)
|
||||
{
|
||||
eina_hash_del_by_data(p->added, p->app_command);
|
||||
eina_hash_del_by_data(p->added, p->app_command);
|
||||
p->app_command = NULL;
|
||||
}
|
||||
}
|
||||
|
@ -629,12 +621,12 @@ _fetch_mime(Evry_Plugin *plugin, const char *input)
|
|||
Evry_Item *it;
|
||||
|
||||
EVRY_PLUGIN_ITEMS_CLEAR(p);
|
||||
|
||||
|
||||
/* add apps for a given mimetype */
|
||||
_add_desktop_list(p, p->apps_mime, input);
|
||||
|
||||
EINA_LIST_FOREACH(plugin->items, l, it)
|
||||
evry_history_item_usage_set(evry_hist->actions, it, input, NULL);
|
||||
evry->history_item_usage_set(it, input, NULL);
|
||||
|
||||
if (input)
|
||||
EVRY_PLUGIN_ITEMS_SORT(plugin, _cb_sort);
|
||||
|
@ -677,7 +669,7 @@ _fetch(Evry_Plugin *plugin, const char *input)
|
|||
|
||||
if (input)
|
||||
{
|
||||
/* .desktop files */
|
||||
/* .desktop files */
|
||||
_add_desktop_list(p, p->apps_all, input);
|
||||
|
||||
/* add executables */
|
||||
|
@ -690,25 +682,25 @@ _fetch(Evry_Plugin *plugin, const char *input)
|
|||
}
|
||||
|
||||
EINA_LIST_FOREACH(plugin->items, l, it)
|
||||
evry_history_item_usage_set(evry_hist->subjects, it, input, NULL);
|
||||
evry->history_item_usage_set(it, input, NULL);
|
||||
|
||||
EVRY_PLUGIN_ITEMS_SORT(plugin, _cb_sort);
|
||||
|
||||
if (!input && !plugin->items)
|
||||
{
|
||||
|
||||
|
||||
/* add history items */
|
||||
if (!p->apps_hist)
|
||||
{
|
||||
History_Types *ht;
|
||||
ht = evry_history_types_get(evry_hist->subjects, EVRY_TYPE_APP);
|
||||
ht = evry->history_types_get(EVRY_TYPE_APP);
|
||||
if (ht)
|
||||
eina_hash_foreach(ht->types, _hist_items_add_cb, p);
|
||||
}
|
||||
else
|
||||
_add_desktop_list(p, p->apps_hist, NULL);
|
||||
}
|
||||
|
||||
|
||||
return !!(plugin->items);
|
||||
}
|
||||
|
||||
|
@ -716,13 +708,13 @@ static int
|
|||
_complete(Evry_Plugin *plugin, const Evry_Item *it, char **input)
|
||||
{
|
||||
GET_APP(app, it);
|
||||
|
||||
|
||||
char buf[128];
|
||||
|
||||
if (app->desktop)
|
||||
{
|
||||
char *space = strchr(app->desktop->exec, ' ');
|
||||
|
||||
|
||||
snprintf(buf, sizeof(buf), "%s ", app->desktop->exec);
|
||||
if (space)
|
||||
buf[1 + space - app->desktop->exec] = '\0';
|
||||
|
@ -731,7 +723,7 @@ _complete(Evry_Plugin *plugin, const Evry_Item *it, char **input)
|
|||
snprintf(buf, sizeof(buf), "%s ", app->file);
|
||||
|
||||
*input = strdup(buf);
|
||||
|
||||
|
||||
return EVRY_COMPLETE_INPUT;
|
||||
}
|
||||
|
||||
|
@ -744,13 +736,13 @@ _exec_app_check_item(Evry_Action *act, const Evry_Item *it)
|
|||
static int
|
||||
_exec_app_action(Evry_Action *act)
|
||||
{
|
||||
return evry_util_exec_app(act->it1.item, act->it2.item);
|
||||
return evry->util_exec_app(act->it1.item, act->it2.item);
|
||||
}
|
||||
|
||||
static int
|
||||
_exec_file_action(Evry_Action *act)
|
||||
{
|
||||
return evry_util_exec_app(act->it2.item, act->it1.item);
|
||||
return evry->util_exec_app(act->it2.item, act->it1.item);
|
||||
}
|
||||
|
||||
static int
|
||||
|
@ -761,18 +753,18 @@ _exec_term_action(Evry_Action *act)
|
|||
char buf[1024];
|
||||
int ret;
|
||||
char *escaped = ecore_file_escape_name(app->file);
|
||||
|
||||
|
||||
tmp = E_NEW(Evry_Item_App, 1);
|
||||
snprintf(buf, sizeof(buf), "%s -hold -e %s",
|
||||
evry_conf->cmd_terminal,
|
||||
_conf->cmd_terminal,
|
||||
(escaped ? escaped : app->file));
|
||||
|
||||
tmp->file = buf;
|
||||
ret = evry_util_exec_app(EVRY_ITEM(tmp), NULL);
|
||||
ret = evry->util_exec_app(EVRY_ITEM(tmp), NULL);
|
||||
|
||||
E_FREE(tmp);
|
||||
E_FREE(escaped);
|
||||
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -797,11 +789,11 @@ _exec_sudo_action(Evry_Action *act)
|
|||
|
||||
tmp = E_NEW(Evry_Item_App, 1);
|
||||
snprintf(buf, sizeof(buf), "%s %s",
|
||||
evry_conf->cmd_sudo,
|
||||
_conf->cmd_sudo,
|
||||
(app->desktop ? app->desktop->exec : app->file));
|
||||
|
||||
tmp->file = buf;
|
||||
ret = evry_util_exec_app(EVRY_ITEM(tmp), NULL);
|
||||
ret = evry->util_exec_app(EVRY_ITEM(tmp), NULL);
|
||||
|
||||
E_FREE(tmp);
|
||||
|
||||
|
@ -913,7 +905,7 @@ _new_app_action(Evry_Action *act)
|
|||
if (app->desktop->icon)
|
||||
desktop->icon = strdup(app->desktop->icon);
|
||||
if (app->desktop->mime_types)
|
||||
desktop->mime_types = eina_list_clone(app->desktop->mime_types);
|
||||
desktop->mime_types = eina_list_clone(app->desktop->mime_types);
|
||||
}
|
||||
if (desktop)
|
||||
e_desktop_edit(e_container_current_get(e_manager_current_get()), desktop);
|
||||
|
@ -921,35 +913,79 @@ _new_app_action(Evry_Action *act)
|
|||
return 1;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_plugins_init(void)
|
||||
static int
|
||||
_open_term_action(Evry_Action *act)
|
||||
{
|
||||
GET_FILE(file, act->it1.item);
|
||||
Evry_Item_App *tmp;
|
||||
char cwd[4096];
|
||||
char *dir;
|
||||
int ret = 0;
|
||||
|
||||
if (!(evry->file_path_get(file)))
|
||||
return 0;
|
||||
|
||||
if (IS_BROWSEABLE(file))
|
||||
dir = strdup(file->path);
|
||||
else
|
||||
dir = ecore_file_dir_get(file->path);
|
||||
|
||||
if (dir)
|
||||
{
|
||||
if (!getcwd(cwd, sizeof(cwd)))
|
||||
return 0;
|
||||
if (chdir(dir))
|
||||
return 0;
|
||||
|
||||
tmp = E_NEW(Evry_Item_App, 1);
|
||||
tmp->file = _conf->cmd_terminal;
|
||||
|
||||
ret = evry->util_exec_app(EVRY_ITEM(tmp), NULL);
|
||||
E_FREE(tmp);
|
||||
E_FREE(dir);
|
||||
if (chdir(cwd))
|
||||
return 0;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int
|
||||
_plugins_init(const Evry_API *api)
|
||||
{
|
||||
Evry_Plugin *p;
|
||||
int prio = 0;
|
||||
Eina_List *l;
|
||||
Evry_Action *act;
|
||||
|
||||
if (!evry_api_version_check(EVRY_API_VERSION))
|
||||
|
||||
if (evry_module->active)
|
||||
return EINA_TRUE;
|
||||
|
||||
evry = api;
|
||||
|
||||
if (!evry->api_version_check(EVRY_API_VERSION))
|
||||
return EINA_FALSE;
|
||||
|
||||
evry_module->active = EINA_TRUE;
|
||||
|
||||
p = EVRY_PLUGIN_NEW(Plugin, N_("Applications"), NULL, EVRY_TYPE_APP,
|
||||
_begin, _finish, _fetch, NULL);
|
||||
p->complete = &_complete;
|
||||
p->config_path = "extensions/everything-apps";
|
||||
evry_plugin_register(p, EVRY_PLUGIN_SUBJECT, 1);
|
||||
evry->plugin_register(p, EVRY_PLUGIN_SUBJECT, 1);
|
||||
plug_apps = p;
|
||||
|
||||
p = EVRY_PLUGIN_NEW(Plugin, N_("Applications"), NULL, EVRY_TYPE_APP,
|
||||
_begin_open_with, _finish, _fetch, NULL);
|
||||
p->complete = &_complete;
|
||||
p->config_path = "extensions/everything-apps";
|
||||
evry_plugin_register(p, EVRY_PLUGIN_OBJECT, 1);
|
||||
evry->plugin_register(p, EVRY_PLUGIN_OBJECT, 1);
|
||||
plug_apps2 = p;
|
||||
|
||||
|
||||
p = EVRY_PLUGIN_NEW(Plugin, N_("Open With..."), NULL, EVRY_TYPE_APP,
|
||||
_begin_open_with, _finish_mime, _fetch_mime, NULL);
|
||||
p->config_path = "extensions/everything-apps";
|
||||
evry_plugin_register(p, EVRY_PLUGIN_ACTION, 1);
|
||||
evry->plugin_register(p, EVRY_PLUGIN_ACTION, 1);
|
||||
plug_action = p;
|
||||
|
||||
act = EVRY_ACTION_NEW(N_("Launch"),
|
||||
|
@ -957,36 +993,36 @@ _plugins_init(void)
|
|||
"everything-launch",
|
||||
_exec_app_action,
|
||||
_exec_app_check_item);
|
||||
_actions = eina_list_append(_actions, act);
|
||||
|
||||
_actions = eina_list_append(_actions, act);
|
||||
|
||||
act = EVRY_ACTION_NEW(N_("Open File..."),
|
||||
EVRY_TYPE_APP, EVRY_TYPE_FILE,
|
||||
"document-open",
|
||||
_exec_app_action,
|
||||
_exec_app_check_item);
|
||||
_actions = eina_list_append(_actions, act);
|
||||
|
||||
_actions = eina_list_append(_actions, act);
|
||||
|
||||
act = EVRY_ACTION_NEW(N_("Run in Terminal"),
|
||||
EVRY_TYPE_APP, 0,
|
||||
"system-run",
|
||||
_exec_term_action,
|
||||
_exec_term_check_item);
|
||||
_actions = eina_list_append(_actions, act);
|
||||
|
||||
_actions = eina_list_append(_actions, act);
|
||||
|
||||
act = EVRY_ACTION_NEW(N_("Edit Application Entry"),
|
||||
EVRY_TYPE_APP, 0,
|
||||
"everything-launch",
|
||||
_edit_app_action,
|
||||
_edit_app_check_item);
|
||||
_actions = eina_list_append(_actions, act);
|
||||
|
||||
|
||||
act = EVRY_ACTION_NEW(N_("New Application Entry"),
|
||||
EVRY_TYPE_APP, 0,
|
||||
"everything-launch",
|
||||
_new_app_action,
|
||||
_new_app_check_item);
|
||||
_actions = eina_list_append(_actions, act);
|
||||
|
||||
|
||||
act = EVRY_ACTION_NEW(N_("Run with Sudo"),
|
||||
EVRY_TYPE_APP, 0,
|
||||
"system-run",
|
||||
|
@ -999,9 +1035,15 @@ _plugins_init(void)
|
|||
_exec_file_action, NULL);
|
||||
_act_open_with = EVRY_ITEM(act);
|
||||
_actions = eina_list_append(_actions, act);
|
||||
|
||||
|
||||
act = EVRY_ACTION_NEW(N_("Open Terminal here"),
|
||||
EVRY_TYPE_FILE, 0,
|
||||
"system-run",
|
||||
_open_term_action, NULL);
|
||||
_actions = eina_list_append(_actions, act);
|
||||
|
||||
EINA_LIST_FOREACH(_actions, l, act)
|
||||
evry_action_register(act, prio++);
|
||||
evry->action_register(act, prio++);
|
||||
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
@ -1010,22 +1052,29 @@ static void
|
|||
_plugins_shutdown(void)
|
||||
{
|
||||
Evry_Action *act;
|
||||
|
||||
|
||||
if (!evry_module->active)
|
||||
return;
|
||||
|
||||
EVRY_PLUGIN_FREE(plug_apps);
|
||||
EVRY_PLUGIN_FREE(plug_apps2);
|
||||
EVRY_PLUGIN_FREE(plug_action);
|
||||
|
||||
EINA_LIST_FREE(_actions, act)
|
||||
evry_action_free(act);
|
||||
evry->action_free(act);
|
||||
|
||||
evry_module->active = EINA_FALSE;
|
||||
}
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
static E_Config_DD *conf_edd = NULL;
|
||||
|
||||
struct _E_Config_Dialog_Data
|
||||
struct _E_Config_Dialog_Data
|
||||
{
|
||||
int list_executables;
|
||||
char *cmd_terminal;
|
||||
char *cmd_sudo;
|
||||
};
|
||||
|
||||
static void *_create_data(E_Config_Dialog *cfd);
|
||||
|
@ -1035,7 +1084,7 @@ static Evas_Object *_basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dia
|
|||
static int _basic_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
|
||||
|
||||
static E_Config_Dialog *
|
||||
_conf_dialog(E_Container *con, const char *params)
|
||||
_conf_dialog(E_Container *con, const char *params)
|
||||
{
|
||||
E_Config_Dialog *cfd = NULL;
|
||||
E_Config_Dialog_View *v = NULL;
|
||||
|
@ -1053,8 +1102,8 @@ _conf_dialog(E_Container *con, const char *params)
|
|||
|
||||
snprintf(buf, sizeof(buf), "%s/e-module.edj", _conf->module->dir);
|
||||
|
||||
cfd = e_config_dialog_new(con, _("Everything Applications"), "everything-apps",
|
||||
"extensions/everything-apps", buf, 0, v, NULL);
|
||||
cfd = e_config_dialog_new(con, _("Everything Applications"), "everything-apps",
|
||||
"extensions/everything-apps", buf, 0, v, NULL);
|
||||
|
||||
/* e_dialog_resizable_set(cfd->dia, 1); */
|
||||
_conf->cfd = cfd;
|
||||
|
@ -1063,7 +1112,7 @@ _conf_dialog(E_Container *con, const char *params)
|
|||
|
||||
/* Local Functions */
|
||||
static void *
|
||||
_create_data(E_Config_Dialog *cfd)
|
||||
_create_data(E_Config_Dialog *cfd)
|
||||
{
|
||||
E_Config_Dialog_Data *cfdata = NULL;
|
||||
|
||||
|
@ -1072,51 +1121,85 @@ _create_data(E_Config_Dialog *cfd)
|
|||
return cfdata;
|
||||
}
|
||||
|
||||
static void
|
||||
_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||
static void
|
||||
_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
_conf->cfd = NULL;
|
||||
E_FREE(cfdata);
|
||||
}
|
||||
|
||||
static void
|
||||
_fill_data(E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
cfdata->list_executables = _conf->list_executables;
|
||||
}
|
||||
|
||||
static Evas_Object *
|
||||
_basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
|
||||
_basic_create(E_Config_Dialog *cfd, Evas *e, E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
Evas_Object *o = NULL, *of = NULL, *ow = NULL;
|
||||
|
||||
o = e_widget_list_add(evas, 0, 0);
|
||||
o = e_widget_list_add(e, 0, 0);
|
||||
|
||||
of = e_widget_framelist_add(evas, _("General"), 0);
|
||||
of = e_widget_framelist_add(e, _("General"), 0);
|
||||
e_widget_framelist_content_align_set(of, 0.0, 0.0);
|
||||
ow = e_widget_check_add(evas, _("Show Executables"),
|
||||
&(cfdata->list_executables));
|
||||
ow = e_widget_check_add(e, _("Show Executables"),
|
||||
&(cfdata->list_executables));
|
||||
e_widget_framelist_object_append(of, ow);
|
||||
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
of = e_widget_framelist_add(e, _("Commands"), 0);
|
||||
ow = e_widget_label_add(e, _("Terminal Command"));
|
||||
e_widget_framelist_object_append(of, ow);
|
||||
ow = e_widget_entry_add(e, &(cfdata->cmd_terminal), NULL, NULL, NULL);
|
||||
e_widget_framelist_object_append(of, ow);
|
||||
|
||||
ow = e_widget_label_add(e, _("Sudo GUI"));
|
||||
e_widget_framelist_object_append(of, ow);
|
||||
ow = e_widget_entry_add(e, &(cfdata->cmd_sudo), NULL, NULL, NULL);
|
||||
e_widget_framelist_object_append(of, ow);
|
||||
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
static int
|
||||
_basic_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||
static void
|
||||
_fill_data(E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
_conf->list_executables = cfdata->list_executables;
|
||||
|
||||
#define CP(_name) cfdata->_name = strdup(_conf->_name);
|
||||
#define C(_name) cfdata->_name = _conf->_name;
|
||||
C(list_executables);
|
||||
CP(cmd_terminal);
|
||||
CP(cmd_sudo);
|
||||
#undef CP
|
||||
#undef C
|
||||
}
|
||||
|
||||
static int
|
||||
_basic_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
#define CP(_name) \
|
||||
if (_conf->_name) \
|
||||
eina_stringshare_del(_conf->_name); \
|
||||
_conf->_name = eina_stringshare_add(cfdata->_name);
|
||||
#define C(_name) _conf->_name = cfdata->_name;
|
||||
C(list_executables);
|
||||
CP(cmd_terminal);
|
||||
CP(cmd_sudo);
|
||||
#undef CP
|
||||
#undef C
|
||||
|
||||
e_config_domain_save("module.everything-apps", conf_edd, _conf);
|
||||
|
||||
e_config_save_queue();
|
||||
/* e_config_save_queue(); */
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void
|
||||
static void
|
||||
_conf_new(void)
|
||||
{
|
||||
_conf = E_NEW(Module_Config, 1);
|
||||
_conf->version = (MOD_CONFIG_FILE_EPOCH << 16);
|
||||
if (!_conf)
|
||||
{
|
||||
_conf = E_NEW(Module_Config, 1);
|
||||
_conf->version = (MOD_CONFIG_FILE_EPOCH << 16);
|
||||
}
|
||||
|
||||
#define IFMODCFG(v) if ((_conf->version & 0xffff) < v) {
|
||||
#define IFMODCFGEND }
|
||||
|
@ -1126,23 +1209,40 @@ _conf_new(void)
|
|||
_conf->list_executables = 1;
|
||||
IFMODCFGEND;
|
||||
|
||||
IFMODCFG(0x009d);
|
||||
_conf->cmd_terminal = eina_stringshare_add("/usr/bin/xterm");
|
||||
_conf->cmd_sudo = eina_stringshare_add("/usr/bin/gksudo --preserve-env");
|
||||
IFMODCFGEND;
|
||||
|
||||
_conf->version = MOD_CONFIG_FILE_VERSION;
|
||||
|
||||
e_config_save_queue();
|
||||
/* e_config_save_queue(); */
|
||||
}
|
||||
|
||||
static void
|
||||
_conf_free(void)
|
||||
{
|
||||
if (!_conf) return;
|
||||
|
||||
IF_RELEASE(_conf->cmd_sudo);
|
||||
IF_RELEASE(_conf->cmd_terminal);
|
||||
E_FREE(_conf);
|
||||
}
|
||||
|
||||
static void
|
||||
_conf_init(E_Module *m)
|
||||
{
|
||||
char buf[4096];
|
||||
|
||||
snprintf(buf, sizeof(buf), "%s/e-module.edj", m->dir);
|
||||
|
||||
e_configure_registry_category_add("extensions", 80, _("Extensions"),
|
||||
NULL, "preferences-extensions");
|
||||
e_configure_registry_category_add
|
||||
("extensions", 80, _("Extensions"), NULL,
|
||||
"preferences-extensions");
|
||||
|
||||
e_configure_registry_item_add("extensions/everything-apps", 110, _("Everything Applications"),
|
||||
NULL, buf, _conf_dialog);
|
||||
e_configure_registry_item_add
|
||||
("extensions/everything-apps", 110,
|
||||
_("Everything Applications"),
|
||||
NULL, buf, _conf_dialog);
|
||||
|
||||
conf_edd = E_CONFIG_DD_NEW("Module_Config", Module_Config);
|
||||
|
||||
|
@ -1152,30 +1252,27 @@ _conf_init(E_Module *m)
|
|||
#define D conf_edd
|
||||
E_CONFIG_VAL(D, T, version, INT);
|
||||
E_CONFIG_VAL(D, T, list_executables, UCHAR);
|
||||
E_CONFIG_VAL(D, T, cmd_terminal, STR);
|
||||
E_CONFIG_VAL(D, T, cmd_sudo, STR);
|
||||
#undef T
|
||||
#undef D
|
||||
|
||||
_conf = e_config_domain_load("module.everything-apps", conf_edd);
|
||||
|
||||
if (_conf)
|
||||
{
|
||||
if (!e_util_module_config_check
|
||||
(_("Everything Applications"), _conf->version,
|
||||
MOD_CONFIG_FILE_EPOCH, MOD_CONFIG_FILE_VERSION))
|
||||
{
|
||||
E_FREE(_conf);
|
||||
}
|
||||
}
|
||||
|
||||
if (!_conf) _conf_new();
|
||||
if (_conf && !e_util_module_config_check
|
||||
(_("Everything Applications"), _conf->version,
|
||||
MOD_CONFIG_FILE_EPOCH, MOD_CONFIG_FILE_VERSION))
|
||||
_conf_free();
|
||||
|
||||
_conf_new();
|
||||
_conf->module = m;
|
||||
}
|
||||
|
||||
static void
|
||||
_conf_shutdown(void)
|
||||
{
|
||||
E_FREE(_conf);
|
||||
_conf_free();
|
||||
|
||||
E_CONFIG_DD_FREE(conf_edd);
|
||||
}
|
||||
|
@ -1184,7 +1281,7 @@ _conf_shutdown(void)
|
|||
|
||||
static Eina_Bool active = EINA_FALSE;
|
||||
|
||||
EAPI E_Module_Api e_modapi =
|
||||
EAPI E_Module_Api e_modapi =
|
||||
{
|
||||
E_MODULE_API_VERSION,
|
||||
"everything-apps"
|
||||
|
@ -1192,12 +1289,17 @@ EAPI E_Module_Api e_modapi =
|
|||
|
||||
EAPI void *
|
||||
e_modapi_init(E_Module *m)
|
||||
{
|
||||
if (e_datastore_get("everything_loaded"))
|
||||
active = _plugins_init();
|
||||
|
||||
{
|
||||
_conf_init(m);
|
||||
|
||||
evry_module = E_NEW(Evry_Module, 1);
|
||||
evry_module->init = &_plugins_init;
|
||||
evry_module->shutdown = &_plugins_shutdown;
|
||||
EVRY_MODULE_REGISTER(evry_module);
|
||||
|
||||
if ((evry = e_datastore_get("everything_loaded")))
|
||||
_plugins_init(evry);
|
||||
|
||||
/* taken from e_exebuf.c */
|
||||
exelist_exe_edd = E_CONFIG_DD_NEW("E_Exe", E_Exe);
|
||||
#undef T
|
||||
|
@ -1212,8 +1314,8 @@ e_modapi_init(E_Module *m)
|
|||
#define T E_Exe_List
|
||||
#define D exelist_edd
|
||||
E_CONFIG_LIST(D, T, list, exelist_exe_edd);
|
||||
|
||||
e_module_delayed_set(m, 1);
|
||||
|
||||
e_module_delayed_set(m, 1);
|
||||
|
||||
return m;
|
||||
}
|
||||
|
@ -1221,8 +1323,10 @@ e_modapi_init(E_Module *m)
|
|||
EAPI int
|
||||
e_modapi_shutdown(E_Module *m)
|
||||
{
|
||||
if (active && e_datastore_get("everything_loaded"))
|
||||
_plugins_shutdown();
|
||||
_plugins_shutdown();
|
||||
|
||||
EVRY_MODULE_UNREGISTER(evry_module);
|
||||
E_FREE(evry_module);
|
||||
|
||||
_conf_shutdown();
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
#define E_MOD_MAIN_H
|
||||
|
||||
#define MOD_CONFIG_FILE_EPOCH 0x0001
|
||||
#define MOD_CONFIG_FILE_GENERATION 0x008d
|
||||
#define MOD_CONFIG_FILE_GENERATION 0x009d
|
||||
#define MOD_CONFIG_FILE_VERSION \
|
||||
((MOD_CONFIG_FILE_EPOCH << 16) | MOD_CONFIG_FILE_GENERATION)
|
||||
|
||||
|
|
|
@ -15,7 +15,6 @@ typedef struct _Module_Config Module_Config;
|
|||
|
||||
static const Evry_API *evry = NULL;
|
||||
static Evry_Module *evry_module = NULL;
|
||||
static Eina_Bool active = EINA_FALSE;
|
||||
static Module_Config *_conf;
|
||||
static char _config_path[] = "extensions/everthing-aspell";
|
||||
static char _config_domain[] = "module.everyhing-aspell";
|
||||
|
@ -394,7 +393,7 @@ _plugins_init(const Evry_API *_api)
|
|||
{
|
||||
Evry_Plugin *p;
|
||||
|
||||
if (active)
|
||||
if (evry_module->active)
|
||||
return EINA_TRUE;
|
||||
|
||||
evry = _api;
|
||||
|
@ -423,7 +422,7 @@ _plugins_init(const Evry_API *_api)
|
|||
|
||||
_plug = (Plugin *) p;
|
||||
|
||||
active = EINA_TRUE;
|
||||
evry_module->active = EINA_TRUE;
|
||||
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
@ -431,11 +430,11 @@ _plugins_init(const Evry_API *_api)
|
|||
static void
|
||||
_plugins_shutdown(void)
|
||||
{
|
||||
if (!active) return;
|
||||
if (!evry_module->active) return;
|
||||
|
||||
EVRY_PLUGIN_FREE(_plug);
|
||||
|
||||
active = EINA_FALSE;
|
||||
evry_module->active = EINA_FALSE;
|
||||
}
|
||||
|
||||
/***************************************************************************/
|
||||
|
@ -653,14 +652,14 @@ e_modapi_init(E_Module *m)
|
|||
{
|
||||
_conf_init(m);
|
||||
|
||||
if ((evry = e_datastore_get("everything_loaded")))
|
||||
_plugins_init(evry);
|
||||
|
||||
evry_module = E_NEW(Evry_Module, 1);
|
||||
evry_module->init = &_plugins_init;
|
||||
evry_module->shutdown = &_plugins_shutdown;
|
||||
EVRY_MODULE_REGISTER(evry_module);
|
||||
|
||||
|
||||
if ((evry = e_datastore_get("everything_loaded")))
|
||||
_plugins_init(evry);
|
||||
|
||||
e_module_delayed_set(m, 1);
|
||||
|
||||
return m;
|
||||
|
@ -669,10 +668,11 @@ e_modapi_init(E_Module *m)
|
|||
EAPI int
|
||||
e_modapi_shutdown(E_Module *m)
|
||||
{
|
||||
_plugins_shutdown();
|
||||
|
||||
EVRY_MODULE_UNREGISTER(evry_module);
|
||||
E_FREE(evry_module);
|
||||
|
||||
_plugins_shutdown();
|
||||
|
||||
_conf_shutdown();
|
||||
|
||||
return 1;
|
||||
|
|
|
@ -13,7 +13,6 @@ static int _cb_del(void *data, int type, void *event);
|
|||
|
||||
static const Evry_API *evry = NULL;
|
||||
static Evry_Module *evry_module = NULL;
|
||||
static Eina_Bool active = EINA_FALSE;
|
||||
static Evry_Plugin *p1;
|
||||
|
||||
static Ecore_Exe *exe = NULL;
|
||||
|
@ -183,7 +182,7 @@ _cb_data(void *data, int type __UNUSED__, void *event)
|
|||
eina_stringshare_del(it->label);
|
||||
it->label = eina_stringshare_add(ev->lines->line);
|
||||
|
||||
if (it) evry->event_item_changed(it, 0, 0);
|
||||
if (it) evry->item_changed(it, 0, 0);
|
||||
}
|
||||
|
||||
return 1;
|
||||
|
@ -217,7 +216,7 @@ _cb_del(void *data __UNUSED__, int type __UNUSED__, void *event)
|
|||
static int
|
||||
_plugins_init(const Evry_API *_api)
|
||||
{
|
||||
if (active)
|
||||
if (evry_module->active)
|
||||
return EINA_TRUE;
|
||||
|
||||
evry = _api;
|
||||
|
@ -243,7 +242,7 @@ _plugins_init(const Evry_API *_api)
|
|||
pc->trigger = eina_stringshare_add("=");
|
||||
}
|
||||
|
||||
active = EINA_TRUE;
|
||||
evry_module->active = EINA_TRUE;
|
||||
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
@ -251,12 +250,12 @@ _plugins_init(const Evry_API *_api)
|
|||
static void
|
||||
_plugins_shutdown(void)
|
||||
{
|
||||
if (!active) return;
|
||||
if (!evry_module->active) return;
|
||||
printf("calc shut down\n");
|
||||
|
||||
EVRY_PLUGIN_FREE(p1);
|
||||
|
||||
active = EINA_FALSE;
|
||||
evry_module->active = EINA_FALSE;
|
||||
}
|
||||
|
||||
/***************************************************************************/
|
||||
|
@ -269,15 +268,15 @@ EAPI E_Module_Api e_modapi =
|
|||
|
||||
EAPI void *
|
||||
e_modapi_init(E_Module *m)
|
||||
{
|
||||
if ((evry = e_datastore_get("everything_loaded")))
|
||||
_plugins_init(evry);
|
||||
|
||||
{
|
||||
evry_module = E_NEW(Evry_Module, 1);
|
||||
evry_module->init = &_plugins_init;
|
||||
evry_module->shutdown = &_plugins_shutdown;
|
||||
EVRY_MODULE_REGISTER(evry_module);
|
||||
|
||||
if ((evry = e_datastore_get("everything_loaded")))
|
||||
_plugins_init(evry);
|
||||
|
||||
e_module_delayed_set(m, 1);
|
||||
|
||||
return m;
|
||||
|
@ -286,11 +285,11 @@ e_modapi_init(E_Module *m)
|
|||
EAPI int
|
||||
e_modapi_shutdown(E_Module *m)
|
||||
{
|
||||
_plugins_shutdown();
|
||||
|
||||
EVRY_MODULE_UNREGISTER(evry_module);
|
||||
E_FREE(evry_module);
|
||||
|
||||
_plugins_shutdown();
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -4,8 +4,9 @@
|
|||
|
||||
/* TODO option for maximum items to cache */
|
||||
|
||||
#include "Evry.h"
|
||||
#include "e.h"
|
||||
#include "e_mod_main.h"
|
||||
#include "evry_api.h"
|
||||
#include <Efreet_Trash.h>
|
||||
|
||||
#define MAX_ITEMS 10
|
||||
|
@ -23,8 +24,8 @@
|
|||
#define ACT_MOVE 4
|
||||
|
||||
#define ONE_DAY 86400.0
|
||||
#define SIX_DAYS_AGO (ecore_time_get() - 518400.0)
|
||||
#define TIME_FACTOR(_now) (1.0 - (evry_hist->begin / _now)) / 1000000000000000.0
|
||||
#define SIX_DAYS_AGO (ecore_time_get() - ONE_DAY * 6)
|
||||
#define MIN_USAGE 0.000000000000000000001
|
||||
|
||||
/* #undef DBG
|
||||
* #define DBG(...) ERR(__VA_ARGS__) */
|
||||
|
@ -83,6 +84,9 @@ struct _Module_Config
|
|||
E_Module *module;
|
||||
};
|
||||
|
||||
static const Evry_API *evry = NULL;
|
||||
static Evry_Module *evry_module = NULL;
|
||||
|
||||
static Module_Config *_conf;
|
||||
static char _module_icon[] = "system-file-manager";
|
||||
static Eina_List *_plugins = NULL;
|
||||
|
@ -113,10 +117,10 @@ _item_fill(Evry_Item_File *file)
|
|||
EVRY_ITEM(file)->context = eina_stringshare_ref(file->mime);
|
||||
|
||||
if (!EVRY_ITEM(file)->detail)
|
||||
evry_util_file_detail_set(file);
|
||||
evry->util_file_detail_set(file);
|
||||
|
||||
|
||||
evry_util_file_detail_set(file);
|
||||
evry->util_file_detail_set(file);
|
||||
}
|
||||
|
||||
static int
|
||||
|
@ -278,7 +282,7 @@ _append_files(Plugin *p)
|
|||
if (p->dirs_only && !it->browseable)
|
||||
continue;
|
||||
|
||||
if (p->input && (match = evry_fuzzy_match(it->label, p->input)))
|
||||
if (p->input && (match = evry->fuzzy_match(it->label, p->input)))
|
||||
{
|
||||
it->fuzzy_match = match;
|
||||
if (!it->browseable)
|
||||
|
@ -352,7 +356,7 @@ _scan_end_func(void *data)
|
|||
int cnt = 0;
|
||||
|
||||
if (_conf->cache_dirs)
|
||||
ht = evry_history_types_get(evry_hist->subjects, EVRY_TYPE_FILE);
|
||||
ht = evry->history_types_get(EVRY_TYPE_FILE);
|
||||
|
||||
if (!d->run_cnt)
|
||||
{
|
||||
|
@ -399,7 +403,7 @@ _scan_end_func(void *data)
|
|||
|
||||
item->id = eina_stringshare_ref(file->path);
|
||||
item->label = eina_stringshare_add(filename);
|
||||
evry_util_file_detail_set(file);
|
||||
evry->util_file_detail_set(file);
|
||||
|
||||
E_FREE(filename);
|
||||
E_FREE(path);
|
||||
|
@ -457,10 +461,10 @@ _scan_end_func(void *data)
|
|||
GET_FILE(file, item);
|
||||
|
||||
if (!item->usage &&
|
||||
(hi = evry_history_add(evry_hist->subjects, item, NULL, NULL)))
|
||||
(hi = evry->history_item_add(item, NULL, NULL)))
|
||||
{
|
||||
hi->last_used = SIX_DAYS_AGO - (0.001 * (double) cnt++);
|
||||
hi->usage = TIME_FACTOR(hi->last_used);
|
||||
hi->usage = MIN_USAGE;
|
||||
hi->data = eina_stringshare_ref(file->mime);
|
||||
item->hi = hi;
|
||||
}
|
||||
|
@ -468,7 +472,7 @@ _scan_end_func(void *data)
|
|||
(item->hi->last_used < SIX_DAYS_AGO))
|
||||
{
|
||||
item->hi->last_used = SIX_DAYS_AGO - (0.001 * (double) cnt++);
|
||||
item->hi->usage = TIME_FACTOR(hi->last_used);
|
||||
item->hi->usage = MIN_USAGE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -497,7 +501,7 @@ _dir_watcher(void *data, Ecore_File_Monitor *em, Ecore_File_Event event, const c
|
|||
{
|
||||
case ECORE_FILE_EVENT_DELETED_SELF:
|
||||
EINA_LIST_FREE(p->files, file)
|
||||
evry_item_free(EVRY_ITEM(file));
|
||||
evry->item_free(EVRY_ITEM(file));
|
||||
break;
|
||||
|
||||
case ECORE_FILE_EVENT_CREATED_DIRECTORY:
|
||||
|
@ -570,7 +574,7 @@ _browse(Evry_Plugin *plugin, const Evry_Item *it)
|
|||
GET_PLUGIN(parent, plugin);
|
||||
GET_FILE(file, it);
|
||||
|
||||
if (!evry_file_path_get(file) ||
|
||||
if (!evry->file_path_get(file) ||
|
||||
!ecore_file_is_dir(file->path))
|
||||
return NULL;
|
||||
|
||||
|
@ -832,8 +836,8 @@ _recentf_append_files(Plugin *p)
|
|||
|
||||
if (it->fuzzy_match <= 0)
|
||||
{
|
||||
if ((match = evry_fuzzy_match(it->label, p->input)) ||
|
||||
(match = evry_fuzzy_match(EVRY_FILE(it)->path, p->input)))
|
||||
if ((match = evry->fuzzy_match(it->label, p->input)) ||
|
||||
(match = evry->fuzzy_match(EVRY_FILE(it)->path, p->input)))
|
||||
it->fuzzy_match = match;
|
||||
else
|
||||
it->fuzzy_match = 0;
|
||||
|
@ -872,7 +876,7 @@ _recentf_func(void *data)
|
|||
|
||||
EINA_LIST_FOREACH(d->files, l, file)
|
||||
{
|
||||
if ((!evry_file_path_get(file)) ||
|
||||
if ((!evry->file_path_get(file)) ||
|
||||
(!ecore_file_exists(file->path)))
|
||||
{
|
||||
EVRY_ITEM(file)->hi->last_used -= ONE_DAY;
|
||||
|
@ -914,7 +918,7 @@ _recentf_end_func(void *data)
|
|||
|
||||
if (!it->hi)
|
||||
{
|
||||
evry_item_free(it);
|
||||
evry->item_free(it);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -1012,8 +1016,8 @@ _recentf_items_add_cb(const Eina_Hash *hash, const void *key, void *data, void *
|
|||
}
|
||||
}
|
||||
|
||||
if (!(match = evry_fuzzy_match(label, p->input)) &&
|
||||
!(match = evry_fuzzy_match(path, p->input)))
|
||||
if (!(match = evry->fuzzy_match(label, p->input)) &&
|
||||
!(match = evry->fuzzy_match(path, p->input)))
|
||||
{
|
||||
/* DBG("not matched %s", path); */
|
||||
eina_stringshare_del(path);
|
||||
|
@ -1049,7 +1053,7 @@ _recentf_browse(Evry_Plugin *plugin, const Evry_Item *it)
|
|||
GET_PLUGIN(parent, plugin);
|
||||
GET_FILE(file, it);
|
||||
|
||||
if (!evry_file_path_get(file) ||
|
||||
if (!evry->file_path_get(file) ||
|
||||
!ecore_file_is_dir(file->path))
|
||||
return NULL;
|
||||
|
||||
|
@ -1087,7 +1091,7 @@ _recentf_begin(Evry_Plugin *plugin, const Evry_Item *it)
|
|||
|
||||
if (clear_cache)
|
||||
{
|
||||
History_Types *ht = evry_history_types_get(evry_hist->subjects, EVRY_TYPE_FILE);
|
||||
History_Types *ht = evry->history_types_get(EVRY_TYPE_FILE);
|
||||
if (ht)
|
||||
eina_hash_foreach(ht->types, _recentf_items_add_cb, p);
|
||||
|
||||
|
@ -1126,7 +1130,7 @@ _recentf_fetch(Evry_Plugin *plugin, const char *input)
|
|||
EINA_LIST_FOREACH(p->files, l, it)
|
||||
it->fuzzy_match = -1;
|
||||
|
||||
if ((ht = evry_history_types_get(evry_hist->subjects, EVRY_TYPE_FILE)))
|
||||
if ((ht = evry->history_types_get(EVRY_TYPE_FILE)))
|
||||
{
|
||||
Data *d = E_NEW(Data, 1);
|
||||
d->plugin = p;
|
||||
|
@ -1163,7 +1167,7 @@ _open_folder_action(Evry_Action *act)
|
|||
|
||||
GET_FILE(file, act->it1.item);
|
||||
|
||||
if (!(evry_file_path_get(file)))
|
||||
if (!(evry->file_path_get(file)))
|
||||
return 0;
|
||||
|
||||
m = e_manager_list();
|
||||
|
@ -1183,44 +1187,6 @@ _open_folder_action(Evry_Action *act)
|
|||
return 1;
|
||||
}
|
||||
|
||||
static int
|
||||
_open_term_action(Evry_Action *act)
|
||||
{
|
||||
GET_FILE(file, act->it1.item);
|
||||
Evry_Item_App *tmp;
|
||||
char cwd[4096];
|
||||
char *dir;
|
||||
int ret = 0;
|
||||
|
||||
if (!(evry_file_path_get(file)))
|
||||
return 0;
|
||||
|
||||
if (IS_BROWSEABLE(file))
|
||||
dir = strdup(file->path);
|
||||
else
|
||||
dir = ecore_file_dir_get(file->path);
|
||||
|
||||
if (dir)
|
||||
{
|
||||
if (!getcwd(cwd, sizeof(cwd)))
|
||||
return 0;
|
||||
if (chdir(dir))
|
||||
return 0;
|
||||
|
||||
tmp = E_NEW(Evry_Item_App, 1);
|
||||
tmp->file = evry_conf->cmd_terminal;
|
||||
|
||||
ret = evry_util_exec_app(EVRY_ITEM(tmp), NULL);
|
||||
E_FREE(tmp);
|
||||
E_FREE(dir);
|
||||
if (chdir(cwd))
|
||||
return 0;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
_file_trash_action(Evry_Action *act)
|
||||
{
|
||||
|
@ -1230,7 +1196,7 @@ _file_trash_action(Evry_Action *act)
|
|||
|
||||
GET_FILE(file, act->it1.item);
|
||||
|
||||
if (!(evry_file_url_get(file)))
|
||||
if (!(evry->file_url_get(file)))
|
||||
return 0;
|
||||
|
||||
euri = efreet_uri_decode(file->url);
|
||||
|
@ -1253,10 +1219,10 @@ _file_copy_action(Evry_Action *act)
|
|||
char buf[PATH_MAX];
|
||||
char *ddst;
|
||||
|
||||
if (!(evry_file_path_get(src)))
|
||||
if (!(evry->file_path_get(src)))
|
||||
return 0;
|
||||
|
||||
if (!(evry_file_path_get(dst)))
|
||||
if (!(evry->file_path_get(dst)))
|
||||
return 0;
|
||||
|
||||
if (!ecore_file_is_dir(dst->path))
|
||||
|
@ -1283,16 +1249,26 @@ _file_copy_action(Evry_Action *act)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_plugins_init(void)
|
||||
static int
|
||||
_plugins_init(const Evry_API *api)
|
||||
{
|
||||
Evry_Action *act;
|
||||
Evry_Plugin *p;
|
||||
int prio = 0;
|
||||
|
||||
if (!evry_api_version_check(EVRY_API_VERSION))
|
||||
if (evry_module->active)
|
||||
return EINA_TRUE;
|
||||
|
||||
evry = api;
|
||||
|
||||
if (!evry->api_version_check(EVRY_API_VERSION))
|
||||
return EINA_FALSE;
|
||||
|
||||
_mime_dir = eina_stringshare_add("inode/directory");
|
||||
_mime_mount = eina_stringshare_add("inode/mountpoint");
|
||||
|
||||
evry_module->active = EINA_TRUE;
|
||||
|
||||
#define PLUGIN_NEW(_name, _icon, _begin, _finish, _fetch) \
|
||||
p = EVRY_PLUGIN_NEW(Evry_Plugin, _name, _icon, EVRY_TYPE_FILE, \
|
||||
_begin, _finish, _fetch, NULL); \
|
||||
|
@ -1303,26 +1279,26 @@ _plugins_init(void)
|
|||
PLUGIN_NEW(N_("Files"), _module_icon,
|
||||
_begin, _finish, _fetch);
|
||||
p->browse = &_browse;
|
||||
if (evry_plugin_register(p, EVRY_PLUGIN_SUBJECT, 2))
|
||||
if (evry->plugin_register(p, EVRY_PLUGIN_SUBJECT, 2))
|
||||
p->config->min_query = 1;
|
||||
|
||||
PLUGIN_NEW(N_("Files"), _module_icon,
|
||||
_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)
|
||||
{
|
||||
PLUGIN_NEW(N_("Recent Files"), _module_icon,
|
||||
_recentf_begin, _finish, _recentf_fetch);
|
||||
p->browse = &_recentf_browse;
|
||||
if (evry_plugin_register(p, EVRY_PLUGIN_SUBJECT, 3))
|
||||
if (evry->plugin_register(p, EVRY_PLUGIN_SUBJECT, 3))
|
||||
p->config->min_query = 3;
|
||||
|
||||
PLUGIN_NEW(N_("Recent Files"), _module_icon,
|
||||
_recentf_begin, _finish, _recentf_fetch);
|
||||
p->browse = &_recentf_browse;
|
||||
if (evry_plugin_register(p, EVRY_PLUGIN_OBJECT, 3))
|
||||
if (evry->plugin_register(p, EVRY_PLUGIN_OBJECT, 3))
|
||||
p->config->min_query = 3;
|
||||
}
|
||||
|
||||
|
@ -1330,7 +1306,7 @@ _plugins_init(void)
|
|||
|
||||
#define ACTION_NEW(_name, _type2, _icon, _act, _check) \
|
||||
act = EVRY_ACTION_NEW(_name, EVRY_TYPE_FILE, _type2, _icon, _act, _check); \
|
||||
evry_action_register(act, prio++); \
|
||||
evry->action_register(act, prio++); \
|
||||
_actions = eina_list_append(_actions, act); \
|
||||
|
||||
ACTION_NEW(N_("Copy To ..."), EVRY_TYPE_FILE, "go-next",
|
||||
|
@ -1350,9 +1326,6 @@ _plugins_init(void)
|
|||
ACTION_NEW(N_("Open Folder (EFM)"), 0, "folder-open",
|
||||
_open_folder_action, _open_folder_check);
|
||||
act->remember_context = EINA_TRUE;
|
||||
|
||||
ACTION_NEW(N_("Open Terminal here"), 0, "system-run",
|
||||
_open_term_action, NULL);
|
||||
#undef ACTION_NEW
|
||||
|
||||
return EINA_TRUE;
|
||||
|
@ -1364,11 +1337,19 @@ _plugins_shutdown(void)
|
|||
Evry_Action *act;
|
||||
Evry_Plugin *p;
|
||||
|
||||
if (!evry_module->active)
|
||||
return;
|
||||
|
||||
eina_stringshare_del(_mime_dir);
|
||||
eina_stringshare_del(_mime_mount);
|
||||
|
||||
EINA_LIST_FREE(_plugins, p)
|
||||
evry_plugin_free(p);
|
||||
evry->plugin_free(p);
|
||||
|
||||
EINA_LIST_FREE(_actions, act)
|
||||
evry_action_free(act);
|
||||
evry->action_free(act);
|
||||
|
||||
evry_module->active = EINA_FALSE;
|
||||
}
|
||||
|
||||
|
||||
|
@ -1575,47 +1556,46 @@ static void
|
|||
_conf_shutdown(void)
|
||||
{
|
||||
E_FREE(_conf);
|
||||
|
||||
E_CONFIG_DD_FREE(conf_edd);
|
||||
}
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
static Eina_Bool active = EINA_FALSE;
|
||||
|
||||
EAPI E_Module_Api e_modapi =
|
||||
{
|
||||
E_MODULE_API_VERSION,
|
||||
"everything-files"
|
||||
};
|
||||
|
||||
|
||||
EAPI void *
|
||||
e_modapi_init(E_Module *m)
|
||||
{
|
||||
_conf_init(m);
|
||||
|
||||
if (e_datastore_get("everything_loaded"))
|
||||
active = _plugins_init();
|
||||
|
||||
_mime_dir = eina_stringshare_add("inode/directory");
|
||||
_mime_mount = eina_stringshare_add("inode/mountpoint");
|
||||
evry_module = E_NEW(Evry_Module, 1);
|
||||
evry_module->init = &_plugins_init;
|
||||
evry_module->shutdown = &_plugins_shutdown;
|
||||
EVRY_MODULE_REGISTER(evry_module);
|
||||
|
||||
if ((evry = e_datastore_get("everything_loaded")))
|
||||
_plugins_init(evry);
|
||||
|
||||
e_module_delayed_set(m, 1);
|
||||
|
||||
|
||||
return m;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_shutdown(E_Module *m)
|
||||
{
|
||||
if (active && e_datastore_get("everything_loaded"))
|
||||
_plugins_shutdown();
|
||||
|
||||
eina_stringshare_del(_mime_dir);
|
||||
eina_stringshare_del(_mime_mount);
|
||||
_plugins_shutdown();
|
||||
|
||||
EVRY_MODULE_UNREGISTER(evry_module);
|
||||
E_FREE(evry_module);
|
||||
|
||||
_conf_shutdown();
|
||||
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -19,7 +19,6 @@ struct _Settings_Item
|
|||
|
||||
static const Evry_API *evry = NULL;
|
||||
static Evry_Module *evry_module = NULL;
|
||||
static Eina_Bool active = EINA_FALSE;
|
||||
static Evry_Plugin *p;
|
||||
static Evry_Action *act;
|
||||
static Eina_List *items = NULL;
|
||||
|
@ -105,7 +104,7 @@ _action(Evry_Action *act)
|
|||
static int
|
||||
_plugins_init(const Evry_API *_api)
|
||||
{
|
||||
if (active)
|
||||
if (evry_module->active)
|
||||
return EINA_TRUE;
|
||||
|
||||
evry = _api;
|
||||
|
@ -125,7 +124,7 @@ _plugins_init(const Evry_API *_api)
|
|||
|
||||
evry->action_register(act, 0);
|
||||
|
||||
active = EINA_TRUE;
|
||||
evry_module->active = EINA_TRUE;
|
||||
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
@ -133,13 +132,13 @@ _plugins_init(const Evry_API *_api)
|
|||
static void
|
||||
_plugins_shutdown(void)
|
||||
{
|
||||
if (!active) return;
|
||||
if (!evry_module->active) return;
|
||||
|
||||
EVRY_PLUGIN_FREE(p);
|
||||
|
||||
evry->action_free(act);
|
||||
|
||||
active = EINA_FALSE;
|
||||
evry_module->active = EINA_FALSE;
|
||||
}
|
||||
|
||||
|
||||
|
@ -153,15 +152,15 @@ EAPI E_Module_Api e_modapi =
|
|||
|
||||
EAPI void *
|
||||
e_modapi_init(E_Module *m)
|
||||
{
|
||||
if ((evry = e_datastore_get("everything_loaded")))
|
||||
_plugins_init(evry);
|
||||
|
||||
{
|
||||
evry_module = E_NEW(Evry_Module, 1);
|
||||
evry_module->init = &_plugins_init;
|
||||
evry_module->shutdown = &_plugins_shutdown;
|
||||
EVRY_MODULE_REGISTER(evry_module);
|
||||
|
||||
|
||||
if ((evry = e_datastore_get("everything_loaded")))
|
||||
_plugins_init(evry);
|
||||
|
||||
e_module_delayed_set(m, 1);
|
||||
|
||||
return m;
|
||||
|
@ -170,10 +169,10 @@ e_modapi_init(E_Module *m)
|
|||
EAPI int
|
||||
e_modapi_shutdown(E_Module *m)
|
||||
{
|
||||
_plugins_shutdown();
|
||||
|
||||
EVRY_MODULE_UNREGISTER(evry_module);
|
||||
E_FREE(evry_module);
|
||||
|
||||
_plugins_shutdown();
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -32,7 +32,6 @@ static int _import_cb_edje_cc_exit(void *data, int type, void *event);
|
|||
|
||||
static const Evry_API *evry = NULL;
|
||||
static Evry_Module *evry_module = NULL;
|
||||
static Eina_Bool active = EINA_FALSE;
|
||||
|
||||
static Import *import = NULL;
|
||||
static Evry_Action *_act;
|
||||
|
@ -109,7 +108,7 @@ _plugins_init(const Evry_API *_api)
|
|||
{
|
||||
Evry_Plugin *p;
|
||||
|
||||
if (active)
|
||||
if (evry_module->active)
|
||||
return EINA_TRUE;
|
||||
|
||||
evry = _api;
|
||||
|
@ -127,7 +126,7 @@ _plugins_init(const Evry_API *_api)
|
|||
|
||||
evry->action_register(_act, 2);
|
||||
|
||||
active = EINA_TRUE;
|
||||
evry_module->active = EINA_TRUE;
|
||||
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
@ -135,11 +134,11 @@ _plugins_init(const Evry_API *_api)
|
|||
static void
|
||||
_plugins_shutdown(void)
|
||||
{
|
||||
if (!active) return;
|
||||
if (!evry_module->active) return;
|
||||
|
||||
evry->action_free(_act);
|
||||
|
||||
active = EINA_FALSE;
|
||||
evry_module->active = EINA_FALSE;
|
||||
}
|
||||
|
||||
/* taken from e_int_config_wallpaper_import.c */
|
||||
|
@ -373,16 +372,14 @@ EAPI E_Module_Api e_modapi =
|
|||
EAPI void *
|
||||
e_modapi_init(E_Module *m)
|
||||
{
|
||||
Eina_List *l;
|
||||
|
||||
if ((evry = e_datastore_get("everything_loaded")))
|
||||
_plugins_init(evry);
|
||||
|
||||
evry_module = E_NEW(Evry_Module, 1);
|
||||
evry_module->init = &_plugins_init;
|
||||
evry_module->shutdown = &_plugins_shutdown;
|
||||
EVRY_MODULE_REGISTER(evry_module);
|
||||
|
||||
if ((evry = e_datastore_get("everything_loaded")))
|
||||
_plugins_init(evry);
|
||||
|
||||
e_module_delayed_set(m, 1);
|
||||
|
||||
return m;
|
||||
|
@ -391,12 +388,10 @@ e_modapi_init(E_Module *m)
|
|||
EAPI int
|
||||
e_modapi_shutdown(E_Module *m)
|
||||
{
|
||||
Eina_List *l;
|
||||
|
||||
_plugins_shutdown();
|
||||
|
||||
EVRY_MODULE_UNREGISTER(evry_module);
|
||||
E_FREE(evry_module);
|
||||
|
||||
_plugins_shutdown();
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -14,7 +14,6 @@
|
|||
|
||||
static const Evry_API *evry = NULL;
|
||||
static Evry_Module *evry_module = NULL;
|
||||
static Eina_Bool active = EINA_FALSE;
|
||||
|
||||
static Evry_Plugin *p1;
|
||||
static Eina_List *handlers = NULL;
|
||||
|
@ -352,7 +351,7 @@ _plugins_init(const Evry_API *_api)
|
|||
Evry_Plugin *p;
|
||||
Evry_Action *act;
|
||||
|
||||
if (active)
|
||||
if (evry_module->active)
|
||||
return EINA_TRUE;
|
||||
|
||||
evry = _api;
|
||||
|
@ -403,7 +402,7 @@ _plugins_init(const Evry_API *_api)
|
|||
_actions = eina_list_append(_actions, act);
|
||||
evry->action_register(act, 3);
|
||||
|
||||
active = EINA_TRUE;
|
||||
evry_module->active = EINA_TRUE;
|
||||
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
@ -413,14 +412,14 @@ _plugins_shutdown(void)
|
|||
{
|
||||
Evry_Action *act;
|
||||
|
||||
if (!active) return;
|
||||
if (!evry_module->active) return;
|
||||
|
||||
EVRY_PLUGIN_FREE(p1);
|
||||
|
||||
EINA_LIST_FREE(_actions, act)
|
||||
evry->action_free(act);
|
||||
|
||||
active = EINA_FALSE;
|
||||
evry_module->active = EINA_FALSE;
|
||||
}
|
||||
|
||||
/***************************************************************************/
|
||||
|
@ -435,14 +434,14 @@ EAPI E_Module_Api e_modapi =
|
|||
EAPI void *
|
||||
e_modapi_init(E_Module *m)
|
||||
{
|
||||
if ((evry = e_datastore_get("everything_loaded")))
|
||||
_plugins_init(evry);
|
||||
|
||||
evry_module = E_NEW(Evry_Module, 1);
|
||||
evry_module->init = &_plugins_init;
|
||||
evry_module->shutdown = &_plugins_shutdown;
|
||||
EVRY_MODULE_REGISTER(evry_module);
|
||||
|
||||
if ((evry = e_datastore_get("everything_loaded")))
|
||||
_plugins_init(evry);
|
||||
|
||||
e_module_delayed_set(m, 1);
|
||||
|
||||
return m;
|
||||
|
@ -451,11 +450,11 @@ e_modapi_init(E_Module *m)
|
|||
EAPI int
|
||||
e_modapi_shutdown(E_Module *m)
|
||||
{
|
||||
_plugins_shutdown();
|
||||
|
||||
EVRY_MODULE_UNREGISTER(evry_module);
|
||||
E_FREE(evry_module);
|
||||
|
||||
_plugins_shutdown();
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -2,32 +2,9 @@
|
|||
#define EVRY_H
|
||||
|
||||
#include "e.h"
|
||||
#include "evry_api.h"
|
||||
#include "evry_types.h"
|
||||
|
||||
#define EVRY_API_VERSION 18
|
||||
|
||||
#define EVRY_ACTION_OTHER 0
|
||||
#define EVRY_ACTION_FINISHED 1
|
||||
#define EVRY_ACTION_CONTINUE 2
|
||||
|
||||
#define EVRY_UPDATE_ADD 0
|
||||
#define EVRY_UPDATE_CLEAR 1
|
||||
#define EVRY_UPDATE_REFRESH 2
|
||||
|
||||
#define EVRY_COMPLETE_NONE 0
|
||||
#define EVRY_COMPLETE_INPUT 1
|
||||
#define EVRY_COMPLETE_BROWSE 2
|
||||
|
||||
#define VIEW_MODE_NONE -1
|
||||
#define VIEW_MODE_LIST 0
|
||||
#define VIEW_MODE_DETAIL 1
|
||||
#define VIEW_MODE_THUMB 2
|
||||
|
||||
#define EVRY_PLUGIN_SUBJECT 0
|
||||
#define EVRY_PLUGIN_ACTION 1
|
||||
#define EVRY_PLUGIN_OBJECT 2
|
||||
|
||||
|
||||
extern int _e_module_evry_log_dom;
|
||||
|
||||
#ifndef EINA_LOG_DEFAULT_COLOR
|
||||
|
@ -47,8 +24,6 @@ extern int _e_module_evry_log_dom;
|
|||
typedef struct _Evry_State Evry_State;
|
||||
typedef struct _Evry_View Evry_View;
|
||||
typedef struct _History Evry_History;
|
||||
typedef struct _History_Entry History_Entry;
|
||||
typedef struct _History_Types History_Types;
|
||||
typedef struct _Config Evry_Config;
|
||||
typedef struct _Evry_Event_Item_Changed Evry_Event_Item_Changed;
|
||||
|
||||
|
@ -226,9 +201,6 @@ struct _Config
|
|||
/* quick navigation mode */
|
||||
int quick_nav;
|
||||
|
||||
const char *cmd_terminal;
|
||||
const char *cmd_sudo;
|
||||
|
||||
/* default view mode */
|
||||
int view_mode;
|
||||
int view_zoom;
|
||||
|
@ -247,21 +219,10 @@ struct _Config
|
|||
int min_w, min_h;
|
||||
};
|
||||
|
||||
struct _History_Entry
|
||||
{
|
||||
Eina_List *items;
|
||||
};
|
||||
|
||||
struct _History_Types
|
||||
{
|
||||
Eina_Hash *types;
|
||||
};
|
||||
|
||||
struct _History
|
||||
{
|
||||
int version;
|
||||
Eina_Hash *subjects;
|
||||
Eina_Hash *actions;
|
||||
double begin;
|
||||
|
||||
Eina_Bool changed;
|
||||
|
@ -296,7 +257,7 @@ EAPI int evry_util_module_config_check(const char *module_name, int conf, int ep
|
|||
EAPI Evas_Object *evry_util_icon_get(Evry_Item *it, Evas *e);
|
||||
EAPI int evry_util_plugin_items_add(Evry_Plugin *p, Eina_List *items, const char *input, int match_detail, int set_usage);
|
||||
EAPI int evry_items_sort_func(const void *data1, const void *data2);
|
||||
EAPI void evry_event_item_changed(Evry_Item *it, int change_icon, int change_selected);
|
||||
EAPI void evry_item_changed(Evry_Item *it, int change_icon, int change_selected);
|
||||
EAPI char *evry_util_md5_sum(const char *str);
|
||||
|
||||
EAPI const char *evry_file_path_get(Evry_Item_File *file);
|
||||
|
@ -316,9 +277,9 @@ EAPI Evry_Action *evry_action_find(const char *name);
|
|||
|
||||
EAPI void evry_history_load(void);
|
||||
EAPI void evry_history_unload(void);
|
||||
EAPI History_Item *evry_history_add(Eina_Hash *hist, Evry_Item *it, const char *ctxt, const char *input);
|
||||
EAPI int evry_history_item_usage_set(Eina_Hash *hist, Evry_Item *it, const char *input, const char *ctxt);
|
||||
EAPI History_Types *evry_history_types_get(Eina_Hash *hist, Evry_Type type);
|
||||
EAPI History_Item *evry_history_item_add(Evry_Item *it, const char *ctxt, const char *input);
|
||||
EAPI int evry_history_item_usage_set(Evry_Item *it, const char *input, const char *ctxt);
|
||||
EAPI History_Types *evry_history_types_get(Evry_Type type);
|
||||
|
||||
EAPI Evry_Plugin *evry_plugin_new(Evry_Plugin *base, const char *name, const char *label, const char *icon,
|
||||
Evry_Type item_type,
|
||||
|
@ -342,18 +303,6 @@ EAPI int evry_api_version_check(int version);
|
|||
EAPI Evry_Type evry_type_register(const char *type);
|
||||
EAPI const char *evry_type_get(Evry_Type type);
|
||||
|
||||
EAPI extern int EVRY_EVENT_ITEM_SELECT;
|
||||
EAPI extern int EVRY_EVENT_ITEM_CHANGED;
|
||||
EAPI extern int EVRY_EVENT_ITEMS_UPDATE;
|
||||
|
||||
EAPI extern Evry_Type EVRY_TYPE_NONE;
|
||||
EAPI extern Evry_Type EVRY_TYPE_FILE;
|
||||
EAPI extern Evry_Type EVRY_TYPE_DIR;
|
||||
EAPI extern Evry_Type EVRY_TYPE_APP;
|
||||
EAPI extern Evry_Type EVRY_TYPE_ACTION;
|
||||
EAPI extern Evry_Type EVRY_TYPE_PLUGIN;
|
||||
EAPI extern Evry_Type EVRY_TYPE_BORDER;
|
||||
EAPI extern Evry_Type EVRY_TYPE_TEXT;
|
||||
|
||||
EAPI extern Evry_History *evry_hist;
|
||||
EAPI extern Evry_Config *evry_conf;
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
*/
|
||||
|
||||
#include "e_mod_main.h"
|
||||
#include "evry_api.h"
|
||||
|
||||
/* #undef DBG
|
||||
* #define DBG(...) ERR(__VA_ARGS__) */
|
||||
|
@ -199,9 +198,12 @@ e_modapi_init(E_Module *m)
|
|||
SET(util_md5_sum);
|
||||
SET(util_icon_get);
|
||||
SET(items_sort_func);
|
||||
SET(event_item_changed);
|
||||
SET(item_changed);
|
||||
SET(file_path_get);
|
||||
SET(file_url_get);
|
||||
SET(history_item_add);
|
||||
SET(history_types_get);
|
||||
SET(history_item_usage_set);
|
||||
#undef SET
|
||||
|
||||
e_datastore_set("everything_loaded", _api);
|
||||
|
@ -325,8 +327,6 @@ _config_init()
|
|||
E_CONFIG_VAL(D, T, hide_input, INT);
|
||||
E_CONFIG_VAL(D, T, hide_list, INT);
|
||||
E_CONFIG_VAL(D, T, quick_nav, INT);
|
||||
E_CONFIG_VAL(D, T, cmd_terminal, STR);
|
||||
E_CONFIG_VAL(D, T, cmd_sudo, STR);
|
||||
E_CONFIG_VAL(D, T, view_mode, INT);
|
||||
E_CONFIG_VAL(D, T, view_zoom, INT);
|
||||
E_CONFIG_VAL(D, T, cycle_mode, INT);
|
||||
|
@ -395,8 +395,6 @@ _config_init()
|
|||
evry_conf->hide_input = 0;
|
||||
evry_conf->hide_list = 0;
|
||||
evry_conf->quick_nav = 1;
|
||||
evry_conf->cmd_terminal = eina_stringshare_add("/usr/bin/xterm");
|
||||
evry_conf->cmd_sudo = eina_stringshare_add("/usr/bin/gksudo --preserve-env");
|
||||
evry_conf->view_mode = VIEW_MODE_DETAIL;
|
||||
evry_conf->view_zoom = 0;
|
||||
evry_conf->cycle_mode = 0;
|
||||
|
@ -438,11 +436,6 @@ _config_free(void)
|
|||
{
|
||||
_plugin_config_free();
|
||||
|
||||
if (evry_conf->cmd_terminal)
|
||||
eina_stringshare_del(evry_conf->cmd_terminal);
|
||||
if (evry_conf->cmd_sudo)
|
||||
eina_stringshare_del(evry_conf->cmd_sudo);
|
||||
|
||||
E_FREE(evry_conf);
|
||||
}
|
||||
|
||||
|
|
|
@ -35,8 +35,6 @@ struct _Evry_Selector
|
|||
Evas_Object *o_thumb;
|
||||
Eina_Bool do_thumb;
|
||||
|
||||
Eina_Hash *history;
|
||||
|
||||
Ecore_Timer *update_timer;
|
||||
};
|
||||
|
||||
|
|
|
@ -824,21 +824,18 @@ _evry_selector_new(int type)
|
|||
|
||||
if (type == EVRY_PLUGIN_SUBJECT)
|
||||
{
|
||||
sel->history = evry_hist->subjects;
|
||||
sel->actions = evry_plug_actions_new(sel, type);
|
||||
edje_object_part_swallow(win->o_main, "e.swallow.subject_selector", o);
|
||||
pcs = evry_conf->conf_subjects;
|
||||
}
|
||||
else if (type == EVRY_PLUGIN_ACTION)
|
||||
{
|
||||
sel->history = evry_hist->actions;
|
||||
sel->actions = evry_plug_actions_new(sel, type);
|
||||
edje_object_part_swallow(win->o_main, "e.swallow.action_selector", o);
|
||||
pcs = evry_conf->conf_actions;
|
||||
}
|
||||
else if (type == EVRY_PLUGIN_OBJECT)
|
||||
{
|
||||
sel->history = evry_hist->subjects;
|
||||
edje_object_part_swallow(win->o_main, "e.swallow.object_selector", o);
|
||||
pcs = evry_conf->conf_objects;
|
||||
}
|
||||
|
@ -1333,7 +1330,7 @@ evry_browse_item(Evry_Selector *sel)
|
|||
|
||||
if (browse_aggregator)
|
||||
{
|
||||
evry_history_add(sel->history, s->cur_item, NULL, NULL);
|
||||
evry_history_item_add(s->cur_item, NULL, NULL);
|
||||
snprintf(sel->state->input, INPUTLEN, "%s", s->input);
|
||||
|
||||
s = new_state;
|
||||
|
@ -1344,7 +1341,7 @@ evry_browse_item(Evry_Selector *sel)
|
|||
}
|
||||
else if (it->plugin->history)
|
||||
{
|
||||
evry_history_add(sel->history, s->cur_item, NULL, s->input);
|
||||
evry_history_item_add(s->cur_item, NULL, s->input);
|
||||
_evry_matches_update(sel, 1);
|
||||
s = new_state;
|
||||
}
|
||||
|
@ -1604,8 +1601,7 @@ _evry_cb_key_down(void *data __UNUSED__, int type __UNUSED__, void *event)
|
|||
Eina_List *l, *ll;
|
||||
Evry_Item *it = s->cur_item;
|
||||
|
||||
if (!(he = eina_hash_find
|
||||
(selector->history, (it->id ? it->id : it->label))))
|
||||
if (!(he = eina_hash_find(evry_hist->subjects, (it->id ? it->id : it->label))))
|
||||
goto end;
|
||||
|
||||
EINA_LIST_FOREACH_SAFE(he->items, l, ll, hi)
|
||||
|
@ -1920,13 +1916,13 @@ _evry_plugin_action(Evry_Selector *sel, int finished)
|
|||
else return;
|
||||
|
||||
if (s_subj && it_subj && it_subj->plugin->history)
|
||||
evry_history_add(evry_hist->subjects, it_subj, NULL, s_subj->input);
|
||||
evry_history_item_add(it_subj, NULL, s_subj->input);
|
||||
|
||||
if (s_act && it_act && it_act->plugin->history)
|
||||
evry_history_add(evry_hist->actions, it_act, it_subj->context, s_act->input);
|
||||
evry_history_item_add(it_act, it_subj->context, s_act->input);
|
||||
|
||||
if (s_obj && it_obj && it_obj->plugin->history)
|
||||
evry_history_add(evry_hist->subjects, it_obj, it_act->context, s_obj->input);
|
||||
evry_history_item_add(it_obj, it_act->context, s_obj->input);
|
||||
|
||||
if (finished)
|
||||
evry_hide(0);
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
#ifndef EVRY_API_H
|
||||
#define EVRY_API_H
|
||||
|
||||
#ifndef EVRY_H
|
||||
#include "evry_types.h"
|
||||
|
||||
#define EVRY_API_VERSION 18
|
||||
#define EVRY_API_VERSION 19
|
||||
|
||||
#define EVRY_ACTION_OTHER 0
|
||||
#define EVRY_ACTION_FINISHED 1
|
||||
|
@ -36,28 +35,41 @@ EAPI extern Evry_Type EVRY_TYPE_PLUGIN;
|
|||
EAPI extern Evry_Type EVRY_TYPE_BORDER;
|
||||
EAPI extern Evry_Type EVRY_TYPE_TEXT;
|
||||
|
||||
#endif
|
||||
EAPI extern int EVRY_EVENT_ITEM_SELECT;
|
||||
EAPI extern int EVRY_EVENT_ITEM_CHANGED;
|
||||
EAPI extern int EVRY_EVENT_ITEMS_UPDATE;
|
||||
|
||||
typedef struct _Evry_API Evry_API;
|
||||
typedef struct _Evry_Module Evry_Module;
|
||||
|
||||
/***************************************************
|
||||
register module struct:
|
||||
|
||||
Eina_List *l;
|
||||
Evry_Module *em;
|
||||
static Evry_Module *evry_module;
|
||||
static const Evry_API evry;
|
||||
|
||||
in e_modapi_init do:
|
||||
|
||||
evry_module = E_NEW(Evry_Module, 1);
|
||||
evry_module->init = &_plugins_init;
|
||||
evry_module->shutdown = &_plugins_shutdown;
|
||||
EVRY_MODULE_REGISTER(evry_module);
|
||||
|
||||
if ((evry = e_datastore_get("everything_loaded")))
|
||||
_plugins_init(evry);
|
||||
|
||||
in e_modapi_shutdown:
|
||||
|
||||
_plugins_shutdown();
|
||||
|
||||
em = E_NEW(Evry_Module, 1);
|
||||
em->init = &_your_init_func;
|
||||
em->shutdown = &_your_shutdown_func;
|
||||
EVRY_MODULE_UNREGISTER(evry_module);
|
||||
E_FREE(evry_module);
|
||||
|
||||
l = e_datastore_get("everything_modules");
|
||||
l = eina_list_append(l, em);
|
||||
e_datastore_set("everything_modules", l);
|
||||
***************************************************/
|
||||
|
||||
struct _Evry_Module
|
||||
{
|
||||
Eina_Bool active;
|
||||
|
||||
int (*init)(const Evry_API *api);
|
||||
void (*shutdown)(void);
|
||||
};
|
||||
|
@ -72,7 +84,9 @@ struct _Evry_API
|
|||
|
||||
void (*item_free)(Evry_Item *it);
|
||||
void (*item_ref)(Evry_Item *it);
|
||||
|
||||
/* send EVRY_EVENT_ITEM_CHANGED event */
|
||||
void (*item_changed)(Evry_Item *it, int change_icon, int change_selected);
|
||||
|
||||
Evry_Plugin *(*plugin_new)(Evry_Plugin *base, const char *name,
|
||||
const char *label, const char *icon,
|
||||
Evry_Type item_type,
|
||||
|
@ -112,29 +126,27 @@ struct _Evry_API
|
|||
char *(*util_md5_sum)(const char *str);
|
||||
Evas_Object *(*util_icon_get)(Evry_Item *it, Evas *e);
|
||||
int (*items_sort_func)(const void *data1, const void *data2);
|
||||
void (*event_item_changed)(Evry_Item *it, int change_icon, int change_selected);
|
||||
|
||||
const char *(*file_path_get)(Evry_Item_File *file);
|
||||
const char *(*file_url_get)(Evry_Item_File *file);
|
||||
|
||||
History_Item *(*history_item_add)(Evry_Item *it, const char *ctxt, const char *input);
|
||||
History_Types *(*history_types_get)(Evry_Type type);
|
||||
int (*history_item_usage_set)(Evry_Item *it, const char *input, const char *ctxt);
|
||||
|
||||
int log_dom;
|
||||
};
|
||||
|
||||
#ifndef EVRY_H
|
||||
|
||||
/*** cast default types ***/
|
||||
|
||||
#define EVRY_ITEM(_item) ((Evry_Item *)_item)
|
||||
#define EVRY_ACTN(_item) ((Evry_Action *) _item)
|
||||
#define EVRY_PLUGIN(_plugin) ((Evry_Plugin *) _plugin)
|
||||
#define EVRY_VIEW(_view) ((Evry_View *) _view)
|
||||
#define EVRY_FILE(_it) ((Evry_Item_File *) _it)
|
||||
|
||||
#define CHECK_TYPE(_item, _type) \
|
||||
(((Evry_Item *)_item)->type && ((Evry_Item *)_item)->type == _type)
|
||||
|
||||
#define CHECK_SUBTYPE(_item, _type) \
|
||||
(((Evry_Item *)_item)->subtype && ((Evry_Item *)_item)->subtype == _type)
|
||||
|
||||
#define IS_BROWSEABLE(_item) ((Evry_Item *)_item)->browseable
|
||||
|
||||
#define GET_APP(_app, _item) Evry_Item_App *_app = (Evry_Item_App *) _item
|
||||
#define GET_FILE(_file, _item) Evry_Item_File *_file = (Evry_Item_File *) _item
|
||||
#define GET_EVRY_PLUGIN(_p, _plugin) Evry_Plugin *_p = (Evry_Plugin*) _plugin
|
||||
|
@ -143,65 +155,82 @@ struct _Evry_API
|
|||
#define GET_PLUGIN(_p, _plugin) Plugin *_p = (Plugin*) _plugin
|
||||
#define GET_ITEM(_it, _any) Evry_Item *_it = (Evry_Item *) _any
|
||||
|
||||
|
||||
/*** Evry_Item macros ***/
|
||||
|
||||
#define EVRY_ITEM_NEW(_base, _plugin, _label, _icon_get, _free) \
|
||||
(_base *) evry->item_new(EVRY_ITEM(E_NEW(_base, 1)), EVRY_PLUGIN(_plugin), \
|
||||
_label, _icon_get, _free)
|
||||
|
||||
#define EVRY_ITEM_FREE(_item) evry->item_free((Evry_Item *)_item)
|
||||
#define EVRY_ITEM_REF(_item) evry->item_ref((Evry_Item *)_item)
|
||||
|
||||
#define EVRY_ITEM_DATA_INT_SET(_item, _data) ((Evry_Item *)_item)->data = (void*)(long) _data
|
||||
#define EVRY_ITEM_DATA_INT_GET(_item) (long) ((Evry_Item *)_item)->data
|
||||
#define EVRY_ITEM_ICON_SET(_item, _icon) ((Evry_Item *)_item)->icon = _icon
|
||||
|
||||
#define EVRY_ITEM_DETAIL_SET(_it, _detail) \
|
||||
#define EVRY_ITEM_DETAIL_SET(_it, _detail) \
|
||||
if (EVRY_ITEM(_it)->detail) eina_stringshare_del(EVRY_ITEM(_it)->detail); \
|
||||
EVRY_ITEM(_it)->detail = eina_stringshare_add(_detail);
|
||||
|
||||
#define EVRY_ITEM_LABEL_SET(_it, _label) \
|
||||
#define EVRY_ITEM_LABEL_SET(_it, _label) \
|
||||
if (EVRY_ITEM(_it)->label) eina_stringshare_del(EVRY_ITEM(_it)->label); \
|
||||
EVRY_ITEM(_it)->label = eina_stringshare_add(_label);
|
||||
|
||||
#define EVRY_ITEM_CONTEXT_SET(_it, _context) \
|
||||
#define EVRY_ITEM_CONTEXT_SET(_it, _context) \
|
||||
if (EVRY_ITEM(_it)->context) eina_stringshare_del(EVRY_ITEM(_it)->context); \
|
||||
EVRY_ITEM(_it)->context = eina_stringshare_add(_context);
|
||||
|
||||
#define EVRY_ITEM_NEW(_base, _plugin, _label, _icon_get, _free) \
|
||||
(_base *) evry->item_new(EVRY_ITEM(E_NEW(_base, 1)), EVRY_PLUGIN(_plugin), \
|
||||
_label, _icon_get, _free)
|
||||
#define CHECK_TYPE(_item, _type) \
|
||||
(((Evry_Item *)_item)->type && ((Evry_Item *)_item)->type == _type)
|
||||
|
||||
#define EVRY_ITEM_FREE(_item) evry_item_free((Evry_Item *)_item)
|
||||
#define CHECK_SUBTYPE(_item, _type) \
|
||||
(((Evry_Item *)_item)->subtype && ((Evry_Item *)_item)->subtype == _type)
|
||||
|
||||
#define IS_BROWSEABLE(_item) ((Evry_Item *)_item)->browseable
|
||||
|
||||
|
||||
/*** Evry_Plugin macros ***/
|
||||
|
||||
#define EVRY_PLUGIN_NEW(_base, _name, _icon, _item_type, _begin, _cleanup, _fetch, _free) \
|
||||
evry->plugin_new(EVRY_PLUGIN(E_NEW(_base, 1)), _name, _(_name), _icon, _item_type, \
|
||||
_begin, _cleanup, _fetch, _free)
|
||||
|
||||
|
||||
#define EVRY_ACTION_NEW(_name, _in1, _in2, _icon, _action, _check) \
|
||||
evry->action_new(_name, _(_name), _in1, _in2, _icon, _action, _check)
|
||||
|
||||
|
||||
#define EVRY_PLUGIN_FREE(_p) if (_p) evry->plugin_free(EVRY_PLUGIN(_p))
|
||||
|
||||
|
||||
#define EVRY_PLUGIN_ITEMS_CLEAR(_p) { \
|
||||
Evry_Item *it; \
|
||||
#define EVRY_PLUGIN_ITEMS_CLEAR(_p) { \
|
||||
Evry_Item *it; \
|
||||
EINA_LIST_FREE(EVRY_PLUGIN(_p)->items, it) \
|
||||
it->fuzzy_match = 0; }
|
||||
|
||||
#define EVRY_PLUGIN_ITEMS_FREE(_p) { \
|
||||
Evry_Item *it; \
|
||||
#define EVRY_PLUGIN_ITEMS_FREE(_p) { \
|
||||
Evry_Item *it; \
|
||||
EINA_LIST_FREE(EVRY_PLUGIN(_p)->items, it) \
|
||||
evry->item_free(it); }
|
||||
|
||||
|
||||
#define EVRY_PLUGIN_ITEMS_SORT(_p, _sortcb) \
|
||||
EVRY_PLUGIN(_p)->items = eina_list_sort \
|
||||
#define EVRY_PLUGIN_ITEMS_SORT(_p, _sortcb) \
|
||||
EVRY_PLUGIN(_p)->items = eina_list_sort \
|
||||
(EVRY_PLUGIN(_p)->items, eina_list_count(EVRY_PLUGIN(_p)->items), _sortcb)
|
||||
|
||||
#define EVRY_PLUGIN_ITEM_APPEND(_p, _item) \
|
||||
#define EVRY_PLUGIN_ITEM_APPEND(_p, _item) \
|
||||
EVRY_PLUGIN(_p)->items = eina_list_append(EVRY_PLUGIN(_p)->items, EVRY_ITEM(_item))
|
||||
|
||||
// should be renamed to ITEMS_FILTER
|
||||
#define EVRY_PLUGIN_ITEMS_ADD(_plugin, _items, _input, _match_detail, _set_usage) \
|
||||
evry->util_plugin_items_add(EVRY_PLUGIN(_plugin), _items, _input, _match_detail, _set_usage)
|
||||
|
||||
#define EVRY_PLUGIN_UPDATE(_p, _action) \
|
||||
#define EVRY_PLUGIN_UPDATE(_p, _action) \
|
||||
if (_p) evry->plugin_update(EVRY_PLUGIN(_p), _action)
|
||||
|
||||
|
||||
/*** Evry_Action macros ***/
|
||||
|
||||
#define EVRY_ACTION_NEW(_name, _in1, _in2, _icon, _action, _check) \
|
||||
evry->action_new(_name, _(_name), _in1, _in2, _icon, _action, _check)
|
||||
|
||||
#define EVRY_PLUGIN_FREE(_p) if (_p) evry->plugin_free(EVRY_PLUGIN(_p))
|
||||
|
||||
|
||||
/*** handy macros ***/
|
||||
|
||||
#define IF_RELEASE(x) do { \
|
||||
if (x) { \
|
||||
const char *__tmp; __tmp = (x); (x) = NULL; eina_stringshare_del(__tmp); \
|
||||
|
|
|
@ -47,9 +47,6 @@ struct _E_Config_Dialog_Data
|
|||
int scroll_animate;
|
||||
double scroll_speed;
|
||||
|
||||
char *cmd_terminal;
|
||||
char *cmd_sudo;
|
||||
|
||||
int view_mode;
|
||||
int view_zoom;
|
||||
int cycle_mode;
|
||||
|
@ -104,12 +101,6 @@ _fill_data(E_Config_Dialog_Data *cfdata)
|
|||
cfdata->page[0].configs = eina_list_clone(evry_conf->conf_subjects);
|
||||
cfdata->page[1].configs = eina_list_clone(evry_conf->conf_actions);
|
||||
cfdata->page[2].configs = eina_list_clone(evry_conf->conf_objects);
|
||||
|
||||
if (evry_conf->cmd_terminal)
|
||||
cfdata->cmd_terminal = strdup(evry_conf->cmd_terminal);
|
||||
|
||||
if (evry_conf->cmd_sudo)
|
||||
cfdata->cmd_sudo = strdup(evry_conf->cmd_sudo);
|
||||
}
|
||||
|
||||
static void *
|
||||
|
@ -129,8 +120,6 @@ _free_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
|
|||
if (cfdata->page[1].configs) eina_list_free(cfdata->page[1].configs);
|
||||
if (cfdata->page[2].configs) eina_list_free(cfdata->page[2].configs);
|
||||
|
||||
E_FREE(cfdata->cmd_terminal);
|
||||
E_FREE(cfdata->cmd_sudo);
|
||||
E_FREE(cfdata);
|
||||
}
|
||||
|
||||
|
@ -187,13 +176,6 @@ _basic_apply_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
|
|||
}
|
||||
}
|
||||
|
||||
if (evry_conf->cmd_terminal)
|
||||
eina_stringshare_del(evry_conf->cmd_terminal);
|
||||
evry_conf->cmd_terminal = eina_stringshare_add(cfdata->cmd_terminal);
|
||||
if (evry_conf->cmd_sudo)
|
||||
eina_stringshare_del(evry_conf->cmd_sudo);
|
||||
evry_conf->cmd_sudo = eina_stringshare_add(cfdata->cmd_sudo);
|
||||
|
||||
e_config_save_queue();
|
||||
return 1;
|
||||
}
|
||||
|
@ -510,18 +492,6 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *e, E_Config_Dialog_Data *cfdat
|
|||
|
||||
e_widget_table_object_append(o, of, 0, 1, 2, 1, 1, 0, 0, 0);
|
||||
|
||||
of = e_widget_framelist_add(e, _("Commands"), 0);
|
||||
ob = e_widget_label_add(e, _("Terminal Command"));
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
ob = e_widget_entry_add(e, &(cfdata->cmd_terminal), NULL, NULL, NULL);
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
|
||||
ob = e_widget_label_add(e, _("Sudo GUI"));
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
ob = e_widget_entry_add(e, &(cfdata->cmd_sudo), NULL, NULL, NULL);
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
|
||||
e_widget_table_object_append(o, of, 0, 2, 2, 1, 1, 0, 0, 0);
|
||||
|
||||
e_widget_toolbook_page_append(otb, NULL, _("General Settings"),
|
||||
o, 1, 0, 1, 0, 0.5, 0.0);
|
||||
|
|
|
@ -58,8 +58,7 @@ evry_history_init(void)
|
|||
#define D hist_edd
|
||||
E_CONFIG_VAL(D, T, version, INT);
|
||||
E_CONFIG_VAL(D, T, begin, DOUBLE);
|
||||
E_CONFIG_HASH(D, T, subjects, hist_types_edd);
|
||||
E_CONFIG_HASH(D, T, actions, hist_types_edd);
|
||||
E_CONFIG_HASH(D, T, subjects, hist_types_edd);
|
||||
#undef T
|
||||
#undef D
|
||||
}
|
||||
|
@ -178,10 +177,6 @@ evry_history_free(void)
|
|||
{
|
||||
eina_hash_foreach(evry_hist->subjects, _hist_cleanup_cb, d);
|
||||
}
|
||||
if (evry_hist->actions)
|
||||
{
|
||||
eina_hash_foreach(evry_hist->actions, _hist_cleanup_cb, d);
|
||||
}
|
||||
|
||||
E_FREE(d);
|
||||
evry_history_unload();
|
||||
|
@ -203,9 +198,7 @@ evry_history_load(void)
|
|||
if (evry_hist && evry_hist->version != HISTORY_VERSION)
|
||||
{
|
||||
eina_hash_foreach(evry_hist->subjects, _hist_free_cb, NULL);
|
||||
eina_hash_foreach(evry_hist->actions, _hist_free_cb, NULL);
|
||||
eina_hash_free(evry_hist->subjects);
|
||||
eina_hash_free(evry_hist->actions);
|
||||
|
||||
E_FREE(evry_hist);
|
||||
evry_hist = NULL;
|
||||
|
@ -219,8 +212,6 @@ evry_history_load(void)
|
|||
}
|
||||
if (!evry_hist->subjects)
|
||||
evry_hist->subjects = eina_hash_string_superfast_new(NULL);
|
||||
if (!evry_hist->actions)
|
||||
evry_hist->actions = eina_hash_string_superfast_new(NULL);
|
||||
}
|
||||
|
||||
|
||||
|
@ -232,29 +223,30 @@ evry_history_unload(void)
|
|||
e_config_domain_save("module.everything.cache", hist_edd, evry_hist);
|
||||
|
||||
eina_hash_foreach(evry_hist->subjects, _hist_free_cb, NULL);
|
||||
eina_hash_foreach(evry_hist->actions, _hist_free_cb, NULL);
|
||||
eina_hash_free(evry_hist->subjects);
|
||||
eina_hash_free(evry_hist->actions);
|
||||
|
||||
E_FREE(evry_hist);
|
||||
evry_hist = NULL;
|
||||
}
|
||||
|
||||
EAPI History_Types *
|
||||
evry_history_types_get(Eina_Hash *hist, Evry_Type _type)
|
||||
evry_history_types_get(Evry_Type _type)
|
||||
{
|
||||
History_Types *ht;
|
||||
const char *type = evry_type_get(_type);
|
||||
|
||||
|
||||
if (!evry_hist)
|
||||
return NULL;
|
||||
|
||||
if (!type)
|
||||
return NULL;
|
||||
|
||||
ht = eina_hash_find(hist, type);
|
||||
ht = eina_hash_find(evry_hist->subjects, type);
|
||||
|
||||
if (!ht)
|
||||
{
|
||||
ht = E_NEW(History_Types, 1);
|
||||
eina_hash_add(hist, type, ht);
|
||||
eina_hash_add(evry_hist->subjects, type, ht);
|
||||
}
|
||||
|
||||
if (!ht->types)
|
||||
|
@ -264,7 +256,7 @@ evry_history_types_get(Eina_Hash *hist, Evry_Type _type)
|
|||
}
|
||||
|
||||
EAPI History_Item *
|
||||
evry_history_add(Eina_Hash *hist, Evry_Item *it, const char *ctxt, const char *input)
|
||||
evry_history_item_add(Evry_Item *it, const char *ctxt, const char *input)
|
||||
{
|
||||
History_Entry *he;
|
||||
History_Types *ht;
|
||||
|
@ -275,7 +267,11 @@ evry_history_add(Eina_Hash *hist, Evry_Item *it, const char *ctxt, const char *i
|
|||
|
||||
int rem_ctxt = 1;
|
||||
|
||||
if (!it) return NULL;
|
||||
if (!evry_hist)
|
||||
return NULL;
|
||||
|
||||
if (!it)
|
||||
return NULL;
|
||||
|
||||
if (it->type == EVRY_TYPE_ACTION)
|
||||
{
|
||||
|
@ -295,7 +291,7 @@ evry_history_add(Eina_Hash *hist, Evry_Item *it, const char *ctxt, const char *i
|
|||
if (!hi)
|
||||
{
|
||||
id = (it->id ? it->id : it->label);
|
||||
ht = evry_history_types_get(hist, it->type);
|
||||
ht = evry_history_types_get(it->type);
|
||||
he = eina_hash_find(ht->types, id);
|
||||
|
||||
if (!he)
|
||||
|
@ -355,7 +351,7 @@ evry_history_add(Eina_Hash *hist, Evry_Item *it, const char *ctxt, const char *i
|
|||
}
|
||||
|
||||
EAPI int
|
||||
evry_history_item_usage_set(Eina_Hash *hist, Evry_Item *it, const char *input, const char *ctxt)
|
||||
evry_history_item_usage_set(Evry_Item *it, const char *input, const char *ctxt)
|
||||
{
|
||||
History_Entry *he;
|
||||
History_Types *ht;
|
||||
|
@ -378,7 +374,7 @@ evry_history_item_usage_set(Eina_Hash *hist, Evry_Item *it, const char *input, c
|
|||
|
||||
if (!hi)
|
||||
{
|
||||
ht = evry_history_types_get(hist, it->type);
|
||||
ht = evry_history_types_get(it->type);
|
||||
|
||||
if (!(he = eina_hash_find(ht->types, (it->id ? it->id : it->label))))
|
||||
return 0;
|
||||
|
|
|
@ -106,7 +106,7 @@ _fetch(Evry_Plugin *plugin, const char *input)
|
|||
it->fuzzy_match = evry_fuzzy_match(it->label, input);
|
||||
|
||||
it->hi = NULL;
|
||||
evry_history_item_usage_set(sel->history, it, NULL, NULL);
|
||||
evry_history_item_usage_set(it, NULL, NULL);
|
||||
|
||||
snprintf(buf, sizeof(buf), "%d %s", eina_list_count(pp->items), _("Items"));
|
||||
if (it->detail)
|
||||
|
@ -127,8 +127,7 @@ _fetch(Evry_Plugin *plugin, const char *input)
|
|||
EINA_LIST_FOREACH(pp->items, l, it)
|
||||
{
|
||||
if (it->usage >= 0)
|
||||
evry_history_item_usage_set(sel->history,
|
||||
it, input, context);
|
||||
evry_history_item_usage_set(it, input, context);
|
||||
if (it->fuzzy_match == 0)
|
||||
it->fuzzy_match = evry_fuzzy_match(it->label, input);
|
||||
items = _add_item(p, items, it);
|
||||
|
@ -148,8 +147,7 @@ _fetch(Evry_Plugin *plugin, const char *input)
|
|||
if (it->fuzzy_match || sel == selectors[2])
|
||||
{
|
||||
if (it->usage >= 0)
|
||||
evry_history_item_usage_set(sel->history,
|
||||
it, input, context);
|
||||
evry_history_item_usage_set(it, input, context);
|
||||
|
||||
items = _add_item(p, items, it);
|
||||
}
|
||||
|
@ -166,8 +164,7 @@ _fetch(Evry_Plugin *plugin, const char *input)
|
|||
EINA_LIST_FOREACH(pp->items, ll, it)
|
||||
{
|
||||
if (it->usage >= 0)
|
||||
evry_history_item_usage_set(sel->history,
|
||||
it, NULL, context);
|
||||
evry_history_item_usage_set(it, NULL, context);
|
||||
it->fuzzy_match = 0;
|
||||
items = _add_item(p, items, it);
|
||||
}
|
||||
|
@ -181,8 +178,7 @@ _fetch(Evry_Plugin *plugin, const char *input)
|
|||
EINA_LIST_FOREACH(pp->items, ll, it)
|
||||
{
|
||||
if ((it->usage >= 0) &&
|
||||
(evry_history_item_usage_set(sel->history,
|
||||
it, input, context)) &&
|
||||
(evry_history_item_usage_set(it, input, context)) &&
|
||||
(!eina_list_data_find_list(items, it)))
|
||||
{
|
||||
it->fuzzy_match = 0;
|
||||
|
|
|
@ -8,6 +8,8 @@ typedef struct _Evry_Item_App Evry_Item_App;
|
|||
typedef struct _Evry_Item_File Evry_Item_File;
|
||||
typedef struct _Evry_Action Evry_Action;
|
||||
typedef struct _History_Item History_Item;
|
||||
typedef struct _History_Entry History_Entry;
|
||||
typedef struct _History_Types History_Types;
|
||||
|
||||
typedef unsigned int Evry_Type;
|
||||
|
||||
|
@ -237,4 +239,14 @@ struct _History_Item
|
|||
const char *data;
|
||||
};
|
||||
|
||||
struct _History_Entry
|
||||
{
|
||||
Eina_List *items;
|
||||
};
|
||||
|
||||
struct _History_Types
|
||||
{
|
||||
Eina_Hash *types;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -368,7 +368,7 @@ evry_util_plugin_items_add(Evry_Plugin *p, Eina_List *items, const char *input,
|
|||
if (it->fuzzy_match)
|
||||
{
|
||||
if (set_usage)
|
||||
evry_history_item_usage_set(evry_hist->subjects, it, input, NULL);
|
||||
evry_history_item_usage_set(it, input, NULL);
|
||||
|
||||
p->items = eina_list_append(p->items, it);
|
||||
}
|
||||
|
@ -798,7 +798,7 @@ _cb_free_item_changed(void *data, void *event)
|
|||
|
||||
|
||||
EAPI void
|
||||
evry_event_item_changed(Evry_Item *it, int icon, int selected)
|
||||
evry_item_changed(Evry_Item *it, int icon, int selected)
|
||||
{
|
||||
Evry_Event_Item_Changed *ev;
|
||||
ev = E_NEW(Evry_Event_Item_Changed, 1);
|
||||
|
|
Loading…
Reference in New Issue