2 * @defgroup Ctxpopup Ctxpopup
4 * @image html img/widget/ctxpopup/preview-00.png
5 * @image latex img/widget/ctxpopup/preview-00.eps
7 * @brief Context popup widget.
9 * A ctxpopup is a widget that, when shown, pops up a list of items.
10 * It automatically chooses an area inside its parent object's view
11 * (set via elm_ctxpopup_add() and elm_ctxpopup_hover_parent_set()) to
12 * optimally fit into it. In the default theme, it will also point an
13 * arrow to it's top left position at the time one shows it. Ctxpopup
14 * items have a label and/or an icon. It is intended for a small
15 * number of items (hence the use of list, not genlist).
17 * @note Ctxpopup is a specialization of @ref Hover.
19 * Signals that you can add callbacks for are:
20 * "dismissed" - the ctxpopup was dismissed
22 * Default content parts of the ctxpopup widget that you can use for are:
23 * @li "default" - A content of the ctxpopup
25 * Default content parts of the ctxpopup items that you can use for are:
26 * @li "icon" - An icon in the title area
28 * Default text parts of the ctxpopup items that you can use for are:
29 * @li "default" - Title label in the title area
31 * Supported elm_object common APIs.
32 * @li elm_object_part_content_set
33 * @li elm_object_part_content_get
34 * @li elm_object_part_content_unset
36 * Supported elm_object_item common APIs.
37 * @li elm_object_item_disabled_set
38 * @li elm_object_item_disabled_get
39 * @li elm_object_item_part_text_set
40 * @li elm_object_item_part_text_get
41 * @li elm_object_item_part_content_set
42 * @li elm_object_item_part_content_get
43 * @li elm_object_item_signal_emit
45 * @ref tutorial_ctxpopup shows the usage of a good deal of the API.
49 /* XXX: Kinda internal, but relevant for the theme: use elm_scroller and not els_scroller. */
53 ELM_CTXPOPUP_DIRECTION_DOWN, /**< ctxpopup show appear below clicked area */
54 ELM_CTXPOPUP_DIRECTION_RIGHT, /**< ctxpopup show appear to the right of the clicked area */
55 ELM_CTXPOPUP_DIRECTION_LEFT, /**< ctxpopup show appear to the left of the clicked area */
56 ELM_CTXPOPUP_DIRECTION_UP, /**< ctxpopup show appear above the clicked area */
57 ELM_CTXPOPUP_DIRECTION_UNKNOWN, /**< ctxpopup does not determine it's direction yet*/
58 } Elm_Ctxpopup_Direction; /**< Direction in which to show the popup */
61 * @brief Add a new Ctxpopup object to the parent.
63 * @param parent Parent object
64 * @return New object or @c NULL, if it cannot be created
68 EAPI Evas_Object *elm_ctxpopup_add(Evas_Object *parent);
71 * @brief Set the Ctxpopup's parent
73 * @param obj The ctxpopup object
74 * @param parent The parent to use
76 * Set the parent object.
78 * @note elm_ctxpopup_add() will automatically call this function
79 * with its @c parent argument.
81 * @see elm_ctxpopup_add()
82 * @see elm_hover_parent_set()
86 EAPI void elm_ctxpopup_hover_parent_set(Evas_Object *obj, Evas_Object *parent);
89 * @brief Get the Ctxpopup's parent
91 * @param obj The ctxpopup object
93 * @see elm_ctxpopup_hover_parent_set() for more information
97 EAPI Evas_Object *elm_ctxpopup_hover_parent_get(const Evas_Object *obj);
100 * @brief Clear all items in the given ctxpopup object.
102 * @param obj Ctxpopup object
106 EAPI void elm_ctxpopup_clear(Evas_Object *obj);
109 * @brief Change the ctxpopup's orientation to horizontal or vertical.
111 * @param obj Ctxpopup object
112 * @param horizontal @c EINA_TRUE for horizontal mode, @c EINA_FALSE for vertical
116 EAPI void elm_ctxpopup_horizontal_set(Evas_Object *obj, Eina_Bool horizontal);
119 * @brief Get the value of current ctxpopup object's orientation.
121 * @param obj Ctxpopup object
122 * @return @c EINA_TRUE for horizontal mode, @c EINA_FALSE for vertical mode (or errors)
124 * @see elm_ctxpopup_horizontal_set()
128 EAPI Eina_Bool elm_ctxpopup_horizontal_get(const Evas_Object *obj);
131 * @brief Add a new item to a ctxpopup object.
133 * @param obj Ctxpopup object
134 * @param icon Icon to be set on new item
135 * @param label The Label of the new item
136 * @param func Convenience function called when item selected
137 * @param data Data passed to @p func
138 * @return A handle to the item added or @c NULL, on errors
140 * @warning Ctxpopup can't hold both an item list and a content at the same
141 * time. When an item is added, any previous content will be removed.
143 * @see elm_object_content_set()
147 EAPI Elm_Object_Item *elm_ctxpopup_item_append(Evas_Object *obj, const char *label, Evas_Object *icon, Evas_Smart_Cb func, const void *data);
150 * @brief Set the direction priority of a ctxpopup.
152 * @param obj Ctxpopup object
153 * @param first 1st priority of direction
154 * @param second 2nd priority of direction
155 * @param third 3th priority of direction
156 * @param fourth 4th priority of direction
158 * This functions gives a chance to user to set the priority of ctxpopup
159 * showing direction. This doesn't guarantee the ctxpopup will appear in the
160 * requested direction.
162 * @see Elm_Ctxpopup_Direction
166 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);
169 * @brief Get the direction priority of a ctxpopup.
171 * @param obj Ctxpopup object
172 * @param first 1st priority of direction to be returned
173 * @param second 2nd priority of direction to be returned
174 * @param third 3th priority of direction to be returned
175 * @param fourth 4th priority of direction to be returned
177 * @see elm_ctxpopup_direction_priority_set() for more information.
181 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);
184 * @brief Get the current direction of a ctxpopup.
186 * @param obj Ctxpopup object
187 * @return current direction of a ctxpopup
189 * @warning Once the ctxpopup showed up, the direction would be determined
193 EAPI Elm_Ctxpopup_Direction elm_ctxpopup_direction_get(const Evas_Object *obj);