'everything' module: added config for plugin order

- pass plugin instance to plugin functions.. again


SVN revision: 41265
This commit is contained in:
Hannes Janetzek 2009-07-07 16:30:11 +00:00
parent a0048ff897
commit 46b44e4d38
13 changed files with 458 additions and 209 deletions

View File

@ -21,7 +21,6 @@ pkg_LTLIBRARIES = module.la
module_la_SOURCES = e_mod_main.c \
e_mod_main.h \
evry.c \
evry.h \
evry_config.c \
evry_plug_config.c \
evry_plug_dir_browse.c \

View File

@ -1,7 +1,7 @@
/*
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
*/
#include "e.h"
#include "e_mod_main.h"
/* actual module specifics */
@ -16,7 +16,7 @@ static E_Int_Menu_Augmentation *maug = NULL;
static E_Config_DD *conf_edd = NULL;
static E_Config_DD *conf_item_edd = NULL;
Config *evry_conf;
Config *evry_conf = NULL;
/* module setup */
EAPI E_Module_Api e_modapi =
@ -33,13 +33,16 @@ e_modapi_init(E_Module *m)
e_user_homedir_get(), e_config_profile_get());
ecore_file_mkdir(buf);
conf_item_edd = E_CONFIG_DD_NEW("Source_Config", Source_Config);
conf_item_edd = E_CONFIG_DD_NEW("Plugin_Config", Plugin_Config);
#undef T
#undef D
#define T Source_Config
#define T Plugin_Config
#define D conf_item_edd
E_CONFIG_VAL(D, T, name, STR);
E_CONFIG_VAL(D, T, min_query, INT);
E_CONFIG_VAL(D, T, loaded, INT);
E_CONFIG_VAL(D, T, enabled, INT);
E_CONFIG_VAL(D, T, priority, INT);
conf_edd = E_CONFIG_DD_NEW("Config", Config);
#undef T
#undef D
@ -51,7 +54,7 @@ e_modapi_init(E_Module *m)
E_CONFIG_VAL(D, T, rel_y, DOUBLE);
E_CONFIG_VAL(D, T, scroll_animate, INT);
E_CONFIG_VAL(D, T, scroll_speed, DOUBLE);
E_CONFIG_LIST(D, T, sources, conf_item_edd);
E_CONFIG_LIST(D, T, plugins_conf, conf_item_edd);
#undef T
#undef D
evry_conf = e_config_domain_load("module.everything", conf_edd);
@ -64,10 +67,8 @@ e_modapi_init(E_Module *m)
evry_conf->width = 400;
evry_conf->height = 350;
evry_conf->scroll_animate = 1;
evry_conf->scroll_speed = 0.5;
evry_conf->scroll_speed = 0.08;
}
evry_conf->scroll_speed = 0.08;
/* conf_module = m; */
evry_init();

View File

@ -1,17 +1,31 @@
/*
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
*/
#include "e.h"
#ifndef E_MOD_MAIN_H
#define E_MOD_MAIN_H
#define E_TYPEDEFS 1
#include "evry.h"
typedef struct _Evry_Plugin Evry_Plugin;
typedef struct _Evry_Item Evry_Item;
typedef struct _Evry_Action Evry_Action;
typedef struct _Evry_Config Evry_Config;
typedef struct _Evry_App Evry_App;
#undef E_TYPEDEFS
#include "evry.h"
typedef struct _Config Config;
typedef struct _Source_Config Source_Config;
typedef struct _Plugin_Config Plugin_Config;
#define EVRY_ACTION_OTHER 0
#define EVRY_ACTION_FINISHED 1
#define EVRY_ACTION_CONTINUE 2
#define EVRY_ASYNC_UPDATE_ADD 0
#define EVRY_ASYNC_UPDATE_CLEAR 1
struct _Config
{
@ -21,34 +35,144 @@ struct _Config
int width, height;
/* generic plugin config */
Eina_List *sources;
Eina_List *plugins_conf;
int scroll_animate;
double scroll_speed;
int auto_select_first;
/**/
Eina_List *plugins;
};
struct _Source_Config
struct _Plugin_Config
{
const char *name;
int loaded;
int enabled;
/* minimum input chars to query this source */
int min_query;
int priority;
};
struct _Evry_Item
{
const char *label;
const char *uri;
const char *mime;
/* these are only for internally use by plugins */
/* used e.g. as pointer for item data (Efreet_Desktop) or */
/* for internal stuff, like priority hints for sorting, etc */
void *data[4];
int priority;
/* not to be set by plugin! */
Evas_Object *o_icon;
Evas_Object *o_bg;
};
struct _Evry_Plugin
{
const char *name;
const char *type_in;
const char *type_out;
/* sync/async ?*/
Eina_Bool async_query;
/* whether candidates can be shown without input
* e.g. borders, app history */
Eina_Bool need_query;
/* run when plugin is activated. */
int (*begin) (Evry_Plugin *p, Evry_Item *item);
/* get candidates matching string, fills 'candidates' list */
int (*fetch) (Evry_Plugin *p, const char *input);
/* default action for this plugins items */
int (*action) (Evry_Plugin *p, Evry_Item *item, const char *input);
/* run before new query and when hiding 'everything' */
void (*cleanup) (Evry_Plugin *p);
/* TODO return icon */
void (*icon_get) (Evry_Plugin *p, Evry_Item *it, Evas *e);
/* provide more information for a candidate */
/* int (*candidate_info) (Evas *evas, Evry_Item *item); */
Eina_List *items;
Evas_Object *(*config_page) (void);
void (*config_apply) (void);
/* for internal use by plugin */
void *priv;
/* not to be set by plugin! */
Evas_Object *tab;
Plugin_Config *config;
};
struct _Evry_Action
{
const char *name;
const char *type_in1;
const char *type_in2;
const char *type_out;
Evry_Item *thing1;
Evry_Item *thing2;
int (*action) (void);
void (*icon_get) (Evry_Plugin *p, Evry_Item *it, Evas *e);
void *priv;
/* not to be set by plugin! */
Evas_Object *o_icon;
};
struct _Evry_Config
{
Eina_List *plugin_order;
};
struct _Evry_App
{
const char *file;
Efreet_Desktop *desktop;
};
EAPI extern E_Module_Api e_modapi;
EAPI void *e_modapi_init (E_Module *m);
EAPI int e_modapi_shutdown (E_Module *m);
EAPI int e_modapi_save (E_Module *m);
EAPI E_Config_Dialog *evry_config_dialog(E_Container *con, const char *params);
EAPI int evry_init(void);
EAPI int evry_shutdown(void);
EAPI int evry_show(E_Zone *zone);
EAPI void evry_hide(void);
EAPI void evry_plugin_register(Evry_Plugin *p);
EAPI void evry_plugin_unregister(Evry_Plugin *p);
EAPI void evry_action_register(Evry_Action *act);
EAPI void evry_action_unregister(Evry_Action *act);
EAPI void evry_plugin_async_update(Evry_Plugin *plugin, int state);
EAPI int evry_plug_apps_init(void);
EAPI int evry_plug_apps_shutdown(void);

View File

@ -1,6 +1,5 @@
#include "e.h"
#include "e_mod_main.h"
#include "evry.h"
#define INPUTLEN 40
#define MATCH_LAG 0.33
@ -63,14 +62,14 @@ static int _evry_scroll_timer(void *data);
static int _evry_push_state(void);
static int _evry_pop_state(void);
static void _evry_plugin_selector_show(Evry_Plugin *p);
static int _evry_cb_plugin_sort(const void *data1, const void *data2);
static int _evry_cb_plugin_sort(const void *data1, const void *data2);
static int _evry_plug_act_select_init(void);
static int _evry_plug_act_select_actions_set(void);
static int _evry_plug_act_select_fetch(const char *input);
static int _evry_plug_act_select_action(Evry_Item *item, const char *input);
static void _evry_plug_act_select_cleanup(void);
static void _evry_plug_act_select_item_icon_get(Evry_Item *it, Evas *e);
static int _evry_plug_act_select_fetch(Evry_Plugin *p, const char *input);
static int _evry_plug_act_select_action(Evry_Plugin *p, Evry_Item *item, const char *input);
static void _evry_plug_act_select_cleanup(Evry_Plugin *p);
static void _evry_plug_act_select_item_icon_get(Evry_Plugin *p, Evry_Item *it, Evas *e);
/* local subsystem globals */
static E_Popup *popup = NULL;
@ -87,7 +86,7 @@ static Ecore_Animator *scroll_animator = NULL;
static Ecore_Timer *scroll_timer = NULL;
static double scroll_align_to;
static double scroll_align;
static Eina_List *plugins = NULL;
/* static Eina_List *plugins = NULL; */
static Eina_List *actions = NULL;
static Evry_State *cur_state = NULL;
static Eina_List *stack = NULL;
@ -112,14 +111,44 @@ evry_shutdown(void)
EAPI void
evry_plugin_register(Evry_Plugin *plugin)
{
plugins = eina_list_append(plugins, plugin);
Eina_List *l;
Plugin_Config *pc;
Eina_Bool found = 0;
evry_conf->plugins = eina_list_append(evry_conf->plugins, plugin);
EINA_LIST_FOREACH(evry_conf->plugins_conf, l, pc)
{
if (pc->name && plugin->name && !strcmp(pc->name, plugin->name))
{
found = 1;
break;
}
}
if (!found)
{
pc = E_NEW(Plugin_Config, 1);
pc->name = eina_stringshare_add(plugin->name);
pc->enabled = 1;
pc->priority = eina_list_count(evry_conf->plugins);
evry_conf->plugins_conf = eina_list_append(evry_conf->plugins_conf, pc);
}
plugin->config = pc;
evry_conf->plugins = eina_list_sort(evry_conf->plugins,
eina_list_count(evry_conf->plugins),
_evry_cb_plugin_sort);
/* TODO sorting, initialization, etc */
}
EAPI void
evry_plugin_unregister(Evry_Plugin *plugin)
{
plugins = eina_list_remove(plugins, plugin);
evry_conf->plugins = eina_list_remove(evry_conf->plugins, plugin);
/* cleanup */
}
@ -242,7 +271,7 @@ evry_hide(void)
EINA_LIST_FREE(s->plugins, p)
{
p->cleanup();
p->cleanup(p);
if (p->tab)
{
@ -307,9 +336,6 @@ evry_plugin_async_update(Evry_Plugin *p, int action)
if (!eina_list_data_find(s->cur_plugins, p))
{
s->cur_plugins = eina_list_append(s->cur_plugins, p);
s->cur_plugins = eina_list_sort(s->cur_plugins,
eina_list_count(s->cur_plugins),
_evry_cb_plugin_sort);
_evry_plugin_selector_show(p);
}
else
@ -320,7 +346,7 @@ evry_plugin_async_update(Evry_Plugin *p, int action)
}
if ((!s->cur_plugin && s->cur_plugins) || (s->cur_plugin == p) ||
(s->plugin_auto_selected && (s->cur_plugin->prio > p->prio)))
(s->plugin_auto_selected && (s->cur_plugin->config->priority > p->config->priority)))
{
if (!s->cur_plugin)
s->plugin_auto_selected = 1;
@ -343,7 +369,7 @@ _evry_cb_plugin_sort(const void *data1, const void *data2)
{
const Evry_Plugin *p1 = data1;
const Evry_Plugin *p2 = data2;
return p1->prio - p2->prio;
return p1->config->priority - p2->config->priority;
}
static int
@ -369,7 +395,7 @@ _evry_push_state(void)
EINA_LIST_FOREACH(s->plugins, l, p)
{
if (p != s->cur_plugin)
p->cleanup();
p->cleanup(p);
if (p->tab)
{
@ -379,8 +405,10 @@ _evry_push_state(void)
}
}
EINA_LIST_FOREACH(plugins, l, p)
EINA_LIST_FOREACH(evry_conf->plugins, l, p)
{
if (!p->config->enabled) continue;
if (strstr(p->type_in, cur_type))
{
/* printf("%s- in:%s out:%s\n", p->name, p->type_in, p->type_out); */
@ -400,7 +428,7 @@ _evry_push_state(void)
if (s && (s->cur_plugin != action_selector))
it = s->sel_item;
if (p->begin(it))
if (p->begin(p, it))
list = eina_list_append(list, p);
}
else
@ -418,7 +446,7 @@ _evry_push_state(void)
if (!list) return 0;
list = eina_list_sort(list, eina_list_count(list), _evry_cb_plugin_sort);
/* list = eina_list_sort(list, eina_list_count(list), _evry_cb_plugin_sort); */
_evry_list_clear();
@ -473,7 +501,7 @@ _evry_pop_state(void)
free(s->input);
EINA_LIST_FOREACH(s->plugins, l, p)
p->cleanup();
p->cleanup(p);
E_FREE(s);
@ -504,7 +532,7 @@ _evry_pop_state(void)
EINA_LIST_FOREACH(s->plugins, l, p)
if (p != s->cur_plugin && p->begin)
p->begin(it);
p->begin(p, it);
p = s->cur_plugin;
s->cur_plugin = NULL;
@ -806,7 +834,7 @@ _evry_plugin_action(int finished)
if (s->cur_plugin == action_selector)
{
/* set cur_action and start plugins for second parameter (if required)*/
if (s->sel_item) _evry_plug_act_select_action(s->sel_item, s->input);
if (s->sel_item) _evry_plug_act_select_action(s->cur_plugin, s->sel_item, s->input);
finished = 0;
}
@ -826,7 +854,7 @@ _evry_plugin_action(int finished)
if (s->cur_plugin->action)
{
ret = s->cur_plugin->action(s->sel_item, s->input);
ret = s->cur_plugin->action(s->cur_plugin, s->sel_item, s->input);
}
if (ret == EVRY_ACTION_OTHER)
{
@ -900,7 +928,7 @@ _evry_show_items(Evry_Plugin *p)
_evry_cb_item_mouse_out, it);
evas_object_show(o);
p->icon_get(it, popup->evas);
p->icon_get(p, it, popup->evas);
if (edje_object_part_exists(o, "e.swallow.icons") && it->o_icon)
{
edje_object_part_swallow(o, "e.swallow.icons", it->o_icon);
@ -950,9 +978,9 @@ _evry_matches_update(Evry_Plugin *cur_plugin)
EINA_LIST_FOREACH(s->plugins, l, p)
{
if (strlen(s->input) == 0)
items = !p->need_query ? p->fetch(NULL) : 0;
items = !p->need_query ? p->fetch(p, NULL) : 0;
else
items = p->fetch(s->input);
items = p->fetch(p, s->input);
if (!s->initial || (items && eina_list_count(p->items) > 0))
{
@ -960,8 +988,10 @@ _evry_matches_update(Evry_Plugin *cur_plugin)
}
}
EINA_LIST_FOREACH(plugins, l, p)
EINA_LIST_FOREACH(evry_conf->plugins, l, p)
{
if (!p->config->enabled) continue;
if (p->tab && !eina_list_data_find(s->cur_plugins, p))
{
evas_object_del(p->tab);
@ -1323,7 +1353,7 @@ _evry_plug_act_select_actions_set(void)
Evry_State *s = cur_state;
Evry_Plugin *p = action_selector;
_evry_plug_act_select_cleanup();
_evry_plug_act_select_cleanup(p);
const char *type = s->cur_plugin->type_out;
@ -1342,9 +1372,8 @@ _evry_plug_act_select_actions_set(void)
}
static int
_evry_plug_act_select_fetch(const char *input)
_evry_plug_act_select_fetch(Evry_Plugin *p, const char *input)
{
Evry_Plugin *p = action_selector;
Evry_Action *act;
Eina_List *l;
@ -1367,7 +1396,7 @@ _evry_plug_act_select_fetch(const char *input)
}
static int
_evry_plug_act_select_action(Evry_Item *it, const char *input)
_evry_plug_act_select_action(Evry_Plugin *p, Evry_Item *it, const char *input)
{
Evry_Action *act = it->data[0];
cur_state->cur_action = act;
@ -1378,11 +1407,9 @@ _evry_plug_act_select_action(Evry_Item *it, const char *input)
}
static void
_evry_plug_act_select_cleanup(void)
_evry_plug_act_select_cleanup(Evry_Plugin *p)
{
Evry_Item *it;
Evry_Plugin *p = action_selector;
EINA_LIST_FREE(p->items, it)
{
@ -1403,7 +1430,7 @@ _evry_plug_act_select_cleanup(void)
}
static void
_evry_plug_act_select_item_icon_get(Evry_Item *it, Evas *e)
_evry_plug_act_select_item_icon_get(Evry_Plugin *p, Evry_Item *it, Evas *e)
{
Evry_Action *act = it->data[0];

View File

@ -1,13 +1,11 @@
/*
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
*/
#include "e_mod_main.h"
#ifdef E_TYPEDEFS
typedef struct _Evry_Plugin Evry_Plugin;
typedef struct _Evry_Item Evry_Item;
typedef struct _Evry_Action Evry_Action;
typedef struct _Evry_Config Evry_Config;
typedef struct _Evry_App Evry_App;
/* typedef enum _Evry_Plugin_Type
@ -97,6 +95,7 @@ struct _Evry_Plugin
/* not to be set by plugin! */
Evas_Object *tab;
Plugin_Config *config;
};
struct _Evry_Action

View File

@ -1,6 +1,5 @@
#include "e.h"
#include "e_mod_main.h"
#include "evry.h"
/* typedef struct _E_Config_Dialog_Data E_Config_Dialog_Data; */
@ -15,6 +14,9 @@ struct _E_Config_Dialog_Data
int width, height;
int scroll_animate;
Evas_Object *l_avail;
};
@ -75,10 +77,88 @@ _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
return 1;
}
static void
_fill_list(Evas_Object *obj, int enabled)
{
Evas *evas;
Evas_Coord w;
Eina_List *l;
Evry_Plugin *p;
/* freeze evas, edje, and list widget */
evas = evas_object_evas_get(obj);
evas_event_freeze(evas);
edje_freeze();
e_widget_ilist_freeze(obj);
e_widget_ilist_clear(obj);
EINA_LIST_FOREACH(evry_conf->plugins, l, p)
e_widget_ilist_append(obj, NULL, p->name, NULL, p, NULL);
e_widget_ilist_go(obj);
e_widget_min_size_get(obj, &w, NULL);
e_widget_min_size_set(obj, w > 180 ? w : 180, 200);
e_widget_ilist_thaw(obj);
edje_thaw();
evas_event_thaw(evas);
}
static void
_plugin_move(Evas_Object *list, int dir)
{
int sel;
Eina_List *l1, *l2;
sel = e_widget_ilist_selected_get(list);
if (sel >= 0)
{
Evry_Plugin *p;
Evas *evas;
int prio = 0;
l1 = eina_list_nth_list(evry_conf->plugins, sel);
l2 = eina_list_nth_list(evry_conf->plugins, sel + dir);
if (!l1 || !l2) return;
p = l1->data;
l1->data = l2->data;
l2->data = p;
_fill_list(list, 0);
e_widget_ilist_selected_set(list, sel + dir);
EINA_LIST_FOREACH(evry_conf->plugins, l1, p)
p->config->priority = prio++;
}
}
static void
_plugin_move_up_cb(void *data, void *data2)
{
E_Config_Dialog_Data *cfdata;
cfdata = data;
_plugin_move(cfdata->l_avail, -1);
}
static void
_plugin_move_down_cb(void *data, void *data2)
{
E_Config_Dialog_Data *cfdata;
cfdata = data;
_plugin_move(cfdata->l_avail, 1);
}
static Evas_Object *
_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
{
Evas_Object *o, *of, *ob;
Evas_Object *o, *of, *ob, *otb;
otb = e_widget_toolbook_add(evas, 48 * e_scale, 48 * e_scale);
o = e_widget_list_add(evas, 0, 0);
@ -98,5 +178,23 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
ob = e_widget_check_add(evas, _("Scroll Animate"), &(cfdata->scroll_animate));
e_widget_framelist_object_append(of, ob);
e_widget_list_object_append(o, of, 1, 1, 0.5);
return o;
e_widget_toolbook_page_append(otb, NULL, _("General Settings"), o, 0, 0, 0, 0, 0.5, 0.0);
e_widget_toolbook_page_show(otb, 0);
of = e_widget_framelist_add(evas, _("Available Plugins"), 0);
o = e_widget_ilist_add(evas, 24, 24, NULL);
cfdata->l_avail = o;
/* e_widget_ilist_multi_select_set(ol, 1); */
/* e_widget_on_change_hook_set(ol, _avail_list_cb_change, cfdata); */
_fill_list(o, 0);
e_widget_framelist_object_append(of, o);
o = e_widget_button_add(evas, _("Move Up"), NULL, _plugin_move_up_cb, cfdata, NULL);
e_widget_framelist_object_append(of, o);
o = e_widget_button_add(evas, _("Move Down"), NULL, _plugin_move_down_cb, cfdata, NULL);
e_widget_framelist_object_append(of, o);
e_widget_toolbook_page_append(otb, NULL, _("Plugins"), of, 0, 0, 0, 0, 0.5, 0.0);
return otb;
}

View File

@ -10,16 +10,17 @@ struct _Inst
Evry_Item *candidate;
};
static int _begin(Evry_Item *item);
static int _fetch(const char *input);
static int _action(Evry_Item *item, const char *input);
static void _cleanup(void);
static void _item_add(Efreet_Desktop *desktop, char *file, int prio);
static int _begin(Evry_Plugin *p, Evry_Item *item);
static int _fetch(Evry_Plugin *p, const char *input);
static int _action(Evry_Plugin *p, Evry_Item *item, const char *input);
static void _cleanup(Evry_Plugin *p);
static void _item_add(Evry_Plugin *p, Efreet_Desktop *desktop, char *file, int prio);
static int _cb_sort(const void *data1, const void *data2);
static void _item_icon_get(Evry_Item *it, Evas *e);
static void _item_icon_get(Evry_Plugin *p, Evry_Item *it, Evas *e);
static int _exec_action(void);
static Evry_Plugin *p;
static Evry_Plugin *p1;
static Evry_Plugin *p2;
static Evry_Action *act;
static Inst *inst;
@ -27,23 +28,36 @@ static Inst *inst;
EAPI int
evry_plug_apps_init(void)
{
p = E_NEW(Evry_Plugin, 1);
p->type_in = "NONE|FILE";
p->type_out = "NONE";
p->need_query = 0;
p->begin = &_begin;
p->fetch = &_fetch;
p->action = &_action;
p->cleanup = &_cleanup;
p->icon_get = &_item_icon_get;
evry_plugin_register(p);
p1 = E_NEW(Evry_Plugin, 1);
p1->name = "Applications";
p1->type_in = "NONE";
p1->type_out = "APPLICATION";
p1->need_query = 0;
p1->begin = &_begin;
p1->fetch = &_fetch;
p1->action = &_action;
p1->cleanup = &_cleanup;
p1->icon_get = &_item_icon_get;
evry_plugin_register(p1);
p2 = E_NEW(Evry_Plugin, 1);
p2->name = "Open With...";
p2->type_in = "FILE";
p2->type_out = "NONE";
p2->need_query = 0;
p2->begin = &_begin;
p2->fetch = &_fetch;
p2->action = &_action;
p2->cleanup = &_cleanup;
p2->icon_get = &_item_icon_get;
evry_plugin_register(p2);
act = E_NEW(Evry_Action, 1);
act->name = "Open File...";
act->type_in1 = "APPLICATION";
act->type_in2 = "FILE";
act->type_out = "NONE";
act->action =_exec_action;
act->action = &_exec_action;
evry_action_register(act);
inst = NULL;
@ -54,14 +68,15 @@ evry_plug_apps_init(void)
EAPI int
evry_plug_apps_shutdown(void)
{
evry_plugin_unregister(p);
evry_plugin_unregister(p1);
evry_plugin_unregister(p2);
evry_action_unregister(act);
return 1;
}
static int
_begin(Evry_Item *it)
_begin(Evry_Plugin *p, Evry_Item *it)
{
const char *mime;
@ -69,10 +84,6 @@ _begin(Evry_Item *it)
if (it)
{
p->name = "Open With...";
p->type_out = "NONE";
p->prio = 3;
if (!it->uri) return 0;
if (!it->mime)
@ -88,10 +99,6 @@ _begin(Evry_Item *it)
}
else
{
p->name = "Applications";
p->type_out = "APPLICATION";
p->prio = 1;
inst = E_NEW(Inst, 1);
}
@ -99,7 +106,7 @@ _begin(Evry_Item *it)
}
static int
_action(Evry_Item *it, const char *input)
_action(Evry_Plugin *p, Evry_Item *it, const char *input)
{
E_Zone *zone;
Evry_App *app = NULL;
@ -151,7 +158,7 @@ _action(Evry_Item *it, const char *input)
}
static void
_list_free(void)
_list_free(Evry_Plugin *p)
{
Evry_Item *it;
Evry_App *app;
@ -166,9 +173,9 @@ _list_free(void)
}
static void
_cleanup(void)
_cleanup(Evry_Plugin *p)
{
_list_free();
_list_free(p);
if (inst)
{
@ -180,7 +187,7 @@ _cleanup(void)
}
static int
_fetch(const char *input)
_fetch(Evry_Plugin *p, const char *input)
{
Eina_List *l;
Efreet_Desktop *desktop;
@ -188,14 +195,14 @@ _fetch(const char *input)
char match1[4096];
char match2[4096];
_list_free();
_list_free(p);
if (inst->apps)
{
if (!input)
{
EINA_LIST_FOREACH(inst->apps, l, desktop)
_item_add(desktop, NULL, 1);
_item_add(p, desktop, NULL, 1);
}
else
{
@ -205,19 +212,19 @@ _fetch(const char *input)
EINA_LIST_FOREACH(inst->apps, l, desktop)
{
if (e_util_glob_case_match(desktop->exec, match1))
_item_add(desktop, NULL, 1);
_item_add(p, desktop, NULL, 1);
else if (e_util_glob_case_match(desktop->exec, match2))
_item_add(desktop, NULL, 2);
_item_add(p, desktop, NULL, 2);
else if (e_util_glob_case_match(desktop->name, match1))
_item_add(desktop, NULL, 1);
else if (e_util_glob_case_match(desktop->name, match2))
_item_add(desktop, NULL, 2);
_item_add(p, desktop, NULL, 1);
else if (p, e_util_glob_case_match(desktop->name, match2))
_item_add(p, desktop, NULL, 2);
else if (desktop->comment)
{
if (e_util_glob_case_match(desktop->comment, match1))
_item_add(desktop, NULL, 3);
_item_add(p, desktop, NULL, 3);
else if (e_util_glob_case_match(desktop->comment, match2))
_item_add(desktop, NULL, 4);
_item_add(p, desktop, NULL, 4);
}
}
}
@ -229,28 +236,28 @@ _fetch(const char *input)
snprintf(match1, sizeof(match1), "%s*", input);
l = efreet_util_desktop_exec_glob_list(match1);
EINA_LIST_FREE(l, desktop)
_item_add(desktop, NULL, 1);
_item_add(p, desktop, NULL, 1);
snprintf(match1, sizeof(match1), "*%s*", input);
l = efreet_util_desktop_name_glob_list(match1);
EINA_LIST_FREE(l, desktop)
_item_add(desktop, NULL, 2);
_item_add(p, desktop, NULL, 2);
// TODO make these optional/configurable
l = efreet_util_desktop_generic_name_glob_list(match1);
EINA_LIST_FREE(l, desktop)
_item_add(desktop, NULL, 3);
_item_add(p, desktop, NULL, 3);
l = efreet_util_desktop_comment_glob_list(match1);
EINA_LIST_FREE(l, desktop)
_item_add(desktop, NULL, 3);
_item_add(p, desktop, NULL, 3);
}
else if (!p->items)
{
// TODO option for popular/recent
l = e_exehist_list_get();
EINA_LIST_FREE(l, file)
_item_add(NULL, file, 1);
_item_add(p, NULL, file, 1);
}
if (inst->added)
@ -270,7 +277,7 @@ _fetch(const char *input)
}
static void
_item_add(Efreet_Desktop *desktop, char *file, int prio)
_item_add(Evry_Plugin *p, Efreet_Desktop *desktop, char *file, int prio)
{
Evry_Item *it;
Evry_App *app;
@ -355,7 +362,7 @@ _item_add(Efreet_Desktop *desktop, char *file, int prio)
}
static void
_item_icon_get(Evry_Item *it, Evas *e)
_item_icon_get(Evry_Plugin *p, Evry_Item *it, Evas *e)
{
Evry_App *app = it->data[0];
@ -396,14 +403,14 @@ _cb_sort(const void *data1, const void *data2)
}
static int
_exec_action(void)
_exec_action()
{
if (act->thing1 && act->thing2)
{
inst = E_NEW(Inst, 1);
inst->candidate = act->thing2;
_action(act->thing1, NULL);
_action(NULL, act->thing1, NULL);
E_FREE(inst);
inst = NULL;

View File

@ -1,12 +1,12 @@
#include "e.h"
#include "e_mod_main.h"
static int _fetch(const char *input);
static int _action(Evry_Item *item, const char *input);
static void _cleanup(void);
static void _item_add(E_Border *bd, int prio);
static int _fetch(Evry_Plugin *p, const char *input);
static int _action(Evry_Plugin *p, Evry_Item *item, const char *input);
static void _cleanup(Evry_Plugin *p);
static void _item_add(Evry_Plugin *p, E_Border *bd, int prio);
static int _cb_sort(const void *data1, const void *data2);
static void _item_icon_get(Evry_Item *it, Evas *e);
static void _item_icon_get(Evry_Plugin *p, Evry_Item *it, Evas *e);
static Evry_Plugin *p;
@ -19,7 +19,6 @@ evry_plug_border_init(void)
p->type_in = "NONE";
p->type_out = "BORDER";
p->need_query = 0;
p->prio = 0;
p->fetch = &_fetch;
p->action = &_action;
p->cleanup = &_cleanup;
@ -39,7 +38,7 @@ evry_plug_border_shutdown(void)
}
static int
_action(Evry_Item *it, const char *input)
_action(Evry_Plugin *p, Evry_Item *it, const char *input)
{
E_Border *bd;
E_Zone *zone;
@ -67,7 +66,7 @@ _action(Evry_Item *it, const char *input)
}
static void
_cleanup()
_cleanup(Evry_Plugin *p)
{
Evry_Item *it;
@ -80,7 +79,7 @@ _cleanup()
}
static int
_fetch(const char *input)
_fetch(Evry_Plugin *p, const char *input)
{
E_Manager *man;
E_Zone *zone;
@ -91,7 +90,7 @@ _fetch(const char *input)
E_Border *bd;
E_Border_List *bl;
_cleanup();
_cleanup(p);
man = e_manager_current_get();
zone = e_util_zone_current_get(man);
@ -108,17 +107,17 @@ _fetch(const char *input)
if (zone == bd->zone)
{
if (!input)
_item_add(bd, 1);
_item_add(p, bd, 1);
else if (bd->client.icccm.name &&
e_util_glob_case_match(bd->client.icccm.name, match1))
_item_add(bd, 1);
_item_add(p, bd, 1);
else if (e_util_glob_case_match(e_border_name_get(bd), match1))
_item_add(bd, 1);
_item_add(p, bd, 1);
else if (bd->client.icccm.name &&
e_util_glob_case_match(bd->client.icccm.name, match2))
_item_add(bd, 2);
_item_add(p, bd, 2);
else if (e_util_glob_case_match(e_border_name_get(bd), match2))
_item_add(bd, 2);
_item_add(p, bd, 2);
}
}
e_container_border_list_free(bl);
@ -133,13 +132,13 @@ _fetch(const char *input)
}
static void
_item_icon_get(Evry_Item *it, Evas *e)
_item_icon_get(Evry_Plugin *p, Evry_Item *it, Evas *e)
{
it->o_icon = e_border_icon_add(((E_Border *)it->data[0]), e);
}
static void
_item_add(E_Border *bd, int prio)
_item_add(Evry_Plugin *p, E_Border *bd, int prio)
{
Evry_Item *it;

View File

@ -8,12 +8,12 @@ struct _Inst
E_Border *border;
};
static int _begin(Evry_Item *item);
static int _fetch(const char *input);
static int _action(Evry_Item *item, const char *input);
static void _cleanup(void);
static void _item_icon_get(Evry_Item *it, Evas *e);
static void _item_add(const char *label, void (*action_cb) (E_Border *bd), const char *icon);
static int _begin(Evry_Plugin *p, Evry_Item *item);
static int _fetch(Evry_Plugin *p, const char *input);
static int _action(Evry_Plugin *p, Evry_Item *item, const char *input);
static void _cleanup(Evry_Plugin *p);
static void _item_icon_get(Evry_Plugin *p, Evry_Item *it, Evas *e);
static void _item_add(Evry_Plugin *p, const char *label, void (*action_cb) (E_Border *bd), const char *icon);
static Evry_Plugin *p;
static Inst *inst;
@ -27,7 +27,6 @@ evry_plug_border_act_init(void)
p->type_in = "BORDER";
p->type_out = "NONE";
p->need_query = 0;
p->prio = 0;
p->begin = &_begin;
p->fetch = &_fetch;
p->action = &_action;
@ -64,7 +63,7 @@ _act_cb_border_minimize(E_Border *bd)
}
static int
_begin(Evry_Item *item)
_begin(Evry_Plugin *p, Evry_Item *item)
{
E_Border *bd;
@ -76,20 +75,20 @@ _begin(Evry_Item *item)
}
static int
_fetch(const char *input)
_fetch(Evry_Plugin *p, const char *input)
{
_cleanup();
_cleanup(p);
_item_add(_("Iconify"), _act_cb_border_minimize,
_item_add(p, _("Iconify"), _act_cb_border_minimize,
"e/widgets/border/default/minimize");
_item_add(_("Close"), _act_cb_border_close,
_item_add(p, _("Close"), _act_cb_border_close,
"e/widgets/border/default/close");
return 1;
}
static int
_action(Evry_Item *item, const char *input)
_action(Evry_Plugin *p, Evry_Item *item, const char *input)
{
void (*border_action) (E_Border *bd);
border_action = item->data[0];
@ -99,7 +98,7 @@ _action(Evry_Item *item, const char *input)
}
static void
_cleanup(void)
_cleanup(Evry_Plugin *p)
{
Evry_Item *it;
@ -112,7 +111,7 @@ _cleanup(void)
}
static void
_item_add(const char *label, void (*action_cb) (E_Border *bd), const char *icon)
_item_add(Evry_Plugin *p, const char *label, void (*action_cb) (E_Border *bd), const char *icon)
{
Evry_Item *it;
@ -124,7 +123,7 @@ _item_add(const char *label, void (*action_cb) (E_Border *bd), const char *icon)
}
static void
_item_icon_get(Evry_Item *it, Evas *e)
_item_icon_get(Evry_Plugin *p, Evry_Item *it, Evas *e)
{
it->o_icon = edje_object_add(e);
e_theme_edje_object_set(it->o_icon, "base/theme/borders", (const char *)it->data[1]);

View File

@ -5,13 +5,13 @@
* - dc support?
*/
static int _begin(Evry_Item *it);
static int _fetch(const char *input);
static int _action(Evry_Item *item, const char *input);
static void _cleanup(void);
static void _item_add(char *output, int prio);
static int _begin(Evry_Plugin *p, Evry_Item *it);
static int _fetch(Evry_Plugin *p, const char *input);
static int _action(Evry_Plugin *p, Evry_Item *item, const char *input);
static void _cleanup(Evry_Plugin *p);
static void _item_add(Evry_Plugin *p, char *output, int prio);
static int _cb_sort(const void *data1, const void *data2);
static void _item_icon_get(Evry_Item *it, Evas *e);
static void _item_icon_get(Evry_Plugin *p, Evry_Item *it, Evas *e);
static int _cb_data(void *data, int type, void *event);
static Evry_Plugin *p;
@ -29,7 +29,6 @@ evry_plug_calc_init(void)
p->type_in = "NONE";
p->type_out = "NONE";
p->need_query = 0;
p->prio = 6;
p->async_query = 1;
p->begin = &_begin;
p->fetch = &_fetch;
@ -59,7 +58,7 @@ evry_plug_calc_shutdown(void)
}
static int
_begin(Evry_Item *it)
_begin(Evry_Plugin *p, Evry_Item *it)
{
data_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DATA, _cb_data, p);
@ -72,7 +71,7 @@ _begin(Evry_Item *it)
}
static void
_cleanup()
_cleanup(Evry_Plugin *p)
{
Evry_Item *it, *it2;
int i = 0;
@ -108,7 +107,7 @@ _send_input(const char *input)
}
static int
_action(Evry_Item *it, const char *input)
_action(Evry_Plugin *p, Evry_Item *it, const char *input)
{
if (!it)
{
@ -139,7 +138,7 @@ _action(Evry_Item *it, const char *input)
it = p->items->data;
_item_add((char *) it->label, 1);
_item_add(p, (char *) it->label, 1);
}
evry_plugin_async_update(p, EVRY_ASYNC_UPDATE_ADD);
@ -157,7 +156,7 @@ _action(Evry_Item *it, const char *input)
if (p->items->data == it)
{
Evry_Item *it2 = p->items->data;
_item_add((char *) it2->label, 1);
_item_add(p, (char *) it2->label, 1);
}
}
@ -165,7 +164,7 @@ _action(Evry_Item *it, const char *input)
}
static int
_fetch(const char *input)
_fetch(Evry_Plugin *p, const char *input)
{
if (history)
{
@ -179,13 +178,13 @@ _fetch(const char *input)
}
static void
_item_icon_get(Evry_Item *it, Evas *e)
_item_icon_get(Evry_Plugin *p, Evry_Item *it, Evas *e)
{
it->o_icon = NULL;
}
static void
_item_add(char *output, int prio)
_item_add(Evry_Plugin *p, char *output, int prio)
{
Evry_Item *it;
@ -217,7 +216,7 @@ _cb_data(void *data, int type, void *event)
it->label = eina_stringshare_add(l->line);
}
else
_item_add(l->line, 1);
_item_add(p, l->line, 1);
}
evry_plugin_async_update(p, EVRY_ASYNC_UPDATE_ADD);

View File

@ -1,11 +1,11 @@
#include "e.h"
#include "e_mod_main.h"
static int _fetch(const char *input);
static int _action(Evry_Item *item, const char *input);
static void _cleanup(void);
static void _item_add(E_Configure_It *eci, int prio);
static void _item_icon_get(Evry_Item *it, Evas *e);
static int _fetch(Evry_Plugin *p, const char *input);
static int _action(Evry_Plugin *p, Evry_Item *item, const char *input);
static void _cleanup(Evry_Plugin *p);
static void _item_add(Evry_Plugin *p, E_Configure_It *eci, int prio);
static void _item_icon_get(Evry_Plugin *p, Evry_Item *it, Evas *e);
static int _cb_sort(const void *data1, const void *data2);
static Evry_Plugin *p;
@ -18,7 +18,6 @@ evry_plug_config_init(void)
p->name = "Settings";
p->type_in = "NONE";
p->type_out = "NONE";
p->prio = 4;
p->fetch = &_fetch;
p->action = &_action;
p->cleanup = &_cleanup;
@ -38,7 +37,7 @@ evry_plug_config_shutdown(void)
}
static int
_action(Evry_Item *it, const char *input)
_action(Evry_Plugin *p, Evry_Item *it, const char *input)
{
E_Configure_It *eci, *eci2;
E_Container *con;
@ -75,7 +74,7 @@ _action(Evry_Item *it, const char *input)
}
static void
_cleanup(void)
_cleanup(Evry_Plugin *p)
{
Evry_Item *it;
@ -87,7 +86,7 @@ _cleanup(void)
}
static int
_fetch(const char *input)
_fetch(Evry_Plugin *p, const char *input)
{
E_Manager *man;
E_Zone *zone;
@ -98,7 +97,7 @@ _fetch(const char *input)
E_Configure_Cat *ecat;
E_Configure_It *eci;
_cleanup();
_cleanup(p);
snprintf(match1, sizeof(match1), "%s*", input);
snprintf(match2, sizeof(match2), "*%s*", input);
@ -114,13 +113,13 @@ _fetch(const char *input)
if (eci->pri >= 0)
{
if (e_util_glob_case_match(eci->label, match1))
_item_add(eci, 1);
_item_add(p, eci, 1);
else if (e_util_glob_case_match(eci->label, match2))
_item_add(eci, 2);
_item_add(p, eci, 2);
else if (e_util_glob_case_match(ecat->label, match1))
_item_add(eci, 3);
_item_add(p, eci, 3);
else if (e_util_glob_case_match(ecat->label, match2))
_item_add(eci, 4);
_item_add(p, eci, 4);
}
}
}
@ -136,7 +135,7 @@ _fetch(const char *input)
}
static void
_item_icon_get(Evry_Item *it, Evas *e)
_item_icon_get(Evry_Plugin *p, Evry_Item *it, Evas *e)
{
E_Configure_It *eci = it->data[0];
Evas_Object *o = NULL;
@ -155,7 +154,7 @@ _item_icon_get(Evry_Item *it, Evas *e)
}
static void
_item_add(E_Configure_It *eci, int prio)
_item_add(Evry_Plugin *p, E_Configure_It *eci, int prio)
{
Evry_Item *it;

View File

@ -9,14 +9,14 @@ struct _State
Eina_List *items;
};
static int _begin(Evry_Item *it);
static int _fetch(const char *input);
static int _action(Evry_Item *it, const char *input);
static void _cleanup(void);
static int _begin(Evry_Plugin *p, Evry_Item *it);
static int _fetch(Evry_Plugin *p, const char *input);
static int _action(Evry_Plugin *p, Evry_Item *it, const char *input);
static void _cleanup(Evry_Plugin *p);
static int _cb_sort(const void *data1, const void *data2);
static void _item_icon_get(Evry_Item *it, Evas *e);
static void _list_free(void);
static Evry_Item *_item_fill(const char *directory, const char *file);
static void _item_icon_get(Evry_Plugin *p, Evry_Item *it, Evas *e);
static void _list_free(Evry_Plugin *p);
static Evry_Item *_item_fill(Evry_Plugin *p, const char *directory, const char *file);
static Evry_Plugin *p;
static Eina_List *stack = NULL;
@ -29,7 +29,6 @@ evry_plug_dir_browse_init(void)
p->name = "Browse Files";
p->type_in = "NONE|FILE";
p->type_out = "FILE";
p->prio = 2;
p->begin = &_begin;
p->fetch = &_fetch;
p->action = &_action;
@ -51,7 +50,7 @@ evry_plug_dir_browse_shutdown(void)
}
static int
_begin(Evry_Item *it)
_begin(Evry_Plugin *p, Evry_Item *it)
{
State *s;
@ -76,13 +75,13 @@ _begin(Evry_Item *it)
}
static int
_action(Evry_Item *it, const char *input)
_action(Evry_Plugin *p, Evry_Item *it, const char *input)
{
return EVRY_ACTION_OTHER;
}
static void
_list_free()
_list_free(Evry_Plugin *p)
{
Evry_Item *it;
@ -97,7 +96,7 @@ _list_free()
}
static void
_cleanup()
_cleanup(Evry_Plugin *p)
{
State *s;
@ -105,7 +104,7 @@ _cleanup()
s = stack->data;
_list_free();
_list_free(p);
eina_stringshare_del(s->directory);
@ -122,7 +121,7 @@ _cleanup()
/* based on directory-watcher from drawer module */
static int
_fetch(const char *input)
_fetch(Evry_Plugin *p, const char *input)
{
Eina_List *files;
char *file;
@ -131,7 +130,7 @@ _fetch(const char *input)
char match2[4096];
State *s = stack->data;
_list_free();
_list_free(p);
files = ecore_file_ls(s->directory);
@ -155,17 +154,17 @@ _fetch(const char *input)
{
if (e_util_glob_case_match(file, match1))
{
it = _item_fill(s->directory, file);
it = _item_fill(p, s->directory, file);
it->priority += 1;
}
else if (e_util_glob_case_match(file, match2))
{
it = _item_fill(s->directory, file);
it = _item_fill(p, s->directory, file);
}
}
else
{
it = _item_fill(s->directory, file);
it = _item_fill(p, s->directory, file);
}
if (it)
@ -188,7 +187,7 @@ _fetch(const char *input)
/* based on directory-watcher from drawer module */
static Evry_Item *
_item_fill(const char *directory, const char *file)
_item_fill(Evry_Plugin *p, const char *directory, const char *file)
{
Evry_Item *it = NULL;
char buf[4096];
@ -241,7 +240,7 @@ _item_fill(const char *directory, const char *file)
}
static void
_item_icon_get(Evry_Item *it, Evas *e)
_item_icon_get(Evry_Plugin *p, Evry_Item *it, Evas *e)
{
char *item_path;

View File

@ -10,11 +10,11 @@ struct _Inst
E_DBus_Connection *conn;
};
static int _fetch(const char *input);
static int _action(Evry_Item *it, const char *input);
static void _cleanup(void);
static void _item_add(char *file, char *service, char *mime, int prio);
static void _item_icon_get(Evry_Item *it, Evas *e);
static int _fetch(Evry_Plugin *p, const char *input);
static int _action(Evry_Plugin *p, Evry_Item *it, const char *input);
static void _cleanup(Evry_Plugin *p);
static void _item_add(Evry_Plugin *p, char *file, char *service, char *mime, int prio);
static void _item_icon_get(Evry_Plugin *p, Evry_Item *it, Evas *e);
static void _dbus_cb_reply(void *data, DBusMessage *msg, DBusError *error);
static Evry_Plugin *p;
@ -32,7 +32,6 @@ evry_plug_tracker_init(void)
p->type_in = "NONE";
p->type_out = "FILE";
p->need_query = 1;
p->prio = 3;
p->fetch = &_fetch;
p->action = &_action;
p->cleanup = &_cleanup;
@ -64,13 +63,13 @@ evry_plug_tracker_shutdown(void)
}
static int
_action(Evry_Item *it, const char *input)
_action(Evry_Plugin *p, Evry_Item *it, const char *input)
{
return EVRY_ACTION_OTHER;
}
static void
_cleanup(void)
_cleanup(Evry_Plugin *p)
{
Evry_Item *it;
@ -84,7 +83,7 @@ _cleanup(void)
}
static int
_fetch(const char *input)
_fetch(Evry_Plugin *p, const char *input)
{
Eina_List *list;
DBusMessage *msg;
@ -95,7 +94,7 @@ _fetch(const char *input)
char *service = "Files";
char *match;
_cleanup();
_cleanup(p);
match = malloc(sizeof(char) * strlen(input) + 2);
sprintf(match, "%s*", input);
@ -120,7 +119,7 @@ _fetch(const char *input)
}
static void
_item_icon_get(Evry_Item *it, Evas *e)
_item_icon_get(Evry_Plugin *p, Evry_Item *it, Evas *e)
{
char *item_path;
@ -146,7 +145,7 @@ _item_icon_get(Evry_Item *it, Evas *e)
}
static void
_item_add(char *file, char *service, char *mime, int prio)
_item_add(Evry_Plugin *p, char *file, char *service, char *mime, int prio)
{
Evry_Item *it;
@ -194,7 +193,7 @@ _dbus_cb_reply(void *data, DBusMessage *msg, DBusError *error)
if (uri && service && mime)
{
_item_add(uri, service, mime, 1);
_item_add(p, uri, service, mime, 1);
}
}