Enlightenment CVS committal Author : devilhorns Project : e_modules Module : net
Dir : e_modules/net Modified Files: e_mod_main.h e_mod_main.c e_mod_config.h e_mod_config.c Log Message: Per Face config for net module. =================================================================== RCS file: /cvsroot/enlightenment/e_modules/net/e_mod_main.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- e_mod_main.h 19 Feb 2006 18:23:14 -0000 1.1 +++ e_mod_main.h 21 Feb 2006 02:09:49 -0000 1.2 @@ -8,22 +8,21 @@ struct _Config { - char *device; - int check_interval; + Evas_List *faces; }; struct _Config_Face { unsigned char enabled; + char *device; + int check_interval; }; struct _Net { E_Menu *config_menu; - Net_Face *face; + Evas_List *faces; Config *conf; - - E_Config_DD *conf_edd; E_Config_Dialog *cfd; }; @@ -35,7 +34,6 @@ Net *net; Config_Face *conf; - E_Config_DD *conf_face_edd; Evas_Object *net_obj; Evas_Object *event_obj; =================================================================== RCS file: /cvsroot/enlightenment/e_modules/net/e_mod_main.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- e_mod_main.c 20 Feb 2006 18:19:39 -0000 1.2 +++ e_mod_main.c 21 Feb 2006 02:09:49 -0000 1.3 @@ -3,24 +3,25 @@ #include "e_mod_config.h" #include "config.h" -static Net *_net_init(E_Module *m); -static void _net_shutdown(Net *n); -static void _net_config_menu_new(Net *n); - -static int _net_face_init(Net_Face *nf); -static void _net_face_menu_new(Net_Face *nf); -static void _net_face_enable(Net_Face *nf); -static void _net_face_disable(Net_Face *nf); -static void _net_face_free(Net_Face *nf); -static void _net_face_cb_gmc_change(void *data, E_Gadman_Client *gmc, E_Gadman_Change change); -static void _net_face_cb_mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event_info); -static void _net_face_cb_menu_edit(void *data, E_Menu *mn, E_Menu_Item *mi); -static void _net_face_cb_menu_configure(void *data, E_Menu *mn, E_Menu_Item *mi); - -static int _net_face_update_values(void *data); -static void _net_face_graph_values(Net_Face *nf, int in, int out); +static Net *_net_init(E_Module *m); +static void _net_shutdown(Net *n); +static void _net_config_menu_new(Net *n); + +static Net_Face *_net_face_init(Net *n, E_Container *con); +static void _net_face_menu_new(Net_Face *nf); +static void _net_face_enable(Net_Face *nf); +static void _net_face_disable(Net_Face *nf); +static void _net_face_free(Net_Face *nf); +static void _net_face_cb_gmc_change(void *data, E_Gadman_Client *gmc, E_Gadman_Change change); +static void _net_face_cb_mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event_info); +static void _net_face_cb_menu_edit(void *data, E_Menu *mn, E_Menu_Item *mi); +static void _net_face_cb_menu_configure(void *data, E_Menu *mn, E_Menu_Item *mi); +static int _net_face_update_values(void *data); +static void _net_face_graph_values(Net_Face *nf, int in, int out); static int net_count; +static E_Config_DD *conf_edd; +static E_Config_DD *conf_face_edd; EAPI E_Module_Api e_modapi = { @@ -73,7 +74,7 @@ n = m->data; if (!n) return 0; - e_config_domain_save("module.net", n->conf_edd, n->conf); + e_config_domain_save("module.net", conf_edd, n->conf); return 1; } @@ -96,18 +97,30 @@ e_modapi_config(E_Module *m) { Net *n; + Evas_List *l; E_Container *con; n = m->data; if (!n) return 0; - if (!n->face) + if (!n->faces) return 0; - con = e_container_current_get(e_manager_current_get()); - if (n->face->con == con) - _configure_net_module(con, n); - + for (l = n->faces; l; l = l->next) + { + Net_Face *nf; + + nf = l->data; + if (!nf) + continue; + + con = e_container_current_get(e_manager_current_get()); + if (nf->con == con) + { + _configure_net_module(nf); + break; + } + } return 1; } @@ -116,32 +129,36 @@ { Net *n; E_Menu_Item *mi; - Evas_List *mans, *l, *l2; + Evas_List *mans, *l, *l2, *fl; n = E_NEW(Net, 1); if (!n) return NULL; - n->conf_edd = E_CONFIG_DD_NEW("Net_Config", Config); + conf_face_edd = E_CONFIG_DD_NEW("Net_Config_Face", Config_Face); #undef T #undef D - #define T Config - #define D n->conf_edd + #define T Config_Face + #define D conf_face_edd + E_CONFIG_VAL(D, T, enabled, UCHAR); E_CONFIG_VAL(D, T, device, STR); E_CONFIG_VAL(D, T, check_interval, INT); - n->conf = e_config_domain_load("module.net", n->conf_edd); + conf_edd = E_CONFIG_DD_NEW("Net_Config", Config); + #undef T + #undef D + #define T Config + #define D conf_edd + E_CONFIG_LIST(D, T, faces, conf_face_edd); + + n->conf = e_config_domain_load("module.net", conf_edd); if (!n->conf) - { - n->conf = E_NEW(Config, 1); - n->conf->device = (char *)evas_stringshare_add("eth0"); - n->conf->check_interval = 30; - } - E_CONFIG_LIMIT(n->conf->check_interval, 0, 60); + n->conf = E_NEW(Config, 1); _net_config_menu_new(n); mans = e_manager_list(); + fl = n->conf->faces; for (l = mans; l; l = l->next) { E_Manager *man; @@ -153,26 +170,26 @@ Net_Face *nf; con = l2->data; - nf = E_NEW(Net_Face, 1); + nf = _net_face_init(n, con); if (nf) { - nf->conf_face_edd = E_CONFIG_DD_NEW("Net_Face_Config", Config_Face); - #undef T - #undef D - #define T Config_Face - #define D nf->conf_face_edd - E_CONFIG_VAL(D, T, enabled, UCHAR); - - n->face = nf; - nf->net = n; - nf->con = con; - nf->evas = con->bg_evas; - - nf->conf = E_NEW(Config_Face, 1); - nf->conf->enabled = 1; - - if (!_net_face_init(nf)) - return NULL; + printf("Created Face\n"); + if (!fl) + { + nf->conf = E_NEW(Config_Face, 1); + nf->conf->enabled = 1; + nf->conf->device = (char *)evas_stringshare_add("eth0"); + nf->conf->check_interval = 30; + n->conf->faces = evas_list_append(n->conf->faces, nf->conf); + } + else + { + nf->conf = fl->data; + fl = fl->next; + } + E_CONFIG_LIMIT(nf->conf->check_interval, 0, 60); + + nf->monitor = ecore_timer_add((double)nf->conf->check_interval, _net_face_update_values, nf); _net_face_menu_new(nf); @@ -186,8 +203,6 @@ if (!nf->conf->enabled) _net_face_disable(nf); - else - _net_face_enable(nf); } } } @@ -197,13 +212,16 @@ static void _net_shutdown(Net *n) { - _net_face_free(n->face); + E_CONFIG_DD_FREE(conf_edd); + E_CONFIG_DD_FREE(conf_face_edd); + + while (n->faces) + _net_face_free(n->faces->data); - if (n->conf->device) - evas_stringshare_del(n->conf->device); + e_object_del(E_OBJECT(n->config_menu)); + evas_list_free(n->conf->faces); E_FREE(n->conf); - E_CONFIG_DD_FREE(n->conf_edd); E_FREE(n); } @@ -216,19 +234,29 @@ n->config_menu = mn; } -static int -_net_face_init(Net_Face *nf) +static Net_Face * +_net_face_init(Net *n, E_Container *con) { + Net_Face *nf; Evas_Object *o; char buf[4096]; + + nf = E_NEW(Net_Face, 1); + if (!nf) + return NULL; + nf->net = n; + n->faces = evas_list_append(n->faces, nf); + + nf->con = con; + e_object_ref(E_OBJECT(con)); + nf->evas = con->bg_evas; evas_event_freeze(nf->evas); o = edje_object_add(nf->evas); nf->net_obj = o; - if (!e_theme_edje_object_set(o, "base/theme/modules/net", - "modules/net/main")) + if (!e_theme_edje_object_set(o, "base/theme/modules/net", "modules/net/main")) { snprintf(buf, sizeof(buf), PACKAGE_DATA_DIR"/net.edj"); edje_object_file_set(o, buf, "modules/net/main"); @@ -236,15 +264,6 @@ evas_object_show(o); - /* - o = evas_object_rectangle_add(nf->evas); - nf->chart_obj = o; - evas_object_layer_set(o, 2); - evas_object_repeat_events_set(o, 0); - evas_object_color_set(o, 0, 0, 0, 255); - evas_object_show(o); - */ - o = evas_object_rectangle_add(nf->evas); nf->event_obj = o; evas_object_layer_set(o, 2); @@ -271,9 +290,8 @@ e_gadman_client_change_func_set(nf->gmc, _net_face_cb_gmc_change, nf); e_gadman_client_load(nf->gmc); evas_event_thaw(nf->evas); - - nf->monitor = ecore_timer_add((double)nf->net->conf->check_interval, _net_face_update_values, nf); - return 1; + + return nf; } static void @@ -319,6 +337,9 @@ static void _net_face_free(Net_Face *nf) { + e_object_unref(E_OBJECT(nf->con)); + e_object_del(E_OBJECT(nf->menu)); + if (nf->monitor) ecore_timer_del(nf->monitor); if (nf->menu) @@ -339,6 +360,8 @@ e_object_del(E_OBJECT(nf->gmc)); } + nf->net->faces = evas_list_remove(nf->net->faces, nf); + E_FREE(nf->conf); E_FREE(nf); net_count--; @@ -356,20 +379,17 @@ case E_GADMAN_CHANGE_MOVE_RESIZE: e_gadman_client_geometry_get(nf->gmc, &x, &y, &w, &h); evas_object_move(nf->net_obj, x, y); - /* evas_object_move(nf->chart_obj, x, y); */ evas_object_move(nf->event_obj, x, y); evas_object_resize(nf->net_obj, w, h); - /* evas_object_resize(nf->chart_obj, w, h); */ evas_object_resize(nf->event_obj, w, h); break; case E_GADMAN_CHANGE_RAISE: evas_object_raise(nf->net_obj); - /* evas_object_raise(nf->chart_obj); */ evas_object_raise(nf->event_obj); break; default: break; - } + } } static void @@ -404,7 +424,10 @@ Net_Face *nf; nf = data; - _configure_net_module(nf->con, nf->net); + if (!nf) + return; + + _configure_net_module(nf); } static int @@ -438,7 +461,7 @@ &dummy, &dummy, &dummy, &dummy, &dummy, &out, &dummy, &dummy, &dummy, &dummy, &dummy, &dummy, &dummy) < 17) continue; - if (!strcmp(dev, strdup(nf->net->conf->device))) + if (!strcmp(dev, strdup(nf->conf->device))) { found = 1; break; =================================================================== RCS file: /cvsroot/enlightenment/e_modules/net/e_mod_config.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- e_mod_config.h 19 Feb 2006 18:23:14 -0000 1.1 +++ e_mod_config.h 21 Feb 2006 02:09:49 -0000 1.2 @@ -5,7 +5,7 @@ #include "e_mod_main.h" -void _configure_net_module(E_Container *con, Net *n); +void _configure_net_module(Net_Face *nf); #endif #endif =================================================================== RCS file: /cvsroot/enlightenment/e_modules/net/e_mod_config.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- e_mod_config.c 20 Feb 2006 12:05:35 -0000 1.2 +++ e_mod_config.c 21 Feb 2006 02:09:49 -0000 1.3 @@ -17,12 +17,12 @@ static void _free_data (E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata); static Evas_Object *_basic_create_widgets (E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata); static int _basic_apply_data (E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata); -static void _fill_data (Net *n, E_Config_Dialog_Data *cfdata); +static void _fill_data (Net_Face *nf, E_Config_Dialog_Data *cfdata); static void _net_config_get_devices (Ecore_List *devs); /* Config Calls */ void -_configure_net_module(E_Container *con, Net *n) +_configure_net_module(Net_Face *nf) { E_Config_Dialog *cfd; E_Config_Dialog_View *v; @@ -34,20 +34,20 @@ v->basic.apply_cfdata = _basic_apply_data; v->basic.create_widgets = _basic_create_widgets; - cfd = e_config_dialog_new(con, _("Net Configuration"), NULL, 0, v, n); - n->cfd = cfd; + cfd = e_config_dialog_new(nf->con, _("Net Configuration"), NULL, 0, v, nf); + nf->net->cfd = cfd; } static void -_fill_data(Net *n, E_Config_Dialog_Data *cfdata) +_fill_data(Net_Face *nf, E_Config_Dialog_Data *cfdata) { char *tmp; int i; - cfdata->check_interval = n->conf->check_interval; + cfdata->check_interval = nf->conf->check_interval; - if (n->conf->device != NULL) - cfdata->device = strdup(n->conf->device); + if (nf->conf->device != NULL) + cfdata->device = strdup(nf->conf->device); else cfdata->device = NULL; @@ -77,21 +77,21 @@ _create_data(E_Config_Dialog *cfd) { E_Config_Dialog_Data *cfdata; - Net *n; + Net_Face *nf; - n = cfd->data; + nf = cfd->data; cfdata = E_NEW(E_Config_Dialog_Data, 1); - _fill_data(n, cfdata); + _fill_data(nf, cfdata); return cfdata; } static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) { - Net *n; + Net_Face *nf; - n = cfd->data; - n->cfd = NULL; + nf = cfd->data; + nf->net->cfd = NULL; free(cfdata); } @@ -100,12 +100,9 @@ { Evas_Object *o, *of, *ob, *ot; E_Radio_Group *rg; - Net *n; char *tmp; int i; - n = cfd->data; - o = e_widget_list_add(evas, 0, 0); of = e_widget_framelist_add(evas, _("Device Settings"), 0); ot = e_widget_table_add(evas, 0); @@ -135,20 +132,18 @@ _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) { char *tmp; - Net *n; + Net_Face *nf; - n = cfd->data; - //e_border_button_bindings_ungrab_all(); + nf = cfd->data; tmp = ecore_list_goto_index(cfdata->devs, cfdata->dev_num); if (tmp != NULL) - n->conf->device = (char *)evas_stringshare_add(strdup(tmp)); - n->conf->check_interval = cfdata->check_interval; + nf->conf->device = (char *)evas_stringshare_add(strdup(tmp)); + nf->conf->check_interval = cfdata->check_interval; e_config_save_queue (); - //e_border_button_bindings_grab_all (); - - if (n->face->monitor) - ecore_timer_interval_set(n->face->monitor, (double)cfdata->check_interval); + if (nf->monitor) + ecore_timer_interval_set(nf->monitor, (double)cfdata->check_interval); + return 1; } ------------------------------------------------------- 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