From: tasn Date: Mon, 2 May 2011 10:56:16 +0000 (+0000) Subject: Elementary: Use an enum for selecting line-wrap method. X-Git-Tag: REL_F_I9200_20110722_1~8^2~50^2~389 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e7bfe6d639c5d60cec315f2ec7255401b863208b;p=framework%2Fuifw%2Felementary.git Elementary: Use an enum for selecting line-wrap method. BREAKS API - discussed in ML before. git-svn-id: https://svn.enlightenment.org/svn/e/trunk/elementary@59115 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- diff --git a/src/bin/test_entry.c b/src/bin/test_entry.c index 3115b0f..7151e58 100644 --- a/src/bin/test_entry.c +++ b/src/bin/test_entry.c @@ -76,7 +76,7 @@ test_entry(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info evas_object_show(bx); en = elm_entry_add(win); - elm_entry_line_wrap_set(en, 0); + elm_entry_line_wrap_set(en, ELM_WRAP_NONE); snprintf(buf, sizeof(buf), "This is an entry widget in this window that
" "uses markup like this for styling and
" @@ -1256,7 +1256,7 @@ test_entry4(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info evas_object_show(en); en = elm_entry_add(win); - elm_entry_line_wrap_set(en, 0); + elm_entry_line_wrap_set(en, ELM_WRAP_NONE); elm_entry_entry_set(en, "This is an entry widget
" "that uses markup
" @@ -1311,7 +1311,7 @@ test_entry5(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info evas_object_show(bx); en = elm_scrolled_entry_add(win); - elm_scrolled_entry_line_char_wrap_set(en, 1); + elm_scrolled_entry_line_wrap_set(en, ELM_WRAP_CHAR); evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL); elm_scrolled_entry_entry_set(en, diff --git a/src/lib/Elementary.h.in b/src/lib/Elementary.h.in index 77cbed0..56fbc64 100644 --- a/src/lib/Elementary.h.in +++ b/src/lib/Elementary.h.in @@ -200,6 +200,19 @@ extern "C" { } Elm_Text_Format; /** + * Line wrapping types. + */ + typedef enum _Elm_Wrap_Type + { + ELM_WRAP_NONE = 0, /**< No wrap - value is zero */ + ELM_WRAP_CHAR, /**< Char wrap - wrap between graphmes */ + ELM_WRAP_WORD, /**< Word wrap - wrap in allowed wrapping points (as defined in the unicode standard) */ + ELM_WRAP_MIXED, /**< Mixed wrap - Word wrap, and if that fails, char wrap. */ + ELM_WRAP_LAST = ELM_WRAP_MIXED + } Elm_Wrap_Type; + + + /** * Called back when a widget's tooltip is activated and needs content. * @param data user-data given to elm_object_tooltip_content_cb_set() * @param obj owner widget. @@ -838,8 +851,8 @@ extern "C" { EAPI Evas_Object *elm_label_add(Evas_Object *parent) EINA_ARG_NONNULL(1); EAPI void elm_label_label_set(Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1); EAPI const char *elm_label_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); - EAPI void elm_label_line_wrap_set(Evas_Object *obj, Eina_Bool wrap) EINA_ARG_NONNULL(1); - EAPI Eina_Bool elm_label_line_wrap_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI void elm_label_line_wrap_set(Evas_Object *obj, Elm_Wrap_Type wrap) EINA_ARG_NONNULL(1); + EAPI Elm_Wrap_Type elm_label_line_wrap_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); EAPI void elm_label_wrap_width_set(Evas_Object *obj, Evas_Coord w) EINA_ARG_NONNULL(1); EAPI Evas_Coord elm_label_wrap_width_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); EAPI void elm_label_wrap_height_set(Evas_Object *obj, Evas_Coord h) EINA_ARG_NONNULL(1); @@ -1227,8 +1240,7 @@ extern "C" { EAPI Eina_Bool elm_entry_is_empty(const Evas_Object *obj) EINA_ARG_NONNULL(1); EAPI const char *elm_entry_selection_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); EAPI void elm_entry_entry_insert(Evas_Object *obj, const char *entry) EINA_ARG_NONNULL(1); - EAPI void elm_entry_line_wrap_set(Evas_Object *obj, Eina_Bool wrap) EINA_ARG_NONNULL(1); - EAPI void elm_entry_line_char_wrap_set(Evas_Object *obj, Eina_Bool wrap) EINA_ARG_NONNULL(1); + EAPI void elm_entry_line_wrap_set(Evas_Object *obj, Elm_Wrap_Type wrap) EINA_ARG_NONNULL(1); EAPI void elm_entry_editable_set(Evas_Object *obj, Eina_Bool editable) EINA_ARG_NONNULL(1); EAPI Eina_Bool elm_entry_editable_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); EAPI void elm_entry_select_none(Evas_Object *obj) EINA_ARG_NONNULL(1); @@ -2439,8 +2451,7 @@ extern "C" { EAPI Eina_Bool elm_scrolled_entry_is_empty(const Evas_Object *obj) EINA_ARG_NONNULL(1); EAPI const char *elm_scrolled_entry_selection_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); EAPI void elm_scrolled_entry_entry_insert(Evas_Object *obj, const char *entry) EINA_ARG_NONNULL(1); - EAPI void elm_scrolled_entry_line_wrap_set(Evas_Object *obj, Eina_Bool wrap) EINA_ARG_NONNULL(1); - EAPI void elm_scrolled_entry_line_char_wrap_set(Evas_Object *obj, Eina_Bool wrap) EINA_ARG_NONNULL(1); + EAPI void elm_scrolled_entry_line_wrap_set(Evas_Object *obj, Elm_Wrap_Type wrap) EINA_ARG_NONNULL(1); EAPI void elm_scrolled_entry_editable_set(Evas_Object *obj, Eina_Bool editable) EINA_ARG_NONNULL(1); EAPI Eina_Bool elm_scrolled_entry_editable_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); EAPI void elm_scrolled_entry_select_none(Evas_Object *obj) EINA_ARG_NONNULL(1); diff --git a/src/lib/elc_fileselector.c b/src/lib/elc_fileselector.c index 1bff969..e38ec38 100644 --- a/src/lib/elc_fileselector.c +++ b/src/lib/elc_fileselector.c @@ -654,7 +654,7 @@ elm_fileselector_add(Evas_Object *parent) elm_widget_mirrored_automatic_set(en, EINA_FALSE); elm_scrolled_entry_editable_set(en, EINA_FALSE); elm_scrolled_entry_single_line_set(en, EINA_TRUE); - elm_scrolled_entry_line_char_wrap_set(en, EINA_TRUE); + elm_scrolled_entry_line_wrap_set(en, ELM_WRAP_CHAR); evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL); @@ -668,7 +668,7 @@ elm_fileselector_add(Evas_Object *parent) elm_widget_mirrored_automatic_set(en, EINA_FALSE); elm_scrolled_entry_editable_set(en, EINA_TRUE); elm_scrolled_entry_single_line_set(en, EINA_TRUE); - elm_scrolled_entry_line_char_wrap_set(en, EINA_TRUE); + elm_scrolled_entry_line_wrap_set(en, ELM_WRAP_CHAR); evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL); diff --git a/src/lib/elc_scrolled_entry.c b/src/lib/elc_scrolled_entry.c index 65c7d78..c54036c 100644 --- a/src/lib/elc_scrolled_entry.c +++ b/src/lib/elc_scrolled_entry.c @@ -821,14 +821,14 @@ elm_scrolled_entry_entry_insert(Evas_Object *obj, const char *entry) * See also elm_scrolled_entry_line_char_wrap_set(). * * @param obj The scrolled entry object - * @param wrap If true, the scrolled entry will be wrapped once it reaches the end + * @param wrap wrap according to Elm_Wrap_Type * of the object. Wrapping will occur at the end of the word before the end of the * object. * * @ingroup Scrolled_Entry */ EAPI void -elm_scrolled_entry_line_wrap_set(Evas_Object *obj, Eina_Bool wrap) +elm_scrolled_entry_line_wrap_set(Evas_Object *obj, Elm_Wrap_Type wrap) { ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); @@ -837,27 +837,6 @@ elm_scrolled_entry_line_wrap_set(Evas_Object *obj, Eina_Bool wrap) } /** - * This enables character line wrapping in the scrolled entry object. It is the opposite - * of elm_scrolled_entry_single_line_set(). Additionally, setting this disables - * word line wrapping. - * See also elm_scrolled_entry_line_wrap_set(). - * - * @param obj The scrolled entry object - * @param wrap If true, the scrolled entry will be wrapped once it reaches the end - * of the object. Wrapping will occur immediately upon reaching the end of the object. - * - * @ingroup Scrolled_Entry - */ -EAPI void -elm_scrolled_entry_line_char_wrap_set(Evas_Object *obj, Eina_Bool wrap) -{ - ELM_CHECK_WIDTYPE(obj, widtype); - Widget_Data *wd = elm_widget_data_get(obj); - if (!wd) return; - elm_entry_line_char_wrap_set(wd->entry, wrap); -} - -/** * This sets the editable attribute of the scrolled entry. * * @param obj The scrolled entry object diff --git a/src/lib/elm_entry.c b/src/lib/elm_entry.c index e1c8eff..4635ceb 100644 --- a/src/lib/elm_entry.c +++ b/src/lib/elm_entry.c @@ -122,9 +122,8 @@ struct _Widget_Data Ecore_Job *hovdeljob; Mod_Api *api; // module api if supplied int cursor_pos; + Elm_Wrap_Type linewrap; Eina_Bool changed : 1; - Eina_Bool linewrap : 1; - Eina_Bool char_linewrap : 1; Eina_Bool single_line : 1; Eina_Bool password : 1; Eina_Bool editable : 1; @@ -617,7 +616,7 @@ _sizing_eval(Evas_Object *obj) Evas_Coord minw = -1, minh = -1; Evas_Coord resw, resh; if (!wd) return; - if ((wd->linewrap) || (wd->char_linewrap)) + if (wd->linewrap) { evas_object_geometry_get(wd->ent, NULL, NULL, &resw, &resh); if ((resw == wd->lastw) && (!wd->changed)) return; @@ -738,7 +737,7 @@ _resize(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event { Widget_Data *wd = elm_widget_data_get(data); if (!wd) return; - if ((wd->linewrap) || (wd->char_linewrap)) + if (wd->linewrap) { _sizing_eval(data); } @@ -1083,9 +1082,18 @@ _getbase(Evas_Object *obj) if (wd->single_line) return "base-single"; else { - if (wd->linewrap) return "base"; - else if (wd->char_linewrap) return "base-charwrap"; - else return "base-nowrap"; + switch (wd->linewrap) + { + case ELM_WRAP_CHAR: + return "base-charwrap"; + case ELM_WRAP_WORD: + case ELM_WRAP_MIXED: + /* FIXME: separate mixed and word. */ + return "base"; + case ELM_WRAP_NONE: + default: + return "base-nowrap"; + } } } } @@ -1097,9 +1105,18 @@ _getbase(Evas_Object *obj) if (wd->single_line) return "base-single-noedit"; else { - if (wd->linewrap) return "base-noedit"; - else if (wd->char_linewrap) return "base-noedit-charwrap"; - else return "base-nowrap-noedit"; + switch (wd->linewrap) + { + case ELM_WRAP_CHAR: + return "base-noedit-charwrap"; + case ELM_WRAP_WORD: + case ELM_WRAP_MIXED: + /* FIXME: separate mixed and word. */ + return "base-noedit"; + case ELM_WRAP_NONE: + default: + return "base-nowrap-noedit"; + } } } } @@ -1575,8 +1592,7 @@ elm_entry_add(Evas_Object *parent) elm_widget_can_focus_set(obj, EINA_TRUE); elm_widget_highlight_ignore_set(obj, EINA_TRUE); - wd->linewrap = EINA_TRUE; - wd->char_linewrap= EINA_FALSE; + wd->linewrap = ELM_WRAP_WORD; wd->editable = EINA_TRUE; wd->disabled = EINA_FALSE; wd->context_menu = EINA_TRUE; @@ -1686,8 +1702,7 @@ elm_entry_single_line_set(Evas_Object *obj, Eina_Bool single_line) if (!wd) return; if (wd->single_line == single_line) return; wd->single_line = single_line; - wd->linewrap = EINA_FALSE; - wd->char_linewrap = EINA_FALSE; + wd->linewrap = ELM_WRAP_NONE; elm_entry_cnp_textonly_set(obj, EINA_TRUE); _theme_hook(obj); } @@ -1729,8 +1744,7 @@ elm_entry_password_set(Evas_Object *obj, Eina_Bool password) if (wd->password == password) return; wd->password = password; wd->single_line = EINA_TRUE; - wd->linewrap = EINA_FALSE; - wd->char_linewrap = EINA_FALSE; + wd->linewrap = ELM_WRAP_NONE; _theme_hook(obj); } @@ -1883,7 +1897,6 @@ elm_entry_entry_insert(Evas_Object *obj, const char *entry) * This enables word line wrapping in the entry object. It is the opposite * of elm_entry_single_line_set(). Additionally, setting this disables * character line wrapping. - * See also elm_entry_line_char_wrap_set(). * * @param obj The entry object * @param wrap If true, the entry will be wrapped once it reaches the end @@ -1893,40 +1906,14 @@ elm_entry_entry_insert(Evas_Object *obj, const char *entry) * @ingroup Entry */ EAPI void -elm_entry_line_wrap_set(Evas_Object *obj, Eina_Bool wrap) +elm_entry_line_wrap_set(Evas_Object *obj, Elm_Wrap_Type wrap) { ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); if (!wd) return; if (wd->linewrap == wrap) return; - wd->linewrap = wrap; - if(wd->linewrap) - wd->char_linewrap = EINA_FALSE; - _theme_hook(obj); -} -/** - * This enables character line wrapping in the entry object. It is the opposite - * of elm_entry_single_line_set(). Additionally, setting this disables - * word line wrapping. - * See also elm_entry_line_wrap_set(). - * - * @param obj The entry object - * @param wrap If true, the entry will be wrapped once it reaches the end - * of the object. Wrapping will occur immediately upon reaching the end of the object. - * - * @ingroup Entry - */ -EAPI void -elm_entry_line_char_wrap_set(Evas_Object *obj, Eina_Bool wrap) -{ - ELM_CHECK_WIDTYPE(obj, widtype); - Widget_Data *wd = elm_widget_data_get(obj); - if (!wd) return; - if (wd->char_linewrap == wrap) return; - wd->char_linewrap = wrap; - if(wd->char_linewrap) - wd->linewrap = EINA_FALSE; + wd->linewrap = wrap; _theme_hook(obj); } diff --git a/src/lib/elm_label.c b/src/lib/elm_label.c index 499c60d..fe30fb2 100644 --- a/src/lib/elm_label.c +++ b/src/lib/elm_label.c @@ -729,12 +729,14 @@ elm_label_label_get(const Evas_Object *obj) /** * Set the wrapping behavior of the label * + * FIXME: currently all types wrap the same way (as defined in theme). + * * @param obj The label object * @param wrap To wrap text or not * @ingroup Label */ EAPI void -elm_label_line_wrap_set(Evas_Object *obj, Eina_Bool wrap) +elm_label_line_wrap_set(Evas_Object *obj, Elm_Wrap_Type wrap) { ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); @@ -754,10 +756,10 @@ elm_label_line_wrap_set(Evas_Object *obj, Eina_Bool wrap) * Get the wrapping behavior of the label * * @param obj The label object - * @return To wrap text or not + * @return Wrap type * @ingroup Label */ -EAPI Eina_Bool +EAPI Elm_Wrap_Type elm_label_line_wrap_get(const Evas_Object *obj) { ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;