2003-06-02 16:49:56 -07:00
|
|
|
#include "Edje.h"
|
|
|
|
#include "edje_private.h"
|
|
|
|
|
2003-06-17 01:15:06 -07:00
|
|
|
void
|
|
|
|
edje_init(void)
|
|
|
|
{
|
|
|
|
static int initted = 0;
|
|
|
|
|
|
|
|
if (initted) return;
|
|
|
|
initted = 1;
|
|
|
|
_edje_edd_setup();
|
|
|
|
}
|
|
|
|
|
2003-06-18 07:20:26 -07:00
|
|
|
Edje *
|
|
|
|
_edje_add(Evas_Object *obj)
|
|
|
|
{
|
|
|
|
Edje *ed;
|
|
|
|
|
|
|
|
ed = calloc(1, sizeof(Edje));
|
|
|
|
if (!ed) return NULL;
|
|
|
|
ed->evas = evas_object_evas_get(obj);
|
|
|
|
ed->clipper = evas_object_rectangle_add(ed->evas);
|
|
|
|
evas_object_smart_member_add(ed->clipper, obj);
|
|
|
|
evas_object_color_set(ed->clipper, 255, 255, 255, 255);
|
|
|
|
evas_object_move(ed->clipper, 0, 0);
|
|
|
|
evas_object_resize(ed->clipper, 0, 0);
|
2003-06-26 07:04:31 -07:00
|
|
|
evas_object_pass_events_set(ed->clipper, 1);
|
|
|
|
ed->have_objects = 1;
|
|
|
|
ed->references = 1;
|
2003-06-18 07:20:26 -07:00
|
|
|
return ed;
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
_edje_del(Edje *ed)
|
|
|
|
{
|
2003-06-19 07:43:49 -07:00
|
|
|
_edje_file_del(ed);
|
2003-06-26 07:04:31 -07:00
|
|
|
_edje_clean_objects(ed);
|
2003-06-19 07:43:49 -07:00
|
|
|
if (ed->path) free(ed->path);
|
|
|
|
if (ed->part) free(ed->part);
|
2003-06-26 07:04:31 -07:00
|
|
|
while (ed->callbacks)
|
|
|
|
{
|
|
|
|
Edje_Signal_Callback *escb;
|
|
|
|
|
|
|
|
escb = ed->callbacks->data;
|
|
|
|
ed->callbacks = evas_list_remove(ed->callbacks, escb);
|
|
|
|
free(escb->signal);
|
|
|
|
free(escb->source);
|
|
|
|
free(escb);
|
|
|
|
}
|
2003-06-18 07:20:26 -07:00
|
|
|
free(ed);
|
|
|
|
}
|
2003-06-26 07:04:31 -07:00
|
|
|
|
|
|
|
void
|
|
|
|
_edje_clean_part_objects(Edje *ed)
|
|
|
|
{
|
|
|
|
Evas_List *l;
|
|
|
|
|
|
|
|
for (l = ed->parts; l; l = l->next)
|
|
|
|
{
|
|
|
|
Edje_Real_Part *rp;
|
|
|
|
|
|
|
|
rp = l->data;
|
|
|
|
evas_object_del(rp->object);
|
|
|
|
rp->object = NULL;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
_edje_clean_objects(Edje *ed)
|
|
|
|
{
|
|
|
|
Evas_List *l;
|
|
|
|
|
|
|
|
ed->have_objects = 0;
|
|
|
|
_edje_clean_part_objects(ed);
|
|
|
|
evas_object_del(ed->clipper);
|
|
|
|
ed->evas = NULL;
|
|
|
|
ed->obj = NULL;
|
|
|
|
ed->clipper = NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
_edje_ref(Edje *ed)
|
|
|
|
{
|
|
|
|
ed->references++;
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
_edje_unref(Edje *ed)
|
|
|
|
{
|
|
|
|
ed->references--;
|
|
|
|
if (ed->references <= 0)
|
|
|
|
_edje_del(ed);
|
|
|
|
}
|