Ui layout: support markup for efl_part()

Also implement markup_set/get for:
  - Efl.Ui.Frame
  - Efl.Ui.Slider

Users may choose between text_set/get and markup_set/get, depending on
whether they want to escape their text or not.
This commit is contained in:
Daniel Hirt 2017-09-28 10:27:32 +03:00
parent 3642b3ae67
commit deca3c947f
11 changed files with 89 additions and 11 deletions

View File

@ -1,4 +1,5 @@
class Efl.Ui.Button (Efl.Ui.Layout, Efl.Ui.Clickable, Efl.Ui.Autorepeat, Efl.Text,
class Efl.Ui.Button (Efl.Ui.Layout, Efl.Ui.Clickable, Efl.Ui.Autorepeat,
Efl.Text, Efl.Text.Markup,
Elm.Interface.Atspi_Widget_Action, Efl.Ui.Translatable)
{
[[Push-button widget

View File

@ -257,6 +257,7 @@ _efl_ui_frame_class_constructor(Efl_Class *klass)
}
ELM_PART_TEXT_DEFAULT_IMPLEMENT(efl_ui_frame, Efl_Ui_Frame_Data)
ELM_PART_MARKUP_DEFAULT_IMPLEMENT(efl_ui_frame, Efl_Ui_Frame_Data)
/* Internal EO APIs and hidden overrides */

View File

@ -1,4 +1,4 @@
class Efl.Ui.Frame (Efl.Ui.Layout, Efl.Ui.Clickable, Efl.Text,
class Efl.Ui.Frame (Efl.Ui.Layout, Efl.Ui.Clickable, Efl.Text, Efl.Text.Markup,
Efl.Ui.Translatable)
{
[[Frame widget
@ -62,6 +62,7 @@ class Efl.Ui.Frame (Efl.Ui.Layout, Efl.Ui.Clickable, Efl.Text,
Elm.Widget.focus_next;
Elm.Widget.focus_direction_manager_is;
Efl.Text.text { get; set; }
Efl.Text.Markup.markup { get; set; }
Efl.Ui.Translatable.translatable_text { get; set; }
}
}

View File

@ -1225,7 +1225,7 @@ _efl_ui_layout_efl_container_content_count(Eo *eo_obj EINA_UNUSED, Efl_Ui_Layout
}
static Eina_Bool
_efl_ui_layout_text_set(Eo *obj, Efl_Ui_Layout_Data *sd, const char *part, const char *text)
_efl_ui_layout_text_generic_set(Eo *obj, Efl_Ui_Layout_Data *sd, const char *part, const char *text, Eina_Bool is_markup)
{
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
@ -1255,9 +1255,18 @@ _efl_ui_layout_text_set(Eo *obj, Efl_Ui_Layout_Data *sd, const char *part, const
if (!text) return EINA_TRUE;
if (!edje_object_part_text_escaped_set
if (is_markup)
{
if (!edje_object_part_text_escaped_set
(wd->resize_obj, part, text))
return EINA_FALSE;
return EINA_FALSE;
}
else
{
if (!edje_object_part_text_unescaped_set
(wd->resize_obj, part, text))
return EINA_FALSE;
}
if (!sub_d)
{
@ -1296,12 +1305,32 @@ _efl_ui_layout_text_set(Eo *obj, Efl_Ui_Layout_Data *sd, const char *part, const
return EINA_TRUE;
}
static Eina_Bool
_efl_ui_layout_text_set(Eo *obj, Efl_Ui_Layout_Data *sd, const char *part, const char *text)
{
return _efl_ui_layout_text_generic_set(obj, sd, part, text, EINA_FALSE);
}
static const char*
_efl_ui_layout_text_get(Eo *obj, Efl_Ui_Layout_Data *sd EINA_UNUSED, const char *part)
{
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
return edje_object_part_text_get(wd->resize_obj, part);
return efl_text_get(efl_part(wd->resize_obj, part));
}
static const char*
_efl_ui_layout_text_markup_get(Eo *obj, Efl_Ui_Layout_Data *sd EINA_UNUSED, const char *part)
{
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
return efl_text_markup_get(efl_part(wd->resize_obj, part));
}
static Eina_Bool
_efl_ui_layout_text_markup_set(Eo *obj, Efl_Ui_Layout_Data *sd, const char *part, const char *text)
{
return _efl_ui_layout_text_generic_set(obj, sd, part, text, EINA_TRUE);
}
static void
@ -2564,6 +2593,8 @@ ELM_PART_OVERRIDE_CONTENT_UNSET_FULL(efl_ui_layout_part_content, efl_ui_layout,
/* Efl.Ui.Layout.Part_Text */
ELM_PART_OVERRIDE_TEXT_GET_FULL(efl_ui_layout_part_text, efl_ui_layout, EFL_UI_LAYOUT, Efl_Ui_Layout_Data)
ELM_PART_OVERRIDE_TEXT_SET_FULL(efl_ui_layout_part_text, efl_ui_layout, EFL_UI_LAYOUT, Efl_Ui_Layout_Data)
ELM_PART_OVERRIDE_TEXT_MARKUP_GET_FULL(efl_ui_layout_part_text, efl_ui_layout, EFL_UI_LAYOUT, Efl_Ui_Layout_Data)
ELM_PART_OVERRIDE_TEXT_MARKUP_SET_FULL(efl_ui_layout_part_text, efl_ui_layout, EFL_UI_LAYOUT, Efl_Ui_Layout_Data)
EOLIAN static const char *
_efl_ui_layout_part_text_efl_ui_translatable_translatable_text_get(Eo *obj, void *_pd EINA_UNUSED, const char **domain)
@ -2585,6 +2616,8 @@ ELM_PART_OVERRIDE_CONTENT_SET_FULL(efl_ui_layout_part_legacy, efl_ui_layout, EFL
ELM_PART_OVERRIDE_CONTENT_UNSET_FULL(efl_ui_layout_part_legacy, efl_ui_layout, EFL_UI_LAYOUT, Efl_Ui_Layout_Data)
ELM_PART_OVERRIDE_TEXT_GET_FULL(efl_ui_layout_part_legacy, efl_ui_layout, EFL_UI_LAYOUT, Efl_Ui_Layout_Data)
ELM_PART_OVERRIDE_TEXT_SET_FULL(efl_ui_layout_part_legacy, efl_ui_layout, EFL_UI_LAYOUT, Efl_Ui_Layout_Data)
ELM_PART_OVERRIDE_TEXT_MARKUP_GET_FULL(efl_ui_layout_part_legacy, efl_ui_layout, EFL_UI_LAYOUT, Efl_Ui_Layout_Data)
ELM_PART_OVERRIDE_TEXT_MARKUP_SET_FULL(efl_ui_layout_part_legacy, efl_ui_layout, EFL_UI_LAYOUT, Efl_Ui_Layout_Data)
EOLIAN static const char *
_efl_ui_layout_part_legacy_efl_ui_translatable_translatable_text_get(Eo *obj, void *_pd EINA_UNUSED, const char **domain)

View File

@ -1,4 +1,5 @@
class Efl.Ui.Layout.Part_Legacy (Efl.Ui.Layout.Part, Efl.Container, Efl.Text,
Efl.Text.Markup,
Efl.Ui.Translatable)
{
[[Elementary layout internal part class]]
@ -7,6 +8,7 @@ class Efl.Ui.Layout.Part_Legacy (Efl.Ui.Layout.Part, Efl.Container, Efl.Text,
Efl.Container.content { get; set; }
Efl.Container.content_unset;
Efl.Text.text { set; get; }
Efl.Text.Markup.markup { get; set; }
Efl.Ui.Translatable.translatable_text { get; set; }
}
}

View File

@ -1,10 +1,11 @@
class Efl.Ui.Layout.Part_Text (Efl.Ui.Layout.Part, Efl.Text,
class Efl.Ui.Layout.Part_Text (Efl.Ui.Layout.Part, Efl.Text, Efl.Text.Markup,
Efl.Ui.Translatable)
{
[[Elementary layout internal part class]]
data: null;
implements {
Efl.Text.text { set; get; }
Efl.Text.Markup.markup { get; set; }
Efl.Ui.Translatable.translatable_text { get; set; }
}
}

View File

@ -1491,6 +1491,7 @@ _efl_ui_slider_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UN
/* Standard widget overrides */
ELM_PART_TEXT_DEFAULT_IMPLEMENT(efl_ui_slider, Efl_Ui_Slider_Data)
ELM_PART_MARKUP_DEFAULT_IMPLEMENT(efl_ui_slider, Efl_Ui_Slider_Data)
static void
_slider_span_size_set(Eo *obj, Efl_Ui_Slider_Data *sd, int size)

View File

@ -2,8 +2,8 @@ type slider_func_type: __undefined_type; [[Elementary slider function type]]
type slider_freefunc_type: __undefined_type; [[Elementary slider free function type]]
class Efl.Ui.Slider (Efl.Ui.Layout, Efl.Ui.Range, Efl.Ui.Direction,
Efl.Access.Value, Efl.Text, Efl.Ui.Translatable,
Elm.Interface.Atspi_Widget_Action)
Efl.Access.Value, Efl.Text, Efl.Text.Markup,
Efl.Ui.Translatable, Elm.Interface.Atspi_Widget_Action)
{
[[Elementary slider class]]
legacy_prefix: elm_slider;
@ -130,6 +130,7 @@ class Efl.Ui.Slider (Efl.Ui.Layout, Efl.Ui.Range, Efl.Ui.Direction,
Efl.Access.Value.increment { get; }
Elm.Interface.Atspi_Widget_Action.elm_actions { get; }
Efl.Text.text { get; set; }
Efl.Text.Markup.markup { get; set; }
Efl.Ui.Translatable.translatable_text { get; set; }
}
events {

View File

@ -5,6 +5,6 @@ class Elm.Entry.Part (Efl.Ui.Layout.Part_Legacy)
implements {
Efl.Container.content { set; }
Efl.Container.content_unset;
Efl.Text.text { set; get; }
Efl.Text.text { get; set; }
}
}

View File

@ -342,7 +342,7 @@ _elm_label_text_set(Eo *obj, Elm_Label_Data *sd, const char *part, const char *l
if (!label) label = "";
_label_format_set(wd->resize_obj, sd->format);
efl_text_set(efl_part(efl_super(obj, MY_CLASS), part), label);
efl_text_markup_set(efl_part(efl_super(obj, MY_CLASS), part), label);
if (int_ret)
{

View File

@ -125,6 +125,25 @@ _ ## full ## _efl_text_text_get(Eo *obj, void *_pd EINA_UNUSED) \
ELM_PART_RETURN_VAL(_ ## type ## _text_get(pd->obj, sd, pd->part)); \
}
#define ELM_PART_OVERRIDE_TEXT_MARKUP_GET_FULL(full, type, TYPE, typedata) \
EOLIAN static const char *\
_ ## full ## _efl_text_markup_markup_get(Eo *obj, void *_pd EINA_UNUSED) \
{ \
Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS); \
typedata *sd = efl_data_scope_get(pd->obj, TYPE ## _CLASS); \
ELM_PART_RETURN_VAL(_ ## type ## _text_markup_get(pd->obj, sd, pd->part)); \
}
#define ELM_PART_OVERRIDE_TEXT_MARKUP_SET_FULL(full, type, TYPE, typedata) \
EOLIAN static void \
_ ## full ## _efl_text_markup_markup_set(Eo *obj, void *_pd EINA_UNUSED, const char *markup) \
{ \
Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS); \
typedata *sd = efl_data_scope_get(pd->obj, TYPE ## _CLASS); \
_ ## type ## _text_markup_set(pd->obj, sd, pd->part, markup); \
ELM_PART_RETURN_VOID; \
}
#define ELM_PART_OVERRIDE_CONTENT_SET(type, TYPE, typedata) \
ELM_PART_OVERRIDE_CONTENT_SET_FULL(type ## _part, type, TYPE, typedata)
@ -140,6 +159,12 @@ _ ## full ## _efl_text_text_get(Eo *obj, void *_pd EINA_UNUSED) \
#define ELM_PART_OVERRIDE_TEXT_GET(type, TYPE, typedata) \
ELM_PART_OVERRIDE_TEXT_GET_FULL(type ## _part, type, TYPE, typedata)
#define ELM_PART_OVERRIDE_MARKUP_SET(type, TYPE, typedata) \
ELM_PART_OVERRIDE_TEXT_MARKUP_SET_FULL(type ## _part, type, TYPE, typedata)
#define ELM_PART_OVERRIDE_MARKUP_GET(type, TYPE, typedata) \
ELM_PART_OVERRIDE_TEXT_MARKUP_GET_FULL(type ## _part, type, TYPE, typedata)
#define ELM_PART_TEXT_DEFAULT_IMPLEMENT(type, Type) \
EOLIAN static void \
_ ## type ## _efl_text_text_set(Eo *obj, Type *pd EINA_UNUSED, const char *text) \
@ -162,4 +187,16 @@ _ ## type ## _efl_ui_translatable_translatable_text_get(Eo *obj, Type *pd EINA_U
return efl_ui_translatable_text_get(efl_part(efl_super(obj, MY_CLASS), "elm.text"), domain); \
}
#define ELM_PART_MARKUP_DEFAULT_IMPLEMENT(type, Type) \
EOLIAN static const char * \
_ ## type ## _efl_text_markup_markup_get(Eo *obj, Type *pd EINA_UNUSED) \
{ \
return efl_text_markup_get(efl_part(efl_super(obj, MY_CLASS), "elm.text")); \
} \
EOLIAN static void \
_ ## type ## _efl_text_markup_markup_set(Eo *obj, Type *pd EINA_UNUSED, const char *markup) \
{ \
return efl_text_markup_set(efl_part(efl_super(obj, MY_CLASS), "elm.text"), markup); \
} \
#endif