Enlightenment CVS committal Author : davemds Project : e17 Module : proto/edje_editor
Dir : e17/proto/edje_editor Modified Files: edje_edit.patch Log Message: * implemented add/remove of programs =================================================================== RCS file: /cvs/e/e17/proto/edje_editor/edje_edit.patch,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- edje_edit.patch 17 Feb 2008 21:42:24 -0000 1.4 +++ edje_edit.patch 18 Feb 2008 00:07:14 -0000 1.5 @@ -4,7 +4,7 @@ retrieving revision 1.4 diff -u -r1.4 Doxyfile --- Doxyfile 6 Dec 2007 23:40:48 -0000 1.4 -+++ Doxyfile 17 Feb 2008 21:39:37 -0000 ++++ Doxyfile 18 Feb 2008 00:04:11 -0000 @@ -1,7 +1,7 @@ PROJECT_NAME = Edje PROJECT_NUMBER = @@ -29,7 +29,7 @@ retrieving revision 1.93 diff -u -r1.93 configure.in --- configure.in 25 Jan 2008 03:35:46 -0000 1.93 -+++ configure.in 17 Feb 2008 21:39:37 -0000 ++++ configure.in 18 Feb 2008 00:04:11 -0000 @@ -66,6 +66,7 @@ evas >= 0.9.9 ecore-evas >= 0.9.9 @@ -44,7 +44,7 @@ retrieving revision 1.6 diff -u -r1.6 gendoc --- gendoc 6 Dec 2007 23:42:38 -0000 1.6 -+++ gendoc 17 Feb 2008 21:39:38 -0000 ++++ gendoc 18 Feb 2008 00:04:11 -0000 @@ -1,7 +1,7 @@ #!/bin/sh cp ./edje.c.in ./edje.c @@ -68,8 +68,8 @@ RCS file: src/lib/Edje_Edit.h diff -N src/lib/Edje_Edit.h --- /dev/null 1 Jan 1970 00:00:00 -0000 -+++ src/lib/Edje_Edit.h 17 Feb 2008 21:39:38 -0000 -@@ -0,0 +1,1225 @@ ++++ src/lib/Edje_Edit.h 18 Feb 2008 00:04:11 -0000 +@@ -0,0 +1,1240 @@ +#ifndef _EDJE_EDIT_H +#define _EDJE_EDIT_H + @@ -1032,6 +1032,21 @@ +edje_edit_programs_list_get( + Evas_Object *obj ///< The edje object +); ++/**Add a new program to the edje file ++ * If a program with the same name just exist the function will fail. ++ */ ++EAPI unsigned char ///@return 1 on success or 0 on errors ++edje_edit_program_add( ++ Evas_Object *obj, ///< The edje object ++ const char *name ///< The name of the new program ++); ++/**Remove the given program from the edje file. ++ */ ++EAPI unsigned char ///@return 1 on success or 0 on errors ++edje_edit_program_del( ++ Evas_Object *obj, ///< The edje object ++ const char *prog ///< The name of the program to remove ++); + +/**Set a new name for the given program */ +EAPI unsigned char ///@return 1 on success or 0 on errors @@ -1301,7 +1316,7 @@ retrieving revision 1.39 diff -u -r1.39 Makefile.am --- src/lib/Makefile.am 18 Jan 2008 06:38:46 -0000 1.39 -+++ src/lib/Makefile.am 17 Feb 2008 21:39:38 -0000 ++++ src/lib/Makefile.am 18 Feb 2008 00:04:11 -0000 @@ -14,7 +14,8 @@ libedje.la @@ -1327,8 +1342,8 @@ RCS file: src/lib/edje_edit.c diff -N src/lib/edje_edit.c --- /dev/null 1 Jan 1970 00:00:00 -0000 -+++ src/lib/edje_edit.c 17 Feb 2008 21:39:38 -0000 -@@ -0,0 +1,2663 @@ ++++ src/lib/edje_edit.c 18 Feb 2008 00:04:12 -0000 +@@ -0,0 +1,2828 @@ +/* + * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 + */ @@ -3513,6 +3528,171 @@ +} + + ++ ++EAPI unsigned char ++edje_edit_program_add(Evas_Object *obj, const char *name) ++{ ++ Edje_Program *epr; ++ Edje_Part_Collection *pc; ++ printf("ADD PROGRAM [new name: %s]\n", name); ++ GET_ED_OR_RETURN(0) ++ ++ //Check if program already exists ++ if (_edje_program_get_byname(obj, name)) ++ return 0; ++ ++ //Alloc Edje_Program or return ++ epr = mem_alloc(SZ(Edje_Program)); ++ if (!epr) return 0; ++ ++ //Add program to group ++ pc = ed->collection; ++ pc->programs = evas_list_append(pc->programs, epr); ++ ++ //Init Edje_Program ++ epr->id = evas_list_count(pc->programs) - 1; ++ epr->name = evas_stringshare_add(name); ++ epr->signal = NULL; ++ epr->source = NULL; ++ epr->in.from = 0.0; ++ epr->in.range = 0.0; ++ epr->action = 0; ++ epr->state = NULL; ++ epr->value = 0.0; ++ epr->state2 = NULL; ++ epr->value2 = 0.0; ++ epr->tween.mode = 1; ++ epr->tween.time = 0.0; ++ epr->targets = NULL; ++ epr->after = NULL; ++ ++ ++ //Update table_programs ++ ed->table_programs_size++; ++ ed->table_programs = realloc(ed->table_programs, ++ sizeof(Edje_Program *) * ed->table_programs_size); ++ ++ ed->table_programs[epr->id % ed->table_programs_size] = epr; ++ ++ return 1; ++} ++ ++ ++EAPI unsigned char ++edje_edit_program_del(Evas_Object *obj, const char *prog) ++{ ++ printf("DEL PROGRAM: %s\n", prog); ++ Evas_List *l; ++ int id, i; ++ GET_ED_OR_RETURN(0) ++ GET_EPR_OR_RETURN(0) ++ ++ ++ //Remove program from programs list ++ id = epr->id; ++ Edje_Part_Collection *pc; ++ pc = ed->collection; ++ pc->programs = evas_list_remove(pc->programs, epr); ++ ++ //Free Edje_Program ++ if (epr->name) evas_stringshare_del(epr->name); ++ if (epr->signal) evas_stringshare_del(epr->signal); ++ if (epr->source) evas_stringshare_del(epr->source); ++ if (epr->state) evas_stringshare_del(epr->state); ++ if (epr->state2) evas_stringshare_del(epr->state2); ++ while (epr->targets) ++ { ++ Edje_Program_Target *prt; ++ ++ prt = epr->targets->data; ++ epr->targets = evas_list_remove_list(epr->targets, epr->targets); ++ free(prt); ++ } ++ while (epr->after) ++ { ++ Edje_Program_After *pa; ++ ++ pa = epr->after->data; ++ epr->after = evas_list_remove_list(epr->after, epr->after); ++ free(pa); ++ } ++ free(epr); ++ ++ ++ //Update programs table ++ //We move the last program in place of the deleted one ++ //and realloc the table without the last element. ++ ed->table_programs[id % ed->table_programs_size] = ed->table_programs[ed->table_programs_size-1]; ++ ed->table_programs_size--; ++ ed->table_programs = realloc(ed->table_programs, ++ sizeof(Edje_Program *) * ed->table_programs_size); ++ ++ //Update the id of the moved program ++ int old_id; ++ if (id < ed->table_programs_size) ++ { ++ Edje_Program *p; ++ p = ed->table_programs[id % ed->table_programs_size]; ++ printf("UPDATE: %s(id:%d) with new id: %d\n", ++ p->name, p->id, id); ++ old_id = p->id; ++ p->id = id; ++ }else ++ old_id = -1; ++ ++ //We also update all other programs that point to old_id and id ++ for (i = 0; i < ed->table_programs_size; i++) ++ { ++ Edje_Program *p; ++ p = ed->table_programs[i]; ++ // printf("Check dependencies on %s\n",p->name); ++ /* check in afters */ ++ l = p->after; ++ while (l) ++ { ++ Edje_Program_After *pa; ++ ++ pa = l->data; ++ if (pa->id == old_id) ++ { ++ // printf(" dep on after old_id\n"); ++ pa->id = id; ++ } ++ else if (pa->id == id) ++ { ++ // printf(" dep on after id\n"); ++ p->after = evas_list_remove(p->after, pa); ++ } ++ ++ if (l) l = l->next; ++ } ++ /* check in targets */ ++ if (p->action == EDJE_ACTION_TYPE_ACTION_STOP) ++ { ++ l = p->targets; ++ while (l) ++ { ++ Edje_Program_Target *pt; ++ ++ pt = l->data; ++ if (pt->id == old_id) ++ { ++ // printf(" dep on target old_id\n"); ++ pt->id = id; ++ } ++ else if (pt->id == id) ++ { ++ // printf(" dep on target id\n"); ++ p->targets = evas_list_remove(p->targets, pt); ++ } ++ if (l) l = l->next; ++ } ++ } ++ } ++ ++ return 1; ++} ++ +EAPI unsigned char +edje_edit_program_name_set(Evas_Object *obj, const char *prog, const char* new_name) +{ @@ -3998,7 +4178,7 @@ retrieving revision 1.111 diff -u -r1.111 edje_load.c --- src/lib/edje_load.c 18 Jan 2008 06:34:04 -0000 1.111 -+++ src/lib/edje_load.c 17 Feb 2008 21:39:38 -0000 ++++ src/lib/edje_load.c 18 Feb 2008 00:04:12 -0000 @@ -5,7 +5,7 @@ #include "Edje.h" #include "edje_private.h" ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs