some notes for me about edje program expansions..
authorCarsten Haitzler <raster@rasterman.com>
Wed, 23 Jul 2003 05:19:50 +0000 (05:19 +0000)
committerCarsten Haitzler <raster@rasterman.com>
Wed, 23 Jul 2003 05:19:50 +0000 (05:19 +0000)
SVN revision: 7219

legacy/edje/src/bin/edje_cc.h
legacy/edje/src/bin/edje_cc_parse.c
legacy/edje/src/lib/edje_private.h
legacy/edje/src/lib/edje_util.c

index 2983f78e5a5120f17829aa51815ca1fdcdf2736f..ae751c2f69eabe4ca3328f3270f5724a6671e3d4 100644 (file)
@@ -44,6 +44,8 @@ void    data_process_lookups(void);
     
     
 void    compile(void);
+int     is_param(int n);
+int     is_num(int n);    
 char   *parse_str(int n);
 int     parse_enum(int n, ...);
 int     parse_int(int n);
index 9664470c56ca7a5723fda61d311eda15283d95fe..7af69accb05f53178826ad1e461bfad7b4fa7e80 100644 (file)
@@ -353,6 +353,37 @@ compile(void)
    close(fd);
 }
 
+int
+is_param(int n)
+{
+   char *str;
+   
+   str = evas_list_nth(params, n);
+   if (str) return 1;
+   return 0;
+}
+
+int
+is_num(int n)
+{
+   char *str;
+   long int ret;
+   char *end;
+   
+   str = evas_list_nth(params, n);
+   if (!str)
+     {
+       fprintf(stderr, "%s: Error. %s:%i no parameter supplied as argument %i\n",
+               progname, file_in, line, n + 1);
+       exit(-1);       
+     }
+   if (str[0] == 0) return 0;
+   end = str;
+   ret = strtol(str, &end, 0);
+   if ((end != str) && (end[0] == 0)) return 1;
+   return 0;
+}
+
 char *
 parse_str(int n)
 {
index 3cc14e78f8ebaf5f4f70fe2f77c46729fda9b460..feb4a0abab62132736dbf5487ff949d4acb23233 100644 (file)
@@ -16,6 +16,8 @@
 #include <fnmatch.h>
 
 /* FIXME:
+ * 
+ * dont segv if given the wrong collection name
  * 
  * dragables have to work
  * drag start/top signals etc.
  * need to detect clip_to part loops
  * need to detect confine_to part loops
  * 
+ * ? programs need to be able to set/get/add/sub and compare variables
+ *   ie: 
+ *     action, INT "active_state" = INT 1;
+ *     ...
+ *     action, INT "hidden" = INT 10;
+ *     ...
+ *     action, STR "my_string" = STR "some content here";
+ *     ...
+ *     action, INT "count" += INT 10;
+ *     ...
+ *     action, INT "count" -= INT 10;
+ *     action, INT "count" += MOUSE_X "this_part";
+ *     ...
+ *     action, INT "count" *= INT "another_variable";
+ *     action, INT "count" -= INT 10;
+ *     action, INT "count" /= INT 2;
+ *     ...
+ * 
+ *     if,  INT "active_state" == 1;
+ *     ...
+ *     if,  MOUSE_X     "" > 1;
+ *     or,  MOUSE_X     "this_part" > 50;
+ *     or,  MOUSE_X_REL "this_part" <= 0.5;
+ *     ...
+ *     if,  INT "active_state" != 0;
+ *     and, INT "hidden" < 10;
+ *     or,  STR "my_string" == "smelly";
+ *     ...
+ * 
  * ? programs need to be able to "toggle" part states given a list of states
- * ? programs could be extended further
  * ? reduce linked list walking and list_nth calls
  * ? add containering (hbox, vbox, table, wrapping multi-line hbox & vbox)
- * ? text entry widget (single line)
+ * ? text entry widget (single line only)
  * ? add numeric params to conditions for progs (ranges etc.)
  * ? key/value pair config values per colelction and per edje file
  */
index 682ff220417c339d7286d3ba5594fcde010fe10e..1c4b7bbf14609ba90116e5a1834cc09cf0f28342 100644 (file)
@@ -275,6 +275,18 @@ edje_object_part_swallow(Evas_Object *obj, const char *part, Evas_Object *obj_sw
        rp->swallow_params.max.w = w;
        rp->swallow_params.max.h = h;
      }
+   else if ((type) && ((!strcmp(type, "text")) ||
+                      (!strcmp(type, "polygon")) ||
+                      (!strcmp(type, "line"))))
+     {
+       double w, h;
+       
+       evas_object_geometry_get(obj_swallow, NULL, NULL, &w, &h);
+       rp->swallow_params.min.w = w;
+       rp->swallow_params.min.h = h;
+       rp->swallow_params.max.w = w;
+       rp->swallow_params.max.h = h;
+     }
    else
      {
        rp->swallow_params.min.w =