void etk_file_cache_dialog_refresh(Etk_Widget* tree) { Etk_Tree_Col* col1; Etk_Tree_Col* col2; char* key; char buffer[PATH_MAX]; Ecore_List* keys; etk_tree_clear(ETK_TREE(tree)); /*Populate the tree*/ col1 = etk_tree_nth_col_get(ETK_TREE(tree), 0); col2 = etk_tree_nth_col_get(ETK_TREE(tree), 1); etk_tree_freeze(ETK_TREE(tree)); keys = entropy_core_file_cache_keys_retrieve(); while ( (key = ecore_list_first_remove(keys))) { entropy_file_listener* listen = entropy_core_file_cache_retrieve(key); if (listen) { snprintf(buffer, PATH_MAX, "%s/%s", listen->file->path, listen->file->filename); etk_tree_row_append(ETK_TREE(tree), NULL, col1, listen->count, col2, buffer, NULL); } } ecore_list_destroy(keys); etk_tree_thaw(ETK_TREE(tree)); }
void data_window_populate(void) { Eina_List *l, *datas; Etk_Tree_Col *col1, *col2; // FIXME type of data ? char *data; col1 = etk_tree_nth_col_get(ETK_TREE(UI_DataList), 0); col2 = etk_tree_nth_col_get(ETK_TREE(UI_DataList), 1); etk_tree_freeze(ETK_TREE(UI_DataList)); etk_tree_clear(ETK_TREE(UI_DataList)); datas = edje_edit_data_list_get(edje_o); EINA_LIST_FOREACH(datas, l , data) { const char *val; val = edje_edit_data_value_get(edje_o, data); etk_tree_row_append(ETK_TREE(UI_DataList), NULL, col1, data, col2, val, NULL); edje_edit_string_free(val); } edje_edit_string_list_free(datas); etk_tree_thaw(ETK_TREE(UI_DataList)); etk_widget_disabled_set(UI_DataApplyButton, ETK_TRUE); etk_entry_text_set(ETK_ENTRY(UI_DataNameEntry), ""); etk_entry_text_set(ETK_ENTRY(UI_DataValueEntry), ""); }
void tree_populate(void) { Eina_List *parts, *pp; Eina_List *progs; etk_tree_freeze(ETK_TREE(UI_PartsTree)); etk_tree_clear(ETK_TREE(UI_PartsTree)); parts = pp = edje_edit_parts_list_get(edje_o); while(pp) { printf(" P: %s\n", (char*)pp->data); tree_part_add((char*)pp->data, NULL); pp = pp->next; } edje_edit_string_list_free(parts); progs = pp = edje_edit_programs_list_get(edje_o); while(pp) { tree_program_add((char*)pp->data); pp = pp->next; } edje_edit_string_list_free(progs); etk_tree_row_select(etk_tree_first_row_get (ETK_TREE(UI_PartsTree))); etk_tree_thaw(ETK_TREE(UI_PartsTree)); }
void fill_tree_with_db(Etk_Tree *tree) { int num, i; char **entries; char *cover_path; Etk_Tree_Col *col; Etk_Tree_Row *row; Eet_File *ef; char *cover_db_path; asprintf(&cover_db_path, "%s/.e/apps/emphasis/cover.eet", getenv("HOME")); ef = eet_open(cover_db_path, EET_FILE_MODE_READ); if (!ef) { fprintf(stderr, "Can't open %s\n", cover_db_path); free(cover_db_path); exit(-1); } col = etk_tree_col_new(tree, "/artist/album", 0, 0.0); etk_tree_col_model_add(col, etk_tree_model_text_new()); etk_tree_build(tree); etk_tree_freeze(tree); entries = eet_list(ef, "*", &num); for (i=0; i<num; i++) { cover_path = eet_read(ef, entries[i], NULL); row = etk_tree_row_append(tree, NULL, col, entries[i], NULL); if (strcmp("not found", cover_path)) { etk_tree_row_data_set(row, cover_path); } else { etk_tree_row_data_set(row, NULL); } } eet_close(ef); free(cover_db_path); etk_tree_col_sort_set(etk_tree_nth_col_get(tree, 0), tree_sort, NULL); etk_tree_thaw(tree); }
void layout_etk_simple_add_header(entropy_gui_component_instance* instance, Entropy_Config_Structure* structure_obj) { void *(*structure_plugin_init) (entropy_core * core, entropy_gui_component_instance *, void* parent_visual, void *data); entropy_plugin *structure; entropy_generic_file* file; Etk_Tree_Row* row; Etk_Tree_Col* col; entropy_layout_gui* gui = instance->data; char* icon_string = NULL; Ecore_List* layouts; _layout_etk_row_structure_plugin* struct_ref = NULL; col = etk_tree_nth_col_get(ETK_TREE(gui->tree), 0); /*Parse the file from the URI*/ file = entropy_core_parse_uri (structure_obj->uri); printf("Object for %s/%s is %p....\n", file->path, file->filename, file); /*This will be moved to a central function. TODO*/ if (!strcmp(file->uri_base, "file")) icon_string = PACKAGE_DATA_DIR "/icons/local-system.png"; else if (!strcmp(file->uri_base, "smb")) icon_string = PACKAGE_DATA_DIR "/icons/samba-system.png"; else if (!strcmp(file->uri_base,"sftp")) icon_string = PACKAGE_DATA_DIR "/icons/sftp-system.png"; else if (!strcmp(file->uri_base,"vfolder")) icon_string = PACKAGE_DATA_DIR "/icons/vfolder-system.png"; etk_tree_freeze(ETK_TREE(gui->tree)); row = etk_tree_row_append(ETK_TREE(gui->tree), NULL, col, icon_string, NULL, structure_obj->name, NULL); etk_tree_thaw(ETK_TREE(gui->tree)); structure = entropy_plugins_type_get_first(ENTROPY_PLUGIN_GUI_COMPONENT,ENTROPY_PLUGIN_GUI_COMPONENT_STRUCTURE_VIEW); structure_plugin_init = dlsym (structure->dl_ref, "entropy_plugin_gui_instance_new"); /*We shouldn't really assume it's a folder - but it bootstraps us for * now- FIXME*/ strcpy(file->mime_type, "file/folder"); file->filetype = FILE_FOLDER; if (!strlen (file->mime_type)) { entropy_mime_file_identify (file); } instance = (*structure_plugin_init)(instance->core, instance, row,file); instance->plugin = structure; /*Add to tracker*/ ecore_hash_set(_etk_layout_row_reference, row, structure_obj); printf ("LOADED: %s/%s\n", file->path, file->filename); /*Add to layout/plugin tracker - this is to destroy if the user removes a location*/ if (! (layouts = ecore_hash_get(_etk_layout_structure_plugin_reference, structure_obj))) { layouts = ecore_list_new(); ecore_hash_set(_etk_layout_structure_plugin_reference, structure_obj, layouts); } struct_ref = entropy_malloc(sizeof(_layout_etk_row_structure_plugin)); struct_ref->row = row; struct_ref->structure_plugin = structure; ecore_list_append(layouts, struct_ref); }
/* Creates the window for the tree test */ void etk_test_tree_window_create(void *data) { static Etk_Widget *win = NULL; Etk_Widget *vbox; Etk_Widget *hbox; Etk_Widget *tree; Etk_Widget *button; Etk_Tree_Col *col1, *col2, *col3, *col4, *col5, *col6; Etk_Tree_Row *row; Etk_Widget *statusbar; Etk_Color c_warn; char row_name[128]; const char *stock_key; int i, j; if (win) { etk_widget_show(ETK_WIDGET(win)); return; } /* Create the window and the vbox where the widgets will be packed into */ win = etk_window_new(); etk_window_title_set(ETK_WINDOW(win), "Etk Tree Test"); etk_window_resize(ETK_WINDOW(win), 640, 500); etk_signal_connect_by_code(ETK_WINDOW_DELETE_EVENT_SIGNAL, ETK_OBJECT(win), ETK_CALLBACK(etk_window_hide_on_delete), NULL); vbox = etk_vbox_new(ETK_FALSE, 0); etk_container_add(ETK_CONTAINER(win), vbox); /* Create the tree widget */ tree = etk_tree_new(); etk_tree_mode_set(ETK_TREE(tree), ETK_TREE_MODE_TREE); etk_scrolled_view_extra_vmargin_set(etk_tree_scrolled_view_get(ETK_TREE(tree)), 250); etk_scrolled_view_drag_bouncy_set(etk_tree_scrolled_view_get(ETK_TREE(tree)), ETK_BOUNCY_STOPTOOBJECT); etk_scrolled_view_dragable_set(etk_tree_scrolled_view_get(ETK_TREE(tree)), ETK_TRUE); etk_tree_multiple_select_set(ETK_TREE(tree), ETK_TRUE); etk_widget_padding_set(tree, 5, 5, 5, 5); etk_box_append(ETK_BOX(vbox), tree, ETK_BOX_START, ETK_BOX_EXPAND_FILL, 0); /* We first create the columns of the tree, and then we "build" the tree with etk_tree_build() */ col1 = etk_tree_col_new(ETK_TREE(tree), "Column 1", 130, 0.0); etk_tree_col_model_add(col1, etk_tree_model_image_new()); etk_tree_col_model_add(col1, etk_tree_model_text_new()); col2 = etk_tree_col_new(ETK_TREE(tree), "Column 2", 60, 1.0); etk_tree_col_model_add(col2, etk_tree_model_double_new()); col3 = etk_tree_col_new(ETK_TREE(tree), "Column 3", 80, 0.75); etk_tree_col_model_add(col3, etk_tree_model_int_new()); col4 = etk_tree_col_new(ETK_TREE(tree), "Column 4", 60, 0.0); etk_tree_col_model_add(col4, etk_tree_model_image_new()); col5 = etk_tree_col_new(ETK_TREE(tree), "Column 5", 60, 0.5); etk_tree_col_model_add(col5, etk_tree_model_checkbox_new()); col6 = etk_tree_col_new(ETK_TREE(tree), "Column 6", 60, 0.0); etk_tree_col_model_add(col6, etk_tree_model_progress_bar_new()); etk_tree_build(ETK_TREE(tree)); /* Then we add the rows to the tree. etk_tree_freeze/thaw() is used to improve * the speed when you insert a lot of rows. It is not really important if you * insert only some thousands of rows (here, we insert 3000 rows) */ etk_tree_freeze(ETK_TREE(tree)); etk_theme_color_get(NULL, ETK_COLOR_WARNING_FG, &c_warn.r, &c_warn.g, &c_warn.b, &c_warn.a); for (i = 0; i < 1000; i++) { sprintf(row_name, "Row %d", (i * 3) + 1); stock_key = etk_stock_key_get(ETK_STOCK_PLACES_USER_HOME, ETK_STOCK_SMALL); row = etk_tree_row_append(ETK_TREE(tree), NULL, col1, etk_theme_icon_path_get(), stock_key, row_name, col2, 0.57, col3, rand(), col4, PACKAGE_DATA_DIR "/images/1star.png", NULL, col5, ETK_FALSE, col6, 0.57, "57 %", NULL); for (j = 0; j < 3; j++) { Etk_Tree_Row *current; sprintf(row_name, "Row %d", (i * 3) + 2); stock_key = etk_stock_key_get(ETK_STOCK_PLACES_FOLDER, ETK_STOCK_SMALL); current = etk_tree_row_append(ETK_TREE(tree), row, col1, etk_theme_icon_path_get(), stock_key, row_name, col2, 20.0, col3, rand(), col4, PACKAGE_DATA_DIR "/images/2stars.png", NULL, col5, ETK_TRUE, col6, 0.20, "20 %", NULL); if (j == 2) row = current; } sprintf(row_name, "<font color=#%.2X%.2X%.2X%.2X>Row %d</font>", c_warn.r, c_warn.g, c_warn.b, c_warn.a, (i * 3) + 3); stock_key = etk_stock_key_get(ETK_STOCK_TEXT_X_GENERIC, ETK_STOCK_SMALL); etk_tree_row_append(ETK_TREE(tree), row, col1, etk_theme_icon_path_get(), stock_key, row_name, col2, 300.0, col3, 257, col4, PACKAGE_DATA_DIR "/images/3stars.png", NULL, col5, ETK_TRUE, NULL); } etk_tree_thaw(ETK_TREE(tree)); etk_tree_col_sort_set(col3, _etk_test_tree_compare_cb, NULL); hbox = etk_hbox_new(ETK_TRUE, 0); etk_box_append(ETK_BOX(vbox), hbox, ETK_BOX_START, ETK_BOX_FILL, 0); button = etk_button_new_with_label("Sort the tree"); etk_box_append(ETK_BOX(hbox), button, ETK_BOX_START, ETK_BOX_EXPAND, 0); etk_signal_connect_by_code(ETK_BUTTON_CLICKED_SIGNAL, ETK_OBJECT(button), ETK_CALLBACK(_etk_test_tree_sort_button_cb), col3); button = etk_button_new_with_label("Insert a sorted row"); etk_box_append(ETK_BOX(hbox), button, ETK_BOX_START, ETK_BOX_EXPAND, 0); etk_signal_connect_by_code(ETK_BUTTON_CLICKED_SIGNAL, ETK_OBJECT(button), ETK_CALLBACK(_etk_test_tree_insert_sorted_button_cb), ETK_TREE(tree)); button = etk_button_new_with_label("Select all"); etk_box_append(ETK_BOX(hbox), button, ETK_BOX_START, ETK_BOX_EXPAND, 0); etk_signal_connect_by_code(ETK_BUTTON_CLICKED_SIGNAL, ETK_OBJECT(button), ETK_CALLBACK(_etk_test_tree_select_all_cb), ETK_TREE(tree)); button = etk_button_new_with_label("Unselect all"); etk_box_append(ETK_BOX(hbox), button, ETK_BOX_START, ETK_BOX_EXPAND, 0); etk_signal_connect_by_code(ETK_BUTTON_CLICKED_SIGNAL, ETK_OBJECT(button), ETK_CALLBACK(_etk_test_tree_unselect_all_cb), ETK_TREE(tree)); /* Finally we create the statusbar used to display the events on the tree */ statusbar = etk_statusbar_new(); etk_box_append(ETK_BOX(vbox), statusbar, ETK_BOX_START, ETK_BOX_FILL, 0); etk_signal_connect_by_code(ETK_WIDGET_KEY_DOWN_SIGNAL, ETK_OBJECT(tree), ETK_CALLBACK(_etk_test_tree_key_down_cb), NULL); etk_signal_connect_by_code(ETK_TREE_ROW_CLICKED_SIGNAL, ETK_OBJECT(tree), ETK_CALLBACK(_etk_test_tree_row_clicked_cb), statusbar); etk_signal_connect_by_code(ETK_TREE_COL_CELL_VALUE_CHANGED_SIGNAL, ETK_OBJECT(col5), ETK_CALLBACK(_etk_test_tree_checkbox_toggled_cb), statusbar); etk_widget_show_all(win); }