Enlightenment CVS committal Author : chaos Project : e17 Module : proto
Dir : e17/proto/entropy/src/plugins Modified Files: Makefile.am etk_icon_viewer.c etk_meta_plugin.c layout_etk_simple.c Added Files: etk_hover_viewer.c Log Message: * Add 'hover plugin' - try it in icon mode, hover for ~2 secs over a video or image * Misc bugfixes =================================================================== RCS file: /cvs/e/e17/proto/entropy/src/plugins/Makefile.am,v retrieving revision 1.46 retrieving revision 1.47 diff -u -3 -r1.46 -r1.47 --- Makefile.am 2 Aug 2007 03:30:32 -0000 1.46 +++ Makefile.am 4 Aug 2007 13:46:26 -0000 1.47 @@ -40,6 +40,7 @@ ETK_METADATA_L = etk_metadata.la ETK_ICONBOX_L = etk_iconbox.la ETK_TRACKBACK_L = etk_trackback.la +ETK_HOVER_L = etk_hover.la else LAYOUT_ETK_L = ETK_LIST_VIEWER_L = @@ -47,9 +48,10 @@ ETK_METADATA_L = ETK_ICONBOX_L = ETK_TRACKBACK_L = +ETK_HOVER_L = endif -pkg_LTLIBRARIES = $(MIME_L) $(THUMBNAILER_L) $(POSIX_L) $(LAYOUT_L) $(EWL_LOCAL_ICON_L) $(STRUCTURE_VIEWER_L) $(SYSTEM_THUMBNAILER_L) $(ACTION_SIMPLE_L) $(LAYOUT_ETK_L) $(EWL_LIST_L) $(REMOTE_THUMBNAILER_L) $(DISTRIB_THUMBNAILER_L) $(ETK_STRUCTURE_VIEWER_L) $(ETK_LIST_VIEWER_L) $(METADATA_EXTRACT_L) $(ETK_METADATA_L) $(ETK_ICONBOX_L) $(ETK_TRACKBACK_L) +pkg_LTLIBRARIES = $(MIME_L) $(THUMBNAILER_L) $(POSIX_L) $(LAYOUT_L) $(EWL_LOCAL_ICON_L) $(STRUCTURE_VIEWER_L) $(SYSTEM_THUMBNAILER_L) $(ACTION_SIMPLE_L) $(LAYOUT_ETK_L) $(EWL_LIST_L) $(REMOTE_THUMBNAILER_L) $(DISTRIB_THUMBNAILER_L) $(ETK_STRUCTURE_VIEWER_L) $(ETK_LIST_VIEWER_L) $(METADATA_EXTRACT_L) $(ETK_METADATA_L) $(ETK_ICONBOX_L) $(ETK_TRACKBACK_L) $(ETK_HOVER_L) ewl_local_icon_la_SOURCES = $(top_srcdir)/src/entropy_gui.c \ $(top_srcdir)/src/dialogs/ewl_progress_dialog.c \ @@ -161,6 +163,14 @@ etk_metadata_la_CFLAGS = @ETK_CFLAGS@ etk_metadata_la_LDFLAGS = -module -avoid-version etk_metadata_la_LIBADD = @ETK_LIBS@ + +if HAVE_EMOTION +etk_hover_la_SOURCES = etk_hover_viewer.c +etk_hover_la_CFLAGS = @ETK_CFLAGS@ @EMOTION_CFLAGS@ +etk_hover_la_LDFLAGS = -module -avoid-version +etk_hover_la_LIBADD = @ETK_LIBS@ @EMOTION_LIBS@ +endif + endif mime_la_SOURCES = mime.c $(top_srcdir)/src/entropy_core.c =================================================================== RCS file: /cvs/e/e17/proto/entropy/src/plugins/etk_icon_viewer.c,v retrieving revision 1.26 retrieving revision 1.27 diff -u -3 -r1.26 -r1.27 --- etk_icon_viewer.c 25 Jul 2007 17:01:03 -0000 1.26 +++ etk_icon_viewer.c 4 Aug 2007 13:46:26 -0000 1.27 @@ -33,6 +33,17 @@ /*A file we're waiting on for passback properties*/ Ecore_Hash* properties_request_hash; + + /*Timer for tooltips*/ + Ecore_Timer* tooltimer; + Ecore_Timer* popuptimer; + + /*Hover positions*/ + int hx; + int hy; + + /*Hover file*/ + entropy_generic_file* hover_file; }; void _entropy_etk_icon_viewer_click_cb(Etk_Object *object, void *event_info, void *data); @@ -211,6 +222,73 @@ entropy_etk_icon_viewer_icon_size_set(viewer, value); } +int _entropy_etk_icon_viewer_hover_popup_cb(void* data) +{ + entropy_gui_component_instance *instance; + entropy_etk_iconbox_viewer *viewer; + entropy_file_request* req; + + req = data; + instance = (entropy_gui_component_instance*)req->requester; + viewer = instance->data; + + entropy_event_hover_request(instance,req->file, viewer->hx, viewer->hy); + entropy_core_file_cache_remove_reference(req->file->md5); + + viewer->hover_file = req->file; + free(req); + + ecore_timer_del(viewer->popuptimer); + viewer->popuptimer = NULL; + + return 0; +} + + +void _entropy_etk_icon_viewer_move_cb(Etk_Object *object, void *event_info, void *data) +{ + Etk_Event_Mouse_Move *event =event_info; + Etk_Iconbox_Icon* icon; + entropy_generic_file* file; + entropy_gui_component_instance *instance; + entropy_etk_iconbox_viewer *viewer; + Etk_Toplevel* toplevel; + int win_x,win_y; + + instance = data; + viewer = instance->data; + + if (viewer->popuptimer) { + ecore_timer_del(viewer->popuptimer); + viewer->popuptimer = NULL; + } + + if (viewer->hover_file) { + entropy_event_dehover_request(instance,viewer->hover_file); + viewer->hover_file = NULL; + } + + if (!(icon = etk_iconbox_icon_get_at_xy(ETK_ICONBOX(viewer->iconbox), + event->cur.canvas.x, event->cur.canvas.y, ETK_FALSE, ETK_TRUE, ETK_TRUE))) return; + + toplevel = etk_widget_toplevel_parent_get(viewer->iconbox); + etk_window_geometry_get(ETK_WINDOW(toplevel), &win_x, &win_y, NULL, NULL); + + file = etk_iconbox_icon_data_get(icon); + + if (file) { + entropy_file_request* req = calloc(1,sizeof(entropy_file_request)); + req->file = file; + req->requester = instance; + entropy_core_file_cache_add_reference(file->md5); + + viewer->hx = event->cur.canvas.x+win_x; + viewer->hy = event->cur.canvas.y+win_y; + + viewer->popuptimer = ecore_timer_add(2.0,_entropy_etk_icon_viewer_hover_popup_cb , req); + } +} + void _entropy_etk_icon_viewer_click_cb(Etk_Object *object, void *event_info, void *data) { entropy_gui_component_instance *instance; @@ -227,8 +305,6 @@ event = event_info; selected_count = 0; - printf("Button 1, but not double click - %d\n",event->flags); - if (!(icon = etk_iconbox_icon_get_at_xy(ETK_ICONBOX(viewer->iconbox), event->canvas.x, event->canvas.y, ETK_FALSE, ETK_TRUE, ETK_TRUE))) return; @@ -575,6 +651,7 @@ etk_signal_connect("mouse-down", ETK_OBJECT(viewer->iconbox), ETK_CALLBACK(_entropy_etk_icon_viewer_click_cb), instance); + etk_signal_connect("mouse-move", ETK_OBJECT(viewer->iconbox), ETK_CALLBACK(_entropy_etk_icon_viewer_move_cb), instance); /*DND Setup*/ /* dnd_types_num = 1; =================================================================== RCS file: /cvs/e/e17/proto/entropy/src/plugins/etk_meta_plugin.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- etk_meta_plugin.c 25 Jul 2007 17:01:03 -0000 1.6 +++ etk_meta_plugin.c 4 Aug 2007 13:46:26 -0000 1.7 @@ -149,7 +149,7 @@ entropy_gui_component_instance * entropy_plugin_gui_instance_new (entropy_core * core, - entropy_gui_component_instance * layout, void* parent_visual, void *data) + entropy_gui_component_instance * layout, void *data) { Etk_Tree_Col *col_tree; _etk_meta_plugin* view = entropy_malloc(sizeof(_etk_meta_plugin)); @@ -164,7 +164,7 @@ (ENTROPY_GUI_EVENT_FILE_METADATA_AVAILABLE)); instance->data = view; - view->parent_window = (Etk_Widget*)parent_visual; + view->parent_window = (Etk_Widget*)layout->gui_object; view->window = etk_window_new(); etk_window_decorated_set(ETK_WINDOW(view->window), ETK_FALSE); =================================================================== RCS file: /cvs/e/e17/proto/entropy/src/plugins/layout_etk_simple.c,v retrieving revision 1.76 retrieving revision 1.77 diff -u -3 -r1.76 -r1.77 --- layout_etk_simple.c 25 Jul 2007 17:01:03 -0000 1.76 +++ layout_etk_simple.c 4 Aug 2007 13:46:26 -0000 1.77 @@ -9,6 +9,7 @@ #include "etk_mime_dialog.h" #include "etk_file_cache_dialog.h" #include "entropy_etk_context_menu.h" +#include "entropy_etk_options_dialog.h" #include <dlfcn.h> #include <Ecore.h> #include <stdlib.h> @@ -621,6 +622,7 @@ break; case ENTROPY_NOTIFY_USER_INTERACTION_YES_NO_ABORT: { + /*FIXME: We need to handle different types here*/ entropy_etk_user_interaction_dialog_new((entropy_file_operation*)el); } break; @@ -687,16 +689,11 @@ void *data); entropy_plugin *local; - entropy_gui_component_instance* - (*metadata_plugin_init) (entropy_core * core, - entropy_gui_component_instance *, - void* parent_visual, - void *data); - - entropy_plugin *meta; + entropy_plugin *hover; entropy_plugin *trackback; entropy_gui_component_instance* meta_instance; + entropy_gui_component_instance* hover_instance; Etk_Tree_Col* col; Etk_Widget* vbox; @@ -874,15 +871,22 @@ } } - - /*Initialise the metadata plugin*/ meta = entropy_plugins_type_get_first(ENTROPY_PLUGIN_GUI_COMPONENT, ENTROPY_PLUGIN_GUI_COMPONENT_INFO_PROVIDER); if (meta) { - metadata_plugin_init = + local_plugin_init = dlsym(meta->dl_ref, "entropy_plugin_gui_instance_new"); - meta_instance = (*metadata_plugin_init)(core,layout,layout->gui_object,NULL); + meta_instance = (*local_plugin_init)(core,layout,NULL); meta_instance->plugin = meta; + } + + /*Initialise the hover viewer*/ + hover = entropy_plugins_type_get_first(ENTROPY_PLUGIN_GUI_COMPONENT, ENTROPY_PLUGIN_GUI_COMPONENT_HOVER_PROVIDER); + if (hover) { + local_plugin_init = + dlsym(hover->dl_ref, "entropy_plugin_gui_instance_new"); + hover_instance = (*local_plugin_init)(core,layout,NULL); + hover_instance->plugin = hover; } ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs