Enlightenment CVS committal
Author : lordchaos
Project : e17
Module : proto
Dir : e17/proto/entropy/src/plugins
Modified Files:
ewl_icon_local_viewer.c layout_ewl_simple.c structure_viewer.c
Log Message:
* Check in DND code I've been holding back on until ewld_dnd is in
===================================================================
RCS file:
/cvsroot/enlightenment/e17/proto/entropy/src/plugins/ewl_icon_local_viewer.c,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -3 -r1.40 -r1.41
--- ewl_icon_local_viewer.c 11 Dec 2005 07:09:57 -0000 1.40
+++ ewl_icon_local_viewer.c 22 Dec 2005 04:34:42 -0000 1.41
@@ -110,7 +110,7 @@
Ecore_List* selected;
entropy_generic_file* file;
entropy_gui_component_instance* instance =
((entropy_gui_component_instance*)user_data);
- entropy_plugin* plugin =
entropy_plugins_type_get_first(instance->core->plugin_list,
ENTROPY_PLUGIN_BACKEND_FILE ,ENTROPY_PLUGIN_SUB_TYPE_ALL);
+ entropy_plugin* plugin =
entropy_plugins_type_get_first(ENTROPY_PLUGIN_BACKEND_FILE
,ENTROPY_PLUGIN_SUB_TYPE_ALL);
void (*copy_func)(entropy_generic_file* source, char* dest_uri,
entropy_gui_component_instance* requester);
@@ -258,8 +258,12 @@
freeobj = ecore_hash_get( gui_hash, obj);
-
- if (freeobj) gui_file_destroy(freeobj);
+ if (freeobj) {
+ /*Associate this icon with this file in the core, so
DND works*/
+ entropy_core_object_file_disassociate(freeobj->icon);
+
+ gui_file_destroy(freeobj);
+ }
/*Tell the core we no longer need this file - it might free it
now*/
entropy_core_file_cache_remove_reference(obj->md5);
@@ -303,8 +307,7 @@
* reference */
instance = ecore_list_next(file_list);
- plugin =
entropy_plugins_type_get_first(instance->core->plugin_list,
- ENTROPY_PLUGIN_BACKEND_FILE
,ENTROPY_PLUGIN_SUB_TYPE_ALL);
+ plugin = entropy_plugins_type_get_first(
ENTROPY_PLUGIN_BACKEND_FILE ,ENTROPY_PLUGIN_SUB_TYPE_ALL);
/*Get the func ref*/
del_func = dlsym(plugin->dl_ref,
"entropy_filesystem_file_remove");
@@ -607,6 +610,9 @@
ecore_hash_set(view->gui_hash, list_item, gui_object);
ecore_hash_set(view->icon_hash, icon, gui_object);
+ /*Associate this icon with this file in the core, so
DND works*/
+ entropy_core_object_file_associate(icon, list_item);
+
if (do_mime == DO_MIME) {
char* mime;
entropy_plugin* thumb;
@@ -874,7 +880,6 @@
entropy_file_progress* progress = ret;
- printf("Received a file progress event..\n");
if (!view->progress->progress_window) {
printf("Showing progressbar dialog..\n");
===================================================================
RCS file:
/cvsroot/enlightenment/e17/proto/entropy/src/plugins/layout_ewl_simple.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -3 -r1.19 -r1.20
--- layout_ewl_simple.c 12 Dec 2005 01:58:27 -0000 1.19
+++ layout_ewl_simple.c 22 Dec 2005 04:34:43 -0000 1.20
@@ -317,8 +317,7 @@
/*Now attach an object to it*/
- structure = entropy_plugins_type_get_first(instance->core->plugin_list,
- ENTROPY_PLUGIN_GUI_COMPONENT,
ENTROPY_PLUGIN_GUI_COMPONENT_STRUCTURE_VIEW);
+ structure =
entropy_plugins_type_get_first(ENTROPY_PLUGIN_GUI_COMPONENT,
ENTROPY_PLUGIN_GUI_COMPONENT_STRUCTURE_VIEW);
if (structure) {
Ewl_Widget* children[2];
@@ -500,7 +499,7 @@
/*---------------------------*/
/*HACK - get the iconbox - this should be configurable */
- plugin = entropy_plugins_type_get_first(core->plugin_list,
ENTROPY_PLUGIN_GUI_COMPONENT, ENTROPY_PLUGIN_GUI_COMPONENT_LOCAL_VIEW);
+ plugin = entropy_plugins_type_get_first(ENTROPY_PLUGIN_GUI_COMPONENT,
ENTROPY_PLUGIN_GUI_COMPONENT_LOCAL_VIEW);
if (plugin) {
//printf("Plugin: %s\n", plugin->filename);
entropy_plugin_init = dlsym(plugin->dl_ref,
"entropy_plugin_init");
===================================================================
RCS file:
/cvsroot/enlightenment/e17/proto/entropy/src/plugins/structure_viewer.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -3 -r1.19 -r1.20
--- structure_viewer.c 20 Dec 2005 22:01:20 -0000 1.19
+++ structure_viewer.c 22 Dec 2005 04:34:43 -0000 1.20
@@ -2,6 +2,12 @@
#include "entropy.h"
#include "entropy_gui.h"
#include <dlfcn.h>
+#include <limits.h>
+
+void dnd_leave_callback(Ewl_Widget *main_win, void *ev_data, void *user_data);
+void dnd_enter_callback(Ewl_Widget *main_win, void *ev_data, void *user_data);
+void dnd_drop_callback(Ewl_Widget* w, void* ev_data, void* user_data);
+
typedef struct entropy_file_structure_viewer entropy_file_structure_viewer;
@@ -130,7 +136,7 @@
void dnd_enter_callback(Ewl_Widget *main_win, void *ev_data, void *user_data) {
-event_file_core* event = (event_file_core*)user_data;
+ event_file_core* event = (event_file_core*)user_data;
entropy_file_structure_viewer* viewer =
(entropy_file_structure_viewer*)event->instance->data;
@@ -138,7 +144,7 @@
ewl_text_color_apply(EWL_TEXT(event->data), 255, 0, 0, 255,
ewl_text_length_get(EWL_TEXT(event->data)));
- printf("Entered text %p\n", main_win);
+ //printf("Entered text %p\n", main_win);
}
void dnd_leave_callback(Ewl_Widget *main_win, void *ev_data, void *user_data) {
@@ -149,7 +155,43 @@
ewl_text_color_apply(EWL_TEXT(event->data), 0, 0, 0, 255,
ewl_text_length_get(EWL_TEXT(event->data)));
- printf("Left text %p\n", main_win);
+ //printf("Left text %p\n", main_win);
+}
+
+void dnd_drop_callback(Ewl_Widget* w, void* ev_data, void* user_data) {
+ Ewl_Widget* widget = ewl_dnd_drag_widget_get();
+ event_file_core* event = (event_file_core*)user_data;
+
+
+ if (widget) {
+ printf("Drop widget: '%s'\n", widget->inheritance);
+ if (ewl_widget_type_is(widget, "icon")) {
+ char* folder;
+ Ewl_IconBox* iconbox =
EWL_ICONBOX_ICON(widget)->icon_box_parent;
+ Ecore_List* sel_list =
ewl_iconbox_get_selection(iconbox);
+ Ewl_IconBox_Icon* icon;
+ entropy_generic_file* file;
+ char dest_dir[PATH_MAX];
+
+ entropy_plugin* plugin =
+
entropy_plugins_type_get_first(ENTROPY_PLUGIN_BACKEND_FILE
,ENTROPY_PLUGIN_SUB_TYPE_ALL);
+ void (*copy_func)(entropy_generic_file* source, char*
dest_uri, entropy_gui_component_instance* requester);
+ copy_func = dlsym(plugin->dl_ref,
"entropy_filesystem_file_copy");
+
+ snprintf(dest_dir, PATH_MAX, "%s://%s/%s",
event->file->uri_base, event->file->path, event->file->filename);
+
+
+ ecore_list_goto_first(sel_list);
+ while ( (icon = ecore_list_remove_first(sel_list))) {
+ if ( (file =
entropy_core_object_file_association_get(icon))) {
+ printf("Filename: '%s' - '%s/%s'\n",
file->uri_base, file->path, file->filename);
+ (*copy_func)(file, dest_dir,
event->instance);
+ }
+ }
+
+ //printf("Copy to folder '%s/%s'\n", event->file->path,
event->file->filename);
+ }
+ }
}
@@ -228,6 +270,7 @@
ewl_callback_append(row, EWL_CALLBACK_CLICKED,
row_clicked_callback, event);
ewl_callback_append(row, EWL_CALLBACK_DND_ENTER,
dnd_enter_callback, event);
ewl_callback_append(row, EWL_CALLBACK_DND_LEAVE,
dnd_leave_callback, event);
+ ewl_callback_append(row, EWL_CALLBACK_DND_DROP,
dnd_drop_callback, event);
//ewl_widget_appearance_set(EWL_WIDGET(row), "entry");
-------------------------------------------------------
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://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
enlightenment-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs