Enlightenment CVS committal Author : raster Project : e17 Module : apps/e
Dir : e17/apps/e/src/modules/start Modified Files: Makefile.am e_mod_main.c e_mod_main.h Removed Files: e_mod_config.c e_mod_config.h Log Message: for now - people will miss their "start" module - as it has now been ursurped for gadcon testing :) mind u - it's a HELL of a lot smaller now :) =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/start/Makefile.am,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- Makefile.am 20 Jan 2006 04:04:14 -0000 1.2 +++ Makefile.am 10 Feb 2006 09:26:12 -0000 1.3 @@ -20,9 +20,7 @@ pkgdir = $(libdir)/enlightenment/modules/$(MODULE)/$(MODULE_ARCH) pkg_LTLIBRARIES = module.la module_la_SOURCES = e_mod_main.c \ - e_mod_main.h \ - e_mod_config.c \ - e_mod_config.h + e_mod_main.h module_la_LIBADD = @e_libs@ @dlopen_libs@ module_la_LDFLAGS = -module -avoid-version module_la_DEPENDENCIES = $(top_builddir)/config.h =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/start/e_mod_main.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -3 -r1.15 -r1.16 --- e_mod_main.c 3 Feb 2006 20:17:41 -0000 1.15 +++ e_mod_main.c 10 Feb 2006 09:26:12 -0000 1.16 @@ -3,442 +3,190 @@ */ #include "e.h" #include "e_mod_main.h" -#include "e_mod_config.h" -//#include "e_int_menus.h" -static Start *_start_new(void); -static Start_Face *_start_face_new(Start *s, E_Container *con); -static void _start_free(Start *e); -static void _start_face_free(Start_Face *face); -static void _start_face_disable(Start_Face *e); -static void _start_config_menu_new(Start *e); -static void _start_face_menu_new(Start_Face *face); -static void _start_face_cb_menu_edit(void *data, E_Menu *m, E_Menu_Item *mi); -static void _start_face_cb_gmc_change(void *data, E_Gadman_Client *gmc, E_Gadman_Change change); -static void _start_face_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info); -static void _start_menu_cb_post_deactivate(void *data, E_Menu *m); - -static void _start_face_cb_menu_configure(void *data, E_Menu *m, E_Menu_Item *mi); -static void _start_cb_update_policy(void *data); - -static int button_count; -static E_Config_DD *conf_edd; -static E_Config_DD *conf_face_edd; - -EAPI E_Module_Api e_modapi = +/***************************************************************************/ +/**/ +/* gadcon requirements */ +static E_Gadcon_Client *_gc_init(E_Gadcon *gc, char *name, char *id); +static void _gc_shutdown(E_Gadcon_Client *gcc); +static void _gc_orient(E_Gadcon_Client *gcc); +/* and actually define the gadcon class that this module provides (just 1) */ +static const E_Gadcon_Client_Class _gadcon_class = { - E_MODULE_API_VERSION, - "Start" + GADCON_CLIENT_CLASS_VERSION, + "start", + { + _gc_init, _gc_shutdown, _gc_orient + } }; +/**/ +/***************************************************************************/ -EAPI void * -e_modapi_init(E_Module *m) -{ - Start *e; - - /* Create the button */ - e = _start_new(); - m->config_menu = e->config_menu; - return e; -} - -EAPI int -e_modapi_shutdown(E_Module *m) -{ - Start *e; - - if (m->config_menu) m->config_menu = NULL; - - e = m->data; - if (e) _start_free(e); - return 1; -} - -EAPI int -e_modapi_save(E_Module *m) -{ - Start *e; - - e = m->data; - e_config_domain_save("module.start", conf_edd, e->conf); - - return 1; -} - -EAPI int -e_modapi_info(E_Module *m) -{ - char buf[4096]; - - snprintf(buf, sizeof(buf), "%s/module_icon.png", e_module_dir_get(m)); - m->icon_file = strdup(buf); - return 1; -} +/***************************************************************************/ +/**/ +/* actual module specifics */ -EAPI int -e_modapi_about(E_Module *m) -{ - e_module_dialog_show(_("Enlightenment Start Module"), - _("Experimental Button module for E17")); - return 1; -} +typedef struct _Instance Instance; -int -e_modapi_config(E_Module *m) +struct _Instance { - Start *s; - Start_Face *face; + E_Gadcon_Client *gcc; + Evas_Object *o_button; + E_Menu *main_menu; +}; - s = m->data; - if (!s) return 0; - if (!s->faces) return 0; - - face = s->faces->data; - if (!face) return 0; - - _config_start_module(e_container_current_get(e_manager_current_get()), s); - return 1; -} +static void _button_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info); +static void _menu_cb_post(void *data, E_Menu *m); -static Start * -_start_new(void) +static E_Gadcon_Client * +_gc_init(E_Gadcon *gc, char *name, char *id) { - Start *e; - Evas_List *managers, *l, *l2, *cl; - E_Menu_Item *mi; - - button_count = 0; - e = E_NEW(Start, 1); - if (!e) return NULL; - - conf_face_edd = E_CONFIG_DD_NEW("Start_Config_Face", Config_Face); -#undef T -#undef D -#define T Config_Face -#define D conf_face_edd - E_CONFIG_VAL(D, T, enabled, UCHAR); - - conf_edd = E_CONFIG_DD_NEW("Start_Config", Config); -#undef T -#undef D -#define T Config -#define D conf_edd - E_CONFIG_LIST(D, T, faces, conf_face_edd); - E_CONFIG_VAL(D, T, allow_overlap, INT); - - e->conf = e_config_domain_load("module.start", conf_edd); - if (!e->conf) - { - e->conf = E_NEW(Config, 1); - e->conf->allow_overlap = 0; - } - E_CONFIG_LIMIT(e->conf->allow_overlap, 0, 1); - - _start_config_menu_new(e); - - managers = e_manager_list(); - cl = e->conf->faces; - for (l = managers; l; l = l->next) - { - E_Manager *man; - - man = l->data; - for (l2 = man->containers; l2; l2 = l2->next) - { - E_Container *con; - Start_Face *face; - - con = l2->data; - face = _start_face_new(e, con); - if (face) - { - face->start = e; - e->faces = evas_list_append(e->faces, face); - /* Config */ - if (!cl) - { - face->conf = E_NEW(Config_Face, 1); - face->conf->enabled = 1; - e->conf->faces = evas_list_append(e->conf->faces, face->conf); - } - else - { - face->conf = cl->data; - cl = cl->next; - } - - /* Menu */ - /* This menu must be initialized after conf */ - _start_face_menu_new(face); - - mi = e_menu_item_new(e->config_menu); - e_menu_item_label_set(mi, _("Configuration")); - e_menu_item_callback_set(mi, _start_face_cb_menu_configure, face); - - mi = e_menu_item_new(e->config_menu); - e_menu_item_label_set(mi, con->name); - - e_menu_item_submenu_set(mi, face->menu); - - /* Setup */ - if (!face->conf->enabled) _start_face_disable(face); - } - } - } - return e; -} - -static Start_Face * -_start_face_new(Start *s, E_Container *con) -{ - Start_Face *face; Evas_Object *o; - E_Gadman_Policy policy; - - face = E_NEW(Start_Face, 1); - if (!face) return NULL; - - face->con = con; - e_object_ref(E_OBJECT(con)); + E_Gadcon_Client *gcc; + Instance *inst; - evas_event_freeze(con->bg_evas); - o = edje_object_add(con->bg_evas); - face->button_object = o; + printf("CREATE START GADCON %s %s\n", name, id); + inst = E_NEW(Instance, 1); + o = edje_object_add(gc->evas); e_theme_edje_object_set(o, "base/theme/modules/start", "modules/start/main"); edje_object_signal_emit(o, "passive", ""); - evas_object_show(o); - o = evas_object_rectangle_add(con->bg_evas); - face->event_object = o; - evas_object_layer_set(o, 2); - evas_object_repeat_events_set(o, 1); - evas_object_color_set(o, 0, 0, 0, 0); - evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, _start_face_cb_mouse_down, face); - evas_object_show(o); + gcc = e_gadcon_client_new(gc, name, id, o); + gcc->data = inst; - face->gmc = e_gadman_client_new(con->gadman); - e_gadman_client_domain_set(face->gmc, "module.start", button_count++); - - policy = E_GADMAN_POLICY_ANYWHERE | - E_GADMAN_POLICY_HMOVE | - E_GADMAN_POLICY_VMOVE | - E_GADMAN_POLICY_HSIZE | - E_GADMAN_POLICY_VSIZE; - - if (s->conf->allow_overlap == 0) - policy &= ~E_GADMAN_POLICY_ALLOW_OVERLAP; - else - policy |= E_GADMAN_POLICY_ALLOW_OVERLAP; - - e_gadman_client_policy_set(face->gmc, policy); - - e_gadman_client_min_size_set(face->gmc, 4, 4); - e_gadman_client_max_size_set(face->gmc, 512, 512); - e_gadman_client_auto_size_set(face->gmc, 40, 40); - e_gadman_client_align_set(face->gmc, 0.0, 1.0); - e_gadman_client_aspect_set(face->gmc, 1.0, 1.0); - e_gadman_client_resize(face->gmc, 40, 40); - e_gadman_client_change_func_set(face->gmc, _start_face_cb_gmc_change, face); - e_gadman_client_load(face->gmc); - - evas_event_thaw(con->bg_evas); + inst->gcc = gcc; + inst->o_button = o; + inst->main_menu = NULL; - return face; + evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, + _button_cb_mouse_down, inst); + /* FIXME: add callback to resize - and based off one dimension, request + * another to be the same */ + e_gadcon_client_size_request(gcc, 32, 32); + e_gadcon_client_min_size_set(gcc, 16, 16); + return gcc; } - + static void -_start_face_menu_new(Start_Face *face) +_gc_shutdown(E_Gadcon_Client *gcc) { - E_Menu *mn; - E_Menu_Item *mi; - - mn = e_menu_new(); - face->menu = mn; - - /* Enabled */ - /* - mi = e_menu_item_new(mn); - e_menu_item_label_set(mi, _("Enabled")); - e_menu_item_check_set(mi, 1); - if (face->conf->enabled) e_menu_item_toggle_set(mi, 1); - e_menu_item_callback_set(mi, _clock_face_cb_menu_enabled, face); - */ - - /* Edit */ - mi = e_menu_item_new(mn); - e_menu_item_label_set(mi, _("Configuration")); - e_menu_item_callback_set(mi, _start_face_cb_menu_configure, face); - - mi = e_menu_item_new(mn); - e_menu_item_label_set(mi, _("Edit Mode")); - e_menu_item_callback_set(mi, _start_face_cb_menu_edit, face); + Instance *inst; + inst = gcc->data; + free(inst); } - + static void -_start_free(Start *e) +_gc_orient(E_Gadcon_Client *gcc) { - Evas_List *list; - - E_CONFIG_DD_FREE(conf_edd); - E_CONFIG_DD_FREE(conf_face_edd); - - for (list = e->faces; list; list = list->next) - _start_face_free(list->data); - evas_list_free(e->faces); + Instance *inst; - e_object_del(E_OBJECT(e->config_menu)); - - evas_list_free(e->conf->faces); - free(e->conf); - free(e); -} - -static void -_start_face_free(Start_Face *face) -{ - e_object_unref(E_OBJECT(face->con)); - e_object_del(E_OBJECT(face->gmc)); - evas_object_del(face->button_object); - evas_object_del(face->event_object); - e_object_del(E_OBJECT(face->menu)); - if (face->main_menu) e_object_del(E_OBJECT(face->main_menu)); - - free(face->conf); - free(face); - button_count--; -} - -static void -_start_config_menu_new(Start *e) -{ - e->config_menu = e_menu_new(); -} - -static void -_start_face_disable(Start_Face *e) -{ - e->conf->enabled = 0; - evas_object_hide(e->button_object); - evas_object_hide(e->event_object); - e_config_save_queue(); + inst = gcc->data; + printf("OREINT to %i\n", gcc->gadcon->orient); } +/**/ +/***************************************************************************/ +/***************************************************************************/ +/**/ static void -_start_face_cb_gmc_change(void *data, E_Gadman_Client *gmc, E_Gadman_Change change) +_button_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info) { - Start_Face *e; - Evas_Coord x, y, w, h; + Instance *inst; + Evas_Event_Mouse_Down *ev; - e = data; - switch (change) + inst = data; + ev = event_info; + if (ev->button == 1) { - case E_GADMAN_CHANGE_MOVE_RESIZE: - e_gadman_client_geometry_get(e->gmc, &x, &y, &w, &h); - evas_object_move(e->button_object, x, y); - evas_object_move(e->event_object, x, y); - evas_object_resize(e->button_object, w, h); - evas_object_resize(e->event_object, w, h); - break; - case E_GADMAN_CHANGE_RAISE: - evas_object_raise(e->button_object); - evas_object_raise(e->event_object); - break; - case E_GADMAN_CHANGE_EDGE: - case E_GADMAN_CHANGE_ZONE: - /* FIXME: Must we do something here? */ - break; + Evas_Coord x, y, w, h; + + /* FIXME: need a way of getting screen-relative coords */ + evas_object_geometry_get(inst->o_button, &x, &y, &w, &h); + if (!inst->main_menu) + inst->main_menu = e_int_menus_main_new(); + if (inst->main_menu) + { + e_menu_post_deactivate_callback_set(inst->main_menu, + _menu_cb_post, + inst); + /* FIXME: need a way of getting gadcon zone */ + e_menu_activate_mouse(inst->main_menu, + e_util_zone_current_get(e_manager_current_get()), + x, y, w, h, + E_MENU_POP_DIRECTION_AUTO, ev->timestamp); + edje_object_signal_emit(inst->o_button, "active", ""); + evas_event_feed_mouse_up(inst->gcc->gadcon->evas, ev->button, EVAS_BUTTON_NONE, ev->timestamp, NULL); + } } } static void -_start_face_cb_menu_edit(void *data, E_Menu *m, E_Menu_Item *mi) +_menu_cb_post(void *data, E_Menu *m) { - Start_Face *face; + Instance *inst; - face = data; - e_gadman_mode_set(face->gmc->gadman, E_GADMAN_MODE_EDIT); -} + inst = data; + if (!inst->main_menu) return; + edje_object_signal_emit(inst->o_button, "passive", ""); + e_object_del(E_OBJECT(inst->main_menu)); + inst->main_menu = NULL; +} +/**/ +/***************************************************************************/ + +/***************************************************************************/ +/**/ +/* module setup */ +EAPI E_Module_Api e_modapi = +{ + E_MODULE_API_VERSION, + "Start" +}; -static void -_start_face_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info) +EAPI void * +e_modapi_init(E_Module *m) { - Start_Face *face; - Evas_Event_Mouse_Down *ev; - - face = data; - ev = event_info; - if (ev->button == 3) - { - e_menu_activate_mouse(face->menu, e_zone_current_get(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(face->con); - } - else if (ev->button == 1) - { - Evas_Coord x, y, w, h; - - e_gadman_client_geometry_get(face->gmc, &x, &y, &w, &h); - if (!face->main_menu) - face->main_menu = e_int_menus_main_new(); - e_menu_post_deactivate_callback_set(face->main_menu, _start_menu_cb_post_deactivate, face); - e_menu_activate_mouse(face->main_menu, e_zone_current_get(face->con), - x, y, w, h, - E_MENU_POP_DIRECTION_AUTO, ev->timestamp); - e_util_container_fake_mouse_up_all_later(face->con); - edje_object_signal_emit(face->button_object, "active", ""); - } + e_gadcon_provider_register(&_gadcon_class); + return NULL; } -static void -_start_menu_cb_post_deactivate(void *data, E_Menu *m) +EAPI int +e_modapi_shutdown(E_Module *m) { - Start_Face *face; - - face = data; - if (!face->main_menu) return; - edje_object_signal_emit(face->button_object, "passive", ""); - e_object_del(E_OBJECT(face->main_menu)); - face->main_menu = NULL; + e_gadcon_provider_unregister(&_gadcon_class); + return 1; } -void -_start_cb_config_updated(void *data) +EAPI int +e_modapi_save(E_Module *m) { - _start_cb_update_policy(data); + return 1; } -void -_start_face_cb_menu_configure(void *data, E_Menu *m, E_Menu_Item *mi) +EAPI int +e_modapi_info(E_Module *m) { - Start_Face *face; - - face = (Start_Face*)data; - if (!face) return; - _config_start_module(face->con, face->start); + char buf[4096]; + + snprintf(buf, sizeof(buf), "%s/module_icon.png", e_module_dir_get(m)); + m->icon_file = strdup(buf); + return 1; } -static void -_start_cb_update_policy(void *data) +EAPI int +e_modapi_about(E_Module *m) { - Start *s; - Start_Face *sf; - Evas_List *l; - E_Gadman_Policy policy; - - s = data; - for (l = s->faces; l; l = l->next) - { - sf = l->data; - policy = sf->gmc->policy; - - if (s->conf->allow_overlap == 0) - policy &= E_GADMAN_POLICY_ALLOW_OVERLAP; - else - policy |= E_GADMAN_POLICY_ALLOW_OVERLAP; - e_gadman_client_policy_set(sf->gmc , policy); - } + e_module_dialog_show(_("Enlightenment Start Module"), + _("Experimental Button module for E17")); + return 1; } +int +e_modapi_config(E_Module *m) +{ + return 0; +} +/**/ +/***************************************************************************/ =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/start/e_mod_main.h,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- e_mod_main.h 20 Jan 2006 11:14:11 -0000 1.6 +++ e_mod_main.h 10 Feb 2006 09:26:12 -0000 1.7 @@ -1,45 +1,7 @@ #ifndef E_MOD_MAIN_H #define E_MOD_MAIN_H -typedef struct _Config Config; -typedef struct _Config_Face Config_Face; -typedef struct _Start Start; -typedef struct _Start_Face Start_Face; - -struct _Config -{ - Evas_List *faces; - int allow_overlap; -}; - -struct _Config_Face -{ - unsigned char enabled; -}; - -struct _Start -{ - Evas_List *faces; - E_Menu *config_menu; - - Config *conf; -}; - -struct _Start_Face -{ - E_Container *con; - E_Menu *menu; - E_Menu *main_menu; - Start *start; - - Config_Face *conf; - - Evas_Object *button_object; - Evas_Object *event_object; - - E_Gadman_Client *gmc; -}; - +/* standard module api calls e looks for */ EAPI extern E_Module_Api e_modapi; EAPI void *e_modapi_init (E_Module *m); @@ -49,6 +11,4 @@ EAPI int e_modapi_about (E_Module *m); EAPI int e_modapi_config (E_Module *m); -void _start_cb_config_updated(void *data); - #endif ------------------------------------------------------- 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