- remove Evry.h
authorHannes Janetzek <hannes.janetzek@gmail.com>
Fri, 14 May 2010 22:06:06 +0000 (22:06 +0000)
committerHannes Janetzek <hannes.janetzek@gmail.com>
Fri, 14 May 2010 22:06:06 +0000 (22:06 +0000)
- move local vars into Evry_Window

SVN revision: 48871

src/modules/everything/Evry.h [deleted file]
src/modules/everything/Makefile.am
src/modules/everything/e_mod_main.h
src/modules/everything/evry.c
src/modules/everything/evry_plug_aggregator.c
src/modules/everything/evry_plug_clipboard.c
src/modules/everything/evry_plug_view_help.c
src/modules/everything/evry_util.c

diff --git a/src/modules/everything/Evry.h b/src/modules/everything/Evry.h
deleted file mode 100644 (file)
index beb885b..0000000
+++ /dev/null
@@ -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
index 5d9700d..941d49d 100644 (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 \
index 0a66258..e4d16c0 100644 (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;
 
-EAPI extern E_Module_Api e_modapi;
+  /* 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 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);
+void  evry_tab_view_free(Tab_View *v);
 
 Eina_Bool view_thumb_init(void);
-void view_thumb_shutdown(void);
+void  view_thumb_shutdown(void);
 
 Eina_Bool view_help_init(void);
-void view_help_shutdown(void);
+void  view_help_shutdown(void);
 
 Eina_Bool view_preview_init(void);
-void view_preview_shutdown(void);
+void  view_preview_shutdown(void);
 
 Eina_Bool evry_plug_clipboard_init(void);
-void evry_plug_clipboard_shutdown(void);
+void  evry_plug_clipboard_shutdown(void);
 
 Eina_Bool evry_plug_text_init(void);
-void evry_plug_text_shutdown(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);
+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);
+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();
+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);
+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)
+
 
-EAPI int evry_browse_item(Evry_Selector *sel);
-EAPI int evry_browse_back(Evry_Selector *sel);
+#define EVRY_PLUGIN_FREE(_p)                   \
+  if (_p) evry_plugin_free(EVRY_PLUGIN(_p))
 
-extern Evry_Selector **selectors;
+#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);
+
+EAPI extern E_Module_Api e_modapi;
 
 #endif
index 460f4aa..8d2cd7a 100644 (file)
 /* #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);
          }
      }
 
index 01d4217..e4e1ac0 100644 (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);
+}
index f4a765c..9c14506 100644 (file)
@@ -1,4 +1,4 @@
-#include "Evry.h"
+#include "e_mod_main.h"
 
 
 static Evry_Action *act;
index b710d1b..d719720 100644 (file)
@@ -1,4 +1,4 @@
-#include "Evry.h"
+#include "e_mod_main.h"
 
 static Evry_View *view;
 static Evas_Object *o_text = NULL;
index cc8b254..aa56090 100644 (file)
@@ -1,4 +1,4 @@
-#include "Evry.h"
+#include "e_mod_main.h"
 #include "md5.h"
 
 #define MAX_FUZZ 100