www-content/pages/program_guide/widgets/button.txt

143 lines
4.7 KiB
Plaintext

~~Title: Button Container PG~~
{{page>widgets_index}}
----
===== Button Widgets =====
{{ :widgets_button_tree.png }}{{ :widgets_button.png }}
The Elementary button widget is a simple push button. It is composed of a
label icon and an icon object and has autorepeat feature.
=== Table of Contents ===
* [[#Adding_a_Button|Adding a Button]]
* [[#Adding_an_Icon_Inside_a_Button|Adding an Icon Inside a Button]]
* [[#Adding_Text_Inside_a_Button|Adding Text Inside a Button]]
* [[#Using_Button_Style|Using Button Style]]
* [[#Using_Button_Callbacks|Using Button Callbacks]]
* [[#Using_Autorepeat_Feature|Using Autorepeat Feature]]
=== Related Info ===
* [[https://build.enlightenment.org/job/nightly_elm_gcc_x86_64/lastSuccessfulBuild/artifact/doc/html/group__Button.html|Button Widget API]]
* [[/tutorial/basic/button|Basic Button Tutorial]]
^Button Examples^^
|[[https://build.enlightenment.org/job/nightly_elm_gcc_x86_64/lastSuccessfulBuild/artifact/doc/html/button_example_00.html|Hello, Button!]]|[[https://build.enlightenment.org/job/nightly_elm_gcc_x86_64/lastSuccessfulBuild/artifact/doc/html/button_example_01.html|Complete Example]]|
==== Adding a Button ====
<code c>
//Creating a button
Evas_Object *button = elm_button_add(parent);
</code>
==== Adding an Icon Inside a Button ====
The icon can be updated with ''elm_object_part_content_set()'' function with the
"icon" part name.
<code c>
Evas_Object *ic;
ic = elm_icon_add(button);
elm_image_file_set(ic, "icon.png", NULL);
elm_object_part_content_set(button, "icon", ic);
</code>
==== Adding Text Inside a Button ====
The label can be modified using the ''elm_object_text_set()'' function.
<code c>
elm_object_text_set(button, "Click me!");
</code>
==== Using Button Style ====
Also, defined in the default theme, the button has the following styles
available:
* ''default'': a normal button.
* ''anchor'': Like default, but the button fades away when the mouse is not over it, leaving only the text or icon.
* ''hoversel_vertical'': Internally used by Hoversel to give a continuous look across its options.
* ''hoversel_vertical_entry'': Another internal for Hoversel.
* ''naviframe'': Internally used by Naviframe for its back button.
* ''colorselector'': Internally used by Colorselector for its left and right buttons.
To change the style of the button, we call the ''elm_object_style_set()'' function
on our button object.
<code c>
elm_object_style_set(button,"naviframe");
</code>
==== Using Button Callbacks ====
Button emits the following signals:
* ''"clicked"'': the user clicked the button (press/release).
* ''"repeated"'': the user pressed the button without releasing it.
* ''"pressed"'': button was pressed.
* ''"unpressed"'': button was released after being pressed.
* ''"focused"'': When the button has received focus. (since 1.8)
* ''"unfocused"'': When the button has lost focus. (since 1.8) In all cases, the event parameter of the callback will be NULL.
For all these signals the ''event_info'' parameter returned in the callback is
NULL.
This is an example to register and define callback function called by the
clicked signal.
<code c>
evas_object_smart_callback_add(button, "clicked", _clicked_cb, data);
// Callback function for the "clicked" signal
// This callback is called when the button is clicked by the user
static void
_clicked_cb (void *data, Evas_Object *obj, void *event_info)
{
printf("Button clicked\n");
}
</code>
==== Using Autorepeat Feature ====
The autorepeat feature (enabled by default) consists of calling the "repeated"
signal when the user keeps the button pressed. This feature can be disabled
with the ''elm_button_autorepeat_set()'' function. The autorepeat is configured
with
* ''elm_button_autorepeat_initial_timeout_set()'': to set the initial timeout before the autorepeat event is generated
* ''elm_button_autorepeat_gap_timeout_set()'': to set the interval between two autorepeat events
Disable the autorepeat feature:
<code c>
elm_button_autorepeat_set(button, EINA_FALSE);
</code>
Enable the autorepeat feature (enabled by default):
<code c>
elm_button_autorepeat_set(button, EINA_TRUE);
</code>
Set the initial timeout to five seconds:
<code c>
elm_button_autorepeat_initial_timeout_set(button, 5.0);
</code>
Set the gap between two signals to 0.5 seconds:
<code c>
elm_button_autorepeat_gap_timeout_set(button, 0.5);
</code>
\\
^Button Examples^^
|[[https://build.enlightenment.org/job/nightly_elm_gcc_x86_64/lastSuccessfulBuild/artifact/doc/html/button_example_00.html|Hello, Button!]]|[[https://build.enlightenment.org/job/nightly_elm_gcc_x86_64/lastSuccessfulBuild/artifact/doc/html/button_example_01.html|Complete Example]]|
\\
----
{{page>widgets_index}}