Enlightenment CVS committal Author : davemds Project : e17 Module : proto/edje_editor
Dir : e17/proto/edje_editor Modified Files: edje_edit.patch Log Message: * more work on remove/restack of part =================================================================== RCS file: /cvs/e/e17/proto/edje_editor/edje_edit.patch,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- edje_edit.patch 19 Feb 2008 06:16:25 -0000 1.8 +++ edje_edit.patch 19 Feb 2008 23:44:41 -0000 1.9 @@ -4,7 +4,7 @@ retrieving revision 1.4 diff -u -r1.4 Doxyfile --- Doxyfile 6 Dec 2007 23:40:48 -0000 1.4 -+++ Doxyfile 19 Feb 2008 06:13:15 -0000 ++++ Doxyfile 19 Feb 2008 23:41:27 -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 19 Feb 2008 06:13:15 -0000 ++++ configure.in 19 Feb 2008 23:41:27 -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 19 Feb 2008 06:13:15 -0000 ++++ gendoc 19 Feb 2008 23:41:27 -0000 @@ -1,7 +1,7 @@ #!/bin/sh cp ./edje.c.in ./edje.c @@ -68,7 +68,7 @@ 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 19 Feb 2008 06:13:15 -0000 ++++ src/lib/Edje_Edit.h 19 Feb 2008 23:41:28 -0000 @@ -0,0 +1,1277 @@ +#ifndef _EDJE_EDIT_H +#define _EDJE_EDIT_H @@ -1353,7 +1353,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 19 Feb 2008 06:13:15 -0000 ++++ src/lib/Makefile.am 19 Feb 2008 23:41:28 -0000 @@ -14,7 +14,8 @@ libedje.la @@ -1379,8 +1379,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 19 Feb 2008 06:13:15 -0000 -@@ -0,0 +1,3133 @@ ++++ src/lib/edje_edit.c 19 Feb 2008 23:41:28 -0000 +@@ -0,0 +1,3184 @@ +/* + * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 + */ @@ -1997,15 +1997,15 @@ + + GET_ED_OR_RETURN(FALSE) + -+ //Check if part already exists ++ /* Check if part already exists */ + if (_edje_real_part_get(ed, name)) + return FALSE; + -+ //Alloc Edje_Part or return ++ /* Alloc Edje_Part or return */ + ep = mem_alloc(sizeof(Edje_Part)); + if (!ep) return FALSE; + -+ //Alloc Edje_Real_Part or return ++ /* Alloc Edje_Real_Part or return */ + rp = mem_alloc(sizeof(Edje_Real_Part)); + if (!rp) + { @@ -2013,7 +2013,7 @@ + return FALSE; + } + -+ //Init Edje_Part ++ /* Init Edje_Part */ + pc = ed->collection; + pc->parts = evas_list_append(pc->parts, ep); + @@ -2032,7 +2032,7 @@ + ep->default_desc = NULL; + ep->other_desc = NULL; + -+ //Init Edje_Real_Part ++ /* Init Edje_Real_Part */ + rp->edje = ed; + _edje_ref(rp->edje); + rp->part = ep; @@ -2094,7 +2094,7 @@ + rp->gradient_id = -1; + + -+ //Update table_parts ++ /* Update table_parts */ + ed->table_parts_size++; + ed->table_parts = realloc(ed->table_parts, + sizeof(Edje_Real_Part *) * ed->table_parts_size); @@ -2102,7 +2102,7 @@ + ed->table_parts[ep->id % ed->table_parts_size] = rp; + + -+ //create default description ++ /* Create default description */ + edje_edit_state_add(obj, name, "default"); + + rp->param1.description = ep->default_desc; @@ -2123,7 +2123,7 @@ + */ + int old_id; + Edje_Part *part; -+ Evas_List *l; ++ Evas_List *l, *ll; + + part = rp->part; + @@ -2137,31 +2137,30 @@ + old_id = part->id; + part->id = new_id; + -+ // Fix all the dependecies in all parts... ++ /* Fix all the dependecies in all parts... */ + for (l = ed->collection->parts; l; l = l->next) + { + Edje_Part *p; + p = l->data; -+ printf(" search id: %d in %s\n", old_id, p->name); ++ //printf(" search id: %d in %s\n", old_id, p->name); + if (p->clip_to_id == old_id) p->clip_to_id = new_id; + if (p->dragable.confine_id == old_id) p->dragable.confine_id = new_id; + -+ // ...in default description -+ Evas_List *ll; ++ /* ...in default description */ + Edje_Part_Description *d; + d = p->default_desc; -+ printf(" search in %s (%s)\n", p->name, d->state.name); ++ //printf(" search in %s (%s)\n", p->name, d->state.name); + if (d->rel1.id_x == old_id) d->rel1.id_x = new_id; + if (d->rel1.id_y == old_id) d->rel1.id_y = new_id; + if (d->rel2.id_x == old_id) d->rel2.id_x = new_id; + if (d->rel2.id_y == old_id) d->rel2.id_y = new_id; + if (d->text.id_source == old_id) d->text.id_source = new_id; + if (d->text.id_text_source == old_id) d->text.id_text_source = new_id; -+ // ...and in all other descriptions ++ /* ...and in all other descriptions */ + for (ll = p->other_desc; ll; ll = ll->next) + { + d = ll->data; -+ printf(" search in %s (%s)\n", p->name, d->state.name); ++ //printf(" search in %s (%s)\n", p->name, d->state.name); + if (d->rel1.id_x == old_id) d->rel1.id_x = new_id; + if (d->rel1.id_y == old_id) d->rel1.id_y = new_id; + if (d->rel2.id_x == old_id) d->rel2.id_x = new_id; @@ -2171,12 +2170,28 @@ + } + } + -+ //TODO search also in programs -+ ++ /*...and also in programs targets */ ++ for (l = ed->collection->programs; l; l = l->next) ++ { ++ Edje_Program *epr; ++ ++ epr = l->data; ++ if (epr->action != EDJE_ACTION_TYPE_STATE_SET) ++ continue; ++ ++ for (ll = epr->targets; ll; ll = ll->next) ++ { ++ Edje_Program_Target *pt; ++ ++ pt = ll->data; ++ if (pt->id == old_id) pt->id = new_id; ++ } ++ } + -+ // adjust table_parts ++ /* Adjust table_parts */ + ed->table_parts[new_id] = rp; +} ++ +static void +_edje_part_id_switch(Edje *ed, Edje_Real_Part *rp1, Edje_Real_Part *rp2) +{ @@ -2187,7 +2202,7 @@ + */ + int id1; + int id2; -+ Evas_List *l; ++ Evas_List *l, *ll; + + printf("SWITCH ID OF PART %d AND %d\n", rp1->part->id, rp2->part->id); + @@ -2197,11 +2212,11 @@ + id1 = rp1->part->id; + id2 = rp2->part->id; + -+ //Switch ids ++ /* Switch ids */ + rp1->part->id = id2; + rp2->part->id = id1; + -+ // adjust table_parts ++ /* adjust table_parts */ + ed->table_parts[id1] = rp2; + ed->table_parts[id2] = rp1; + @@ -2237,7 +2252,7 @@ + for (ll = p->other_desc; ll; ll = ll->next) + { + d = ll->data; -+ printf(" search in %s (%s)\n", p->name, d->state.name); ++ //printf(" search in %s (%s)\n", p->name, d->state.name); + if (d->rel1.id_x == id1) d->rel1.id_x = id2; + else if (d->rel1.id_x == id2) d->rel1.id_x = id1; + if (d->rel1.id_y == id1) d->rel1.id_y = id2; @@ -2252,8 +2267,24 @@ + else if (d->text.id_text_source == id2) d->text.id_text_source = id2; + } + } -+ -+ //TODO search also in programs ++ //...and also in programs targets ++ for (l = ed->collection->programs; l; l = l->next) ++ { ++ Edje_Program *epr; ++ ++ epr = l->data; ++ if (epr->action != EDJE_ACTION_TYPE_STATE_SET) ++ continue; ++ ++ for (ll = epr->targets; ll; ll = ll->next) ++ { ++ Edje_Program_Target *pt; ++ ++ pt = ll->data; ++ if (pt->id == id1) pt->id = id2; ++ else if (pt->id == id2) pt->id = id1; ++ } ++ } + //TODO Real part dependencies are ok? +} +static void @@ -2270,21 +2301,21 @@ + + //TODO order the list first to be more robust + -+ //Give a correct id to all the parts ++ /* Give a correct id to all the parts */ + correct_id = 0; + for (l = ed->collection->parts; l; l = l->next) + { + Edje_Part *p; + + p = l->data; -+ printf(" [%d]Checking part: %s id: %d\n", correct_id, p->name, p->id); ++ //printf(" [%d]Checking part: %s id: %d\n", correct_id, p->name, p->id); + if (p->id != correct_id) + _edje_part_id_set(ed, ed->table_parts[p->id], correct_id); + + correct_id++; + } + -+ //If we have removed some parts realloc table_parts ++ /* If we have removed some parts realloc table_parts */ + count = evas_list_count(ed->collection->parts); + if (count != ed->table_parts_size) + { @@ -2292,7 +2323,7 @@ + ed->table_parts_size = count; + } + -+ printf("\n"); ++ //printf("\n"); +} + +EAPI unsigned char @@ -2300,43 +2331,23 @@ +{ + printf("REMOVE PART: %s\n", part); + Evas_List *l; ++ Edje_Part *ep; + int id; ++ + GET_RP_OR_RETURN() -+ Edje_Part *ep; + ep = rp->part; + id = ep->id; + + if (ed->table_parts_size <= 1) return FALSE; //don't remove the last part -+ -+ //Remove part from parts list -+ //...at the end of the function we fix the list/table association -+ Edje_Part_Collection *pc; -+ pc = ed->collection; -+ pc->parts = evas_list_remove(pc->parts, ep); -+ -+ //Free Edje_Part and all descriptions -+ if (ep->name) evas_stringshare_del(ep->name); -+ if (ep->default_desc) -+ { -+ _edje_collection_free_part_description_free(ep->default_desc); -+ ep->default_desc = NULL; -+ } -+ while (ep->other_desc) -+ { -+ Edje_Part_Description *desc; + -+ desc = ep->other_desc->data; -+ ep->other_desc = evas_list_remove(ep->other_desc, desc); -+ _edje_collection_free_part_description_free(desc); -+ } -+ free(ep); -+ -+ //Clear real_parts that link to the removed one ++ /* Clear Edje_Real_Parts that link to the removed one */ + int i; + for (i = 0; i < ed->table_parts_size; i++) + { ++ if (i == id) continue; //don't check the deleted id + Edje_Real_Part *real; -+ real = ed->table_parts[i]; ++ real = ed->table_parts[i % ed->table_parts_size]; ++ + if (real->text.source == rp) real->text.source = NULL; + if (real->text.text_source == rp) real->text.text_source = NULL; + @@ -2354,15 +2365,22 @@ + if (real->custom.rel1_to_y == rp) real->custom.rel1_to_y = NULL; + if (real->custom.rel2_to_x == rp) real->custom.rel2_to_x = NULL; + if (real->custom.rel2_to_y == rp) real->custom.rel2_to_y = NULL; -+ //TODO clip_to ?? confine ?? ++ ++ if (real->clip_to == rp) ++ { ++ evas_object_clip_set(real->object, ed->clipper); ++ real->clip_to = NULL; ++ } ++ //TODO confine ?? + } + -+ // Clear all the parts and descriptions that refer to id ++ /* Clear all the parts and descriptions that refer to id */ + for (l = ed->collection->parts; l; l = l->next) + { + Edje_Part *p; ++ + p = l->data; -+ if (p->clip_to_id == id) p->clip_to_id = -1; //TODO is 0 right?? don't tink so (maybe we need to unclip in some way) ++ if (p->clip_to_id == id) p->clip_to_id = -1; + if (p->dragable.confine_id == id) p->dragable.confine_id = 0; //TODO is 0 right?? don't tink so + + Evas_List *ll; @@ -2386,16 +2404,35 @@ + if (d->text.id_text_source == id) d->text.id_text_source = -1; + } + } ++ ++ /* Remove part from parts list */ ++ Edje_Part_Collection *pc; ++ pc = ed->collection; ++ pc->parts = evas_list_remove(pc->parts, ep); ++ _edje_fix_parts_id(ed); + ++ /* Free Edje_Part and all descriptions */ ++ if (ep->name) evas_stringshare_del(ep->name); ++ if (ep->default_desc) ++ { ++ _edje_collection_free_part_description_free(ep->default_desc); ++ ep->default_desc = NULL; ++ } ++ while (ep->other_desc) ++ { ++ Edje_Part_Description *desc; ++ ++ desc = ep->other_desc->data; ++ ep->other_desc = evas_list_remove(ep->other_desc, desc); ++ _edje_collection_free_part_description_free(desc); ++ } ++ free(ep); + -+ //Free real_part ++ /* Free real_part */ + _edje_real_part_free(rp); + -+ //We have now a hole in the id sequence...fixing it -+ _edje_fix_parts_id(ed); + + edje_object_calc_force(obj); -+ + return TRUE; +} + @@ -4490,23 +4527,37 @@ + printf(" path: '%s'\n", ed->path); + printf(" part: '%s'\n", ed->part); + printf(" parent: '%s'\n", ed->parent); -+ printf("\n"); + -+ printf("*** Parts [table:%d list:%d]\n", ed->table_parts_size, evas_list_count(ed->collection->parts)); -+ for (i = 0; i < ed->table_parts_size; i++) ++ printf("\n*** Parts [table:%d list:%d]\n", ed->table_parts_size, ++ evas_list_count(ed->collection->parts)); ++ for (l = ed->collection->parts; l; l = l->next) + { ++ Edje_Part *p; + Edje_Real_Part *rp; + -+ rp = ed->table_parts[i % ed->table_parts_size]; -+ printf(" [%d]%s (id:%d)\n", i , rp->part->name, rp->part->id); ++ p = l->data; ++ rp = ed->table_parts[p->id % ed->table_parts_size]; ++ printf(" [%d]%s ",p->id, p->name); ++ if (p == rp->part) ++ printf(" OK!\n"); ++ else ++ printf(" WRONG (table[%id]->name = '%s')\n", p->id, rp->part->name); + } -+ printf("---------\n"); -+ for (l = ed->collection->parts; l; l = l->next) ++ ++ printf("\n*** Programs [table:%d list:%d]\n", ed->table_programs_size, ++ evas_list_count(ed->collection->programs)); ++ for (l = ed->collection->programs; l; l = l->next) + { -+ Edje_Part *p; ++ Edje_Program *epr; ++ Edje_Program *epr2; + -+ p = l->data; -+ printf(" []%s (id:%d)\n", p->name, p->id); ++ epr = l->data; ++ epr2 = ed->table_programs[epr->id % ed->table_programs_size]; ++ printf(" [%d]%s ", epr->id, epr->name); ++ if (epr == epr2) ++ printf(" OK!\n"); ++ else ++ printf(" WRONG (table[%id]->name = '%s')\n", epr->id, epr2->name); + } + + printf("\n"); @@ -4520,7 +4571,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 19 Feb 2008 06:13:15 -0000 ++++ src/lib/edje_load.c 19 Feb 2008 23:41:28 -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