Enlightenment CVS committal Author : raster Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_gadman.c e_gadman.h e_int_menus.c e_int_menus.h e_main.c e_manager.c e_zone.c Log Message: some more gadman stuff - innocuous for now. hooked in soem gadman enable/disable edit mode and fixed a stakcign issue with new windows vs. menus. =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_gadman.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- e_gadman.c 15 Jan 2005 15:21:57 -0000 1.2 +++ e_gadman.c 17 Jan 2005 08:54:37 -0000 1.3 @@ -6,6 +6,25 @@ /* local subsystem functions */ static void _e_gadman_free(E_Gadman *gm); static void _e_gadman_client_free(E_Gadman_Client *gmc); +static void _e_gadman_client_edit_begin(E_Gadman_Client *gmc); +static void _e_gadman_client_edit_end(E_Gadman_Client *gmc); + + +static void _e_gadman_cb_signal_move_start(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _e_gadman_cb_signal_move_stop(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _e_gadman_cb_signal_move_go(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _e_gadman_cb_signal_resize_left_start(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _e_gadman_cb_signal_resize_left_stop(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _e_gadman_cb_signal_resize_left_go(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _e_gadman_cb_signal_resize_right_start(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _e_gadman_cb_signal_resize_right_stop(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _e_gadman_cb_signal_resize_right_go(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _e_gadman_cb_signal_resize_up_start(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _e_gadman_cb_signal_resize_up_stop(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _e_gadman_cb_signal_resize_up_go(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _e_gadman_cb_signal_resize_down_start(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _e_gadman_cb_signal_resize_down_stop(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _e_gadman_cb_signal_resize_down_go(void *data, Evas_Object *obj, const char *emission, const char *source); /* externally accessible functions */ int @@ -41,6 +60,7 @@ if (!gmc) return NULL; gmc->gadman = gm; gmc->policy = E_GADMAN_POLICY_ANYWHERE; + gmc->zone = e_zone_current_get(gm->container); gmc->minw = 1; gmc->minh = 1; gmc->maxw = 0; @@ -54,24 +74,61 @@ } void -e_gadman_client_domain_set(E_Gadman_Client *gmc, char *domain, int instance) +e_gadman_mode_set(E_Gadman *gm, E_Gadman_Mode mode) { - E_OBJECT_CHECK(gmc); - if (gmc->domain) free(gmc->domain); - gmc->domain = strdup(domain); - gmc->instance = instance; + Evas_List *l; + + E_OBJECT_CHECK(gm); + if (gm->mode == mode) return; + gm->mode = mode; + if (gm->mode == E_GADMAN_MODE_EDIT) + { + for (l = gm->clients; l; l = l->next) + _e_gadman_client_edit_begin(l->data); + } + else if (gm->mode == E_GADMAN_MODE_NORMAL) + { + for (l = gm->clients; l; l = l->next) + _e_gadman_client_edit_end(l->data); + } +} + +E_Gadman_Mode +e_gadman_mode_get(E_Gadman *gm) +{ + E_OBJECT_CHECK_RETURN(gm, E_GADMAN_MODE_NORMAL); + return gm->mode; } void e_gadman_client_save(E_Gadman_Client *gmc, char *domain, int instance) { E_OBJECT_CHECK(gmc); + /* cave all values */ } void e_gadman_client_load(E_Gadman_Client *gmc, char *domain, int instance) { E_OBJECT_CHECK(gmc); + /* load all the vales */ + /* implement all the values */ +} + +void +e_gadman_client_domain_set(E_Gadman_Client *gmc, char *domain, int instance) +{ + E_OBJECT_CHECK(gmc); + if (gmc->domain) free(gmc->domain); + gmc->domain = strdup(domain); + gmc->instance = instance; +} + +void +e_gadman_client_zone_set(E_Gadman_Client *gmc, E_Zone *zone) +{ + E_OBJECT_CHECK(gmc); + gmc->zone = zone; } void @@ -145,3 +202,174 @@ if (gmc->domain) free(gmc->domain); free(gmc); } + +static void +_e_gadman_client_edit_begin(E_Gadman_Client *gmc) +{ + gmc->control_object = edje_object_add(gmc->gadman->container->bg_evas); + evas_object_layer_set(gmc->control_object, 100); + evas_object_move(gmc->control_object, gmc->x, gmc->y); + evas_object_resize(gmc->control_object, gmc->w, gmc->h); + edje_object_file_set(gmc->control_object, + /* FIXME: "default.eet" needs to come from conf */ + e_path_find(path_themes, "default.eet"), + "gadman/control"); + edje_object_signal_callback_add(gmc->control_object, "move_start", "*", + _e_gadman_cb_signal_move_start, gmc); + edje_object_signal_callback_add(gmc->control_object, "move_stop", "*", + _e_gadman_cb_signal_move_stop, gmc); + edje_object_signal_callback_add(gmc->control_object, "move_go", "*", + _e_gadman_cb_signal_move_go, gmc); + edje_object_signal_callback_add(gmc->control_object, "resize_start", "left", + _e_gadman_cb_signal_resize_left_start, gmc); + edje_object_signal_callback_add(gmc->control_object, "resize_stop", "left", + _e_gadman_cb_signal_resize_left_stop, gmc); + edje_object_signal_callback_add(gmc->control_object, "resize_go", "left", + _e_gadman_cb_signal_resize_left_go, gmc); + edje_object_signal_callback_add(gmc->control_object, "resize_start", "right", + _e_gadman_cb_signal_resize_right_start, gmc); + edje_object_signal_callback_add(gmc->control_object, "resize_stop", "right", + _e_gadman_cb_signal_resize_right_stop, gmc); + edje_object_signal_callback_add(gmc->control_object, "resize_go", "right", + _e_gadman_cb_signal_resize_right_go, gmc); + edje_object_signal_callback_add(gmc->control_object, "resize_start", "up", + _e_gadman_cb_signal_resize_up_start, gmc); + edje_object_signal_callback_add(gmc->control_object, "resize_stop", "up", + _e_gadman_cb_signal_resize_up_stop, gmc); + edje_object_signal_callback_add(gmc->control_object, "resize_go", "up", + _e_gadman_cb_signal_resize_up_go, gmc); + edje_object_signal_callback_add(gmc->control_object, "resize_start", "down", + _e_gadman_cb_signal_resize_down_start, gmc); + edje_object_signal_callback_add(gmc->control_object, "resize_stop", "down", + _e_gadman_cb_signal_resize_down_stop, gmc); + edje_object_signal_callback_add(gmc->control_object, "resize_go", "down", + _e_gadman_cb_signal_resize_down_go, gmc); + evas_object_show(gmc->control_object); +} + +static void +_e_gadman_client_edit_end(E_Gadman_Client *gmc) +{ + evas_object_del(gmc->control_object); +} + +static void +_e_gadman_cb_signal_move_start(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + E_Gadman_Client *gmc; + + gmc = data; +} + +static void +_e_gadman_cb_signal_move_stop(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + E_Gadman_Client *gmc; + + gmc = data; +} + +static void +_e_gadman_cb_signal_move_go(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + E_Gadman_Client *gmc; + + gmc = data; +} + +static void +_e_gadman_cb_signal_resize_left_start(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + E_Gadman_Client *gmc; + + gmc = data; +} + +static void +_e_gadman_cb_signal_resize_left_stop(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + E_Gadman_Client *gmc; + + gmc = data; +} + +static void +_e_gadman_cb_signal_resize_left_go(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + E_Gadman_Client *gmc; + + gmc = data; +} + +static void +_e_gadman_cb_signal_resize_right_start(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + E_Gadman_Client *gmc; + + gmc = data; +} + +static void +_e_gadman_cb_signal_resize_right_stop(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + E_Gadman_Client *gmc; + + gmc = data; +} + +static void +_e_gadman_cb_signal_resize_right_go(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + E_Gadman_Client *gmc; + + gmc = data; +} + +static void +_e_gadman_cb_signal_resize_up_start(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + E_Gadman_Client *gmc; + + gmc = data; +} + +static void +_e_gadman_cb_signal_resize_up_stop(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + E_Gadman_Client *gmc; + + gmc = data; +} + +static void +_e_gadman_cb_signal_resize_up_go(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + E_Gadman_Client *gmc; + + gmc = data; +} + +static void +_e_gadman_cb_signal_resize_down_start(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + E_Gadman_Client *gmc; + + gmc = data; +} + +static void +_e_gadman_cb_signal_resize_down_stop(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + E_Gadman_Client *gmc; + + gmc = data; +} + +static void +_e_gadman_cb_signal_resize_down_go(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + E_Gadman_Client *gmc; + + gmc = data; +} + =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_gadman.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- e_gadman.h 15 Jan 2005 15:21:57 -0000 1.2 +++ e_gadman.h 17 Jan 2005 08:54:37 -0000 1.3 @@ -20,9 +20,15 @@ typedef enum _E_Gadman_Change { E_GADMAN_CHANGE_MOVE, - E_GADMAN_CHANGE_RESIZE, + E_GADMAN_CHANGE_RESIZE } E_Gadman_Change; +typedef enum _E_Gadman_Mode +{ + E_GADMAN_MODE_NORMAL, + E_GADMAN_MODE_EDIT +} E_Gadman_Mode; + typedef struct _E_Gadman E_Gadman; typedef struct _E_Gadman_Client E_Gadman_Client; @@ -35,6 +41,7 @@ E_Object e_obj_inherit; E_Container *container; Evas_List *clients; + E_Gadman_Mode mode; }; struct _E_Gadman_Client @@ -44,6 +51,7 @@ Evas_Object *control_object; char *domain; + E_Zone *zone; int instance; E_Gadman_Policy policy; Evas_Coord x, y, w, h; @@ -56,11 +64,14 @@ EAPI int e_gadman_init(void); EAPI int e_gadman_shutdown(void); +EAPI void e_gadman_mode_set(E_Gadman *gm, E_Gadman_Mode mode); +EAPI E_Gadman_Mode e_gadman_mode_get(E_Gadman *gm); EAPI E_Gadman *e_gadman_new(E_Container *con); EAPI E_Gadman_Client *e_gadman_client_new(E_Gadman *gm); -EAPI void e_gadman_client_domain_set(E_Gadman_Client *gmc, char *domain, int instance); EAPI void e_gadman_client_save(E_Gadman_Client *gmc, char *domain, int instance); EAPI void e_gadman_client_load(E_Gadman_Client *gmc, char *domain, int instance); +EAPI void e_gadman_client_domain_set(E_Gadman_Client *gmc, char *domain, int instance); +EAPI void e_gadman_client_zone_set(E_Gadman_Client *gmc, E_Zone *zone); EAPI void e_gadman_client_policy_set(E_Gadman_Client *gmc, E_Gadman_Policy pol); EAPI void e_gadman_client_min_size_set(E_Gadman_Client *gmc, Evas_Coord minw, Evas_Coord minh); EAPI void e_gadman_client_max_size_set(E_Gadman_Client *gmc, Evas_Coord maxw, Evas_Coord maxh); =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_int_menus.c,v retrieving revision 1.32 retrieving revision 1.33 diff -u -3 -r1.32 -r1.33 --- e_int_menus.c 14 Jan 2005 14:01:07 -0000 1.32 +++ e_int_menus.c 17 Jan 2005 08:54:37 -0000 1.33 @@ -12,6 +12,7 @@ E_Menu *desktops; E_Menu *clients; E_Menu *modules; + E_Menu *gadgets; }; /* local subsystem functions */ @@ -33,6 +34,8 @@ static void _e_int_menus_desktops_row_del_cb (void *data, E_Menu *m, E_Menu_Item *mi); static void _e_int_menus_desktops_col_add_cb (void *data, E_Menu *m, E_Menu_Item *mi); static void _e_int_menus_desktops_col_del_cb (void *data, E_Menu *m, E_Menu_Item *mi); +static void _e_int_menus_gadgets_pre_cb (void *data, E_Menu *m); +static void _e_int_menus_gadgets_edit_mode_cb(void *data, E_Menu *m, E_Menu_Item *mi); /* externally accessible functions */ E_Menu * @@ -83,6 +86,14 @@ "windows"); e_menu_item_submenu_set(mi, subm); + subm = e_int_menus_gadgets_new(); + dat->gadgets = subm; + mi = e_menu_item_new(m); + e_menu_item_label_set(mi, "Gadgets"); + e_menu_item_icon_edje_set(mi, e_path_find(path_icons, "default.eet"), + "gadgets"); + e_menu_item_submenu_set(mi, subm); + mi = e_menu_item_new(m); e_menu_item_separator_set(mi, 1); @@ -133,7 +144,6 @@ e_menu_pre_activate_callback_set(m, _e_int_menus_desktops_pre_cb, NULL); return m; } - E_Menu * e_int_menus_favorite_apps_new(void) @@ -163,6 +173,16 @@ return m; } +E_Menu * +e_int_menus_gadgets_new(void) +{ + E_Menu *m; + + m = e_menu_new(); + e_menu_pre_activate_callback_set(m, _e_int_menus_gadgets_pre_cb, NULL); + return m; +} + /* local subsystem functions */ static void _e_int_menus_main_del_hook(void *obj) @@ -178,6 +198,7 @@ e_object_del(E_OBJECT(dat->modules)); e_object_del(E_OBJECT(dat->desktops)); e_object_del(E_OBJECT(dat->clients)); + e_object_del(E_OBJECT(dat->gadgets)); free(dat); } } @@ -481,3 +502,42 @@ e_border_raise(bd); e_border_focus_set(bd, 1, 1); } + +static void +_e_int_menus_gadgets_pre_cb(void *data, E_Menu *m) +{ + E_Menu_Item *mi; + E_Menu *root; + + e_menu_pre_activate_callback_set(m, NULL, NULL); + root = e_menu_root_get(m); + if ((root) && (root->zone)) + { + mi = e_menu_item_new(m); + e_menu_item_check_set(mi, 1); + if (e_gadman_mode_get(root->zone->container->gadman) == E_GADMAN_MODE_EDIT) + e_menu_item_toggle_set(mi, 1); + else + e_menu_item_toggle_set(mi, 0); + e_menu_item_label_set(mi, "Edit Mode"); + e_menu_item_callback_set(mi, _e_int_menus_gadgets_edit_mode_cb, root->zone->container->gadman); + } + else + { + mi = e_menu_item_new(m); + e_menu_item_label_set(mi, "(Unused)"); + e_menu_item_callback_set(mi, NULL, NULL); + } +} + +static void +_e_int_menus_gadgets_edit_mode_cb(void *data, E_Menu *m, E_Menu_Item *mi) +{ + E_Gadman *gm; + + gm = data; + if (e_menu_item_toggle_get(mi)) + e_gadman_mode_set(gm, E_GADMAN_MODE_EDIT); + else + e_gadman_mode_set(gm, E_GADMAN_MODE_NORMAL); +} =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_int_menus.h,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- e_int_menus.h 12 Jan 2005 16:03:08 -0000 1.8 +++ e_int_menus.h 17 Jan 2005 08:54:37 -0000 1.9 @@ -8,6 +8,7 @@ EAPI E_Menu *e_int_menus_clients_new(void); EAPI E_Menu *e_int_menus_apps_new(char *dir); EAPI E_Menu *e_int_menus_favorite_apps_new(void); +EAPI E_Menu *e_int_menus_gadgets_new(void); #endif #endif =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_main.c,v retrieving revision 1.27 retrieving revision 1.28 diff -u -3 -r1.27 -r1.28 --- e_main.c 15 Jan 2005 09:50:26 -0000 1.27 +++ e_main.c 17 Jan 2005 08:54:37 -0000 1.28 @@ -534,6 +534,16 @@ i); return 0; } + /* FIXME: testing... */ + { + E_Gadman_Client *gmc; + + gmc = e_gadman_client_new(con->gadman); + gmc->x = 100; + gmc->y = 100; + gmc->w = 150; + gmc->h = 150; + } } free(roots); ecore_x_sync(); =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_manager.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- e_manager.c 13 Jan 2005 14:24:24 -0000 1.7 +++ e_manager.c 17 Jan 2005 08:54:37 -0000 1.8 @@ -192,7 +192,11 @@ if (!e_border_find_by_client_window(e->win)) { bd = e_border_new(con, e->win, 0); - if (bd) e_border_show(bd); + if (bd) + { + e_border_raise(bd); + e_border_show(bd); + } else ecore_x_window_show(e->win); } } =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_zone.c,v retrieving revision 1.18 retrieving revision 1.19 diff -u -3 -r1.18 -r1.19 --- e_zone.c 15 Jan 2005 08:31:38 -0000 1.18 +++ e_zone.c 17 Jan 2005 08:54:37 -0000 1.19 @@ -89,7 +89,6 @@ e_zone_desk_count_set(zone, e_config->zone_desks_x_count, e_config->zone_desks_y_count); - return zone; } ------------------------------------------------------- The SF.Net email is sponsored by: Beat the post-holiday blues Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs