Enlightenment CVS committal Author : lordchaos Project : e17 Module : proto
Dir : e17/proto/entropy/src/plugins Modified Files: etk_list_viewer.c etk_structure_viewer.c Log Message: * DND File copy for ETK/entropy. Don't be too scared - this is an identicial code path to the tried and tested file copy code already in entropy. =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/plugins/etk_list_viewer.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -3 -r1.13 -r1.14 --- etk_list_viewer.c 21 Feb 2006 10:45:18 -0000 1.13 +++ etk_list_viewer.c 21 Feb 2006 11:28:54 -0000 1.14 @@ -81,9 +81,6 @@ static void _entropy_etk_list_viewer_drag_begin_cb(Etk_Object *object, void *data) { Etk_Tree *tree; - Etk_Tree_Row *row; - char *icol1_string; - char *icol2_string; const char **types; unsigned int num_types; void *drag_data; @@ -91,40 +88,50 @@ Etk_Widget *image; entropy_gui_component_instance* instance; entropy_etk_file_list_viewer* viewer; + int i=0; + + char buffer[8192]; /* Um - help - what do we size this to? */ + + int count = 0; Evas_List* rows; instance = data; viewer = instance->data; - printf("Drag start...\n"); - tree = ETK_TREE(object); + rows = etk_tree_selected_rows_get(tree); drag = (ETK_WIDGET(tree))->drag; - for (rows = etk_tree_selected_rows_get(tree); rows; rows = rows->next ) { + count = evas_list_count(rows); + bzero(buffer,8192); + for (; rows; rows = rows->next ) { printf("Row %p resolves to %p:%s!\n", rows->data, ecore_hash_get(row_hash, rows->data), ((gui_file*)ecore_hash_get(row_hash, rows->data))->file->uri ); + strcat(buffer, ((gui_file*)ecore_hash_get(row_hash, rows->data))->file->uri); + strcat(buffer, "\r\n"); } types = calloc(1, sizeof(char*)); num_types = 1; - types[0] = strdup("text/plain"); - drag_data = strdup("Hi!"); //ecore_hash_get(row_hash, row); + types[0] = strdup("text/uri-list"); + - printf("Row: %p, Drag data: %p\n", row, drag_data); - - //snprintf(drag_data, PATH_MAX * sizeof(char), "file://%s/%s", tab->cur_path, icol2_string); + printf("Drag buffer: %s\n", buffer); etk_drag_types_set(drag, types, num_types); - etk_drag_data_set(drag, drag_data, strlen(drag_data)+1); + etk_drag_data_set(drag, buffer, strlen(buffer)+1); + + + + /*image = etk_image_new_from_file(icol1_string); etk_image_keep_aspect_set(ETK_IMAGE(image), ETK_TRUE); etk_widget_size_request_set(image, 96, 96); etk_container_add(ETK_CONTAINER(drag), image);*/ - + evas_list_free(rows); } @@ -402,7 +409,7 @@ /*DND Setup*/ dnd_types_num = 1; dnd_types = calloc(dnd_types_num, sizeof(char*)); - dnd_types[0] = strdup("text/plain"); + dnd_types[0] = strdup("text/uri-list"); etk_widget_dnd_source_set(viewer->tree, ETK_TRUE); etk_widget_dnd_drag_widget_set(viewer->tree, etk_button_new_with_label("Drag Widget")); //etk_widget_dnd_drag_data_set(viewer->tree, dnd_types, dnd_types_num, "This is the drag data!", strlen("This is the drag data!") + 1); =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/entropy/src/plugins/etk_structure_viewer.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- etk_structure_viewer.c 21 Feb 2006 10:15:56 -0000 1.4 +++ etk_structure_viewer.c 21 Feb 2006 11:28:54 -0000 1.5 @@ -63,15 +63,42 @@ static void _etk_structure_viewer_xdnd_drag_drop_cb(Etk_Object *object, void *event, void *data) { Etk_Event_Selection_Request *ev; - Etk_Selection_Data_Text *text; - + Etk_Selection_Data_Files *files; + Etk_Tree* tree; + Etk_Tree_Row* row; int i; + entropy_etk_file_structure_viewer* viewer; + entropy_gui_component_instance* instance; + event_file_core* e_event; ev = event; - text = ev->data; - + files = ev->data; + tree = ETK_TREE(object); + row = etk_tree_selected_row_get(tree); - printf("Drop data '%p'\n", (char*)text->text); + instance = ecore_hash_get(instance_map_hash, row); + if (instance) { + viewer = instance->data; + e_event = ecore_hash_get(viewer->row_hash, row); + + if(ev->content != ETK_SELECTION_CONTENT_FILES) { + printf("Drop wasn't files!\n"); + return; + } + + printf("We received %d files\n", files->num_files); + for (i = 0; i < files->num_files; i++) + { + entropy_generic_file* file = entropy_core_uri_generic_file_retrieve(files->files[i]); + + printf("File is '%s' ---> %p\n", files->files[i], file); + printf("Destination: %s\n", e_event->file->uri); + + entropy_plugin_filesystem_file_copy(file, e_event->file->uri, instance); + } + } else { + printf("Could not get instance for dropped row!\n"); + } } static void _etk_structure_viewer_row_clicked(Etk_Object *object, Etk_Tree_Row *row, Etk_Event_Mouse_Up_Down *event, void *data) @@ -117,7 +144,6 @@ { Etk_Tree_Row* new_row; entropy_etk_file_structure_viewer* viewer; - char* folder; event_file_core *event; Etk_Tree_Col* col; Etk_Tree_Row* parent; @@ -252,7 +278,7 @@ /*Accept drops*/ dnd_types_num = 1; dnd_types = calloc(dnd_types_num, sizeof(char*)); - dnd_types[0] = strdup("text/plain"); + dnd_types[0] = strdup("text/uri-list"); etk_widget_dnd_types_set( ((Etk_Tree_Row*)parent_visual)->tree, dnd_types, dnd_types_num); etk_widget_dnd_dest_set( ((Etk_Tree_Row*)parent_visual)->tree , ETK_TRUE); ------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Do you grep through log files for problems? Stop! Download the new AJAX search engine that makes searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs