'everything' module: added config for plugin order
- pass plugin instance to plugin functions.. again SVN revision: 41265
This commit is contained in:
parent
a0048ff897
commit
46b44e4d38
|
@ -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 \
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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];
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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]);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue