diff --git a/src/modules/gadman/e_mod_config.c b/src/modules/gadman/e_mod_config.c index 6ff6f2f59..e5d287bb9 100644 --- a/src/modules/gadman/e_mod_config.c +++ b/src/modules/gadman/e_mod_config.c @@ -4,14 +4,12 @@ #include "e_mod_config.h" #include "config.h" - struct _E_Config_Dialog_Data { Evas_Object *o_avail; //List of available gadgets Evas_Object *o_add; //Add button }; - /* Local protos */ static void *_create_data(E_Config_Dialog *cfd); static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata); @@ -21,7 +19,6 @@ static void _fill_gadgets_list(Evas_Object *ilist); static void _cb_add(void *data, void *data2); static void _avail_list_cb_change(void *data, Evas_Object *obj); - EAPI E_Config_Dialog * e_int_config_gadman_module(E_Container *con, const char *params __UNUSED__) { @@ -31,24 +28,21 @@ e_int_config_gadman_module(E_Container *con, const char *params __UNUSED__) /* check if config dialog exists ... */ if (e_config_dialog_find("E", "_e_modules_gadman_config_dialog")) - return NULL; - + return NULL; + /* ... else create it */ v = E_NEW(E_Config_Dialog_View, 1); v->create_cfdata = _create_data; v->free_cfdata = _free_data; v->basic.apply_cfdata = _basic_apply_data; v->basic.create_widgets = _basic_create_widgets; - v->advanced.apply_cfdata = NULL; - v->advanced.create_widgets = NULL; v->override_auto_apply = 0; //TODO this should remove the ok/apply buttons ... but doesnt work :( - snprintf(buf, sizeof(buf), "%s/e-module-gadman.edj", - Man->module->dir); + snprintf(buf, sizeof(buf), "%s/e-module-gadman.edj", Man->module->dir); cfd = e_config_dialog_new(con, _("Gadgets Manager"), "E", "_e_modules_gadman_config_dialog", buf, 0, v, Man); - + Man->config_dialog = cfd; return Man->config_dialog; @@ -58,6 +52,7 @@ static void * _create_data(E_Config_Dialog *cfd) { E_Config_Dialog_Data *cfdata; + cfdata = E_NEW(E_Config_Dialog_Data, 1); return cfdata; } @@ -66,8 +61,7 @@ static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) { Man->config_dialog = NULL; - free(cfdata); - cfdata = NULL; + E_FREE(cfdata); } static Evas_Object * @@ -77,7 +71,7 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf o = e_widget_list_add(evas, 0, 0); of = e_widget_framelist_add(evas, _("Available Gadgets"), 0); - + //o_avail List of available gadgets ol = e_widget_ilist_add(evas, 24, 24, NULL); e_widget_ilist_multi_select_set(ol, 0); @@ -85,13 +79,13 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf cfdata->o_avail = ol; _fill_gadgets_list(ol); e_widget_framelist_object_append(of, ol); - + //o_add Button to add a gadget ob = e_widget_button_add(evas, _("Add Gadget"), NULL, _cb_add, cfdata, NULL); e_widget_disabled_set(ob, 1); cfdata->o_add = ob; e_widget_framelist_object_append(of, ob); - + e_widget_list_object_append(o, of, 1, 1, 0.5); return o; @@ -105,14 +99,12 @@ _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) return 1; } -/********************************************************************/ - static void _fill_gadgets_list(Evas_Object *ilist) { Evas_List *l = NULL; int w; - + e_widget_ilist_freeze(ilist); e_widget_ilist_clear(ilist); @@ -126,10 +118,9 @@ _fill_gadgets_list(Evas_Object *ilist) if (cc->func.label) lbl = cc->func.label(); if (!lbl) lbl = cc->name; if (cc->func.icon) icon = cc->func.icon(Man->gc->evas); - e_widget_ilist_append(ilist, icon, lbl, NULL, - (void *)cc, NULL); + e_widget_ilist_append(ilist, icon, lbl, NULL, (void *)cc, NULL); } - + e_widget_ilist_go(ilist); e_widget_min_size_get(ilist, &w, NULL); if (w < 200) w = 200; @@ -140,12 +131,12 @@ _fill_gadgets_list(Evas_Object *ilist) static void _cb_add(void *data, void *data2) { - E_Config_Dialog_Data *cfdata = data; - Evas_List *l; + E_Config_Dialog_Data *cfdata; + Evas_List *l = NULL; Evas_List *selected; int i; - if (!cfdata) return; + if (!(cfdata = data)) return; for (i = 0, l = e_widget_ilist_items_get(cfdata->o_avail); l; l = l->next, i++) { @@ -156,21 +147,22 @@ _cb_add(void *data, void *data2) if (!(item = l->data)) continue; if (!item->selected) continue; - + cc = e_widget_ilist_nth_data_get(cfdata->o_avail, i); if (!cc) continue; - + gcc = gadman_gadget_add(cc, 0); gadman_gadget_edit_start(gcc); } + if (l) evas_list_free(l); } static void _avail_list_cb_change(void *data, Evas_Object *obj) { - E_Config_Dialog_Data *cfdata = data; - - if (!cfdata) return; + E_Config_Dialog_Data *cfdata; + + if (!(cfdata = data)) return; e_widget_disabled_set(cfdata->o_add, 0); } diff --git a/src/modules/gadman/e_mod_config.h b/src/modules/gadman/e_mod_config.h index 32993cf05..af15b4952 100644 --- a/src/modules/gadman/e_mod_config.h +++ b/src/modules/gadman/e_mod_config.h @@ -5,5 +5,5 @@ EAPI E_Config_Dialog *e_int_config_gadman_module(E_Container *con, const char *params __UNUSED__); -# endif +#endif #endif diff --git a/src/modules/gadman/e_mod_gadman.c b/src/modules/gadman/e_mod_gadman.c index 4355266d9..b5d3ecb5d 100644 --- a/src/modules/gadman/e_mod_gadman.c +++ b/src/modules/gadman/e_mod_gadman.c @@ -36,7 +36,6 @@ static void on_menu_delete(void *data, E_Menu *m, E_Menu_Item *mi); static void on_menu_edit(void *data, E_Menu *m, E_Menu_Item *mi); static void on_menu_add(void *data, E_Menu *m, E_Menu_Item *mi); - E_Gadcon_Client *current; /* Implementation */ @@ -44,10 +43,11 @@ void gadman_init(E_Module *m) { Evas_List *managers, *l; - + /* Create Manager */ Man = calloc(1, sizeof(Manager)); if (!Man) return; + Man->module = m; Man->container = e_container_current_get(e_manager_current_get()); Man->width = Man->container->w; @@ -55,13 +55,13 @@ gadman_init(E_Module *m) Man->gadgets = NULL; Man->top_ee = NULL; Man->visible = 0; - + /* Check if composite is enable */ if (ecore_x_screen_is_composited(0) || e_config->use_composite) - Man->use_composite = 1; + Man->use_composite = 1; else - Man->use_composite = 0; - + Man->use_composite = 0; + /* with this we can trap screen resolution change (a better way?)*/ e_container_shape_change_callback_add(Man->container, on_shape_change, NULL); @@ -72,29 +72,34 @@ gadman_init(E_Module *m) /* Create 2 mover objects */ Man->mover = _create_mover(Man->gc); Man->mover_top = _create_mover(Man->gc_top); - + /* Start existing gadgets */ for (l = Man->gc->cf->clients; l; l = l->next) - { - E_Config_Gadcon_Client *cf_gcc = l->data; - gadman_gadget_place(cf_gcc, 0); - } + { + E_Config_Gadcon_Client *cf_gcc; + + if (!(cf_gcc = l->data)) continue; + gadman_gadget_place(cf_gcc, 0); + } + for (l = Man->gc_top->cf->clients; l; l = l->next) - { - E_Config_Gadcon_Client *cf_gcc = l->data; - gadman_gadget_place(cf_gcc, 1); - } + { + E_Config_Gadcon_Client *cf_gcc; + + if(!(cf_gcc = l->data)) continue; + gadman_gadget_place(cf_gcc, 1); + } } void gadman_shutdown(void) { e_container_shape_change_callback_del(Man->container, on_shape_change, NULL); -printf("++++++++ UNPOPULATE BG\n"); + printf("++++++++ UNPOPULATE BG\n"); e_gadcon_unpopulate(Man->gc); // TODO FIX ME !! -printf("++++++++ UNPOPULATE TOP\n"); + printf("++++++++ UNPOPULATE TOP\n"); e_gadcon_unpopulate(Man->gc_top); - + /* free gadcons */ e_config->gadcons = evas_list_remove(e_config->gadcons, Man->gc); e_config->gadcons = evas_list_remove(e_config->gadcons, Man->gc_top); @@ -104,16 +109,16 @@ printf("++++++++ UNPOPULATE TOP\n"); if (Man->icon_name) evas_stringshare_del(Man->icon_name); free(Man->gc); free(Man->gc_top); - + /* free manager */ evas_object_del(Man->mover); evas_object_del(Man->mover_top); evas_list_free(Man->gadgets); if (Man->top_ee) - { - e_canvas_del(Man->top_ee); - //ecore_evas_free(Man->top_ee); - } + { + e_canvas_del(Man->top_ee); + //ecore_evas_free(Man->top_ee); + } free(Man); Man = NULL; } @@ -124,52 +129,52 @@ gadman_gadget_place(E_Config_Gadcon_Client *cf, int ontop) E_Gadcon *gc; E_Gadcon_Client *gcc; E_Gadcon_Client_Class *cc = NULL; - Evas_List *l; - - if (ontop) gc = Man->gc_top; - else gc = Man->gc; - + Evas_List *l = NULL; + if (!cf->name) return NULL; - + + if (ontop) gc = Man->gc_top; + else gc = Man->gc; + /* Find provider */ for (l = e_gadcon_provider_list(); l; l = l->next) { cc = l->data; if (!strcmp(cc->name, cf->name)) - break; + break; else - cc = NULL; + cc = NULL; } if (!cc) return NULL; - + /* init Gadcon_Client */ gcc = cc->func.init(gc, cf->name, cf->id, cc->default_style); gcc->cf = cf; gcc->client_class = cc; - + Man->gadgets = evas_list_append(Man->gadgets, gcc); - + //printf("Place Gadget %s (style: %s id: %s) (gadcon: %s)\n", gcc->name, cf->style, cf->id, gc->name); /* create frame */ gcc->o_frame = edje_object_add(gc->evas); e_theme_edje_object_set(gcc->o_frame, "base/theme/gadman", "e/gadman/frame"); - if ((cf->style) && !strcmp(cf->style, E_GADCON_CLIENT_STYLE_INSET)) - edje_object_signal_emit(gcc->o_frame, "e,state,visibility,inset", "e"); + + if ((cf->style) && (!strcmp(cf->style, E_GADCON_CLIENT_STYLE_INSET))) + edje_object_signal_emit(gcc->o_frame, "e,state,visibility,inset", "e"); else - edje_object_signal_emit(gcc->o_frame, "e,state,visibility,plain", "e"); - + edje_object_signal_emit(gcc->o_frame, "e,state,visibility,plain", "e"); + /* swallow the client inside the frame */ edje_object_part_swallow(gcc->o_frame, "e.swallow.content", gcc->o_base); - evas_object_event_callback_add(gcc->o_frame, EVAS_CALLBACK_MOUSE_DOWN, on_frame_click, gcc); - + _apply_widget_position(gcc); - + if (gcc->gadcon == Man->gc_top) - edje_object_signal_emit(gcc->o_frame, "e,state,visibility,hide", "e"); - + edje_object_signal_emit(gcc->o_frame, "e,state,visibility,hide", "e"); + evas_object_show(gcc->o_frame); return gcc; @@ -182,10 +187,11 @@ gadman_gadget_add(E_Gadcon_Client_Class *cc, int ontop) E_Gadcon_Client *gcc; E_Gadcon *gc; char *id; + if (ontop) - gc = Man->gc_top; + gc = Man->gc_top; else - gc = Man->gc; + gc = Man->gc; /* Create Config_Gadcon_Client */ cf = e_gadcon_client_config_new(gc, cc->name); @@ -194,24 +200,23 @@ gadman_gadget_add(E_Gadcon_Client_Class *cc, int ontop) cf->geom.pos_y = DEFAULT_POS_Y; cf->geom.size_w = DEFAULT_SIZE_W; cf->geom.size_h = DEFAULT_SIZE_H; - + /* Place the new gadget */ gcc = gadman_gadget_place(cf, ontop); - + return gcc; } void gadman_gadget_remove(E_Gadcon_Client *gcc) { - Man->gadgets = evas_list_remove(Man->gadgets, gcc); - + edje_object_part_unswallow(gcc->o_frame, gcc->o_base); evas_object_del(gcc->o_frame); - + gcc->gadcon->clients = evas_list_remove(gcc->gadcon->clients, gcc); - + e_object_del(E_OBJECT(gcc)); current = NULL; } @@ -219,16 +224,15 @@ gadman_gadget_remove(E_Gadcon_Client *gcc) void gadman_gadget_del(E_Gadcon_Client *gcc) { - Man->gadgets = evas_list_remove(Man->gadgets, gcc); - + edje_object_part_unswallow(gcc->o_frame, gcc->o_base); evas_object_del(gcc->o_frame); - + e_gadcon_client_config_del(current->gadcon->cf, gcc->cf); gcc->gadcon->clients = evas_list_remove(gcc->gadcon->clients, gcc); e_object_del(E_OBJECT(gcc)); - + current = NULL; } @@ -236,19 +240,18 @@ void gadman_gadget_edit_start(E_Gadcon_Client *gcc) { E_Gadcon *gc; - + Evas_Object *mover; + int x, y, w, h; + current = gcc; - + gc = gcc->gadcon; gc->editing = 1; - + /* Move/resize the correct mover */ - int x, y, w, h; - Evas_Object *mover; - evas_object_geometry_get(gcc->o_frame, &x, &y, &w, &h); mover = _get_mover(gcc); - + evas_object_move(mover, x, y); evas_object_resize(mover, w, h); evas_object_raise(mover); @@ -260,129 +263,128 @@ gadman_gadget_edit_end(void) { evas_object_hide(Man->mover); evas_object_hide(Man->mover_top); - + Man->gc->editing = 0; Man->gc_top->editing = 0; - + _save_widget_position(current); } - void gadman_gadgets_show(void) { - Evas_List *l; + Evas_List *l = NULL; Man->visible = 1; ecore_evas_show(Man->top_ee); - - edje_object_signal_emit(Man->full_bg, "e,state,visibility,show", "e"); - - for (l = Man->gadgets; l; l = l->next) - { - E_Gadcon_Client *gcc = l->data; - if (gcc->gadcon == Man->gc_top) - edje_object_signal_emit(gcc->o_frame, "e,state,visibility,show", "e"); - } -} + edje_object_signal_emit(Man->full_bg, "e,state,visibility,show", "e"); + + for (l = Man->gadgets; l; l = l->next) + { + E_Gadcon_Client *gcc; + + if (!(gcc = l->data)) continue; + if (gcc->gadcon == Man->gc_top) + edje_object_signal_emit(gcc->o_frame, "e,state,visibility,show", "e"); + } +} void gadman_gadgets_hide(void) { - Evas_List *l; + Evas_List *l = NULL; Man->visible = 0; - - edje_object_signal_emit(Man->full_bg, "e,state,visibility,hide", "e"); - - for (l = Man->gadgets; l; l = l->next) - { - E_Gadcon_Client *gcc = l->data; - if (gcc->gadcon == Man->gc_top) - edje_object_signal_emit(gcc->o_frame, "e,state,visibility,hide", "e"); - } -} + edje_object_signal_emit(Man->full_bg, "e,state,visibility,hide", "e"); + + for (l = Man->gadgets; l; l = l->next) + { + E_Gadcon_Client *gcc; + + if (!(gcc = l->data)) continue; + if (gcc->gadcon == Man->gc_top) + edje_object_signal_emit(gcc->o_frame, "e,state,visibility,hide", "e"); + } +} void gadman_gadgets_toggle(void) { if (Man->visible) - gadman_gadgets_hide(); + gadman_gadgets_hide(); else - gadman_gadgets_show(); + gadman_gadgets_show(); } - /* Internals */ static E_Gadcon* _gadman_gadcon_new(const char* name, int ontop) { E_Gadcon *gc; - Evas_List *l; - + Evas_List *l = NULL; + /* Create Gadcon */ gc = E_OBJECT_ALLOC(E_Gadcon, E_GADCON_TYPE, NULL); if (!gc) return NULL; - + gc->name = evas_stringshare_add(name); gc->layout_policy = E_GADCON_LAYOUT_POLICY_PANEL; gc->orient = E_GADCON_ORIENT_FLOAT; - + /* Create ecore fullscreen window */ if (ontop) - { - Man->top_ee = e_canvas_new(e_config->evas_engine_popups, - Man->container->win, - 0, 0, 0, 0, 1, 1, &(Man->top_win), NULL); + { + Man->top_ee = + e_canvas_new(e_config->evas_engine_popups, Man->container->win, + 0, 0, 0, 0, 1, 1, &(Man->top_win), NULL); - if (Man->use_composite) - { - ecore_evas_alpha_set(Man->top_ee, 1); - Man->top_win = ecore_evas_software_x11_window_get(Man->top_ee); - // Leave 1px to switch desktop when mouse is on border - ecore_x_window_shape_rectangle_set(Man->top_win, 1, 1, - Man->width - 2, Man->height - 2); - } - else - { - ecore_evas_shaped_set(Man->top_ee, 1); - } + if (Man->use_composite) + { + ecore_evas_alpha_set(Man->top_ee, 1); + Man->top_win = ecore_evas_software_x11_window_get(Man->top_ee); + // Leave 1px to switch desktop when mouse is on border + ecore_x_window_shape_rectangle_set(Man->top_win, 1, 1, + (Man->width - 2), + (Man->height - 2)); + } + else + ecore_evas_shaped_set(Man->top_ee, 1); - ecore_evas_avoid_damage_set(Man->top_ee, 1); //?? - e_canvas_add(Man->top_ee); //?? - - e_container_window_raise(Man->container, Man->top_win, 250); - - ecore_evas_move_resize(Man->top_ee, 0, 0, Man->width, Man->height); - ecore_evas_hide(Man->top_ee); - - gc->evas = ecore_evas_get(Man->top_ee); - e_gadcon_ecore_evas_set(gc, Man->top_ee); - - /* create full background object */ - Man->full_bg = edje_object_add(gc->evas); - e_theme_edje_object_set(Man->full_bg, "base/theme/gadman", "e/gadman/full_bg"); - edje_object_signal_callback_add(Man->full_bg, "mouse,down,*", "bg", - on_bg_click, NULL); - edje_object_signal_callback_add(Man->full_bg, "program,stop", "hide", - _hide_finished, NULL); - evas_object_move(Man->full_bg, 0, 0); - evas_object_resize(Man->full_bg, Man->width, Man->height); - evas_object_show(Man->full_bg); - - } + ecore_evas_avoid_damage_set(Man->top_ee, 1); //?? + e_canvas_add(Man->top_ee); //?? + + e_container_window_raise(Man->container, Man->top_win, 250); + + ecore_evas_move_resize(Man->top_ee, 0, 0, Man->width, Man->height); + ecore_evas_hide(Man->top_ee); + + gc->evas = ecore_evas_get(Man->top_ee); + e_gadcon_ecore_evas_set(gc, Man->top_ee); + + /* create full background object */ + Man->full_bg = edje_object_add(gc->evas); + e_theme_edje_object_set(Man->full_bg, "base/theme/gadman", + "e/gadman/full_bg"); + edje_object_signal_callback_add(Man->full_bg, "mouse,down,*", "bg", + on_bg_click, NULL); + edje_object_signal_callback_add(Man->full_bg, "program,stop", "hide", + _hide_finished, NULL); + evas_object_move(Man->full_bg, 0, 0); + evas_object_resize(Man->full_bg, Man->width, Man->height); + evas_object_show(Man->full_bg); + } /* ... or use the e background window */ else - { - gc->evas = Man->container->bg_evas; - e_gadcon_ecore_evas_set(gc, Man->container->bg_ecore_evas); - } - + { + gc->evas = Man->container->bg_evas; + e_gadcon_ecore_evas_set(gc, Man->container->bg_ecore_evas); + } + e_gadcon_zone_set(gc, e_zone_current_get(Man->container)); e_gadcon_util_menu_attach_func_set(gc, _attach_menu, NULL); - + gc->id = 114 + ontop; // TODO what's this ??????? 114 is a random number gc->edje.o_parent = NULL; gc->edje.swallow_name = NULL; @@ -393,48 +395,51 @@ _gadman_gadcon_new(const char* name, int ontop) gc->frame_request.func = NULL; gc->resize_request.func = NULL; gc->min_size_request.func = NULL; - + /* Search for existing gadcon config */ gc->cf = NULL; for (l = e_config->gadcons; l; l=l->next) - { - E_Config_Gadcon *cg = l->data; - if (!strcmp(cg->name, name)) - { - gc->cf = cg; - break; - } - } + { + E_Config_Gadcon *cg; + + if (!(cg = l->data)) continue; + if (!strcmp(cg->name, name)) + { + gc->cf = cg; + break; + } + } + /* ... or create a new one */ if (!gc->cf) - { - gc->cf = E_NEW(E_Config_Gadcon, 1); - gc->cf->name = evas_stringshare_add(name); - gc->cf->id = gc->id; - gc->cf->clients = NULL; - e_config->gadcons = evas_list_append(e_config->gadcons, gc->cf); - e_config_save_queue(); - } - + { + gc->cf = E_NEW(E_Config_Gadcon, 1); + gc->cf->name = evas_stringshare_add(name); + gc->cf->id = gc->id; + gc->cf->clients = NULL; + e_config->gadcons = evas_list_append(e_config->gadcons, gc->cf); + e_config_save_queue(); + } + return gc; } -static Evas_Object* +static Evas_Object * _create_mover(E_Gadcon *gc) { Evas_Object *mover; - + /* create mover object */ mover = edje_object_add(gc->evas); e_theme_edje_object_set(mover, "base/theme/gadman", "e/gadman/control"); - + edje_object_signal_callback_add(mover, "mouse,down,1", "overlay", on_move, (void*)DRAG_START); edje_object_signal_callback_add(mover, "mouse,up,1", "overlay", on_move, (void*)DRAG_STOP); edje_object_signal_callback_add(mover, "mouse,down,3", "overlay", gadman_gadget_edit_end, NULL); - + edje_object_signal_callback_add(mover, "mouse,down,1", "h1", on_left, (void*)DRAG_START); edje_object_signal_callback_add(mover, "mouse,up,1", "h1", @@ -451,11 +456,11 @@ _create_mover(E_Gadcon *gc) on_top, (void*)DRAG_START); edje_object_signal_callback_add(mover, "mouse,up,1", "v1", on_top, (void*)DRAG_STOP); - + evas_object_move(mover, 20, 30); evas_object_resize(mover, 100, 100); evas_object_hide(mover); - + return mover; } @@ -463,17 +468,17 @@ static Evas_Object * _get_mover(E_Gadcon_Client *gcc) { if (gcc->gadcon == Man->gc_top) - return Man->mover_top; + return Man->mover_top; else - return Man->mover; + return Man->mover; } static void _save_widget_position(E_Gadcon_Client *gcc) { int x, y, w, h; + evas_object_geometry_get(gcc->o_frame, &x, &y, &w, &h); - current->cf->geom.pos_x = (double)x / (double)Man->width; current->cf->geom.pos_y = (double)y / (double)Man->height; current->cf->geom.size_w = (double)w / (double)Man->width;; @@ -488,29 +493,27 @@ _apply_widget_position(E_Gadcon_Client *gcc) Evas_List *l; int x, y, w, h; int fx, fy, fw, fh; - + x = gcc->cf->geom.pos_x * Man->width; y = gcc->cf->geom.pos_y * Man->height; w = gcc->cf->geom.size_w * Man->width; h = gcc->cf->geom.size_h * Man->height; - + /* Respect min sizes */ if (h < gcc->min.h) h = gcc->min.h; if (w < gcc->min.w) w = gcc->min.w; - if (h < 1) h = 100; if (w < 1) w = 100; - + /* Respect screen margin */ if (x < 0) x = 0; if (y < 0) y = 0; - if (x > Man->width) x = 0; if (y > Man->height) y = 0; - - if ((y + h) > Man->height) h = Man->height - y; - if ((x + w) > Man->width) w = Man->width - x; - + + if ((y + h) > Man->height) h = (Man->height - y); + if ((x + w) > Man->width) w = (Man->width - x); + evas_object_move(gcc->o_frame, x, y); evas_object_resize(gcc->o_frame, w, h); } @@ -521,13 +524,13 @@ _attach_menu(void *data, E_Gadcon_Client *gcc, E_Menu *menu) E_Menu *mn; E_Menu_Item *mi; char buf[128]; - + //printf("Attach menu (gcc: %x id: %s) [%s]\n", gcc, gcc->cf->id, gcc->cf->style); if (!gcc) return; if (!gcc->cf->style) - gcc->cf->style = evas_stringshare_add(E_GADCON_CLIENT_STYLE_INSET); - + gcc->cf->style = evas_stringshare_add(E_GADCON_CLIENT_STYLE_INSET); + /* plain / inset */ mn = e_menu_new(); mi = e_menu_item_new(mn); @@ -535,7 +538,7 @@ _attach_menu(void *data, E_Gadcon_Client *gcc, E_Menu *menu) e_menu_item_radio_set(mi, 1); e_menu_item_radio_group_set(mi, 1); if (!strcmp(gcc->cf->style, E_GADCON_CLIENT_STYLE_PLAIN)) - e_menu_item_toggle_set(mi, 1); + e_menu_item_toggle_set(mi, 1); e_menu_item_callback_set(mi, on_menu_style_plain, gcc); mi = e_menu_item_new(mn); @@ -543,15 +546,15 @@ _attach_menu(void *data, E_Gadcon_Client *gcc, E_Menu *menu) e_menu_item_radio_set(mi, 1); e_menu_item_radio_group_set(mi, 1); if (!strcmp(gcc->cf->style, E_GADCON_CLIENT_STYLE_INSET)) - e_menu_item_toggle_set(mi, 1); + e_menu_item_toggle_set(mi, 1); e_menu_item_callback_set(mi, on_menu_style_inset, gcc); - + mi = e_menu_item_new(menu); e_menu_item_label_set(mi, _("Appearance")); e_util_menu_item_edje_icon_set(mi, "enlightenment/appearance"); e_menu_item_submenu_set(mi, mn); e_object_del(E_OBJECT(mn)); - + /* bg / ontop */ mn = e_menu_new(); mi = e_menu_item_new(mn); @@ -559,7 +562,7 @@ _attach_menu(void *data, E_Gadcon_Client *gcc, E_Menu *menu) e_menu_item_radio_set(mi, 1); e_menu_item_radio_group_set(mi, 2); if (gcc->gadcon == Man->gc) - e_menu_item_toggle_set(mi, 1); + e_menu_item_toggle_set(mi, 1); e_menu_item_callback_set(mi, on_menu_layer_bg, gcc); mi = e_menu_item_new(mn); @@ -569,26 +572,26 @@ _attach_menu(void *data, E_Gadcon_Client *gcc, E_Menu *menu) e_menu_item_radio_set(mi, 1); e_menu_item_radio_group_set(mi, 2); if (gcc->gadcon == Man->gc_top) - e_menu_item_toggle_set(mi, 1); + e_menu_item_toggle_set(mi, 1); e_menu_item_callback_set(mi, on_menu_layer_top, gcc); - + mi = e_menu_item_new(menu); e_menu_item_label_set(mi, _("Behavior")); e_util_menu_item_edje_icon_set(mi, "enlightenment/appearance"); e_menu_item_submenu_set(mi, mn); e_object_del(E_OBJECT(mn)); - + /* Move / resize*/ mi = e_menu_item_new(menu); e_menu_item_label_set(mi, _("Move/resize this gadget")); e_menu_item_icon_edje_set(mi, Man->icon_name, "move_icon"); e_menu_item_callback_set(mi, on_menu_edit, gcc); - + /* Remove this gadgets */ mi = e_menu_item_new(menu); e_menu_item_label_set(mi, _("Remove this gadget")); e_menu_item_callback_set(mi, on_menu_delete, gcc); - + /* Add other gadgets */ mi = e_menu_item_new(menu); e_menu_item_label_set(mi, _("Add other gadgets")); @@ -596,48 +599,48 @@ _attach_menu(void *data, E_Gadcon_Client *gcc, E_Menu *menu) e_menu_item_callback_set(mi, on_menu_add, gcc); } -static char* +static char * _get_bind_text(const char* action) { - char b[256] = ""; E_Binding_Key *bind; - bind = e_bindings_key_get(action); - - if (bind && bind->key) - { - if (bind->mod & E_BINDING_MODIFIER_CTRL) - strcat(b, _("CTRL")); + char b[256] = ""; - if (bind->mod & E_BINDING_MODIFIER_ALT) - { - if (b[0]) strcat(b, " + "); - strcat(b, _("ALT")); - } + bind = e_bindings_key_get(action); + if ((bind) && (bind->key)) + { + if ((bind->mod) & (E_BINDING_MODIFIER_CTRL)) + strcat(b, _("CTRL")); - if (bind->mod & E_BINDING_MODIFIER_SHIFT) - { - if (b[0]) strcat(b, " + "); - strcat(b, _("SHIFT")); - } + if ((bind->mod) & (E_BINDING_MODIFIER_ALT)) + { + if (b[0]) strcat(b, " + "); + strcat(b, _("ALT")); + } - if (bind->mod & E_BINDING_MODIFIER_WIN) - { - if (b[0]) strcat(b, " + "); - strcat(b, _("WIN")); - } - - if (bind->key && bind->key[0]) - { - char *l; - if (b[0]) strcat(b, " + "); + if ((bind->mod) & (E_BINDING_MODIFIER_SHIFT)) + { + if (b[0]) strcat(b, " + "); + strcat(b, _("SHIFT")); + } - l = strdup(bind->key); - l[0] = (char)toupper(bind->key[0]); - strcat(b, l); - free(l); - } - return &b; - } + if ((bind->mod) & (E_BINDING_MODIFIER_WIN)) + { + if (b[0]) strcat(b, " + "); + strcat(b, _("WIN")); + } + + if ((bind->key) && (bind->key[0])) + { + char *l; + + if (b[0]) strcat(b, " + "); + l = strdup(bind->key); + l[0] = (char)toupper(bind->key[0]); + strcat(b, l); + free(l); + } + return &b; + } return "(You must define a binding)"; } @@ -651,43 +654,50 @@ _hide_finished(void *data, Evas_Object *o, const char *em, const char *src) static void on_shape_change(void *data, E_Container_Shape *es, E_Container_Shape_Change ch) { - Evas_List *l; - E_Container *con = e_container_shape_container_get(es); - - if (con->w == Man->width && con->h == Man->height) return; - + Evas_List *l = NULL; + E_Container *con; + + con = e_container_shape_container_get(es); + if ((con->w == Man->width) && (con->h == Man->height)) return; + /* The screen size is changed */ Man->width = con->w; Man->height = con->h; - + /* ReStart gadgets */ e_gadcon_unpopulate(Man->gc); e_gadcon_unpopulate(Man->gc_top); for (l = Man->gc->cf->clients; l; l = l->next) - { - E_Config_Gadcon_Client *cf_gcc = l->data; - gadman_gadget_place(cf_gcc, 0); - } + { + E_Config_Gadcon_Client *cf_gcc; + + if (!(cf_gcc = l->data)) continue; + gadman_gadget_place(cf_gcc, 0); + } + for (l = Man->gc_top->cf->clients; l; l = l->next) - { - E_Config_Gadcon_Client *cf_gcc = l->data; - gadman_gadget_place(cf_gcc, 1); - } + { + E_Config_Gadcon_Client *cf_gcc; + + if (!(cf_gcc = l->data)) continue; + gadman_gadget_place(cf_gcc, 1); + } } + static void on_menu_style_plain(void *data, E_Menu *m, E_Menu_Item *mi) { E_Gadcon_Client *gcc; - + gcc = current; if (gcc->style) evas_stringshare_del(gcc->style); gcc->style = evas_stringshare_add(E_GADCON_CLIENT_STYLE_PLAIN); - + if (gcc->cf->style) evas_stringshare_del(gcc->cf->style); gcc->cf->style = evas_stringshare_add(E_GADCON_CLIENT_STYLE_PLAIN); - + edje_object_signal_emit(gcc->o_frame, "e,state,visibility,plain", "e"); - + e_config_save_queue(); } @@ -695,37 +705,35 @@ static void on_menu_style_inset(void *data, E_Menu *m, E_Menu_Item *mi) { E_Gadcon_Client *gcc; - + gcc = current; - printf("Inset (%s)\n", gcc->name); - +// printf("Inset (%s)\n", gcc->name); + if (gcc->style) evas_stringshare_del(gcc->style); gcc->style = evas_stringshare_add(E_GADCON_CLIENT_STYLE_INSET); - + if (gcc->cf->style) evas_stringshare_del(gcc->cf->style); gcc->cf->style = evas_stringshare_add(E_GADCON_CLIENT_STYLE_INSET); - + edje_object_signal_emit(gcc->o_frame, "e,state,visibility,inset", "e"); - + e_config_save_queue(); } - - static void on_menu_layer_bg(void *data, E_Menu *m, E_Menu_Item *mi) { E_Config_Gadcon_Client *cf; - + if (!current) return; cf = current->cf; - + gadman_gadget_remove(current); current = gadman_gadget_place(cf, 0); - + Man->gc_top->cf->clients = evas_list_remove(Man->gc_top->cf->clients, cf); Man->gc->cf->clients = evas_list_append(Man->gc->cf->clients, cf); - + e_config_save_queue(); } @@ -736,15 +744,15 @@ on_menu_layer_top(void *data, E_Menu *m, E_Menu_Item *mi) if (!current) return; cf = current->cf; - + gadman_gadget_remove(current); current = gadman_gadget_place(cf, 1); - + Man->gc->cf->clients = evas_list_remove(Man->gc->cf->clients, cf); Man->gc_top->cf->clients = evas_list_append(Man->gc_top->cf->clients, cf); - + e_config_save_queue(); - + gadman_gadgets_show(); } @@ -758,9 +766,10 @@ static void on_menu_add(void *data, E_Menu *m, E_Menu_Item *mi) { if (Man->visible) - gadman_gadgets_hide(); + gadman_gadgets_hide(); e_configure_registry_call("extensions/gadman", m->zone->container, NULL); } + static void on_menu_delete(void *data, E_Menu *m, E_Menu_Item *mi) { @@ -771,19 +780,16 @@ on_menu_delete(void *data, E_Menu *m, E_Menu_Item *mi) static void on_frame_click(void *data, Evas *e, Evas_Object *obj, void *event_info) { - Evas_Event_Mouse_Down *ev; E_Gadcon_Client *gcc; - + ev = event_info; - printf("Click\n"); - if (Man->gc->editing) gadman_gadget_edit_end(); gcc = data; current = gcc; - + if (ev->button == 5) { E_Menu *mn; @@ -793,9 +799,7 @@ on_frame_click(void *data, Evas *e, Evas_Object *obj, void *event_info) //e_menu_post_deactivate_callback_set(mn, _e_gadcon_client_cb_menu_post, // gcc); gcc->menu = mn; - e_gadcon_client_util_menu_items_append(gcc, mn, 0); - e_gadcon_canvas_zone_geometry_get(gcc->gadcon, &cx, &cy, &cw, &ch); e_menu_activate_mouse(mn, e_util_zone_current_get(e_manager_current_get()), @@ -804,7 +808,6 @@ on_frame_click(void *data, Evas *e, Evas_Object *obj, void *event_info) e_util_evas_fake_mouse_up_later(gcc->gadcon->evas, ev->button); } - } static void @@ -814,197 +817,208 @@ on_top(void *data, Evas_Object *o, const char *em, const char *src) int mx, my; //Mouse coord int action = (int)data; Evas_Object *mover; + mover = _get_mover(current); - + if (action == DRAG_START) - { - evas_pointer_output_xy_get(current->gadcon->evas, &mx, &my); - evas_object_geometry_get(mover, &ox, &oy, &ow, &oh); - edje_object_signal_callback_add(o, "mouse,move", "v1", - on_top,(void*)DRAG_MOVE); - } + { + evas_pointer_output_xy_get(current->gadcon->evas, &mx, &my); + evas_object_geometry_get(mover, &ox, &oy, &ow, &oh); + edje_object_signal_callback_add(o, "mouse,move", "v1", + on_top,(void*)DRAG_MOVE); + } else if (action == DRAG_STOP) - { - edje_object_signal_callback_del(o, "mouse,move", "v1", on_top); - _save_widget_position(current); - } + { + edje_object_signal_callback_del(o, "mouse,move", "v1", on_top); + _save_widget_position(current); + } else if (action == DRAG_MOVE) - { - int w, h; - evas_pointer_output_xy_get(current->gadcon->evas, &mx, &my); - - h = (oy + oh) - my - 15; - if (h < current->min.h) h = current->min.h; - - evas_object_resize(mover, ow, h); - evas_object_move(mover, ox, my + 15); - - evas_object_resize(current->o_frame, ow, h); - evas_object_move(current->o_frame, ox, my + 15); - } + { + int w, h; + + evas_pointer_output_xy_get(current->gadcon->evas, &mx, &my); + + h = (oy + oh) - my - 15; + if (h < current->min.h) h = current->min.h; + + evas_object_resize(mover, ow, h); + evas_object_move(mover, ox, my + 15); + + evas_object_resize(current->o_frame, ow, h); + evas_object_move(current->o_frame, ox, my + 15); + } } static void on_right(void *data, Evas_Object *o, const char *em, const char *src) { + Evas_Object *mover; static int ox, oy, ow, oh; //Object coord int mx, my; //Mouse coord - int action = (int)data; - Evas_Object *mover; + int action; + mover = _get_mover(current); - + + action = (int)data; if (action == DRAG_START) - { - evas_pointer_output_xy_get(current->gadcon->evas, &mx, &my); - evas_object_geometry_get(mover, &ox, &oy, &ow, &oh); - edje_object_signal_callback_add(o, "mouse,move", "h2", - on_right,(void*)DRAG_MOVE); - } + { + evas_pointer_output_xy_get(current->gadcon->evas, &mx, &my); + evas_object_geometry_get(mover, &ox, &oy, &ow, &oh); + edje_object_signal_callback_add(o, "mouse,move", "h2", + on_right,(void*)DRAG_MOVE); + } else if (action == DRAG_STOP) - { - edje_object_signal_callback_del(o, "mouse,move", "h2", on_right); - _save_widget_position(current); - } + { + edje_object_signal_callback_del(o, "mouse,move", "h2", on_right); + _save_widget_position(current); + } else if (action == DRAG_MOVE) - { - int w, h; - evas_pointer_output_xy_get(current->gadcon->evas, &mx, &my); - - w = mx - ox - 15; - if (w < current->min.w) w = current->min.w; - - evas_object_resize(mover, w, oh); - evas_object_resize(current->o_frame, w, oh); - } + { + int w, h; + + evas_pointer_output_xy_get(current->gadcon->evas, &mx, &my); + + w = mx - ox - 15; + if (w < current->min.w) w = current->min.w; + + evas_object_resize(mover, w, oh); + evas_object_resize(current->o_frame, w, oh); + } } static void on_down(void *data, Evas_Object *o, const char *em, const char *src) { + Evas_Object *mover; static int ox, oy, ow, oh; //Object coord int mx, my; //Mouse coord - int action = (int)data; - Evas_Object *mover; + int action; + + action = (int)data; mover = _get_mover(current); - + if (action == DRAG_START) - { - evas_pointer_output_xy_get(current->gadcon->evas, &mx, &my); - evas_object_geometry_get(mover, &ox, &oy, &ow, &oh); - edje_object_signal_callback_add(o, "mouse,move", "v2", - on_down,(void*)DRAG_MOVE); - } + { + evas_pointer_output_xy_get(current->gadcon->evas, &mx, &my); + evas_object_geometry_get(mover, &ox, &oy, &ow, &oh); + edje_object_signal_callback_add(o, "mouse,move", "v2", + on_down,(void*)DRAG_MOVE); + } else if (action == DRAG_STOP) - { - edje_object_signal_callback_del(o, "mouse,move", "v2", on_down); - _save_widget_position(current); - } + { + edje_object_signal_callback_del(o, "mouse,move", "v2", on_down); + _save_widget_position(current); + } else if (action == DRAG_MOVE) - { - int w, h; - evas_pointer_output_xy_get(current->gadcon->evas, &mx, &my); - h = my - oy - 15; - if (h < current->min.h) h = current->min.h; - - evas_object_resize(mover, ow, h); - evas_object_resize(current->o_frame, ow, h); - } + { + int w, h; + + evas_pointer_output_xy_get(current->gadcon->evas, &mx, &my); + h = my - oy - 15; + if (h < current->min.h) h = current->min.h; + + evas_object_resize(mover, ow, h); + evas_object_resize(current->o_frame, ow, h); + } } static void on_left(void *data, Evas_Object *o, const char *em, const char *src) { + Evas_Object *mover; static int ox, oy, ow, oh; //Object coord int mx, my; //Mouse coord - int action = (int)data; - Evas_Object *mover; - mover = _get_mover(current); - - if (action == DRAG_START) - { - evas_pointer_output_xy_get(current->gadcon->evas, &mx, &my); - evas_object_geometry_get(mover, &ox, &oy, &ow, &oh); - edje_object_signal_callback_add(o, "mouse,move", "h1", - on_left,(void*)DRAG_MOVE); - } - else if (action == DRAG_STOP) - { - edje_object_signal_callback_del(o, "mouse,move", "h1", on_left); - _save_widget_position(current); - } - else if (action == DRAG_MOVE) - { - int w, h; - evas_pointer_output_xy_get(current->gadcon->evas, &mx, &my); - - w = (ox + ow) - mx - 15; - if (w < current->min.w) w = current->min.w; - - evas_object_move(mover, mx + 15, oy); - evas_object_resize(mover, w, oh); - - evas_object_move(current->o_frame, mx + 15, oy); - evas_object_resize(current->o_frame, w, oh); - } -} + int action; + action = (int)data; + mover = _get_mover(current); + + if (action == DRAG_START) + { + evas_pointer_output_xy_get(current->gadcon->evas, &mx, &my); + evas_object_geometry_get(mover, &ox, &oy, &ow, &oh); + edje_object_signal_callback_add(o, "mouse,move", "h1", + on_left,(void*)DRAG_MOVE); + } + else if (action == DRAG_STOP) + { + edje_object_signal_callback_del(o, "mouse,move", "h1", on_left); + _save_widget_position(current); + } + else if (action == DRAG_MOVE) + { + int w, h; + + evas_pointer_output_xy_get(current->gadcon->evas, &mx, &my); + + w = (ox + ow) - mx - 15; + if (w < current->min.w) w = current->min.w; + + evas_object_move(mover, mx + 15, oy); + evas_object_resize(mover, w, oh); + + evas_object_move(current->o_frame, mx + 15, oy); + evas_object_resize(current->o_frame, w, oh); + } +} static void on_move(void *data, Evas_Object *o, const char *em, const char *src) { + Evas_Object *mover; static int dx, dy; //Offset of mouse pointer inside the mover static int ox, oy; //Starting object position static int ow, oh; //Starting object size int mx, my; //Mouse coord - Evas_Object *mover; - - int action = (int)data; + int action; + + action = (int)data; mover = _get_mover(current); - + /* DRAG_START */ if (action == DRAG_START) - { - evas_pointer_output_xy_get(current->gadcon->evas, &mx, &my); - evas_object_geometry_get(mover, &ox, &oy, &ow, &oh); - - dx = mx - ox; - dy = my - oy; + { + evas_pointer_output_xy_get(current->gadcon->evas, &mx, &my); + evas_object_geometry_get(mover, &ox, &oy, &ow, &oh); + + dx = mx - ox; + dy = my - oy; + + edje_object_signal_callback_add(o, "mouse,move", "overlay", + on_move,(void*)DRAG_MOVE); + return; + } - edje_object_signal_callback_add(o, "mouse,move", "overlay", - on_move,(void*)DRAG_MOVE); - return; - } - /* DRAG_STOP */ if (action == DRAG_STOP) - { - edje_object_signal_callback_del(o, "mouse,move", "overlay", on_move); - dx = dy = 0; - _save_widget_position(current); - return; - } - + { + edje_object_signal_callback_del(o, "mouse,move", "overlay", on_move); + dx = dy = 0; + _save_widget_position(current); + return; + } + /* DRAG_MOVE */ if (action == DRAG_MOVE) - { - int x, y; + { + int x, y; - evas_pointer_output_xy_get(current->gadcon->evas, &mx, &my); + evas_pointer_output_xy_get(current->gadcon->evas, &mx, &my); - x = mx - dx; - y = my - dy; + x = mx - dx; + y = my - dy; - /* don't go out of the screen */ - if (x < 0) x = 0; - if (x > (Man->width - ow)) x = Man->width - ow; - if (y < 0) y = 0; - if (y > (Man->height - oh)) y = Man->height - oh; - - evas_object_move(current->o_frame, x , y); - evas_object_move(mover, x, y); - evas_object_raise(current->o_frame); - evas_object_raise(mover); - } + /* don't go out of the screen */ + if (x < 0) x = 0; + if (x > (Man->width - ow)) x = Man->width - ow; + if (y < 0) y = 0; + if (y > (Man->height - oh)) y = Man->height - oh; + + evas_object_move(current->o_frame, x , y); + evas_object_move(mover, x, y); + evas_object_raise(current->o_frame); + evas_object_raise(mover); + } } static void diff --git a/src/modules/gadman/e_mod_main.c b/src/modules/gadman/e_mod_main.c index 3912b362c..50590b1ac 100644 --- a/src/modules/gadman/e_mod_main.c +++ b/src/modules/gadman/e_mod_main.c @@ -9,7 +9,6 @@ static void _gadman_maug_cb(void *data, E_Menu *m, E_Menu_Item *mi); static void _gadman_maug_add(void *data, E_Menu *m); static void _gadman_action_cb(E_Object *obj, const char *params); - /* public module routines. all modules must have these */ EAPI E_Module_Api e_modapi = { E_MODULE_API_VERSION, @@ -32,18 +31,18 @@ e_modapi_init(E_Module *m) "enlightenment/extensions"); e_configure_registry_item_add("extensions/gadman", 150, _("Gadgets"), NULL, buf, e_int_config_gadman_module); - + /* Set this module to be loaded after all other modules, or we don't see modules loaded after this */ e_module_priority_set(m, -100); - + gadman_init(m); - + /* Menu augmentation */ Man->icon_name = evas_stringshare_add(buf); Man->maug = NULL; Man->maug = e_int_menus_menu_augmentation_add("config/1", _gadman_maug_add, - Man->icon_name, NULL, NULL); + Man->icon_name, NULL, NULL); /* Create toggle action */ Man->action = e_action_add("gadman_toggle"); if (Man->action) @@ -52,17 +51,17 @@ e_modapi_init(E_Module *m) e_action_predef_name_set(_("Gadgets"), _("Show/hide gadgets"), "gadman_toggle", NULL, NULL, 0); } - + /* Create a binding for the action (if not exists) */ if (!e_bindings_key_get("gadman_toggle")) - { - e_managers_keys_ungrab(); - e_bindings_key_add(E_BINDING_CONTEXT_ANY, "g", E_BINDING_MODIFIER_WIN, - 0, "gadman_toggle", NULL); + { + e_managers_keys_ungrab(); + e_bindings_key_add(E_BINDING_CONTEXT_ANY, "g", E_BINDING_MODIFIER_WIN, + 0, "gadman_toggle", NULL); - e_managers_keys_grab(); - e_config_save_queue(); - } + e_managers_keys_grab(); + e_config_save_queue(); + } return Man; } @@ -70,26 +69,26 @@ e_modapi_init(E_Module *m) EAPI int e_modapi_shutdown(E_Module *m) { - if(Man->maug) - e_int_menus_menu_augmentation_del("config/1", Man->maug); - + if (Man->maug) + e_int_menus_menu_augmentation_del("config/1", Man->maug); + e_configure_registry_item_del("extensions/deskman"); e_configure_registry_category_del("extensions"); if (Man->config_dialog) - { - e_object_del(E_OBJECT(Man->config_dialog)); - Man->config_dialog = NULL; - } + { + e_object_del(E_OBJECT(Man->config_dialog)); + Man->config_dialog = NULL; + } if (Man->action) { e_action_predef_name_del(_("Gadgets"), _("Show/hide gadgets")); e_action_del("gadman_toggle"); Man->action = NULL; } - + gadman_shutdown(); - + return 1; } @@ -109,7 +108,7 @@ static void _gadman_maug_add(void *data, E_Menu *m) { E_Menu_Item *mi; - + mi = e_menu_item_new(m); e_menu_item_label_set(mi, _("Gadgets")); e_menu_item_icon_edje_set(mi, (char *)data, "icon");