Enlightenment CVS committal

Author  : onefang
Project : e_modules
Module  : emu

Dir     : e_modules/emu/src/modules/emu


Modified Files:
        .cvsignore Makefile.am border_props.c border_props.h 
        e_mod_config.c e_mod_config.h e_mod_main.c e_mod_main.h 
        module_face.edc 
Removed Files:
        module_icon.png 


Log Message:
* Update for recent gadcon API changes.
* Remove gadman version.

===================================================================
RCS file: /cvs/e/e_modules/emu/src/modules/emu/.cvsignore,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- .cvsignore  27 Jan 2006 01:11:05 -0000      1.1
+++ .cvsignore  1 Jun 2006 17:16:42 -0000       1.2
@@ -5,3 +5,4 @@
 *.lo
 *.la
 *.edj
+*.eap
===================================================================
RCS file: /cvs/e/e_modules/emu/src/modules/emu/Makefile.am,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- Makefile.am 5 Feb 2006 04:39:40 -0000       1.4
+++ Makefile.am 1 Jun 2006 17:16:42 -0000       1.5
@@ -9,12 +9,7 @@
 
 # data files for the module
 filesdir = $(libdir)/enlightenment/modules/$(MODULE)
-files_DATA = \
-module_edje.edj \
-module_edje.edc \
-module_face.edc \
-module_icon.edc \
-module_icon.png
+files_DATA = module.eap
 
 EXTRA_DIST = $(files_DATA)
 
@@ -41,10 +36,14 @@
 module_la_LDFLAGS      = -module -avoid-version
 module_la_DEPENDENCIES = $(top_builddir)/config.h
 
-module_edje.edj: Makefile module_edje.edc module_face.edc module_icon.edc
-        $(EDJE_CC) $(EDJE_FLAGS) \
-        module_edje.edc \
-        module_edje.edj
+module.eap: Makefile module_edje.edc module_face.edc module_icon.edc
+       $(EDJE_CC) $(EDJE_FLAGS) module_edje.edc module.eap
+       enlightenment_eapp module.eap \
+       -set-name "Emu" \
+       -set-generic "gadget" \
+       -set-comment "Experimental generic scriptable module for E17" \
+       -set-exe "enlightenment" \
+       -set-icon-class "emu,gadget"
 
 clean-local:
-        rm -rf *.edj *~
+        rm -rf *.eap *~
===================================================================
RCS file: /cvs/e/e_modules/emu/src/modules/emu/border_props.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- border_props.c      20 Mar 2006 11:37:33 -0000      1.4
+++ border_props.c      1 Jun 2006 17:16:42 -0000       1.5
@@ -1,6 +1,3 @@
-/*
- * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
- */
 #include "border_props.h"
 
 struct _E_Config_Dialog_Data
@@ -61,7 +58,7 @@
 {
    int found = 1;
    char buf[32];
-   char *result = NULL;
+   const char *result = NULL;
 
    buf[0] = '\0';
    switch (type)
===================================================================
RCS file: /cvs/e/e_modules/emu/src/modules/emu/border_props.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- border_props.h      20 Mar 2006 11:37:33 -0000      1.2
+++ border_props.h      1 Jun 2006 17:16:42 -0000       1.3
@@ -1,6 +1,3 @@
-/*
- * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
- */
 #ifdef E_TYPEDEFS
 
 #else
===================================================================
RCS file: /cvs/e/e_modules/emu/src/modules/emu/e_mod_config.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- e_mod_config.c      20 Mar 2006 11:37:33 -0000      1.8
+++ e_mod_config.c      1 Jun 2006 17:16:42 -0000       1.9
@@ -4,11 +4,6 @@
 
 struct _E_Config_Dialog_Data
 {
-   int autofit;
-   int follower;
-   int iconsize;
-   double follow_speed;
-   double autoscroll_speed;
 };
 
 struct _Cfg_File_Data
@@ -26,7 +21,7 @@
 static int _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data 
*cfdata);
 
 void
-_config_emu_module(E_Container *con, Emu *emu)
+_config_emu_module(E_Container *con, Emu_Face *emu_face)
 {
    E_Config_Dialog *cfd;
    E_Config_Dialog_View *v;
@@ -42,40 +37,35 @@
    v->advanced.create_widgets = _advanced_create_widgets;
 
    /* Create The Dialog */
-   cfd = e_config_dialog_new(con, D_("Emu Configuration"), NULL, 0, v, emu);
-   emu->config_dialog = cfd;
+   cfd = e_config_dialog_new(con, D_("Emu Configuration"), NULL, 0, v, 
emu_face);
+   emu_face->config_dialog = cfd;
 }
 
 static void
-_fill_data(Emu *emu, E_Config_Dialog_Data *cfdata)
+_fill_data(Emu_Face *emu_face, E_Config_Dialog_Data *cfdata)
 {
-   cfdata->autofit = (emu->conf->width == EMU_WIDTH_AUTO);
-   cfdata->follower = emu->conf->follower;
-   cfdata->iconsize = emu->conf->iconsize;
-   cfdata->follow_speed = emu->conf->follow_speed;
-   cfdata->autoscroll_speed = emu->conf->autoscroll_speed;
 }
 
 static void *
 _create_data(E_Config_Dialog *cfd)
 {
    E_Config_Dialog_Data *cfdata;
-   Emu *emu;
+   Emu_Face *emu_face;
 
-   emu = cfd->data;
+   emu_face = cfd->data;
    cfdata = E_NEW(E_Config_Dialog_Data, 1);
 
-   _fill_data(emu, cfdata);
+   _fill_data(emu_face, cfdata);
    return cfdata;
 }
 
 static void
 _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
 {
-   Emu *emu;
+   Emu_Face *emu_face;
 
-   emu = cfd->data;
-   emu->config_dialog = NULL;
+   emu_face = cfd->data;
+   emu_face->config_dialog = NULL;
    free(cfdata);
 }
 
@@ -85,10 +75,7 @@
    Evas_Object *o, *ob;
 
    o = e_widget_list_add(evas, 0, 0);
-   ob = e_widget_check_add(evas, _("Show Follower"), &(cfdata->follower));
-   e_widget_list_object_append(o, ob, 1, 1, 0.5);
-   ob = e_widget_check_add(evas, _("Auto Fit Icons"), &(cfdata->autofit));
-   e_widget_list_object_append(o, ob, 1, 1, 0.5);
+
 
    return o;
 }
@@ -96,31 +83,16 @@
 static int
 _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
 {
-   Emu *emu;
+   Emu_Face *emu_face;
 
-   emu = cfd->data;
+   emu_face = cfd->data;
    e_border_button_bindings_ungrab_all();
-   if ((cfdata->follower) && (!emu->conf->follower))
-     {
-        emu->conf->follower = 1;
-     }
-   else if (!(cfdata->follower) && (emu->conf->follower))
-     {
-        emu->conf->follower = 0;
-     }
-
-   if ((cfdata->autofit) && (emu->conf->width == EMU_WIDTH_FIXED))
-     {
-        emu->conf->width = EMU_WIDTH_AUTO;
-     }
-   else if (!(cfdata->autofit) && (emu->conf->width == EMU_WIDTH_AUTO))
-     {
-        emu->conf->width = EMU_WIDTH_FIXED;
-     }
+
+
    e_border_button_bindings_grab_all();
    e_config_save_queue();
 
-   _emu_cb_config_updated(emu);
+   _emu_cb_config_updated(emu_face);
    return 1;
 }
 
@@ -131,28 +103,6 @@
 
    o = e_widget_list_add(evas, 0, 0);
 
-   of = e_widget_framelist_add(evas, _("Follower"), 0);
-   ob = e_widget_check_add(evas, _("Visible"), &(cfdata->follower));
-   e_widget_framelist_object_append(of, ob);
-   ob = e_widget_label_add(evas, _("Follow Speed"));
-   e_widget_framelist_object_append(of, ob);
-   ob = e_widget_slider_add(evas, 1, 0, _("%1.2f px/s"), 0.0, 1.0, 0.01, 0, 
&(cfdata->follow_speed), NULL, 200);
-   e_widget_framelist_object_append(of, ob);
-   e_widget_list_object_append(o, of, 1, 1, 0.5);
-
-   of = e_widget_framelist_add(evas, _("Icon Size"), 0);
-   ob = e_widget_slider_add(evas, 1, 0, _("%3.0f pixels"), 8.0, 128.0, 1.0, 0, 
NULL, &(cfdata->iconsize), 200);
-   e_widget_framelist_object_append(of, ob);
-   e_widget_list_object_append(o, of, 1, 1, 0.5);
-
-   of = e_widget_framelist_add(evas, _("Width"), 0);
-   ob = e_widget_check_add(evas, _("Auto Fit"), &(cfdata->autofit));
-   e_widget_framelist_object_append(of, ob);
-   ob = e_widget_label_add(evas, _("Autoscroll Speed:"));
-   e_widget_framelist_object_append(of, ob);
-   ob = e_widget_slider_add(evas, 1, 0, _("%1.2f px/s"), 0.0, 1.0, 0.01, 0, 
&(cfdata->autoscroll_speed), NULL, 200);
-   e_widget_framelist_object_append(of, ob);
-   e_widget_list_object_append(o, of, 1, 1, 0.5);
 
    return o;
 }
@@ -160,44 +110,15 @@
 static int
 _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
 {
-   Emu *emu;
+   Emu_Face *emu_face;
 
-   emu = cfd->data;
+   emu_face = cfd->data;
    e_border_button_bindings_ungrab_all();
-   if ((cfdata->follower) && (!emu->conf->follower))
-     {
-        emu->conf->follower = 1;
-     }
-   else if (!(cfdata->follower) && (emu->conf->follower))
-     {
-        emu->conf->follower = 0;
-     }
-
-   if ((cfdata->autofit) && (emu->conf->width == EMU_WIDTH_FIXED))
-     {
-        emu->conf->width = EMU_WIDTH_AUTO;
-     }
-   else if (!(cfdata->autofit) && (emu->conf->width == EMU_WIDTH_AUTO))
-     {
-        emu->conf->width = EMU_WIDTH_FIXED;
-     }
-
-   if (cfdata->iconsize != emu->conf->iconsize)
-     {
-        emu->conf->iconsize = cfdata->iconsize;
-     }
-   if (cfdata->follow_speed != emu->conf->follow_speed)
-     {
-        emu->conf->follow_speed = cfdata->follow_speed;
-     }
-   if (cfdata->autoscroll_speed != emu->conf->autoscroll_speed)
-     {
-        emu->conf->autoscroll_speed = cfdata->autoscroll_speed;
-     }
+
 
    e_border_button_bindings_grab_all();
    e_config_save_queue();
 
-   _emu_cb_config_updated(emu);
+   _emu_cb_config_updated(emu_face);
    return 1;
 }
===================================================================
RCS file: /cvs/e/e_modules/emu/src/modules/emu/e_mod_config.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- e_mod_config.h      5 Feb 2006 04:39:40 -0000       1.4
+++ e_mod_config.h      1 Jun 2006 17:16:42 -0000       1.5
@@ -3,6 +3,6 @@
 #ifndef E_MOD_CONFIG_H
 #define E_MOD_CONFIG_H
 #include "e_mod_main.h"
-void _config_emu_module(E_Container *con, Emu *emu);
+void _config_emu_module(E_Container *con, Emu_Face *emu_face);
 #endif
 #endif
===================================================================
RCS file: /cvs/e/e_modules/emu/src/modules/emu/e_mod_main.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -3 -r1.11 -r1.12
--- e_mod_main.c        20 Mar 2006 11:37:33 -0000      1.11
+++ e_mod_main.c        1 Jun 2006 17:16:42 -0000       1.12
@@ -1,5 +1,7 @@
 #include "e_mod_main.h"
 
+
+static E_Module *emu_module = NULL;
 static const char *_emu_module_edje = NULL;
 
 /* The emu commands. */
@@ -26,11 +28,12 @@
    ""
 };
 
-/* E_Gadget interface. */
-static void _emu_face_init(void *data, E_Gadget_Face *face);
-static void _emu_face_free(void *data, E_Gadget_Face *face);
-static void _emu_face_change(void *data, E_Gadget_Face *face, E_Gadman_Client 
*gmc, E_Gadman_Change change);
-static void _emu_face_menu_init(void *data, E_Gadget_Face *face);
+/* gadcon requirements */
+static E_Gadcon_Client *_gc_init(E_Gadcon *gc, const char *name, const char 
*id, const char *style);
+static void _gc_shutdown(E_Gadcon_Client *gcc);
+static void _gc_orient(E_Gadcon_Client *gcc);
+static char *_gc_label(void);
+static Evas_Object *_gc_icon(Evas *evas);
 
 /* Parsers. */
 static void _emu_parse_command(Emu_Face *emu_face, int command, char *name, 
int start, int end);
@@ -42,7 +45,7 @@
 static void _emu_parse_menu(Emu_Face *emu_face, char *name, int start, int 
end);
 
 /* Support functions. */
-static void _emu_add_face_menu(E_Gadget_Face *face, E_Menu *menu);
+//static void _emu_add_face_menu(E_Gadget_Face *face, E_Menu *menu);
 
 /* Ecore_Exe callback functions. */
 static int _emu_cb_exe_add(void *data, int type, void *ev);
@@ -56,24 +59,7 @@
 static void _emu_menu_cb_action(void *data, E_Menu *m, E_Menu_Item *mi);
 static Evas_Bool _emu_menus_hash_cb_free(Evas_Hash *hash, const char *key, 
void *data, void *fdata);
 
-static void _emu_cb_menu_configure(void *data, E_Menu *m, E_Menu_Item *mi);
-
-/* This is temporary until there is support in E_Gadget for third party 
modules. */
-void
-emu_gadget_face_theme_set(E_Gadget_Face *face, char *category, char *file, 
char *group)
-{
-   Evas_Object *o;
-   Evas_Coord x, y, w, h;
-
-   if (!face)
-      return;
-
-   o = edje_object_add(face->evas);
-   face->main_obj = o;
-   if (!e_theme_edje_object_set(o, category, group))
-      edje_object_file_set(o, file, group);
-   evas_object_show(o);
-}
+//static void _emu_cb_menu_configure(void *data, E_Menu *m, E_Menu_Item *mi);
 
 /**
  * @defgroup Emu_Module_Basic_Group Emu module API interface
@@ -89,48 +75,17 @@
  */
 E_Module_Api e_modapi = {
    E_MODULE_API_VERSION,        /* Minimal API version this module expects. */
-   "Emu"                        /* Title of this module, or NULL to just use 
the modules name. */
+   "Emu_gadcon"                        /* Title of this module, or NULL to 
just use the modules name. */
 };
 
-/**
- * Setup the main menu icon for the module.
- *
- * It is called when the module is first loaded.
- * You have three choices, an icon edje, an icon file, or do nothing.
- * These three members of E_Module (icon_file, edje_icon_file, and 
edje_icon_key)
- * will be free()ed for you when the module is unloaded, so you need 
- * to malloc() them,  strdup() them, or leave them as NULL.
- *
- * @param   m a pointer to your E_Module structure.
- * @return  1 for success, 0 for failure, it is currently ignored though.
- *          If there is not enough ram to allocate some strings, 
- *          then not having an icon is the least of our problems.
- * @ingroup Emu_Module_Basic_Group
- */
-EAPI int
-e_modapi_info(E_Module *m)
+static const E_Gadcon_Client_Class _gadcon_class =
 {
-   char buf[4096];
-
-   snprintf(buf, sizeof(buf), "%s/module_edje.edj", e_module_dir_get(m));
-   _emu_module_edje = evas_stringshare_add(buf);
-#if 0
-   snprintf(buf, sizeof(buf), "%s/module_icon.png", e_module_dir_get(m));
-   m->icon_file = strdup(buf);  /* Default icon file if no edge is set. */
-#else
-   if (_emu_module_edje)
+   GADCON_CLIENT_CLASS_VERSION,
+     "emu",
      {
-        m->edje_icon_file = strdup(_emu_module_edje);   /* Icon edje file. */
-        if (m->edje_icon_file)
-          {
-             snprintf(buf, sizeof(buf), "icon");
-             m->edje_icon_key = strdup(buf);    /* Icon edje key, defaults to 
"icon". */
-          }
+       _gc_init, _gc_shutdown, _gc_orient, _gc_label, _gc_icon
      }
-#endif
-
-   return 1;
-}
+};
 
 /**
  * Display your modules about dialog.
@@ -144,7 +99,7 @@
 {
    /* This is a basic module dialog that is provided for simplicity, 
     * but there is probably nothing stopping you from making a complex dialog. 
*/
-   e_module_dialog_show(D_("Enlightenment Emu Module - version " VERSION),
+   e_module_dialog_show(D_("Enlightenment Emu Module - gadcon version " 
VERSION),
                         D_
                         ("Experimental generic scriptable module for 
E17.<br><br>"
                          "Keep an eye out for the emu's.<br>"
@@ -165,40 +120,18 @@
 EAPI void *
 e_modapi_init(E_Module *m)
 {
-   Emu *emu;
+   char buf[4096];
 
+   emu_module = m;
+   snprintf(buf, sizeof(buf), "%s/module.eap", e_module_dir_get(m));
+   _emu_module_edje = evas_stringshare_add(buf);
    /* Set up module's message catalogue */
    bindtextdomain(PACKAGE, LOCALEDIR);
    bind_textdomain_codeset(PACKAGE, "UTF-8");
 
-   emu = E_NEW(Emu, 1);
+   e_gadcon_provider_register(&_gadcon_class);
 
-   if (emu)
-     {
-        /*
-         * set up gadget -- only module and name are required, but the gadget 
would
-         * be pretty useless without func_face_*
-         */
-        emu->api.module = m;
-        emu->api.name = "emu_gadget";
-        emu->api.per_zone = 1;
-        emu->api.func_face_init = _emu_face_init;
-        emu->api.func_face_free = _emu_face_free;
-        emu->api.func_change = _emu_face_change;
-        emu->api.func_face_menu_init = _emu_face_menu_init;
-        emu->api.data = emu;
-        emu->gad = e_gadget_new(&emu->api);
-
-        emu->del = ecore_event_handler_add(ECORE_EXE_EVENT_DEL, 
_emu_cb_exe_del, emu->gad);
-
-        if ((emu->gad == NULL) || (emu->del == NULL))
-          {
-             e_modapi_shutdown(m);
-             emu = NULL;
-          }
-     }
-
-   return emu;
+   return 1;
 }
 
 /**
@@ -213,14 +146,6 @@
 EAPI int
 e_modapi_save(E_Module *m)
 {
-   Emu *emu;
-
-   emu = m->data;
-
-   if (emu)
-     {
-     }
-
    return 1;
 }
 
@@ -238,18 +163,8 @@
 EAPI int
 e_modapi_shutdown(E_Module *m)
 {
-   Emu *emu;
-
-   emu = m->data;
-
-   if (emu)
-     {
-        if (emu->del)
-           ecore_event_handler_del(emu->del);
-        if (emu->gad)
-           e_object_del(E_OBJECT(emu->gad));
-        E_FREE(emu);
-     }
+   emu_module = NULL;
+   e_gadcon_provider_unregister(&_gadcon_class);
 
 // FIXME: we really want to do this at unload time.
 //   if (_emu_module_edje)   evas_stringshare_del(_emu_module_edje);
@@ -275,27 +190,34 @@
  * @param   face a pointer to your E_Gadget_Face.
  * @ingroup Emu_Module_Gadget_Group
  */
-static void
-_emu_face_init(void *data, E_Gadget_Face *face)
+static E_Gadcon_Client *
+_gc_init(E_Gadcon *gc, const char *name, const char *id, const char *style)
 {
-   Emu *emu;
+   E_Gadcon_Client *gcc = NULL;
    Emu_Face *emu_face;
-
-   emu = data;
-
+   
    emu_face = E_NEW(Emu_Face, 1);
 
    if (emu_face)
      {
-        face->data = emu_face;
-        emu_face->emu = emu;
-        emu_face->face = face;
+        Evas_Object *o;
+
+        o = edje_object_add(gc->evas);
+        if ((!e_theme_edje_object_set(o, "base/theme/modules/emu", 
"modules/emu/main")) /*&& (_emu_module_edje)*/)
+           edje_object_file_set(o, (char *)_emu_module_edje, 
"modules/emu/main");
+        edje_object_signal_emit(o, "passive", "");
+
+        gcc = e_gadcon_client_new(gc, name, id, style, o);
+        gcc->data = emu_face;
+        emu_face->gcc = gcc;
+        emu_face->o_button = o;
         emu_face->menus = NULL;
 
         emu_face->name = evas_stringshare_add("Emu tester");
         emu_face->command = evas_stringshare_add("emu_client");
         if (emu_face->command)
           {
+             emu_face->del = ecore_event_handler_add(ECORE_EXE_EVENT_DEL, 
_emu_cb_exe_del, emu_face);
              emu_face->add = ecore_event_handler_add(ECORE_EXE_EVENT_ADD, 
_emu_cb_exe_add, emu_face);
              emu_face->read = ecore_event_handler_add(ECORE_EXE_EVENT_DATA, 
_emu_cb_exe_data, emu_face);
              emu_face->exe =
@@ -304,14 +226,15 @@
              if (!emu_face->exe)
                 e_module_dialog_show(D_("Enlightenment Emu Module - error"), 
D_("There is no emu."));
           }
-     }
 
-   if (_emu_module_edje)
-      emu_gadget_face_theme_set(face, "base/theme/modules/emu", (char 
*)_emu_module_edje, "emu/main");
-
-   evas_object_event_callback_add(face->event_obj, EVAS_CALLBACK_MOUSE_DOWN, 
_emu_face_cb_mouse_down, emu_face);
+        e_gadcon_client_util_menu_attach(gcc);
+        evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, 
_emu_face_cb_mouse_down, emu_face);
+     }
+   
+   return gcc;
 }
 
+
 /**
  * Module specific face right click menu creation.
  *
@@ -321,28 +244,11 @@
  * @param   face a pointer to your E_Gadget_Face.
  * @ingroup Emu_Module_Gadget_Group
  */
-static void
-_emu_face_menu_init(void *data, E_Gadget_Face *face)
-{
-   _emu_add_face_menu(face, face->menu);
-}
-
-/**
- * Module specific face changing.
- *
- * It is called when a face is changed.
- *
- * @param   data the pointer you passed to e_gadget_new().
- * @param   face a pointer to your E_Gadget_Face.
- * @param   gmc a pointer to your E_Gadman_Client.
- * @param   change a pointer to your E_Gadman_Change.
- * @ingroup Emu_Module_Gadget_Group
- */
-static void
-_emu_face_change(void *data, E_Gadget_Face *face, E_Gadman_Client *gmc, 
E_Gadman_Change change)
-{
-   printf("change face!\n");
-}
+//static void
+//_emu_face_menu_init(void *data, E_Gadget_Face *face)
+//{
+//   _emu_add_face_menu(face, face->menu);
+//}
 
 /**
  * Module specific face freeing.
@@ -354,14 +260,11 @@
  * @ingroup Emu_Module_Gadget_Group
  */
 static void
-_emu_face_free(void *data, E_Gadget_Face *face)
+_gc_shutdown(E_Gadcon_Client *gcc)
 {
-   Emu *emu;
    Emu_Face *emu_face;
 
-   emu = data;
-   emu_face = face->data;
-
+   emu_face = gcc->data;
    if (emu_face)
      {
         evas_hash_foreach(emu_face->menus, _emu_menus_hash_cb_free, NULL);
@@ -372,16 +275,45 @@
            ecore_event_handler_del(emu_face->read);
         if (emu_face->add)
            ecore_event_handler_del(emu_face->add);
+        if (emu_face->del)
+           ecore_event_handler_del(emu_face->del);
 
         if (emu_face->exe)
            ecore_exe_terminate(emu_face->exe);
         if (emu_face->command)
            evas_stringshare_del(emu_face->command);
 
+        evas_object_del(emu_face->o_button);
         E_FREE(emu_face);
      }
 }
 
+static void
+_gc_orient(E_Gadcon_Client *gcc)
+{
+   e_gadcon_client_aspect_set(gcc, 16, 16);
+   e_gadcon_client_min_size_set(gcc, 16, 16);
+}
+
+static char *
+_gc_label(void)
+{
+   return _("Emu");
+}
+
+static Evas_Object *
+_gc_icon(Evas *evas)
+{
+   Evas_Object *o;
+   char buf[4096];
+   
+   o = edje_object_add(evas);
+   snprintf(buf, sizeof(buf), "%s/module.eap", e_module_dir_get(emu_module));
+   edje_object_file_set(o, buf, "icon");
+   return o;
+}
+
+
 /**
  * @defgroup Emu_Module_Parser_Group Emu module command parsers
  *
@@ -634,78 +566,43 @@
  * @param   menu the pointer to your menu.
  * @ingroup Emu_Module_Support_Group
  */
-static void
-_emu_add_face_menu(E_Gadget_Face *face, E_Menu *menu)
-{
-   E_Menu_Item *mi;
-
-   mi = e_menu_item_new(menu);
-   e_menu_item_label_set(mi, _("Configuration"));
-   e_menu_item_callback_set(mi, _emu_cb_menu_configure, face);
-
-   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, D_("Add face"));
-   mi = e_menu_item_new(menu);
-   e_menu_item_label_set(mi, D_("Remove face"));
-
-   mi = e_menu_item_new(menu);
-   e_menu_item_label_set(mi, D_("Add row"));
-   mi = e_menu_item_new(menu);
-   e_menu_item_label_set(mi, D_("Remove row"));
-   mi = e_menu_item_new(menu);
-   e_menu_item_label_set(mi, D_("Add column"));
-   mi = e_menu_item_new(menu);
-   e_menu_item_label_set(mi, D_("Remove column"));
-
-   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, D_("Transparent"));
-   e_menu_item_check_set(mi, 1);
-   if (1)
-      e_menu_item_toggle_set(mi, 1);
-
-   mi = e_menu_item_new(menu);
-   e_menu_item_label_set(mi, D_("Zoom icons"));
-   e_menu_item_check_set(mi, 1);
-   if (0)
-      e_menu_item_toggle_set(mi, 1);
-
-   mi = e_menu_item_new(menu);
-   e_menu_item_label_set(mi, D_("Stretch bar"));
-   e_menu_item_check_set(mi, 1);
-   if (0)
-      e_menu_item_toggle_set(mi, 1);
-
-   mi = e_menu_item_new(menu);
-   e_menu_item_label_set(mi, D_("Cling to edge"));
-   e_menu_item_check_set(mi, 1);
-   if (0)
-      e_menu_item_toggle_set(mi, 1);
-
-   mi = e_menu_item_new(menu);
-   e_menu_item_label_set(mi, _("Follower"));
-   e_menu_item_check_set(mi, 1);
-   if (0)
-      e_menu_item_toggle_set(mi, 1);
-}
-
-static void
-_emu_cb_menu_configure(void *data, E_Menu *m, E_Menu_Item *mi)
-{
-   E_Gadget_Face *face;
-   Emu_Face *emu_face;
-
-   face = data;
-   if (!face)
-      return;
-   emu_face = face->data;
-   _config_emu_module(face->con, emu_face->emu);
-}
+//static void
+//_emu_add_face_menu(E_Gadget_Face *face, E_Menu *menu)
+//{
+//   E_Menu_Item *mi;
+//
+//   mi = e_menu_item_new(menu);
+//   e_menu_item_label_set(mi, _("Configuration"));
+//   e_menu_item_callback_set(mi, _emu_cb_menu_configure, face);
+//
+//   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, D_("Add row"));
+//   mi = e_menu_item_new(menu);
+//   e_menu_item_label_set(mi, D_("Remove row"));
+//   mi = e_menu_item_new(menu);
+//   e_menu_item_label_set(mi, D_("Add column"));
+//   mi = e_menu_item_new(menu);
+//   e_menu_item_label_set(mi, D_("Remove column"));
+//
+//   if (0)
+//      e_menu_item_toggle_set(mi, 1);
+//}
+
+//static void
+//_emu_cb_menu_configure(void *data, E_Menu *m, E_Menu_Item *mi)
+//{
+//   E_Gadget_Face *face;
+//   Emu_Face *emu_face;
+//
+//   face = data;
+//   if (!face)
+//      return;
+//   emu_face = face->data;
+//   _config_emu_module(face->con, emu_face->emu);
+//}
 
 /**
  * @defgroup Emu_Module_Exe_Group Emu module Ecore_Exe interface
@@ -731,10 +628,6 @@
 static int
 _emu_cb_exe_add(void *data, int type, void *ev)
 {
-   Emu *emu;
-
-   emu = data;
-
    return 1;
 }
 
@@ -753,29 +646,17 @@
 static int
 _emu_cb_exe_del(void *data, int type, void *ev)
 {
-   if (E_OBJECT(data)->type == (E_GADGET_TYPE))
-     {
-        E_Gadget *gad;
-        Ecore_Exe_Event_Del *event;
-        Evas_List *l;
-
-        gad = data;
-        event = ev;
-        for (l = gad->faces; l; l = l->next)    /* Search for the matching 
face. */
-          {
-             E_Gadget_Face *face;
-             Emu_Face *emu_face;
+   Ecore_Exe_Event_Del *event;
+   Emu_Face *emu_face;
 
-             face = l->data;
-             emu_face = face->data;
-             if ((emu_face->exe == event->exe) && 
(ecore_exe_data_get(event->exe) == emu_face))
-               {                /* This is the event we are interested in. */
-                  emu_face->exe = NULL;
+   emu_face = data;
+   event = ev;
+   if ((emu_face->exe == event->exe) && (ecore_exe_data_get(event->exe) == 
emu_face))
+     {  /* This is the event we are interested in. */
+        emu_face->exe = NULL;
 
-                  printf("EMU CLIENT DEL - \n");
-                  return 0;
-               }
-          }
+        printf("EMU CLIENT DEL - \n");
+        return 0;
      }
 
    return 1;
@@ -941,27 +822,82 @@
 
    emu_face = data;
    ev = event_info;
-   if ((ev->button == 3) && emu_face->face->menu)
-     {                          /* Right clirk configuration menu. */
-        e_menu_activate_mouse(emu_face->face->menu,
-                              e_zone_current_get(emu_face->face->con), 
ev->output.x, ev->output.y, 1, 1, E_MENU_POP_DIRECTION_AUTO,
-                              ev->timestamp);
-        e_util_container_fake_mouse_up_all_later(emu_face->face->con);
-     }
-   else if (ev->button == 1)
+//   if ((ev->button == 3) && emu_face->face->menu)
+//     {                          /* Right click configuration menu. */
+//        e_menu_activate_mouse(emu_face->face->menu,
+//                              e_zone_current_get(emu_face->face->con), 
ev->output.x, ev->output.y, 1, 1, E_MENU_POP_DIRECTION_AUTO,
+//                              ev->timestamp);
+//        e_util_container_fake_mouse_up_all_later(emu_face->face->con);
+//     }
+   /*else*/ if (ev->button == 1)
      {                          /* Left click default menu. */
         Easy_Menu *menu;
+       Evas_Coord x, y, w, h;
+       int cx, cy, cw, ch;
+       
+       evas_object_geometry_get(emu_face->o_button, &x, &y, &w, &h); 
+       e_gadcon_canvas_zone_geometry_get(emu_face->gcc->gadcon, &cx, &cy, &cw, 
&ch);
+       x += cx;
+       y += cy;
 
         /* Find the default menu, if there is one. */
         menu = evas_hash_find(emu_face->menus, "");
         if (menu && menu->valid)
           {
+            int dir;
+            
              e_menu_post_deactivate_callback_set(menu->menu->menu, 
_emu_menu_cb_post_deactivate, emu_face);
-             e_menu_activate_mouse(menu->menu->menu,
-                                   e_zone_current_get(emu_face->face->con), 
ev->output.x, ev->output.y, 1, 1,
-                                   E_MENU_POP_DIRECTION_AUTO, ev->timestamp);
-             e_util_container_fake_mouse_up_all_later(emu_face->face->con);
-             edje_object_signal_emit(emu_face->face->main_obj, "active", "");
+            dir = E_MENU_POP_DIRECTION_AUTO;
+            switch (emu_face->gcc->gadcon->orient)
+              {
+               case E_GADCON_ORIENT_TOP:
+                 dir = E_MENU_POP_DIRECTION_DOWN;
+                 break;
+               case E_GADCON_ORIENT_BOTTOM:
+                 dir = E_MENU_POP_DIRECTION_UP;
+                 break;
+               case E_GADCON_ORIENT_LEFT:
+                 dir = E_MENU_POP_DIRECTION_RIGHT;
+                 break;
+               case E_GADCON_ORIENT_RIGHT:
+                 dir = E_MENU_POP_DIRECTION_LEFT;
+                 break;
+               case E_GADCON_ORIENT_CORNER_TL:
+                 dir = E_MENU_POP_DIRECTION_DOWN;
+                 break;
+               case E_GADCON_ORIENT_CORNER_TR:
+                 dir = E_MENU_POP_DIRECTION_DOWN;
+                 break;
+               case E_GADCON_ORIENT_CORNER_BL:
+                 dir = E_MENU_POP_DIRECTION_UP;
+                 break;
+               case E_GADCON_ORIENT_CORNER_BR:
+                 dir = E_MENU_POP_DIRECTION_UP;
+                 break;
+               case E_GADCON_ORIENT_CORNER_LT:
+                 dir = E_MENU_POP_DIRECTION_RIGHT;
+                 break;
+               case E_GADCON_ORIENT_CORNER_RT:
+                 dir = E_MENU_POP_DIRECTION_LEFT;
+                 break;
+               case E_GADCON_ORIENT_CORNER_LB:
+                 dir = E_MENU_POP_DIRECTION_RIGHT;
+                 break;
+               case E_GADCON_ORIENT_CORNER_RB:
+                 dir = E_MENU_POP_DIRECTION_LEFT;
+                 break;
+               case E_GADCON_ORIENT_FLOAT:
+               case E_GADCON_ORIENT_HORIZ:
+               case E_GADCON_ORIENT_VERT:
+               default:
+                 dir = E_MENU_POP_DIRECTION_AUTO;
+                 break;
+              }
+//             e_menu_activate_mouse(menu->menu->menu, 
e_zone_current_get(emu_face->face->con), ev->output.x, ev->output.y, 1, 1, 
E_MENU_POP_DIRECTION_AUTO, ev->timestamp);
+            e_menu_activate_mouse(menu->menu->menu, 
e_util_zone_current_get(e_manager_current_get()), x, y, w, h, dir, 
ev->timestamp);
+//             e_util_container_fake_mouse_up_all_later(emu_face->face->con);
+            edje_object_signal_emit(emu_face->o_button, "active", "");
+            evas_event_feed_mouse_up(emu_face->gcc->gadcon->evas, ev->button, 
EVAS_BUTTON_NONE, ev->timestamp, NULL);
           }
      }
 }
@@ -979,7 +915,7 @@
    Emu_Face *emu_face;
 
    emu_face = data;
-   edje_object_signal_emit(emu_face->face->main_obj, "passive", "");
+   edje_object_signal_emit(emu_face->o_button, "passive", "");
 }
 
 /**
===================================================================
RCS file: /cvs/e/e_modules/emu/src/modules/emu/e_mod_main.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- e_mod_main.h        20 Mar 2006 11:37:33 -0000      1.7
+++ e_mod_main.h        1 Jun 2006 17:16:42 -0000       1.8
@@ -1,4 +1,5 @@
 #include "e.h"
+#include "border_props.h"
 #include "easy_menu.h"
 #include "e_mod_config.h"
 #include "config.h"
@@ -17,11 +18,6 @@
 struct _Config
 {
    char *appdir;
-   int follower;
-   double follow_speed;
-   double autoscroll_speed;
-   int iconsize;
-   int width;
    Evas_List *emus;
 };
 
@@ -30,30 +26,16 @@
    unsigned char enabled;
 };
 
-typedef struct _Emu Emu;
-struct _Emu
-{
-   E_Gadget_Api api;
-   E_Gadget *gad;
-
-   Ecore_Event_Handler *del;
-
-//   Evas_List   *bars;
-   E_Menu *config_menu;
-
-   Config *conf;
-   E_Config_Dialog *config_dialog;
-};
-
 typedef struct _Emu_Face Emu_Face;
 struct _Emu_Face
 {
-   Emu *emu;
-   E_Gadget_Face *face;
+   E_Gadcon_Client *gcc;
+   Evas_Object     *o_button;
 
    const char *name;
    const char *command;
    Ecore_Exe *exe;
+   Ecore_Event_Handler *del;
    Ecore_Event_Handler *add;
    Ecore_Event_Handler *read;
 
@@ -64,6 +46,11 @@
    Ecore_Exe_Event_Data_Line *lines; /**< a NULL terminated array of line data 
if line buffered */
 
    Evas_Hash *menus;
+
+   E_Menu *config_menu;
+
+   Config *conf;
+   E_Config_Dialog *config_dialog;
 };
 
 EAPI extern E_Module_Api e_modapi;
@@ -71,8 +58,10 @@
 EAPI void *e_modapi_init(E_Module *m);
 EAPI int e_modapi_shutdown(E_Module *m);
 EAPI int e_modapi_save(E_Module *m);
-EAPI int e_modapi_info(E_Module *m);
+//EAPI int e_modapi_info(E_Module *m);
 EAPI int e_modapi_about(E_Module *m);
+
+EAPI int   e_modapi_config   (E_Module *m);
 
 void _emu_cb_config_updated(void *data);
 
===================================================================
RCS file: /cvs/e/e_modules/emu/src/modules/emu/module_face.edc,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- module_face.edc     1 Mar 2006 17:31:19 -0000       1.3
+++ module_face.edc     1 Jun 2006 17:16:42 -0000       1.4
@@ -1,6 +1,6 @@
 group {
-   name: "emu/main";
-   max:  304 304;
+   name: "modules/emu/main";
+   max:  128 128;
    script {
       public is_active;
       public is_hilited;




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

Reply via email to