int inspector_init( void ) { char *header[] = {"Attribute", "Value"}; if( inspector_win ) return -1; name_spec = spec_elem_get("Ewl_Widget", "name"); inspector_win = ewl_window_new(); ewl_window_title_set(EWL_WINDOW(inspector_win), "Inspector"); ewl_object_size_request(EWL_OBJECT(inspector_win), 200, 320); ewl_callback_append(inspector_win, EWL_CALLBACK_DELETE_WINDOW, inspector_toggle, NULL); tree = ewl_tree_new(2); ewl_tree_headers_set(EWL_TREE(tree), header); ewl_tree_mode_set(EWL_TREE(tree), EWL_TREE_MODE_NONE); ewl_container_child_append(EWL_CONTAINER(inspector_win), tree); ewl_widget_show(tree); ewl_widget_show(inspector_win); return 0; }
/** * keystroke accelerator for project window */ static EWL_CALLBACK_DEFN(project_key_down) { Ecore_List *selected; Ewl_Event_Key_Down *ev = ev_data; Ewl_Widget *text, *row; char *name; if( !strcmp(ev->keyname, "Delete") ) { selected = ewl_tree_selected_get(EWL_TREE(file_tree)); if( ecore_list_count(selected) > 0 ) { ecore_list_first_goto(selected); while( (row = ecore_list_next(selected)) ) { text = ewl_tree_row_column_get(EWL_ROW(row), 0); name = ewl_text_text_get(EWL_TEXT(text)); ecore_hash_remove(active_project->files, name); FREE(name); active_project->dirty = true; } project_update(); } } }
void ecrin_ewl_tree_fill_package (void) { Ewl_Widget *row; Ewl_Widget *row_enum; Ewl_Widget *row_define; Ewl_Widget *row_function; char *key; char *label; label = "Eet"; row = ewl_tree_text_row_add (EWL_TREE (tree), NULL, &label); label = "Enum"; row_enum = ewl_tree_text_row_add (EWL_TREE (tree), EWL_ROW (row), &label); label = "Define"; row_define = ewl_tree_text_row_add (EWL_TREE (tree), EWL_ROW (row), &label); label = "Function"; row_function = ewl_tree_text_row_add (EWL_TREE (tree), EWL_ROW (row), &label); ecore_list_first_goto(sorted_keys); while ((key = ecore_list_next(sorted_keys))) { Ewl_Widget *prow; Ecrin_Hash_Data *data; data = ecrin_hash_data_get (key); switch (data->type) { case HASH_DATA_ENUM: prow = ewl_tree_text_row_add (EWL_TREE (tree), EWL_ROW (row_enum), &data->data_name); ewl_callback_append (prow, EWL_CALLBACK_CLICKED, _enum_display, data); break; case HASH_DATA_DEFINE: prow = ewl_tree_text_row_add (EWL_TREE (tree), EWL_ROW (row_define), &data->data_name); ewl_callback_append (prow, EWL_CALLBACK_CLICKED, _define_display, data); break; case HASH_DATA_FUNCTION: prow = ewl_tree_text_row_add (EWL_TREE (tree), EWL_ROW (row_function), &data->data_name); ewl_callback_append (prow, EWL_CALLBACK_CLICKED, _function_display, data); break; default: break; } } }
/** * update the view of this project based on its contents */ void project_update( void ) { Ewl_Widget *w; Ecore_List *names; Ecore_Sheap *snames; int i, nodes; char *name; ewl_tree_selected_clear(EWL_TREE(file_tree)); ewl_container_reset(EWL_CONTAINER(file_tree)); if( !active_project->files->nodes ) return; names = ecore_hash_keys(active_project->files); nodes = ecore_list_count(names); snames = ecore_sheap_new(ecore_str_compare, nodes); while( (name = ecore_list_remove(names)) ) ecore_sheap_insert(snames, name); ecore_sheap_sort(snames); for( i=0;i<nodes;i++ ) { Ewl_Widget *row; name = ecore_sheap_item(snames, i); w = ewl_text_new(name); row = ewl_tree_row_add(EWL_TREE(file_tree), NULL, &w); ewl_callback_append(row, EWL_CALLBACK_DOUBLE_CLICKED, form_open, name); ewl_callback_append(row, EWL_CALLBACK_CLICKED, project_file_menu, name); ewl_widget_show(w); } ecore_sheap_destroy(snames); ecore_list_destroy(names); }
void ecrin_ewl_list_fill_package (char *aiguille) { Ewl_Widget *row; char *key; if (list_rows) ecore_list_destroy (list_rows); list_rows = ecore_list_new (); if (!aiguille) aiguille = ""; ecore_list_first_goto(sorted_keys); while ((key = ecore_list_next(sorted_keys))) { Ecrin_Hash_Data *data; data = ecrin_hash_data_get (key); if (strstr (key, aiguille)) { row = ewl_tree_text_row_add (EWL_TREE (list), NULL, &data->data_name); ecore_list_append (list_rows, row); switch (data->type) { case HASH_DATA_ENUM: ewl_callback_append (row, EWL_CALLBACK_CLICKED, _enum_display, data); break; case HASH_DATA_DEFINE: ewl_callback_append (row, EWL_CALLBACK_CLICKED, _define_display, data); break; case HASH_DATA_FUNCTION: ewl_callback_append (row, EWL_CALLBACK_CLICKED, _function_display, data); break; default: break; } } } }
void mime_add_cb(Ewl_Widget *item, void *ev_data, void *user_data) { char *entries[3]; char *type_text = ewl_text_text_get(EWL_TEXT(entry_type)); char *action_text = ewl_text_text_get(EWL_TEXT(entry_action)); entries[0] = type_text; entries[1] = action_text; entries[2] = NULL; ewl_tree_text_row_add(EWL_TREE(mime_tree), NULL,entries); entropy_core_mime_action_add(type_text, action_text); /*free(type_text); free(action_text);*/ ewl_widget_destroy(EWL_WIDGET(user_data)); }
static void _list_display_cb (Ewl_Widget *w, void *ev_data, void *user_data) { Ewl_Row *row; char *aiguille; aiguille = ewl_text_text_get (EWL_TEXT (w)); /* We clear the list */ ecore_list_first_goto(list_rows); while ((row = ecore_list_next(list_rows))) { ewl_tree_row_destroy (EWL_TREE (list), row); } ecrin_ewl_list_fill_package (aiguille); /* ecore_list_first_goto(list_rows); */ /* while ((row = ecore_list_next(list_rows))) */ /* { */ /* Ewl_Widget *child; */ /* char *motte; */ /* ewl_container_child_iterate_begin (EWL_CONTAINER (row)); */ /* child = ewl_container_child_next (EWL_CONTAINER (row)); */ /* child = ewl_container_child_next (EWL_CONTAINER (child)); */ /* motte = ewl_text_text_get (EWL_TEXT (child)); */ /* printf ("motte : %s\n", motte); */ /* if (strstr (motte, aiguille)) */ /* ewl_widget_show (EWL_WIDGET (row)); */ /* else */ /* ewl_widget_hide (EWL_WIDGET (row)); */ /* } */ }
void ecrin_ewl_window_create (void) { Ewl_Widget *window; Ewl_Widget *hbox; Ewl_Widget *notebook; Ewl_Widget *tab; Ewl_Widget *vbox; Ewl_Widget *separator; /* We order the list */ sorted_keys = _list_keys_order (ecrin_hash_keys_get ()); window = ewl_window_new (); ewl_object_size_request (EWL_OBJECT (window), 400, 400); ewl_window_title_set (EWL_WINDOW (window), "Ecrin"); ewl_window_name_set (EWL_WINDOW (window), "Ecrin"); ewl_window_class_set (EWL_WINDOW (window), "Ecrin"); ewl_callback_append (window, EWL_CALLBACK_DELETE_WINDOW, _main_window_close, NULL); hbox = ewl_hbox_new (); ewl_container_child_append (EWL_CONTAINER (window), hbox); ewl_widget_show (hbox); notebook = ewl_notebook_new (); ewl_container_child_append (EWL_CONTAINER (hbox), notebook); ewl_widget_show (notebook); tab = ewl_label_new ("EFL package"); ewl_widget_show (tab); tree = ewl_tree_new (1); ewl_tree_headers_visible_set (EWL_TREE (tree), 0); ewl_notebook_page_append (EWL_NOTEBOOK (notebook), tab, tree); ewl_widget_show (tree); tab = ewl_label_new ("Search"); ewl_widget_show (tab); vbox = ewl_vbox_new (); ewl_box_homogeneous_set (EWL_BOX (vbox), 0); ewl_notebook_page_append (EWL_NOTEBOOK (notebook), tab, vbox); ewl_widget_show (vbox); entry = ewl_entry_new (""); ewl_object_fill_policy_set(EWL_OBJECT(entry), EWL_FLAG_FILL_VSHRINK | EWL_FLAG_FILL_HFILL); ewl_container_child_append (EWL_CONTAINER (vbox), entry); ewl_callback_append (entry, EWL_CALLBACK_VALUE_CHANGED, _list_display_cb, NULL); ewl_widget_show (entry); separator = ewl_hseparator_new (); ewl_container_child_append (EWL_CONTAINER (vbox), separator); ewl_widget_show (separator); list = ewl_tree_new (1); ewl_tree_headers_visible_set (EWL_TREE (list), 0); ewl_container_child_append (EWL_CONTAINER (vbox), list); ewl_widget_show (list); separator = ewl_vseparator_new (); ewl_container_child_append (EWL_CONTAINER (hbox), separator); ewl_widget_show (separator); text = ewl_text_new (""); ewl_container_child_append (EWL_CONTAINER (hbox), text); ewl_widget_show (text); ecrin_ewl_tree_fill_package (); ecrin_ewl_list_fill_package (""); ewl_widget_show (window); }
/** * initialize this project manager. called from main */ int projects_init( char *filename ) { Ewl_Widget *vbox, *menu, *project_menu, *settings_menu, *windows_menu, *item; /* ui phase... kick on some phat window action */ project_win = ewl_window_new(); ewl_window_title_set(EWL_WINDOW(project_win), "Ewler"); ewl_object_size_request(EWL_OBJECT(project_win), 200, 320); ewl_callback_append(project_win, EWL_CALLBACK_DELETE_WINDOW, project_exit, NULL); ewl_callback_append(project_win, EWL_CALLBACK_KEY_DOWN, project_key_down, NULL); vbox = ewl_vbox_new(); ewl_container_child_append(EWL_CONTAINER(project_win), vbox); menu = ewl_hmenubar_new(); ewl_container_child_append(EWL_CONTAINER(vbox), menu); project_menu = ewl_menubar_menu_add(EWL_MENUBAR(menu), NULL, "Project"); item = ewl_menu_item_new(NULL, "New"); ewl_container_child_append(EWL_CONTAINER(project_menu), item); ewl_widget_show(item); item = ewl_menu_item_new(NULL, "New Form"); ewl_container_child_append(EWL_CONTAINER(project_menu), item); ewl_callback_append(item, EWL_CALLBACK_CLICKED, form_new, NULL); ewl_widget_show(item); item = ewl_menu_item_new(NULL, "Open..."); ewl_container_child_append(EWL_CONTAINER(project_menu), item); ewl_callback_append(item, EWL_CALLBACK_CLICKED, open, NULL); ewl_widget_show(item); item = ewl_menu_separator_new(); ewl_container_child_append(EWL_CONTAINER(project_menu), item); ewl_widget_show(item); item = ewl_menu_item_new(NULL, "Save"); ewl_callback_append(item, EWL_CALLBACK_CLICKED, save, NULL); ewl_container_child_append(EWL_CONTAINER(project_menu), item); ewl_widget_show(item); item = ewl_menu_separator_new(); ewl_container_child_append(EWL_CONTAINER(project_menu), item); ewl_widget_show(item); item = ewl_menu_item_new(NULL, "Exit"); ewl_callback_append(item, EWL_CALLBACK_CLICKED, project_exit, NULL); ewl_container_child_append(EWL_CONTAINER(project_menu), item); ewl_widget_show(item); ewl_widget_show(project_menu); settings_menu = ewl_menubar_menu_add(EWL_MENUBAR(menu), NULL, "Settings"); item = ewl_menu_item_new(NULL, "Options..."); ewl_container_child_append(EWL_CONTAINER(settings_menu), item); ewl_callback_append(item, EWL_CALLBACK_CLICKED, options, NULL); ewl_widget_show(item); ewl_widget_show(settings_menu); windows_menu = ewl_menubar_menu_add(EWL_MENUBAR(menu), NULL, "Windows"); item = ewl_menu_item_new(NULL, "Toolbar"); ewl_container_child_append(EWL_CONTAINER(windows_menu), item); ewl_callback_append(item, EWL_CALLBACK_CLICKED, tools_toggle, NULL); ewl_widget_show(item); item = ewl_menu_item_new(NULL, "Inspector"); ewl_container_child_append(EWL_CONTAINER(windows_menu), item); ewl_callback_append(item, EWL_CALLBACK_CLICKED, inspector_toggle, NULL); ewl_widget_show(item); item = ewl_menu_item_new(NULL, "Callbacks"); ewl_container_child_append(EWL_CONTAINER(windows_menu), item); ewl_callback_append(item, EWL_CALLBACK_CLICKED, callbacks_toggle, NULL); ewl_widget_show(item); ewl_widget_show(windows_menu); ewl_widget_show(menu); file_tree = ewl_tree_new(1); ewl_tree_mode_set(EWL_TREE(file_tree), EWL_TREE_MODE_SINGLE); ewl_container_child_append(EWL_CONTAINER(vbox), file_tree); ewl_widget_show(file_tree); ewl_widget_show(vbox); ewl_widget_show(project_win); /* end ui phase */ /* project phase */ active_project = NEW(Ewler_Project); if( !active_project ) { ewler_error("projects_init: out of memory!"); return -1; } active_project->files = ecore_hash_new(ecore_str_hash, ecore_str_compare); ecore_hash_free_key_cb_set(active_project->files, free); ecore_hash_free_value_cb_set(active_project->files, free); if( !filename || project_open(filename) < 0 ) { project_new(); } /* end project phase */ return 0; }
static int create_test(Ewl_Container *box) { Ewl_Widget *tree, *o, *o2, *o3; Ewl_Model *model; Ewl_View *view; void *data; o2 = ewl_hbox_new(); ewl_container_child_append(box, o2); ewl_object_fill_policy_set(EWL_OBJECT(o2), EWL_FLAG_FILL_HFILL); ewl_widget_show(o2); /* create our data */ data = tree_test_data_setup(); /* the tree will only use one model. We could use a model per * column, but a single model will work fine for this test */ model = ewl_model_new(); ewl_model_data_fetch_set(model, tree_test_data_fetch); ewl_model_data_header_fetch_set(model, tree_test_cb_header_data_fetch); ewl_model_data_sort_set(model, tree_test_data_sort); ewl_model_column_sortable_set(model, tree_test_column_sortable); ewl_model_data_count_set(model, tree_test_data_count_get); ewl_model_data_expandable_set(model, tree_test_data_expandable_get); ewl_model_expansion_data_fetch_set(model, tree_test_data_expansion_fetch); view = ewl_view_new(); ewl_view_widget_constructor_set(view, tree_test_cb_widget_fetch); ewl_view_widget_assign_set(view, tree_test_cb_widget_assign); ewl_view_header_fetch_set(view, tree_test_cb_header_fetch); tree = ewl_tree_new(); ewl_container_child_append(EWL_CONTAINER(box), tree); ewl_object_fill_policy_set(EWL_OBJECT(tree), EWL_FLAG_FILL_ALL); ewl_callback_append(tree, EWL_CALLBACK_VALUE_CHANGED, tree_cb_value_changed, NULL); ewl_mvc_data_set(EWL_MVC(tree), data); ewl_mvc_model_set(EWL_MVC(tree), model); ewl_mvc_view_set(EWL_MVC(tree), view); ewl_mvc_selection_mode_set(EWL_MVC(tree), EWL_SELECTION_MODE_MULTI); ewl_tree_column_count_set(EWL_TREE(tree), 3); ewl_tree_row_expand(EWL_TREE(tree), data, 2); ewl_widget_name_set(tree, "tree"); ewl_widget_show(tree); o3 = ewl_vbox_new(); ewl_container_child_append(EWL_CONTAINER(o2), o3); ewl_widget_show(o3); /* create the checkbuttons for the top box */ o = ewl_checkbutton_new(); ewl_object_alignment_set(EWL_OBJECT(o), EWL_FLAG_ALIGN_LEFT); ewl_button_label_set(EWL_BUTTON(o), "Scroll headers"); ewl_container_child_append(EWL_CONTAINER(o3), o); ewl_callback_append(o, EWL_CALLBACK_CLICKED, ewl_tree_cb_scroll_headers, tree); ewl_widget_show(o); o = ewl_checkbutton_new(); ewl_object_alignment_set(EWL_OBJECT(o), EWL_FLAG_ALIGN_LEFT); ewl_button_label_set(EWL_BUTTON(o), "Hide headers"); ewl_container_child_append(EWL_CONTAINER(o3), o); ewl_callback_append(o, EWL_CALLBACK_CLICKED, ewl_tree_cb_hide_headers, tree); ewl_widget_show(o); o = ewl_checkbutton_new(); ewl_object_alignment_set(EWL_OBJECT(o), EWL_FLAG_ALIGN_CENTER); ewl_button_label_set(EWL_BUTTON(o), "Plain view"); ewl_container_child_append(EWL_CONTAINER(o2), o); ewl_callback_append(o, EWL_CALLBACK_CLICKED, ewl_tree_cb_plain_view, tree); ewl_widget_show(o); o = ewl_spinner_new(); ewl_object_alignment_set(EWL_OBJECT(o), EWL_FLAG_ALIGN_CENTER); ewl_container_child_append(EWL_CONTAINER(o2), o); ewl_spinner_digits_set(EWL_SPINNER(o), 0); ewl_range_minimum_value_set(EWL_RANGE(o), 0); ewl_range_maximum_value_set(EWL_RANGE(o), 10000); ewl_range_value_set(EWL_RANGE(o), 5); ewl_range_step_set(EWL_RANGE(o), 1); ewl_widget_name_set(o, "rows_spinner"); ewl_widget_show(o); o = ewl_button_new(); ewl_object_alignment_set(EWL_OBJECT(o), EWL_FLAG_ALIGN_CENTER); ewl_button_label_set(EWL_BUTTON(o), "Set number of rows"); ewl_container_child_append(EWL_CONTAINER(o2), o); ewl_callback_append(o, EWL_CALLBACK_CLICKED, ewl_tree_cb_set_rows_clicked, NULL); ewl_widget_show(o); o = ewl_button_new(); ewl_object_alignment_set(EWL_OBJECT(o), EWL_FLAG_ALIGN_CENTER); ewl_button_label_set(EWL_BUTTON(o), "Row select"); ewl_container_child_append(EWL_CONTAINER(o2), o); ewl_callback_append(o, EWL_CALLBACK_CLICKED, tree_cb_select_mode_change, NULL); ewl_widget_show(o); o = ewl_button_new(); ewl_object_alignment_set(EWL_OBJECT(o), EWL_FLAG_ALIGN_CENTER); ewl_button_label_set(EWL_BUTTON(o), "Ensure visible"); ewl_container_child_append(EWL_CONTAINER(o2), o); ewl_callback_append(o, EWL_CALLBACK_CLICKED, tree_cb_ensure_visible, NULL); ewl_widget_show(o); return 1; }
void entropy_ewl_mime_dialog_display() { Ewl_Widget* window = ewl_window_new(); Ewl_Widget* box = ewl_vbox_new(); Ewl_Widget* button = ewl_button_new(); Ewl_Widget* hbox; entropy_core* core = entropy_core_get_core(); char* entries[3]; char* key; entropy_mime_action* action; Ecore_List* keys; last_select_text = NULL; /*Init the mime tree*/ mime_tree = ewl_tree_new(2); ewl_tree_mode_set(EWL_TREE(mime_tree), EWL_SELECTION_MODE_SINGLE); ewl_object_minimum_size_set(EWL_OBJECT(window), 530, 400); ewl_window_title_set(EWL_WINDOW(window), "Edit MIME Actions.."); ewl_container_child_append(EWL_CONTAINER(window), box); ewl_container_child_append(EWL_CONTAINER(box), mime_tree); ewl_widget_show(box); keys = ecore_hash_keys(core->mime_action_hint); while ((key = ecore_list_first_remove(keys))) { Ewl_Widget* row; entries[0] = key; entries[1] = ((entropy_mime_action*)ecore_hash_get(core->mime_action_hint, key))->executable; entries[2] = NULL; row = ewl_tree_text_row_add(EWL_TREE(mime_tree), NULL,entries); ewl_widget_color_set(row,0,0,0,255); ewl_callback_append(row, EWL_CALLBACK_MOUSE_DOWN, mime_row_click_cb, key); } ecore_list_destroy(keys); hbox = ewl_hbox_new(); ewl_container_child_append(EWL_CONTAINER(box), hbox); ewl_object_fill_policy_set(EWL_OBJECT(hbox), EWL_FLAG_FILL_SHRINK); ewl_widget_show(hbox); /*Add Button*/ ewl_button_label_set(EWL_BUTTON(button), "Add MIME Action"); ewl_object_maximum_h_set(EWL_OBJECT(button), 15); ewl_callback_append(button, EWL_CALLBACK_CLICKED, entropy_ewl_mime_add_display_cb, NULL); ewl_container_child_append(EWL_CONTAINER(hbox), button); ewl_widget_show(button); /*OK Button*/ button = ewl_button_new(); ewl_button_label_set(EWL_BUTTON(button), "Close"); ewl_object_maximum_h_set(EWL_OBJECT(button), 15); ewl_callback_append(button, EWL_CALLBACK_CLICKED, window_dismiss_cb, window); ewl_container_child_append(EWL_CONTAINER(hbox), button); ewl_widget_show(button); ewl_widget_show(window); ewl_widget_show(mime_tree); }
void inspector_update( Ecore_List *selected ) { Ewl_Widget *prow; Ecore_Sheap *slist, *sheap; Ecore_Hash *elems; Ecore_List *keys; Ecore_List *prow_stack, *sheap_stack, *elems_stack; Ewler_Widget *w; char *key; ewl_container_reset(EWL_CONTAINER(tree)); if( !selected ) return; /* add support for multiple selections later */ w = ecore_list_first_goto(selected); if( !w ) return; keys = ecore_hash_keys(w->elems); slist = ecore_sheap_new(ecore_str_compare, ecore_list_count(keys)); while( (key = ecore_list_next(keys)) ) ecore_sheap_insert(slist, key); ecore_list_destroy(keys); ecore_sheap_sort(slist); sheap = slist; elems = w->elems; sheap_stack = ecore_list_new(); elems_stack = ecore_list_new(); prow_stack = ecore_list_new(); prow = NULL; while( (key = ecore_sheap_extract(sheap)) ) { Ewler_Widget_Elem *elem; Ewl_Widget *row_items[2], *row; Ewl_Widget *text, *entry; int len; elem = ecore_hash_get(elems, key); text = ewl_text_new(key); len = ewl_text_length_get(EWL_TEXT(text)); ewl_text_cursor_position_set(EWL_TEXT(text), 0); if( elem->changed ) ewl_text_color_apply(EWL_TEXT(text), 255, 0, 0, 255, len); switch( elem->spec->type ) { case EWLER_SPEC_ELEM_STRUCT: entry = NULL; break; case EWLER_SPEC_ELEM_ENUM: entry = ewl_combo_new(elem_to_s(elem)); if( elem->items ) ecore_hash_destroy(elem->items); elem->items = ecore_hash_new(ecore_direct_hash, ecore_direct_compare); keys = ecore_hash_keys(elem->spec->info.edata.map_rev); while( (key = ecore_list_next(keys)) ) { Ewl_Widget *combo_item; int value; value = (int) ecore_hash_get(elem->spec->info.edata.map_rev, key); combo_item = ewl_menu_item_new(NULL, key); ecore_hash_set(elem->items, (void *) value, combo_item); ewl_container_child_append(EWL_CONTAINER(entry), combo_item); ewl_widget_show(combo_item); } ecore_list_destroy(keys); ewl_callback_append(entry, EWL_CALLBACK_VALUE_CHANGED, combo_value_changed, elem); break; default: entry = ewl_entry_new(elem_to_s(elem)); if( !elem->spec->modifiable ) ewl_entry_editable_set(EWL_ENTRY(entry), false); ewl_callback_append(entry, EWL_CALLBACK_VALUE_CHANGED, entry_value_changed, elem); ewl_callback_append(entry, EWL_CALLBACK_DESELECT, entry_value_changed, elem); ewl_callback_append(entry, EWL_CALLBACK_FOCUS_OUT, entry_focus_out, elem); break; } elem->text = text; elem->entry = entry; row_items[0] = text; row_items[1] = entry; row = ewl_tree_row_add(EWL_TREE(tree), EWL_ROW(prow), row_items); ewl_widget_show(text); if( entry ) ewl_widget_show(entry); if( elem->spec->type == EWLER_SPEC_ELEM_STRUCT ) { ecore_list_prepend(prow_stack, prow); ecore_list_prepend(sheap_stack, sheap); ecore_list_prepend(elems_stack, elems); prow = row; elems = elem->info.children; /* TODO: check for indexed struct */ keys = ecore_hash_keys(elems); sheap = ecore_sheap_new(ecore_str_compare, ecore_list_count(keys)); while( (key = ecore_list_next(keys)) ) ecore_sheap_insert(sheap, key); ecore_list_destroy(keys); ecore_sheap_sort(sheap); } if( sheap->size == 0 && ecore_list_count(sheap_stack) ) { ecore_sheap_destroy(sheap); prow = ecore_list_first_remove(prow_stack); sheap = ecore_list_first_remove(sheap_stack); elems = ecore_list_first_remove(elems_stack); } } ecore_list_destroy(sheap_stack); ecore_list_destroy(elems_stack); ecore_sheap_destroy(slist); }