fix action deletion on exit. cleanups

SVN revision: 48388
This commit is contained in:
Hannes Janetzek 2010-04-28 11:28:45 +00:00
parent aadcae0b20
commit bc22c23029
6 changed files with 80 additions and 88 deletions

View File

@ -112,49 +112,43 @@ EAPI int
e_modapi_shutdown(E_Module *m __UNUSED__) e_modapi_shutdown(E_Module *m __UNUSED__)
{ {
E_Config_Dialog *cfd; E_Config_Dialog *cfd;
Evry_Action *a; printf("________________________________________________\n");
evry_shutdown(); evry_shutdown();
/* remove module-supplied menu additions */
if (maug)
{
e_int_menus_menu_augmentation_del("main/1", maug);
maug = NULL;
}
/* remove module-supplied action */
if (act)
{
e_action_predef_name_del(_("Everything Launcher"), _("Show Everything Dialog"));
e_action_del("everything");
}
view_thumb_shutdown(); view_thumb_shutdown();
view_help_shutdown(); view_help_shutdown();
evry_plug_clipboard_shutdown(); evry_plug_clipboard_shutdown();
evry_plug_text_shutdown(); evry_plug_text_shutdown();
evry_plug_actions_shutdown(); evry_plug_actions_shutdown();
/* EINA_LIST_FREE(evry_conf->plugins, p)
* evry_plugin_free(p, 1); */
EINA_LIST_FREE(evry_conf->actions, a) _config_free();
evry_action_free(a); evry_history_free();
while ((cfd = e_config_dialog_get("E", "_config_everything_dialog")))
e_object_del(E_OBJECT(cfd));
e_configure_registry_item_del("extensions/run_everything"); e_configure_registry_item_del("extensions/run_everything");
e_configure_registry_category_del("extensions"); e_configure_registry_category_del("extensions");
_config_free(); while ((cfd = e_config_dialog_get("E", "_config_everything_dialog")))
evry_history_free(); e_object_del(E_OBJECT(cfd));
if (act)
{
e_action_predef_name_del(_("Everything Launcher"), _("Show Everything Dialog"));
e_action_del("everything");
}
if (maug)
{
e_int_menus_menu_augmentation_del("main/1", maug);
maug = NULL;
}
/* Clean EET */ /* Clean EET */
E_CONFIG_DD_FREE(conf_edd); E_CONFIG_DD_FREE(conf_edd);
E_CONFIG_DD_FREE(plugin_conf_edd); E_CONFIG_DD_FREE(plugin_conf_edd);
E_CONFIG_DD_FREE(plugin_setting_edd); E_CONFIG_DD_FREE(plugin_setting_edd);
e_datastore_del("everything_loaded"); e_datastore_del("everything_loaded");
printf("________________________________________________\n");
return 1; return 1;
} }
@ -296,29 +290,34 @@ static void
_config_free(void) _config_free(void)
{ {
Plugin_Config *pc; Plugin_Config *pc;
int i;
Eina_List *conf[3];
conf[0] = evry_conf->conf_subjects; EINA_LIST_FREE(evry_conf->conf_subjects, pc)
conf[1] = evry_conf->conf_actions;
conf[2] = evry_conf->conf_objects;
for (i = 0; i < 3; i++)
{ {
EINA_LIST_FREE(conf[i], pc) if (pc->name) eina_stringshare_del(pc->name);
{ if (pc->trigger) eina_stringshare_del(pc->trigger);
if (pc->name) eina_stringshare_del(pc->name); if (pc->plugin) evry_plugin_free(pc->plugin);
if (pc->trigger) eina_stringshare_del(pc->trigger); E_FREE(pc);
if (pc->plugin) evry_plugin_free(pc->plugin); }
E_FREE(pc); EINA_LIST_FREE(evry_conf->conf_actions, pc)
} {
if (pc->name) eina_stringshare_del(pc->name);
if (pc->trigger) eina_stringshare_del(pc->trigger);
if (pc->plugin) evry_plugin_free(pc->plugin);
E_FREE(pc);
}
EINA_LIST_FREE(evry_conf->conf_objects, pc)
{
if (pc->name) eina_stringshare_del(pc->name);
if (pc->trigger) eina_stringshare_del(pc->trigger);
if (pc->plugin) evry_plugin_free(pc->plugin);
E_FREE(pc);
} }
if (evry_conf->cmd_terminal) if (evry_conf->cmd_terminal)
eina_stringshare_del(evry_conf->cmd_terminal); eina_stringshare_del(evry_conf->cmd_terminal);
if (evry_conf->cmd_sudo) if (evry_conf->cmd_sudo)
eina_stringshare_del(evry_conf->cmd_sudo); eina_stringshare_del(evry_conf->cmd_sudo);
E_FREE(evry_conf); E_FREE(evry_conf);
} }
@ -464,8 +463,6 @@ evry_plugin_new(Evry_Plugin *base, const char *name, const char *label,
void void
evry_plugin_free(Evry_Plugin *p) evry_plugin_free(Evry_Plugin *p)
{ {
evry_plugin_unregister(p);
evry_item_free(EVRY_ITEM(p)); evry_item_free(EVRY_ITEM(p));
} }
@ -530,13 +527,14 @@ void
evry_plugin_unregister(Evry_Plugin *p) evry_plugin_unregister(Evry_Plugin *p)
{ {
DBG("%s", p->name); DBG("%s", p->name);
Eina_List *l = evry_conf->conf_subjects;
if (eina_list_data_find_list(evry_conf->conf_subjects, p->config)) if (l && eina_list_data_find_list(l, p->config))
{ {
char buf[256]; /* char buf[256];
snprintf(buf, sizeof(buf), _("Show %s Plugin"), p->name); * snprintf(buf, sizeof(buf), _("Show %s Plugin"), p->name);
*
e_action_predef_name_del(_("Everything"), buf); * e_action_predef_name_del(_("Everything"), buf); */
} }
} }

View File

@ -103,6 +103,5 @@ EAPI int evry_browse_item(Evry_Selector *sel);
EAPI int evry_browse_back(Evry_Selector *sel); EAPI int evry_browse_back(Evry_Selector *sel);
extern Evry_Selector **selectors; extern Evry_Selector **selectors;
extern const char *action_selector;
#endif #endif

View File

@ -91,13 +91,11 @@ static Evry_Selector *selector = NULL;
static const char *thumb_types = NULL; static const char *thumb_types = NULL;
Evry_Selector **selectors = NULL; Evry_Selector **selectors = NULL;
const char *action_selector;
/* externally accessible functions */ /* externally accessible functions */
int int
evry_init(void) evry_init(void)
{ {
action_selector = eina_stringshare_add(_("Select Action"));
thumb_types = eina_stringshare_add("FILE"); thumb_types = eina_stringshare_add("FILE");
return 1; return 1;
} }
@ -108,7 +106,6 @@ evry_shutdown(void)
evry_hide(); evry_hide();
eina_stringshare_del(thumb_types); eina_stringshare_del(thumb_types);
eina_stringshare_del(action_selector);
return 1; return 1;
} }
@ -446,8 +443,8 @@ _evry_selector_update_actions(Evry_Selector *sel)
if (sel->update_timer) if (sel->update_timer)
ecore_timer_del(sel->update_timer); ecore_timer_del(sel->update_timer);
_evry_timer_cb_actions_get(it); /* _evry_timer_cb_actions_get(it); */
/* sel->update_timer = ecore_timer_add(0.1, _evry_timer_cb_actions_get, it); */ sel->update_timer = ecore_timer_add(0.1, _evry_timer_cb_actions_get, it);
} }
EAPI void EAPI void
@ -1142,8 +1139,6 @@ _evry_selector_objects_get(Evry_Action *act)
Evry_Plugin *p, *pp; Evry_Plugin *p, *pp;
Evry_Selector *sel = selectors[2]; Evry_Selector *sel = selectors[2];
Evry_Item *it; Evry_Item *it;
/* required type */
/* const char *type_in = act->type_in2; */
while (sel->state) while (sel->state)
_evry_state_pop(sel); _evry_state_pop(sel);
@ -1152,8 +1147,6 @@ _evry_selector_objects_get(Evry_Action *act)
EINA_LIST_FOREACH(sel->plugins, l, p) EINA_LIST_FOREACH(sel->plugins, l, p)
{ {
printf("check %s %s\n", EVRY_ITEM(p)->subtype, act->type_in2);
if (!evry_item_type_check(EVRY_ITEM(p), NULL, act->type_in2)) if (!evry_item_type_check(EVRY_ITEM(p), NULL, act->type_in2))
continue; continue;

View File

@ -12,7 +12,6 @@ struct _Plugin
Eina_List *actions; Eina_List *actions;
Eina_Bool parent; Eina_Bool parent;
Evry_Action *action; Evry_Action *action;
}; };
static Evry_Plugin *_base_plug = NULL; static Evry_Plugin *_base_plug = NULL;
@ -163,7 +162,12 @@ int evry_plug_actions_init()
void evry_plug_actions_shutdown() void evry_plug_actions_shutdown()
{ {
Evry_Action *a;
evry_plugin_free(_base_plug); evry_plugin_free(_base_plug);
EINA_LIST_FREE(evry_conf->actions, a)
evry_action_free(a);
} }
@ -208,8 +212,6 @@ evry_action_new(const char *name, const char *label,
act->base.icon = icon; act->base.icon = icon;
act->base.type = eina_stringshare_add("ACTION"); act->base.type = eina_stringshare_add("ACTION");
printf("icon %s\n", act->base.icon);
act->name = eina_stringshare_add(name); act->name = eina_stringshare_add(name);
act->type_in1 = (type_in1 ? eina_stringshare_add(type_in1) : NULL); act->type_in1 = (type_in1 ? eina_stringshare_add(type_in1) : NULL);

View File

@ -10,11 +10,11 @@ struct _Plugin
Evry_Selector *selector; Evry_Selector *selector;
}; };
inline static int /* inline static int
_is_action(const Evry_Item *it) * _is_action(const Evry_Item *it)
{ * {
return (it->plugin->name == action_selector); * return (it->plugin->name == action_selector);
} * } */
static int static int
_cb_sort_recent(const void *data1, const void *data2) _cb_sort_recent(const void *data1, const void *data2)
@ -29,17 +29,17 @@ _cb_sort_recent(const void *data1, const void *data2)
if (it2->usage && !it1->usage) if (it2->usage && !it1->usage)
return 1; return 1;
if (_is_action(it1) || _is_action(it2)) /* if (_is_action(it1) || _is_action(it2))
{ * {
if (_is_action(it1) && _is_action(it2)) * if (_is_action(it1) && _is_action(it2))
return (it1->priority - it2->priority); * return (it1->priority - it2->priority);
else if (_is_action(it1)) * else if (_is_action(it1))
return ((it1->plugin->config->priority + it1->priority) - * return ((it1->plugin->config->priority + it1->priority) -
(it2->plugin->config->priority)); * (it2->plugin->config->priority));
else * else
return ((it1->plugin->config->priority) - * return ((it1->plugin->config->priority) -
(it2->plugin->config->priority + it2->priority)); * (it2->plugin->config->priority + it2->priority));
} * } */
if (it1->plugin == it2->plugin) if (it1->plugin == it2->plugin)
return (it1->priority - it2->priority); return (it1->priority - it2->priority);
@ -62,17 +62,17 @@ _cb_sort(const void *data1, const void *data2)
if (it2->usage && !it1->usage) if (it2->usage && !it1->usage)
return 1; return 1;
if (_is_action(it1) || _is_action(it2)) /* if (_is_action(it1) || _is_action(it2))
{ * {
if (_is_action(it1) && _is_action(it2)) * if (_is_action(it1) && _is_action(it2))
return (it1->priority - it2->priority); * return (it1->priority - it2->priority);
else if (_is_action(it1)) * else if (_is_action(it1))
return ((it1->plugin->config->priority + it1->priority) * return ((it1->plugin->config->priority + it1->priority)
- it2->plugin->config->priority); * - it2->plugin->config->priority);
else * else
return (it1->plugin->config->priority - * return (it1->plugin->config->priority -
(it1->plugin->config->priority + it2->priority)); * (it1->plugin->config->priority + it2->priority));
} * } */
if ((it1->plugin == it2->plugin) && if ((it1->plugin == it2->plugin) &&
(it1->priority - it2->priority)) (it1->priority - it2->priority))

View File

@ -457,10 +457,10 @@ _e_smart_del(Evas_Object *obj)
evry_item_free(it->item); evry_item_free(it->item);
free(it); free(it);
} }
evas_object_del(sd->selector);
free(sd); free(sd);
evas_object_smart_data_set(obj, NULL); evas_object_smart_data_set(obj, NULL);
evas_object_del(sd->selector);
} }
static void static void