From 961fc60e3d9d3ac75dcd77d44d7cf0295fcf1817 Mon Sep 17 00:00:00 2001 From: Daniel Zaoui Date: Sun, 28 Apr 2013 08:41:17 +0300 Subject: [PATCH] Elementary: Ctx Popup header split. --- legacy/elementary/src/lib/elc_ctxpopup.h | 312 +----------------- .../elementary/src/lib/elc_ctxpopup_common.h | 9 + legacy/elementary/src/lib/elc_ctxpopup_eo.h | 171 ++++++++++ .../elementary/src/lib/elc_ctxpopup_legacy.h | 144 ++++++++ 4 files changed, 331 insertions(+), 305 deletions(-) create mode 100644 legacy/elementary/src/lib/elc_ctxpopup_common.h create mode 100644 legacy/elementary/src/lib/elc_ctxpopup_eo.h create mode 100644 legacy/elementary/src/lib/elc_ctxpopup_legacy.h diff --git a/legacy/elementary/src/lib/elc_ctxpopup.h b/legacy/elementary/src/lib/elc_ctxpopup.h index 3e387d3fe3..d4a68b5064 100644 --- a/legacy/elementary/src/lib/elc_ctxpopup.h +++ b/legacy/elementary/src/lib/elc_ctxpopup.h @@ -55,311 +55,13 @@ * @{ */ -#define ELM_OBJ_CTXPOPUP_CLASS elm_obj_ctxpopup_class_get() - -const Eo_Class *elm_obj_ctxpopup_class_get(void) EINA_CONST; - -extern EAPI Eo_Op ELM_OBJ_CTXPOPUP_BASE_ID; - -enum -{ - ELM_OBJ_CTXPOPUP_SUB_ID_HOVER_PARENT_SET, - ELM_OBJ_CTXPOPUP_SUB_ID_HOVER_PARENT_GET, - ELM_OBJ_CTXPOPUP_SUB_ID_CLEAR, - ELM_OBJ_CTXPOPUP_SUB_ID_HORIZONTAL_SET, - ELM_OBJ_CTXPOPUP_SUB_ID_HORIZONTAL_GET, - ELM_OBJ_CTXPOPUP_SUB_ID_ITEM_APPEND, - ELM_OBJ_CTXPOPUP_SUB_ID_DIRECTION_PRIORITY_SET, - ELM_OBJ_CTXPOPUP_SUB_ID_DIRECTION_PRIORITY_GET, - ELM_OBJ_CTXPOPUP_SUB_ID_DIRECTION_GET, - ELM_OBJ_CTXPOPUP_SUB_ID_DISMISS, - ELM_OBJ_CTXPOPUP_SUB_ID_LAST -}; - -#define ELM_OBJ_CTXPOPUP_ID(sub_id) (ELM_OBJ_CTXPOPUP_BASE_ID + sub_id) - - -/** - * @def elm_obj_ctxpopup_hover_parent_set - * @since 1.8 - * - * @brief Set the Ctxpopup's parent - * - * @param[in] parent - * - * @see elm_ctxpopup_hover_parent_set - */ -#define elm_obj_ctxpopup_hover_parent_set(parent) ELM_OBJ_CTXPOPUP_ID(ELM_OBJ_CTXPOPUP_SUB_ID_HOVER_PARENT_SET), EO_TYPECHECK(Evas_Object *, parent) - -/** - * @def elm_obj_ctxpopup_hover_parent_get - * @since 1.8 - * - * @brief Get the Ctxpopup's parent - * - * @param[out] ret - * - * @see elm_ctxpopup_hover_parent_get - */ -#define elm_obj_ctxpopup_hover_parent_get(ret) ELM_OBJ_CTXPOPUP_ID(ELM_OBJ_CTXPOPUP_SUB_ID_HOVER_PARENT_GET), EO_TYPECHECK(Evas_Object **, ret) - -/** - * @def elm_obj_ctxpopup_clear - * @since 1.8 - * - * @brief Clear all items in the given ctxpopup object. - * - * - * @see elm_ctxpopup_clear - */ -#define elm_obj_ctxpopup_clear() ELM_OBJ_CTXPOPUP_ID(ELM_OBJ_CTXPOPUP_SUB_ID_CLEAR) - -/** - * @def elm_obj_ctxpopup_horizontal_set - * @since 1.8 - * - * @brief Change the ctxpopup's orientation to horizontal or vertical. - * - * @param[in] horizontal - * - * @see elm_ctxpopup_horizontal_set - */ -#define elm_obj_ctxpopup_horizontal_set(horizontal) ELM_OBJ_CTXPOPUP_ID(ELM_OBJ_CTXPOPUP_SUB_ID_HORIZONTAL_SET), EO_TYPECHECK(Eina_Bool, horizontal) - -/** - * @def elm_obj_ctxpopup_horizontal_get - * @since 1.8 - * - * @brief Get the value of current ctxpopup object's orientation. - * - * @param[out] ret - * - * @see elm_ctxpopup_horizontal_get - */ -#define elm_obj_ctxpopup_horizontal_get(ret) ELM_OBJ_CTXPOPUP_ID(ELM_OBJ_CTXPOPUP_SUB_ID_HORIZONTAL_GET), EO_TYPECHECK(Eina_Bool *, ret) - -/** - * @def elm_obj_ctxpopup_item_append - * @since 1.8 - * - * @brief Add a new item to a ctxpopup object. - * - * @param[in] label - * @param[in] icon - * @param[in] func - * @param[in] data - * @param[out] ret - * - * @see elm_ctxpopup_item_append - */ -#define elm_obj_ctxpopup_item_append(label, icon, func, data, ret) ELM_OBJ_CTXPOPUP_ID(ELM_OBJ_CTXPOPUP_SUB_ID_ITEM_APPEND), EO_TYPECHECK(const char *, label), EO_TYPECHECK(Evas_Object *, icon), EO_TYPECHECK(Evas_Smart_Cb, func), EO_TYPECHECK(const void *, data), EO_TYPECHECK(Elm_Object_Item **, ret) - -/** - * @def elm_obj_ctxpopup_direction_priority_set - * @since 1.8 - * - * @brief Set the direction priority of a ctxpopup. - * - * @param[in] first - * @param[in] second - * @param[in] third - * @param[in] fourth - * - * @see elm_ctxpopup_direction_priority_set - */ -#define elm_obj_ctxpopup_direction_priority_set(first, second, third, fourth) ELM_OBJ_CTXPOPUP_ID(ELM_OBJ_CTXPOPUP_SUB_ID_DIRECTION_PRIORITY_SET), EO_TYPECHECK(Elm_Ctxpopup_Direction, first), EO_TYPECHECK(Elm_Ctxpopup_Direction, second), EO_TYPECHECK(Elm_Ctxpopup_Direction, third), EO_TYPECHECK(Elm_Ctxpopup_Direction, fourth) - -/** - * @def elm_obj_ctxpopup_direction_priority_get - * @since 1.8 - * - * @brief Get the direction priority of a ctxpopup. - * - * @param[out] first - * @param[out] second - * @param[out] third - * @param[out] fourth - * - * @see elm_ctxpopup_direction_priority_get - */ -#define elm_obj_ctxpopup_direction_priority_get(first, second, third, fourth) ELM_OBJ_CTXPOPUP_ID(ELM_OBJ_CTXPOPUP_SUB_ID_DIRECTION_PRIORITY_GET), EO_TYPECHECK(Elm_Ctxpopup_Direction *, first), EO_TYPECHECK(Elm_Ctxpopup_Direction *, second), EO_TYPECHECK(Elm_Ctxpopup_Direction *, third), EO_TYPECHECK(Elm_Ctxpopup_Direction *, fourth) - -/** - * @def elm_obj_ctxpopup_direction_get - * @since 1.8 - * - * @brief Get the current direction of a ctxpopup. - * - * @param[out] ret - * - * @see elm_ctxpopup_direction_get - */ -#define elm_obj_ctxpopup_direction_get(ret) ELM_OBJ_CTXPOPUP_ID(ELM_OBJ_CTXPOPUP_SUB_ID_DIRECTION_GET), EO_TYPECHECK(Elm_Ctxpopup_Direction *, ret) - -/** - * @def elm_obj_ctxpopup_dismiss - * @since 1.8 - * - * @brief Dismiss a ctxpopup object - * - * - * @see elm_ctxpopup_dismiss - */ -#define elm_obj_ctxpopup_dismiss() ELM_OBJ_CTXPOPUP_ID(ELM_OBJ_CTXPOPUP_SUB_ID_DISMISS) -typedef enum -{ - ELM_CTXPOPUP_DIRECTION_DOWN, /**< ctxpopup show appear below clicked area */ - ELM_CTXPOPUP_DIRECTION_RIGHT, /**< ctxpopup show appear to the right of the clicked area */ - ELM_CTXPOPUP_DIRECTION_LEFT, /**< ctxpopup show appear to the left of the clicked area */ - ELM_CTXPOPUP_DIRECTION_UP, /**< ctxpopup show appear above the clicked area */ - ELM_CTXPOPUP_DIRECTION_UNKNOWN, /**< ctxpopup does not determine it's direction yet*/ -} Elm_Ctxpopup_Direction; /**< Direction in which to show the popup */ - -/** - * @brief Add a new Ctxpopup object to the parent. - * - * @param parent Parent object - * @return New object or @c NULL, if it cannot be created - * - * @ingroup Ctxpopup - */ -EAPI Evas_Object *elm_ctxpopup_add(Evas_Object *parent); - -/** - * @brief Set the Ctxpopup's parent - * - * @param obj The ctxpopup object - * @param parent The parent to use - * - * Set the parent object. - * - * @note elm_ctxpopup_add() will automatically call this function - * with its @c parent argument. - * - * @see elm_ctxpopup_add() - * @see elm_hover_parent_set() - * - * @ingroup Ctxpopup - */ -EAPI void elm_ctxpopup_hover_parent_set(Evas_Object *obj, Evas_Object *parent); - -/** - * @brief Get the Ctxpopup's parent - * - * @param obj The ctxpopup object - * - * @see elm_ctxpopup_hover_parent_set() for more information - * - * @ingroup Ctxpopup - */ -EAPI Evas_Object *elm_ctxpopup_hover_parent_get(const Evas_Object *obj); - -/** - * @brief Clear all items in the given ctxpopup object. - * - * @param obj Ctxpopup object - * - * @ingroup Ctxpopup - */ -EAPI void elm_ctxpopup_clear(Evas_Object *obj); - -/** - * @brief Change the ctxpopup's orientation to horizontal or vertical. - * - * @param obj Ctxpopup object - * @param horizontal @c EINA_TRUE for horizontal mode, @c EINA_FALSE for vertical - * - * @ingroup Ctxpopup - */ -EAPI void elm_ctxpopup_horizontal_set(Evas_Object *obj, Eina_Bool horizontal); - -/** - * @brief Get the value of current ctxpopup object's orientation. - * - * @param obj Ctxpopup object - * @return @c EINA_TRUE for horizontal mode, @c EINA_FALSE for vertical mode (or errors) - * - * @see elm_ctxpopup_horizontal_set() - * - * @ingroup Ctxpopup - */ -EAPI Eina_Bool elm_ctxpopup_horizontal_get(const Evas_Object *obj); - -/** - * @brief Add a new item to a ctxpopup object. - * - * @param obj Ctxpopup object - * @param icon Icon to be set on new item - * @param label The Label of the new item - * @param func Convenience function called when item selected - * @param data Data passed to @p func - * @return A handle to the item added or @c NULL, on errors - * - * @warning Ctxpopup can't hold both an item list and a content at the same - * time. When an item is added, any previous content will be removed. - * - * @see elm_object_content_set() - * - * @ingroup Ctxpopup - */ -EAPI Elm_Object_Item *elm_ctxpopup_item_append(Evas_Object *obj, const char *label, Evas_Object *icon, Evas_Smart_Cb func, const void *data); - -/** - * @brief Set the direction priority of a ctxpopup. - * - * @param obj Ctxpopup object - * @param first 1st priority of direction - * @param second 2nd priority of direction - * @param third 3th priority of direction - * @param fourth 4th priority of direction - * - * This functions gives a chance to user to set the priority of ctxpopup - * showing direction. This doesn't guarantee the ctxpopup will appear in the - * requested direction. - * - * @see Elm_Ctxpopup_Direction - * - * @ingroup Ctxpopup - */ -EAPI void elm_ctxpopup_direction_priority_set(Evas_Object *obj, Elm_Ctxpopup_Direction first, Elm_Ctxpopup_Direction second, Elm_Ctxpopup_Direction third, Elm_Ctxpopup_Direction fourth); - -/** - * @brief Get the direction priority of a ctxpopup. - * - * @param obj Ctxpopup object - * @param first 1st priority of direction to be returned - * @param second 2nd priority of direction to be returned - * @param third 3th priority of direction to be returned - * @param fourth 4th priority of direction to be returned - * - * @see elm_ctxpopup_direction_priority_set() for more information. - * - * @ingroup Ctxpopup - */ -EAPI void elm_ctxpopup_direction_priority_get(Evas_Object *obj, Elm_Ctxpopup_Direction *first, Elm_Ctxpopup_Direction *second, Elm_Ctxpopup_Direction *third, Elm_Ctxpopup_Direction *fourth); - -/** - * @brief Get the current direction of a ctxpopup. - * - * @param obj Ctxpopup object - * @return current direction of a ctxpopup - * - * @warning Once the ctxpopup showed up, the direction would be determined - * - * @ingroup Ctxpopup - */ -EAPI Elm_Ctxpopup_Direction elm_ctxpopup_direction_get(const Evas_Object *obj); - -/** - * @brief Dismiss a ctxpopup object - * - * @param obj The ctxpopup object - * Use this function to simulate clicking outside of the ctxpopup to dismiss it. - * In this way, the ctxpopup will be hidden and the "clicked" signal will be - * emitted. - */ -EAPI void elm_ctxpopup_dismiss(Evas_Object *obj); - +#include "elc_ctxpopup_common.h" +#ifdef EFL_EO_API_SUPPORT +#include "elc_ctxpopup_eo.h" +#endif +#ifndef EFL_NOLEGACY_API_SUPPORT +#include "elc_ctxpopup_legacy.h" +#endif /** * @} */ diff --git a/legacy/elementary/src/lib/elc_ctxpopup_common.h b/legacy/elementary/src/lib/elc_ctxpopup_common.h new file mode 100644 index 0000000000..d4a26fbef1 --- /dev/null +++ b/legacy/elementary/src/lib/elc_ctxpopup_common.h @@ -0,0 +1,9 @@ +typedef enum +{ + ELM_CTXPOPUP_DIRECTION_DOWN, /**< ctxpopup show appear below clicked area */ + ELM_CTXPOPUP_DIRECTION_RIGHT, /**< ctxpopup show appear to the right of the clicked area */ + ELM_CTXPOPUP_DIRECTION_LEFT, /**< ctxpopup show appear to the left of the clicked area */ + ELM_CTXPOPUP_DIRECTION_UP, /**< ctxpopup show appear above the clicked area */ + ELM_CTXPOPUP_DIRECTION_UNKNOWN, /**< ctxpopup does not determine it's direction yet*/ +} Elm_Ctxpopup_Direction; /**< Direction in which to show the popup */ + diff --git a/legacy/elementary/src/lib/elc_ctxpopup_eo.h b/legacy/elementary/src/lib/elc_ctxpopup_eo.h new file mode 100644 index 0000000000..a26d1919f1 --- /dev/null +++ b/legacy/elementary/src/lib/elc_ctxpopup_eo.h @@ -0,0 +1,171 @@ +#define ELM_OBJ_CTXPOPUP_CLASS elm_obj_ctxpopup_class_get() + +const Eo_Class *elm_obj_ctxpopup_class_get(void) EINA_CONST; + +extern EAPI Eo_Op ELM_OBJ_CTXPOPUP_BASE_ID; + +enum +{ + ELM_OBJ_CTXPOPUP_SUB_ID_HOVER_PARENT_SET, + ELM_OBJ_CTXPOPUP_SUB_ID_HOVER_PARENT_GET, + ELM_OBJ_CTXPOPUP_SUB_ID_CLEAR, + ELM_OBJ_CTXPOPUP_SUB_ID_HORIZONTAL_SET, + ELM_OBJ_CTXPOPUP_SUB_ID_HORIZONTAL_GET, + ELM_OBJ_CTXPOPUP_SUB_ID_ITEM_APPEND, + ELM_OBJ_CTXPOPUP_SUB_ID_DIRECTION_PRIORITY_SET, + ELM_OBJ_CTXPOPUP_SUB_ID_DIRECTION_PRIORITY_GET, + ELM_OBJ_CTXPOPUP_SUB_ID_DIRECTION_GET, + ELM_OBJ_CTXPOPUP_SUB_ID_DISMISS, + ELM_OBJ_CTXPOPUP_SUB_ID_LAST +}; + +#define ELM_OBJ_CTXPOPUP_ID(sub_id) (ELM_OBJ_CTXPOPUP_BASE_ID + sub_id) + + +/** + * @def elm_obj_ctxpopup_hover_parent_set + * @since 1.8 + * + * @brief Set the Ctxpopup's parent + * + * @param[in] parent + * + * @see elm_ctxpopup_hover_parent_set + * + * @ingroup Ctxpopup + */ +#define elm_obj_ctxpopup_hover_parent_set(parent) ELM_OBJ_CTXPOPUP_ID(ELM_OBJ_CTXPOPUP_SUB_ID_HOVER_PARENT_SET), EO_TYPECHECK(Evas_Object *, parent) + +/** + * @def elm_obj_ctxpopup_hover_parent_get + * @since 1.8 + * + * @brief Get the Ctxpopup's parent + * + * @param[out] ret + * + * @see elm_ctxpopup_hover_parent_get + * + * @ingroup Ctxpopup + */ +#define elm_obj_ctxpopup_hover_parent_get(ret) ELM_OBJ_CTXPOPUP_ID(ELM_OBJ_CTXPOPUP_SUB_ID_HOVER_PARENT_GET), EO_TYPECHECK(Evas_Object **, ret) + +/** + * @def elm_obj_ctxpopup_clear + * @since 1.8 + * + * @brief Clear all items in the given ctxpopup object. + * + * + * @see elm_ctxpopup_clear + * + * @ingroup Ctxpopup + */ +#define elm_obj_ctxpopup_clear() ELM_OBJ_CTXPOPUP_ID(ELM_OBJ_CTXPOPUP_SUB_ID_CLEAR) + +/** + * @def elm_obj_ctxpopup_horizontal_set + * @since 1.8 + * + * @brief Change the ctxpopup's orientation to horizontal or vertical. + * + * @param[in] horizontal + * + * @see elm_ctxpopup_horizontal_set + * + * @ingroup Ctxpopup + */ +#define elm_obj_ctxpopup_horizontal_set(horizontal) ELM_OBJ_CTXPOPUP_ID(ELM_OBJ_CTXPOPUP_SUB_ID_HORIZONTAL_SET), EO_TYPECHECK(Eina_Bool, horizontal) + +/** + * @def elm_obj_ctxpopup_horizontal_get + * @since 1.8 + * + * @brief Get the value of current ctxpopup object's orientation. + * + * @param[out] ret + * + * @see elm_ctxpopup_horizontal_get + * + * @ingroup Ctxpopup + */ +#define elm_obj_ctxpopup_horizontal_get(ret) ELM_OBJ_CTXPOPUP_ID(ELM_OBJ_CTXPOPUP_SUB_ID_HORIZONTAL_GET), EO_TYPECHECK(Eina_Bool *, ret) + +/** + * @def elm_obj_ctxpopup_item_append + * @since 1.8 + * + * @brief Add a new item to a ctxpopup object. + * + * @param[in] label + * @param[in] icon + * @param[in] func + * @param[in] data + * @param[out] ret + * + * @see elm_ctxpopup_item_append + * + * @ingroup Ctxpopup + */ +#define elm_obj_ctxpopup_item_append(label, icon, func, data, ret) ELM_OBJ_CTXPOPUP_ID(ELM_OBJ_CTXPOPUP_SUB_ID_ITEM_APPEND), EO_TYPECHECK(const char *, label), EO_TYPECHECK(Evas_Object *, icon), EO_TYPECHECK(Evas_Smart_Cb, func), EO_TYPECHECK(const void *, data), EO_TYPECHECK(Elm_Object_Item **, ret) + +/** + * @def elm_obj_ctxpopup_direction_priority_set + * @since 1.8 + * + * @brief Set the direction priority of a ctxpopup. + * + * @param[in] first + * @param[in] second + * @param[in] third + * @param[in] fourth + * + * @see elm_ctxpopup_direction_priority_set + * + * @ingroup Ctxpopup + */ +#define elm_obj_ctxpopup_direction_priority_set(first, second, third, fourth) ELM_OBJ_CTXPOPUP_ID(ELM_OBJ_CTXPOPUP_SUB_ID_DIRECTION_PRIORITY_SET), EO_TYPECHECK(Elm_Ctxpopup_Direction, first), EO_TYPECHECK(Elm_Ctxpopup_Direction, second), EO_TYPECHECK(Elm_Ctxpopup_Direction, third), EO_TYPECHECK(Elm_Ctxpopup_Direction, fourth) + +/** + * @def elm_obj_ctxpopup_direction_priority_get + * @since 1.8 + * + * @brief Get the direction priority of a ctxpopup. + * + * @param[out] first + * @param[out] second + * @param[out] third + * @param[out] fourth + * + * @see elm_ctxpopup_direction_priority_get + * + * @ingroup Ctxpopup + */ +#define elm_obj_ctxpopup_direction_priority_get(first, second, third, fourth) ELM_OBJ_CTXPOPUP_ID(ELM_OBJ_CTXPOPUP_SUB_ID_DIRECTION_PRIORITY_GET), EO_TYPECHECK(Elm_Ctxpopup_Direction *, first), EO_TYPECHECK(Elm_Ctxpopup_Direction *, second), EO_TYPECHECK(Elm_Ctxpopup_Direction *, third), EO_TYPECHECK(Elm_Ctxpopup_Direction *, fourth) + +/** + * @def elm_obj_ctxpopup_direction_get + * @since 1.8 + * + * @brief Get the current direction of a ctxpopup. + * + * @param[out] ret + * + * @see elm_ctxpopup_direction_get + * + * @ingroup Ctxpopup + */ +#define elm_obj_ctxpopup_direction_get(ret) ELM_OBJ_CTXPOPUP_ID(ELM_OBJ_CTXPOPUP_SUB_ID_DIRECTION_GET), EO_TYPECHECK(Elm_Ctxpopup_Direction *, ret) + +/** + * @def elm_obj_ctxpopup_dismiss + * @since 1.8 + * + * @brief Dismiss a ctxpopup object + * + * + * @see elm_ctxpopup_dismiss + * + * @ingroup Ctxpopup + */ +#define elm_obj_ctxpopup_dismiss() ELM_OBJ_CTXPOPUP_ID(ELM_OBJ_CTXPOPUP_SUB_ID_DISMISS) diff --git a/legacy/elementary/src/lib/elc_ctxpopup_legacy.h b/legacy/elementary/src/lib/elc_ctxpopup_legacy.h new file mode 100644 index 0000000000..754182cbc0 --- /dev/null +++ b/legacy/elementary/src/lib/elc_ctxpopup_legacy.h @@ -0,0 +1,144 @@ +/** + * @brief Add a new Ctxpopup object to the parent. + * + * @param parent Parent object + * @return New object or @c NULL, if it cannot be created + * + * @ingroup Ctxpopup + */ +EAPI Evas_Object *elm_ctxpopup_add(Evas_Object *parent); + +/** + * @brief Set the Ctxpopup's parent + * + * @param obj The ctxpopup object + * @param parent The parent to use + * + * Set the parent object. + * + * @note elm_ctxpopup_add() will automatically call this function + * with its @c parent argument. + * + * @see elm_ctxpopup_add() + * @see elm_hover_parent_set() + * + * @ingroup Ctxpopup + */ +EAPI void elm_ctxpopup_hover_parent_set(Evas_Object *obj, Evas_Object *parent); + +/** + * @brief Get the Ctxpopup's parent + * + * @param obj The ctxpopup object + * + * @see elm_ctxpopup_hover_parent_set() for more information + * + * @ingroup Ctxpopup + */ +EAPI Evas_Object *elm_ctxpopup_hover_parent_get(const Evas_Object *obj); + +/** + * @brief Clear all items in the given ctxpopup object. + * + * @param obj Ctxpopup object + * + * @ingroup Ctxpopup + */ +EAPI void elm_ctxpopup_clear(Evas_Object *obj); + +/** + * @brief Change the ctxpopup's orientation to horizontal or vertical. + * + * @param obj Ctxpopup object + * @param horizontal @c EINA_TRUE for horizontal mode, @c EINA_FALSE for vertical + * + * @ingroup Ctxpopup + */ +EAPI void elm_ctxpopup_horizontal_set(Evas_Object *obj, Eina_Bool horizontal); + +/** + * @brief Get the value of current ctxpopup object's orientation. + * + * @param obj Ctxpopup object + * @return @c EINA_TRUE for horizontal mode, @c EINA_FALSE for vertical mode (or errors) + * + * @see elm_ctxpopup_horizontal_set() + * + * @ingroup Ctxpopup + */ +EAPI Eina_Bool elm_ctxpopup_horizontal_get(const Evas_Object *obj); + +/** + * @brief Add a new item to a ctxpopup object. + * + * @param obj Ctxpopup object + * @param icon Icon to be set on new item + * @param label The Label of the new item + * @param func Convenience function called when item selected + * @param data Data passed to @p func + * @return A handle to the item added or @c NULL, on errors + * + * @warning Ctxpopup can't hold both an item list and a content at the same + * time. When an item is added, any previous content will be removed. + * + * @see elm_object_content_set() + * + * @ingroup Ctxpopup + */ +EAPI Elm_Object_Item *elm_ctxpopup_item_append(Evas_Object *obj, const char *label, Evas_Object *icon, Evas_Smart_Cb func, const void *data); + +/** + * @brief Set the direction priority of a ctxpopup. + * + * @param obj Ctxpopup object + * @param first 1st priority of direction + * @param second 2nd priority of direction + * @param third 3th priority of direction + * @param fourth 4th priority of direction + * + * This functions gives a chance to user to set the priority of ctxpopup + * showing direction. This doesn't guarantee the ctxpopup will appear in the + * requested direction. + * + * @see Elm_Ctxpopup_Direction + * + * @ingroup Ctxpopup + */ +EAPI void elm_ctxpopup_direction_priority_set(Evas_Object *obj, Elm_Ctxpopup_Direction first, Elm_Ctxpopup_Direction second, Elm_Ctxpopup_Direction third, Elm_Ctxpopup_Direction fourth); + +/** + * @brief Get the direction priority of a ctxpopup. + * + * @param obj Ctxpopup object + * @param first 1st priority of direction to be returned + * @param second 2nd priority of direction to be returned + * @param third 3th priority of direction to be returned + * @param fourth 4th priority of direction to be returned + * + * @see elm_ctxpopup_direction_priority_set() for more information. + * + * @ingroup Ctxpopup + */ +EAPI void elm_ctxpopup_direction_priority_get(Evas_Object *obj, Elm_Ctxpopup_Direction *first, Elm_Ctxpopup_Direction *second, Elm_Ctxpopup_Direction *third, Elm_Ctxpopup_Direction *fourth); + +/** + * @brief Get the current direction of a ctxpopup. + * + * @param obj Ctxpopup object + * @return current direction of a ctxpopup + * + * @warning Once the ctxpopup showed up, the direction would be determined + * + * @ingroup Ctxpopup + */ +EAPI Elm_Ctxpopup_Direction elm_ctxpopup_direction_get(const Evas_Object *obj); + +/** + * @brief Dismiss a ctxpopup object + * + * @param obj The ctxpopup object + * Use this function to simulate clicking outside of the ctxpopup to dismiss it. + * In this way, the ctxpopup will be hidden and the "clicked" signal will be + * emitted. + */ +EAPI void elm_ctxpopup_dismiss(Evas_Object *obj);