Support
Contribute
Contact
Tracker
Navigation
Personal tools
 

Edje/GroupShow


Simple edje application to display an edje group.

Usage: edje_group_show file.edj GroupName

Compile: gcc `pkg-config --libs --cflags evas ecore ecore-evas edje` edje_group_show.c -o edje_group_show

#include <Evas.h>
#include <Ecore.h>
#include <Ecore_Evas.h>
#include <Edje.h>
#include <stdio.h>

struct app {
        Evas *evas;
        Ecore_Evas *ee;
        Evas_Object *edje;
        Evas_Object *bg;
};

static void
destroy_main_window(Ecore_Evas *ee)
{
        ecore_main_loop_quit();
}

static void
resize_window(Ecore_Evas *ee)
{
        struct app *app;
        Evas_Coord w, h;

        ecore_evas_geometry_get(ee, NULL, NULL, &w, &h);

        app = ecore_evas_data_get(ee, "app");
        evas_object_resize(app->edje, w, h);
        evas_object_resize(app->bg, w, h);
}

int
main(int argc, char **argv)
{
        Evas_Coord w, h, min_w, min_h;
        struct app app;

        /*
         * initialize
         */
        evas_init();
        ecore_init();
        edje_init();
        ecore_evas_init();

        if (argc < 3) {
                fprintf(stderr, "Usage: %s <file> <group>\n", argv[0]);
                return 1;
        }

        /*
         * setup ecore evas
         */
        app.ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 0, 0);
        ecore_evas_title_set(app.ee, argv[2]);
        ecore_evas_name_class_set(app.ee, "Edje Group Show", "Edje");
        ecore_evas_callback_delete_request_set(app.ee, destroy_main_window);
        ecore_evas_callback_resize_set(app.ee, resize_window);
        ecore_evas_show(app.ee);

        /*
         * get evas and setup the edje
         */
        app.evas = ecore_evas_get(app.ee);
        app.edje = edje_object_add(app.evas);

        /* background */
        app.bg = evas_object_rectangle_add(app.evas);
        evas_object_color_set(app.bg, 123, 123, 123, 255);
        evas_object_move(app.bg, 0, 0);
        evas_object_show(app.bg);

        if (!edje_object_file_set(app.edje, argv[1], argv[2]))
        {
                fprintf(stderr, "Error while opening file %s part %s\n",
                                argv[1], argv[2]);
                return 1;
        }

        edje_object_size_min_get(app.edje, &min_w, &min_h);

        w = (min_w < 100) ? 100 : min_w;
        h = (min_h < 100) ? 100 : min_h;

        ecore_evas_resize(app.ee, w, h);
        ecore_evas_size_min_set(app.ee, min_w, min_h);
        evas_object_resize(app.bg, w, h);

        evas_object_move(app.edje, 0, 0);
        evas_object_resize(app.edje, w, h);
        evas_object_layer_set(app.edje, 100);
        evas_object_show(app.edje);

        /* make it accessible for callbacks and others. */
        ecore_evas_data_set(app.ee, "app", &app);

        ecore_main_loop_begin();

        ecore_evas_shutdown();
        edje_shutdown();
        ecore_shutdown();
        evas_shutdown();

        return 0;
}

Code by pfritz