Enlightenment CVS committal

Author  : chaos
Project : e17
Module  : proto

Dir     : e17/proto/entropy/src/plugins


Modified Files:
        etk_icon_viewer.c etk_list_viewer.c layout_etk_simple.c 
        thumbnailer.c 


Log Message:
* Big changes - copy/cut/paste events/requests now available to layout event 
consumers
* This is also means that cut/copy/paste are now available from the main window 
(as well as through Ctrl-(x|c|v)

===================================================================
RCS file: /cvs/e/e17/proto/entropy/src/plugins/etk_icon_viewer.c,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -3 -r1.20 -r1.21
--- etk_icon_viewer.c   6 Sep 2006 11:09:22 -0000       1.20
+++ etk_icon_viewer.c   7 Sep 2006 13:40:15 -0000       1.21
@@ -49,6 +49,8 @@
                          entropy_generic_file * file);
 void icon_viewer_remove_row(entropy_gui_component_instance * instance,
                          entropy_generic_file * file);
+Ecore_List* 
+entropy_etk_icon_viewer_selected_get(entropy_etk_iconbox_viewer* viewer);
 
 
 int
@@ -243,19 +245,13 @@
          if (ctrl_pressed != ETK_TRUE) 
etk_iconbox_unselect_all(ETK_ICONBOX(viewer->iconbox));
          etk_iconbox_icon_select(icon);
 
-         selected = ecore_list_new();
-         for (icon = ETK_ICONBOX(viewer->iconbox)->first_icon; icon ; icon = 
icon->next ) {
-               if (etk_iconbox_is_selected(icon)) {
-                    file = etk_iconbox_icon_data_get(icon);
-                    ecore_list_append(selected, file);
-                    selected_count++;
-               }
-         }
-
-         if (selected_count > 1) {
-                 entropy_etk_context_menu_popup_multi(instance,selected);
-         } else {
-                 entropy_etk_context_menu_popup(instance, file);
+         selected = entropy_etk_icon_viewer_selected_get(viewer);
+         if (ecore_list_nodes(selected)) {
+                 if (ecore_list_nodes(selected) > 1) {
+                         
entropy_etk_context_menu_popup_multi(instance,selected);
+                 } else {
+                         entropy_etk_context_menu_popup(instance, file);
+                 }
          }
          ecore_list_destroy(selected);
   }
@@ -335,9 +331,49 @@
      }
      break;    
 
+     case ENTROPY_NOTIFY_COPY_REQUEST: {
+       Ecore_List* selected;
+       entropy_generic_file* file;
+                                              
+       printf("ICONBOX: Copy request\n");
+
+       entropy_core_selected_files_clear();
+       selected = entropy_etk_icon_viewer_selected_get(viewer);
+
+       ecore_list_goto_first(selected);
+       while ( (file = ecore_list_next(selected))) {
+               entropy_core_selected_file_add(file);
+       }
+     }
+     break;
+
+     case ENTROPY_NOTIFY_CUT_REQUEST: {
+       printf("ICONBOX: Cut request\n");                                       
      
+     }
+     break;
+
   }
 }
 
+Ecore_List* 
+entropy_etk_icon_viewer_selected_get(entropy_etk_iconbox_viewer* viewer)
+{
+       Ecore_List* selected;
+       Etk_Iconbox_Icon* icon;
+       entropy_generic_file* file;
+       
+         selected = ecore_list_new();
+         for (icon = ETK_ICONBOX(viewer->iconbox)->first_icon; icon ; icon = 
icon->next ) {
+               if (etk_iconbox_is_selected(icon)) {
+                    file = etk_iconbox_icon_data_get(icon);
+                    ecore_list_append(selected, file);
+               }
+         }
+
+         return selected;
+}
+
+
 void
 icon_viewer_add_row (entropy_gui_component_instance * instance,
                          entropy_generic_file * file)
@@ -365,7 +401,6 @@
                          entropy_generic_file * file)
 {
        entropy_etk_iconbox_viewer* viewer;
-       Etk_Iconbox_Icon* icon;
        gui_file* event_file = NULL;
        
        viewer = instance->data;
@@ -566,6 +601,15 @@
   entropy_core_component_event_register (instance,
                                         entropy_core_gui_event_get
                                         
(ENTROPY_GUI_EVENT_THUMBNAIL_AVAILABLE));
+
+  /*We want to know if the core sends copy/cut requests*/
+  entropy_core_component_event_register (instance,
+                                        entropy_core_gui_event_get
+                                        (ENTROPY_GUI_EVENT_COPY_REQUEST));
+
+  entropy_core_component_event_register (instance,
+                                        entropy_core_gui_event_get
+                                        (ENTROPY_GUI_EVENT_CUT_REQUEST));
 
 
   etk_widget_show_all(viewer->vbox);
===================================================================
RCS file: /cvs/e/e17/proto/entropy/src/plugins/etk_list_viewer.c,v
retrieving revision 1.72
retrieving revision 1.73
diff -u -3 -r1.72 -r1.73
--- etk_list_viewer.c   5 Sep 2006 08:10:11 -0000       1.72
+++ etk_list_viewer.c   7 Sep 2006 13:40:15 -0000       1.73
@@ -825,6 +825,15 @@
                                         entropy_core_gui_event_get
                                         
(ENTROPY_GUI_EVENT_THUMBNAIL_AVAILABLE));
 
+  /*We want to know if the core sends copy/cut requests*/
+  entropy_core_component_event_register (instance,
+                                        entropy_core_gui_event_get
+                                        (ENTROPY_GUI_EVENT_COPY_REQUEST));
+
+  entropy_core_component_event_register (instance,
+                                        entropy_core_gui_event_get
+                                        (ENTROPY_GUI_EVENT_CUT_REQUEST));
+
 
   
   if (!etk_callback_setup) {
===================================================================
RCS file: /cvs/e/e17/proto/entropy/src/plugins/layout_etk_simple.c,v
retrieving revision 1.67
retrieving revision 1.68
diff -u -3 -r1.67 -r1.68
--- layout_etk_simple.c 5 Sep 2006 07:05:49 -0000       1.67
+++ layout_etk_simple.c 7 Sep 2006 13:40:15 -0000       1.68
@@ -75,6 +75,10 @@
 void entropy_layout_etk_simple_local_view_set(entropy_gui_component_instance* 
instance,
                entropy_gui_component_instance* local);
 
+static void _entropy_layout_etk_cut_cb(Etk_Object* object, void* data);
+static void _entropy_layout_etk_copy_cb(Etk_Object* object, void* data);
+static void _entropy_layout_etk_paste_cb(Etk_Object* object, void* data);
+
 
 
 void layout_etk_simple_quit(entropy_core* core)
@@ -198,6 +202,28 @@
    return menu_item;
 }
 
+
+
+/*-----*/
+/*Cut/Copy/Paste Callbacks*/
+static void _entropy_layout_etk_cut_cb(Etk_Object* object, void* data)
+{
+       printf("Cut request at layout..\n");
+       entropy_event_cut_request(data);
+}
+
+static void _entropy_layout_etk_copy_cb(Etk_Object* object, void* data)
+{
+       printf("Copy request at layout..\n");
+       entropy_event_copy_request(data);
+}
+
+static void _entropy_layout_etk_paste_cb(Etk_Object* object, void* data)
+{
+       printf("Paste request at layout..\n");
+       entropy_event_paste_request(data);
+}
+
 /*-----*/
 /*Location related functions*/
 static void _etk_layout_location_delete_confirm_cb(Etk_Object * object, void 
*data)
@@ -465,6 +491,12 @@
    {
           if (!strcmp(ev->key, "q")) {
                   layout_etk_simple_quit(instance->core);
+          } else if (!strcmp(ev->key, "c")) {
+                _entropy_layout_etk_copy_cb(NULL, instance); 
+          } else if (!strcmp(ev->key, "x")) {
+                  _entropy_layout_etk_cut_cb(NULL, instance);
+          } else if (!strcmp(ev->key, "v")) {
+               _entropy_layout_etk_paste_cb(NULL, instance);
           }
    } else if ((ev->modifiers & ETK_MODIFIER_ALT)) {
           if (!strcmp(ev->key, "i")) {
@@ -610,8 +642,30 @@
             }
             break;
 
-            case ENTROPY_NOTIFY_METADATA_GROUPS: {
-               
/*entropy_etk_context_menu_metadata_groups_populate((Evas_List*)eevent->return_struct);*/
+            case ENTROPY_NOTIFY_PASTE_REQUEST: {
+               printf("Paste request..\n");
+                                                       
+               Entropy_Selection_Type stype = 
entropy_core_selection_type_get();
+               entropy_generic_file* cfolder = 
+                       
((entropy_gui_component_instance_layout*)comp)->current_folder; 
+               Ecore_List* files = entropy_core_selected_files_get();
+               
+               if (cfolder) {
+                       char* f_uri =   cfolder->uri;
+                       if (f_uri) {
+                               if (stype == ENTROPY_SELECTION_COPY) {
+                                       
entropy_plugin_filesystem_file_copy_multi(files, f_uri, 
+                                               comp);
+                               } else if (stype == ENTROPY_SELECTION_CUT) {
+                                       
entropy_plugin_filesystem_file_move_multi(files, f_uri, 
+                                               comp);                          
        
+                               } else {
+                                       printf("Unsupported copy type at 
context menu paste\n");
+                               }
+                       }
+               } else {
+                       printf("Current folder is NULL at layout paste\n");
+               }
             }
             break;
 
@@ -706,6 +760,10 @@
                                         entropy_core_gui_event_get
                                         (ENTROPY_GUI_EVENT_METADATA_GROUPS));
 
+  entropy_core_component_event_register (layout,
+                                        entropy_core_gui_event_get
+                                        (ENTROPY_GUI_EVENT_PASTE_REQUEST));
+
 
   /*Etk related init */
   window = etk_window_new ();
@@ -855,9 +913,15 @@
   menu_item = _entropy_etk_menu_item_new(ETK_MENU_ITEM_NORMAL, _("Edit"), 
ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(menubar), NULL);
   menu = etk_menu_new();
   etk_menu_item_submenu_set(ETK_MENU_ITEM(menu_item), ETK_MENU(menu));
-  _entropy_etk_menu_item_new(ETK_MENU_ITEM_NORMAL, _("Cut"), 
ETK_STOCK_EDIT_CUT, ETK_MENU_SHELL(menu), NULL);
-  _entropy_etk_menu_item_new(ETK_MENU_ITEM_NORMAL, _("Copy"), 
ETK_STOCK_EDIT_COPY, ETK_MENU_SHELL(menu), NULL);
-  _entropy_etk_menu_item_new(ETK_MENU_ITEM_NORMAL, _("Paste"), 
ETK_STOCK_EDIT_PASTE, ETK_MENU_SHELL(menu), NULL);
+  
+  menu_item = _entropy_etk_menu_item_new(ETK_MENU_ITEM_NORMAL, _("Cut"), 
ETK_STOCK_EDIT_CUT, ETK_MENU_SHELL(menu), NULL);
+  etk_signal_connect("activated", ETK_OBJECT(menu_item), 
ETK_CALLBACK(_entropy_layout_etk_cut_cb), layout);
+  
+  menu_item = _entropy_etk_menu_item_new(ETK_MENU_ITEM_NORMAL, _("Copy"), 
ETK_STOCK_EDIT_COPY, ETK_MENU_SHELL(menu), NULL);
+  etk_signal_connect("activated", ETK_OBJECT(menu_item), 
ETK_CALLBACK(_entropy_layout_etk_copy_cb), layout);
+  
+  menu_item = _entropy_etk_menu_item_new(ETK_MENU_ITEM_NORMAL, _("Paste"), 
ETK_STOCK_EDIT_PASTE, ETK_MENU_SHELL(menu), NULL);
+  etk_signal_connect("activated", ETK_OBJECT(menu_item), 
ETK_CALLBACK(_entropy_layout_etk_paste_cb), layout);
   
   
   /*Tools menu*/
===================================================================
RCS file: /cvs/e/e17/proto/entropy/src/plugins/thumbnailer.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -3 -r1.11 -r1.12
--- thumbnailer.c       6 Aug 2006 05:33:50 -0000       1.11
+++ thumbnailer.c       7 Sep 2006 13:40:15 -0000       1.12
@@ -90,7 +90,7 @@
 
        plugin = entropy_malloc(sizeof(Entropy_Plugin_Thumbnailer_Child));
 
-       return plugin;
+       return ENTROPY_PLUGIN(plugin);
 }
 
 



-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to