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:
{
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
Eo Evas
An opaque handle to an Evas canvas.
Definition: Evas_Common.h:163
void evas_object_show(Evas_Object *eo_obj)
Makes the given Evas object visible.
Definition: evas_object_main.c:1814
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
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
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
Efl_Canvas_Object Evas_Object
An Evas Object handle.
Definition: Evas_Common.h:185
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.
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
{
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)
{
int i;
int w;
int h;
for (i = 0; i < 4; i++)
}
static void
{
fprintf(stderr, "Cannot remove the selected rectangle\n");
_columns_rows_print(edje_obj);
}
static void
{
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;
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:606
EAPI void ecore_evas_title_set(Ecore_Evas *ee, const char *t)
Sets the title of an Ecore_Evas' window.
Definition: ecore_evas.c:1553
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:1202
EAPI void ecore_evas_show(Ecore_Evas *ee)
Shows an Ecore_Evas' window.
Definition: ecore_evas.c:1506
EAPI Evas * ecore_evas_get(const Ecore_Evas *ee)
Gets an Ecore_Evas's Evas.
Definition: ecore_evas.c:1326
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:1388
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:1129
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:1166
EAPI int ecore_evas_shutdown(void)
Shuts down the Ecore_Evas system.
Definition: ecore_evas.c:674
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:1065
EAPI void ecore_evas_free(Ecore_Evas *ee)
Frees an Ecore_Evas.
Definition: ecore_evas.c:1109
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:1118
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:1308
void ecore_main_loop_begin(void)
Runs the application main loop.
Definition: ecore_main.c:1298
int edje_shutdown(void)
Shuts down the Edje library.
Definition: edje_main.c:264
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
Eina_Bool edje_object_part_table_col_row_size_get(const Evas_Object *obj, const char *part, int *cols, int *rows)
Gets the number of columns and rows the table has.
Definition: edje_part_table.c:300
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
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
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