- remove Evry.h

- move local vars into Evry_Window


SVN revision: 48871
This commit is contained in:
Hannes Janetzek 2010-05-14 22:06:06 +00:00
parent de3636182d
commit 71bc90e6ce
8 changed files with 531 additions and 541 deletions

View File

@ -1,303 +0,0 @@
#ifndef EVRY_H
#define EVRY_H
#include "e.h"
#include "evry_api.h"
#include "evry_types.h"
extern int _e_module_evry_log_dom;
#ifndef EINA_LOG_DEFAULT_COLOR
#define EINA_LOG_DEFAULT_COLOR EINA_COLOR_CYAN
#endif
#undef DBG
#undef INF
#undef WRN
#undef ERR
#define DBG(...) EINA_LOG_DOM_DBG(_e_module_evry_log_dom , __VA_ARGS__)
#define INF(...) EINA_LOG_DOM_INFO(_e_module_evry_log_dom , __VA_ARGS__)
#define WRN(...) EINA_LOG_DOM_WARN(_e_module_evry_log_dom , __VA_ARGS__)
#define ERR(...) EINA_LOG_DOM_ERR(_e_module_evry_log_dom , __VA_ARGS__)
typedef struct _Evry_State Evry_State;
typedef struct _Evry_View Evry_View;
typedef struct _History Evry_History;
typedef struct _Config Evry_Config;
#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
#define GET_VIEW(_v, _view) View *_v = (View*) _view
#define GET_ACTION(_act, _item) Evry_Action *_act = (Evry_Action *) _item
#define GET_PLUGIN(_p, _plugin) Plugin *_p = (Plugin*) _plugin
#define GET_ITEM(_it, _any) Evry_Item *_it = (Evry_Item *) _any
#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) \
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) \
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) \
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 EVRY_ITEM_FREE(_item) evry_item_free((Evry_Item *)_item)
#define EVRY_ITEM_REF(_item) evry_item_ref((Evry_Item *)_item)
#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_UPDATE(_p, _action) \
if (_p) evry_plugin_update(EVRY_PLUGIN(_p), _action)
#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; \
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 \
(EVRY_PLUGIN(_p)->items, eina_list_count(EVRY_PLUGIN(_p)->items), _sortcb)
#define EVRY_PLUGIN_ITEM_APPEND(_p, _item) \
EVRY_PLUGIN(_p)->items = eina_list_append(EVRY_PLUGIN(_p)->items, EVRY_ITEM(_item))
#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 IF_RELEASE(x) do { \
if (x) { \
const char *__tmp; __tmp = (x); (x) = NULL; eina_stringshare_del(__tmp); \
} \
(x) = NULL; \
} while (0)
struct _Evry_State
{
char *inp; /* alloced input */
char *input; /* pointer to input + trigger */
/* all available plugins for current state */
Eina_List *plugins;
/* currently active plugins, i.e. those that provide items */
Eina_List *cur_plugins;
/* active plugin */
Evry_Plugin *plugin;
/* selected item */
Evry_Item *cur_item;
/* marked items */
Eina_List *sel_items;
Eina_Bool plugin_auto_selected;
Eina_Bool item_auto_selected;
/* current view instance */
Evry_View *view;
Eina_Bool changed;
Eina_Bool trigger_active;
unsigned int request;
};
struct _Evry_View
{
Evry_View *id;
const char *name;
const char *trigger;
int active;
Evas_Object *o_list;
Evas_Object *o_bar;
Evry_View *(*create) (Evry_View *view, const Evry_State *s, const Evas_Object *swallow);
void (*destroy) (Evry_View *view);
int (*cb_key_down) (Evry_View *view, const Ecore_Event_Key *ev);
int (*update) (Evry_View *view, int slide);
void (*clear) (Evry_View *view, int slide);
int priority;
};
/* FIXME this should be exposed.
- add functions to retrieve this stuff */
struct _Config
{
int version;
/* position */
double rel_x, rel_y;
/* size */
int width, height;
Eina_List *modules;
/* generic plugin config */
Eina_List *conf_subjects;
Eina_List *conf_actions;
Eina_List *conf_objects;
Eina_List *conf_views;
int scroll_animate;
double scroll_speed;
int hide_input;
int hide_list;
/* quick navigation mode */
int quick_nav;
/* default view mode */
int view_mode;
int view_zoom;
int history_sort_mode;
/* use up/down keys for prev/next in thumb view */
int cycle_mode;
unsigned char first_run;
/* not saved data */
Eina_List *actions;
Eina_List *views;
int min_w, min_h;
};
struct _History
{
int version;
Eina_Hash *subjects;
double begin;
Eina_Bool changed;
};
/* evry.c */
EAPI void evry_item_select(const Evry_State *s, Evry_Item *it);
EAPI void evry_item_mark(const Evry_State *state, Evry_Item *it, Eina_Bool mark);
EAPI void evry_plugin_select(const Evry_State *s, Evry_Plugin *p);
EAPI int evry_list_win_show(void);
EAPI void evry_list_win_hide(void);
EAPI Evry_Item *evry_item_new(Evry_Item *base, Evry_Plugin *p, const char *label,
Evas_Object *(*icon_get) (Evry_Item *it, Evas *e),
void (*cb_free) (Evry_Item *item));
EAPI void evry_item_free(Evry_Item *it);
EAPI void evry_item_ref(Evry_Item *it);
EAPI void evry_plugin_update(Evry_Plugin *plugin, int state);
EAPI void evry_clear_input(Evry_Plugin *p);
/* evry_util.c */
EAPI Evas_Object *evry_icon_mime_get(const char *mime, Evas *e);
EAPI Evas_Object *evry_icon_theme_get(const char *icon, Evas *e);
EAPI int evry_fuzzy_match(const char *str, const char *match);
EAPI Eina_List *evry_fuzzy_match_sort(Eina_List *items);
EAPI int evry_util_exec_app(const Evry_Item *it_app, const Evry_Item *it_file);
EAPI char *evry_util_url_escape(const char *string, int inlength);
EAPI char *evry_util_url_unescape(const char *string, int length);
EAPI void evry_util_file_detail_set(Evry_Item_File *file);
EAPI int evry_util_module_config_check(const char *module_name, int conf, int epoch, int version);
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_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);
EAPI const char *evry_file_url_get(Evry_Item_File *file);
/* e_mod_main.c */
/* returns 1 when a new plugin config was created. in this case you can
set defaults of p->config */
EAPI int evry_plugin_register(Evry_Plugin *p, int type, int priority);
EAPI void evry_plugin_unregister(Evry_Plugin *p);
EAPI void evry_action_register(Evry_Action *act, int priority);
EAPI void evry_action_unregister(Evry_Action *act);
EAPI void evry_view_register(Evry_View *view, int priority);
EAPI void evry_view_unregister(Evry_View *view);
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_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,
Evry_Plugin *(*begin) (Evry_Plugin *p, const Evry_Item *item),
void (*cleanup) (Evry_Plugin *p),
int (*fetch) (Evry_Plugin *p, const char *input),
void (*free) (Evry_Plugin *p));
EAPI void evry_plugin_free(Evry_Plugin *p);
EAPI Evry_Action *evry_action_new(const char *name, const char *label,
Evry_Type type1, Evry_Type type2,
const char *icon,
int (*action) (Evry_Action *act),
int (*check_item) (Evry_Action *act, const Evry_Item *it));
EAPI void evry_action_free(Evry_Action *act);
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 Evry_History *evry_hist;
EAPI extern Evry_Config *evry_conf;
#endif

View File

@ -21,7 +21,7 @@ pkgdir = $(libdir)/enlightenment/modules/$(MODULE)/$(MODULE_ARCH
pkg_LTLIBRARIES = module.la
# noinst_LTLIBRARIES = libfoo.la
EVRYHEADERS = Evry.h evry_api.h evry_types.h
EVRYHEADERS = evry_api.h evry_types.h
module_la_SOURCES = $(EVRYHEADERS) \
e_mod_main.c \

View File

@ -1,7 +1,8 @@
#include "Evry.h"
#ifndef EVRY_H
#define EVRY_H
#ifndef E_MOD_MAIN_H
#define E_MOD_MAIN_H
#include "e.h"
#include "evry_api.h"
#define MOD_CONFIG_FILE_EPOCH 0x0001
#define MOD_CONFIG_FILE_GENERATION 0x0002
@ -9,9 +10,30 @@
((MOD_CONFIG_FILE_EPOCH << 16) | MOD_CONFIG_FILE_GENERATION)
typedef struct _Evry_Selector Evry_Selector;
typedef struct _Tab_View Tab_View;
typedef struct _Evry_State Evry_State;
typedef struct _Evry_View Evry_View;
typedef struct _History Evry_History;
typedef struct _Config Evry_Config;
typedef struct _Evry_Selector Evry_Selector;
typedef struct _Tab_View Tab_View;
typedef struct _Evry_Window Evry_Window;
struct _Evry_Window
{
E_Popup *popup;
Evas_Object *o_main;
Eina_Bool request_selection;
Eina_Bool plugin_dedicated;
Eina_Bool visible;
Ecore_Timer *show_timer;
Eina_List *handlers;
Evry_Selector *selector;
Evry_Selector **selectors;
};
struct _Evry_Selector
{
@ -43,6 +65,56 @@ struct _Evry_Selector
Ecore_Timer *update_timer;
};
struct _Evry_State
{
char *inp; /* alloced input */
char *input; /* pointer to input + trigger */
/* all available plugins for current state */
Eina_List *plugins;
/* currently active plugins, i.e. those that provide items */
Eina_List *cur_plugins;
/* active plugin */
Evry_Plugin *plugin;
/* selected item */
Evry_Item *cur_item;
/* marked items */
Eina_List *sel_items;
Eina_Bool plugin_auto_selected;
Eina_Bool item_auto_selected;
/* current view instance */
Evry_View *view;
Eina_Bool changed;
Eina_Bool trigger_active;
unsigned int request;
};
struct _Evry_View
{
Evry_View *id;
const char *name;
const char *trigger;
int active;
Evas_Object *o_list;
Evas_Object *o_bar;
Evry_View *(*create) (Evry_View *view, const Evry_State *s, const Evas_Object *swallow);
void (*destroy) (Evry_View *view);
int (*cb_key_down) (Evry_View *view, const Ecore_Event_Key *ev);
int (*update) (Evry_View *view, int slide);
void (*clear) (Evry_View *view, int slide);
int priority;
};
struct _Tab_View
{
Evas *evas;
@ -61,50 +133,281 @@ struct _Tab_View
Ecore_Timer *timer;
};
struct _Config
{
int version;
/* position */
double rel_x, rel_y;
/* size */
int width, height;
Eina_List *modules;
/* generic plugin config */
Eina_List *conf_subjects;
Eina_List *conf_actions;
Eina_List *conf_objects;
Eina_List *conf_views;
int scroll_animate;
double scroll_speed;
int hide_input;
int hide_list;
/* quick navigation mode */
int quick_nav;
/* default view mode */
int view_mode;
int view_zoom;
int history_sort_mode;
/* use up/down keys for prev/next in thumb view */
int cycle_mode;
unsigned char first_run;
/* not saved data */
Eina_List *actions;
Eina_List *views;
int min_w, min_h;
};
struct _History
{
int version;
Eina_Hash *subjects;
double begin;
Eina_Bool changed;
};
/* evry.c */
void evry_item_select(const Evry_State *s, Evry_Item *it);
void evry_item_mark(const Evry_State *state, Evry_Item *it, Eina_Bool mark);
void evry_plugin_select(const Evry_State *s, Evry_Plugin *p);
int evry_list_win_show(void);
void evry_list_win_hide(void);
Evry_Item *evry_item_new(Evry_Item *base, Evry_Plugin *p, const char *label,
Evas_Object *(*icon_get) (Evry_Item *it, Evas *e),
void (*cb_free) (Evry_Item *item));
void evry_item_free(Evry_Item *it);
void evry_item_ref(Evry_Item *it);
void evry_plugin_update(Evry_Plugin *plugin, int state);
void evry_clear_input(Evry_Plugin *p);
/* evry_util.c */
Evas_Object *evry_icon_mime_get(const char *mime, Evas *e);
Evas_Object *evry_icon_theme_get(const char *icon, Evas *e);
int evry_fuzzy_match(const char *str, const char *match);
Eina_List *evry_fuzzy_match_sort(Eina_List *items);
int evry_util_exec_app(const Evry_Item *it_app, const Evry_Item *it_file);
char *evry_util_url_escape(const char *string, int inlength);
char *evry_util_url_unescape(const char *string, int length);
void evry_util_file_detail_set(Evry_Item_File *file);
int evry_util_module_config_check(const char *module_name, int conf, int epoch, int version);
Evas_Object *evry_util_icon_get(Evry_Item *it, Evas *e);
int evry_util_plugin_items_add(Evry_Plugin *p, Eina_List *items, const char *input, int match_detail, int set_usage);
int evry_items_sort_func(const void *data1, const void *data2);
void evry_item_changed(Evry_Item *it, int change_icon, int change_selected);
char *evry_util_md5_sum(const char *str);
const char *evry_file_path_get(Evry_Item_File *file);
const char *evry_file_url_get(Evry_Item_File *file);
int evry_plugin_register(Evry_Plugin *p, int type, int priority);
void evry_plugin_unregister(Evry_Plugin *p);
void evry_action_register(Evry_Action *act, int priority);
void evry_action_unregister(Evry_Action *act);
void evry_view_register(Evry_View *view, int priority);
void evry_view_unregister(Evry_View *view);
Evry_Action *evry_action_find(const char *name);
void evry_history_load(void);
void evry_history_unload(void);
History_Item *evry_history_item_add(Evry_Item *it, const char *ctxt, const char *input);
int evry_history_item_usage_set(Evry_Item *it, const char *input, const char *ctxt);
History_Types *evry_history_types_get(Evry_Type type);
Evry_Plugin *evry_plugin_new(Evry_Plugin *base, const char *name, const char *label, const char *icon,
Evry_Type item_type,
Evry_Plugin *(*begin) (Evry_Plugin *p, const Evry_Item *item),
void (*cleanup) (Evry_Plugin *p),
int (*fetch) (Evry_Plugin *p, const char *input),
void (*free) (Evry_Plugin *p));
void evry_plugin_free(Evry_Plugin *p);
Evry_Action *evry_action_new(const char *name, const char *label,
Evry_Type type1, Evry_Type type2,
const char *icon,
int (*action) (Evry_Action *act),
int (*check_item) (Evry_Action *act, const Evry_Item *it));
void evry_action_free(Evry_Action *act);
int evry_api_version_check(int version);
Evry_Type evry_type_register(const char *type);
const char *evry_type_get(Evry_Type type);
EAPI extern E_Module_Api e_modapi;
Tab_View *evry_tab_view_new(const Evry_State *s, Evas *e);
void evry_tab_view_free(Tab_View *v);
Eina_Bool view_thumb_init(void);
void view_thumb_shutdown(void);
Eina_Bool view_help_init(void);
void view_help_shutdown(void);
Eina_Bool view_preview_init(void);
void view_preview_shutdown(void);
Eina_Bool evry_plug_clipboard_init(void);
void evry_plug_clipboard_shutdown(void);
Eina_Bool evry_plug_text_init(void);
void evry_plug_text_shutdown(void);
int evry_init(void);
int evry_shutdown(void);
int evry_show(E_Zone *zone, const char *params);
void evry_hide(int clear);
Evry_Plugin *evry_aggregator_new(Evry_Window *win, int type);
int evry_aggregator_fetch(Evry_Plugin *p, const char *input);
int evry_plug_actions_init();
void evry_plug_actions_shutdown();
Evry_Plugin *evry_plug_actions_new(Evry_Selector *selector, int type);
void evry_history_init(void);
void evry_history_free(void);
int evry_browse_item(Evry_Selector *sel);
int evry_browse_back(Evry_Selector *sel);
extern Evry_History *evry_hist;
extern Evry_Config *evry_conf;
#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
#define GET_VIEW(_v, _view) View *_v = (View*) _view
#define GET_ACTION(_act, _item) Evry_Action *_act = (Evry_Action *) _item
#define GET_PLUGIN(_p, _plugin) Plugin *_p = (Plugin*) _plugin
#define GET_ITEM(_it, _any) Evry_Item *_it = (Evry_Item *) _any
#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) \
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) \
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) \
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 EVRY_ITEM_FREE(_item) evry_item_free((Evry_Item *)_item)
#define EVRY_ITEM_REF(_item) evry_item_ref((Evry_Item *)_item)
#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_UPDATE(_p, _action) \
if (_p) evry_plugin_update(EVRY_PLUGIN(_p), _action)
#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; \
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 \
(EVRY_PLUGIN(_p)->items, eina_list_count(EVRY_PLUGIN(_p)->items), _sortcb)
#define EVRY_PLUGIN_ITEM_APPEND(_p, _item) \
EVRY_PLUGIN(_p)->items = eina_list_append(EVRY_PLUGIN(_p)->items, EVRY_ITEM(_item))
#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 IF_RELEASE(x) do { \
if (x) { \
const char *__tmp; __tmp = (x); (x) = NULL; eina_stringshare_del(__tmp); \
} \
(x) = NULL; \
} while (0)
/*** Common Logging ***/
extern int _e_module_evry_log_dom;
#ifndef EINA_LOG_DEFAULT_COLOR
#define EINA_LOG_DEFAULT_COLOR EINA_COLOR_CYAN
#endif
#undef DBG
#undef INF
#undef WRN
#undef ERR
#define DBG(...) EINA_LOG_DOM_DBG(_e_module_evry_log_dom , __VA_ARGS__)
#define INF(...) EINA_LOG_DOM_INFO(_e_module_evry_log_dom , __VA_ARGS__)
#define WRN(...) EINA_LOG_DOM_WARN(_e_module_evry_log_dom , __VA_ARGS__)
#define ERR(...) EINA_LOG_DOM_ERR(_e_module_evry_log_dom , __VA_ARGS__)
/*** E Module ***/
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);
Tab_View *evry_tab_view_new(const Evry_State *s, Evas *e);
void evry_tab_view_free(Tab_View *v);
Eina_Bool view_thumb_init(void);
void view_thumb_shutdown(void);
Eina_Bool view_help_init(void);
void view_help_shutdown(void);
Eina_Bool view_preview_init(void);
void view_preview_shutdown(void);
Eina_Bool evry_plug_clipboard_init(void);
void evry_plug_clipboard_shutdown(void);
Eina_Bool evry_plug_text_init(void);
void evry_plug_text_shutdown(void);
int evry_init(void);
int evry_shutdown(void);
int evry_show(E_Zone *zone, const char *params);
void evry_hide(int clear);
Evry_Plugin *evry_plug_aggregator_new(Evry_Selector *selector, int type);
int evry_plug_actions_init();
void evry_plug_actions_shutdown();
Evry_Plugin *evry_plug_actions_new(Evry_Selector *selector, int type);
void evry_history_init(void);
void evry_history_free(void);
EAPI int evry_browse_item(Evry_Selector *sel);
EAPI int evry_browse_back(Evry_Selector *sel);
extern Evry_Selector **selectors;
EAPI extern E_Module_Api e_modapi;
#endif

View File

@ -13,19 +13,6 @@
/* #undef DBG
* #define DBG(...) ERR(__VA_ARGS__) */
typedef struct _Evry_Window Evry_Window;
struct _Evry_Window
{
E_Popup *popup;
Evas_Object *o_main;
Eina_Bool request_selection;
Eina_Bool plugin_dedicated;
Eina_Bool visible;
};
static void _evry_matches_update(Evry_Selector *sel, int async);
static void _evry_plugin_action(Evry_Selector *sel, int finished);
static void _evry_plugin_select(Evry_State *s, Evry_Plugin *p);
@ -39,7 +26,7 @@ static int _evry_cb_update_timer(void *data);
static Evry_State *_evry_state_new(Evry_Selector *sel, Eina_List *plugins);
static void _evry_state_pop(Evry_Selector *sel);
static Evry_Selector *_evry_selector_new(int type);
static Evry_Selector *_evry_selector_new(Evry_Window *win, int type);
static void _evry_selector_free(Evry_Selector *sel);
static void _evry_selector_activate(Evry_Selector *sel);
static void _evry_selectors_switch(int dir);
@ -73,12 +60,6 @@ static int _evry_cb_selection_notify(void *data, int type, void *event);
/* local subsystem globals */
static Evry_Window *win = NULL;
static Ecore_X_Window input_window = 0;
static Eina_List *handlers = NULL;
static Evry_Selector *selector = NULL;
static Ecore_Timer *show_timer = NULL;
Evry_Selector **selectors = NULL;
/* externally accessible functions */
int
@ -104,7 +85,7 @@ _evry_cb_item_changed(void *data, int type, void *event)
for (i = 0; i < 3; i++)
{
sel = selectors[i];
sel = win->selectors[i];
if (sel->state && sel->state->cur_item == ev->item)
{
@ -120,12 +101,14 @@ _evry_cb_item_changed(void *data, int type, void *event)
static int
_cb_show_timer(void *data)
{
show_timer = NULL;
Evry_Selector *sel = win->selector;
if (evry_conf->views && selector->state)
win->show_timer = NULL;
if (evry_conf->views && sel->state)
{
Evry_View *view =evry_conf->views->data;
Evry_State *s = selector->state;
Evry_State *s = sel->state;
if (evry_conf->first_run)
{
@ -137,13 +120,9 @@ _cb_show_timer(void *data)
s->view = view->create(view, s, win->o_main);
_evry_view_show(s->view);
}
}
else
{
return 0;
}
_evry_list_win_show();
_evry_list_win_show();
}
return 0;
}
@ -159,32 +138,31 @@ evry_show(E_Zone *zone, const char *params)
Eina_List *l;
Evry_Plugin *p;
if (!(params && eina_list_count(selectors[0]->states) == 1))
if (!(params && eina_list_count(win->selectors[0]->states) == 1))
evry_hide(1);
if (selector && params)
if (win->selector && params)
{
EINA_LIST_FOREACH(selectors[0]->plugins, l, p)
EINA_LIST_FOREACH(win->selectors[0]->plugins, l, p)
if (!strcmp(params, p->name)) break;
_evry_plugin_select(selector->state, p);
_evry_selector_update(selector);
_evry_view_update(selector->state, p);
_evry_plugin_select(win->selector->state, p);
_evry_selector_update(win->selector);
_evry_view_update(win->selector->state, p);
}
return 1;
}
input_window = ecore_x_window_input_new(zone->container->win,
zone->x, zone->y,
zone->w, zone->h);
input_window = ecore_x_window_input_new(zone->container->win, 0, 0, 1, 1);
ecore_x_window_show(input_window);
if (!e_grabinput_get(input_window, 1, input_window))
if (!e_grabinput_get(input_window, 0, input_window))
{
return 0;
}
win = _evry_window_new(zone);
if (!win)
if (!win)
{
ecore_x_window_free(input_window);
input_window = 0;
@ -198,20 +176,20 @@ evry_show(E_Zone *zone, const char *params)
if (params)
win->plugin_dedicated = EINA_TRUE;
selectors = E_NEW(Evry_Selector*, 3);
selectors[0] = _evry_selector_new(EVRY_PLUGIN_SUBJECT);
selectors[1] = _evry_selector_new(EVRY_PLUGIN_ACTION);
selectors[2] = _evry_selector_new(EVRY_PLUGIN_OBJECT);
win->selectors = E_NEW(Evry_Selector*, 3);
_evry_selector_new(win, EVRY_PLUGIN_SUBJECT);
_evry_selector_new(win, EVRY_PLUGIN_ACTION);
_evry_selector_new(win, EVRY_PLUGIN_OBJECT);
handlers = eina_list_append
(handlers, ecore_event_handler_add
win->handlers = eina_list_append
(win->handlers, ecore_event_handler_add
(ECORE_EVENT_KEY_DOWN, _evry_cb_key_down, NULL));
handlers = eina_list_append
(handlers, ecore_event_handler_add
win->handlers = eina_list_append
(win->handlers, ecore_event_handler_add
(ECORE_X_EVENT_SELECTION_NOTIFY,
_evry_cb_selection_notify, win));
handlers = eina_list_append
(handlers, ecore_event_handler_add
win->handlers = eina_list_append
(win->handlers, ecore_event_handler_add
(EVRY_EVENT_ITEM_CHANGED,
_evry_cb_item_changed, NULL));
@ -219,14 +197,14 @@ evry_show(E_Zone *zone, const char *params)
e_popup_show(win->popup);
_evry_selector_subjects_get(params);
_evry_selector_update(selectors[0]);
_evry_selector_activate(selectors[0]);
_evry_selector_update(win->selectors[0]);
_evry_selector_activate(win->selectors[0]);
if (!evry_conf->hide_input)
edje_object_signal_emit(win->o_main, "e,state,entry_show", "e");
if (!evry_conf->hide_list)
show_timer = ecore_timer_add(0.01, _cb_show_timer, NULL);
win->show_timer = ecore_timer_add(0.01, _cb_show_timer, win);
return 1;
}
@ -238,33 +216,40 @@ evry_hide(int clear)
if (!win) return;
if ((clear && selector) &&
((eina_list_count(selectors[0]->states) > 1) ||
(selectors[0]->state && selectors[0]->state->input[0])))
if ((clear && win->selector) &&
((eina_list_count(win->selectors[0]->states) > 1) ||
((win->selectors[0]->state) &&
(win->selectors[0]->state->input[0]))))
{
int slide = 0;
if (selector != selectors[0])
Evry_Selector *sel;
Evry_State *s;
if (win->selector != win->selectors[0])
{
if (selector == selectors[1])
if (win->selector == win->selectors[1])
_evry_selectors_switch(-1);
else if (selector == selectors[2])
else if (win->selector == win->selectors[2])
_evry_selectors_switch(1);
}
/* just to be sure */
selector = selectors[0];
win->selector = win->selectors[0];
while (selector->states->next)
while (win->selector->states->next)
{
slide = 1;
_evry_state_pop(selector);
_evry_state_pop(win->selector);
}
_evry_clear(selector);
_evry_clear(selector);
Evry_State *s = selector->state;
selector->aggregator->fetch(selector->aggregator, s->input);
_evry_selector_update(selector);
sel = win->selector;
s = sel->state;
_evry_clear(sel);
_evry_clear(sel);
evry_aggregator_fetch(sel->aggregator, s->input);
_evry_selector_update(sel);
_evry_update_text_label(s);
_evry_view_show(s->view);
s->view->update(s->view, slide);
@ -272,25 +257,24 @@ evry_hide(int clear)
return;
}
if (show_timer)
ecore_timer_del(show_timer);
show_timer = NULL;
if (win->show_timer)
ecore_timer_del(win->show_timer);
win->visible = EINA_FALSE;
_evry_selector_free(selectors[0]);
_evry_selector_free(selectors[1]);
_evry_selector_free(selectors[2]);
E_FREE(selectors);
_evry_selector_free(win->selectors[0]);
_evry_selector_free(win->selectors[1]);
_evry_selector_free(win->selectors[2]);
E_FREE(win->selectors);
selectors = NULL;
selector = NULL;
/* selectors = NULL;
* selector = NULL; */
EINA_LIST_FREE(win->handlers, ev)
ecore_event_handler_del(ev);
_evry_window_free(win);
win = NULL;
EINA_LIST_FREE(handlers, ev)
ecore_event_handler_del(ev);
ecore_x_window_free(input_window);
e_grabinput_release(input_window, input_window);
input_window = 0;
@ -303,7 +287,7 @@ evry_clear_input(Evry_Plugin *p)
{
Evry_Selector *sel = _evry_selector_for_plugin_get(p);
if (sel != selector) return;
if (sel != win->selector) return;
Evry_State *s = sel->state;
@ -396,12 +380,12 @@ _evry_selector_for_plugin_get(Evry_Plugin *p)
for (i = 0; i < 3; i++)
{
if (p == selectors[i]->aggregator)
return selectors[i];
if (p == win->selectors[i]->aggregator)
return win->selectors[i];
s = selectors[i]->state;
s = win->selectors[i]->state;
if (s && eina_list_data_find(s->plugins, p))
return selectors[i];
return win->selectors[i];
}
return NULL;
@ -411,7 +395,7 @@ static int
_evry_timer_cb_actions_get(void *data)
{
Evry_Item *it = data;
Evry_Selector *sel = selectors[1];
Evry_Selector *sel = win->selectors[1];
Evry_State *s;
sel->update_timer = NULL;
@ -419,7 +403,7 @@ _evry_timer_cb_actions_get(void *data)
_evry_selector_actions_get(it);
_evry_selector_update(sel);
if (selector == sel && selector->state)
if (win->selector == sel && win->selector->state)
{
s = sel->state;
if (s->view)
@ -435,7 +419,7 @@ static void
_evry_selector_update_actions(Evry_Selector *sel)
{
Evry_Item *it = sel->state->cur_item;
sel = selectors[1];
sel = win->selectors[1];
if (sel->update_timer)
ecore_timer_del(sel->update_timer);
@ -446,7 +430,7 @@ EAPI void
evry_item_select(const Evry_State *state, Evry_Item *it)
{
Evry_State *s = (Evry_State *)state;
Evry_Selector *sel = selector;
Evry_Selector *sel = win->selector;
if (!s && it)
{
@ -463,7 +447,7 @@ evry_item_select(const Evry_State *state, Evry_Item *it)
if (s == sel->state)
{
_evry_selector_update(sel);
if (selector == selectors[0])
if (win->selector == win->selectors[0])
_evry_selector_update_actions(sel);
}
}
@ -554,7 +538,7 @@ evry_plugin_update(Evry_Plugin *p, int action)
/* update aggregator */
if ((eina_list_count(s->cur_plugins) > 1 ) ||
/* add aggregator for actions */
(sel == selectors[1] &&
(sel == win->selectors[1] &&
(eina_list_count(s->cur_plugins) > 0 )))
{
/* add aggregator */
@ -606,7 +590,7 @@ _evry_list_win_show(void)
if (win->visible) return;
win->visible = EINA_TRUE;
_evry_list_win_update(selector->state);
_evry_list_win_update(win->selector->state);
edje_object_signal_emit(win->o_main, "e,state,list_show", "e");
edje_object_signal_emit(win->o_main, "e,state,entry_show", "e");
@ -617,16 +601,16 @@ _evry_list_win_clear(int hide)
{
if (!win->visible) return;
if (selector->state)
_evry_view_clear(selector->state);
if (win->selector->state)
_evry_view_clear(win->selector->state);
if (hide)
{
win->visible = EINA_FALSE;
edje_object_signal_emit(win->o_main, "e,state,list_hide", "e");
if (evry_conf->hide_input &&
(!selector->state || !selector->state->input ||
strlen(selector->state->input) == 0))
(!win->selector->state || !win->selector->state->input ||
strlen(win->selector->state->input) == 0))
edje_object_signal_emit(win->o_main, "e,state,entry_hide", "e");
}
}
@ -677,7 +661,7 @@ _evry_window_new(E_Zone *zone)
evry_conf->min_h = mh;
if (evry_conf->height > mh)
mh = evry_conf->height;
mw += offset_s*2;
mh += offset_s*2;
x = (zone->w * evry_conf->rel_x) - (mw / 2);
@ -708,7 +692,7 @@ _evry_window_free(Evry_Window *win)
}
static Evry_Selector *
_evry_selector_new(int type)
_evry_selector_new(Evry_Window *win, int type)
{
Plugin_Config *pc;
Eina_List *l, *pcs;
@ -719,7 +703,7 @@ _evry_selector_new(int type)
"e/modules/everything/selector_item");
evas_object_show(o);
sel->aggregator = evry_plug_aggregator_new(sel, type);
sel->aggregator = evry_aggregator_new(win, type);
if (type == EVRY_PLUGIN_SUBJECT)
{
@ -747,6 +731,8 @@ _evry_selector_new(int type)
sel->plugins = eina_list_append(sel->plugins, pc->plugin);
}
win->selectors[type] = sel;
return sel;
}
@ -762,7 +748,7 @@ _evry_selector_free(Evry_Selector *sel)
if (sel->o_main)
evas_object_del(sel->o_main);
if (win->visible && (sel == selector))
if (win->visible && (sel == win->selector))
_evry_view_clear(sel->state);
while (sel->states)
@ -784,32 +770,28 @@ _evry_selector_activate(Evry_Selector *sel)
{
Evry_State *s;
if (selector)
if (win->selector)
{
s = selector->state;
Evry_Selector *sel = win->selector;
edje_object_signal_emit(selector->o_main, "e,state,unselected", "e");
edje_object_part_text_set(selector->o_main, "e.text.plugin", "");
edje_object_signal_emit(sel->o_main, "e,state,unselected", "e");
edje_object_part_text_set(sel->o_main, "e.text.plugin", "");
if (s && s->view)
{
/* s->view->clear(s->view, 0); */
_evry_view_hide(s->view, 0);
}
if (sel->state && sel->state->view)
_evry_view_hide(sel->state->view, 0);
_evry_list_win_clear(evry_conf->hide_list);
}
selector = sel;
s = selector->state;
edje_object_signal_emit(sel->o_main, "e,state,selected", "e");
if (s)
win->selector = sel;
if ((s = sel->state))
{
_evry_update_text_label(s);
if (sel->state->cur_item)
if (s->cur_item)
edje_object_part_text_set(sel->o_main, "e.text.plugin",
EVRY_ITEM(s->cur_item->plugin)->label);
@ -896,7 +878,7 @@ _evry_selector_item_update(Evry_Selector *sel)
{
/* no items for this state - clear selector */
edje_object_part_text_set(sel->o_main, "e.text.label", "");
if (sel == selector && s && s->plugin)
if (sel == win->selector && s && s->plugin)
edje_object_part_text_set(sel->o_main, "e.text.plugin",
EVRY_ITEM(s->plugin)->label);
else
@ -909,7 +891,7 @@ _evry_selector_item_update(Evry_Selector *sel)
{
edje_object_part_text_set(sel->o_main, "e.text.label", it->label);
if (sel == selector)
if (sel == win->selector)
edje_object_part_text_set(sel->o_main, "e.text.plugin",
EVRY_ITEM(it->plugin)->label);
else
@ -986,7 +968,7 @@ _evry_selector_update(Evry_Selector *sel)
_evry_selector_item_update(sel);
if (sel == selectors[0])
if (sel == win->selectors[0])
{
if (item_changed)
{
@ -994,7 +976,7 @@ _evry_selector_update(Evry_Selector *sel)
}
else
{
sel = selectors[1];
sel = win->selectors[1];
if (sel->update_timer)
ecore_timer_del(sel->update_timer);
sel->update_timer = NULL;
@ -1005,7 +987,7 @@ _evry_selector_update(Evry_Selector *sel)
static void
_evry_list_win_update(Evry_State *s)
{
if (s != selector->state) return;
if (s != win->selector->state) return;
if (!win->visible) return;
/* if (s->changed) */
@ -1017,7 +999,7 @@ _evry_selector_subjects_get(const char *plugin_name)
{
Eina_List *l, *plugins = NULL;
Evry_Plugin *p, *pp;
Evry_Selector *sel = selectors[0];
Evry_Selector *sel = win->selectors[0];
EINA_LIST_FOREACH(sel->plugins, l, p)
{
@ -1049,7 +1031,7 @@ _evry_selector_actions_get(Evry_Item *it)
{
Eina_List *l, *plugins = NULL;
Evry_Plugin *p, *pp;
Evry_Selector *sel = selectors[1];
Evry_Selector *sel = win->selectors[1];
while (sel->state)
_evry_state_pop(sel);
@ -1082,13 +1064,13 @@ _evry_selector_objects_get(Evry_Action *act)
{
Eina_List *l, *plugins = NULL;
Evry_Plugin *p, *pp;
Evry_Selector *sel = selectors[2];
Evry_Selector *sel = win->selectors[2];
Evry_Item *it;
while (sel->state)
_evry_state_pop(sel);
it = selectors[1]->state->cur_item;
it = win->selectors[1]->state->cur_item;
EINA_LIST_FOREACH(sel->plugins, l, p)
{
@ -1176,7 +1158,7 @@ _evry_state_pop(Evry_Selector *sel)
int
evry_browse_item(Evry_Selector *sel)
{
if (!sel) sel = selector;
if (!sel) sel = win->selector;
Evry_State *s, *new_state;
Evry_Item *it;
Eina_List *l, *plugins = NULL;
@ -1284,7 +1266,7 @@ evry_browse_back(Evry_Selector *sel)
_evry_state_pop(sel);
s = sel->state;
sel->aggregator->fetch(sel->aggregator, s->input);
evry_aggregator_fetch(sel->aggregator, s->input);
_evry_selector_update(sel);
_evry_update_text_label(s);
_evry_view_show(s->view);
@ -1296,61 +1278,61 @@ evry_browse_back(Evry_Selector *sel)
static void
_evry_selectors_switch(int dir)
{
Evry_State *s = selector->state;
Evry_State *s = win->selector->state;
if (show_timer)
if (win->show_timer)
_cb_show_timer(NULL);
if (selector->update_timer)
if (win->selector->update_timer)
{
if ((selector == selectors[0]) ||
(selector == selectors[1]))
if ((win->selector == win->selectors[0]) ||
(win->selector == win->selectors[1]))
{
_evry_matches_update(selector, 0);
_evry_selector_update(selector);
_evry_matches_update(win->selector, 0);
_evry_selector_update(win->selector);
}
}
if (selector == selectors[0] && dir > 0)
if (win->selector == win->selectors[0] && dir > 0)
{
if (s->cur_item)
_evry_selector_activate(selectors[1]);
_evry_selector_activate(win->selectors[1]);
}
else if (selector == selectors[1] && dir > 0)
else if (win->selector == win->selectors[1] && dir > 0)
{
int next_selector = 0;
Evry_Item *it;
if ((it = s->cur_item) &&
(it->plugin == selector->actions))
(it->plugin == win->selector->actions))
{
GET_ACTION(act,it);
if (act->it2.type)
{
_evry_selector_objects_get(act);
_evry_selector_update(selectors[2]);
_evry_selector_update(win->selectors[2]);
edje_object_signal_emit(win->o_main, "e,state,object_selector_show", "e");
next_selector = 2;
}
}
_evry_selector_activate(selectors[next_selector]);
_evry_selector_activate(win->selectors[next_selector]);
}
else if (selector == selectors[1] && dir < 0)
else if (win->selector == win->selectors[1] && dir < 0)
{
_evry_selector_activate(selectors[0]);
_evry_selector_activate(win->selectors[0]);
edje_object_signal_emit(win->o_main, "e,state,object_selector_hide", "e");
}
else if (selector == selectors[2] && dir > 0)
else if (win->selector == win->selectors[2] && dir > 0)
{
while (selector->states)
_evry_state_pop(selector);
while (win->selector->states)
_evry_state_pop(win->selector);
edje_object_signal_emit(win->o_main, "e,state,object_selector_hide", "e");
_evry_selector_activate(selectors[0]);
_evry_selector_activate(win->selectors[0]);
}
else if (selector == selectors[2] && dir < 0)
else if (win->selector == win->selectors[2] && dir < 0)
{
_evry_selector_activate(selectors[1]);
_evry_selector_activate(win->selectors[1]);
}
}
static int
@ -1367,13 +1349,13 @@ _evry_input_complete(Evry_State *s)
if (it->plugin->complete)
action = it->plugin->complete(it->plugin, it, &input);
else
evry_browse_item(selector);
evry_browse_item(win->selector);
if (input && action == EVRY_COMPLETE_INPUT)
{
snprintf(s->input, INPUTLEN - 1, "%s", input);
_evry_update_text_label(s);
_evry_cb_update_timer(selector);
_evry_cb_update_timer(win->selector);
evry_item_select(s, it);
}
@ -1423,8 +1405,8 @@ _evry_cheat_history(Evry_State *s, int promote, int delete)
if (hi->count < 0) hi->count = 1;
}
}
if (s->plugin == selector->aggregator)
selector->aggregator->fetch(selector->aggregator, s->input);
if (s->plugin == win->selector->aggregator)
evry_aggregator_fetch(win->selector->aggregator, s->input);
if (s->view)
s->view->update(s->view, 0);
@ -1481,11 +1463,11 @@ _evry_cb_key_down(void *data __UNUSED__, int type __UNUSED__, void *event)
}
}
if (!selector || !selector->state)
if (!win->selector || !win->selector->state)
return 1;
win->request_selection = EINA_FALSE;
s = selector->state;
s = win->selector->state;
old = ev->key;
if (!strcmp(ev->key, "KP_Enter"))
@ -1569,14 +1551,14 @@ _evry_cb_key_down(void *data __UNUSED__, int type __UNUSED__, void *event)
{
if (!strcmp(key, "u"))
{
if (!_evry_clear(selector))
evry_browse_back(selector);
if (!_evry_clear(win->selector))
evry_browse_back(win->selector);
goto end;
}
else if (!strcmp(key, "1"))
_evry_view_toggle(s, NULL);
else if (!strcmp(key, "Return"))
_evry_plugin_action(selector, 0);
_evry_plugin_action(win->selector, 0);
else if (!strcmp(key, "v"))
{
win->request_selection = EINA_TRUE;
@ -1595,28 +1577,28 @@ _evry_cb_key_down(void *data __UNUSED__, int type __UNUSED__, void *event)
goto end;
else if (!strcmp(key, "Right"))
{
if (!evry_browse_item(selector) &&
(selector != selectors[2]))
if (!evry_browse_item(win->selector) &&
(win->selector != win->selectors[2]))
_evry_selectors_switch(1);
}
else if (!strcmp(key, "Left"))
{
if (!evry_browse_back(selector))
if (!evry_browse_back(win->selector))
_evry_selectors_switch(-1);
}
else if (!strcmp(key, "Return"))
{
if (ev->modifiers & ECORE_EVENT_MODIFIER_SHIFT)
_evry_plugin_action(selector, 0);
else /*if (!_evry_browse_item(selector))*/
_evry_plugin_action(selector, 1);
_evry_plugin_action(win->selector, 0);
else /*if (!_evry_browse_item(win->selector))*/
_evry_plugin_action(win->selector, 1);
}
else if (!strcmp(key, "Tab"))
_evry_selectors_switch(1);
else if (!strcmp(key, "BackSpace"))
{
if (!_evry_backspace(selector))
evry_browse_back(selector);
if (!_evry_backspace(win->selector))
evry_browse_back(win->selector);
}
else if (_evry_view_key_press(s, ev))
goto end;
@ -1631,7 +1613,7 @@ _evry_cb_key_down(void *data __UNUSED__, int type __UNUSED__, void *event)
{
strcat(s->inp, ev->compose);
_evry_update(selector, 1);
_evry_update(win->selector, 1);
}
}
@ -1792,30 +1774,30 @@ _evry_plugin_action(Evry_Selector *sel, int finished)
Evry_Item *it, *it_subj, *it_act, *it_obj = NULL;
Eina_List *l;
if (selectors[0]->update_timer)
if (win->selectors[0]->update_timer)
{
_evry_matches_update(selectors[0], 0);
_evry_selector_update(selectors[0]);
_evry_matches_update(win->selectors[0], 0);
_evry_selector_update(win->selectors[0]);
}
if (!(s_subj = selectors[0]->state))
if (!(s_subj = win->selectors[0]->state))
return;
if (!(it_subj = s_subj->cur_item))
return;
if (selector == selectors[0] &&
selectors[1]->update_timer)
if (win->selector == win->selectors[0] &&
win->selectors[1]->update_timer)
{
_evry_selector_actions_get(it_subj);
if (!selectors[1]->state)
if (!win->selectors[1]->state)
return;
_evry_selector_update(selectors[1]);
_evry_selector_update(win->selectors[1]);
}
if (!(s_act = selectors[1]->state))
if (!(s_act = win->selectors[1]->state))
return;
if (!(it_act = s_act->cur_item))
@ -1833,14 +1815,14 @@ _evry_plugin_action(Evry_Selector *sel, int finished)
if (act->it2.type)
{
/* check if object is provided */
if ((s_obj = selectors[2]->state))
if ((s_obj = win->selectors[2]->state))
{
it_obj = s_obj->cur_item;
}
if (!it_obj)
{
if (selectors[1] == selector)
if (win->selectors[1] == win->selector)
_evry_selectors_switch(1);
return;
}
@ -2113,7 +2095,7 @@ _evry_matches_update(Evry_Selector *sel, int async)
{
EINA_LIST_FOREACH(s->plugins, l, p)
{
if ((p->config->top_level) && (sel == selectors[0]))
if ((p->config->top_level) && (sel == win->selectors[0]))
{
if ((p->config->trigger) && (p->config->trigger_only))
continue;
@ -2138,7 +2120,7 @@ _evry_matches_update(Evry_Selector *sel, int async)
}
}
if (sel->aggregator->fetch(sel->aggregator, input))
if (evry_aggregator_fetch(sel->aggregator, input))
_evry_plugin_list_insert(s, sel->aggregator);
if (s->plugin_auto_selected ||
@ -2243,7 +2225,7 @@ _evry_cb_selection_notify(void *data, int type, void *event)
{
Ecore_X_Event_Selection_Notify *ev;
/* FIXME Evry_Selector *sel = data; */
Evry_State *s = selector->state;
Evry_State *s = win->selector->state;
if (!s || (data != win)) return 1;
if (!win->request_selection) return 1;
@ -2261,7 +2243,7 @@ _evry_cb_selection_notify(void *data, int type, void *event)
text_data = ev->data;
strncat(s->input, text_data->text, (INPUTLEN - strlen(s->input)) - 1);
_evry_update(selector, 1);
_evry_update(win->selector, 1);
}
}

View File

@ -7,8 +7,9 @@ typedef struct _Plugin Plugin;
struct _Plugin
{
Evry_Plugin base;
Evry_Selector *selector;
int type;
Evry_Selector **selectors;
Evry_Item *warning;
};
@ -24,7 +25,7 @@ _fetch(Evry_Plugin *plugin, const char *input)
Eina_List *items = NULL;
const char *context = NULL;
char buf[128];
Evry_Selector *sel = p->selector;
Evry_Selector *sel = p->selectors[p->type];
if (input && !input[0]) input = NULL;
@ -36,7 +37,7 @@ _fetch(Evry_Plugin *plugin, const char *input)
if (!s->cur_plugins)
{
/* 'text' and 'actions' are always loaded */
if ((sel == selectors[0]) &&
if ((sel == p->selectors[0]) &&
(eina_list_count(s->plugins) == 2))
{
evry_item_ref(p->warning);
@ -48,9 +49,9 @@ _fetch(Evry_Plugin *plugin, const char *input)
/* get current items' context ... */
for (i = 1; i < 3; i++)
{
if (sel == selectors[i])
if (sel == p->selectors[i])
{
it = selectors[i-1]->state->cur_item;
it = p->selectors[i-1]->state->cur_item;
if (it) context = it->context;
}
}
@ -126,7 +127,7 @@ _fetch(Evry_Plugin *plugin, const char *input)
if (it->fuzzy_match == 0)
it->fuzzy_match = evry_fuzzy_match(it->label, input);
if (it->fuzzy_match || sel == selectors[2])
if (it->fuzzy_match || sel == p->selectors[2])
{
if (it->usage >= 0)
evry_history_item_usage_set(it, input, context);
@ -138,8 +139,8 @@ _fetch(Evry_Plugin *plugin, const char *input)
}
/* always append items of action or object selector */
else if ((!input) &&
((sel == selectors[1]) ||
(sel == selectors[2])))
((sel == p->selectors[1]) ||
(sel == p->selectors[2])))
{
EINA_LIST_FOREACH(lp, l, pp)
{
@ -245,7 +246,7 @@ _free(Evry_Plugin *plugin)
}
Evry_Plugin *
evry_plug_aggregator_new(Evry_Selector *sel, int type)
evry_aggregator_new(Evry_Window *win, int type)
{
Evry_Plugin *p;
@ -257,10 +258,17 @@ evry_plug_aggregator_new(Evry_Selector *sel, int type)
}
GET_PLUGIN(pa, p);
pa->selector = sel;
pa->selectors = win->selectors;
pa->type = type;
pa->warning = evry_item_new(NULL, p, N_("No plugins loaded"), NULL, NULL);
pa->warning->type = EVRY_TYPE_NONE;
return p;
}
int
evry_aggregator_fetch(Evry_Plugin *p, const char *input)
{
return p->fetch(p, input);
}

View File

@ -1,4 +1,4 @@
#include "Evry.h"
#include "e_mod_main.h"
static Evry_Action *act;

View File

@ -1,4 +1,4 @@
#include "Evry.h"
#include "e_mod_main.h"
static Evry_View *view;
static Evas_Object *o_text = NULL;

View File

@ -1,4 +1,4 @@
#include "Evry.h"
#include "e_mod_main.h"
#include "md5.h"
#define MAX_FUZZ 100