Elementary: Use an enum for selecting line-wrap method.

BREAKS API - discussed in ML before.

SVN revision: 59115
This commit is contained in:
Tom Hacohen 2011-05-02 10:56:16 +00:00
parent 728b6f153a
commit 9466cbcea3
6 changed files with 61 additions and 82 deletions

View File

@ -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<br>"
"uses markup <b>like this</> for styling and<br>"
@ -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<br>"
"that uses markup<br>"
@ -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,

View File

@ -199,6 +199,19 @@ extern "C" {
ELM_TEXT_FORMAT_MARKUP_UTF8
} 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()
@ -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);

View File

@ -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);

View File

@ -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);
@ -836,27 +836,6 @@ elm_scrolled_entry_line_wrap_set(Evas_Object *obj, Eina_Bool wrap)
elm_entry_line_wrap_set(wd->entry, 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.
*

View File

@ -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);
}

View File

@ -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;