Enlightenment CVS committal

Author  : raster
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_gadcon.c e_gadcon.h e_shelf.c 


Log Message:


todo-- :)

===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_gadcon.c,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -3 -r1.30 -r1.31
--- e_gadcon.c  7 Jun 2006 23:30:12 -0000       1.30
+++ e_gadcon.c  15 Jun 2006 07:24:10 -0000      1.31
@@ -490,6 +490,17 @@
    return 1;
 }
 
+EAPI void
+e_gadcon_util_menu_attach_func_set(E_Gadcon *gc, 
+                                  void (*func) (void *data, E_Menu *menu),
+                                  void *data)
+{
+   E_OBJECT_CHECK(gc);
+   E_OBJECT_TYPE_CHECK(gc, E_GADCON_TYPE);
+   gc->menu_attach.func = func;
+   gc->menu_attach.data = data;
+}
+                                                        
 EAPI E_Gadcon_Client *
 e_gadcon_client_new(E_Gadcon *gc, const char *name, const char *id, const char 
*style, Evas_Object *base_obj)
 {
@@ -1002,20 +1013,20 @@
    e_menu_item_callback_set(mi, _e_gadcon_client_cb_menu_resizable, gcc);
 
    mi = e_menu_item_new(menu);
-   if (gcc->o_control)
-     e_menu_item_label_set(mi, _("Stop editing"));
-   else
-     e_menu_item_label_set(mi, _("Begin editing"));
-   e_util_menu_item_edje_icon_set(mi, "enlightenment/edit");
-   e_menu_item_callback_set(mi, _e_gadcon_client_cb_menu_edit, gcc);
-   
-   mi = e_menu_item_new(menu);
    e_menu_item_separator_set(mi, 1);
    
    mi = e_menu_item_new(menu);
    e_menu_item_label_set(mi, _("Remove this gadget"));
    e_util_menu_item_edje_icon_set(mi, "enlightenment/remove");
    e_menu_item_callback_set(mi, _e_gadcon_client_cb_menu_remove, gcc);
+
+   if (gcc->gadcon->menu_attach.func)
+     {
+       mi = e_menu_item_new(menu);
+       e_menu_item_separator_set(mi, 1);
+       
+       gcc->gadcon->menu_attach.func(gcc->gadcon->menu_attach.data, menu);
+     }
 }
 
 static void 
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_gadcon.h,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -3 -r1.22 -r1.23
--- e_gadcon.h  31 May 2006 18:44:18 -0000      1.22
+++ e_gadcon.h  15 Jun 2006 07:24:10 -0000      1.23
@@ -70,6 +70,10 @@
       Evas_Object *(*func) (void *data, E_Gadcon_Client *gcc, const char 
*style);
       void *data;
    } frame_request;
+   struct {
+      void (*func) (void *data, E_Menu *menu);
+      void *data;
+   } menu_attach;
    
    E_Config_Dialog    *config_dialog;
    unsigned char       editing : 1;
@@ -147,7 +151,8 @@
 EAPI E_Zone          *e_gadcon_zone_get(E_Gadcon *gc);
 EAPI void             e_gadcon_ecore_evas_set(E_Gadcon *gc, Ecore_Evas *ee);
 EAPI int              e_gadcon_canvas_zone_geometry_get(E_Gadcon *gc, int *x, 
int *y, int *w, int *h);
-    
+EAPI void             e_gadcon_util_menu_attach_func_set(E_Gadcon *gc, void 
(*func) (void *data, E_Menu *menu), void *data);
+
 EAPI E_Gadcon_Client *e_gadcon_client_new(E_Gadcon *gc, const char *name, 
const char *id, const char *style, Evas_Object *base_obj);
 EAPI void             e_gadcon_client_edit_begin(E_Gadcon_Client *gcc);
 EAPI void             e_gadcon_client_edit_end(E_Gadcon_Client *gcc);
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_shelf.c,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -3 -r1.27 -r1.28
--- e_shelf.c   8 Jun 2006 19:28:46 -0000       1.27
+++ e_shelf.c   15 Jun 2006 07:24:10 -0000      1.28
@@ -8,6 +8,13 @@
 static void _e_shelf_gadcon_min_size_request(void *data, E_Gadcon *gc, 
Evas_Coord w, Evas_Coord h);
 static void _e_shelf_gadcon_size_request(void *data, E_Gadcon *gc, Evas_Coord 
w, Evas_Coord h);
 static Evas_Object *_e_shelf_gadcon_frame_request(void *data, E_Gadcon_Client 
*gcc, const char *style);
+static void _e_shelf_cb_menu_config(void *data, E_Menu *m, E_Menu_Item *mi);
+static void _e_shelf_cb_menu_edit(void *data, E_Menu *m, E_Menu_Item *mi);
+static void _e_shelf_cb_menu_contents(void *data, E_Menu *m, E_Menu_Item *mi);
+static void _e_shelf_cb_confirm_dialog_yes(void *data);
+static void _e_shelf_cb_menu_delete(void *data, E_Menu *m, E_Menu_Item *mi);
+static void _e_shelf_menu_append(E_Shelf *es, E_Menu *mn);
+static void _e_shelf_cb_menu_items_append(void *data, E_Menu *mn);
 static void _e_shelf_cb_mouse_down(void *data, Evas *evas, Evas_Object *obj, 
void *event_info);
 static void _e_shelf_cb_mouse_up(void *data, Evas *evas, Evas_Object *obj, 
void *event_info);
 static void _e_shelf_cb_mouse_in(void *data, Evas *evas, Evas_Object *obj, 
void *event_info);
@@ -149,6 +156,9 @@
    edje_object_message_signal_process(es->o_base);
    e_gadcon_zone_set(es->gadcon, zone);
    e_gadcon_ecore_evas_set(es->gadcon, es->ee);
+   e_gadcon_util_menu_attach_func_set(es->gadcon,
+                                     _e_shelf_cb_menu_items_append,
+                                     es);
    
    shelves = evas_list_append(shelves, es);
    return es;
@@ -704,6 +714,44 @@
 }
 
 static void
+_e_shelf_menu_append(E_Shelf *es, E_Menu *mn)
+{
+   E_Menu_Item *mi;
+   
+   mi = e_menu_item_new(mn);
+   e_menu_item_label_set(mi, _("Shelf Location and Appearance Settings"));
+   e_util_menu_item_edje_icon_set(mi, "enlightenment/config");
+   e_menu_item_callback_set(mi, _e_shelf_cb_menu_config, es);
+   
+   mi = e_menu_item_new(mn);
+   if (es->gadcon->editing)
+     e_menu_item_label_set(mi, _("Stop Moving/Resizing Items"));
+   else
+     e_menu_item_label_set(mi, _("Begin Moving/Resizing Items"));
+   e_util_menu_item_edje_icon_set(mi, "enlightenment/edit");
+   e_menu_item_callback_set(mi, _e_shelf_cb_menu_edit, es);
+   
+   mi = e_menu_item_new(mn);
+   e_menu_item_label_set(mi, _("Configure Shelf Contents"));
+   e_util_menu_item_edje_icon_set(mi, "enlightenment/config");
+   e_menu_item_callback_set(mi, _e_shelf_cb_menu_contents, es);
+   
+   mi = e_menu_item_new(mn);
+   e_menu_item_label_set(mi, _("Delete this Shelf"));
+   e_util_menu_item_edje_icon_set(mi, "enlightenment/delete");
+   e_menu_item_callback_set(mi, _e_shelf_cb_menu_delete, es);
+}
+
+static void
+_e_shelf_cb_menu_items_append(void *data, E_Menu *mn)
+{
+   E_Shelf *es;
+   
+   es = data;
+   _e_shelf_menu_append(es, mn);
+}
+
+static void
 _e_shelf_cb_menu_config(void *data, E_Menu *m, E_Menu_Item *mi)
 {
    E_Shelf *es;
@@ -784,36 +832,14 @@
    if (ev->button == 3)
      {
         E_Menu *mn;
-       E_Menu_Item *mi;
        int cx, cy, cw, ch;
        
        mn = e_menu_new();
        e_menu_post_deactivate_callback_set(mn, _e_shelf_cb_menu_post, es);
        es->menu = mn;
-       
-       mi = e_menu_item_new(mn);
-       e_menu_item_label_set(mi, _("Shelf Location and Appearance Settings"));
-       e_util_menu_item_edje_icon_set(mi, "enlightenment/config");
-       e_menu_item_callback_set(mi, _e_shelf_cb_menu_config, es);
-
-       mi = e_menu_item_new(mn);
-       if (es->gadcon->editing)
-         e_menu_item_label_set(mi, _("Stop Moving/Resizing Items"));
-       else
-         e_menu_item_label_set(mi, _("Begin Moving/Resizing Items"));
-       e_util_menu_item_edje_icon_set(mi, "enlightenment/edit");
-       e_menu_item_callback_set(mi, _e_shelf_cb_menu_edit, es);
-       
-       mi = e_menu_item_new(mn);
-       e_menu_item_label_set(mi, _("Configure Shelf Contents"));
-       e_util_menu_item_edje_icon_set(mi, "enlightenment/config");
-       e_menu_item_callback_set(mi, _e_shelf_cb_menu_contents, es);
-
-       mi = e_menu_item_new(mn);
-       e_menu_item_label_set(mi, _("Delete this Shelf"));
-       e_util_menu_item_edje_icon_set(mi, "enlightenment/delete");
-       e_menu_item_callback_set(mi, _e_shelf_cb_menu_delete, es);
 
+       _e_shelf_menu_append(es, mn);
+       
        e_gadcon_canvas_zone_geometry_get(es->gadcon, &cx, &cy, &cw, &ch);
        e_menu_activate_mouse(mn,
                              e_util_zone_current_get(e_manager_current_get()),




_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to