Enlightenment CVS committal

Author  : codewarrior
Project : e17
Module  : proto

Dir     : e17/proto/etk/src/bin


Modified Files:
        etk_button_test.c etk_xdnd_test.c 


Log Message:
- add theme stuff to show when a widget accepts a drop
- add per widget dnd types, now widgets can opt to only get image/png or 
text/uri-list etc.
- remove generate dnd aware code for widgets, make widgets select wether they 
want to be a drag source or drag destinaion or both
- reflect new changes in etk_test

===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/etk/src/bin/etk_button_test.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- etk_button_test.c   11 Feb 2006 10:27:14 -0000      1.8
+++ etk_button_test.c   14 Feb 2006 02:28:02 -0000      1.9
@@ -1,8 +1,6 @@
 #include "etk_test.h"
 #include "config.h"
 
-static void _etk_test_button_drag_drop_cb(Etk_Object *object, void *data);
-
 /* Creates the window for the button test */
 void etk_test_button_window_create(void *data)
 {
@@ -52,8 +50,6 @@
    etk_box_pack_start(ETK_BOX(vbox), button_radio, ETK_FALSE, ETK_FALSE, 0);
    
    button_toggle = etk_toggle_button_new_with_label(_("Toggle button"));
-   etk_widget_dnd_aware_set(button_toggle, ETK_TRUE);
-   etk_signal_connect("drag_drop", ETK_OBJECT(button_toggle), 
ETK_CALLBACK(_etk_test_button_drag_drop_cb), button_toggle);
    etk_box_pack_start(ETK_BOX(vbox), button_toggle, ETK_FALSE, ETK_FALSE, 0);
    
    button_toggle = etk_toggle_button_new();
@@ -61,19 +57,3 @@
 
    etk_widget_show_all(win);
 }
-
-/* Called when a file is dropped on the button */
-static void _etk_test_button_drag_drop_cb(Etk_Object *object, void *data)
-{
-   int num_files, i;
-   const char **files;
-   
-   if (!object)
-      return;
-   
-   files = etk_widget_dnd_files_get(ETK_WIDGET(object), &num_files);
-   printf("Our test widget got a drop with %d files\n", num_files);
-   
-   for (i = 0; i < num_files; i++)
-      printf("Widget got the file: %s\n", files[i]);
-}
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/etk/src/bin/etk_xdnd_test.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- etk_xdnd_test.c     12 Feb 2006 13:13:44 -0000      1.5
+++ etk_xdnd_test.c     14 Feb 2006 02:28:02 -0000      1.6
@@ -9,16 +9,21 @@
 static void _etk_test_xdnd_clipboard_text_request_cb(Etk_Object *object, void 
*event, void *data);
 static void _etk_test_xdnd_button_paste_cb(Etk_Object *object, void *data);
 static void _etk_test_xdnd_button_copy_cb(Etk_Object *object, void *data);
+static void _etk_test_xdnd_selection_text_request_cb(Etk_Object *object, void 
*event, void *data);
+static void _etk_test_xdnd_button_selection_set_cb(Etk_Object *object, void 
*data);
+static void _etk_test_xdnd_button_selection_get_cb(Etk_Object *object, void 
*data);
 
 /* Creates the window for the xdnd test */
 void etk_test_xdnd_window_create(void *data)
 {
-   static Etk_Widget *win = NULL;
-   Etk_Widget *vbox;
-   Etk_Widget *button;
-   Etk_Widget *label;
-   Etk_Widget *image;
-   Etk_Widget *entry;
+   static Etk_Widget  *win = NULL;
+   Etk_Widget  *vbox;
+   Etk_Widget  *button;
+   Etk_Widget  *label;
+   Etk_Widget  *image;
+   Etk_Widget  *entry;
+   char      **dnd_types;
+   int         dnd_types_num;  
    
    if (win)
    {
@@ -36,8 +41,13 @@
 
    label = etk_label_new(_("No File Set"));   
    
+   dnd_types_num = 1;
+   dnd_types = calloc(dnd_types_num, sizeof(char*));
+   dnd_types[0] = strdup("text/uri-list");
+   
    button = etk_button_new_with_label(_("Drag Any File Onto Me"));
-   etk_widget_dnd_aware_set(button, ETK_TRUE);
+   etk_widget_dnd_dest_set(button, ETK_TRUE);
+   etk_widget_dnd_types_set(button, dnd_types, dnd_types_num);
    etk_signal_connect("drag_drop", ETK_OBJECT(button), 
ETK_CALLBACK(_etk_test_xdnd_drag_drop_cb), label);
    etk_signal_connect("drag_motion", ETK_OBJECT(button), 
ETK_CALLBACK(_etk_test_xdnd_drag_motion_cb), NULL);
    etk_signal_connect("drag_leave", ETK_OBJECT(button), 
ETK_CALLBACK(_etk_test_xdnd_drag_leave_cb), NULL);
@@ -48,7 +58,7 @@
    image = etk_image_new_from_file(PACKAGE_DATA_DIR "/images/e_icon.png");
 
    button = etk_button_new_with_label(_("Drag Any Image Onto Me"));
-   etk_widget_dnd_aware_set(button, ETK_TRUE);
+   etk_widget_dnd_dest_set(button, ETK_TRUE);
    etk_signal_connect("drag_drop", ETK_OBJECT(button), 
ETK_CALLBACK(_etk_test_xdnd_drag_drop_cb2), image);
    etk_box_pack_start(ETK_BOX(vbox), button, ETK_FALSE, ETK_FALSE, 0);  
    etk_box_pack_start(ETK_BOX(vbox), image, ETK_FALSE, ETK_FALSE, 0);
@@ -67,6 +77,20 @@
    etk_box_pack_start(ETK_BOX(vbox), button, ETK_FALSE, ETK_FALSE, 0);   
    etk_box_pack_start(ETK_BOX(vbox), entry, ETK_FALSE, ETK_FALSE, 0);
    
+   label = etk_label_new("");
+   etk_signal_connect("selection_received", ETK_OBJECT(label), 
ETK_CALLBACK(_etk_test_xdnd_selection_text_request_cb), NULL);
+   
+   button = etk_button_new_with_label(_("Press me to get selection text"));
+   etk_signal_connect("clicked", ETK_OBJECT(button), 
ETK_CALLBACK(_etk_test_xdnd_button_selection_get_cb), label);
+   etk_box_pack_start(ETK_BOX(vbox), button, ETK_FALSE, ETK_FALSE, 0);  
+   etk_box_pack_start(ETK_BOX(vbox), label, ETK_FALSE, ETK_FALSE, 0);   
+   
+   entry = etk_entry_new();
+   button = etk_button_new_with_label(_("Click me to set selection text"));
+   etk_signal_connect("clicked", ETK_OBJECT(button), 
ETK_CALLBACK(_etk_test_xdnd_button_selection_set_cb), entry);
+   etk_box_pack_start(ETK_BOX(vbox), button, ETK_FALSE, ETK_FALSE, 0);   
+   etk_box_pack_start(ETK_BOX(vbox), entry, ETK_FALSE, ETK_FALSE, 0);
+   
    etk_widget_show_all(win);
 }
 
@@ -105,6 +129,10 @@
    const char **files;
    
    files = etk_widget_dnd_files_get(ETK_WIDGET(object), &num_files);
+   
+   if(files == NULL || num_files < 1)
+     return;
+   
    printf("Our test widget got a drop with %d files\n", num_files);
    
    for (i = 0; i < num_files; i++)
@@ -141,3 +169,28 @@
    if(text)
      etk_clipboard_text_set(ETK_WIDGET(data), text, strlen(text) + 1);
 }
+
+/* Called when a some text is fetched from a selection */
+static void _etk_test_xdnd_selection_text_request_cb(Etk_Object *object, void 
*event, void *data)
+{
+   Etk_Event_Selection_Request *ev;
+   
+   ev = event;
+   etk_label_set(ETK_LABEL(object), (char *)ev->data);
+}
+
+/* Called when the "get selection" button is clicked */
+static void _etk_test_xdnd_button_selection_get_cb(Etk_Object *object, void 
*data)
+{
+   etk_selection_text_request(ETK_WIDGET(data));
+}
+
+/* Called when the "set selection" button is clicked */
+static void _etk_test_xdnd_button_selection_set_cb(Etk_Object *object, void 
*data)
+{
+   const char *text = NULL;
+   
+   text = etk_entry_text_get(ETK_ENTRY(data));
+   if(text)
+     etk_selection_text_set(ETK_WIDGET(data), text, strlen(text) + 1);
+}




-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to