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