clean up the mess with stringshared/refd types:

use int to identify item type, add function to register new types. 


SVN revision: 48396
This commit is contained in:
Hannes Janetzek 2010-04-28 16:39:50 +00:00
parent 1972ad7589
commit 7aa6e09f48
17 changed files with 158 additions and 145 deletions

View File

@ -75,7 +75,7 @@ _begin_open_with(Evry_Plugin *plugin, const Evry_Item *item)
const char *mime;
if (!evry_item_type_check(item, EVRY_TYPE_FILE, NULL))
if (!CHECK_TYPE(item, EVRY_TYPE_FILE))
return 0;
GET_FILE(file, item);
@ -746,7 +746,7 @@ _complete(Evry_Plugin *plugin, const Evry_Item *it, char **input)
static int
_exec_app_check_item(Evry_Action *act, const Evry_Item *it)
{
/* if (!evry_item_type_check(it, EVRY_TYPE_APP, NULL)) return 0; */
/* if (!CHECK_TYPE(it, EVRY_TYPE_APP, NULL)) return 0; */
/* ITEM_APP(app, it); */
@ -958,7 +958,7 @@ _plugins_init(void)
plug_action = p;
act = EVRY_ACTION_NEW(N_("Launch"),
EVRY_TYPE_APP, NULL,
EVRY_TYPE_APP, 0,
"everything-launch",
_exec_app_action,
_exec_app_check_item);
@ -972,28 +972,28 @@ _plugins_init(void)
_actions = eina_list_append(_actions, act);
act = EVRY_ACTION_NEW(N_("Run in Terminal"),
EVRY_TYPE_APP, NULL,
EVRY_TYPE_APP, 0,
"system-run",
_exec_term_action,
_exec_term_check_item);
_actions = eina_list_append(_actions, act);
act = EVRY_ACTION_NEW(N_("Edit Application Entry"),
EVRY_TYPE_APP, NULL,
EVRY_TYPE_APP, 0,
"everything-launch",
_edit_app_action,
_edit_app_check_item);
_actions = eina_list_append(_actions, act);
act = EVRY_ACTION_NEW(N_("New Application Entry"),
EVRY_TYPE_APP, NULL,
EVRY_TYPE_APP, 0,
"everything-launch",
_new_app_action,
_new_app_check_item);
_actions = eina_list_append(_actions, act);
act = EVRY_ACTION_NEW(N_("Run with Sudo"),
EVRY_TYPE_APP, NULL,
EVRY_TYPE_APP, 0,
"system-run",
_exec_sudo_action, NULL);
_actions = eina_list_append(_actions, act);

View File

@ -329,8 +329,10 @@ _plugins_init(void)
if (!evry_api_version_check(EVRY_API_VERSION))
return EINA_FALSE;
p = EVRY_PLUGIN_NEW(Plugin, N_("Spell Checker"),"accessories-dictionary",
EVRY_TYPE_TEXT, NULL, _cleanup, _fetch, NULL);
p = EVRY_PLUGIN_NEW(Plugin, N_("Spell Checker"),
"accessories-dictionary",
EVRY_TYPE_TEXT,
NULL, _cleanup, _fetch, NULL);
p->aggregate = EINA_FALSE;
p->history = EINA_FALSE;

View File

@ -232,7 +232,9 @@ _plugins_init(void)
if (!evry_api_version_check(EVRY_API_VERSION))
return EINA_FALSE;
p1 = EVRY_PLUGIN_NEW(Evry_Plugin, N_("Calculator"), "accessories-calculator", EVRY_TYPE_TEXT,
p1 = EVRY_PLUGIN_NEW(Evry_Plugin, N_("Calculator"),
"accessories-calculator",
EVRY_TYPE_TEXT,
_begin, _cleanup, _fetch, NULL);
p1->view_mode = VIEW_MODE_LIST;

View File

@ -439,7 +439,7 @@ _begin(Evry_Plugin *plugin, const Evry_Item *it)
Plugin *p = NULL;
/* is FILE ? */
if (it && evry_item_type_check(it, EVRY_TYPE_FILE, NULL))
if (it && CHECK_TYPE(it, EVRY_TYPE_FILE))
{
GET_FILE(file, it);
@ -486,7 +486,7 @@ _hist_add(Evry_Plugin *plugin, Evry_Item_File *file)
EINA_LIST_FOREACH(he->items, l, hi)
{
if (hi->type != EVRY_TYPE_FILE)
if (hi->type != evry_type_get(EVRY_TYPE_FILE))
continue;
if (hi->data)
@ -620,7 +620,7 @@ _hist_items_add_cb(const Eina_Hash *hash, const void *key, void *data, void *fda
EINA_LIST_FOREACH(he->items, l, hi)
{
if (hi->type != EVRY_TYPE_FILE)
if (hi->type != evry_type_get(EVRY_TYPE_FILE))
continue;
/* filter out files that we already have from history */
@ -998,23 +998,23 @@ _plugins_init(void)
p2->config_path = "extensions/everything-files";
evry_plugin_register(p2, EVRY_PLUGIN_OBJECT, 1);
act = EVRY_ACTION_NEW(N_("Open Folder (EFM)"), EVRY_TYPE_FILE, NULL, "folder-open",
act = EVRY_ACTION_NEW(N_("Open Folder (EFM)"), EVRY_TYPE_FILE, 0, "folder-open",
_open_folder_action, _open_folder_check);
evry_action_register(act, 0);
_actions = eina_list_append(_actions, act);
act = EVRY_ACTION_NEW(N_("Open Terminal here"), EVRY_TYPE_FILE, NULL, "system-run",
act = EVRY_ACTION_NEW(N_("Open Terminal here"), EVRY_TYPE_FILE, 0, "system-run",
_open_term_action, NULL);
evry_action_register(act, 2);
_actions = eina_list_append(_actions, act);
act = EVRY_ACTION_NEW(N_("Move to Trash"), EVRY_TYPE_FILE, NULL, "edit-delete",
act = EVRY_ACTION_NEW(N_("Move to Trash"), EVRY_TYPE_FILE, 0, "edit-delete",
_file_trash_action, NULL);
EVRY_ITEM_DATA_INT_SET(act, ACT_TRASH);
evry_action_register(act, 2);
_actions = eina_list_append(_actions, act);
act = EVRY_ACTION_NEW(N_("Delete"), EVRY_TYPE_FILE, NULL, "list-remove",
act = EVRY_ACTION_NEW(N_("Delete"), EVRY_TYPE_FILE, 0, "list-remove",
_file_trash_action, NULL);
EVRY_ITEM_DATA_INT_SET(act, ACT_DELETE);
evry_action_register(act, 2);

View File

@ -123,12 +123,12 @@ _plugins_init(void)
if (!evry_api_version_check(EVRY_API_VERSION))
return EINA_FALSE;
p = EVRY_PLUGIN_NEW(Evry_Plugin, N_("Settings"), NULL, "E_SETTINGS",
p = EVRY_PLUGIN_NEW(Evry_Plugin, N_("Settings"), NULL, evry_type_register("E_SETTINGS"),
NULL, _cleanup, _fetch, NULL);
evry_plugin_register(p, EVRY_PLUGIN_SUBJECT, 10);
act = EVRY_ACTION_NEW(N_("Show Dialog"), "E_SETTINGS", NULL,
act = EVRY_ACTION_NEW(N_("Show Dialog"), evry_type_register("E_SETTINGS"), 0,
"preferences-advanced", _action, NULL);
evry_action_register(act, 0);

View File

@ -36,7 +36,7 @@ static Evry_Action *_act;
static int
_action(Evry_Action *act)
{
if (!evry_item_type_check(act->it1.item, EVRY_TYPE_FILE, NULL))
if (!CHECK_TYPE(act->it1.item, EVRY_TYPE_FILE))
return 0;
GET_FILE(file, act->it1.item);
@ -73,10 +73,8 @@ static void
_item_add(Evry_Item *it, const char *name, int method, const char *icon)
{
Evry_Action *act;
act = EVRY_ACTION_NEW(name, EVRY_TYPE_FILE, NULL, icon, _action, NULL);
act = EVRY_ACTION_NEW(name, EVRY_TYPE_FILE, 0, icon, _action, NULL);
EVRY_ITEM_DATA_INT_SET(act, method);
EVRY_ITEM(act)->subtype = eina_stringshare_add("WALLPAPER");
it->items = eina_list_append(it->items, act);
}
@ -104,7 +102,7 @@ _plugins_init(void)
return EINA_FALSE;
_act = EVRY_ACTION_NEW(_("Set as Wallpaper"),
EVRY_TYPE_FILE, NULL,
EVRY_TYPE_FILE, 0,
"preferences-desktop-wallpaper",
NULL, _check);
_act->fetch = _fetch;

View File

@ -343,7 +343,7 @@ _plugins_init(void)
if (!evry_api_version_check(EVRY_API_VERSION))
return EINA_FALSE;
p1 = EVRY_PLUGIN_NEW(Evry_Plugin, N_("Windows"), NULL, "BORDER",
p1 = EVRY_PLUGIN_NEW(Evry_Plugin, N_("Windows"), NULL, EVRY_TYPE_BORDER,
_begin, _cleanup, _fetch, NULL);
p1->transient = EINA_TRUE;
@ -351,7 +351,7 @@ _plugins_init(void)
act = EVRY_ACTION_NEW(_("Switch to Window"),
"BORDER", NULL, "go-next",
EVRY_TYPE_BORDER, 0, "go-next",
_act_border, _check_border);
EVRY_ITEM_DATA_INT_SET(act, BORDER_SHOW);
evry_action_register(act, 1);
@ -359,28 +359,28 @@ _plugins_init(void)
_actions = eina_list_append(_actions, act);
act = EVRY_ACTION_NEW(_("Iconify"),
"BORDER", NULL, "iconic",
EVRY_TYPE_BORDER, 0, "iconic",
_act_border, _check_border);
EVRY_ITEM_DATA_INT_SET(act, BORDER_HIDE);
_actions = eina_list_append(_actions, act);
evry_action_register(act, 2);
act = EVRY_ACTION_NEW(_("Toggle Fullscreen"),
"BORDER", NULL, "view-fullscreen",
EVRY_TYPE_BORDER, 0, "view-fullscreen",
_act_border, _check_border);
EVRY_ITEM_DATA_INT_SET(act, BORDER_FULLSCREEN);
_actions = eina_list_append(_actions, act);
evry_action_register(act, 4);
act = EVRY_ACTION_NEW(_("Close"),
"BORDER", NULL, "view-fullscreen",
EVRY_TYPE_BORDER, 0, "view-fullscreen",
_act_border, _check_border);
EVRY_ITEM_DATA_INT_SET(act, BORDER_CLOSE);
_actions = eina_list_append(_actions, act);
evry_action_register(act, 3);
act = EVRY_ACTION_NEW(_("Send to Desktop"),
"BORDER", NULL, "go-previous",
EVRY_TYPE_BORDER, 0, "go-previous",
_act_border, _check_border);
EVRY_ITEM_DATA_INT_SET(act, BORDER_TODESK);
_actions = eina_list_append(_actions, act);

View File

@ -3,7 +3,7 @@
#include "e.h"
#define EVRY_API_VERSION 8
#define EVRY_API_VERSION 9
#define EVRY_ACTION_OTHER 0
#define EVRY_ACTION_FINISHED 1
@ -43,25 +43,31 @@ extern int _e_module_evry_log_dom;
#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_Plugin Evry_Plugin;
typedef struct _Evry_Item Evry_Item;
typedef struct _Evry_Item_App Evry_Item_App;
typedef struct _Evry_Item_File Evry_Item_File;
typedef struct _Evry_Action Evry_Action;
typedef struct _Evry_State Evry_State;
typedef struct _Evry_View Evry_View;
typedef struct _History Evry_History;
typedef struct _History_Entry History_Entry;
typedef struct _History_Item History_Item;
typedef struct _Config Evry_Config;
typedef struct _Plugin_Config Plugin_Config;
typedef struct _Plugin_Setting Plugin_Setting;
typedef struct _Evry_Plugin Evry_Plugin;
typedef struct _Evry_Item Evry_Item;
typedef struct _Evry_Item_App Evry_Item_App;
typedef struct _Evry_Item_File Evry_Item_File;
typedef struct _Evry_Action Evry_Action;
typedef struct _Evry_State Evry_State;
typedef struct _Evry_View Evry_View;
typedef struct _History Evry_History;
typedef struct _History_Entry History_Entry;
typedef struct _History_Item History_Item;
typedef struct _Config Evry_Config;
typedef struct _Plugin_Config Plugin_Config;
typedef struct _Plugin_Setting Plugin_Setting;
typedef struct _Evry_Event_Item_Changed Evry_Event_Item_Changed;
typedef int Evry_Type;
#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 CHECK_TYPE(_item, _type) (((Evry_Item *)_item)->type == _type)
#define CHECK_SUBTYPE(_item, _type) (((Evry_Item *)_item)->subtype == _type)
#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
@ -142,10 +148,11 @@ struct _Evry_Item
* was performed on a file with a specific mimetype */
const char *context;
const char *type;
/* is set to type of Evry_Plugin by default */
Evry_Type type;
/* optional */
const char *subtype;
Evry_Type subtype;
Eina_List *items;
@ -170,15 +177,15 @@ struct _Evry_Action
struct
{
const Evry_Item *item;
const char *type;
const char *subtype;
Evry_Type type;
Evry_Type subtype;
} it1;
struct
{
const Evry_Item *item;
const char *type;
const char *subtype;
Evry_Type type;
Evry_Type subtype;
} it2;
int (*action) (Evry_Action *act);
@ -310,6 +317,10 @@ struct _Evry_View
int priority;
};
struct _Evry_Event_Item_Changed
{
Evry_Item *item;
};
/* FIXME this should be exposed.
- add functions to retrieve this stuff */
@ -409,7 +420,7 @@ EAPI Evry_Item *evry_item_new(Evry_Item *base, Evry_Plugin *p, const char *label
void (*cb_free) (Evry_Item *item));
EAPI void evry_item_free(Evry_Item *it);
EAPI void evry_item_ref(Evry_Item *it);
EAPI int evry_item_type_check(const Evry_Item *it, const char *type, const char *subtype);
EAPI void evry_plugin_async_update(Evry_Plugin *plugin, int state);
EAPI void evry_clear_input(Evry_Plugin *p);
@ -440,7 +451,7 @@ EAPI History_Item *evry_history_add(Eina_Hash *hist, Evry_Item *it, const char *
EAPI int evry_history_item_usage_set(Eina_Hash *hist, Evry_Item *it, const char *input, const char *ctxt);
EAPI Evry_Plugin *evry_plugin_new(Evry_Plugin *base, const char *name, const char *label, const char *icon,
const char *item_type,
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),
@ -449,7 +460,7 @@ EAPI Evry_Plugin *evry_plugin_new(Evry_Plugin *base, const char *name, const cha
EAPI void evry_plugin_free(Evry_Plugin *p);
EAPI Evry_Action *evry_action_new(const char *name, const char *label,
const char *type_in1, const char *type_in2,
Evry_Type type1, Evry_Type type2,
const char *icon,
int (*action) (Evry_Action *act),
int (*check_item) (Evry_Action *act, const Evry_Item *it));
@ -458,24 +469,20 @@ EAPI void evry_action_free(Evry_Action *act);
EAPI int evry_api_version_check(int version);
typedef struct _Evry_Event_Item_Changed Evry_Event_Item_Changed;
struct _Evry_Event_Item_Changed
{
Evry_Item *item;
};
EAPI Evry_Type evry_type_register(const char *type);
EAPI const char *evry_type_get(Evry_Type type);
EAPI extern int EVRY_EVENT_ITEM_SELECT;
EAPI extern int EVRY_EVENT_ITEM_CHANGED;
EAPI extern int EVRY_EVENT_ITEMS_UPDATE;
EAPI extern const char *EVRY_TYPE_FILE;
EAPI extern const char *EVRY_TYPE_APP;
EAPI extern const char *EVRY_TYPE_ACTION;
EAPI extern const char *EVRY_TYPE_PLUGIN;
EAPI extern const char *EVRY_TYPE_NONE;
EAPI extern const char *EVRY_TYPE_BORDER;
EAPI extern const char *EVRY_TYPE_TEXT;
EAPI extern Evry_Type EVRY_TYPE_NONE;
EAPI extern Evry_Type EVRY_TYPE_FILE;
EAPI extern Evry_Type EVRY_TYPE_APP;
EAPI extern Evry_Type EVRY_TYPE_ACTION;
EAPI extern Evry_Type EVRY_TYPE_PLUGIN;
EAPI extern Evry_Type EVRY_TYPE_BORDER;
EAPI extern Evry_Type EVRY_TYPE_TEXT;
EAPI extern Evry_History *evry_hist;
EAPI extern Evry_Config *evry_conf;

View File

@ -39,13 +39,13 @@ EAPI int EVRY_EVENT_ITEM_SELECT;
EAPI int EVRY_EVENT_ITEM_CHANGED;
EAPI int EVRY_EVENT_ITEMS_UPDATE;
EAPI const char *EVRY_TYPE_FILE;
EAPI const char *EVRY_TYPE_APP;
EAPI const char *EVRY_TYPE_ACTION;
EAPI const char *EVRY_TYPE_PLUGIN;
EAPI const char *EVRY_TYPE_NONE;
EAPI const char *EVRY_TYPE_BORDER;
EAPI const char *EVRY_TYPE_TEXT;
EAPI Evry_Type EVRY_TYPE_FILE;
EAPI Evry_Type EVRY_TYPE_APP;
EAPI Evry_Type EVRY_TYPE_ACTION;
EAPI Evry_Type EVRY_TYPE_PLUGIN;
EAPI Evry_Type EVRY_TYPE_NONE;
EAPI Evry_Type EVRY_TYPE_BORDER;
EAPI Evry_Type EVRY_TYPE_TEXT;
/* module setup */
EAPI E_Module_Api e_modapi =
@ -54,6 +54,42 @@ EAPI E_Module_Api e_modapi =
"Everything"
};
static Eina_List *_evry_types = NULL;
EAPI Evry_Type
evry_type_register(const char *type)
{
const char *t = eina_stringshare_add(type);
Evry_Type ret = 0;
const char *i;
Eina_List *l;
EINA_LIST_FOREACH(_evry_types, l, i)
{
if (i == t) break;
ret++;
}
if(!l)
{
_evry_types = eina_list_append(_evry_types, t);
return ret;
}
eina_stringshare_del(t);
return ret;
}
EAPI const char *
evry_type_get(Evry_Type type)
{
const char *ret = eina_list_nth(_evry_types, type - 1);
if (!ret)
return eina_stringshare_add("");
return ret;
}
EAPI void *
e_modapi_init(E_Module *m)
{
@ -67,6 +103,14 @@ e_modapi_init(E_Module *m)
return NULL;
}
EVRY_TYPE_NONE = evry_type_register("NONE");
EVRY_TYPE_FILE = evry_type_register("FILE");
EVRY_TYPE_APP = evry_type_register("APPLICATION");
EVRY_TYPE_ACTION = evry_type_register("ACTION");
EVRY_TYPE_PLUGIN = evry_type_register("PLUGIN");
EVRY_TYPE_BORDER = evry_type_register("BORDER");
EVRY_TYPE_TEXT = evry_type_register("TEXT");
_config_init();
evry_history_init();
@ -106,14 +150,6 @@ e_modapi_init(E_Module *m)
if (!EVRY_EVENT_ITEM_CHANGED)
EVRY_EVENT_ITEM_CHANGED = ecore_event_type_new();
EVRY_TYPE_FILE = eina_stringshare_add("EVRY_FILE");
EVRY_TYPE_APP = eina_stringshare_add("EVRY_APP");
EVRY_TYPE_ACTION = eina_stringshare_add("EVRY_ACTN");
EVRY_TYPE_PLUGIN = eina_stringshare_add("EVRY_PLUG");
EVRY_TYPE_NONE = eina_stringshare_add("EVRY_NONE");
EVRY_TYPE_BORDER = eina_stringshare_add("EVRY_BORDER");
EVRY_TYPE_TEXT = eina_stringshare_add("EVRY_TEXT");
e_module_delayed_set(m, 0);
/* make sure module is loaded before others */
@ -128,6 +164,8 @@ EAPI int
e_modapi_shutdown(E_Module *m __UNUSED__)
{
E_Config_Dialog *cfd;
const char *t;
evry_shutdown();
view_thumb_shutdown();
@ -139,13 +177,8 @@ e_modapi_shutdown(E_Module *m __UNUSED__)
_config_free();
evry_history_free();
eina_stringshare_del(EVRY_TYPE_FILE);
eina_stringshare_del(EVRY_TYPE_APP);
eina_stringshare_del(EVRY_TYPE_ACTION);
eina_stringshare_del(EVRY_TYPE_PLUGIN);
eina_stringshare_del(EVRY_TYPE_NONE);
eina_stringshare_del(EVRY_TYPE_BORDER);
eina_stringshare_del(EVRY_TYPE_TEXT);
EINA_LIST_FREE(_evry_types, t)
eina_stringshare_del(t);
e_configure_registry_item_del("extensions/run_everything");
e_configure_registry_category_del("extensions");
@ -445,7 +478,7 @@ _evry_plugin_free(Evry_Item *it)
Evry_Plugin *
evry_plugin_new(Evry_Plugin *base, const char *name, const char *label,
const char *icon, const char *item_type,
const char *icon, Evry_Type item_type,
Evry_Plugin *(*begin) (Evry_Plugin *p, const Evry_Item *item),
void (*finish) (Evry_Plugin *p),
int (*fetch) (Evry_Plugin *p, const char *input),
@ -461,10 +494,10 @@ evry_plugin_new(Evry_Plugin *base, const char *name, const char *label,
evry_item_new(EVRY_ITEM(p), NULL, label, NULL, _evry_plugin_free);
p->base.icon = icon;
p->base.type = eina_stringshare_ref(EVRY_TYPE_PLUGIN);
p->base.type = EVRY_TYPE_PLUGIN;
if (item_type)
p->base.subtype = eina_stringshare_add(item_type);
p->base.subtype = item_type;
p->name = eina_stringshare_add(name);
p->begin = begin;

View File

@ -323,7 +323,8 @@ evry_item_new(Evry_Item *base, Evry_Plugin *p, const char *label,
}
if (p && EVRY_ITEM(p)->subtype)
it->type = eina_stringshare_ref(EVRY_ITEM(p)->subtype);
it->type = EVRY_ITEM(p)->subtype;
it->plugin = p;
if (label) it->label = eina_stringshare_add(label);
@ -331,7 +332,6 @@ evry_item_new(Evry_Item *base, Evry_Plugin *p, const char *label,
it->icon_get = icon_get;
it->ref = 1;
/* it->usage = -1; */
#ifdef CHECK_REFS
item_cnt++;
@ -361,7 +361,6 @@ evry_item_free(Evry_Item *it)
if (it->id) eina_stringshare_del(it->id);
if (it->context) eina_stringshare_del(it->context);
if (it->detail) eina_stringshare_del(it->detail);
if (it->type) eina_stringshare_del(it->type);
if (it->free)
it->free(it);
@ -369,29 +368,6 @@ evry_item_free(Evry_Item *it)
E_FREE(it);
}
EAPI int
evry_item_type_check(const Evry_Item *it, const char *type, const char *subtype)
{
int ok = 0;
if (it)
{
if (type)
{
if (it->type && type)
ok = (!strcmp(it->type, type));
}
if (!(type && !ok) || subtype)
{
if (it->subtype && subtype)
ok = (!strcmp(it->subtype, subtype));
}
}
return ok;
}
static Evry_Selector *
_evry_selector_for_plugin_get(Evry_Plugin *p)
{
@ -1144,7 +1120,7 @@ _evry_selector_objects_get(Evry_Action *act)
EINA_LIST_FOREACH(sel->plugins, l, p)
{
if (!evry_item_type_check(EVRY_ITEM(p), NULL, act->it2.type))
if (!CHECK_SUBTYPE(p, act->it2.type))
continue;
if (p->begin)
@ -1734,8 +1710,8 @@ _evry_plugin_action(Evry_Selector *sel, int finished)
if (!(it_act = s_act->cur_item))
return;
if (evry_item_type_check(it_act, EVRY_TYPE_ACTION, NULL) ||
evry_item_type_check(it_act, NULL, EVRY_TYPE_ACTION))
if (CHECK_TYPE(it_act, EVRY_TYPE_ACTION) ||
CHECK_SUBTYPE(it_act, EVRY_TYPE_ACTION))
{
GET_ACTION(act, it_act);

View File

@ -207,8 +207,10 @@ _fill_list(Eina_List *plugins, Evas_Object *obj, int enabled __UNUSED__)
e_widget_ilist_clear(obj);
EINA_LIST_FOREACH(plugins, l, pc)
e_widget_ilist_append(obj, NULL, pc->name, NULL, pc, NULL);
{
e_widget_ilist_append(obj, NULL, pc->name, NULL, pc, NULL);
}
e_widget_ilist_go(obj);
e_widget_size_min_get(obj, &w, NULL);
e_widget_size_min_set(obj, w > 180 ? w : 180, 200);

View File

@ -245,7 +245,7 @@ evry_history_add(Eina_Hash *hist, Evry_Item *it, const char *ctxt, const char *i
hi = E_NEW(History_Item, 1);
hi->plugin = eina_stringshare_ref(it->plugin->name);
if (it->type)
hi->type = eina_stringshare_ref(it->type);
hi->type = eina_stringshare_ref(evry_type_get(it->type));
he->items = eina_list_append(he->items, hi);
}
@ -257,10 +257,6 @@ evry_history_add(Eina_Hash *hist, Evry_Item *it, const char *ctxt, const char *i
hi->transient = it->plugin->transient;
hi->count += (hi->transient ? 2:1);
/* XXX can be remove just for update */
if (it->type && !hi->type)
hi->type = eina_stringshare_ref(it->type);
if (ctxt && !hi->context)
hi->context = eina_stringshare_ref(ctxt);

View File

@ -39,13 +39,12 @@ _begin(Evry_Plugin *plugin, const Evry_Item *it)
GET_PLUGIN(p, plugin);
Evry_Action *act;
Eina_List *l;
const char *type;
Evry_Type type;
if (!it || !it->type) return NULL;
type = it->type;
if (it->browseable)
{
EINA_LIST_FOREACH(evry_conf->actions, l, act)
@ -142,7 +141,7 @@ evry_plug_actions_new(Evry_Selector *sel, int type)
{
Evry_Plugin *plugin;
plugin = EVRY_PLUGIN_NEW(Plugin, N_("Actions"), NULL, NULL, _begin, _finish, _fetch, NULL);
plugin = EVRY_PLUGIN_NEW(Plugin, N_("Actions"), NULL, 0, _begin, _finish, _fetch, NULL);
GET_PLUGIN(p, plugin);
p->selector = sel;
@ -155,7 +154,8 @@ evry_plug_actions_new(Evry_Selector *sel, int type)
int evry_plug_actions_init()
{
_base_plug = evry_plugin_new(NULL, _("Actions"), NULL, NULL, NULL, NULL, NULL, NULL, NULL);
_base_plug = evry_plugin_new(NULL, _("Actions"), NULL, NULL,
EVRY_TYPE_ACTION, NULL, NULL, NULL, NULL);
return 1;
}
@ -193,29 +193,24 @@ _action_free_cb(Evry_Item *it)
GET_ACTION(act, it);
if (act->name) eina_stringshare_del(act->name);
if (act->it1.type) eina_stringshare_del(act->it1.type);
if (act->it2.type) eina_stringshare_del(act->it2.type);
E_FREE(act);
}
EAPI Evry_Action *
evry_action_new(const char *name, const char *label,
const char *type_in1, const char *type_in2,
Evry_Type type_in1, Evry_Type type_in2,
const char *icon,
int (*action) (Evry_Action *act),
int (*check_item) (Evry_Action *act, const Evry_Item *it))
{
Evry_Action *act = E_NEW(Evry_Action, 1);
evry_item_new(EVRY_ITEM(act), _base_plug, label, NULL, _action_free_cb);
Evry_Action *act = EVRY_ITEM_NEW(Evry_Action, _base_plug, label, NULL, _action_free_cb);
act->base.icon = icon;
act->base.type = eina_stringshare_ref(EVRY_TYPE_ACTION);
act->name = eina_stringshare_add(name);
act->it1.type = (type_in1 ? eina_stringshare_add(type_in1) : NULL);
act->it2.type = (type_in2 ? eina_stringshare_add(type_in2) : NULL);
act->it1.type = type_in1;
act->it2.type = type_in2;
act->action = action;
act->check_item = check_item;

View File

@ -269,7 +269,7 @@ evry_plug_aggregator_new(Evry_Selector *sel, int type)
{
Evry_Plugin *p;
p = EVRY_PLUGIN_NEW(Plugin, N_("All"), NULL, NULL, NULL, _finish, _fetch, NULL);
p = EVRY_PLUGIN_NEW(Plugin, N_("All"), NULL, 0, NULL, _finish, _fetch, NULL);
p->history = EINA_FALSE;
evry_plugin_register(p, type, -1);

View File

@ -31,8 +31,10 @@ evry_plug_clipboard_init(void)
if (!win) return EINA_FALSE;
//FIXME: Icon name doesnt follow FDO Spec
act = EVRY_ACTION_NEW(N_("Copy to Clipboard"), EVRY_TYPE_TEXT, NULL, "everything-clipboard",
_action, _check_item);
act = EVRY_ACTION_NEW(N_("Copy to Clipboard"),
EVRY_TYPE_TEXT, 0,
"everything-clipboard",
_action, _check_item);
evry_action_register(act, 10);

View File

@ -382,7 +382,7 @@ evry_util_icon_get(Evry_Item *it, Evas *e)
if (!o && it->icon)
o = evry_icon_theme_get(it->icon, e);
if (evry_item_type_check(it, EVRY_TYPE_FILE, NULL))
if (CHECK_TYPE(it, EVRY_TYPE_FILE))
o = _file_icon_get(it, e);
/* TODO default type: files, apps */

View File

@ -20,7 +20,7 @@ _animator(void *data)
Tab_View *v = data;
double da;
double spd = (5.0 / (double)e_config->framerate);
double spd = (8.0 / (double)e_config->framerate);
if (spd > 0.9) spd = 0.9;
int wait = 0;