In this example, we illustrate how to organize your objects on a table, using the edje_object_part_table functions.
To be easier to understand the objects in this example will be four simple rects, when the user click over one item with the left button its is removed from the table, if any other button was used all items are removed. For each action is printed a message with the current number of rows and columns.
On the other hand, in the C file we first create the rectangles and added a callback for mouse down, as you can see bellow:
_rects_create(Evas *evas, Evas_Object **rects, Evas_Object *edje_obj)
{
int i;
for (i = 0; i < 4; i++)
{
_on_mouse_down, edje_obj);
}
@ EVAS_CALLBACK_MOUSE_DOWN
Mouse Button Down Event.
Definition Evas_Common.h:422
EVAS_API void evas_object_show(Evas_Object *eo_obj)
Makes the given Evas object visible.
Definition evas_object_main.c:1814
EVAS_API void evas_object_event_callback_add(Evas_Object *eo_obj, Evas_Callback_Type type, Evas_Object_Event_Cb func, const void *data)
Add (register) a callback function to a given Evas object event.
Definition evas_callbacks.c:478
EVAS_API void evas_object_size_hint_weight_set(Evas_Object *obj, double x, double y)
Sets the hints for an object's weight.
Definition evas_object_main.c:2638
EVAS_API void evas_object_size_hint_min_set(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
Sets the hints for an object's minimum size.
Definition evas_object_main.c:2611
EVAS_API Evas_Object * evas_object_rectangle_add(Evas *e)
Adds a rectangle to the given evas.
Definition evas_object_rectangle.c:78
}
With the objects created we have to pack them into the table, to do this, we just have to use the function edje_object_part_table_pack().
The other bit of code that is relevant to us now is our event handler for when the user click over the rectangle. Here we use the function edje_object_part_table_unpack() to remove the item from the table or edje_object_part_table_clear() to remove all items, it depends on which mouse button the user uses.
_on_mouse_down(
void *data, Evas *evas
EINA_UNUSED, Evas_Object *obj,
void *event_info)
{
Evas_Object *edje_obj;
edje_obj = (Evas_Object *)data;
fprintf(stderr, "Cannot remove the selected rectangle\n");
_columns_rows_print(edje_obj);
}
Eina_Bool edje_object_part_table_clear(Evas_Object *obj, const char *part, Eina_Bool clear)
Removes all object from the table.
Definition edje_part_table.c:322
Eina_Bool edje_object_part_table_unpack(Evas_Object *obj, const char *part, Evas_Object *child_obj)
Removes an object from the table.
Definition edje_part_table.c:315
#define EINA_TRUE
boolean value TRUE (numerical value 1)
Definition eina_types.h:539
#define EINA_UNUSED
Used to indicate that a function parameter is purposely unused.
Definition eina_types.h:339
EVAS_API void evas_object_del(Evas_Object *obj)
Marks the given Evas object for deletion (when Evas will free its memory).
Definition evas_object_main.c:928
Mouse button press event.
Definition Evas_Legacy.h:160
int button
Mouse button number that went down (1 - 32)
Definition Evas_Legacy.h:161
Finally, the last important thing in this example is about how to know how many columns and rows are there in the table, It should be noted that this function don't tell you how many items are there in the table, just the number of the columns and rows of the table.
#ifdef HAVE_CONFIG_H
# include "config.h"
#else
# define EINA_UNUSED
#endif
#ifndef PACKAGE_DATA_DIR
#define PACKAGE_DATA_DIR "."
#endif
#include <Ecore.h>
#define WIDTH (400)
#define HEIGHT (400)
static void
{
}
static void
_columns_rows_print(Evas_Object *edje_obj)
{
int cols, rows;
&rows))
printf("Number of columns: %d\nNumber of rows: %d\n", cols, rows);
else
fprintf(stderr, "Cannot get the number of columns and rows\n");
}
static void
_on_canvas_resize(Ecore_Evas *ee)
{
Evas_Object *bg;
Evas_Object *edje_obj;
Evas_Object **rects;
int i;
int w;
int h;
for (i = 0; i < 4; i++)
}
static void
_on_mouse_down(
void *data, Evas *evas
EINA_UNUSED, Evas_Object *obj,
void *event_info)
{
Evas_Object *edje_obj;
edje_obj = (Evas_Object *)data;
fprintf(stderr, "Cannot remove the selected rectangle\n");
_columns_rows_print(edje_obj);
}
static void
_rects_create(Evas *evas, Evas_Object **rects, Evas_Object *edje_obj)
{
int i;
for (i = 0; i < 4; i++)
{
_on_mouse_down, edje_obj);
}
}
int
{
const char *edje_file = PACKAGE_DATA_DIR"/table.edj";
Ecore_Evas *ee;
Evas *evas;
Evas_Object *bg;
Evas_Object *edje_obj;
Evas_Object *rects[4];
return EXIT_FAILURE;
goto shutdown_ecore_evas;
if (!ee) goto shutdown_edje;
_rects_create(evas, rects, edje_obj);
0, 0, 1, 2))
fprintf(stderr, "Cannot add the rectangle 1 to table\n");
0, 1, 1, 1))
fprintf(stderr, "Cannot add the rectangle 2 to table\n");
1, 0, 1, 1))
fprintf(stderr, "Cannot add the rectangle 3 to table\n");
1, 1, 1, 1))
fprintf(stderr, "Cannot add the rectangle 4 to table\n");
_columns_rows_print(edje_obj);
return EXIT_SUCCESS;
shutdown_edje:
shutdown_ecore_evas:
return EXIT_FAILURE;
}
Edje Graphical Design Library.
EAPI int ecore_evas_init(void)
Inits the Ecore_Evas system.
Definition ecore_evas.c:608
EAPI void ecore_evas_title_set(Ecore_Evas *ee, const char *t)
Sets the title of an Ecore_Evas' window.
Definition ecore_evas.c:1541
EAPI void ecore_evas_callback_delete_request_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func)
Sets a callback for Ecore_Evas delete request events.
Definition ecore_evas.c:1190
EAPI void ecore_evas_show(Ecore_Evas *ee)
Shows an Ecore_Evas' window.
Definition ecore_evas.c:1494
EAPI Evas * ecore_evas_get(const Ecore_Evas *ee)
Gets an Ecore_Evas's Evas.
Definition ecore_evas.c:1314
EAPI void * ecore_evas_data_get(const Ecore_Evas *ee, const char *key)
Retrieves user data associated with an Ecore_Evas.
Definition ecore_evas.c:1106
EAPI void ecore_evas_geometry_get(const Ecore_Evas *ee, int *x, int *y, int *w, int *h)
Gets the geometry of an Ecore_Evas.
Definition ecore_evas.c:1376
EAPI void ecore_evas_data_set(Ecore_Evas *ee, const char *key, const void *data)
Stores user data in an Ecore_Evas structure.
Definition ecore_evas.c:1117
EAPI Ecore_Evas * ecore_evas_new(const char *engine_name, int x, int y, int w, int h, const char *extra_options)
Creates a new Ecore_Evas based on engine name and common parameters.
Definition ecore_evas.c:1053
EAPI void ecore_evas_callback_resize_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func)
Sets a callback for Ecore_Evas resize events.
Definition ecore_evas.c:1154
EAPI int ecore_evas_shutdown(void)
Shuts down the Ecore_Evas system.
Definition ecore_evas.c:672
EAPI void ecore_evas_free(Ecore_Evas *ee)
Frees an Ecore_Evas.
Definition ecore_evas.c:1097
void ecore_main_loop_quit(void)
Quits the main loop once all the events currently on the queue have been processed.
Definition ecore_main.c:1321
void ecore_main_loop_begin(void)
Runs the application main loop.
Definition ecore_main.c:1311
int edje_shutdown(void)
Shuts down the Edje library.
Definition edje_main.c:262
int edje_init(void)
Initializes the Edje library.
Definition edje_main.c:35
Evas_Object * edje_object_add(Evas *evas)
Instantiates a new Edje object.
Definition edje_smart.c:22
Eina_Bool edje_object_file_set(Evas_Object *obj, const char *file, const char *group)
Sets the EDJ file (and group within it) to load an Edje object's contents from.
Definition edje_smart.c:467
EVAS_API void evas_object_color_set(Evas_Object *obj, int r, int g, int b, int a)
Sets the general/main color of the given Evas object to the given one.
Definition evas_object_main.c:2024
EVAS_API void evas_object_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
Move the given Evas object to the given location inside its canvas' viewport.
Definition evas_object_main.c:1171
EVAS_API void evas_object_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
Changes the size of the given Evas object.
Definition evas_object_main.c:1236