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);

Responses

0 Replies