Frame example

In this example we are going to create 4 Frames with different styles and add a rectangle of different color in each.

We start we the usual setup code:

//Compile with:
//gcc -o frame_example_01 frame_example_01.c -g `pkg-config --cflags --libs elementary`

#include <Elementary.h>

EAPI_MAIN int
elm_main(int argc, char **argv)
{
   Evas_Object *win, *bg;
   Evas_Object *f1, *r1, *f2, *r2, *f3, *r3, *f4, *r4;

   win = elm_win_add(NULL, "frame", ELM_WIN_BASIC);
   elm_win_title_set(win, "Frame");
   elm_win_autodel_set(win, EINA_TRUE);
   elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);

   bg = elm_bg_add(win);
   evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
   elm_win_resize_object_add(win, bg);
   evas_object_show(bg);

And then create one rectangle:

   r1 = evas_object_rectangle_add(evas_object_evas_get(win));
   evas_object_color_set(r1, 255, 0, 0, 255);
   evas_object_show(r1);

To add it in our first frame, which since it doesn't have it's style specifically set uses the default style:

   f1= elm_frame_add(win);
   elm_object_content_set(f1, r1);
   elm_object_text_set(f1, "Default frame");
   evas_object_resize(f1, 100, 100);
   evas_object_move(f1, 25, 25);
   evas_object_show(f1);

And then create another rectangle:

   r2 = evas_object_rectangle_add(evas_object_evas_get(win));
   evas_object_color_set(r2, 0, 255, 0, 255);
   evas_object_show(r2);

To add it in our second frame, which uses the "pad_small" style, note that even tough we are setting a text for this frame it won't be show, only the default style shows the Frame's title:

   f2 = elm_frame_add(win);
   elm_object_content_set(f2, r2);
   elm_object_text_set(f2, "Padding frame");
   evas_object_resize(f2, 100, 100);
   evas_object_move(f2, 150, 25);
   elm_object_style_set(f2, "pad_small");
   evas_object_show(f2);

Note:
The "pad_small", "pad_medium", "pad_large" and "pad_huge" styles are very similar, their only difference is the size of the empty area around the content of the frame.

And then create yet another rectangle:

   r3 = evas_object_rectangle_add(evas_object_evas_get(win));
   evas_object_color_set(r3, 0, 0, 255, 255);
   evas_object_show(r3);

To add it in our third frame, which uses the "outdent_top" style, note that even tough we are setting a text for this frame it won't be show, only the default style shows the Frame's title:

   f3 = elm_frame_add(win);
   elm_object_content_set(f3, r3);
   elm_object_text_set(f3, "Top outdent frame");
   evas_object_resize(f3, 100, 100);
   evas_object_move(f3, 25, 150);
   elm_object_style_set(f3, "outdent_top");
   evas_object_show(f3);

And then create one last rectangle:

   r4 = evas_object_rectangle_add(evas_object_evas_get(win));
   evas_object_color_set(r4, 0, 0, 0, 255);
   evas_object_show(r4);

To add it in our fourth and final frame, which uses the "outdent_bottom" style, note that even tough we are setting a text for this frame it won't be show, only the default style shows the Frame's title:

   f4 = elm_frame_add(win);
   elm_object_content_set(f4, r4);
   elm_object_text_set(f4, "Bottom outdent frame");
   evas_object_resize(f4, 100, 100);
   evas_object_move(f4, 150, 150);
   elm_object_style_set(f4, "outdent_bottom");
   evas_object_show(f4);

And now we are left with just some more setup code:

   evas_object_resize(win, 275, 275);
   evas_object_show(win);

   elm_run();
   elm_shutdown();

   return 0;
}
ELM_MAIN()

Our example will look like this:

frame_example_01.png