hermet pushed a commit to branch master.
commit aa7d8ad206f6a0d247475800cb5c6c32d80a6009
Author: ChunEon Park <[email protected]>
Date: Tue Apr 23 17:11:28 2013 +0900
elementary/widget item - and add
elm_object_item_domain_part_text_translatable_set().
---
ChangeLog | 3 ++-
NEWS | 2 +-
src/lib/elm_main.c | 6 ++++++
src/lib/elm_object.h | 2 +-
src/lib/elm_object_item.h | 28 ++++++++++++++++++++++++++++
src/lib/elm_widget.c | 34 +++++++++++++++++++++++++++++++++-
src/lib/elm_widget.h | 1 +
7 files changed, 72 insertions(+), 4 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 01233d3..eaec384 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1275,7 +1275,8 @@
2013-04-23 ChunEon Park
- * Added elm_object_domain_part_text_translatable_set().
+ * Added elm_object_domain_part_text_translatable_set(),
+ elm_object_item_domain_part_text_translatable_set().
2013-04-23 Jaehwan Kim
diff --git a/NEWS b/NEWS
index a2e8bee..c182948 100644
--- a/NEWS
+++ b/NEWS
@@ -62,7 +62,7 @@ Additions:
* Add the API elm_scroller_single_direction_set/get.
* Add the feature for key events.
* Add elm_access_action(), elm_access_action_cb_set()
- * Add elm_object_domain_part_text_translatable_set()
+ * Add elm_object_domain_part_text_translatable_set(),
elm_object_item_domain_part_text_translatable_set().
Improvements:
diff --git a/src/lib/elm_main.c b/src/lib/elm_main.c
index a055f28..28561b3 100644
--- a/src/lib/elm_main.c
+++ b/src/lib/elm_main.c
@@ -1574,6 +1574,12 @@ elm_object_item_translatable_part_text_get(const
Elm_Object_Item *it, const char
}
EAPI void
+elm_object_item_domain_part_text_translatable_set(Elm_Object_Item *it, const
char *part, const char *domain, Eina_Bool translatable)
+{
+ _elm_widget_item_domain_part_text_translatable_set((Elm_Widget_Item *)it,
part, domain, translatable);
+}
+
+EAPI void
elm_object_access_info_set(Evas_Object *obj, const char *txt)
{
elm_widget_access_info_set(obj, txt);
diff --git a/src/lib/elm_object.h b/src/lib/elm_object.h
index bc9c886..2e617c4 100644
--- a/src/lib/elm_object.h
+++ b/src/lib/elm_object.h
@@ -98,7 +98,7 @@ EAPI const char *elm_object_translatable_part_text_get(const
Evas_Object *obj, c
* @param translatable @c EINA_TRUE, the part text will be translated
* internally. @c EINA_FALSE, otherwise.
*
- * @see elm_object_domain_part_text_translatable_set()
+ * @see elm_object_domain_translatable_part_text_set()
* @see elm_object_part_text_set()
* @see elm_policy()
*
diff --git a/src/lib/elm_object_item.h b/src/lib/elm_object_item.h
index ee78292..a14649e 100644
--- a/src/lib/elm_object_item.h
+++ b/src/lib/elm_object_item.h
@@ -171,6 +171,34 @@ EAPI const char
*elm_object_item_translatable_part_text_get(const Elm_Object_Ite
#define elm_object_item_translatable_text_get(it)
elm_object_item_translatable_part_text_get((it), NULL)
+/**
+ * Mark the part text to be transltable or not.
+ *
+ * Once you mark the part text to be translatable, the text will be translated
+ * internally regardless of elm_object_item_part_text_set() and
+ * elm_object_item_domain_translatable_part_text_set(). In other case, if you
+ * set the Elementary policy that all text will be translatable in default, you
+ * can set the part text to not be translated by calling this API.
+ *
+ * @param it The object item containing the text part
+ * @param part The part name of the translatable text
+ * @param domain The translation domain to use
+ * @param translatable @c EINA_TRUE, the part text will be translated
+ * internally. @c EINA_FALSE, otherwise.
+ *
+ * @see elm_object_item_domain_translatable_part_text_set()
+ * @see elm_object_item_part_text_set()
+ * @see elm_policy()
+ *
+ * @since 1.8
+ *
+ * @ingroup General
+ */
+EAPI void elm_object_item_domain_part_text_translatable_set(Elm_Object_Item
*it, const char *part, const char *domain, Eina_Bool translatable);
+
+#define elm_object_item_part_text_translatable_set(it, part, translatable)
elm_object_item_domain_part_text_translatable_set((it), (part), NULL,
(translatable))
+
+#define elm_object_item_domain_text_translatable_set(it, domain, translatable)
elm_object_item_domain_part_text_translatable_set((it), NULL, (domain),
(translatable))
/**
* Set the text to read out when in accessibility mode
diff --git a/src/lib/elm_widget.c b/src/lib/elm_widget.c
index 5ca6b99..3f205f9 100644
--- a/src/lib/elm_widget.c
+++ b/src/lib/elm_widget.c
@@ -5143,6 +5143,36 @@ _elm_widget_item_translatable_part_text_get(const
Elm_Widget_Item *item,
return NULL;
}
+EAPI void
+_elm_widget_item_domain_part_text_translatable_set(Elm_Widget_Item *item,
+ const char *part,
+ const char *domain,
+ Eina_Bool translatable)
+{
+ ELM_WIDGET_ITEM_CHECK_OR_RETURN(item);
+ Elm_Translate_String_Data *ts;
+ const char *text;
+
+ ts = _part_text_translatable_set(&item->translate_strings, part,
+ translatable, EINA_TRUE);
+ if (!ts) return;
+ if (!ts->domain) ts->domain = eina_stringshare_add(domain);
+ else eina_stringshare_replace(&ts->domain, domain);
+
+ text = _elm_widget_item_part_text_get(item, part);
+ if (!text || !text[0]) return;
+
+ if (!ts->string) ts->string = eina_stringshare_add(text);
+
+//Try to translate text since we don't know the text is already translated.
+#ifdef HAVE_GETTEXT
+ text = dgettext(domain, text);
+#endif
+ item->on_translate = EINA_TRUE;
+ _elm_widget_item_part_text_set(item, part, text);
+ item->on_translate = EINA_FALSE;
+}
+
typedef struct _Elm_Widget_Item_Tooltip Elm_Widget_Item_Tooltip;
struct _Elm_Widget_Item_Tooltip
@@ -5716,11 +5746,13 @@ _elm_widget_item_translate(Elm_Widget_Item *item)
#ifdef HAVE_GETTEXT
Elm_Translate_String_Data *ts;
const Eina_List *l;
-
EINA_LIST_FOREACH(item->translate_strings, l, ts)
{
+ if (!ts->string) continue;
const char *s = dgettext(ts->domain, ts->string);
+ item->on_translate = EINA_TRUE;
_elm_widget_item_part_text_set(item, ts->id, s);
+ item->on_translate = EINA_FALSE;
}
#endif
}
diff --git a/src/lib/elm_widget.h b/src/lib/elm_widget.h
index 86f7435..71d6c1d 100644
--- a/src/lib/elm_widget.h
+++ b/src/lib/elm_widget.h
@@ -765,6 +765,7 @@ EAPI void
_elm_widget_item_del_pre_hook_set(Elm_Widget_Item *item, E
EAPI void
_elm_widget_item_domain_translatable_part_text_set(Elm_Widget_Item *item, const
char *part, const char *domain, const char *label);
EAPI const char * _elm_widget_item_translatable_part_text_get(const
Elm_Widget_Item *item, const char *part);
EAPI void _elm_widget_item_translate(Elm_Widget_Item *item);
+EAPI void
_elm_widget_item_domain_part_text_translatable_set(Elm_Widget_Item *item, const
char *part, const char *domain, Eina_Bool translatable);
/**
* Function to operate on a given widget's scrollabe children when necessary.
--
------------------------------------------------------------------------------
Try New Relic Now & We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service
that delivers powerful full stack analytics. Optimize and monitor your
browser, app, & servers with just a few lines of code. Try New Relic
and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_apr