Elementary: Use an enum for selecting line-wrap method.
authortasn <tasn@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Mon, 2 May 2011 10:56:16 +0000 (10:56 +0000)
committertasn <tasn@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Mon, 2 May 2011 10:56:16 +0000 (10:56 +0000)
BREAKS API - discussed in ML before.

git-svn-id: https://svn.enlightenment.org/svn/e/trunk/elementary@59115 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/bin/test_entry.c
src/lib/Elementary.h.in
src/lib/elc_fileselector.c
src/lib/elc_scrolled_entry.c
src/lib/elm_entry.c
src/lib/elm_label.c

index 3115b0f..7151e58 100644 (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,
index 77cbed0..56fbc64 100644 (file)
@@ -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);
index 1bff969..e38ec38 100644 (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);
 
index 65c7d78..c54036c 100644 (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);
@@ -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
index e1c8eff..4635ceb 100644 (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);
 }
 
index 499c60d..fe30fb2 100644 (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;