Enlightenment CVS committal Author : chaos Project : e17 Module : proto
Dir : e17/proto/entropy/src/plugins Modified Files: Makefile.am distribution_thumbnailer.c etk_list_viewer.c thumbnailer.c Log Message: * Abstract out the context menu infrastructure from the local plugin. This makes it a recyclable component, and can be used in icon view, when the iconbox supports double click/etc =================================================================== RCS file: /cvs/e/e17/proto/entropy/src/plugins/Makefile.am,v retrieving revision 1.33 retrieving revision 1.34 diff -u -3 -r1.33 -r1.34 --- Makefile.am 8 Apr 2006 08:13:36 -0000 1.33 +++ Makefile.am 16 Apr 2006 11:37:03 -0000 1.34 @@ -117,7 +117,8 @@ $(top_srcdir)/src/entropy_gui.c \ $(top_srcdir)/src/entropy_debug.c \ $(top_srcdir)/src/dialogs/etk_directory_add_dialog.c \ - $(top_srcdir)/src/dialogs/etk_properties_dialog.c + $(top_srcdir)/src/dialogs/etk_properties_dialog.c \ + $(top_srcdir)/src/dialogs/etk_file_context_menu.c etk_list_la_CFLAGS = @ETK_CFLAGS@ etk_list_la_LDFLAGS = -module -avoid-version etk_list_la_LIBADD = @ETK_LIBS@ =================================================================== RCS file: /cvs/e/e17/proto/entropy/src/plugins/distribution_thumbnailer.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- distribution_thumbnailer.c 15 Apr 2006 09:01:19 -0000 1.6 +++ distribution_thumbnailer.c 16 Apr 2006 11:37:03 -0000 1.7 @@ -27,6 +27,8 @@ ecore_list_append (types, "image/gif"); ecore_list_append (types, "video/x-ms-wmv"); ecore_list_append (types, "video/mpeg"); + ecore_list_append (types, "video/x-msvideo"); + ecore_list_append (types, "video/quicktime"); } return types; =================================================================== RCS file: /cvs/e/e17/proto/entropy/src/plugins/etk_list_viewer.c,v retrieving revision 1.62 retrieving revision 1.63 diff -u -3 -r1.62 -r1.63 --- etk_list_viewer.c 15 Apr 2006 10:07:05 -0000 1.62 +++ etk_list_viewer.c 16 Apr 2006 11:37:03 -0000 1.63 @@ -5,7 +5,7 @@ #include <limits.h> #include <time.h> #include <Etk.h> -#include "etk_directory_add_dialog.h" +#include "entropy_etk_context_menu.h" #include "etk_properties_dialog.h" #define EN_DND_COL_NUM 5 @@ -28,10 +28,6 @@ Ecore_List *gui_events; Ecore_List *files; /*The entropy_generic_file references we copy. */ - Etk_Widget* popup; - Etk_Widget* open_with_menu; - Etk_Widget* open_with_menuitem; - /*Current folder - TODO - move to core - per layout API*/ entropy_generic_file* current_folder; @@ -56,12 +52,6 @@ Etk_Tree_Row *icon; }; -typedef enum _Etk_Menu_Item_Type -{ - ETK_MENU_ITEM_NORMAL, - ETK_MENU_ITEM_SEPARATOR -} Etk_Menu_Item_Type; - /*Headers*/ void @@ -69,6 +59,7 @@ void *el, entropy_gui_component_instance * comp); void gui_file_destroy (gui_file * file); int entropy_plugin_type_get (); +void entropy_etk_list_viewer_stat_callback(void* data, entropy_generic_file* file); /*-------------*/ @@ -106,165 +97,6 @@ } -static Etk_Widget *_entropy_etk_menu_item_new(Etk_Menu_Item_Type item_type, const char *label, - Etk_Stock_Id stock_id, Etk_Menu_Shell *menu_shell, Etk_Widget *statusbar) -{ - Etk_Widget *menu_item = NULL; - - switch (item_type) - { - case ETK_MENU_ITEM_NORMAL: - menu_item = etk_menu_item_image_new_with_label(label); - break; - case ETK_MENU_ITEM_SEPARATOR: - menu_item = etk_menu_item_separator_new(); - break; - default: - return NULL; - } - if (stock_id != ETK_STOCK_NO_STOCK) - { - Etk_Widget *image; - - image = etk_image_new_from_stock(stock_id, ETK_STOCK_SMALL); - etk_menu_item_image_set(ETK_MENU_ITEM_IMAGE(menu_item), ETK_IMAGE(image)); - } - etk_menu_shell_append(menu_shell, ETK_MENU_ITEM(menu_item)); - - /*etk_signal_connect("selected", ETK_OBJECT(menu_item), ETK_CALLBACK(_etk_test_menu_item_selected_cb), statusbar); - etk_signal_connect("deselected", ETK_OBJECT(menu_item), ETK_CALLBACK(_etk_test_menu_item_deselected_cb), statusbar);*/ - - return menu_item; -} - -static void -_open_folder_window_cb(Etk_Object* obj, void* data) -{ - entropy_gui_event* gui_event; - entropy_gui_component_instance* instance; - entropy_etk_file_list_viewer* viewer; - Etk_Tree_Row* row; - gui_file* file; - - instance = data; - if (instance) viewer = instance->data; - - if (instance && viewer) { - row = etk_tree_selected_row_get(ETK_TREE(viewer->tree)); - file = ecore_hash_get(etk_list_viewer_row_hash, row); - - if (file) { - printf("New folder handler...\n"); - - gui_event = entropy_malloc (sizeof (entropy_gui_event)); - gui_event->event_type = - entropy_core_gui_event_get (ENTROPY_GUI_EVENT_ACTION_FILE); - gui_event->data = file->file; - gui_event->hints |= ENTROPY_GUI_EVENT_HINT_WINDOW_NEW; - entropy_core_layout_notify_event (instance, gui_event, ENTROPY_EVENT_GLOBAL); - } - } - -} - -static void -_open_with_item_cb(Etk_Object *obj, void *data) -{ - int i; - entropy_gui_event* gui_event; - entropy_gui_component_instance* instance; - entropy_etk_file_list_viewer* viewer; - Etk_Tree_Row* row; - gui_file* file; - - - i = (int)etk_object_data_get(obj, "INDEX"); - instance = data; - if (instance) viewer = instance->data; - - if (instance && viewer) { - row = etk_tree_selected_row_get(ETK_TREE(viewer->tree)); - file = ecore_hash_get(etk_list_viewer_row_hash, row); - - - if (file) { - gui_event = entropy_malloc (sizeof (entropy_gui_event)); - gui_event->event_type = - entropy_core_gui_event_get (ENTROPY_GUI_EVENT_ACTION_FILE); - gui_event->data = file->file; - gui_event->key = i; - entropy_core_layout_notify_event (instance, gui_event, ENTROPY_EVENT_GLOBAL); - } - } -} - -static void -_entropy_etk_list_viewer_menu_popup_cb(Etk_Object *object, void *data) -{ - entropy_gui_component_instance* instance; - entropy_etk_file_list_viewer* viewer; - Etk_Tree_Row* row; - gui_file* file; - Entropy_Config_Mime_Binding* binding; - Entropy_Config_Mime_Binding_Action* action; - Evas_List* l; - - - instance = data; - viewer = instance->data; - - row = etk_tree_selected_row_get(ETK_TREE(viewer->tree)); - file = ecore_hash_get(etk_list_viewer_row_hash, row); - - if (file && strlen(file->file->mime_type)) { - - binding = entropy_config_mime_binding_for_type_get(file->file->mime_type); - - if (ETK_MENU_ITEM(viewer->open_with_menuitem)->submenu) { - etk_menu_item_submenu_set(ETK_MENU_ITEM(viewer->open_with_menuitem), NULL); - etk_object_destroy(ETK_OBJECT(viewer->open_with_menu)); - viewer->open_with_menu = NULL; - } - - /*If it's a folder, add an 'Open in new layout..' entry*/ - if (!strcmp(file->file->mime_type, "file/folder")) { - Etk_Widget* w; - - viewer->open_with_menu = etk_menu_new(); - etk_menu_item_submenu_set(ETK_MENU_ITEM(viewer->open_with_menuitem), ETK_MENU(viewer->open_with_menu)); - - w = _entropy_etk_menu_item_new(ETK_MENU_ITEM_NORMAL, "Open in new window", - ETK_STOCK_EDIT_COPY, ETK_MENU_SHELL(viewer->open_with_menu),NULL); - etk_signal_connect("activated", ETK_OBJECT(w), ETK_CALLBACK(_open_folder_window_cb), instance); - } - - - if (binding) { - Etk_Widget* w; - int i=0; - - if (!viewer->open_with_menu) { - viewer->open_with_menu = etk_menu_new(); - etk_menu_item_submenu_set(ETK_MENU_ITEM(viewer->open_with_menuitem), ETK_MENU(viewer->open_with_menu)); - } - - for (l = binding->actions; l; ) { - action = l->data; - - w = _entropy_etk_menu_item_new(ETK_MENU_ITEM_NORMAL, _(action->app_description), - ETK_STOCK_EDIT_COPY, ETK_MENU_SHELL(viewer->open_with_menu),NULL); - etk_object_data_set(ETK_OBJECT(w), "INDEX", (int*)i); - - etk_signal_connect("activated", ETK_OBJECT(w), ETK_CALLBACK(_open_with_item_cb), instance); - - l = l->next; - i++; - } - } - } - -} - /* Compares two rows of the tree */ static int _entropy_etk_list_filename_compare_cb(Etk_Tree *tree, Etk_Tree_Row *row1, Etk_Tree_Row *row2, Etk_Tree_Col *col, void *data) @@ -339,32 +171,6 @@ } } -void _entropy_etk_list_viewer_properties_cb(Etk_Object *object, void *data) -{ - entropy_gui_component_instance* instance = data; - entropy_etk_file_list_viewer* viewer = instance->data; - Etk_Tree_Row* row; - gui_file* file; - - row = etk_tree_selected_row_get(ETK_TREE(viewer->tree)); - file = ecore_hash_get(etk_list_viewer_row_hash, row); - - if (file) { - ecore_hash_set(viewer->properties_request_hash, file->file, (int*)1); - entropy_event_stat_request(file->file, instance); - } -} - -void _entropy_etk_list_viewer_directory_add_cb(Etk_Object *object, void *data) -{ - entropy_gui_component_instance* instance = data; - entropy_etk_file_list_viewer* viewer = instance->data; - - if (viewer->current_folder) { - etk_directory_add_dialog_create(viewer->current_folder) ; - } -} - /* Called when the user presses a key */ static void _etk_entropy_list_viewer_key_down_cb(Etk_Object *object, void *event, void *data) { @@ -602,7 +408,11 @@ entropy_core_layout_notify_event (file->instance, gui_event, ENTROPY_EVENT_GLOBAL); } else if (event->button == 3) { etk_tree_row_select(row); - etk_menu_popup(ETK_MENU(viewer->popup)); + + file = ecore_hash_get(etk_list_viewer_row_hash, row); + + entropy_etk_context_menu_popup(instance, file->file); + entropy_etk_context_menu_stat_cb_register(entropy_etk_list_viewer_stat_callback, viewer); } } @@ -716,6 +526,15 @@ etk_tree_thaw(ETK_TREE(viewer->tree)); } + + +void entropy_etk_list_viewer_stat_callback(void* data, entropy_generic_file* file) +{ + entropy_etk_file_list_viewer* viewer = data; + + ecore_hash_set(viewer->properties_request_hash, file, (int*)1); +} + void gui_event_callback (entropy_notify_event * eevent, void *requestor, void *el, entropy_gui_component_instance * comp) @@ -777,7 +596,7 @@ /*If !obj, it has been deleted - fail silently*/ if (obj) { - + if ( (ecore_hash_get(viewer->properties_request_hash, file_stat->file))) { ecore_hash_remove(viewer->properties_request_hash, file_stat->file); @@ -977,32 +796,6 @@ entropy_core_component_event_register (instance, entropy_core_gui_event_get (ENTROPY_GUI_EVENT_THUMBNAIL_AVAILABLE)); - - - - /*Popup init*/ - viewer->popup = etk_menu_new(); - etk_signal_connect("popped_up", ETK_OBJECT(viewer->popup), ETK_CALLBACK(_entropy_etk_list_viewer_menu_popup_cb), instance); - - viewer->open_with_menuitem = - _entropy_etk_menu_item_new(ETK_MENU_ITEM_NORMAL, _("Open With"), ETK_STOCK_EDIT_COPY, ETK_MENU_SHELL(viewer->popup),NULL); - viewer->open_with_menu = etk_menu_new(); - etk_menu_item_submenu_set(ETK_MENU_ITEM(viewer->open_with_menuitem), ETK_MENU(viewer->open_with_menu)); - - _entropy_etk_menu_item_new(ETK_MENU_ITEM_NORMAL, _("Copy"), ETK_STOCK_EDIT_COPY, ETK_MENU_SHELL(viewer->popup),NULL); - _entropy_etk_menu_item_new(ETK_MENU_ITEM_NORMAL, _("Cut"), ETK_STOCK_EDIT_CUT, ETK_MENU_SHELL(viewer->popup),NULL); - _entropy_etk_menu_item_new(ETK_MENU_ITEM_NORMAL, _("Paste"), ETK_STOCK_EDIT_PASTE, ETK_MENU_SHELL(viewer->popup),NULL); - _entropy_etk_menu_item_new(ETK_MENU_ITEM_NORMAL, _("Delete"), ETK_STOCK_EDIT_COPY, ETK_MENU_SHELL(viewer->popup),NULL); - menu_item = _entropy_etk_menu_item_new(ETK_MENU_ITEM_NORMAL, _("Properties"), ETK_STOCK_EDIT_COPY, ETK_MENU_SHELL(viewer->popup),NULL); - etk_signal_connect("activated", ETK_OBJECT(menu_item), ETK_CALLBACK(_entropy_etk_list_viewer_properties_cb), instance); - - menu_item = _entropy_etk_menu_item_new(ETK_MENU_ITEM_NORMAL, _("New"), ETK_STOCK_EDIT_COPY, ETK_MENU_SHELL(viewer->popup),NULL); - new_menu = etk_menu_new(); - etk_menu_item_submenu_set(ETK_MENU_ITEM(menu_item), ETK_MENU(new_menu)); - - menu_item = _entropy_etk_menu_item_new(ETK_MENU_ITEM_NORMAL, _("Folder.."), ETK_STOCK_EDIT_COPY, ETK_MENU_SHELL(new_menu),NULL); - etk_signal_connect("activated", ETK_OBJECT(menu_item), ETK_CALLBACK(_entropy_etk_list_viewer_directory_add_cb), instance); - =================================================================== RCS file: /cvs/e/e17/proto/entropy/src/plugins/thumbnailer.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -3 -r1.9 -r1.10 --- thumbnailer.c 15 Apr 2006 09:01:19 -0000 1.9 +++ thumbnailer.c 16 Apr 2006 11:37:03 -0000 1.10 @@ -31,6 +31,7 @@ ecore_list_append (types, "video/x-ms-wmv"); ecore_list_append (types, "video/mpeg"); ecore_list_append (types, "video/x-msvideo"); + ecore_list_append (types, "video/quicktime"); } ------------------------------------------------------- This SF.Net email is sponsored by xPML, a groundbreaking scripting language that extends applications into web and mobile media. Attend the live webcast and join the prime developer group breaking into this new coding territory! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs