added google translation plugin, cleanups
SVN revision: 48662
This commit is contained in:
parent
2ac6630196
commit
d698a12d03
347
src/e_mod_main.c
347
src/e_mod_main.c
|
@ -20,6 +20,8 @@
|
||||||
typedef struct _Plugin Plugin;
|
typedef struct _Plugin Plugin;
|
||||||
typedef int (*Handler_Func) (void *data, int type, void *event);
|
typedef int (*Handler_Func) (void *data, int type, void *event);
|
||||||
typedef struct _Module_Config Module_Config;
|
typedef struct _Module_Config Module_Config;
|
||||||
|
typedef struct _Json_Data Json_Data;
|
||||||
|
|
||||||
struct _Plugin
|
struct _Plugin
|
||||||
{
|
{
|
||||||
Evry_Plugin base;
|
Evry_Plugin base;
|
||||||
|
@ -42,60 +44,49 @@ struct _Module_Config
|
||||||
|
|
||||||
const char *lang;
|
const char *lang;
|
||||||
const char *browser;
|
const char *browser;
|
||||||
|
const char *translate;
|
||||||
|
|
||||||
E_Config_Dialog *cfd;
|
E_Config_Dialog *cfd;
|
||||||
E_Module *module;
|
E_Module *module;
|
||||||
char *theme;
|
char *theme;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct _Json_Data
|
||||||
|
{
|
||||||
|
Json_Data *parent;
|
||||||
|
Json_Data *cur;
|
||||||
|
|
||||||
|
int type;
|
||||||
|
const char *key;
|
||||||
|
const char *value;
|
||||||
|
Eina_List *values;
|
||||||
|
Eina_List *list;
|
||||||
|
|
||||||
|
int flat;
|
||||||
|
};
|
||||||
|
|
||||||
static Module_Config *_conf;
|
static Module_Config *_conf;
|
||||||
static char _config_path[] = "extensions/" PACKAGE;
|
static char _config_path[] = "extensions/" PACKAGE;
|
||||||
static char _config_domain[] = "module." PACKAGE;
|
static char _config_domain[] = "module." PACKAGE;
|
||||||
static E_Config_DD *_conf_edd = NULL;
|
static E_Config_DD *_conf_edd = NULL;
|
||||||
|
|
||||||
static Plugin *_plug1 = NULL;
|
static Eina_List *plugins = NULL;
|
||||||
static Plugin *_plug2 = NULL;
|
static Eina_List *actions = NULL;
|
||||||
static Evry_Action *_act1 = NULL;
|
|
||||||
static Evry_Action *_act2 = NULL;
|
|
||||||
static Evry_Action *_act3 = NULL;
|
|
||||||
static Evry_Action *_act4 = NULL;
|
|
||||||
|
|
||||||
static char _trigger_google[] = "g ";
|
static char _trigger_google[] = "g ";
|
||||||
static char _trigger_wiki[] = "w ";
|
static char _trigger_wiki[] = "w ";
|
||||||
|
static char _trigger_gtranslate[] = "t ";
|
||||||
static char _header[] =
|
|
||||||
"User-Agent: Wget/1.12 (linux-gnu)\n"
|
|
||||||
"Accept: */*\n"
|
|
||||||
"Connection: Keep-Alive\n\n";
|
|
||||||
|
|
||||||
static char _request_goolge[] =
|
static char _request_goolge[] =
|
||||||
"http://www.google.com/complete/search?hl=%s&output=text&q=%s";
|
"http://www.google.com/complete/search?hl=%s&output=text&q=%s";
|
||||||
static char _request_wiki[] =
|
static char _request_wiki[] =
|
||||||
"http://%s.wikipedia.org/w/api.php?action=opensearch&search=%s";
|
"http://%s.wikipedia.org/w/api.php?action=opensearch&search=%s";
|
||||||
static char _address_google[] = "www.google.com";
|
static char _request_gtranslate[] =
|
||||||
static char _address_wiki[] = "www.wikipedia.org";
|
"http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&langpair=%s&q=%s";
|
||||||
static const char *_id_none;
|
static const char _imgur_key[] =
|
||||||
|
"1606e11f5c2ccd9b7440f1ffd80b17de";
|
||||||
|
|
||||||
static const char _imgur_key[] = "1606e11f5c2ccd9b7440f1ffd80b17de";
|
static Json_Data *_json_parse(const char *string, Eina_Bool flat, int len);
|
||||||
|
|
||||||
typedef struct _Json_Data Json_Data;
|
|
||||||
|
|
||||||
struct _Json_Data
|
|
||||||
{
|
|
||||||
int flat;
|
|
||||||
|
|
||||||
Json_Data *parent;
|
|
||||||
Json_Data *cur;
|
|
||||||
|
|
||||||
int type;
|
|
||||||
|
|
||||||
const char *key;
|
|
||||||
const char *value;
|
|
||||||
Eina_List *values;
|
|
||||||
|
|
||||||
Eina_List *list;
|
|
||||||
};
|
|
||||||
static Json_Data *_json_parse(char *string, Eina_Bool flat, int len);
|
|
||||||
static Json_Data *_json_data_find(const Json_Data *d, const char *key);
|
static Json_Data *_json_data_find(const Json_Data *d, const char *key);
|
||||||
static void _json_data_free(Json_Data *d);
|
static void _json_data_free(Json_Data *d);
|
||||||
|
|
||||||
|
@ -116,6 +107,8 @@ _wikipedia_data_cb(void *data, int ev_type, void *event)
|
||||||
if (data != ecore_con_url_data_get(ev->url_con))
|
if (data != ecore_con_url_data_get(ev->url_con))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
EVRY_PLUGIN_ITEMS_FREE(p);
|
||||||
|
|
||||||
len = ecore_con_url_received_bytes_get(ev->url_con);
|
len = ecore_con_url_received_bytes_get(ev->url_con);
|
||||||
rsp = _json_parse((char *)ev->data, 0, len);
|
rsp = _json_parse((char *)ev->data, 0, len);
|
||||||
|
|
||||||
|
@ -141,6 +134,46 @@ _wikipedia_data_cb(void *data, int ev_type, void *event)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
_gtranslate_data_cb(void *data, int ev_type, void *event)
|
||||||
|
{
|
||||||
|
Ecore_Con_Event_Url_Data *ev = event;
|
||||||
|
Plugin *p = data;
|
||||||
|
Json_Data *d, *rsp;
|
||||||
|
const char *val, *msg;
|
||||||
|
Eina_List *l;
|
||||||
|
Evry_Item *it;
|
||||||
|
int len;
|
||||||
|
|
||||||
|
if (data != ecore_con_url_data_get(ev->url_con))
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
EVRY_PLUGIN_ITEMS_FREE(p);
|
||||||
|
|
||||||
|
msg = (const char *) ev->data;
|
||||||
|
len = ecore_con_url_received_bytes_get(ev->url_con);
|
||||||
|
|
||||||
|
fprintf(stdout, "parse %*s\n", len, msg);
|
||||||
|
|
||||||
|
rsp = _json_parse(msg, 1, len);
|
||||||
|
|
||||||
|
d = _json_data_find(rsp, "translatedText");
|
||||||
|
if (d)
|
||||||
|
{
|
||||||
|
printf("string %s\n", d->value);
|
||||||
|
it = EVRY_ITEM_NEW(Evry_Item, p, d->value, NULL, NULL);
|
||||||
|
it->context = eina_stringshare_ref(EVRY_PLUGIN(p)->name);
|
||||||
|
it->fuzzy_match = -1;
|
||||||
|
EVRY_PLUGIN_ITEM_APPEND(p, it);
|
||||||
|
}
|
||||||
|
|
||||||
|
_json_data_free(rsp);
|
||||||
|
|
||||||
|
evry_plugin_async_update (EVRY_PLUGIN(p), EVRY_ASYNC_UPDATE_ADD);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
_google_data_cb(void *data, int ev_type, void *event)
|
_google_data_cb(void *data, int ev_type, void *event)
|
||||||
{
|
{
|
||||||
|
@ -155,6 +188,8 @@ _google_data_cb(void *data, int ev_type, void *event)
|
||||||
if (data != ecore_con_url_data_get(ev->url_con))
|
if (data != ecore_con_url_data_get(ev->url_con))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
EVRY_PLUGIN_ITEMS_FREE(p);
|
||||||
|
|
||||||
len = ecore_con_url_received_bytes_get(ev->url_con);
|
len = ecore_con_url_received_bytes_get(ev->url_con);
|
||||||
/* FUCK, cant google give this as json instead of some weird
|
/* FUCK, cant google give this as json instead of some weird
|
||||||
javascript shit ?! - strip parentheses */
|
javascript shit ?! - strip parentheses */
|
||||||
|
@ -195,6 +230,8 @@ _google_data_cb(void *data, int ev_type, void *event)
|
||||||
|
|
||||||
_json_data_free(rsp);
|
_json_data_free(rsp);
|
||||||
|
|
||||||
|
evry_plugin_async_update (EVRY_PLUGIN(p), EVRY_ASYNC_UPDATE_ADD);
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -212,6 +249,18 @@ _begin(Evry_Plugin *plugin, const Evry_Item *it)
|
||||||
return plugin;
|
return plugin;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Evry_Plugin *
|
||||||
|
_begin_gtranslate(Evry_Plugin *plugin, const Evry_Item *it)
|
||||||
|
{
|
||||||
|
GET_PLUGIN(p, plugin);
|
||||||
|
|
||||||
|
_begin(plugin, it);
|
||||||
|
|
||||||
|
ecore_con_url_additional_header_add(p->con_url, "Host", "ajax.googleapis.com");
|
||||||
|
/* ecore_con_url_additional_header_add(p->con_url, "Accept", "application/json"); */
|
||||||
|
return plugin;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_cleanup(Evry_Plugin *plugin)
|
_cleanup(Evry_Plugin *plugin)
|
||||||
{
|
{
|
||||||
|
@ -235,9 +284,11 @@ _send_request(void *data)
|
||||||
|
|
||||||
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);
|
if (!strcmp(p->base.name, N_("Translate")))
|
||||||
|
snprintf(buf, sizeof(buf), p->request, _conf->translate, query);
|
||||||
printf("send request\n", buf);
|
else
|
||||||
|
snprintf(buf, sizeof(buf), p->request, _conf->lang, query);
|
||||||
|
/* printf("send request %s\n", buf); */
|
||||||
|
|
||||||
ecore_con_url_url_set(p->con_url, buf);
|
ecore_con_url_url_set(p->con_url, buf);
|
||||||
ecore_con_url_send(p->con_url, NULL, 0, NULL);
|
ecore_con_url_send(p->con_url, NULL, 0, NULL);
|
||||||
|
@ -272,7 +323,7 @@ _fetch(Evry_Plugin *plugin, const char *input)
|
||||||
EVRY_PLUGIN_ITEMS_FREE(p);
|
EVRY_PLUGIN_ITEMS_FREE(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/***************************************************************************/
|
/***************************************************************************/
|
||||||
|
@ -343,9 +394,12 @@ _con_complete(void *data, int ev_type, void *event)
|
||||||
{
|
{
|
||||||
Ecore_Con_Event_Url_Complete *ev = event;
|
Ecore_Con_Event_Url_Complete *ev = event;
|
||||||
const Eina_List *l, *ll;
|
const Eina_List *l, *ll;
|
||||||
|
Evry_Action *act;
|
||||||
char *header;
|
char *header;
|
||||||
|
|
||||||
if (data != _act4)
|
act = ecore_con_url_data_get(ev->url_con);
|
||||||
|
|
||||||
|
if (data != act)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
l = ecore_con_url_response_headers_get(ev->url_con);
|
l = ecore_con_url_response_headers_get(ev->url_con);
|
||||||
|
@ -355,7 +409,6 @@ _con_complete(void *data, int ev_type, void *event)
|
||||||
|
|
||||||
ecore_event_handler_del(con_complete);
|
ecore_event_handler_del(con_complete);
|
||||||
ecore_event_handler_del(con_data);
|
ecore_event_handler_del(con_data);
|
||||||
|
|
||||||
ecore_con_url_destroy(ev->url_con);
|
ecore_con_url_destroy(ev->url_con);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -498,80 +551,65 @@ static Eina_Bool
|
||||||
_plugins_init(void)
|
_plugins_init(void)
|
||||||
{
|
{
|
||||||
Evry_Plugin *p;
|
Evry_Plugin *p;
|
||||||
|
Evry_Action *act;
|
||||||
|
Plugin *plug;
|
||||||
|
|
||||||
if (!evry_api_version_check(EVRY_API_VERSION))
|
if (!evry_api_version_check(EVRY_API_VERSION))
|
||||||
return EINA_FALSE;
|
return EINA_FALSE;
|
||||||
|
|
||||||
p = EVRY_PLUGIN_NEW(Plugin, N_("Google"),
|
#define PLUGIN_NEW(_name, _icon, _begin, _cleaup, _fetch, _complete, _request, _data_cb, _trigger) { \
|
||||||
"text-html", EVRY_TYPE_TEXT,
|
p = EVRY_PLUGIN_NEW(Plugin, _name, _icon, EVRY_TYPE_TEXT, _begin, _cleanup, _fetch, NULL); \
|
||||||
_begin, _cleanup, _fetch, NULL);
|
p->config_path = _config_path; \
|
||||||
|
plugins = eina_list_append(plugins, p); \
|
||||||
|
p->complete = _complete; \
|
||||||
|
GET_PLUGIN(plug, p); \
|
||||||
|
plug->request = _request; \
|
||||||
|
plug->data_cb = _data_cb; \
|
||||||
|
if (evry_plugin_register(p, EVRY_PLUGIN_SUBJECT, 10)) { \
|
||||||
|
Plugin_Config *pc = p->config; \
|
||||||
|
pc->view_mode = VIEW_MODE_LIST; \
|
||||||
|
pc->aggregate = EINA_FALSE; \
|
||||||
|
pc->top_level = EINA_FALSE; \
|
||||||
|
pc->view_mode = VIEW_MODE_DETAIL; \
|
||||||
|
pc->min_query = 3; \
|
||||||
|
pc->trigger_only = EINA_TRUE; \
|
||||||
|
pc->trigger = eina_stringshare_add(_trigger); }} \
|
||||||
|
|
||||||
p->complete = &_complete;
|
PLUGIN_NEW(N_("Google"), "text-html",
|
||||||
p->config_path = _config_path;
|
_begin, _cleanup, _fetch, &_complete,
|
||||||
_plug1 = (Plugin *) p;
|
_request_goolge, _google_data_cb,
|
||||||
_plug1->server_address = _address_google;
|
_trigger_google);
|
||||||
_plug1->request = _request_goolge;
|
|
||||||
_plug1->data_cb = &_google_data_cb;
|
|
||||||
if (evry_plugin_register(p, EVRY_PLUGIN_SUBJECT, 10))
|
|
||||||
{
|
|
||||||
Plugin_Config *pc = p->config;
|
|
||||||
pc->view_mode = VIEW_MODE_LIST;
|
|
||||||
pc->aggregate = EINA_FALSE;
|
|
||||||
pc->top_level = EINA_FALSE;
|
|
||||||
pc->view_mode = VIEW_MODE_DETAIL;
|
|
||||||
pc->min_query = 3;
|
|
||||||
pc->trigger = eina_stringshare_add(_trigger_google);
|
|
||||||
}
|
|
||||||
|
|
||||||
p = EVRY_PLUGIN_NEW(Plugin, N_("Wikipedia"),
|
PLUGIN_NEW(N_("Wikipedia"), "text-html",
|
||||||
"text-html", EVRY_TYPE_TEXT,
|
_begin, _cleanup, _fetch, &_complete,
|
||||||
_begin, _cleanup, _fetch, NULL);
|
_request_wiki, _wikipedia_data_cb,
|
||||||
p->complete = &_complete;
|
_trigger_wiki);
|
||||||
p->config_path = _config_path;
|
|
||||||
_plug2 = (Plugin *) p;
|
|
||||||
_plug2->server_address = _address_wiki;
|
|
||||||
_plug2->request = _request_wiki;
|
|
||||||
_plug2->data_cb = &_wikipedia_data_cb;
|
|
||||||
if (evry_plugin_register(p, EVRY_PLUGIN_SUBJECT, 9))
|
|
||||||
{
|
|
||||||
Plugin_Config *pc = p->config;
|
|
||||||
pc->view_mode = VIEW_MODE_LIST;
|
|
||||||
pc->aggregate = EINA_FALSE;
|
|
||||||
pc->top_level = EINA_FALSE;
|
|
||||||
pc->view_mode = VIEW_MODE_DETAIL;
|
|
||||||
pc->min_query = 3;
|
|
||||||
pc->trigger = eina_stringshare_add(_trigger_wiki);
|
|
||||||
}
|
|
||||||
|
|
||||||
_act1 = EVRY_ACTION_NEW(N_("Google for it"),
|
PLUGIN_NEW(N_("Translate"), "text-html",
|
||||||
EVRY_TYPE_TEXT, 0,
|
_begin_gtranslate, _cleanup, _fetch, NULL,
|
||||||
NULL, _action, NULL);
|
_request_gtranslate, _gtranslate_data_cb,
|
||||||
EVRY_ITEM_DATA_INT_SET(_act1, ACT_GOOGLE);
|
_trigger_gtranslate);
|
||||||
EVRY_ITEM_ICON_SET(_act1, "google");
|
|
||||||
EVRY_ITEM(_act1)->icon_get = &_icon_get;
|
|
||||||
evry_action_register(_act1, 1);
|
|
||||||
|
|
||||||
_act2 = EVRY_ACTION_NEW(N_("Wikipedia Page"),
|
|
||||||
EVRY_TYPE_TEXT, 0,
|
|
||||||
NULL, _action, NULL);
|
|
||||||
EVRY_ITEM_DATA_INT_SET(_act2, ACT_WIKIPEDIA);
|
|
||||||
EVRY_ITEM_ICON_SET(_act2, "google");
|
|
||||||
EVRY_ITEM(_act2)->icon_get = &_icon_get;
|
|
||||||
evry_action_register(_act2, 1);
|
|
||||||
|
|
||||||
_act3 = EVRY_ACTION_NEW(N_("Feeling Lucky"),
|
#define ACTION_NEW(_name, _type, _icon, _action, _check, _method) \
|
||||||
EVRY_TYPE_TEXT, 0,
|
act = EVRY_ACTION_NEW(_name, _type, 0, _icon, _action, _check); \
|
||||||
NULL, _action, NULL);
|
EVRY_ITEM_DATA_INT_SET(act, _method); \
|
||||||
EVRY_ITEM_DATA_INT_SET(_act3, ACT_FEELING_LUCKY);
|
EVRY_ITEM(act)->icon_get = &_icon_get; \
|
||||||
EVRY_ITEM_ICON_SET(_act3, "feeling-lucky");
|
evry_action_register(act, 1); \
|
||||||
EVRY_ITEM(_act3)->icon_get = &_icon_get;
|
actions = eina_list_append(actions, act); \
|
||||||
evry_action_register(_act3, 1);
|
|
||||||
|
|
||||||
_act4 = EVRY_ACTION_NEW(N_("Upload Image"), EVRY_TYPE_FILE, 0, "go-next",
|
ACTION_NEW(N_("Google for it"), EVRY_TYPE_TEXT, "google",
|
||||||
_action_upload, _action_upload_check);
|
_action, NULL, ACT_GOOGLE);
|
||||||
_act4->remember_context = EINA_TRUE;
|
|
||||||
EVRY_ITEM_DATA_INT_SET(_act4, ACT_UPLOAD_IMGUR);
|
ACTION_NEW(N_("Wikipedia Page"), EVRY_TYPE_TEXT, "wikipedia",
|
||||||
evry_action_register(_act4, 1);
|
_action, NULL, ACT_WIKIPEDIA);
|
||||||
|
|
||||||
|
ACTION_NEW(N_("Feeling Lucky"), EVRY_TYPE_TEXT, "feeling-lucky",
|
||||||
|
_action, NULL, ACT_FEELING_LUCKY);
|
||||||
|
|
||||||
|
ACTION_NEW(N_("Upload Image"), EVRY_TYPE_FILE, "go-next",
|
||||||
|
_action_upload, _action_upload_check, ACT_UPLOAD_IMGUR);
|
||||||
|
act->remember_context = EINA_TRUE;
|
||||||
|
|
||||||
return EINA_TRUE;
|
return EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
@ -579,13 +617,14 @@ _plugins_init(void)
|
||||||
static void
|
static void
|
||||||
_plugins_shutdown(void)
|
_plugins_shutdown(void)
|
||||||
{
|
{
|
||||||
EVRY_PLUGIN_FREE(_plug1);
|
Evry_Plugin *p;
|
||||||
EVRY_PLUGIN_FREE(_plug2);
|
Evry_Action *act;
|
||||||
|
|
||||||
evry_action_free(_act1);
|
EINA_LIST_FREE(plugins, p)
|
||||||
evry_action_free(_act2);
|
EVRY_PLUGIN_FREE(p);
|
||||||
evry_action_free(_act3);
|
|
||||||
evry_action_free(_act4);
|
EINA_LIST_FREE(actions, act)
|
||||||
|
evry_action_free(act);
|
||||||
}
|
}
|
||||||
|
|
||||||
/***************************************************************************/
|
/***************************************************************************/
|
||||||
|
@ -594,11 +633,11 @@ struct _E_Config_Dialog_Data
|
||||||
{
|
{
|
||||||
char *browser;
|
char *browser;
|
||||||
char *lang;
|
char *lang;
|
||||||
|
char *translate;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void *_create_data(E_Config_Dialog *cfd);
|
static void *_create_data(E_Config_Dialog *cfd);
|
||||||
static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
|
static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
|
||||||
static void _fill_data(E_Config_Dialog_Data *cfdata);
|
|
||||||
static Evas_Object *_basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata);
|
static Evas_Object *_basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata);
|
||||||
static int _basic_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
|
static int _basic_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
|
||||||
|
|
||||||
|
@ -649,6 +688,11 @@ _basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
|
||||||
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_framelist_object_append(of, ow);
|
||||||
|
|
||||||
|
ow = e_widget_label_add(evas, _("Translate"));
|
||||||
|
e_widget_framelist_object_append(of, ow);
|
||||||
|
ow = e_widget_entry_add(evas, &cfdata->translate, NULL, NULL, NULL);
|
||||||
|
e_widget_framelist_object_append(of, ow);
|
||||||
|
|
||||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||||
return o;
|
return o;
|
||||||
}
|
}
|
||||||
|
@ -657,9 +701,15 @@ static void *
|
||||||
_create_data(E_Config_Dialog *cfd)
|
_create_data(E_Config_Dialog *cfd)
|
||||||
{
|
{
|
||||||
E_Config_Dialog_Data *cfdata = NULL;
|
E_Config_Dialog_Data *cfdata = NULL;
|
||||||
|
|
||||||
cfdata = E_NEW(E_Config_Dialog_Data, 1);
|
cfdata = E_NEW(E_Config_Dialog_Data, 1);
|
||||||
_fill_data(cfdata);
|
|
||||||
|
#define CP(_name) cfdata->_name = strdup(_conf->_name);
|
||||||
|
#define C(_name) cfdata->_name = _conf->_name;
|
||||||
|
CP(browser);
|
||||||
|
CP(lang);
|
||||||
|
CP(translate);
|
||||||
|
#undef CP
|
||||||
|
#undef C
|
||||||
return cfdata;
|
return cfdata;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -668,21 +718,11 @@ _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||||
{
|
{
|
||||||
E_FREE(cfdata->browser);
|
E_FREE(cfdata->browser);
|
||||||
E_FREE(cfdata->lang);
|
E_FREE(cfdata->lang);
|
||||||
|
E_FREE(cfdata->translate);
|
||||||
_conf->cfd = NULL;
|
_conf->cfd = NULL;
|
||||||
E_FREE(cfdata);
|
E_FREE(cfdata);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
_fill_data(E_Config_Dialog_Data *cfdata)
|
|
||||||
{
|
|
||||||
#define CP(_name) cfdata->_name = strdup(_conf->_name);
|
|
||||||
#define C(_name) cfdata->_name = _conf->_name;
|
|
||||||
CP(browser);
|
|
||||||
CP(lang);
|
|
||||||
#undef CP
|
|
||||||
#undef C
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
_basic_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
_basic_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||||
{
|
{
|
||||||
|
@ -693,6 +733,7 @@ _basic_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||||
#define C(_name) _conf->_name = cfdata->_name;
|
#define C(_name) _conf->_name = cfdata->_name;
|
||||||
CP(browser);
|
CP(browser);
|
||||||
CP(lang);
|
CP(lang);
|
||||||
|
CP(translate);
|
||||||
#undef CP
|
#undef CP
|
||||||
#undef C
|
#undef C
|
||||||
|
|
||||||
|
@ -704,8 +745,11 @@ _basic_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||||
static void
|
static void
|
||||||
_conf_new(void)
|
_conf_new(void)
|
||||||
{
|
{
|
||||||
_conf = E_NEW(Module_Config, 1);
|
if (!_conf)
|
||||||
_conf->version = (MOD_CONFIG_FILE_EPOCH << 16);
|
{
|
||||||
|
_conf = E_NEW(Module_Config, 1);
|
||||||
|
_conf->version = (MOD_CONFIG_FILE_EPOCH << 16);
|
||||||
|
}
|
||||||
|
|
||||||
#define IFMODCFG(v) if ((_conf->version & 0xffff) < v) {
|
#define IFMODCFG(v) if ((_conf->version & 0xffff) < v) {
|
||||||
#define IFMODCFGEND }
|
#define IFMODCFGEND }
|
||||||
|
@ -716,6 +760,10 @@ _conf_new(void)
|
||||||
_conf->lang = eina_stringshare_add("en");
|
_conf->lang = eina_stringshare_add("en");
|
||||||
IFMODCFGEND;
|
IFMODCFGEND;
|
||||||
|
|
||||||
|
IFMODCFG(0x009d);
|
||||||
|
_conf->translate = eina_stringshare_add("en|de");
|
||||||
|
IFMODCFGEND;
|
||||||
|
|
||||||
_conf->version = MOD_CONFIG_FILE_VERSION;
|
_conf->version = MOD_CONFIG_FILE_VERSION;
|
||||||
|
|
||||||
e_config_save_queue();
|
e_config_save_queue();
|
||||||
|
@ -724,15 +772,12 @@ _conf_new(void)
|
||||||
static void
|
static void
|
||||||
_conf_free(void)
|
_conf_free(void)
|
||||||
{
|
{
|
||||||
if (_conf)
|
if (!_conf) return;
|
||||||
{
|
eina_stringshare_del(_conf->browser);
|
||||||
eina_stringshare_del(_conf->browser);
|
eina_stringshare_del(_conf->lang);
|
||||||
eina_stringshare_del(_conf->lang);
|
eina_stringshare_del(_conf->translate);
|
||||||
|
free(_conf->theme);
|
||||||
free(_conf->theme);
|
E_FREE(_conf);
|
||||||
|
|
||||||
E_FREE(_conf);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -757,16 +802,18 @@ _conf_init(E_Module *m)
|
||||||
E_CONFIG_VAL(D, T, version, INT);
|
E_CONFIG_VAL(D, T, version, INT);
|
||||||
E_CONFIG_VAL(D, T, browser, STR);
|
E_CONFIG_VAL(D, T, browser, STR);
|
||||||
E_CONFIG_VAL(D, T, lang, STR);
|
E_CONFIG_VAL(D, T, lang, STR);
|
||||||
|
E_CONFIG_VAL(D, T, translate, STR);
|
||||||
#undef T
|
#undef T
|
||||||
#undef D
|
#undef D
|
||||||
|
|
||||||
_conf = e_config_domain_load(_config_domain, _conf_edd);
|
_conf = e_config_domain_load(_config_domain, _conf_edd);
|
||||||
|
|
||||||
if (_conf && !evry_util_module_config_check(_("Everything Websearch"), _conf->version,
|
if (_conf && !evry_util_module_config_check
|
||||||
MOD_CONFIG_FILE_EPOCH, MOD_CONFIG_FILE_VERSION))
|
(_("Everything Websearch"), _conf->version, MOD_CONFIG_FILE_EPOCH, MOD_CONFIG_FILE_VERSION))
|
||||||
_conf_free();
|
{
|
||||||
|
_conf_free();
|
||||||
|
}
|
||||||
|
|
||||||
if (!_conf) _conf_new();
|
_conf_new();
|
||||||
|
|
||||||
_conf->module = m;
|
_conf->module = m;
|
||||||
_conf->theme = strdup(buf);
|
_conf->theme = strdup(buf);
|
||||||
|
@ -798,10 +845,7 @@ e_modapi_init(E_Module *m)
|
||||||
bind_textdomain_codeset(PACKAGE, "UTF-8");
|
bind_textdomain_codeset(PACKAGE, "UTF-8");
|
||||||
|
|
||||||
e_notification_init();
|
e_notification_init();
|
||||||
|
ecore_con_url_init();
|
||||||
if (!ecore_con_init())
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
_conf_init(m);
|
_conf_init(m);
|
||||||
|
|
||||||
if (!_plugins_init())
|
if (!_plugins_init())
|
||||||
|
@ -810,12 +854,8 @@ e_modapi_init(E_Module *m)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
_id_none = eina_stringshare_add("");
|
|
||||||
|
|
||||||
e_module_delayed_set(m, 1);
|
e_module_delayed_set(m, 1);
|
||||||
|
|
||||||
ecore_con_url_init();
|
|
||||||
|
|
||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -827,13 +867,7 @@ e_modapi_shutdown(E_Module *m)
|
||||||
_plugins_shutdown();
|
_plugins_shutdown();
|
||||||
|
|
||||||
_conf_shutdown();
|
_conf_shutdown();
|
||||||
|
|
||||||
ecore_con_shutdown();
|
|
||||||
|
|
||||||
e_notification_shutdown();
|
e_notification_shutdown();
|
||||||
|
|
||||||
eina_stringshare_del(_id_none);
|
|
||||||
|
|
||||||
ecore_con_url_shutdown();
|
ecore_con_url_shutdown();
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -959,8 +993,11 @@ _json_data_free(Json_Data *jd)
|
||||||
const char *val;
|
const char *val;
|
||||||
if (!jd) return;
|
if (!jd) return;
|
||||||
|
|
||||||
|
if (jd->list) DBG("-------------------");
|
||||||
|
|
||||||
EINA_LIST_FREE(jd->list, d)
|
EINA_LIST_FREE(jd->list, d)
|
||||||
{
|
{
|
||||||
|
DBG("%s : %s", d->key, d->value);
|
||||||
if (d->key) eina_stringshare_del(d->key);
|
if (d->key) eina_stringshare_del(d->key);
|
||||||
if (d->value) eina_stringshare_del(d->value);
|
if (d->value) eina_stringshare_del(d->value);
|
||||||
EINA_LIST_FREE(d->values, val)
|
EINA_LIST_FREE(d->values, val)
|
||||||
|
@ -975,7 +1012,7 @@ _json_data_free(Json_Data *jd)
|
||||||
}
|
}
|
||||||
|
|
||||||
static Json_Data *
|
static Json_Data *
|
||||||
_json_parse(char *string, Eina_Bool flat, int len)
|
_json_parse(const char *string, Eina_Bool flat, int len)
|
||||||
{
|
{
|
||||||
Eina_Hash *h;
|
Eina_Hash *h;
|
||||||
struct json_parser parser;
|
struct json_parser parser;
|
||||||
|
|
Loading…
Reference in New Issue