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

Reply via email to