Custom elm/button
This code snippet shows how to create custom elm buttons, overriding default ones. It enables you to create your own buttons, using external graphics and defining actions (e.g. press, click).
//button definition in separate my_button.edc file
images {
image: "btn_normal.png" COMP;
image: "btn_pressed.png" COMP;
}
externals.external: "elm";
collections
{
group
{
name: "elm/button/base/my_button";
parts
{
part
{
name: "elm.swallow.content";
type: RECT;
mouse_events: 1;
repeat_events: 1;
description {
state: "default" 0.0;
visible: 1;
color: 0 0 0 0;
rel1.relative: 0.0 0.0;
rel2.relative: 1.0 1.0;
align: 0.5 0.5;
}
}
part
{
name: "icon";
type: IMAGE;
mouse_events: 1;
repeat_events: 1;
description
{
state: "default" 0;
visible: 1;
rel1.relative: 0.0 0.0;
rel2.relative: 1.0 1.0;
aspect_preference: SOURCE;
image {
normal: "btn_normal.png";
}
}
description
{
state: "pressed" 0;
inherit: "default" 0.0;
image {
normal: "btn_pressed.png";
}
}
}
}
programs
{
program
{
name: "button,pressed";
signal: "mouse,down,1";
source: "elm.swallow.content";
action: STATE_SET "pressed" 0;
target: "icon";
}
program
{
name: "button,unpressed";
signal: "mouse,up,1";
source: "elm.swallow.content";
action: STATE_SET "default" 0;
target: "icon";
}
}
}
}
//using your custom button in main .edc file
part { name: "my_button";
type: EXTERNAL;
source: "elm/button";
description { state: "default" 0;
rel1 {
relative: 0.2 0.2;
}
rel2 {
relative: 0.8 0.3;
}
params {
string: "style" "my_button";
}
}
}
// adding custom button to resources in C code
elm_layout_file_set(ad->layout, edj_path, GRP_MAIN);
app_get_resource("edje/my_button.edj", theme_blue_edj_path, (int) PATH_MAX);