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