Eolian: Integration of Radio

This commit is contained in:
Daniel Zaoui 2014-03-26 09:50:10 +02:00
parent 59378dd4dd
commit 7705d7c40c
6 changed files with 216 additions and 248 deletions

View File

@ -634,7 +634,9 @@ BUILT_SOURCES = \
elm_prefs.eo.c \
elm_prefs.eo.h \
elm_progressbar.eo.c \
elm_progressbar.eo.h
elm_progressbar.eo.h \
elm_radio.eo.c \
elm_radio.eo.h
EXTRA_DIST += \
elm_widget.eo \
@ -691,7 +693,8 @@ EXTRA_DIST += \
elm_plug.eo \
elc_popup.eo \
elm_prefs.eo \
elm_progressbar.eo
elm_progressbar.eo \
elm_radio.eo
nodist_includesunstable_HEADERS = \
elm_widget.eo.h \
@ -748,5 +751,6 @@ nodist_includesunstable_HEADERS = \
elm_plug.eo.h \
elc_popup.eo.h \
elm_prefs.eo.h \
elm_progressbar.eo.h
elm_progressbar.eo.h \
elm_radio.eo.h

View File

@ -8,8 +8,6 @@
#include "elm_widget_radio.h"
#include "elm_widget_layout.h"
EAPI Eo_Op ELM_OBJ_RADIO_BASE_ID = EO_NOOP;
#define MY_CLASS ELM_OBJ_RADIO_CLASS
#define MY_CLASS_NAME "Elm_Radio"
@ -53,7 +51,7 @@ _state_set(Evas_Object *obj, Eina_Bool state)
}
static void
_state_set_all(Elm_Radio_Smart_Data *sd)
_state_set_all(Elm_Radio_Data *sd)
{
const Eina_List *l;
Eina_Bool disabled = EINA_FALSE;
@ -115,81 +113,65 @@ _icon_signal_emit(Evas_Object *obj)
/* FIXME: replicated from elm_layout just because radio's icon spot
* is elm.swallow.content, not elm.swallow.icon. Fix that whenever we
* can changed the theme API */
static void
_elm_radio_smart_sub_object_del(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
EOLIAN static Eina_Bool
_elm_radio_elm_widget_sub_object_del(Eo *obj, Elm_Radio_Data *_pd EINA_UNUSED, Evas_Object *sobj)
{
Evas_Object *sobj = va_arg(*list, Evas_Object *);
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
if (ret) *ret = EINA_FALSE;
Eina_Bool int_ret = EINA_FALSE;
eo_do_super(obj, MY_CLASS, elm_obj_widget_sub_object_del(sobj, &int_ret));
if(!int_ret) return;
if(!int_ret) return EINA_FALSE;
_icon_signal_emit(obj);
if (ret) *ret = EINA_TRUE;
eo_do(obj, elm_obj_layout_sizing_eval());
return EINA_TRUE;
}
/* FIXME: replicated from elm_layout just because radio's icon spot
* is elm.swallow.content, not elm.swallow.icon. Fix that whenever we
* can changed the theme API */
static void
_elm_radio_smart_content_set(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
EOLIAN static Eina_Bool
_elm_radio_elm_container_content_set(Eo *obj, Elm_Radio_Data *_pd EINA_UNUSED, const char *part, Evas_Object *content)
{
const char *part = va_arg(*list, const char *);
Evas_Object *content = va_arg(*list, Evas_Object *);
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
if (ret) *ret = EINA_FALSE;
Eina_Bool int_ret = EINA_FALSE;
eo_do_super(obj, MY_CLASS, elm_obj_container_content_set(part, content, &int_ret));
if(!int_ret) return;
if(!int_ret) return EINA_FALSE;
_icon_signal_emit(obj);
if (ret) *ret = EINA_TRUE;
eo_do(obj, elm_obj_layout_sizing_eval());
return EINA_TRUE;
}
static void
_elm_radio_smart_event(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
EOLIAN static Eina_Bool
_elm_radio_elm_widget_event(Eo *obj, Elm_Radio_Data *_pd EINA_UNUSED, Evas_Object *src, Evas_Callback_Type type, void *event_info)
{
Evas_Object *src = va_arg(*list, Evas_Object *);
Evas_Callback_Type type = va_arg(*list, Evas_Callback_Type);
Evas_Event_Key_Down *ev = va_arg(*list, void *);
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
if (ret) *ret = EINA_FALSE;
(void) src;
Evas_Event_Key_Down *ev = event_info;
if (elm_widget_disabled_get(obj)) return;
if (type != EVAS_CALLBACK_KEY_DOWN) return;
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
if (elm_widget_disabled_get(obj)) return EINA_FALSE;
if (type != EVAS_CALLBACK_KEY_DOWN) return EINA_FALSE;
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return EINA_FALSE;
if ((strcmp(ev->key, "Return")) &&
(strcmp(ev->key, "KP_Enter")) &&
(strcmp(ev->key, "space")))
return;
return EINA_FALSE;
_activate(obj);
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
if (ret) *ret = EINA_TRUE;
return EINA_TRUE;
}
static void
_elm_radio_smart_theme(Eo *obj, void *_pd, va_list *list)
EOLIAN static Eina_Bool
_elm_radio_elm_widget_theme_apply(Eo *obj, Elm_Radio_Data *sd)
{
Elm_Radio_Smart_Data *sd = _pd;
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
if (ret) *ret = EINA_FALSE;
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
Eina_Bool int_ret = EINA_FALSE;
eo_do_super(obj, MY_CLASS, elm_obj_widget_theme_apply(&int_ret));
if (!int_ret) return;
if (!int_ret) return EINA_FALSE;
if (sd->state) elm_layout_signal_emit(obj, "elm,state,radio,on", "elm");
else elm_layout_signal_emit(obj, "elm,state,radio,off", "elm");
@ -205,28 +187,23 @@ _elm_radio_smart_theme(Eo *obj, void *_pd, va_list *list)
eo_do(obj, elm_obj_layout_sizing_eval());
if (ret) *ret = EINA_TRUE;
return EINA_TRUE;
}
static void
_elm_radio_smart_disable(Eo *obj, void *_pd, va_list *list)
EOLIAN static Eina_Bool
_elm_radio_elm_widget_disable(Eo *obj, Elm_Radio_Data *sd)
{
Elm_Radio_Smart_Data *sd = _pd;
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
if (ret) *ret = EINA_FALSE;
Eina_Bool int_ret = EINA_FALSE;
eo_do_super(obj, MY_CLASS, elm_obj_widget_disable(&int_ret));
if (!int_ret) return;
if (!int_ret) return EINA_FALSE;
if (elm_widget_disabled_get(obj) && sd->state) _state_set(obj, EINA_FALSE);
if (ret) *ret = EINA_TRUE;
return EINA_TRUE;
}
static void
_elm_radio_smart_sizing_eval(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
EOLIAN static void
_elm_radio_elm_layout_sizing_eval(Eo *obj, Elm_Radio_Data *_pd EINA_UNUSED)
{
Evas_Coord minw = -1, minh = -1;
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
@ -270,11 +247,9 @@ _access_state_cb(void *data EINA_UNUSED, Evas_Object *obj)
return strdup(E_("State: Off"));
}
static void
_elm_radio_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
EOLIAN static void
_elm_radio_evas_smart_add(Eo *obj, Elm_Radio_Data *priv)
{
Elm_Radio_Smart_Data *priv = _pd;
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
eo_do_super(obj, MY_CLASS, evas_obj_smart_add());
@ -302,29 +277,25 @@ _elm_radio_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
(_elm_access_info_get(obj), ELM_ACCESS_STATE, _access_state_cb, obj);
}
static void
_elm_radio_smart_del(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
EOLIAN static void
_elm_radio_evas_smart_del(Eo *obj, Elm_Radio_Data *sd)
{
Elm_Radio_Smart_Data *sd = _pd;
sd->group->radios = eina_list_remove(sd->group->radios, obj);
if (!sd->group->radios) free(sd->group);
eo_do_super(obj, MY_CLASS, evas_obj_smart_del());
}
static void
_elm_radio_smart_text_aliases_get(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list)
EOLIAN static const Elm_Layout_Part_Alias_Description*
_elm_radio_elm_layout_text_aliases_get(Eo *obj EINA_UNUSED, Elm_Radio_Data *_pd EINA_UNUSED)
{
const Elm_Layout_Part_Alias_Description **aliases = va_arg(*list, const Elm_Layout_Part_Alias_Description **);
*aliases = _text_aliases;
return _text_aliases;
}
static void
_elm_radio_smart_content_aliases_get(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list)
EOLIAN static const Elm_Layout_Part_Alias_Description*
_elm_radio_elm_layout_content_aliases_get(Eo *obj EINA_UNUSED, Elm_Radio_Data *_pd EINA_UNUSED)
{
const Elm_Layout_Part_Alias_Description **aliases = va_arg(*list, const Elm_Layout_Part_Alias_Description **);
*aliases = _content_aliases;
return _content_aliases;
}
EAPI Evas_Object *
@ -336,8 +307,8 @@ elm_radio_add(Evas_Object *parent)
return obj;
}
static void
_constructor(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
EOLIAN static void
_elm_radio_eo_base_constructor(Eo *obj, Elm_Radio_Data *_pd EINA_UNUSED)
{
eo_do_super(obj, MY_CLASS, eo_constructor());
eo_do(obj,
@ -345,19 +316,9 @@ _constructor(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
evas_obj_smart_callbacks_descriptions_set(_smart_callbacks, NULL));
}
EAPI void
elm_radio_group_add(Evas_Object *obj,
Evas_Object *group)
EOLIAN static void
_elm_radio_group_add(Eo *obj, Elm_Radio_Data *sd, Evas_Object *group)
{
ELM_RADIO_CHECK(obj);
eo_do(obj, elm_obj_radio_group_add(group));
}
static void
_group_add(Eo *obj, void *_pd, va_list *list)
{
Evas_Object *group = va_arg(*list, Evas_Object *);
Elm_Radio_Smart_Data *sd = _pd;
ELM_RADIO_DATA_GET(group, sdg);
if (!sdg)
@ -380,93 +341,38 @@ _group_add(Eo *obj, void *_pd, va_list *list)
else _state_set(obj, EINA_FALSE);
}
EAPI void
elm_radio_state_value_set(Evas_Object *obj,
int value)
EOLIAN static void
_elm_radio_state_value_set(Eo *obj, Elm_Radio_Data *sd, int value)
{
ELM_RADIO_CHECK(obj);
eo_do(obj, elm_obj_radio_state_value_set(value));
}
static void
_state_value_set(Eo *obj, void *_pd, va_list *list)
{
int value = va_arg(*list, int);
Elm_Radio_Smart_Data *sd = _pd;
sd->value = value;
if (sd->value == sd->group->value) _state_set(obj, EINA_TRUE);
else _state_set(obj, EINA_FALSE);
}
EAPI int
elm_radio_state_value_get(const Evas_Object *obj)
EOLIAN static int
_elm_radio_state_value_get(Eo *obj EINA_UNUSED, Elm_Radio_Data *sd)
{
ELM_RADIO_CHECK(obj) 0;
int ret = 0;
eo_do((Eo *) obj, elm_obj_radio_state_value_get(&ret));
return ret;
return sd->value;
}
static void
_state_value_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
EOLIAN static void
_elm_radio_value_set(Eo *obj EINA_UNUSED, Elm_Radio_Data *sd, int value)
{
int *ret = va_arg(*list, int *);
Elm_Radio_Smart_Data *sd = _pd;
*ret = sd->value;
}
EAPI void
elm_radio_value_set(Evas_Object *obj,
int value)
{
ELM_RADIO_CHECK(obj);
eo_do(obj, elm_obj_radio_value_set(value));
}
static void
_value_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
{
int value = va_arg(*list, int);
Elm_Radio_Smart_Data *sd = _pd;
if (value == sd->group->value) return;
sd->group->value = value;
if (sd->group->valuep) *(sd->group->valuep) = sd->group->value;
_state_set_all(sd);
}
EAPI int
elm_radio_value_get(const Evas_Object *obj)
EOLIAN static int
_elm_radio_value_get(Eo *obj EINA_UNUSED, Elm_Radio_Data *sd)
{
ELM_RADIO_CHECK(obj) 0;
int ret = 0;
eo_do((Eo *) obj, elm_obj_radio_value_get(&ret));
return ret;
return sd->group->value;
}
static void
_value_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
EOLIAN static void
_elm_radio_value_pointer_set(Eo *obj EINA_UNUSED, Elm_Radio_Data *sd, int *valuep)
{
int *ret = va_arg(*list, int *);
Elm_Radio_Smart_Data *sd = _pd;
*ret = sd->group->value;
}
EAPI void
elm_radio_value_pointer_set(Evas_Object *obj,
int *valuep)
{
ELM_RADIO_CHECK(obj);
eo_do(obj, elm_obj_radio_value_pointer_set(valuep));
}
static void
_value_pointer_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
{
int *valuep = va_arg(*list, int *);
Elm_Radio_Smart_Data *sd = _pd;
if (valuep)
{
sd->group->valuep = valuep;
@ -479,121 +385,49 @@ _value_pointer_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
else sd->group->valuep = NULL;
}
EAPI Evas_Object *
elm_radio_selected_object_get(Evas_Object *obj)
EOLIAN static Evas_Object*
_elm_radio_selected_object_get(Eo *obj EINA_UNUSED, Elm_Radio_Data *sd)
{
ELM_RADIO_CHECK(obj) NULL;
Evas_Object *ret = NULL;
eo_do(obj, elm_obj_radio_selected_object_get(&ret));
return ret;
}
static void
_selected_object_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
{
Evas_Object **ret = va_arg(*list, Evas_Object **);
Eina_List *l;
Evas_Object *child;
Elm_Radio_Smart_Data *sd = _pd;
EINA_LIST_FOREACH(sd->group->radios, l, child)
{
ELM_RADIO_DATA_GET(child, sdc);
if (sdc->value == sd->group->value)
{
*ret = child;
return;
}
if (sdc->value == sd->group->value) return child;
}
*ret = NULL;
return NULL;
}
static void
_elm_radio_smart_focus_next_manager_is(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list)
EOLIAN static Eina_Bool
_elm_radio_elm_widget_focus_next_manager_is(Eo *obj EINA_UNUSED, Elm_Radio_Data *_pd EINA_UNUSED)
{
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
*ret = EINA_FALSE;
return EINA_FALSE;
}
static void
_elm_radio_smart_focus_direction_manager_is(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list)
EOLIAN static Eina_Bool
_elm_radio_elm_widget_focus_direction_manager_is(Eo *obj EINA_UNUSED, Elm_Radio_Data *_pd EINA_UNUSED)
{
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
*ret = EINA_FALSE;
return EINA_FALSE;
}
static void
_elm_radio_smart_activate(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
EOLIAN static Eina_Bool
_elm_radio_elm_widget_activate(Eo *obj, Elm_Radio_Data *_pd EINA_UNUSED, Elm_Activate act)
{
Elm_Activate act = va_arg(*list, Elm_Activate);
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
if (ret) *ret = EINA_FALSE;
if (elm_widget_disabled_get(obj)) return;
if (act != ELM_ACTIVATE_DEFAULT) return;
if (elm_widget_disabled_get(obj)) return EINA_FALSE;
if (act != ELM_ACTIVATE_DEFAULT) return EINA_FALSE;
_activate(obj);
if (ret) *ret = EINA_TRUE;
return EINA_TRUE;
}
static void
_class_constructor(Eo_Class *klass)
EOLIAN static void
_elm_radio_class_constructor(Eo_Class *klass)
{
const Eo_Op_Func_Description func_desc[] = {
EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_CONSTRUCTOR), _constructor),
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_ADD), _elm_radio_smart_add),
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_DEL), _elm_radio_smart_del),
EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_DISABLE), _elm_radio_smart_disable),
EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_SUB_OBJECT_DEL), _elm_radio_smart_sub_object_del),
EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_THEME_APPLY), _elm_radio_smart_theme),
EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_EVENT), _elm_radio_smart_event),
EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_FOCUS_NEXT_MANAGER_IS), _elm_radio_smart_focus_next_manager_is),
EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_FOCUS_DIRECTION_MANAGER_IS), _elm_radio_smart_focus_direction_manager_is),
EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_ACTIVATE), _elm_radio_smart_activate),
EO_OP_FUNC(ELM_OBJ_CONTAINER_ID(ELM_OBJ_CONTAINER_SUB_ID_CONTENT_SET), _elm_radio_smart_content_set),
EO_OP_FUNC(ELM_OBJ_LAYOUT_ID(ELM_OBJ_LAYOUT_SUB_ID_SIZING_EVAL), _elm_radio_smart_sizing_eval),
EO_OP_FUNC(ELM_OBJ_LAYOUT_ID(ELM_OBJ_LAYOUT_SUB_ID_TEXT_ALIASES_GET), _elm_radio_smart_text_aliases_get),
EO_OP_FUNC(ELM_OBJ_LAYOUT_ID(ELM_OBJ_LAYOUT_SUB_ID_CONTENT_ALIASES_GET), _elm_radio_smart_content_aliases_get),
EO_OP_FUNC(ELM_OBJ_RADIO_ID(ELM_OBJ_RADIO_SUB_ID_GROUP_ADD), _group_add),
EO_OP_FUNC(ELM_OBJ_RADIO_ID(ELM_OBJ_RADIO_SUB_ID_STATE_VALUE_SET), _state_value_set),
EO_OP_FUNC(ELM_OBJ_RADIO_ID(ELM_OBJ_RADIO_SUB_ID_STATE_VALUE_GET), _state_value_get),
EO_OP_FUNC(ELM_OBJ_RADIO_ID(ELM_OBJ_RADIO_SUB_ID_VALUE_SET), _value_set),
EO_OP_FUNC(ELM_OBJ_RADIO_ID(ELM_OBJ_RADIO_SUB_ID_VALUE_GET), _value_get),
EO_OP_FUNC(ELM_OBJ_RADIO_ID(ELM_OBJ_RADIO_SUB_ID_VALUE_POINTER_SET), _value_pointer_set),
EO_OP_FUNC(ELM_OBJ_RADIO_ID(ELM_OBJ_RADIO_SUB_ID_SELECTED_OBJECT_GET), _selected_object_get),
EO_OP_FUNC_SENTINEL
};
eo_class_funcs_set(klass, func_desc);
evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
}
static const Eo_Op_Description op_desc[] = {
EO_OP_DESCRIPTION(ELM_OBJ_RADIO_SUB_ID_GROUP_ADD, "Add this radio to a group of other radio objects."),
EO_OP_DESCRIPTION(ELM_OBJ_RADIO_SUB_ID_STATE_VALUE_SET, "Set the integer value that this radio object represents."),
EO_OP_DESCRIPTION(ELM_OBJ_RADIO_SUB_ID_STATE_VALUE_GET, "Get the integer value that this radio object represents."),
EO_OP_DESCRIPTION(ELM_OBJ_RADIO_SUB_ID_VALUE_SET, "Set the value of the radio group."),
EO_OP_DESCRIPTION(ELM_OBJ_RADIO_SUB_ID_VALUE_GET, "Get the value of the radio group."),
EO_OP_DESCRIPTION(ELM_OBJ_RADIO_SUB_ID_VALUE_POINTER_SET, "Set a convenience pointer to a integer to change when radio group value changes."),
EO_OP_DESCRIPTION(ELM_OBJ_RADIO_SUB_ID_SELECTED_OBJECT_GET, "Get the selected radio object."),
EO_OP_DESCRIPTION_SENTINEL
};
static const Eo_Class_Description class_desc = {
EO_VERSION,
MY_CLASS_NAME,
EO_CLASS_TYPE_REGULAR,
EO_CLASS_DESCRIPTION_OPS(&ELM_OBJ_RADIO_BASE_ID, op_desc, ELM_OBJ_RADIO_SUB_ID_LAST),
NULL,
sizeof(Elm_Radio_Smart_Data),
_class_constructor,
NULL
};
EO_DEFINE_CLASS(elm_obj_radio_class_get, &class_desc, ELM_OBJ_LAYOUT_CLASS, NULL);
#include "elm_radio.eo.c"

View File

@ -0,0 +1,124 @@
class Elm_Radio (Elm_Layout)
{
eo_prefix: elm_obj_radio;
properties {
state_value {
set {
/*@
@brief Set the integer value that this radio object represents
This sets the value of the radio.
@ingroup Radio */
}
get {
/*@
@brief Get the integer value that this radio object represents
@return The value used if this radio object is selected
This gets the value of the radio.
@see elm_radio_value_set()
@ingroup Radio */
}
values {
int value; /*@ The value to use if this radio object is selected */
}
}
value {
set {
/*@
@brief Set the value of the radio group.
This sets the value of the radio group and will also set the value if
pointed to, to the value supplied, but will not call any callbacks.
@ingroup Radio */
}
get {
/*@
@brief Get the value of the radio group
@return The integer state
@ingroup Radio */
}
values {
int value; /*@ The value to use for the group */
}
}
value_pointer {
set {
/*@
@brief Set a convenience pointer to a integer to change when radio group
value changes.
This sets a pointer to a integer, that, in addition to the radio objects
state will also be modified directly. To stop setting the object pointed
to simply use NULL as the @p valuep argument. If valuep is not NULL, then
when this is called, the radio objects state will also be modified to
reflect the value of the integer valuep points to, just like calling
elm_radio_value_set().
@ingroup Radio */
}
values {
int *valuep; /*@ Pointer to the integer to modify */
}
}
selected_object {
get {
/*@
@brief Get the selected radio object.
@return The selected radio object
@ingroup Radio */
return Evas_Object *;
}
}
}
methods {
group_add {
/*@
@brief Add this radio to a group of other radio objects
Radio objects work in groups. Each member should have a different integer
value assigned. In order to have them work as a group, they need to know
about each other. This adds the given radio object to the group of which
the group object indicated is a member.
@ingroup Radio */
params {
@in Evas_Object *group; /*@ Any object whose group the @p obj is to join. */
}
}
}
implements {
class::constructor;
Eo_Base::constructor;
Evas_Smart::add;
Evas_Smart::del;
Elm_Widget::theme_apply;
Elm_Widget::activate;
Elm_Widget::focus_next_manager_is;
Elm_Widget::focus_direction_manager_is;
Elm_Widget::disable;
Elm_Widget::sub_object_del;
Elm_Widget::event;
Elm_Container::content_set;
Elm_Layout::text_aliases::get;
Elm_Layout::content_aliases::get;
Elm_Layout::sizing_eval;
}
events {
changed;
language,changed;
access,changed;
focused;
unfocused;
}
}

View File

@ -1,3 +1,7 @@
#include "elm_radio.eo.h"
#if 0
#define ELM_OBJ_RADIO_CLASS elm_obj_radio_class_get()
const Eo_Class *elm_obj_radio_class_get(void) EINA_CONST;
@ -116,3 +120,5 @@ enum
* @ingroup Radio
*/
#define elm_obj_radio_selected_object_get(ret) ELM_OBJ_RADIO_ID(ELM_OBJ_RADIO_SUB_ID_SELECTED_OBJECT_GET), EO_TYPECHECK(Evas_Object **, ret)
#endif

View File

@ -97,4 +97,4 @@ EAPI void elm_radio_value_pointer_set(Evas_Object *obj,
*
* @ingroup Radio
*/
EAPI Evas_Object *elm_radio_selected_object_get(Evas_Object *obj);
EAPI Evas_Object *elm_radio_selected_object_get(const Evas_Object *obj);

View File

@ -17,7 +17,7 @@
/**
* Base layout smart data extended with radio instance data.
*/
typedef struct _Elm_Radio_Smart_Data Elm_Radio_Smart_Data;
typedef struct _Elm_Radio_Data Elm_Radio_Data;
typedef struct _Group Group;
struct _Group
@ -27,7 +27,7 @@ struct _Group
Eina_List *radios;
};
struct _Elm_Radio_Smart_Data
struct _Elm_Radio_Data
{
int value;
Eina_Bool state;
@ -40,7 +40,7 @@ struct _Elm_Radio_Smart_Data
*/
#define ELM_RADIO_DATA_GET(o, sd) \
Elm_Radio_Smart_Data * sd = eo_data_scope_get(o, ELM_OBJ_RADIO_CLASS)
Elm_Radio_Data * sd = eo_data_scope_get(o, ELM_OBJ_RADIO_CLASS)
#define ELM_RADIO_DATA_GET_OR_RETURN(o, ptr) \
ELM_RADIO_DATA_GET(o, ptr); \