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

Reply via email to