From a9189fb63a13a7400e1672bc1393fda5c86a0b16 Mon Sep 17 00:00:00 2001 From: yoz Date: Tue, 5 Jul 2011 11:30:46 +0000 Subject: [PATCH] elementary: use line wrap for the edje_external entry object git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/elementary@61046 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/edje_externals/elm_entry.c | 54 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/src/edje_externals/elm_entry.c b/src/edje_externals/elm_entry.c index 94f4734..d4d51b9 100644 --- a/src/edje_externals/elm_entry.c +++ b/src/edje_externals/elm_entry.c @@ -1,3 +1,5 @@ +#include + #include "private.h" typedef struct _Elm_Params_Entry @@ -18,13 +20,34 @@ typedef struct _Elm_Params_Entry Eina_Bool vertical_bounce_exists:1; Eina_Bool editable:1; Eina_Bool editable_exists:1; + const char *line_wrap; } Elm_Params_Entry; +#define CHOICE_GET(CHOICES, STR) \ + unsigned int i; \ + for (i = 0; i < sizeof(CHOICES); i++) \ + if (strcmp(STR, CHOICES[i]) == 0) \ + return i + + +static const char *entry_line_wrap_choices[] = {"none", "char", "word", + "mixed", NULL}; + +static Elm_Wrap_Type +_entry_line_wrap_choices_setting_get(const char *line_wrap_str) +{ + assert(sizeof(entry_line_wrap_choices)/ + sizeof(entry_line_wrap_choices[0]) == ELM_WRAP_LAST + 1); + CHOICE_GET(entry_line_wrap_choices, line_wrap_str); + return ELM_WRAP_LAST; +} + static void external_entry_state_set(void *data __UNUSED__, Evas_Object *obj, const void *from_params, const void *to_params, float pos __UNUSED__) { const Elm_Params_Entry *p; Eina_Bool hbounce, vbounce; + Elm_Wrap_Type line_wrap; if (to_params) p = to_params; else if (from_params) p = from_params; @@ -54,6 +77,11 @@ external_entry_state_set(void *data __UNUSED__, Evas_Object *obj, const void *fr } if (p->editable_exists) elm_entry_editable_set(obj, p->editable); + if (p->line_wrap) + { + line_wrap = _entry_line_wrap_choices_setting_get(p->line_wrap); + elm_entry_line_wrap_set(obj, line_wrap); + } } static Eina_Bool @@ -138,6 +166,17 @@ external_entry_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_Ext return EINA_TRUE; } } + else if (!strcmp(param->name, "line wrap")) + { + if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING) + { + Elm_Wrap_Type line_wrap; + line_wrap = _entry_line_wrap_choices_setting_get(param->s); + if (line_wrap == ELM_WRAP_LAST) return EINA_FALSE; + elm_entry_line_wrap_set(obj, line_wrap); + return EINA_TRUE; + } + } ERR("unknown parameter '%s' of type '%s'", param->name, edje_external_param_type_str(param->type)); @@ -221,6 +260,16 @@ external_entry_param_get(void *data __UNUSED__, const Evas_Object *obj, Edje_Ext return EINA_TRUE; } } + else if (!strcmp(param->name, "line wrap")) + { + if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING) + { + Elm_Wrap_Type line_wrap; + line_wrap = elm_entry_line_wrap_get(obj); + param->s = entry_line_wrap_choices[line_wrap]; + return EINA_TRUE; + } + } ERR("unknown parameter '%s' of type '%s'", param->name, edje_external_param_type_str(param->type)); @@ -281,6 +330,8 @@ external_entry_params_parse(void *data __UNUSED__, Evas_Object *obj, const Eina_ mem->editable = !!param->i; mem->editable_exists = EINA_TRUE; } + else if (!strcmp(param->name, "line wrap")) + mem->line_wrap = eina_stringshare_add(param->s); } return mem; @@ -301,6 +352,8 @@ external_entry_params_free(void *params) eina_stringshare_del(mem->label); if (mem->entry) eina_stringshare_del(mem->entry); + if (mem->line_wrap) + eina_stringshare_del(mem->line_wrap); free(params); } @@ -315,6 +368,7 @@ static Edje_External_Param_Info external_entry_params[] = { EDJE_EXTERNAL_PARAM_INFO_BOOL("horizontal bounce"), EDJE_EXTERNAL_PARAM_INFO_BOOL("vertical bounce"), EDJE_EXTERNAL_PARAM_INFO_BOOL("editable"), + EDJE_EXTERNAL_PARAM_INFO_STRING("line_wrap"), EDJE_EXTERNAL_PARAM_INFO_SENTINEL }; -- 2.7.4