remove eina_pure and eina_nonnull because really.. they screw up
[framework/uifw/elementary.git] / src / lib / elm_button.h
1 /**
2  * @defgroup Button Button
3  *
4  * @image html img/widget/button/preview-00.png
5  * @image latex img/widget/button/preview-00.eps
6  * @image html img/widget/button/preview-01.png
7  * @image latex img/widget/button/preview-01.eps
8  * @image html img/widget/button/preview-02.png
9  * @image latex img/widget/button/preview-02.eps
10  *
11  * This is a push-button. Press it and run some function. It can contain
12  * a simple label and icon object and it also has an autorepeat feature.
13  *
14  * This widgets emits the following signals:
15  * @li "clicked": the user clicked the button (press/release).
16  * @li "repeated": the user pressed the button without releasing it.
17  * @li "pressed": button was pressed.
18  * @li "unpressed": button was released after being pressed.
19  * In all three cases, the @c event parameter of the callback will be
20  * @c NULL.
21  *
22  * Also, defined in the default theme, the button has the following styles
23  * available:
24  * @li default: a normal button.
25  * @li anchor: Like default, but the button fades away when the mouse is not
26  * over it, leaving only the text or icon.
27  * @li hoversel_vertical: Internally used by @ref Hoversel to give a
28  * continuous look across its options.
29  * @li hoversel_vertical_entry: Another internal for @ref Hoversel.
30  *
31  * Default contents parts of the button widget that you can use for are:
32  * @li "icon" - An icon of the button
33  *
34  * Default text parts of the button widget that you can use for are:
35  * @li "default" - Label of the button
36  *
37  * Follow through a complete example @ref button_example_01 "here".
38  * @{
39  */
40
41 /**
42  * Add a new button to the parent's canvas
43  *
44  * @param parent The parent object
45  * @return The new object or NULL if it cannot be created
46  */
47 EAPI Evas_Object                 *elm_button_add(Evas_Object *parent);
48
49 /**
50  * Turn on/off the autorepeat event generated when the button is kept pressed
51  *
52  * When off, no autorepeat is performed and buttons emit a normal @c clicked
53  * signal when they are clicked.
54  *
55  * When on, keeping a button pressed will continuously emit a @c repeated
56  * signal until the button is released. The time it takes until it starts
57  * emitting the signal is given by
58  * elm_button_autorepeat_initial_timeout_set(), and the time between each
59  * new emission by elm_button_autorepeat_gap_timeout_set().
60  *
61  * @param obj The button object
62  * @param on  A bool to turn on/off the event
63  */
64 EAPI void                         elm_button_autorepeat_set(Evas_Object *obj, Eina_Bool on);
65
66 /**
67  * Get whether the autorepeat feature is enabled
68  *
69  * @param obj The button object
70  * @return EINA_TRUE if autorepeat is on, EINA_FALSE otherwise
71  *
72  * @see elm_button_autorepeat_set()
73  */
74 EAPI Eina_Bool                    elm_button_autorepeat_get(const Evas_Object *obj);
75
76 /**
77  * Set the initial timeout before the autorepeat event is generated
78  *
79  * Sets the timeout, in seconds, since the button is pressed until the
80  * first @c repeated signal is emitted. If @p t is 0.0 or less, there
81  * won't be any delay and the even will be fired the moment the button is
82  * pressed.
83  *
84  * @param obj The button object
85  * @param t   Timeout in seconds
86  *
87  * @see elm_button_autorepeat_set()
88  * @see elm_button_autorepeat_gap_timeout_set()
89  */
90 EAPI void                         elm_button_autorepeat_initial_timeout_set(Evas_Object *obj, double t);
91
92 /**
93  * Get the initial timeout before the autorepeat event is generated
94  *
95  * @param obj The button object
96  * @return Timeout in seconds
97  *
98  * @see elm_button_autorepeat_initial_timeout_set()
99  */
100 EAPI double                       elm_button_autorepeat_initial_timeout_get(const Evas_Object *obj);
101
102 /**
103  * Set the interval between each generated autorepeat event
104  *
105  * After the first @c repeated event is fired, all subsequent ones will
106  * follow after a delay of @p t seconds for each.
107  *
108  * @param obj The button object
109  * @param t   Interval in seconds
110  *
111  * @see elm_button_autorepeat_initial_timeout_set()
112  */
113 EAPI void                         elm_button_autorepeat_gap_timeout_set(Evas_Object *obj, double t);
114
115 /**
116  * Get the interval between each generated autorepeat event
117  *
118  * @param obj The button object
119  * @return Interval in seconds
120  */
121 EAPI double                       elm_button_autorepeat_gap_timeout_get(const Evas_Object *obj);
122
123 /**
124  * @}
125  */