From: Enlightenment S. <no-...@en...> - 2010-04-24 14:42:04
|
Log: register config path Author: jeffdameth Date: 2010-04-24 07:41:57 -0700 (Sat, 24 Apr 2010) New Revision: 48278 Modified: trunk/E-MODULES-EXTRA/everything-websearch/src/e_mod_main.c Modified: trunk/E-MODULES-EXTRA/everything-websearch/src/e_mod_main.c =================================================================== --- trunk/E-MODULES-EXTRA/everything-websearch/src/e_mod_main.c 2010-04-24 14:33:10 UTC (rev 48277) +++ trunk/E-MODULES-EXTRA/everything-websearch/src/e_mod_main.c 2010-04-24 14:41:57 UTC (rev 48278) @@ -15,13 +15,13 @@ Ecore_Con_Server *svr; Ecore_Event_Handler *handler; Ecore_Timer *timer; - - const char *input; + + const char *input; const char *server_address; const char *request; - + int (*fetch) (void *data); - + }; struct _Module_Config @@ -30,7 +30,7 @@ const char *lang; const char *browser; - + E_Config_Dialog *cfd; E_Module *module; char *theme; @@ -50,6 +50,8 @@ static char _trigger_google[] = "g "; static char _trigger_wiki[] = "w "; +static char _config_path[] = "extensions/everything-websearch"; +static char _config_domain[] = "module.everything-websearch"; int _server_data(void *data, int ev_type, Ecore_Con_Event_Server_Data *ev) @@ -60,34 +62,34 @@ char *list; /* printf("- %s\n", result); */ - + if (ev->server != p->svr) return 1; EVRY_PLUGIN_ITEMS_FREE(p); - if ((list = strstr(result, "[[\""))) + if ((list = strstr(result, "[[\""))) { list += 3; char **items = eina_str_split(list, "\"],[\"", 0); char **i; - + for(i = items; *i; i++) { - char **item= eina_str_split(*i, "\",\"", 2); + char **item= eina_str_split(*i, "\",\"", 2); it = evry_item_new(NULL, EVRY_PLUGIN(p), *item, NULL); it->detail = eina_stringshare_add(*(item + 1)); EVRY_PLUGIN_ITEM_APPEND(p, it); free(*item); free(item); } - + free(*items); free(items); evry_plugin_async_update (EVRY_PLUGIN(p), EVRY_ASYNC_UPDATE_ADD); } - else if ((list = strstr(result, ",[\""))) + else if ((list = strstr(result, ",[\""))) { list += 3; @@ -100,14 +102,14 @@ it->detail = eina_stringshare_add("Wikipedia"); EVRY_PLUGIN_ITEM_APPEND(p, it); } - + free(*items); free(items); } if (EVRY_PLUGIN(p)->items) evry_plugin_async_update (EVRY_PLUGIN(p), EVRY_ASYNC_UPDATE_ADD); - + return 1; } @@ -128,10 +130,10 @@ if (p->svr) ecore_con_server_del(p->svr); p->svr = NULL; - + ecore_event_handler_del(p->handler); p->handler = NULL; - + EVRY_PLUGIN_ITEMS_FREE(p); } @@ -150,20 +152,20 @@ if (p->svr) { - query = evry_util_url_escape(p->input, 0); - + query = evry_util_url_escape(p->input, 0); + snprintf(buf, sizeof(buf), p->request, _conf->lang, query, _header); /* printf("send: %s\n", buf); */ - + ecore_con_server_send(p->svr, buf, strlen(buf)); } free(query); - + p->timer = NULL; - + return 0; } @@ -171,7 +173,7 @@ _fetch(Evry_Plugin *plugin, const char *input) { PLUGIN(p, plugin); - + if (p->input) eina_stringshare_del(p->input); p->input = NULL; @@ -179,13 +181,13 @@ if (p->timer) ecore_timer_del(p->timer); p->timer = NULL; - + if (input && strlen(input) > 2) - { - p->input = eina_stringshare_add(input); + { + p->input = eina_stringshare_add(input); p->timer = ecore_timer_add(0.3, _send_request, p); } - + return 0; } @@ -197,7 +199,7 @@ char buf[1024]; Eina_List *l; E_Border *bd; - + app->desktop = efreet_util_desktop_exec_find(_conf->browser); if (!app->desktop) app->file = "xdg-open"; @@ -217,9 +219,9 @@ snprintf(buf, sizeof(buf), "http://www.google.com/search?hl=%s&q=%s&btnI=745", _conf->lang, act->item1->label); } - + file->path = buf; - + evry_util_exec_app(EVRY_ITEM(app), EVRY_ITEM(file)); if (app->desktop) @@ -246,7 +248,7 @@ Evas_Object *o = e_icon_add(e); if (e_icon_file_edje_set(o, _conf->theme, act->data)) return o; - + evas_object_del(o); return NULL; @@ -257,20 +259,18 @@ { char buf[128]; snprintf(buf, sizeof(buf), "%s ", item->label); - + *input = strdup(buf); - + return EVRY_COMPLETE_INPUT; } - - static Eina_Bool -module_init(void) +_module_init(void) { if (!evry_api_version_check(EVRY_API_VERSION)) return EINA_FALSE; - + if (!ecore_con_init()) return EINA_FALSE; @@ -284,6 +284,7 @@ EVRY_PLUGIN(_plug1)->trigger = _trigger_google; EVRY_PLUGIN(_plug1)->icon = "text-html"; EVRY_PLUGIN(_plug1)->complete = &_complete; + EVRY_PLUGIN(_plug1)->config_path = _config_path; evry_plugin_register(EVRY_PLUGIN(_plug1), 10); _plug2 = E_NEW(Plugin, 1); @@ -293,16 +294,17 @@ EVRY_PLUGIN_NEW(_plug2, "Wikipedia", type_subject, "", "TEXT", _begin, _cleanup, _fetch, NULL, NULL); EVRY_PLUGIN(_plug2)->trigger = _trigger_wiki; - EVRY_PLUGIN(_plug2)->complete = &_complete; EVRY_PLUGIN(_plug2)->icon = "text-html"; + EVRY_PLUGIN(_plug2)->complete = &_complete; + EVRY_PLUGIN(_plug2)->config_path = _config_path; evry_plugin_register(EVRY_PLUGIN(_plug2), 9); - + _act1 = EVRY_ACTION_NEW("Google for it", "TEXT", NULL, "go-next", _action, NULL); evry_action_register(_act1, 1); _act1->data = "google"; _act1->icon_get = &_act_icon_get; - + _act2 = EVRY_ACTION_NEW("Wikipedia Page", "TEXT", NULL, "go-next", _action, NULL); evry_action_register(_act2, 1); _act2->data = "wikipedia"; @@ -317,21 +319,21 @@ } static void -module_shutdown(void) +_module_shutdown(void) { EVRY_PLUGIN_FREE(_plug1); EVRY_PLUGIN_FREE(_plug2); - evry_action_free(_act1); - evry_action_free(_act2); - evry_action_free(_act3); + evry_action_free(_act1); + evry_action_free(_act2); + evry_action_free(_act3); ecore_con_shutdown(); } /***************************************************************************/ -static E_Config_DD *conf_edd = NULL; +static E_Config_DD *_conf_edd = NULL; struct _E_Config_Dialog_Data { @@ -352,7 +354,7 @@ E_Config_Dialog_View *v = NULL; char buf[4096]; - if (e_config_dialog_find("everything-websearch", "extensions/everything-websearch")) + if (e_config_dialog_find(_config_path, _config_path)) return NULL; v = E_NEW(E_Config_Dialog_View, 1); @@ -365,10 +367,9 @@ snprintf(buf, sizeof(buf), "%s/e-module.edj", _conf->module->dir); - cfd = e_config_dialog_new(con, _("Everything Websearch"), "everything-websearch", - "extensions/everything-websearch", buf, 0, v, NULL); + cfd = e_config_dialog_new(con, _("Everything Websearch"), + _config_path, _config_path, buf, 0, v, NULL); - /* e_dialog_resizable_set(cfd->dia, 1); */ _conf->cfd = cfd; return cfd; } @@ -385,12 +386,12 @@ ow = e_widget_label_add(evas, _("Browser")); e_widget_framelist_object_append(of, ow); - ow = e_widget_entry_add(evas, &cfdata->browser, NULL, NULL, NULL); + ow = e_widget_entry_add(evas, &cfdata->browser, NULL, NULL, NULL); e_widget_framelist_object_append(of, ow); ow = e_widget_label_add(evas, _("Language")); e_widget_framelist_object_append(of, ow); - ow = e_widget_entry_add(evas, &cfdata->lang, NULL, NULL, NULL); + ow = e_widget_entry_add(evas, &cfdata->lang, NULL, NULL, NULL); e_widget_framelist_object_append(of, ow); e_widget_list_object_append(o, of, 1, 1, 0.5); @@ -434,13 +435,13 @@ if (_conf->_name) \ eina_stringshare_del(_conf->_name); \ _conf->_name = eina_stringshare_add(cfdata->_name); -#define C(_name) _conf->_name = cfdata->_name; +#define C(_name) _conf->_name = cfdata->_name; CP(browser); CP(lang); #undef CP #undef C - e_config_domain_save("module.everything-websearch", conf_edd, _conf); + e_config_domain_save(_config_domain, _conf_edd, _conf); e_config_save_queue(); return 1; } @@ -462,7 +463,6 @@ _conf->version = MOD_CONFIG_FILE_VERSION; - e_config_domain_save("module.everything-websearch", conf_edd, _conf); e_config_save_queue(); } @@ -471,8 +471,8 @@ { if (_conf) { - eina_stringshare_del(_conf->browser); - eina_stringshare_del(_conf->lang); + eina_stringshare_del(_conf->browser); + eina_stringshare_del(_conf->lang); free(_conf->theme); @@ -490,22 +490,22 @@ e_configure_registry_category_add("extensions", 80, _("Extensions"), NULL, "preferences-extensions"); - e_configure_registry_item_add("extensions/everything-websearch", 110, _("Everything Websearch"), + e_configure_registry_item_add(_config_path, 110, _("Everything Websearch"), NULL, buf, _conf_dialog); - conf_edd = E_CONFIG_DD_NEW("Module_Config", Module_Config); - + _conf_edd = E_CONFIG_DD_NEW("Module_Config", Module_Config); + #undef T #undef D #define T Module_Config -#define D conf_edd +#define D _conf_edd E_CONFIG_VAL(D, T, version, INT); E_CONFIG_VAL(D, T, browser, STR); E_CONFIG_VAL(D, T, lang, STR); #undef T #undef D - _conf = e_config_domain_load("module.everything-websearch", conf_edd); + _conf = e_config_domain_load(_config_domain, _conf_edd); if (_conf && !evry_util_module_config_check(_("Everything Websearch"), _conf->version, MOD_CONFIG_FILE_EPOCH, MOD_CONFIG_FILE_VERSION)) @@ -522,16 +522,15 @@ { _conf_free(); - E_CONFIG_DD_FREE(conf_edd); + E_CONFIG_DD_FREE(_conf_edd); } -static E_Module *module = NULL; static Eina_Bool _active = EINA_FALSE; /***************************************************************************/ /**/ /* module setup */ -EAPI E_Module_Api e_modapi = +EAPI E_Module_Api e_modapi = { E_MODULE_API_VERSION, PACKAGE @@ -545,35 +544,34 @@ snprintf(buf, sizeof(buf), "%s/locale", e_module_dir_get(m)); bindtextdomain(PACKAGE, buf); bind_textdomain_codeset(PACKAGE, "UTF-8"); - - if (e_datastore_get("everything_loaded")) + + _conf_init(m); + if (!_module_init()) { - _conf_init(m); - _active = module_init(); + _conf_shutdown(); + return 0; } - - e_module_delayed_set(m, 1); + e_module_delayed_set(m, 1); + return m; } EAPI int e_modapi_shutdown(E_Module *m) { - if (_active && e_datastore_get("everything_loaded")) - module_shutdown(); - + _module_shutdown(); _conf_shutdown(); - + return 1; } EAPI int e_modapi_save(E_Module *m) { + e_config_domain_save(_config_domain, _conf_edd, _conf); return 1; } /**/ /***************************************************************************/ - |