Enlightenment CVS committal Author : davemds Project : e17 Module : proto/edje_editor
Dir : e17/proto/edje_editor Modified Files: TODO edje_edit.patch Log Message: * implemented edje_edit_[group/part/state/prog]_exist() funcions * some char* in edje_private.h declared static * Create a unique name when creating group/part/state/prog * Fix Fakewin placement when moving * Fix Fakewin size on first show * some bugs fixed * and some cosmetic change that make the commit unreadable :P =================================================================== RCS file: /cvs/e/e17/proto/edje_editor/TODO,v retrieving revision 1.9 retrieving revision 1.10 diff -u -3 -r1.9 -r1.10 --- TODO 18 Feb 2008 16:44:21 -0000 1.9 +++ TODO 20 Feb 2008 19:31:38 -0000 1.10 @@ -1,25 +1,25 @@ TODO edje_editor (not a complete list...only the first in my mind) ======================================= -* Tooltips EVERYWERE :) - -* A new object add must be take a progressive (and unique) number (newrect1, newrect2...etc) - +EDJE: * Font and image can't be removed - -* Clipping - * Save back the updated edc source to the edje file - * Embryo scripting +* Use a value in the edje data field to store the editor version + If no version information found alert the user +* Edje gradient +* Edje draggies +EDITOR: +* Tooltips EVERYWERE :) +* Add keybinding +* Add a handler to move the 2 points togheter +* A new object add must be take a progressive (and unique) number (newrect1, newrect2...etc) * Make the visible checkbox work (should the visibility apply to the EDC also? not only in the editor?) - * Duplicate objects (copy/cut/paste??) - * Fix strange alpha premul on text with effect - -* Use a value in the edje data field to store the editor version - If no version information found alert the user - * In the Add/Remove menus disable 'not in context' choice +* Add CheckBox(radio) in Options Menu +* Make groups combobox searchable (using a Combo_Entry) +* gradient +* draggies =================================================================== RCS file: /cvs/e/e17/proto/edje_editor/edje_edit.patch,v retrieving revision 1.9 retrieving revision 1.10 diff -u -3 -r1.9 -r1.10 --- edje_edit.patch 19 Feb 2008 23:44:41 -0000 1.9 +++ edje_edit.patch 20 Feb 2008 19:31:38 -0000 1.10 @@ -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 23:41:27 -0000 ++++ Doxyfile 20 Feb 2008 19:23:00 -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 23:41:27 -0000 ++++ configure.in 20 Feb 2008 19:23:00 -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 23:41:27 -0000 ++++ gendoc 20 Feb 2008 19:23:00 -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 19 Feb 2008 23:41:28 -0000 -@@ -0,0 +1,1277 @@ ++++ src/lib/Edje_Edit.h 20 Feb 2008 19:23:00 -0000 +@@ -0,0 +1,1342 @@ +#ifndef _EDJE_EDIT_H +#define _EDJE_EDIT_H + @@ -213,6 +213,14 @@ + Evas_Object *obj ///< The edje object +); + ++/**Check if a group with the given name exist in the edje. ++ */ ++EAPI unsigned char ///< 1 if the group exist, 0 otherwise. ++edje_edit_group_exist( ++ Evas_Object *obj, ///< The edje object ++ const char *group ///< The name of the group ++); ++ +/**Set a new name for the current open group. + * You can only rename a group that is currently loaded + * Note that the relative getter function don't exist as it don't make sense ;) @@ -286,12 +294,21 @@ + const char *part ///< The name of the part to remove +); + ++/**Check if a part with the given name exist in the edje object. ++ */ ++EAPI unsigned char ///< 1 if the part exist, 0 otherwise. ++edje_edit_part_exist( ++ Evas_Object *obj, ///< The edje object ++ const char *part ///< The name of the part ++); ++ +/**Move the given part below the previous one.*/ +EAPI unsigned char ///@return 1 on success, 0 on failure +edje_edit_part_restack_below( + Evas_Object *obj, ///< The edje object + const char *part ///< The name of the part to restack +); ++ +/**Move the given part above the next one.*/ +EAPI unsigned char ///@return 1 on success, 0 on failure +edje_edit_part_restack_above( @@ -324,6 +341,7 @@ + Evas_Object *obj, ///< The edje object + const char *part ///< The name of the part +); ++ +/**Set a part to clip part to. + * If clip_to is NULL then the clipping value will be cancelled (unset clipping) + */ @@ -340,6 +358,7 @@ + Evas_Object *obj, ///< The edje object + const char *part ///< The name of the part +); ++ +/**Set the effect for a given part. */ +EAPI void +edje_edit_part_effect_set( @@ -354,6 +373,7 @@ + Evas_Object *obj, ///< The edje object + const char *part ///< The name of the part +); ++ +/**Set the current state in part.*/ +EAPI unsigned char ///@return 1 on success, 0 otherwise. +edje_edit_part_selected_state_set( @@ -368,6 +388,7 @@ + Evas_Object *obj, ///< The edje object + const char *part ///< The name of the part +); ++ +/**Set mouse_events for part.*/ +EAPI void +edje_edit_part_mouse_events_set( @@ -382,6 +403,7 @@ + Evas_Object *obj, ///< The edje object + const char *part ///< The name of the part +); ++ +/**Set repeat_events for part. */ +EAPI void +edje_edit_part_repeat_events_set( @@ -417,7 +439,7 @@ + Evas_Object *obj, ///< The edje object + const char *part, ///< The name of the part that contain state + const char *state, ///< The current name of the state -+ const char *new_name ///< The new name to assign ++ const char *new_name ///< The new name to assign (including the value) +); + +/**Create a new state to the give part @@ -426,7 +448,7 @@ +edje_edit_state_add( + Evas_Object *obj, ///< The edje object + const char *part, ///< The name of the part -+ const char *name ///< The name for the new state ++ const char *name ///< The name for the new state (not including the state value) +); + +/**Delete the given part state from the edje @@ -435,7 +457,16 @@ +edje_edit_state_del( + Evas_Object *obj, ///< The edje object + const char *part, ///< The name of the part that contain state -+ const char *state ///< The current name of the state ++ const char *state ///< The current name of the state (including the state value) ++); ++ ++/**Check if a part state with the given name exist. ++ */ ++EAPI unsigned char ///< 1 if the part state exist, 0 otherwise. ++edje_edit_state_exist( ++ Evas_Object *obj, ///< The edje object ++ const char *part, ///< The name of the part ++ const char *state ///< The name of the state to check (including the state value) +); + +/**Get the rel1 relative x value of state*/ @@ -846,6 +877,7 @@ + const char *part, ///< The name of the part + const char *state ///< The name of the 'part state' (ex. "default 0.00") +); ++ +/**Set the text of a part state.*/ +EAPI void +edje_edit_state_text_set( @@ -862,6 +894,7 @@ + const char *part, ///< The name of the part + const char *state ///< The name of the 'part state' (ex. "default 0.00") +); ++ +/**Set the text size of a part state.*/ +EAPI void +edje_edit_state_text_size_set( @@ -878,6 +911,7 @@ + const char *part, ///< The name of the part + const char *state ///< The name of the 'part state' (ex. "default 0.00") +); ++ +/**Get the text vertical align of a part state. The value range is from 0.0(top) to 1.0(bottom)*/ +EAPI double ///@return The text align Y value +edje_edit_state_text_align_y_get( @@ -885,6 +919,7 @@ + const char *part, ///< The name of the part + const char *state ///< The name of the 'part state' (ex. "default 0.00") +); ++ +/**Set the text horizontal align of a part state. The value range is from 0.0(right) to 1.0(left)*/ +EAPI void +edje_edit_state_text_align_x_set( @@ -893,6 +928,7 @@ + const char *state, ///< The name of the 'part state' (ex. "default 0.00") + double align ///< The new text align X value +); ++ +/**Set the text vertical align of a part state. The value range is from 0.0(top) to 1.0(bottom)*/ +EAPI void +edje_edit_state_text_align_y_set( @@ -929,6 +965,7 @@ + const char *part, ///< The name of the part + const char *state ///< The name of the 'part state' (ex. "default 0.00") +); ++ +/**Set font name for a given part state. */ +EAPI void +edje_edit_state_font_set( @@ -980,6 +1017,7 @@ + const char *part, ///< The name of the part + const char *state ///< The name of the 'part state' (ex. "default 0.00") +); ++ +/**Set normal image for a given part state.*/ +EAPI void +edje_edit_state_image_set( @@ -1007,6 +1045,7 @@ + int *t, ///< A pointer to store the top value + int *b ///< A pointer to store the bottom value +); ++ +/**Set the image border of a part state. Pass -1 to any of [l,r,t,b] to leave the value untouched.*/ +EAPI void +edje_edit_state_image_border_set( @@ -1069,6 +1108,7 @@ +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. + */ @@ -1077,6 +1117,7 @@ + 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 @@ -1085,6 +1126,14 @@ + const char *prog ///< The name of the program to remove +); + ++/**Check if a program with the given name exist in the edje object. ++ */ ++EAPI unsigned char ///< 1 if the program exist, 0 otherwise. ++edje_edit_program_exist( ++ Evas_Object *obj, ///< The edje object ++ const char *prog ///< The name of the program ++); ++ +/**Set a new name for the given program */ +EAPI unsigned char ///@return 1 on success or 0 on errors +edje_edit_program_name_set( @@ -1099,6 +1148,7 @@ + Evas_Object *obj, ///< The edje object + const char *prog ///< The program name +); ++ +/**Set source of the given program. */ +EAPI unsigned char ///@return 1 on success or 0 on errors +edje_edit_program_source_set( @@ -1113,6 +1163,7 @@ + Evas_Object *obj, ///< The edje object + const char *prog ///< The program name +); ++ +/**Set signal of the given program. */ +EAPI unsigned char ///@return 1 on success or 0 on errors +edje_edit_program_signal_set( @@ -1127,6 +1178,7 @@ + Evas_Object *obj, ///< The edje object + const char *prog ///< The program name +); ++ +/**Set in.from of a given program.*/ +EAPI unsigned char ///@return 1 on success or 0 on errors +edje_edit_program_in_from_set( @@ -1141,6 +1193,7 @@ + Evas_Object *obj, ///< The edje object + const char *prog ///< The program name +); ++ +/**Set in.range of a given program.*/ +EAPI unsigned char ///@return 1 on success or 0 on errors +edje_edit_program_in_range_set( @@ -1157,6 +1210,7 @@ + Evas_Object *obj, ///< The edje object + const char *prog ///< The program name +); ++ +/**Set the action of a given program. + * Action can be one of EDJE_ACTION_TYPE_NONE, _STATE_SET, ACTION_STOP, SIGNAL_EMIT, DRAG_VAL_SET, _DRAG_VAL_STEP, _DRAG_VAL_PAGE, _SCRIPT + */ @@ -1176,6 +1230,7 @@ + Evas_Object *obj, ///< The edje object + const char *prog ///< The program name +); ++ +/**Add a new target name to the list of 'targets' in the given program. + * If program action is EDJE_ACTION_TYPE_ACTION_STOP then 'target' must be an existing program name. + * If action is EDJE_ACTION_TYPE_STATE_SET then 'target' must be an existing part name. @@ -1186,12 +1241,14 @@ + const char *prog, ///< The program name + const char *target ///< The name of another program or another part +); ++ +/**Clear the 'targets' list of the given program */ +EAPI unsigned char ///@return 1 on success or 0 on errors +edje_edit_program_targets_clear( + Evas_Object *obj, ///< The edje object + const char *prog ///< The program name +); ++ +/**Get the list of action that will be run after the give program + * Return a list of program name. + * Use edje_edit_string_list_free() when you don't need it anymore. @@ -1201,6 +1258,7 @@ + Evas_Object *obj, ///< The edje object + const char *prog ///< The program name +); ++ +/**Add a new program name to the list of 'afters' in the given program. + * All the programs listed in 'afters' will be executed after program execution. + */ @@ -1210,6 +1268,7 @@ + const char *prog, ///< The program name + const char *after ///< The name of another program to add to the afters list +); ++ +/**Clear the 'afters' list of the given program */ +EAPI unsigned char ///@return 1 on success or 0 on errors +edje_edit_program_afters_clear( @@ -1226,6 +1285,7 @@ + Evas_Object *obj, ///< The edje object + const char *prog ///< The program name +); ++ +/**Set the state for the given program + * In a STATE_SET action this is the name of state to set. + * In a SIGNAL_EMIT action is the name of the signal to emit. @@ -1246,6 +1306,7 @@ + Evas_Object *obj, ///< The edje object + const char *prog ///< The program name +); ++ +/**Set the value of state for the given program. + * In a STATE_SET action this is the value of state to set. + * Not used on SIGNAL_EMIT action. @@ -1266,6 +1327,7 @@ + Evas_Object *obj, ///< The edje object + const char *prog ///< The program name +); ++ +/**Set the state2 for the given program + * In a STATE_SET action is not used + * In a SIGNAL_EMIT action is the source of the emitted signal. @@ -1285,6 +1347,7 @@ + Evas_Object *obj, ///< The edje object + const char *prog ///< The program name +); ++ +/**Set the value2 of state for the given program. + * This is used in DRAG_ACTION + */ @@ -1303,6 +1366,7 @@ + Evas_Object *obj, ///< The edje object + const char *prog ///< The program name +); ++ +/**Set the type of transition to use when apply animations. + * Can be one of: EDJE_TWEEN_MODE_NONE, EDJE_TWEEN_MODE_LINEAR, EDJE_TWEEN_MODE_SINUSOIDAL, EDJE_TWEEN_MODE_ACCELERATE or EDJE_TWEEN_MODE_DECELERATE. + */ @@ -1319,6 +1383,7 @@ + Evas_Object *obj, ///< The edje object + const char *prog ///< The program name +); ++ +/**Set the duration of the transition in seconds.*/ +EAPI unsigned char ///@return 1 on success or 0 on errors +edje_edit_program_transition_time_set( @@ -1353,7 +1418,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 23:41:28 -0000 ++++ src/lib/Makefile.am 20 Feb 2008 19:23:00 -0000 @@ -14,7 +14,8 @@ libedje.la @@ -1379,8 +1444,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 23:41:28 -0000 -@@ -0,0 +1,3184 @@ ++++ src/lib/edje_edit.c 20 Feb 2008 19:23:01 -0000 +@@ -0,0 +1,3205 @@ +/* + * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 + */ @@ -1467,7 +1532,7 @@ +/* INTERNALS */ +/*************/ + -+Edje_Part_Description * ++static Edje_Part_Description * +_edje_part_description_find_byname(Edje *ed, const char *part, const char *state) //state include the value in the string (ex. "default 0.00") +{ + Edje_Real_Part *rp; @@ -1505,7 +1570,7 @@ + return pd; +} + -+int ++static int +_edje_image_id_find(Evas_Object *obj, const char *image_name) +{ + Edje_Image_Directory_Entry *i; @@ -1533,7 +1598,7 @@ + return -1; +} + -+const char* ++static const char* +_edje_image_name_find(Evas_Object *obj, int image_id) +{ + Edje_Image_Directory_Entry *i; @@ -1710,6 +1775,226 @@ + return -1; +} + ++static void ++_edje_part_id_set(Edje *ed, Edje_Real_Part *rp, int new_id) ++{ ++ /* This function change the id of a given real_part. ++ * All the depedency will be updated too. ++ * Also the table_parts is updated, and the current *rp in the table ++ * is lost. ++ * If new Id = -1 then all the depencies will be deleted ++ */ ++ int old_id; ++ Edje_Part *part; ++ Evas_List *l, *ll; ++ ++ part = rp->part; ++ ++ if (!part) return; ++ printf("CHANGE ID OF PART %s TO %d\n", part->name, new_id); ++ ++ if (!ed || !part || new_id < -1) return; ++ ++ if (part->id == new_id) return; ++ ++ old_id = part->id; ++ part->id = new_id; ++ ++ /* 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); ++ 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 */ ++ Edje_Part_Description *d; ++ d = p->default_desc; ++ //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 */ ++ for (ll = p->other_desc; ll; ll = ll->next) ++ { ++ d = ll->data; ++ //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 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) ++ if (new_id == -1) ++ epr->targets = evas_list_remove(epr->targets, pt); ++ else ++ pt->id = new_id; ++ } ++ } ++ ++ /* Adjust table_parts */ ++ if (new_id >= 0) ++ ed->table_parts[new_id] = rp; ++} ++ ++static void ++_edje_parts_id_switch(Edje *ed, Edje_Real_Part *rp1, Edje_Real_Part *rp2) ++{ ++ /* This function switch the id of two parts. ++ * All the depedency will be updated too. ++ * Also the table_parts is updated, ++ * The parts list isn't touched ++ */ ++ int id1; ++ int id2; ++ Evas_List *l, *ll; ++ ++ printf("SWITCH ID OF PART %d AND %d\n", rp1->part->id, rp2->part->id); ++ ++ if (!ed || !rp1 || !rp2) return; ++ if (rp1 == rp2) return; ++ ++ id1 = rp1->part->id; ++ id2 = rp2->part->id; ++ ++ /* Switch ids */ ++ rp1->part->id = id2; ++ rp2->part->id = id1; ++ ++ /* adjust table_parts */ ++ ed->table_parts[id1] = rp2; ++ ed->table_parts[id2] = rp1; ++ ++ // 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); ++ if (p->clip_to_id == id1) p->clip_to_id = id2; ++ else if (p->clip_to_id == id2) p->clip_to_id = id1; ++ if (p->dragable.confine_id == id1) p->dragable.confine_id = id2; ++ else if (p->dragable.confine_id == id2) p->dragable.confine_id = id1; ++ ++ // ...in default description ++ Evas_List *ll; ++ Edje_Part_Description *d; ++ d = p->default_desc; ++ // 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; ++ else if (d->rel1.id_y == id2) d->rel1.id_y = id1; ++ if (d->rel2.id_x == id1) d->rel2.id_x = id2; ++ else if (d->rel2.id_x == id2) d->rel2.id_x = id1; ++ if (d->rel2.id_y == id1) d->rel2.id_y = id2; ++ else if (d->rel2.id_y == id2) d->rel2.id_y = id1; ++ if (d->text.id_source == id1) d->text.id_source = id2; ++ else if (d->text.id_source == id2) d->text.id_source = id1; ++ if (d->text.id_text_source == id1) d->text.id_text_source = id2; ++ else if (d->text.id_text_source == id2) d->text.id_text_source = id2; ++ // ...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); ++ 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; ++ else if (d->rel1.id_y == id2) d->rel1.id_y = id1; ++ if (d->rel2.id_x == id1) d->rel2.id_x = id2; ++ else if (d->rel2.id_x == id2) d->rel2.id_x = id1; ++ if (d->rel2.id_y == id1) d->rel2.id_y = id2; ++ else if (d->rel2.id_y == id2) d->rel2.id_y = id1; ++ if (d->text.id_source == id1) d->text.id_source = id2; ++ else if (d->text.id_source == id2) d->text.id_source = id1; ++ if (d->text.id_text_source == id1) d->text.id_text_source = id2; ++ else if (d->text.id_text_source == id2) d->text.id_text_source = id2; ++ } ++ } ++ //...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 ++_edje_fix_parts_id(Edje *ed) ++{ ++ /* We use this to clear the id hole leaved when a part is removed. ++ * After the execution of this function all parts will have a right ++ * (uniqe & ordered) id. The table_parts is also updated. ++ */ ++ Evas_List *l; ++ int correct_id; ++ int count; ++ printf("FIXING PARTS ID \n"); ++ ++ //TODO order the list first to be more robust ++ ++ /* 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); ++ 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 */ ++ count = evas_list_count(ed->collection->parts); ++ if (count != ed->table_parts_size) ++ { ++ ed->table_parts = realloc(ed->table_parts, SZ(Edje_Real_Part *) * count); ++ ed->table_parts_size = count; ++ } ++ ++ //printf("\n"); ++} ++ +/*****************/ +/* GENERAL API */ +/*****************/ @@ -1884,6 +2169,23 @@ + return 1; +} + ++ ++EAPI unsigned char ++edje_edit_group_exist(Evas_Object *obj, const char *group) ++{ ++ Evas_List *l; ++ GET_ED_OR_RETURN(0) ++ for (l = ed->file->collection_dir->entries; l; l = l->next) ++ { ++ Edje_Part_Collection_Directory_Entry *e; ++ ++ e = l->data; ++ if (e->entry && !strcmp(e->entry, group)) ++ return 1; ++ } ++ return 0; ++} ++ +EAPI void +edje_edit_group_name_set(Evas_Object *obj, const char *new_name) +{ @@ -2001,336 +2303,125 @@ + if (_edje_real_part_get(ed, name)) + return FALSE; + -+ /* Alloc Edje_Part or return */ -+ ep = mem_alloc(sizeof(Edje_Part)); -+ if (!ep) return FALSE; -+ -+ /* Alloc Edje_Real_Part or return */ -+ rp = mem_alloc(sizeof(Edje_Real_Part)); -+ if (!rp) -+ { -+ free(ep); -+ return FALSE; -+ } -+ -+ /* Init Edje_Part */ -+ pc = ed->collection; -+ pc->parts = evas_list_append(pc->parts, ep); -+ -+ ep->id = evas_list_count(pc->parts) - 1; -+ ep->type = type; -+ ep->name = evas_stringshare_add(name); -+ ep->mouse_events = 1; -+ ep->repeat_events = 0; -+ ep->pointer_mode = EVAS_OBJECT_POINTER_MODE_AUTOGRAB; -+ ep->precise_is_inside = 0; -+ ep->use_alternate_font_metrics = 0; -+ ep->clip_to_id = -1; -+ ep->dragable.confine_id = -1; -+ ep->dragable.events_id = -1; -+ -+ ep->default_desc = NULL; -+ ep->other_desc = NULL; -+ -+ /* Init Edje_Real_Part */ -+ rp->edje = ed; -+ _edje_ref(rp->edje); -+ rp->part = ep; -+ -+ if (ep->type == EDJE_PART_TYPE_RECTANGLE) -+ rp->object = evas_object_rectangle_add(ed->evas); -+ else if (ep->type == EDJE_PART_TYPE_IMAGE) -+ rp->object = evas_object_image_add(ed->evas); -+ else if (ep->type == EDJE_PART_TYPE_TEXT) -+ { -+ _edje_text_part_on_add(ed, rp); -+ rp->object = evas_object_text_add(ed->evas); -+ evas_object_text_font_source_set(rp->object, ed->path); -+ } -+ else if (ep->type == EDJE_PART_TYPE_SWALLOW || -+ ep->type == EDJE_PART_TYPE_GROUP) -+ { -+ rp->object = evas_object_rectangle_add(ed->evas); -+ evas_object_color_set(rp->object, 0, 0, 0, 0); -+ evas_object_pass_events_set(rp->object, 1); -+ evas_object_pointer_mode_set(rp->object, EVAS_OBJECT_POINTER_MODE_NOGRAB); -+ } -+ else if (ep->type == EDJE_PART_TYPE_TEXTBLOCK) -+ rp->object = evas_object_textblock_add(ed->evas); -+ else if (ep->type == EDJE_PART_TYPE_GRADIENT) -+ rp->object = evas_object_gradient_add(ed->evas); -+ else -+ { -+ printf("EDJE ERROR: wrong part type %i!\n", ep->type); -+ } -+ if (rp->object) -+ { -+ evas_object_smart_member_add(rp->object, ed->obj); -+ evas_object_layer_set(rp->object, evas_object_layer_get(ed->obj)); -+ if (ep->type != EDJE_PART_TYPE_SWALLOW && ep->type != EDJE_PART_TYPE_GROUP) -+ { -+ if (ep->mouse_events) -+ { -+ _edje_callbacks_add(rp->object, ed, rp); -+ if (ep->repeat_events) -+ evas_object_repeat_events_set(rp->object, 1); -+ -+ if (ep->pointer_mode != EVAS_OBJECT_POINTER_MODE_AUTOGRAB) -+ evas_object_pointer_mode_set(rp->object, ep->pointer_mode); -+ } -+ else -+ { -+ evas_object_pass_events_set(rp->object, 1); -+ evas_object_pointer_mode_set(rp->object, -+ EVAS_OBJECT_POINTER_MODE_NOGRAB); -+ } -+ if (ep->precise_is_inside) -+ evas_object_precise_is_inside_set(rp->object, 1); -+ } -+ evas_object_clip_set(rp->object, ed->clipper); -+ } -+ rp->drag.step.x = ep->dragable.step_x; -+ rp->drag.step.y = ep->dragable.step_y; -+ rp->gradient_id = -1; -+ -+ -+ /* Update table_parts */ -+ ed->table_parts_size++; -+ ed->table_parts = realloc(ed->table_parts, -+ sizeof(Edje_Real_Part *) * ed->table_parts_size); -+ -+ ed->table_parts[ep->id % ed->table_parts_size] = rp; -+ -+ -+ /* Create default description */ -+ edje_edit_state_add(obj, name, "default"); -+ -+ rp->param1.description = ep->default_desc; -+ rp->chosen_description = rp->param1.description; -+ -+ edje_object_calc_force(obj); -+ -+ return TRUE; -+} -+ -+static void -+_edje_part_id_set(Edje *ed, Edje_Real_Part *rp, int new_id) -+{ -+ /* This function change the id of a given real_part. -+ * All the depedency will be updated too. -+ * Also the table_parts is updated, and the current *rp in the table -+ * is lost. -+ */ -+ int old_id; -+ Edje_Part *part; -+ Evas_List *l, *ll; -+ -+ part = rp->part; -+ -+ if (!part) return; -+ printf("CHANGE ID OF PART %s TO %d\n", part->name, new_id); -+ -+ if (!ed || !part || new_id < 0) return; -+ -+ if (part->id == new_id) return; -+ -+ old_id = part->id; -+ part->id = new_id; -+ -+ /* 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); -+ 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 */ -+ Edje_Part_Description *d; -+ d = p->default_desc; -+ //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 */ -+ for (ll = p->other_desc; ll; ll = ll->next) -+ { -+ d = ll->data; -+ //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 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 */ -+ ed->table_parts[new_id] = rp; -+} -+ -+static void -+_edje_part_id_switch(Edje *ed, Edje_Real_Part *rp1, Edje_Real_Part *rp2) -+{ -+ /* This function switch the id of two parts. -+ * All the depedency will be updated too. -+ * Also the table_parts is updated, -+ * The parts list isn't touched -+ */ -+ int id1; -+ int id2; -+ Evas_List *l, *ll; ++ /* Alloc Edje_Part or return */ ++ ep = mem_alloc(sizeof(Edje_Part)); ++ if (!ep) return FALSE; + -+ printf("SWITCH ID OF PART %d AND %d\n", rp1->part->id, rp2->part->id); ++ /* Alloc Edje_Real_Part or return */ ++ rp = mem_alloc(sizeof(Edje_Real_Part)); ++ if (!rp) ++ { ++ free(ep); ++ return FALSE; ++ } + -+ if (!ed || !rp1 || !rp2) return; -+ if (rp1 == rp2) return; ++ /* Init Edje_Part */ ++ pc = ed->collection; ++ pc->parts = evas_list_append(pc->parts, ep); + -+ id1 = rp1->part->id; -+ id2 = rp2->part->id; ++ ep->id = evas_list_count(pc->parts) - 1; ++ ep->type = type; ++ ep->name = evas_stringshare_add(name); ++ ep->mouse_events = 1; ++ ep->repeat_events = 0; ++ ep->pointer_mode = EVAS_OBJECT_POINTER_MODE_AUTOGRAB; ++ ep->precise_is_inside = 0; ++ ep->use_alternate_font_metrics = 0; ++ ep->clip_to_id = -1; ++ ep->dragable.confine_id = -1; ++ ep->dragable.events_id = -1; + -+ /* Switch ids */ -+ rp1->part->id = id2; -+ rp2->part->id = id1; ++ ep->default_desc = NULL; ++ ep->other_desc = NULL; + -+ /* adjust table_parts */ -+ ed->table_parts[id1] = rp2; -+ ed->table_parts[id2] = rp1; ++ /* Init Edje_Real_Part */ ++ rp->edje = ed; ++ _edje_ref(rp->edje); ++ rp->part = ep; + -+ // Fix all the dependecies in all parts... -+ for (l = ed->collection->parts; l; l = l->next) ++ if (ep->type == EDJE_PART_TYPE_RECTANGLE) ++ rp->object = evas_object_rectangle_add(ed->evas); ++ else if (ep->type == EDJE_PART_TYPE_IMAGE) ++ rp->object = evas_object_image_add(ed->evas); ++ else if (ep->type == EDJE_PART_TYPE_TEXT) + { -+ Edje_Part *p; -+ p = l->data; -+ //printf(" search id: %d in %s\n", old_id, p->name); -+ if (p->clip_to_id == id1) p->clip_to_id = id2; -+ else if (p->clip_to_id == id2) p->clip_to_id = id1; -+ if (p->dragable.confine_id == id1) p->dragable.confine_id = id2; -+ else if (p->dragable.confine_id == id2) p->dragable.confine_id = id1; -+ -+ // ...in default description -+ Evas_List *ll; -+ Edje_Part_Description *d; -+ d = p->default_desc; -+ // 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; -+ else if (d->rel1.id_y == id2) d->rel1.id_y = id1; -+ if (d->rel2.id_x == id1) d->rel2.id_x = id2; -+ else if (d->rel2.id_x == id2) d->rel2.id_x = id1; -+ if (d->rel2.id_y == id1) d->rel2.id_y = id2; -+ else if (d->rel2.id_y == id2) d->rel2.id_y = id1; -+ if (d->text.id_source == id1) d->text.id_source = id2; -+ else if (d->text.id_source == id2) d->text.id_source = id1; -+ if (d->text.id_text_source == id1) d->text.id_text_source = id2; -+ else if (d->text.id_text_source == id2) d->text.id_text_source = id2; -+ // ...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); -+ 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; -+ else if (d->rel1.id_y == id2) d->rel1.id_y = id1; -+ if (d->rel2.id_x == id1) d->rel2.id_x = id2; -+ else if (d->rel2.id_x == id2) d->rel2.id_x = id1; -+ if (d->rel2.id_y == id1) d->rel2.id_y = id2; -+ else if (d->rel2.id_y == id2) d->rel2.id_y = id1; -+ if (d->text.id_source == id1) d->text.id_source = id2; -+ else if (d->text.id_source == id2) d->text.id_source = id1; -+ if (d->text.id_text_source == id1) d->text.id_text_source = id2; -+ else if (d->text.id_text_source == id2) d->text.id_text_source = id2; -+ } ++ _edje_text_part_on_add(ed, rp); ++ rp->object = evas_object_text_add(ed->evas); ++ evas_object_text_font_source_set(rp->object, ed->path); + } -+ //...and also in programs targets -+ for (l = ed->collection->programs; l; l = l->next) ++ else if (ep->type == EDJE_PART_TYPE_SWALLOW || ++ ep->type == EDJE_PART_TYPE_GROUP) + { -+ Edje_Program *epr; -+ -+ epr = l->data; -+ if (epr->action != EDJE_ACTION_TYPE_STATE_SET) -+ continue; -+ -+ for (ll = epr->targets; ll; ll = ll->next) ++ rp->object = evas_object_rectangle_add(ed->evas); ++ evas_object_color_set(rp->object, 0, 0, 0, 0); ++ evas_object_pass_events_set(rp->object, 1); ++ evas_object_pointer_mode_set(rp->object, EVAS_OBJECT_POINTER_MODE_NOGRAB); ++ } ++ else if (ep->type == EDJE_PART_TYPE_TEXTBLOCK) ++ rp->object = evas_object_textblock_add(ed->evas); ++ else if (ep->type == EDJE_PART_TYPE_GRADIENT) ++ rp->object = evas_object_gradient_add(ed->evas); ++ else ++ { ++ printf("EDJE ERROR: wrong part type %i!\n", ep->type); ++ } ++ if (rp->object) ++ { ++ evas_object_smart_member_add(rp->object, ed->obj); ++ evas_object_layer_set(rp->object, evas_object_layer_get(ed->obj)); ++ if (ep->type != EDJE_PART_TYPE_SWALLOW && ep->type != EDJE_PART_TYPE_GROUP) + { -+ Edje_Program_Target *pt; -+ -+ pt = ll->data; -+ if (pt->id == id1) pt->id = id2; -+ else if (pt->id == id2) pt->id = id1; ++ if (ep->mouse_events) ++ { ++ _edje_callbacks_add(rp->object, ed, rp); ++ if (ep->repeat_events) ++ evas_object_repeat_events_set(rp->object, 1); ++ ++ if (ep->pointer_mode != EVAS_OBJECT_POINTER_MODE_AUTOGRAB) ++ evas_object_pointer_mode_set(rp->object, ep->pointer_mode); ++ } ++ else ++ { ++ evas_object_pass_events_set(rp->object, 1); ++ evas_object_pointer_mode_set(rp->object, ++ EVAS_OBJECT_POINTER_MODE_NOGRAB); ++ } ++ if (ep->precise_is_inside) ++ evas_object_precise_is_inside_set(rp->object, 1); + } ++ evas_object_clip_set(rp->object, ed->clipper); + } -+ //TODO Real part dependencies are ok? -+} -+static void -+_edje_fix_parts_id(Edje *ed) -+{ -+ /* We use this to clear the id hole leaved when a part is removed. -+ * After the execution of this function all parts will have a right -+ * (uniqe & ordered) id. The table_parts is also updated. -+ */ -+ Evas_List *l; -+ int correct_id; -+ int count; -+ printf("FIXING PARTS ID \n"); ++ rp->drag.step.x = ep->dragable.step_x; ++ rp->drag.step.y = ep->dragable.step_y; ++ rp->gradient_id = -1; ++ + -+ //TODO order the list first to be more robust ++ /* Update table_parts */ ++ ed->table_parts_size++; ++ ed->table_parts = realloc(ed->table_parts, ++ sizeof(Edje_Real_Part *) * ed->table_parts_size); + -+ /* 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); -+ if (p->id != correct_id) -+ _edje_part_id_set(ed, ed->table_parts[p->id], correct_id); -+ -+ correct_id++; -+ } ++ ed->table_parts[ep->id % ed->table_parts_size] = rp; + -+ /* If we have removed some parts realloc table_parts */ -+ count = evas_list_count(ed->collection->parts); -+ if (count != ed->table_parts_size) -+ { -+ ed->table_parts = realloc(ed->table_parts, SZ(Edje_Real_Part *) * count); -+ ed->table_parts_size = count; -+ } + -+ //printf("\n"); ++ /* Create default description */ ++ edje_edit_state_add(obj, name, "default"); ++ ++ rp->param1.description = ep->default_desc; ++ rp->chosen_description = rp->param1.description; ++ ++ edje_object_calc_force(obj); ++ ++ return TRUE; +} + ++ ++ +EAPI unsigned char +edje_edit_part_del(Evas_Object *obj, const char* part) +{ + printf("REMOVE PART: %s\n", part); -+ Evas_List *l; ++ Evas_List *l, *ll; + Edje_Part *ep; + int id; + @@ -2340,7 +2431,7 @@ + + if (ed->table_parts_size <= 1) return FALSE; //don't remove the last part + -+ /* Clear Edje_Real_Parts that link to the removed one */ ++ /* Unlik Edje_Real_Parts that link to the removed one */ + int i; + for (i = 0; i < ed->table_parts_size; i++) + { @@ -2374,37 +2465,9 @@ + //TODO confine ?? + } + -+ /* 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; -+ if (p->dragable.confine_id == id) p->dragable.confine_id = 0; //TODO is 0 right?? don't tink so -+ -+ Evas_List *ll; -+ Edje_Part_Description *d; -+ d = p->default_desc; -+ if (d->rel1.id_x == id) d->rel1.id_x = -1; -+ if (d->rel1.id_y == id) d->rel1.id_y = -1; -+ if (d->rel2.id_x == id) d->rel2.id_x = -1; -+ if (d->rel2.id_y == id) d->rel2.id_y = -1; -+ if (d->text.id_source == id) d->text.id_source = -1; -+ if (d->text.id_text_source == id) d->text.id_text_source = -1; -+ -+ for (ll = p->other_desc; ll; ll = ll->next) -+ { -+ d = ll->data; -+ if (d->rel1.id_x == id) d->rel1.id_x = -1; -+ if (d->rel1.id_y == id) d->rel1.id_y = -1; -+ if (d->rel2.id_x == id) d->rel2.id_x = -1; -+ if (d->rel2.id_y == id) d->rel2.id_y = -1; -+ if (d->text.id_source == id) d->text.id_source = -1; -+ if (d->text.id_text_source == id) d->text.id_text_source = -1; -+ } -+ } -+ ++ /* Unlink all the parts and descriptions that refer to id */ ++ _edje_part_id_set(ed, rp, -1); ++ + /* Remove part from parts list */ + Edje_Part_Collection *pc; + pc = ed->collection; @@ -2428,7 +2491,7 @@ + } + free(ep); + -+ /* Free real_part */ ++ /* Free Edje_Real_Part */ + _edje_real_part_free(rp); + + @@ -2437,6 +2500,14 @@ +} + + ++ ++EAPI unsigned char ++edje_edit_part_exist(Evas_Object *obj, const char *part) ++{ ++ GET_RP_OR_RETURN(0) ++ return 1; ++} ++ +EAPI unsigned char +edje_edit_part_restack_below(Evas_Object *obj, const char* part) +{ @@ -2453,7 +2524,7 @@ + group->parts = evas_list_remove(group->parts, rp->part); + group->parts = evas_list_prepend_relative(group->parts, rp->part, prev->part); + -+ _edje_part_id_switch(ed, rp, prev); ++ _edje_parts_id_switch(ed, rp, prev); + + evas_object_stack_below(rp->object, prev->object); + @@ -2478,7 +2549,7 @@ + group->parts = evas_list_append_relative(group->parts, rp->part, next->part); + + /* update ids */ -+ _edje_part_id_switch(ed, rp, next); ++ _edje_parts_id_switch(ed, rp, next); + + evas_object_stack_above(rp->object, next->object); + @@ -2833,6 +2904,13 @@ + pd->gradient.rel2.offset_y = -1; +} + ++ ++EAPI unsigned char ++edje_edit_state_exist(Evas_Object *obj, const char *part, const char *state) ++{ ++ GET_PD_OR_RETURN(0) ++ return 1; ++} +//relative +EAPI double +edje_edit_state_rel1_relative_x_get(Evas_Object *obj, const char *part, const char *state) @@ -4034,6 +4112,14 @@ + return 1; +} + ++ ++EAPI unsigned char ++edje_edit_program_exist(Evas_Object *obj, const char *prog) ++{ ++ GET_EPR_OR_RETURN(0) ++ return 1; ++} ++ +EAPI unsigned char +edje_edit_program_name_set(Evas_Object *obj, const char *prog, const char* new_name) +{ @@ -4565,13 +4651,29 @@ + + printf("****************** END ************************\n\n"); +} +Index: src/lib/edje_embryo.c +=================================================================== +RCS file: /cvs/e/e17/libs/edje/src/lib/edje_embryo.c,v +retrieving revision 1.58 +diff -u -r1.58 edje_embryo.c +--- src/lib/edje_embryo.c 25 Jan 2008 03:35:46 -0000 1.58 ++++ src/lib/edje_embryo.c 20 Feb 2008 19:23:01 -0000 +@@ -847,7 +847,7 @@ + Edje *ed; + int part_id = 0; + Edje_Real_Part *rp; +- char *s; ++ const char *s; + + CHKPARAM(4); + ed = embryo_program_data_get(ep); Index: src/lib/edje_load.c =================================================================== RCS file: /cvs/e/e17/libs/edje/src/lib/edje_load.c,v 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 23:41:28 -0000 ++++ src/lib/edje_load.c 20 Feb 2008 19:23:01 -0000 @@ -5,7 +5,7 @@ #include "Edje.h" #include "edje_private.h" @@ -4590,3 +4692,75 @@ _edje_collection_free_part_description_free(Edje_Part_Description *desc) { if (desc->state.name) evas_stringshare_del(desc->state.name); +Index: src/lib/edje_private.h +=================================================================== +RCS file: /cvs/e/e17/libs/edje/src/lib/edje_private.h,v +retrieving revision 1.137 +diff -u -r1.137 edje_private.h +--- src/lib/edje_private.h 19 Jan 2008 01:00:14 -0000 1.137 ++++ src/lib/edje_private.h 20 Feb 2008 19:23:01 -0000 +@@ -328,31 +328,31 @@ + + struct _Edje_Program /* a conditional program to be run */ + { +- int id; /* id of program */ +- char *name; /* name of the action */ ++ int id; /* id of program */ ++ const char *name; /* name of the action */ + +- char *signal; /* if signal emission name matches the glob here... */ +- char *source; /* if part that emitted this (name) matches this glob */ ++ const char *signal; /* if signal emission name matches the glob here... */ ++ const char *source; /* if part that emitted this (name) matches this glob */ + + struct { +- double from; +- double range; ++ double from; ++ double range; + } in; + +- int action; /* type - set state, stop action, set drag pos etc. */ +- char *state; /* what state of alternates to apply, NULL = default */ +- char *state2; /* what other state to use - for signal emit action */ +- double value; /* value of state to apply (if multiple names match) */ +- double value2; /* other value for drag actions */ ++ int action; /* type - set state, stop action, set drag pos etc. */ ++ const char *state; /* what state of alternates to apply, NULL = default */ ++ const char *state2; /* what other state to use - for signal emit action */ ++ double value; /* value of state to apply (if multiple names match) */ ++ double value2; /* other value for drag actions */ + + struct { +- int mode; /* how to tween - linear, sinusoidal etc. */ +- double time; /* time to graduate between current and new state */ ++ int mode; /* how to tween - linear, sinusoidal etc. */ ++ double time; /* time to graduate between current and new state */ + } tween; + +- Evas_List *targets; /* list of target parts to apply the state to */ ++ Evas_List *targets; /* list of target parts to apply the state to */ + +- Evas_List *after; /* list of actions to run at the end of this, for looping */ ++ Evas_List *after; /* list of actions to run at the end of this, for looping */ + }; + + struct _Edje_Program_Target /* the target of an action */ +@@ -411,7 +411,7 @@ + + struct _Edje_Part + { +- char *name; /* the name if any of the part */ ++ const char *name; /* the name if any of the part */ + Edje_Part_Description *default_desc; /* the part descriptor for default */ + Evas_List *other_desc; /* other possible descriptors */ + char *source; +@@ -450,7 +450,7 @@ + { + struct { + double value; /* the value of the state (for ranges) */ +- char *name; /* the named state if any */ ++ const char *name; /* the named state if any */ + } state; + + struct { ------------------------------------------------------------------------- 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