Enlightenment CVS committal

Author  : davemds
Project : e17
Module  : proto/edje_editor

Dir     : e17/proto/edje_editor/src/bin


Modified Files:
        callbacks.c callbacks.h evas.c interface.c interface.h main.c 
        main.h 


Log Message:
First commit with in-edje-editing

===================================================================
RCS file: /cvs/e/e17/proto/edje_editor/src/bin/callbacks.c,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -3 -r1.36 -r1.37
--- callbacks.c 27 Nov 2007 18:43:32 -0000      1.36
+++ callbacks.c 28 Nov 2007 07:10:52 -0000      1.37
@@ -229,6 +229,7 @@
 on_PartsTree_row_selected(Etk_Object *object, Etk_Tree_Row *row, void *data)
 {
    int row_type=0;
+   char *part;
    Engrave_Group* old_group = Cur.eg;
 
    printf("Row Selected Signal on one of the Tree EMITTED \n");
@@ -260,6 +261,21 @@
          UpdateScriptFrame();
          break;
       case ROW_PART:
+#if TEST_DIRECT_EDJE
+         Cur.part = etk_string_set(Cur.part, etk_tree_row_data_get (row));
+         Cur.state = etk_string_clear(Cur.state);
+         Cur.state_n = 0;
+         
+         
edje_object_signal_emit(edje_ui,"description_frame_hide","edje_editor");
+         edje_object_signal_emit(edje_ui,"position_frame_hide","edje_editor");
+         edje_object_signal_emit(edje_ui,"rect_frame_hide","edje_editor");
+         edje_object_signal_emit(edje_ui,"image_frame_hide","edje_editor");
+         edje_object_signal_emit(edje_ui,"text_frame_hide","edje_editor");
+         edje_object_signal_emit(edje_ui,"group_frame_hide","edje_editor");
+         edje_object_signal_emit(edje_ui,"program_frame_hide","edje_editor");
+         edje_object_signal_emit(edje_ui,"part_frame_show","edje_editor");
+         edje_object_signal_emit(edje_ui,"script_frame_hide","edje_editor");
+#else
          Cur.epr = NULL;
          Cur.ep = etk_tree_row_data_get (row);
          Cur.eg = Cur.ep->parent;
@@ -276,8 +292,27 @@
          edje_object_signal_emit(edje_ui,"script_frame_hide","edje_editor");
          
          UpdatePartFrame();
+#endif
          break;
-      case ROW_DESC: 
+      case ROW_DESC:
+#if TEST_DIRECT_EDJE
+         Cur.state = etk_string_set(Cur.state,etk_tree_row_data_get (row));
+         //get the parent part of the row from the hidden col
+         etk_tree_row_fields_get(row,
+            etk_tree_nth_col_get(ETK_TREE(UI_PartsTree), 3),&part,
+            NULL);
+         Cur.part = etk_string_set(Cur.part, part);
+       
+         UpdatePositionFrame();
+       
+         edje_object_signal_emit(edje_ui,"part_frame_hide","edje_editor");
+         edje_object_signal_emit(edje_ui,"group_frame_hide","edje_editor");
+         edje_object_signal_emit(edje_ui,"program_frame_hide","edje_editor");
+         edje_object_signal_emit(edje_ui,"script_frame_hide","edje_editor");
+         
+         
edje_object_signal_emit(edje_ui,"description_frame_show","edje_editor");
+         edje_object_signal_emit(edje_ui,"position_frame_show","edje_editor");
+#else
          Cur.epr = NULL;
          Cur.eps = etk_tree_row_data_get (row);
          Cur.ep = Cur.eps->parent;
@@ -322,6 +357,7 @@
          
          
edje_object_signal_emit(edje_ui,"description_frame_show","edje_editor");
          edje_object_signal_emit(edje_ui,"position_frame_show","edje_editor");
+#endif
          break;
       case ROW_PROG:
          Cur.epr = etk_tree_row_data_get (row);
@@ -701,7 +737,36 @@
 on_RelSpinner_value_changed(Etk_Range *range, double value, void *data)
 {
    printf("Value Changed Signal on RelSpinner EMITTED (value: 
%f)\n",etk_range_value_get(range));
-
+#if TEST_DIRECT_EDJE
+   if (etk_string_length_get(Cur.state) && etk_string_length_get(Cur.part))
+   {
+      switch ((int)data)
+      {
+         case REL1X_SPINNER:
+            edje_edit_state_rel1_relative_x_set(edje_o, 
+                                    Cur.part->string, Cur.state->string,
+                                    etk_range_value_get(range));
+            break;
+         case REL1Y_SPINNER:
+            edje_edit_state_rel1_relative_y_set(edje_o, 
+                                    Cur.part->string, Cur.state->string,
+                                    etk_range_value_get(range));
+           
+            break;
+         case REL2X_SPINNER:
+            edje_edit_state_rel2_relative_x_set(edje_o, 
+                                    Cur.part->string, Cur.state->string,
+                                    etk_range_value_get(range));
+            break;
+         case REL2Y_SPINNER:
+            edje_edit_state_rel2_relative_y_set(edje_o, 
+                                    Cur.part->string, Cur.state->string,
+                                    etk_range_value_get(range));
+            break;
+      }
+      ev_redraw();
+   }
+#else
    if (Cur.eps)
    {
       switch ((int)data)
@@ -722,7 +787,7 @@
       ev_redraw();
       //ev_draw_focus();
    }
-
+#endif
    return ETK_TRUE;
 }
 
@@ -1054,6 +1119,19 @@
    return ETK_TRUE;
 }
 
+#if TEST_DIRECT_EDJE
+Etk_Bool
+on_GroupsComboBox_changed(Etk_Combobox *combobox, void *data)
+{
+   Etk_Combobox_Item *item;
+   char *gr;
+   
+   item = etk_combobox_active_item_get(combobox);
+   gr = etk_combobox_item_field_get(item,0);
+   printf("Group combo changed: %s\n",gr);
+   ChangeGroup(gr);
+}
+#endif
 Etk_Bool
 on_TransitionComboBox_changed(Etk_Combobox *combobox, void *data)
 {
===================================================================
RCS file: /cvs/e/e17/proto/edje_editor/src/bin/callbacks.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -3 -r1.17 -r1.18
--- callbacks.h 27 Nov 2007 18:43:32 -0000      1.17
+++ callbacks.h 28 Nov 2007 07:10:52 -0000      1.18
@@ -52,3 +52,7 @@
 Etk_Bool on_TransitionComboBox_changed     (Etk_Combobox *combobox, void 
*data);
 Etk_Bool on_DurationSpinner_value_changed  (Etk_Range *range, double value, 
void *data);
 Etk_Bool on_AfterEntry_text_changed        (Etk_Object *object, void *data);
+
+#if TEST_DIRECT_EDJE
+Etk_Bool on_GroupsComboBox_changed(Etk_Combobox *combobox, void *data);
+#endif
===================================================================
RCS file: /cvs/e/e17/proto/edje_editor/src/bin/evas.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -3 -r1.17 -r1.18
--- evas.c      25 Nov 2007 18:42:55 -0000      1.17
+++ evas.c      28 Nov 2007 07:10:52 -0000      1.18
@@ -40,12 +40,19 @@
       //Calc the rel1_relative_x value
       evas_object_geometry_get(rel1X_parent_handler, &parentx,
                                 &parenty, &parentw, &parenth);
+#if TEST_DIRECT_EDJE
+      edje_edit_state_rel1_relative_x_set(edje_o, Cur.part->string, 
Cur.state->string, (float)(mouse_x - parentx)/(float)parentw);
+#else
       Cur.eps->rel1.relative.x = (float)(mouse_x - parentx)/(float)parentw;
-
+#endif      
       //Calc the rel1_relative_y value
       evas_object_geometry_get(rel1Y_parent_handler, &parentx,
                                 &parenty, &parentw, &parenth);
+#if TEST_DIRECT_EDJE
+      edje_edit_state_rel1_relative_y_set(edje_o, Cur.part->string, 
Cur.state->string, (float)(mouse_y - parenty)/(float)parenth);
+#else
       Cur.eps->rel1.relative.y = (float)(mouse_y - parenty)/(float)parenth;
+#endif
 
       UpdatePositionFrame();
    }
@@ -58,12 +65,20 @@
       //Calc the rel2_relative_x value
       evas_object_geometry_get(rel2X_parent_handler,
                                 &parentx, &parenty, &parentw, &parenth);
+#if TEST_DIRECT_EDJE
+      edje_edit_state_rel2_relative_x_set(edje_o, Cur.part->string, 
Cur.state->string, (float)(mouse_x - parentx)/(float)parentw);
+#else
       Cur.eps->rel2.relative.x = (float)(mouse_x - parentx)/(float)parentw;
+#endif
 
       //Calc the rel2_relative_y value
       evas_object_geometry_get(rel2Y_parent_handler, &parentx,
                                 &parenty, &parentw, &parenth);
+#if TEST_DIRECT_EDJE
+      edje_edit_state_rel2_relative_y_set(edje_o, Cur.part->string, 
Cur.state->string, (float)(mouse_y - parenty)/(float)parenth);
+#else
       Cur.eps->rel2.relative.y = (float)(mouse_y - parenty)/(float)parenth;
+#endif
 
       UpdatePositionFrame();
    }
@@ -167,6 +182,7 @@
 
    //Place Fakewin 
    ev_move_fake(280,75);
+   ev_resize_fake(200,200);
 }
 
 void
@@ -181,6 +197,154 @@
    if (Cur.ep && !Cur.ep->current_state)
       Cur.ep->current_state = Cur.ep->states->data;
 
+#if TEST_DIRECT_EDJE
+   // If a part is selected draw the Focus Handler (only the yellow box)
+   if (etk_string_length_get(Cur.part))//&& Cur.ep->current_state)
+   {
+      int wx, wy;
+      int px,py,pw,ph;
+       
+      evas_object_geometry_get(EV_fakewin,&wx,&wy,NULL,NULL);
+      
+      edje_edit_part_real_coord_get(edje_o, Cur.part->string, &px, &py, &pw, 
&ph);
+      evas_object_move(focus_handler,
+            px + wx - 2, //- Cur.ep->current_state->rel1.offset.x - 2,
+            py + wy - 2);// - Cur.ep->current_state->rel1.offset.y - 2);
+
+      evas_object_resize(focus_handler,
+            pw + 2, // + Cur.ep->current_state->rel1.offset.x - 
Cur.ep->current_state->rel2.offset.x + 2,
+            ph + 2);// + Cur.ep->current_state->rel1.offset.y - 
Cur.ep->current_state->rel2.offset.y + 2);
+      evas_object_raise (focus_handler);
+      evas_object_show(focus_handler);
+   }else
+   {
+      evas_object_hide(focus_handler);
+   }
+   // if a part description is selected draw also the parent handlers (the red 
and blue lines)
+   //if(Cur.eps && EV_fakewin && 0)
+   if (etk_string_length_get(Cur.state))
+   {
+      int px,py,pw,ph;
+      printf("Draw parent Handlers\n");
+
+      //Get the geometry of fakewin
+      evas_object_geometry_get(EV_fakewin,&fx,&fy,&fw,&fh);
+      edje_edit_part_real_coord_get(edje_o, Cur.part->string, &px, &py, &pw, 
&ph);
+      printf("FW geom: %d %d %d %d\n",fx,fy,fw,fh);
+      printf("PA geom: %d %d %d %d\n",px,py,pw,ph);
+       
+      //Draw rel1 & rel2 point
+      evas_object_move (rel1_handler,
+            fx + px - 2,
+            fy + py - 2);
+      evas_object_show(rel1_handler);
+      evas_object_raise(rel1_handler);
+
+      evas_object_move (rel2_handler,
+            fx + px + pw - 4,
+            fy + py + ph - 4);
+      evas_object_show(rel2_handler);
+      evas_object_raise(rel2_handler);
+
+
+      ParentX = fx;
+      ParentY = fy;
+      ParentW = fw;
+      ParentH = fh;
+       
+      //draw Rel1X_ParentH (top line)
+      //~ if (engrave_part_state_rel1_to_x_get(Cur.eps)){
+         //~ relto_part = engrave_group_part_by_name_find(Cur.eg,
+                        //~ engrave_part_state_rel1_to_x_get(Cur.eps));
+         //~ if (relto_part->current_state)
+         //~ {
+            //~ ParentX = fx + relto_part->pos.x;
+            //~ ParentY = fy + relto_part->pos.y;
+            //~ ParentW = relto_part->pos.w;
+            //~ ParentH = relto_part->pos.h;
+         //~ }
+      //~ }else{//Get FakeWin Geom
+         //~ evas_object_geometry_get (EV_fakewin, &ParentX, &ParentY, 
&ParentW, &ParentH);
+      //~ }
+
+      evas_object_line_xy_set (rel1X_parent_handler, ParentX, ParentY, 
ParentX+ParentW, ParentY);
+      
+      //~ //draw Rel1Y_ParentH (left line)
+      //~ if (engrave_part_state_rel1_to_y_get(Cur.eps)){
+         //~ relto_part = engrave_group_part_by_name_find(Cur.eg,
+                        //~ engrave_part_state_rel1_to_y_get(Cur.eps));
+         //~ if (relto_part->current_state)
+         //~ {
+            //~ ParentX = fx + relto_part->pos.x;
+            //~ ParentY = fy + relto_part->pos.y;
+            //~ ParentW = relto_part->pos.w;
+            //~ ParentH = relto_part->pos.h;
+         //~ }
+      //~ }else{//Get FakeWin Geom
+         //~ evas_object_geometry_get (EV_fakewin, &ParentX, &ParentY, 
&ParentW, &ParentH);
+      //~ }
+      evas_object_line_xy_set (rel1Y_parent_handler, ParentX, ParentY, 
ParentX, ParentY+ParentH);
+
+      //~ //draw Rel2X_ParentH (bottom line)
+      //~ if (engrave_part_state_rel2_to_x_get(Cur.eps)){
+         //~ relto_part = engrave_group_part_by_name_find(Cur.eg,
+                        //~ engrave_part_state_rel2_to_x_get(Cur.eps));
+         //~ if (relto_part->current_state)
+         //~ {
+            //~ ParentX = fx + relto_part->pos.x;
+            //~ ParentY = fy + relto_part->pos.y;
+            //~ ParentW = relto_part->pos.w;
+            //~ ParentH = relto_part->pos.h;
+         //~ }
+      //~ }else{//Get FakeWin Geom
+         //~ evas_object_geometry_get (EV_fakewin, &ParentX, &ParentY, 
&ParentW, &ParentH);
+      //~ }
+      //~ //evas_object_move (rel2X_parent_handler, ParentX,ParentY+ParentH-1);
+      //~ //evas_object_resize(rel2X_parent_handler,ParentW,2);
+      evas_object_line_xy_set (rel2X_parent_handler, ParentX, ParentY+ParentH, 
ParentX+ParentW, ParentY+ParentH);
+
+
+      //~ //draw Rel2Y_ParentH (right line)
+      //~ if (engrave_part_state_rel2_to_y_get(Cur.eps)){
+         //~ relto_part = engrave_group_part_by_name_find(Cur.eg,
+                        //~ engrave_part_state_rel2_to_y_get(Cur.eps));
+         //~ if (relto_part->current_state)
+         //~ {
+            //~ ParentX = fx + relto_part->pos.x;
+            //~ ParentY = fy + relto_part->pos.y;
+            //~ ParentW = relto_part->pos.w;
+            //~ ParentH = relto_part->pos.h;
+         //~ }
+      //~ }else{//Get FakeWin Geom
+         //~ evas_object_geometry_get (EV_fakewin, &ParentX, &ParentY, 
&ParentW, &ParentH);
+      //~ }
+      evas_object_line_xy_set (rel2Y_parent_handler, ParentX+ParentW, ParentY, 
ParentX+ParentW, ParentY+ParentH);
+
+      evas_object_raise(rel1X_parent_handler);
+      evas_object_show(rel1X_parent_handler);
+      evas_object_raise(rel1Y_parent_handler);
+      evas_object_show(rel1Y_parent_handler);
+      evas_object_raise(rel2X_parent_handler);
+      evas_object_show(rel2X_parent_handler);
+      evas_object_raise(rel2Y_parent_handler);
+      evas_object_show(rel2Y_parent_handler);
+      evas_object_raise(focus_handler);
+      evas_object_raise(rel1_handler);
+      evas_object_raise(rel2_handler);
+      
+      
+
+   }else{
+      edje_object_signal_emit(rel1_handler,"REL1_HIDE","edje_editor");
+      edje_object_signal_emit(focus_handler,"REL2_HIDE","edje_editor");
+      evas_object_hide(rel1X_parent_handler);
+      evas_object_hide(rel1Y_parent_handler);
+      evas_object_hide(rel2X_parent_handler);
+      evas_object_hide(rel2Y_parent_handler);
+      evas_object_hide(rel1_handler);
+      evas_object_hide(rel2_handler);
+   }
+#else
    // If a part is selected draw the Focus Handler (only the yellow box)
    if (Cur.ep && Cur.ep->current_state)
    {
@@ -293,8 +457,6 @@
       }else{//Get FakeWin Geom
          evas_object_geometry_get (EV_fakewin, &ParentX, &ParentY, &ParentW, 
&ParentH);
       }
-      //evas_object_move (rel2Y_parent_handler, ParentX+ParentW-1,ParentY);
-      //evas_object_resize(rel2Y_parent_handler,2,ParentH);
       evas_object_line_xy_set (rel2Y_parent_handler, ParentX+ParentW, ParentY, 
ParentX+ParentW, ParentY+ParentH);
 
       evas_object_raise(rel1X_parent_handler);
@@ -321,6 +483,7 @@
       evas_object_hide(rel1_handler);
       evas_object_hide(rel2_handler);
    }
+   #endif
 }
 
 void
@@ -356,7 +519,50 @@
    evas_object_move(EV_fakewin, x, y);
    evas_object_move(EV_movebox, x, y-14);
 }
+#if TEST_DIRECT_EDJE
+void
+ev_redraw(void)
+{
+   int x, y, w, h;
+
+   //printf("DRAW ALL\n");
+   //printf("PART: %s\n", Cur.part->string);
+   if (Cur.part)
+   {
+      //Get the geometry of ETK_canvas
+      //evas_object_geometry_get(EV_canvas_bg,&x,&y,&w,&h);
+
+      //Get the geometry of fakewin
+      evas_object_geometry_get(EV_fakewin,&x,&y,&w,&h);
 
+      //place engrave canvas
+      evas_object_move(edje_o, x, y);
+      evas_object_resize(edje_o, w+1, h);
+      //This make engrave_canvas redraw (BAD!!)
+//      engrave_canvas_current_group_set(engrave_canvas, Cur.eg);
+
+      evas_object_show(EV_fakewin);
+      evas_object_show(EV_movebox);
+     // evas_object_raise(EV_fakewin);
+     // evas_object_raise(EV_movebox);
+     // evas_object_raise(focus_handler);
+      
+      ev_draw_focus();
+
+   }else
+   {
+      evas_object_hide(engrave_canvas);
+      evas_object_hide(EV_fakewin);
+      evas_object_hide(EV_movebox);
+      evas_object_hide(rel1X_parent_handler);
+      evas_object_hide(rel1Y_parent_handler);
+      evas_object_hide(rel2X_parent_handler);
+      evas_object_hide(rel2Y_parent_handler);
+      evas_object_hide(rel1_handler);
+      evas_object_hide(rel2_handler);
+   }
+}
+#else
 void
 ev_redraw(void)
 {
@@ -402,5 +608,5 @@
       evas_object_hide(rel2_handler);
    }
 }
-
+#endif
 
===================================================================
RCS file: /cvs/e/e17/proto/edje_editor/src/bin/interface.c,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -3 -r1.43 -r1.44
--- interface.c 27 Nov 2007 18:43:32 -0000      1.43
+++ interface.c 28 Nov 2007 07:10:52 -0000      1.44
@@ -18,11 +18,90 @@
 }
 
 /* functions to update interface*/
+
+#if TEST_DIRECT_EDJE
+
 void
-AddGroupToTree(Engrave_Group* group)
+AddPartToTree2(char *part_name)//, char *group_name)//, int place_after, 
Engrave_Part* after)
 {
    Etk_Tree_Col *col1,*col2,*col3;
    Etk_Tree_Row *row=NULL;
+   char buf[20];
+
+   //printf("Add Part to tree: %s\n",par->name);
+   col1 = etk_tree_nth_col_get(ETK_TREE(UI_PartsTree), 0);
+   col2 = etk_tree_nth_col_get(ETK_TREE(UI_PartsTree), 1);
+   col3 = etk_tree_nth_col_get(ETK_TREE(UI_PartsTree), 2);
+
+   switch (edje_edit_part_type_get(edje_o ,part_name)){
+      case EDJE_PART_TYPE_IMAGE:
+         strcpy(buf,"IMAGE.PNG");
+      break;
+      case EDJE_PART_TYPE_TEXT:
+         strcpy(buf,"TEXT.PNG");
+      break;
+      case EDJE_PART_TYPE_RECTANGLE:
+         strcpy(buf,"RECT.PNG");
+      break;
+      default:
+         strcpy(buf,"NONE.PNG");
+      break;
+   }
+   
+ /*  if (place_after)
+      row = etk_tree_row_insert(ETK_TREE(UI_PartsTree),
+                                ecore_hash_get(hash,part->parent),
+                                ecore_hash_get(hash,after),
+                                col1, EdjeFile,buf, part->name,
+                                col3,ROW_PART,
+                                NULL);
+   else*/
+      row = etk_tree_row_append(ETK_TREE(UI_PartsTree),
+                                //ecore_hash_get(hash,part->parent),
+                                NULL,
+                                col1, EdjeFile,buf, part_name,
+                                col3, ROW_PART,
+                                NULL);
+
+   Parts_Hash = evas_hash_add(Parts_Hash, part_name, row);
+   etk_tree_row_data_set(row, part_name);
+}
+void
+AddStateToTree2(char *part_name, char *state_name)
+{
+   Etk_Tree_Col *col1,*col2,*col3, *col4;
+   Etk_Tree_Row *row;
+   
+   char buf[4096];
+   const char *stock_key;
+   col1 = etk_tree_nth_col_get(ETK_TREE(UI_PartsTree), 0);
+   col2 = etk_tree_nth_col_get(ETK_TREE(UI_PartsTree), 1);
+   col3 = etk_tree_nth_col_get(ETK_TREE(UI_PartsTree), 2);
+   col4 = etk_tree_nth_col_get(ETK_TREE(UI_PartsTree), 3);
+
+   //snprintf(buf,4096,"%s %.2f",state->name,state->value);
+   snprintf(buf,4096,"%s",state_name);
+   stock_key = etk_stock_key_get(ETK_STOCK_TEXT_X_GENERIC, ETK_STOCK_SMALL);
+   row = etk_tree_row_append(ETK_TREE(UI_PartsTree),
+            evas_hash_find(Parts_Hash,part_name),
+            col1, EdjeFile, "DESC.PNG", buf,
+            col2, TRUE,
+            col3, ROW_DESC,
+            col4, part_name, NULL);
+
+   etk_tree_row_data_set (row, state_name);
+   //ecore_hash_set(hash, state, row);
+
+
+
+}
+#endif
+
+void
+AddGroupToTree(Engrave_Group* group)
+{    
+   Etk_Tree_Col *col1,*col2,*col3;
+   Etk_Tree_Row *row=NULL;
 
    col1 = etk_tree_nth_col_get(ETK_TREE(UI_PartsTree), 0);
    col2 = etk_tree_nth_col_get(ETK_TREE(UI_PartsTree), 1);
@@ -130,7 +209,49 @@
    ecore_hash_set(hash, prog, row);
    etk_tree_row_data_set(row, prog);
 }
-
+#if TEST_DIRECT_EDJE
+void 
+PopulateTree2(void)
+{
+   Evas_List *parts;
+   Evas_List *states;
+   
+   etk_tree_clear(ETK_TREE(UI_PartsTree));
+        
+   parts = edje_edit_parts_list_get(edje_o);
+   while(parts)
+   {
+      //printf("  P: %s\n", (char*)parts->data);
+      AddPartToTree2((char*)parts->data);
+      states = edje_edit_part_states_get(edje_o, (char*)parts->data);
+      while(states)
+      {
+         //printf("    s: %s\n", (char*)states->data);
+         AddStateToTree2((char*)parts->data, (char*)states->data);
+         states = states->next;
+      }
+       
+      parts = parts->next;
+   }
+   etk_tree_row_select(etk_tree_first_row_get (ETK_TREE(UI_PartsTree)));
+}
+void 
+PopulateGroupsComboBox()
+{
+   Evas_List *groups;
+   Etk_Combobox_Item *ComboItem;
+   
+   groups = edje_file_collection_list(Cur.edj_file_name->string);
+   while(groups)
+   {
+      ComboItem = etk_combobox_item_append(ETK_COMBOBOX(UI_GroupsComboBox), 
(char*)groups->data);
+      groups = groups->next;
+   }
+   edje_file_collection_list_free  (groups);
+   etk_combobox_active_item_set(ETK_COMBOBOX(UI_GroupsComboBox),
+               etk_combobox_last_item_get (ETK_COMBOBOX(UI_GroupsComboBox)));
+}
+#else
 void
 PopulateTree(void)
 {
@@ -163,7 +284,7 @@
       }
    }
 }
-
+#endif
 void 
 PopulateFontsComboBox(void)
 {
@@ -650,7 +771,6 @@
 UpdatePositionFrame(void)
 {
    //printf("Update Position: %s (offset: 
%d)\n",Cur.eps->name,Cur.eps->rel1.offset.x);
-
    //Stop signal propagation
    etk_signal_block("value-changed", ETK_OBJECT(UI_Rel1XSpinner), 
ETK_CALLBACK(on_RelSpinner_value_changed), (void*)REL1X_SPINNER);
    etk_signal_block("value-changed", ETK_OBJECT(UI_Rel1YSpinner), 
ETK_CALLBACK(on_RelSpinner_value_changed), (void*)REL1Y_SPINNER);
@@ -661,6 +781,20 @@
    etk_signal_block("value-changed", ETK_OBJECT(UI_Rel2XOffsetSpinner), 
ETK_CALLBACK(on_RelOffsetSpinner_value_changed), (void*)REL2X_SPINNER);
    etk_signal_block("value-changed", ETK_OBJECT(UI_Rel2YOffsetSpinner), 
ETK_CALLBACK(on_RelOffsetSpinner_value_changed), (void*)REL2Y_SPINNER);
 
+#if TEST_DIRECT_EDJE
+   
+   if (!etk_string_length_get(Cur.state)) return;
+   if (!etk_string_length_get(Cur.part)) return;
+   
+   etk_range_value_set(ETK_RANGE(UI_Rel1XSpinner),
+      edje_edit_state_rel1_relative_x_get(edje_o, 
Cur.part->string,Cur.state->string));
+   etk_range_value_set(ETK_RANGE(UI_Rel1YSpinner),
+      edje_edit_state_rel1_relative_y_get(edje_o, 
Cur.part->string,Cur.state->string));
+   etk_range_value_set(ETK_RANGE(UI_Rel2XSpinner),
+      edje_edit_state_rel2_relative_x_get(edje_o, 
Cur.part->string,Cur.state->string));
+   etk_range_value_set(ETK_RANGE(UI_Rel2YSpinner),
+      edje_edit_state_rel2_relative_y_get(edje_o, 
Cur.part->string,Cur.state->string));
+#else
    //Set relative position spinners
    etk_range_value_set (ETK_RANGE(UI_Rel1XSpinner), Cur.eps->rel1.relative.x);
    etk_range_value_set (ETK_RANGE(UI_Rel1XOffsetSpinner), 
Cur.eps->rel1.offset.x);
@@ -670,7 +804,7 @@
    etk_range_value_set (ETK_RANGE(UI_Rel2XOffsetSpinner), 
Cur.eps->rel2.offset.x);
    etk_range_value_set (ETK_RANGE(UI_Rel2YSpinner), Cur.eps->rel2.relative.y);
    etk_range_value_set (ETK_RANGE(UI_Rel2YOffsetSpinner), 
Cur.eps->rel2.offset.y);
-
+#endif
    //Reenable signal propagation
    etk_signal_unblock("value-changed", ETK_OBJECT(UI_Rel1XSpinner), 
ETK_CALLBACK(on_RelSpinner_value_changed), (void*)REL1X_SPINNER);
    etk_signal_unblock("value-changed", ETK_OBJECT(UI_Rel1YSpinner), 
ETK_CALLBACK(on_RelSpinner_value_changed), (void*)REL1Y_SPINNER);
@@ -1296,6 +1430,20 @@
    etk_object_properties_set(ETK_OBJECT(button),"label","Test group",NULL);
    etk_toolbar_append(ETK_TOOLBAR(UI_Toolbar), button, ETK_BOX_START);
 
+#if TEST_DIRECT_EDJE
+   //UI_GroupsComboBox
+   UI_GroupsComboBox = etk_combobox_new();
+   etk_combobox_column_add(ETK_COMBOBOX(UI_GroupsComboBox), 
ETK_COMBOBOX_LABEL, 30, ETK_COMBOBOX_NONE, 0.0);
+   etk_combobox_build(ETK_COMBOBOX(UI_GroupsComboBox));
+   etk_widget_size_request_set(UI_GroupsComboBox,200, 10);
+   etk_widget_padding_set (UI_GroupsComboBox, 0, 0, 7, 7);
+   etk_combobox_items_height_set (ETK_COMBOBOX(UI_GroupsComboBox), 16);
+   etk_toolbar_append(ETK_TOOLBAR(UI_Toolbar), UI_GroupsComboBox, 
ETK_BOX_START);
+    
+   etk_signal_connect("active-item-changed", ETK_OBJECT(UI_GroupsComboBox),
+                      ETK_CALLBACK(on_GroupsComboBox_changed), NULL);
+#endif    
+    
    return UI_Toolbar;
 }
 
@@ -1390,21 +1538,30 @@
    etk_tree_mode_set (ETK_TREE(UI_PartsTree), ETK_TREE_MODE_TREE);
    etk_tree_headers_visible_set (ETK_TREE(UI_PartsTree), ETK_FALSE);
    etk_widget_size_request_set(UI_PartsTree, 260, 300);
+   //Main column
    col = etk_tree_col_new(ETK_TREE(UI_PartsTree), "File contents",100,0);
    etk_tree_col_model_add(col,etk_tree_model_image_new());
    etk_tree_col_model_add(col,etk_tree_model_text_new());
    etk_tree_col_resizable_set (col, ETK_FALSE);
    etk_tree_col_expand_set (col,ETK_TRUE);
+   //Visibility column
    col = etk_tree_col_new(ETK_TREE(UI_PartsTree), "vis", 10,0);
    etk_tree_col_visible_set (col, ETK_FALSE);
    etk_tree_col_model_add(col,etk_tree_model_checkbox_new());
    etk_tree_col_resizable_set (col, ETK_FALSE);
    etk_tree_col_expand_set (col,ETK_FALSE);
+   //RowType column
    col = etk_tree_col_new(ETK_TREE(UI_PartsTree), "type",10, 0);
    etk_tree_col_model_add(col,etk_tree_model_int_new());
    etk_tree_col_visible_set (col, ETK_FALSE);
    etk_tree_col_resizable_set (col, ETK_FALSE);
    etk_tree_col_expand_set (col,ETK_FALSE);
+   //Parent part row
+   col = etk_tree_col_new(ETK_TREE(UI_PartsTree), "parent",100, 0);
+   etk_tree_col_model_add(col,etk_tree_model_text_new());
+   etk_tree_col_visible_set (col, ETK_FALSE);
+   etk_tree_col_resizable_set (col, ETK_FALSE);
+   etk_tree_col_expand_set (col,ETK_FALSE);
    etk_tree_build(ETK_TREE(UI_PartsTree));
 
    etk_signal_connect("row-selected", ETK_OBJECT(UI_PartsTree),
@@ -2324,20 +2481,20 @@
 void
 create_main_window(void)
 {
-   static Evas *win_evas = NULL;
-   
+
+    
    //Create the man ecore_evas window
    UI_ecore_MainWin = ecore_evas_software_x11_new(NULL, 0, 0, 0, 32, 32);
    ecore_evas_title_set(UI_ecore_MainWin, "Edje Editor");
    ecore_evas_callback_resize_set(UI_ecore_MainWin, ecore_resize_callback);
    ecore_evas_callback_delete_request_set(UI_ecore_MainWin, ecore_delete_cb);
-   ecore_evas_resize(UI_ecore_MainWin, 800, 500);
+   ecore_evas_resize(UI_ecore_MainWin, 950, 500);
    ecore_evas_size_min_set (UI_ecore_MainWin, 600, 350);
    ecore_evas_show(UI_ecore_MainWin);
-   win_evas = ecore_evas_get(UI_ecore_MainWin);
+   UI_evas = ecore_evas_get(UI_ecore_MainWin);
    
    //Load main edje interface
-   edje_ui = edje_object_add(win_evas);
+   edje_ui = edje_object_add(UI_evas);
    edje_object_file_set(edje_ui, EdjeFile, "MainUI");
    evas_object_move(edje_ui, 0, 0);
    evas_object_show(edje_ui);
@@ -2351,7 +2508,7 @@
 
    //Toolbar
    create_toolbar(ETK_TOOLBAR_HORIZ);
-   UI_ToolbarEmbed = etk_embed_new(win_evas);
+   UI_ToolbarEmbed = etk_embed_new(UI_evas);
    etk_container_add(ETK_CONTAINER(UI_ToolbarEmbed), UI_Toolbar);
    etk_embed_position_method_set(ETK_EMBED(UI_ToolbarEmbed),
                                  _embed_position_set, UI_ecore_MainWin);
@@ -2361,19 +2518,19 @@
     
    //Tree
    create_tree();
-   UI_PartsTreeEmbed = etk_embed_new(win_evas);
+   UI_PartsTreeEmbed = etk_embed_new(UI_evas);
    etk_container_add(ETK_CONTAINER(UI_PartsTreeEmbed), UI_PartsTree);
    etk_embed_position_method_set(ETK_EMBED(UI_PartsTreeEmbed),
                                  _embed_position_set, UI_ecore_MainWin);
    etk_widget_show_all(UI_PartsTreeEmbed);
    
    //Logo
-   logo = edje_object_add(win_evas);
+   logo = edje_object_add(UI_evas);
    edje_object_file_set(logo, EdjeFile, "Logo");
    evas_object_show(logo);
    
    //GroupEmbed
-   UI_GroupEmbed = etk_embed_new(win_evas);
+   UI_GroupEmbed = etk_embed_new(UI_evas);
    etk_container_add(ETK_CONTAINER(UI_GroupEmbed), create_group_frame());
    etk_embed_position_method_set(ETK_EMBED(UI_GroupEmbed),
                                  _embed_position_set, UI_ecore_MainWin);
@@ -2382,7 +2539,7 @@
                             etk_embed_object_get(ETK_EMBED(UI_GroupEmbed)));
     
    //PartEmbed
-   UI_PartEmbed = etk_embed_new(win_evas);
+   UI_PartEmbed = etk_embed_new(UI_evas);
    etk_container_add(ETK_CONTAINER(UI_PartEmbed), create_part_frame());
    etk_embed_position_method_set(ETK_EMBED(UI_PartEmbed),
                                  _embed_position_set, UI_ecore_MainWin);
@@ -2391,7 +2548,7 @@
                             etk_embed_object_get(ETK_EMBED(UI_PartEmbed)));
 
    //DescriptionEmbed
-   UI_DescriptionEmbed = etk_embed_new(win_evas);
+   UI_DescriptionEmbed = etk_embed_new(UI_evas);
    etk_container_add(ETK_CONTAINER(UI_DescriptionEmbed), 
create_description_frame());
    etk_embed_position_method_set(ETK_EMBED(UI_DescriptionEmbed),
                                  _embed_position_set, UI_ecore_MainWin);
@@ -2400,7 +2557,7 @@
                             
etk_embed_object_get(ETK_EMBED(UI_DescriptionEmbed)));
 
    //RectEmbed
-   UI_RectEmbed = etk_embed_new(win_evas);
+   UI_RectEmbed = etk_embed_new(UI_evas);
    etk_container_add(ETK_CONTAINER(UI_RectEmbed), create_rectangle_frame());
    etk_embed_position_method_set(ETK_EMBED(UI_RectEmbed),
                                  _embed_position_set, UI_ecore_MainWin);
@@ -2409,7 +2566,7 @@
                             etk_embed_object_get(ETK_EMBED(UI_RectEmbed)));
 
    //TextEmbed
-   UI_TextEmbed = etk_embed_new(win_evas);
+   UI_TextEmbed = etk_embed_new(UI_evas);
    etk_container_add(ETK_CONTAINER(UI_TextEmbed), create_text_frame());
    etk_embed_position_method_set(ETK_EMBED(UI_TextEmbed),
                                  _embed_position_set, UI_ecore_MainWin);
@@ -2418,7 +2575,7 @@
                             etk_embed_object_get(ETK_EMBED(UI_TextEmbed)));
 
    //ImageEmbed
-   UI_ImageEmbed = etk_embed_new(win_evas);
+   UI_ImageEmbed = etk_embed_new(UI_evas);
    etk_container_add(ETK_CONTAINER(UI_ImageEmbed), create_image_frame());
    etk_embed_position_method_set(ETK_EMBED(UI_ImageEmbed),
                                  _embed_position_set, UI_ecore_MainWin);
@@ -2427,7 +2584,7 @@
                             etk_embed_object_get(ETK_EMBED(UI_ImageEmbed)));
 
    //PositionEmbed
-   UI_PositionEmbed = etk_embed_new(win_evas);
+   UI_PositionEmbed = etk_embed_new(UI_evas);
    etk_container_add(ETK_CONTAINER(UI_PositionEmbed), create_position_frame());
    etk_embed_position_method_set(ETK_EMBED(UI_PositionEmbed),
                                  _embed_position_set, UI_ecore_MainWin);
@@ -2436,7 +2593,7 @@
                             etk_embed_object_get(ETK_EMBED(UI_PositionEmbed)));
 
    //ProgramEmbed
-   UI_ProgramEmbed = etk_embed_new(win_evas);
+   UI_ProgramEmbed = etk_embed_new(UI_evas);
    etk_container_add(ETK_CONTAINER(UI_ProgramEmbed), create_program_frame());
    etk_embed_position_method_set(ETK_EMBED(UI_ProgramEmbed),
                                  _embed_position_set, UI_ecore_MainWin);
@@ -2445,7 +2602,7 @@
                             etk_embed_object_get(ETK_EMBED(UI_ProgramEmbed)));
 
    //ScriptEmbed
-   UI_ScriptEmbed = etk_embed_new(win_evas);
+   UI_ScriptEmbed = etk_embed_new(UI_evas);
    etk_container_add(ETK_CONTAINER(UI_ScriptEmbed), create_script_frame());
    etk_embed_position_method_set(ETK_EMBED(UI_ScriptEmbed),
                                  _embed_position_set, UI_ecore_MainWin);
===================================================================
RCS file: /cvs/e/e17/proto/edje_editor/src/bin/interface.h,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -3 -r1.21 -r1.22
--- interface.h 27 Nov 2007 18:43:32 -0000      1.21
+++ interface.h 28 Nov 2007 07:10:52 -0000      1.22
@@ -1,5 +1,6 @@
 #include "main.h"
 
+Evas *UI_evas;
 Ecore_Evas *UI_ecore_MainWin;
 //Etk_Widget *UI_MainWin;
 Etk_Widget *UI_Toolbar;
@@ -112,6 +113,15 @@
 //Evas_Object *UI_PartEdje;
 
 Evas_Object *edje_ui;
+
+#if TEST_DIRECT_EDJE
+
+Etk_Widget *UI_GroupsComboBox;
+
+void     AddGroupToTree2          (char *name);
+void     AddPartToTree2(char *part_name);
+void     AddStateToTree2(char *part_name, char *state_name);
+#endif
 
 void     create_main_window      (void);
 void     ecore_resize_callback   (Ecore_Evas *ecore_evas);
===================================================================
RCS file: /cvs/e/e17/proto/edje_editor/src/bin/main.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -3 -r1.16 -r1.17
--- main.c      27 Nov 2007 01:28:48 -0000      1.16
+++ main.c      28 Nov 2007 07:10:52 -0000      1.17
@@ -301,18 +301,18 @@
    
    /* Background */
    EdjeTest_bg = evas_object_image_add(evas);
-   evas_object_image_file_set(EdjeTest_bg, EdjeFile, "images/0");              
//TODO Find a method to load by name and not by number
-   evas_object_image_fill_set(EdjeTest_bg,0,0,128,128);
+   evas_object_image_file_set(EdjeTest_bg, EdjeFile, "images/1");              
//TODO Find a method to load by name and not by number
+   evas_object_image_fill_set(EdjeTest_bg,0,0,240,240);
    evas_object_move(EdjeTest_bg, 0, 0);
-       evas_object_resize(EdjeTest_bg, 300, 300);
+   evas_object_resize(EdjeTest_bg, 300, 300);
    evas_object_show(EdjeTest_bg);
 
-   /* Edje Goroup */
+   /* Edje Group */
    EdjeTest_edje = edje_object_add(evas);
-       edje_object_file_set(EdjeTest_edje,File, Group);
-       evas_object_move(EdjeTest_edje, 0, 0);
-       evas_object_resize(EdjeTest_edje, 300, 300);
-       evas_object_show(EdjeTest_edje);
+   edje_object_file_set(EdjeTest_edje,File, Group);
+   evas_object_move(EdjeTest_edje, 0, 0);
+   evas_object_resize(EdjeTest_edje, 300, 300);
+   evas_object_show(EdjeTest_edje);
    
    /* Window Size */
    int minw,minh,maxw,maxh;
@@ -343,6 +343,20 @@
    printf(" To open an EDC file you must pass the IMAGE_DIR and FONT_DIR\n");
    printf(" parameters. If not given the EDC directory is assumed.\n\n");
 }
+#if TEST_DIRECT_EDJE
+void
+ChangeGroup(const char *group)
+{
+   edje_object_file_set(edje_o, Cur.edj_file_name->string, group);
+
+   Parts_Hash = NULL;         //TODO FREE
+   
+   Cur.part = etk_string_clear(Cur.part);
+   Cur.state = etk_string_clear(Cur.state);
+   
+   PopulateTree2();
+}
+#endif
 /* main */
 int
 main(int argc, char **argv)
@@ -405,7 +419,55 @@
 
    //Create the etk window with all his widget
    create_main_window();
+#if TEST_DIRECT_EDJE
+   printf("*********************************\n");
+   printf("Testing edje direct access!!...\n");
+   printf("*********************************\n");
+   char *file;
+    
+   
+   
+   if (argc > 1)
+   {
+      file = ecore_file_realpath(argv[1]);
+      if (!ecore_file_exists(file))
+      {
+         printf("File not exists: '%s'\nExiting...\n",argv[1]);
+         return 1;
+      }
+      if (!ecore_str_has_suffix(file, ".edj"))  //TODO: better check
+      {
+         printf("File is not an edje file: '%s'\nExiting...\n",argv[1]);
+         return 1;
+      }
+   }
+   else
+   {
+      printf("You must specify an edje file to open.\nExiting...\n");
+      return 1;
+   }
+
+   Cur.edj_file_name = etk_string_new(file);
+   ecore_evas_title_set(UI_ecore_MainWin, Cur.edj_file_name->string);
 
+   Cur.part = etk_string_new("");
+   Cur.state = etk_string_new("");
+   Parts_Hash = NULL;
+   Cur.part = etk_string_new("");
+   Cur.state = etk_string_new("");   
+  
+   //Create the main edje object to edit
+   edje_o = edje_object_add(UI_evas);
+  
+    
+    
+   PopulateGroupsComboBox();
+   PopulateTree2();
+   
+   evas_object_show(edje_o);
+   
+   
+#else
    //Open a file
    if (argc > 1)
    {
@@ -439,7 +501,7 @@
    PopulateImagesComboBox();
    PopulateFontsComboBox();
 
-
+#endif
    //DebugInfo(FALSE);
 
    //Start main loop
===================================================================
RCS file: /cvs/e/e17/proto/edje_editor/src/bin/main.h,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -3 -r1.14 -r1.15
--- main.h      27 Nov 2007 18:43:32 -0000      1.14
+++ main.h      28 Nov 2007 07:10:52 -0000      1.15
@@ -12,6 +12,8 @@
 #define FAKEWIN_BORDER_RIGHT 4
 #define FAKEWIN_BORDER_BOTTOM 4
 
+#define TEST_DIRECT_EDJE 0
+
 #undef FREE
 #define FREE(val) \
 { \
@@ -26,8 +28,6 @@
 }
 
 
-
-
 //All the enum used are declared here
 enum various
 {
@@ -112,6 +112,12 @@
    char *open_file_name;      //Full path to the open edje file
    char *source_dir;          //Full path to sources
    char *main_source_file;    //Full path to the main edc file
+#if TEST_DIRECT_EDJE
+   Etk_String *part;
+   Etk_String *state;
+   Etk_String *edj_file_name;
+   double *state_n;
+#endif
 }Cur;
 
 /* GLOBALS */
@@ -133,5 +139,23 @@
 
 /* FUNCTION PROTOTYPES*/
 void           DebugInfo   (int full);
+
+#if TEST_DIRECT_EDJE
+
+//This define is copied from edje_private.h
+#define EDJE_PART_TYPE_NONE      0
+#define EDJE_PART_TYPE_RECTANGLE 1
+#define EDJE_PART_TYPE_TEXT      2
+#define EDJE_PART_TYPE_IMAGE     3
+#define EDJE_PART_TYPE_SWALLOW   4
+#define EDJE_PART_TYPE_TEXTBLOCK 5
+#define EDJE_PART_TYPE_GRADIENT  6
+#define EDJE_PART_TYPE_GROUP     7
+#define EDJE_PART_TYPE_LAST      8
+
+Evas_Object *edje_o;
+Evas_Hash   *Parts_Hash;
+void ChangeGroup(const char *group);
+#endif
 
 #endif // INCLUSION_GUARD



-------------------------------------------------------------------------
SF.Net email is sponsored by: The Future of Linux Business White Paper
from Novell.  From the desktop to the data center, Linux is going
mainstream.  Let it simplify your IT future.
http://altfarm.mediaplex.com/ad/ck/8857-50307-18918-4
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to