efl/legacy/edje/src/lib/edje_edit.c

212 lines
4.2 KiB
C

#include "Edje.h"
#include "edje_private.h"
int edje_edit_init()
{
edje_init();
return 1;
}
void edje_edit_shutdown()
{
edje_shutdown();
}
Edje_Edit_File *
edje_edit_file_load(char *file)
{
Edje_Edit_File *edf;
Eet_File *ef;
char **collections, **images;
int count = 0, i;
edf = calloc(1, sizeof(Edje_Edit_File));
ef = eet_open(file, EET_FILE_MODE_READ);
if (!ef) return NULL;
edf->file = (Edje_File *)eet_data_read(ef, _edje_edd_edje_file, "edje_file");
/* load collections */
collections = eet_list(ef, "collections*", &count);
for (i=0; i < count; i++)
{
Edje_Part_Collection *coll;
/* we can load these up in any order, as the structs contain their id */
coll = (Edje_Part_Collection *)eet_data_read(ef, _edje_edd_edje_part_collection, collections[i]);
edf->collections = evas_list_append(edf->collections, coll);
}
count = 0;
/* load images */
images = eet_list(ef, "images*", &count);
for (i=0; i < count; i++)
{
Edje_Edit_Image *im = calloc(1, sizeof(Edje_Edit_Image));
char buf[1024];
im->id = i;
/* make sure we match up images and ids (images[] isn't in order) */
snprintf(buf, 1024, "images/%i", im->id);
im->data = eet_data_image_read(ef, buf, &(im->w), &(im->h),
&(im->alpha), &(im->compress),
&(im->quality), &(im->lossy));
edf->images = evas_list_append(edf->images, im);
}
eet_close(ef);
return edf;
}
int
edje_edit_file_save(Edje_Edit_File *edf, char *path)
{
Eet_File *ef;
Evas_List *l = NULL;
int i;
if (!path) path = edf->file->path;
if (edf->file->path && strcmp(path, edf->file->path))
{
free(edf->file->path);
edf->file->path = strdup(path);
}
ef = eet_open(path, EET_FILE_MODE_WRITE);
if (!ef) return 0;
for (l = edf->collections, i = 0; l; l = l->next, i++)
{
char buf[256];
Edje_Part_Collection *coll = l->data;
snprintf(buf, sizeof(buf), "collections/%d", i);
if (!eet_data_write(ef, _edje_edd_edje_part_collection, buf, coll, 1))
{
fprintf(stderr, "Error (edje_edit_file_save): can't write collection %d.\n", i);
}
}
for (l = edf->images, i = 0; l; l = l->next, i++)
{
char buf[256];
Edje_Edit_Image *im = l->data;
snprintf(buf, sizeof(buf), "images/%i", i);
eet_data_image_write(ef, buf, im->data, im->w, im->h, im->alpha,
im->compress, im->quality, im->lossy);
}
eet_data_write(ef, _edje_edd_edje_file, "edje_file", edf->file, 1);
eet_close(ef);
return 1;
}
void
edje_edit_file_free(Edje_Edit_File *edf)
{
Evas_List *l;
for (l = edf->collections; l; l = l->next)
{
/* FIXME: do this right */
free(l->data);
}
for (l = edf->images; l; l = l->next)
{
free(l->data);
}
evas_list_free(edf->images);
evas_list_free(edf->collections);
_edje_file_free(edf->file);
free(edf);
}
Edje_Part_Collection *
edje_edit_file_part_collection_get(Edje_Edit_File *edf, char *collection_name)
{
Evas_List *l;
int id=-1;
if (!edf || !edf->file || !edf->file->collection_dir) return NULL;
for (l = edf->file->collection_dir->entries; l; l = l->next)
{
Edje_Part_Collection_Directory_Entry *entry = l->data;
if (!strcmp(entry->entry, "icon"))
{
id = entry->id;
break;
}
}
if (id == -1) return NULL;
return evas_list_nth(edf->collections, id);
}
Edje_Part_Collection *
edje_edit_part_collection_add(Edje_Edit_File *edf, char *collection_name)
{
return NULL;
}
Edje_Part_Collection *
edje_edit_part_collection_del(Edje_Edit_File *edf, char *collection_name)
{
return NULL;
}
Edje_Part *
edje_edit_part_add(Edje_Part_Collection *coll, char *part_name, int part_type)
{
return NULL;
}
Edje_Part *
edje_edit_part_del(Edje_Part_Collection *coll, char *part_name, int part_type)
{
return NULL;
}
Edje_Program *
edje_edit_program_add(Edje_Part_Collection *coll, char *prog_name)
{
return NULL;
}
Edje_Program *
edje_edit_program_del(Edje_Part_Collection *coll, char *prog_name)
{
return NULL;
}
Edje_Edit_Image *
edje_edit_image_add(Edje_Edit_File *edf, char *filename)
{
return NULL;
}
void
edje_edit_image_del(Edje_Edit_Image *im)
{
}
Edje_Edit_Image *
edje_edit_iamge_get_by_id(int id)
{
return NULL;
}