Enlightenment CVS committal Author : handyande Project : e17 Module : apps/e_modules
Dir : e17/apps/e_modules/src/modules/monitor Modified Files: e_mod_main.c e_mod_main.h flow_chart.c flow_chart.h linux_2.6.c linux_2.6.h monitor.edc Log Message: Latest monitor updates from ekrunch =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e_modules/src/modules/monitor/e_mod_main.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- e_mod_main.c 27 Jul 2005 09:57:07 -0000 1.5 +++ e_mod_main.c 31 Jul 2005 19:45:04 -0000 1.6 @@ -9,23 +9,72 @@ static Monitor_Face *_monitor_face_new(E_Container *con); static void _monitor_face_free(Monitor_Face *face); +/* static void _monitor_face_enable(Monitor_Face *face); static void _monitor_face_disable(Monitor_Face *face); +*/ static void _monitor_face_menu_new(Monitor_Face *face); static void _monitor_face_cb_gmc_change(void *data, E_Gadman_Client *gmc, E_Gadman_Change change); +Config_Face * _monitor_face_config_init(Config_Face *conf); +static int _monitor_face_config_cb_timer(void *data); +static void _monitor_mem_real_ignore_buffers_set_cb(void *data, E_Menu *m, + E_Menu_Item *mi); +static void _monitor_mem_real_ignore_cached_set_cb(void *data, E_Menu *m, + E_Menu_Item *mi); + +static void _monitor_mem_interval_cb_fast(void *data, E_Menu *m, + E_Menu_Item *mi); +static void _monitor_mem_interval_cb_medium(void *data, E_Menu *m, + E_Menu_Item *mi); +static void _monitor_mem_interval_cb_normal(void *data, E_Menu *m, + E_Menu_Item *mi); +static void _monitor_mem_interval_cb_slow(void *data, E_Menu *m, + E_Menu_Item *mi); +static void _monitor_mem_interval_cb_very_slow(void *data, E_Menu *m, + E_Menu_Item *mi); + +static void _monitor_cpu_interval_cb_fast(void *data, E_Menu *m, + E_Menu_Item *mi); +static void _monitor_cpu_interval_cb_medium(void *data, E_Menu *m, + E_Menu_Item *mi); +static void _monitor_cpu_interval_cb_normal(void *data, E_Menu *m, + E_Menu_Item *mi); +static void _monitor_cpu_interval_cb_slow(void *data, E_Menu *m, + E_Menu_Item *mi); +static void _monitor_cpu_interval_cb_very_slow(void *data, E_Menu *m, + E_Menu_Item *mi); + +static void _monitor_net_interval_cb_fast(void *data, E_Menu *m, + E_Menu_Item *mi); +static void _monitor_net_interval_cb_medium(void *data, E_Menu *m, + E_Menu_Item *mi); +static void _monitor_net_interval_cb_normal(void *data, E_Menu *m, + E_Menu_Item *mi); +static void _monitor_net_interval_cb_slow(void *data, E_Menu *m, + E_Menu_Item *mi); +static void _monitor_net_interval_cb_very_slow(void *data, E_Menu *m, + E_Menu_Item *mi); +static void _monitor_net_interface_cb(void *data, E_Menu *m, + E_Menu_Item *mi); + + static void _monitor_face_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info); +/* static void _monitor_face_cb_menu_enabled(void *data, E_Menu *m, E_Menu_Item *mi); +*/ static void _monitor_face_cb_menu_edit(void *data, E_Menu *m, E_Menu_Item *mi); +/* static void _monitor_face_cb_mouse_in(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _monitor_face_cb_mouse_out(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _monitor_face_cb_mouse_move(void *data, Evas *e, Evas_Object *obj, void *event_info); +*/ static void _monitor_cpu_text_update_callcack(Flow_Chart *chart, void *data); static void _monitor_mem_real_text_update_callback(Flow_Chart *chart, void *data); @@ -38,6 +87,12 @@ static E_Config_DD *conf_edd; static E_Config_DD *conf_face_edd; +static Flow_Chart *flow_chart_cpu; +static Flow_Chart *flow_chart_net_in; +static Flow_Chart *flow_chart_net_out; +static Flow_Chart *flow_chart_mem_real; +static Flow_Chart *flow_chart_mem_swap; + /* public module routines. all modules must have these */ void * e_modapi_init(E_Module *module) @@ -100,12 +155,36 @@ int e_modapi_about(E_Module *module) { - e_error_dialog_show("Enlightenment Button Module", + e_error_dialog_show("Enlightenment Monitor Module", "A simple module to give E17 a usage monitor " "for some resources."); return 1; } +static int +_monitor_face_config_cb_timer(void *data) +{ + e_error_dialog_show(_("Configuration Upgraded"), + data); + return 0; +} + +Config_Face * +_monitor_face_config_init(Config_Face *conf) +{ + if (!conf) return NULL; + conf->config_version = MONITOR_CONFIG_VERSION; + conf->enabled = 1; + conf->cpu_interval = 1.0; + conf->mem_interval = 1.0; + conf->net_interval = 1.0; + conf->net_interface = strdup("eth0"); + conf->mem_real_ignore_cached = 0; + conf->mem_real_ignore_buffers = 0; + + return conf; +} + /* module private routines */ static Monitor * _monitor_new() @@ -123,7 +202,14 @@ #undef D #define T Config_Face #define D conf_face_edd + E_CONFIG_VAL(D, T, config_version, INT); E_CONFIG_VAL(D, T, enabled, INT); + E_CONFIG_VAL(D, T, cpu_interval, DOUBLE); + E_CONFIG_VAL(D, T, mem_interval, DOUBLE); + E_CONFIG_VAL(D, T, net_interval, DOUBLE); + E_CONFIG_VAL(D, T, net_interface, STR); + E_CONFIG_VAL(D, T, mem_real_ignore_cached, INT); + E_CONFIG_VAL(D, T, mem_real_ignore_buffers, INT); conf_edd = E_CONFIG_DD_NEW("Monitor_Config", Config); #undef T @@ -161,7 +247,7 @@ if (!cl) { face->conf = E_NEW(Config_Face, 1); - face->conf->enabled = 1; + face->conf = _monitor_face_config_init(face->conf); monitor->conf->faces = evas_list_append(monitor->conf->faces, face->conf); @@ -169,6 +255,15 @@ else { face->conf = cl->data; + if (face->conf->config_version != MONITOR_CONFIG_VERSION) + { + face->conf = E_NEW(Config_Face, 1); + face->conf = _monitor_face_config_init(face->conf); + ecore_timer_add(1.0, _monitor_face_config_cb_timer, + _("Configuration data needed upgrading. Your old configuration\n" + "has been removed. Please reset your setting for the monitor\n" + "module. Sorry for the inconvenience.\n")); + } cl = cl->next; } @@ -182,8 +277,35 @@ e_menu_item_submenu_set(mi, face->menu); /* Setup */ + /* if (!face->conf->enabled) _monitor_face_disable(face); + */ + + /* + * Now that init is done, set up intervals, + * interfaces, and memory monitor parameters + * according to the configuration. + */ + mem_real_ignore_buffers_set( + face->conf->mem_real_ignore_buffers); + mem_real_ignore_cached_set( + face->conf->mem_real_ignore_cached); + + net_interface_set( + face->conf->net_interface); + + flow_chart_update_rate_set(flow_chart_cpu, + face->conf->cpu_interval); + flow_chart_update_rate_set(flow_chart_mem_real, + face->conf->mem_interval); + flow_chart_update_rate_set(flow_chart_mem_swap, + face->conf->mem_interval); + flow_chart_update_rate_set(flow_chart_net_in, + face->conf->net_interval); + flow_chart_update_rate_set(flow_chart_net_out, + face->conf->net_interval); + } } } @@ -221,8 +343,16 @@ Monitor_Face *face; Evas_Object *o; + /* + * Configuration cannot be used yet as the face config + * is not initialized. Everything will be updated after + * the init is complete. + */ + double tmp_cpu_interval = 1.0; + double tmp_mem_interval = 1.0; + double tmp_net_interval = 1.0; + Chart_Container *chart_con; - Flow_Chart *flow_chart; face = E_NEW(Monitor_Face, 1); if (!face) return NULL; @@ -232,11 +362,6 @@ evas_event_freeze(con->bg_evas); - /* setup intervals */ - face->cpu_rate = 1.0; - face->mem_rate = 1.0; - face->net_rate = 1.0; - /* setup monitor object */ o = edje_object_add(con->bg_evas); face->monitor_object = o; @@ -264,13 +389,13 @@ evas_object_show(o); /* add cpu chart */ chart_con = chart_container_new(con->bg_evas,0,0,0,0); - flow_chart = flow_chart_new(); - flow_chart_color_set(flow_chart, 33, 100, 220, 255); - flow_chart_get_value_function_set(flow_chart, cpu_usage_get); - flow_chart_update_rate_set(flow_chart, face->cpu_rate); - chart_container_chart_add(chart_con, flow_chart); + flow_chart_cpu = flow_chart_new(); + flow_chart_color_set(flow_chart_cpu, 33, 100, 220, 255); + flow_chart_get_value_function_set(flow_chart_cpu, cpu_usage_get); + flow_chart_update_rate_set(flow_chart_cpu, tmp_cpu_interval); + chart_container_chart_add(chart_con, flow_chart_cpu); face->chart_cpu = chart_con; - flow_chart_callback_set(flow_chart, _monitor_cpu_text_update_callcack, face); + flow_chart_callback_set(flow_chart_cpu, _monitor_cpu_text_update_callcack, face); o = evas_object_rectangle_add(con->bg_evas); face->cpu_ev_obj = o; @@ -291,23 +416,23 @@ evas_object_show(o); /* add mem charts */ chart_con = chart_container_new(con->bg_evas,0,0,0,0); - flow_chart = flow_chart_new(); - flow_chart_color_set(flow_chart, 213, 91, 91, 255); - flow_chart_get_value_function_set(flow_chart, mem_real_usage_get); - flow_chart_update_rate_set(flow_chart, face->mem_rate); - chart_container_chart_add(chart_con, flow_chart); + flow_chart_mem_real = flow_chart_new(); + flow_chart_color_set(flow_chart_mem_real, 213, 91, 91, 255); + flow_chart_get_value_function_set(flow_chart_mem_real, mem_real_usage_get); + flow_chart_update_rate_set(flow_chart_mem_real, tmp_mem_interval); + chart_container_chart_add(chart_con, flow_chart_mem_real); face->chart_mem = chart_con; - flow_chart_callback_set(flow_chart, _monitor_mem_real_text_update_callback, - face); + flow_chart_callback_set(flow_chart_mem_real, + _monitor_mem_real_text_update_callback, face); - flow_chart = flow_chart_new(); - flow_chart_color_set(flow_chart, 51, 181, 69, 255); - flow_chart_get_value_function_set(flow_chart, mem_swap_usage_get); - flow_chart_update_rate_set(flow_chart, face->mem_rate); - flow_chart_alignment_set(flow_chart, 0); - chart_container_chart_add(chart_con, flow_chart); - flow_chart_callback_set(flow_chart, _monitor_mem_swap_text_update_callback, - face); + flow_chart_mem_swap = flow_chart_new(); + flow_chart_color_set(flow_chart_mem_swap, 51, 181, 69, 255); + flow_chart_get_value_function_set(flow_chart_mem_swap, mem_swap_usage_get); + flow_chart_update_rate_set(flow_chart_mem_swap, tmp_mem_interval); + flow_chart_alignment_set(flow_chart_mem_swap, 0); + chart_container_chart_add(chart_con, flow_chart_mem_swap); + flow_chart_callback_set(flow_chart_mem_swap, + _monitor_mem_swap_text_update_callback, face); o = evas_object_rectangle_add(con->bg_evas); @@ -329,23 +454,23 @@ evas_object_show(o); /* add net charts */ chart_con = chart_container_new(con->bg_evas,0,0,0,0); - flow_chart = flow_chart_new(); - flow_chart_color_set(flow_chart, 213, 91, 91, 255); - flow_chart_get_value_function_set(flow_chart, net_in_usage_get); - flow_chart_update_rate_set(flow_chart, face->net_rate); - chart_container_chart_add(chart_con, flow_chart); + flow_chart_net_in = flow_chart_new(); + flow_chart_color_set(flow_chart_net_in, 213, 91, 91, 255); + flow_chart_get_value_function_set(flow_chart_net_in, net_in_usage_get); + flow_chart_update_rate_set(flow_chart_net_in, tmp_net_interval); + chart_container_chart_add(chart_con, flow_chart_net_in); face->chart_net = chart_con; - flow_chart_callback_set(flow_chart, _monitor_net_in_text_update_callcack, - face); + flow_chart_callback_set(flow_chart_net_in, + _monitor_net_in_text_update_callcack, face); - flow_chart = flow_chart_new(); - flow_chart_color_set(flow_chart, 51, 181, 69, 255); - flow_chart_get_value_function_set(flow_chart, net_out_usage_get); - flow_chart_update_rate_set(flow_chart, face->net_rate); - flow_chart_alignment_set(flow_chart, 0); - chart_container_chart_add(chart_con, flow_chart); - flow_chart_callback_set(flow_chart, _monitor_net_out_text_update_callcack, - face); + flow_chart_net_out = flow_chart_new(); + flow_chart_color_set(flow_chart_net_out, 51, 181, 69, 255); + flow_chart_get_value_function_set(flow_chart_net_out, net_out_usage_get); + flow_chart_update_rate_set(flow_chart_net_out, tmp_net_interval); + flow_chart_alignment_set(flow_chart_net_out, 0); + chart_container_chart_add(chart_con, flow_chart_net_out); + flow_chart_callback_set(flow_chart_net_out, + _monitor_net_out_text_update_callcack, face); o = evas_object_rectangle_add(con->bg_evas); @@ -394,16 +519,16 @@ Monitor_Face *face; char buf[64]; - long bytes = mem_real_get(); + long kbytes = mem_real_get(); face = data; - if (bytes > 1048576 ) - snprintf(buf, 64, "%ldMB", bytes/1048576); - else if (bytes > 1024 && bytes < 1048576 ) - snprintf(buf, 64, "%ldKB", bytes/1024); + if (kbytes > 1048576 ) + snprintf(buf, 64, "%ldGB", kbytes/1048576); + else if (kbytes > 1024 && kbytes < 1048576 ) + snprintf(buf, 64, "%ldMB", kbytes/1024); else - snprintf(buf, 64, "%ldB", bytes); + snprintf(buf, 64, "%ldKB", kbytes); edje_object_part_text_set(face->mem, "mem-real-text", buf); } @@ -414,16 +539,16 @@ Monitor_Face *face; char buf[64]; - long bytes = mem_swap_get(); + long kbytes = mem_swap_get(); face = data; - if (bytes > 1048576 ) - snprintf(buf, 64, "%ldMB", bytes/1048576); - else if (bytes > 1024 && bytes < 1048576 ) - snprintf(buf, 64, "%ldKB", bytes/1024); + if (kbytes > 1048576 ) + snprintf(buf, 64, "%ldGB", kbytes/1048576); + else if (kbytes > 1024 && kbytes < 1048576 ) + snprintf(buf, 64, "%ldMB", kbytes/1024); else - snprintf(buf, 64, "%ldB", bytes); + snprintf(buf, 64, "%ldKB", kbytes); edje_object_part_text_set(face->mem, "mem-swap-text", buf); } @@ -488,13 +613,21 @@ if (face->monitor_object) evas_object_del(face->monitor_object); if (face->table_object) evas_object_del(face->table_object); + e_object_del(E_OBJECT(face->menu_network_interface)); + e_object_del(E_OBJECT(face->menu_network_interval)); + e_object_del(E_OBJECT(face->menu_network)); + e_object_del(E_OBJECT(face->menu_memory_interval)); + e_object_del(E_OBJECT(face->menu_memory)); + e_object_del(E_OBJECT(face->menu_cpu_interval)); + e_object_del(E_OBJECT(face->menu_cpu)); e_object_del(E_OBJECT(face->menu)); + free(face->conf->net_interface); free(face->conf); free(face); _monitor_count--; } - +/* static void _monitor_face_enable(Monitor_Face *face) { @@ -510,28 +643,214 @@ //evas_object_hide(face->reset_object); e_config_save_queue(); } - +*/ static void _monitor_face_menu_new(Monitor_Face *face) { - E_Menu *mn; E_Menu_Item *mi; + Ecore_List* interfaces = NULL; + int interface_count = 0; + char* interface_name = NULL; + + /* Setup Menus */ + face->menu = e_menu_new(); + face->menu_cpu = e_menu_new(); + face->menu_cpu_interval = e_menu_new(); + face->menu_memory = e_menu_new(); + face->menu_memory_interval = e_menu_new(); + face->menu_network = e_menu_new(); + face->menu_network_interval = e_menu_new(); + face->menu_network_interface = e_menu_new(); + + /* Main Menu Items */ + mi = e_menu_item_new(face->menu); + e_menu_item_label_set(mi, _("Edit Mode")); + e_menu_item_callback_set(mi, _monitor_face_cb_menu_edit, face); - mn = e_menu_new(); - face->menu = mn; + /* CPU Menu */ + mi = e_menu_item_new(face->menu); + e_menu_item_label_set(mi, _("CPU")); + e_menu_item_icon_edje_set(mi, PACKAGE_LIB_DIR + "/e_modules/monitor/monitor.edj", + "monitor/menu/cpu"); + e_menu_item_submenu_set(mi, face->menu_cpu); + + mi = e_menu_item_new(face->menu_cpu); + e_menu_item_label_set(mi, _("Set Interval")); + e_menu_item_submenu_set(mi, face->menu_cpu_interval); + + /* CPU Menu Items */ + mi = e_menu_item_new(face->menu_cpu_interval); + e_menu_item_label_set(mi, _("Check Fast (1 sec)")); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 1); + if (face->conf->cpu_interval == 1.0) e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _monitor_cpu_interval_cb_fast, face); + + mi = e_menu_item_new(face->menu_cpu_interval); + e_menu_item_label_set(mi, _("Check Medium (5 sec)")); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 1); + if (face->conf->cpu_interval == 5.0) e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _monitor_cpu_interval_cb_medium, face); + + mi = e_menu_item_new(face->menu_cpu_interval); + e_menu_item_label_set(mi, _("Check Normal (10 sec)")); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 1); + if (face->conf->cpu_interval == 10.0) e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _monitor_cpu_interval_cb_normal, face); + + mi = e_menu_item_new(face->menu_cpu_interval); + e_menu_item_label_set(mi, _("Check Slow (30 sec)")); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 1); + if (face->conf->cpu_interval == 30.0) e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _monitor_cpu_interval_cb_slow, face); + + mi = e_menu_item_new(face->menu_cpu_interval); + e_menu_item_label_set(mi, _("Check Very Slow (60 sec)")); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 1); + if (face->conf->cpu_interval == 60.0) e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _monitor_cpu_interval_cb_very_slow, face); + + /* Memory Menu */ + mi = e_menu_item_new(face->menu); + e_menu_item_label_set(mi, _("Memory")); + e_menu_item_icon_edje_set(mi, PACKAGE_LIB_DIR + "/e_modules/monitor/monitor.edj", + "monitor/menu/mem"); + e_menu_item_submenu_set(mi, face->menu_memory); + + mi = e_menu_item_new(face->menu_memory); + e_menu_item_label_set(mi, _("Set Interval")); + e_menu_item_submenu_set(mi, face->menu_memory_interval); + + /* Memory Interval Menu Items */ + mi = e_menu_item_new(face->menu_memory_interval); + e_menu_item_label_set(mi, _("Check Fast (1 sec)")); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 1); + if (face->conf->mem_interval == 1.0) e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _monitor_mem_interval_cb_fast, face); + + mi = e_menu_item_new(face->menu_memory_interval); + e_menu_item_label_set(mi, _("Check Medium (5 sec)")); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 1); + if (face->conf->mem_interval == 5.0) e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _monitor_mem_interval_cb_medium, face); + + mi = e_menu_item_new(face->menu_memory_interval); + e_menu_item_label_set(mi, _("Check Normal (10 sec)")); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 1); + if (face->conf->mem_interval == 10.0) e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _monitor_mem_interval_cb_normal, face); + + mi = e_menu_item_new(face->menu_memory_interval); + e_menu_item_label_set(mi, _("Check Slow (30 sec)")); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 1); + if (face->conf->mem_interval == 30.0) e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _monitor_mem_interval_cb_slow, face); + + mi = e_menu_item_new(face->menu_memory_interval); + e_menu_item_label_set(mi, _("Check Very Slow (60 sec)")); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 1); + if (face->conf->mem_interval == 60.0) e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _monitor_mem_interval_cb_very_slow, face); + + /* Memory Menu Items */ + mi = e_menu_item_new(face->menu_memory); + e_menu_item_label_set(mi, _("Ignore Cached")); + e_menu_item_check_set(mi, 1); + if (face->conf->mem_real_ignore_cached) e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _monitor_mem_real_ignore_cached_set_cb, face); - /* Enabled - mi = e_menu_item_new(mn); - e_menu_item_label_set(mi, "Enabled"); + mi = e_menu_item_new(face->menu_memory); + e_menu_item_label_set(mi, _("Ignore Buffers")); e_menu_item_check_set(mi, 1); - if (face->conf->enabled) e_menu_item_toggle_set(mi, 1); - e_menu_item_callback_set(mi, _monitor_face_cb_menu_enabled, face); - //*/ - - /* Edit */ - mi = e_menu_item_new(mn); - e_menu_item_label_set(mi, "Edit Mode"); - e_menu_item_callback_set(mi, _monitor_face_cb_menu_edit, face); + if (face->conf->mem_real_ignore_buffers) e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _monitor_mem_real_ignore_buffers_set_cb, face); + + /* Network Menu */ + mi = e_menu_item_new(face->menu); + e_menu_item_label_set(mi, _("Network")); + e_menu_item_icon_edje_set(mi, PACKAGE_LIB_DIR + "/e_modules/monitor/monitor.edj", + "monitor/menu/net"); + e_menu_item_submenu_set(mi, face->menu_network); + + mi = e_menu_item_new(face->menu_network); + e_menu_item_label_set(mi, _("Set Interval")); + e_menu_item_submenu_set(mi, face->menu_network_interval); + + mi = e_menu_item_new(face->menu_network); + e_menu_item_label_set(mi, _("Select Interface")); + e_menu_item_submenu_set(mi, face->menu_network_interface); + + interfaces = ecore_list_new (); + interface_count = net_interfaces_get (interfaces); + + ecore_list_goto_first(interfaces); + + while ((interface_name = ecore_list_current(interfaces))) + { + + mi = e_menu_item_new(face->menu_network_interface); + e_menu_item_label_set(mi, _(interface_name)); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 1); + if (face->conf->net_interface) + if (!strcmp(face->conf->net_interface, interface_name)) + e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _monitor_net_interface_cb, face); + + free(interface_name); + ecore_list_remove(interfaces); + } + + ecore_list_destroy(interfaces); + + /* Network Menu Items */ + mi = e_menu_item_new(face->menu_network_interval); + e_menu_item_label_set(mi, _("Check Fast (1 sec)")); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 1); + if (face->conf->net_interval == 1.0) e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _monitor_net_interval_cb_fast, face); + + mi = e_menu_item_new(face->menu_network_interval); + e_menu_item_label_set(mi, _("Check Medium (5 sec)")); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 1); + if (face->conf->net_interval == 5.0) e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _monitor_net_interval_cb_medium, face); + + mi = e_menu_item_new(face->menu_network_interval); + e_menu_item_label_set(mi, _("Check Normal (10 sec)")); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 1); + if (face->conf->net_interval == 10.0) e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _monitor_net_interval_cb_normal, face); + + mi = e_menu_item_new(face->menu_network_interval); + e_menu_item_label_set(mi, _("Check Slow (30 sec)")); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 1); + if (face->conf->net_interval == 30.0) e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _monitor_net_interval_cb_slow, face); + + mi = e_menu_item_new(face->menu_network_interval); + e_menu_item_label_set(mi, _("Check Very Slow (60 sec)")); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 1); + if (face->conf->net_interval == 60.0) e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _monitor_net_interval_cb_very_slow, face); + } static void @@ -583,7 +902,7 @@ break; } } - +/* static void _monitor_face_cb_menu_enabled(void *data, E_Menu *m, E_Menu_Item *mi) { @@ -601,7 +920,7 @@ _monitor_face_enable(face); } } - +*/ static void _monitor_face_cb_menu_edit(void *data, E_Menu *m, E_Menu_Item *mi) { @@ -612,6 +931,59 @@ } static void +_monitor_mem_real_ignore_buffers_set_cb(void *data, E_Menu *m, + E_Menu_Item *mi) +{ + Monitor_Face *face; + + face = data; + unsigned char enabled; + + enabled = e_menu_item_toggle_get(mi); + + if (!enabled) { + /* Uncheck */ + face->conf->mem_real_ignore_buffers = 0; + mem_real_ignore_buffers_set(face->conf->mem_real_ignore_buffers); + e_menu_item_toggle_set(mi, face->conf->mem_real_ignore_buffers); + } + else + { + /* Check */ + face->conf->mem_real_ignore_buffers = 1; + mem_real_ignore_buffers_set(face->conf->mem_real_ignore_buffers); + e_menu_item_toggle_set(mi, face->conf->mem_real_ignore_buffers); + } + e_config_save_queue(); +} +static void +_monitor_mem_real_ignore_cached_set_cb(void *data, E_Menu *m, + E_Menu_Item *mi) +{ + Monitor_Face *face; + + face = data; + unsigned char enabled; + + enabled = e_menu_item_toggle_get(mi); + + if (!enabled) { + /* Uncheck */ + face->conf->mem_real_ignore_cached = 0; + mem_real_ignore_cached_set(face->conf->mem_real_ignore_cached); + e_menu_item_toggle_set(mi, face->conf->mem_real_ignore_cached); + } + else + { + /* Check */ + face->conf->mem_real_ignore_cached = 1; + mem_real_ignore_cached_set(face->conf->mem_real_ignore_cached); + e_menu_item_toggle_set(mi, face->conf->mem_real_ignore_cached); + } + e_config_save_queue(); +} + +static void _monitor_face_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info) { @@ -640,7 +1012,7 @@ } */ } - +/* static void _monitor_face_cb_mouse_in(void *data, Evas *e, Evas_Object *obj, void *event_info) @@ -652,3 +1024,205 @@ void *event_info) { } +*/ +static void +_monitor_mem_interval_cb_fast(void *data, E_Menu *m, + E_Menu_Item *mi) +{ + Monitor_Face *face; + face = data; + + face->conf->mem_interval = 1.0; + flow_chart_update_rate_set(flow_chart_mem_real, face->conf->mem_interval); + flow_chart_update_rate_set(flow_chart_mem_swap, face->conf->mem_interval); + e_config_save_queue(); +} + +static void +_monitor_mem_interval_cb_medium(void *data, E_Menu *m, + E_Menu_Item *mi) +{ + Monitor_Face *face; + face = data; + + face->conf->mem_interval = 5.0; + flow_chart_update_rate_set(flow_chart_mem_real, face->conf->mem_interval); + flow_chart_update_rate_set(flow_chart_mem_swap, face->conf->mem_interval); + e_config_save_queue(); +} + +static void +_monitor_mem_interval_cb_normal(void *data, E_Menu *m, + E_Menu_Item *mi) +{ + Monitor_Face *face; + face = data; + + face->conf->mem_interval = 10.0; + flow_chart_update_rate_set(flow_chart_mem_real, face->conf->mem_interval); + flow_chart_update_rate_set(flow_chart_mem_swap, face->conf->mem_interval); + e_config_save_queue(); +} + +static void +_monitor_mem_interval_cb_slow(void *data, E_Menu *m, + E_Menu_Item *mi) +{ + Monitor_Face *face; + face = data; + + face->conf->mem_interval = 30.0; + flow_chart_update_rate_set(flow_chart_mem_real, face->conf->mem_interval); + flow_chart_update_rate_set(flow_chart_mem_swap, face->conf->mem_interval); + e_config_save_queue(); +} + +static void +_monitor_mem_interval_cb_very_slow(void *data, E_Menu *m, + E_Menu_Item *mi) +{ + Monitor_Face *face; + face = data; + + face->conf->mem_interval = 60.0; + flow_chart_update_rate_set(flow_chart_mem_real, face->conf->mem_interval); + flow_chart_update_rate_set(flow_chart_mem_swap, face->conf->mem_interval); + e_config_save_queue(); +} + +static void +_monitor_cpu_interval_cb_fast(void *data, E_Menu *m, + E_Menu_Item *mi) +{ + Monitor_Face *face; + face = data; + + face->conf->cpu_interval = 1.0; + flow_chart_update_rate_set(flow_chart_cpu, face->conf->cpu_interval); + e_config_save_queue(); +} + +static void +_monitor_cpu_interval_cb_medium(void *data, E_Menu *m, + E_Menu_Item *mi) +{ + Monitor_Face *face; + face = data; + + face->conf->cpu_interval = 5.0; + flow_chart_update_rate_set(flow_chart_cpu, face->conf->cpu_interval); + e_config_save_queue(); +} + +static void +_monitor_cpu_interval_cb_normal(void *data, E_Menu *m, + E_Menu_Item *mi) +{ + Monitor_Face *face; + face = data; + + face->conf->cpu_interval = 10.0; + flow_chart_update_rate_set(flow_chart_cpu, face->conf->cpu_interval); + e_config_save_queue(); +} + +static void +_monitor_cpu_interval_cb_slow(void *data, E_Menu *m, + E_Menu_Item *mi) +{ + Monitor_Face *face; + face = data; + + face->conf->cpu_interval = 30.0; + flow_chart_update_rate_set(flow_chart_cpu, face->conf->cpu_interval); + e_config_save_queue(); +} + +static void +_monitor_cpu_interval_cb_very_slow(void *data, E_Menu *m, + E_Menu_Item *mi) +{ + Monitor_Face *face; + face = data; + + face->conf->cpu_interval = 60.0; + flow_chart_update_rate_set(flow_chart_cpu, face->conf->cpu_interval); + e_config_save_queue(); +} + +static void +_monitor_net_interval_cb_fast(void *data, E_Menu *m, + E_Menu_Item *mi) +{ + Monitor_Face *face; + face = data; + + face->conf->net_interval = 1.0; + flow_chart_update_rate_set(flow_chart_net_in, face->conf->net_interval); + flow_chart_update_rate_set(flow_chart_net_out, face->conf->net_interval); + e_config_save_queue(); +} + +static void +_monitor_net_interval_cb_medium(void *data, E_Menu *m, + E_Menu_Item *mi) +{ + Monitor_Face *face; + face = data; + + face->conf->net_interval = 5.0; + flow_chart_update_rate_set(flow_chart_net_in, face->conf->net_interval); + flow_chart_update_rate_set(flow_chart_net_out, face->conf->net_interval); + e_config_save_queue(); +} + +static void +_monitor_net_interval_cb_normal(void *data, E_Menu *m, + E_Menu_Item *mi) +{ + Monitor_Face *face; + face = data; + + face->conf->net_interval = 10.0; + flow_chart_update_rate_set(flow_chart_net_in, face->conf->net_interval); + flow_chart_update_rate_set(flow_chart_net_out, face->conf->net_interval); + e_config_save_queue(); +} + +static void +_monitor_net_interval_cb_slow(void *data, E_Menu *m, + E_Menu_Item *mi) +{ + Monitor_Face *face; + face = data; + + face->conf->net_interval = 30.0; + flow_chart_update_rate_set(flow_chart_net_in, face->conf->net_interval); + flow_chart_update_rate_set(flow_chart_net_out, face->conf->net_interval); + e_config_save_queue(); +} + +static void +_monitor_net_interval_cb_very_slow(void *data, E_Menu *m, + E_Menu_Item *mi) +{ + Monitor_Face *face; + face = data; + + face->conf->net_interval = 60.0; + flow_chart_update_rate_set(flow_chart_net_in, face->conf->net_interval); + flow_chart_update_rate_set(flow_chart_net_out, face->conf->net_interval); + e_config_save_queue(); +} + +static void +_monitor_net_interface_cb(void *data, E_Menu *m, + E_Menu_Item *mi) +{ + Monitor_Face *face; + face = data; + + face->conf->net_interface = strdup(mi->label); + net_interface_set(face->conf->net_interface); + e_config_save_queue(); +} =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e_modules/src/modules/monitor/e_mod_main.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- e_mod_main.h 19 Jul 2005 11:38:21 -0000 1.2 +++ e_mod_main.h 31 Jul 2005 19:45:04 -0000 1.3 @@ -4,10 +4,13 @@ #include <e.h> +#include <Ecore.h> #include "flow_chart.h" #include "linux_2.6.h" +#define MONITOR_CONFIG_VERSION 100 + typedef struct _Config Config; typedef struct _Config_Face Config_Face; typedef struct _Monitor Monitor; @@ -20,7 +23,17 @@ struct _Config_Face { + int config_version; unsigned char enabled; + + double cpu_interval; + double mem_interval; + double net_interval; + + char *net_interface; + + int mem_real_ignore_cached; + int mem_real_ignore_buffers; }; struct _Monitor @@ -35,19 +48,21 @@ { E_Container *con; E_Menu *menu; + E_Menu *menu_cpu; + E_Menu *menu_cpu_interval; + E_Menu *menu_memory; + E_Menu *menu_memory_interval; + E_Menu *menu_network; + E_Menu *menu_network_interval; + E_Menu *menu_network_interface; Config_Face *conf; Evas_Object *cpu, *net, *mem; Evas_Object *cpu_ev_obj, *net_ev_obj, *mem_ev_obj; Evas_Object *table_object, *monitor_object; - double cpu_rate; - double mem_rate; - double net_rate; - Chart_Container *chart_cpu, *chart_net, *chart_mem; - E_Gadman_Client *gmc; }; =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e_modules/src/modules/monitor/flow_chart.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- flow_chart.c 23 Jul 2005 04:00:43 -0000 1.2 +++ flow_chart.c 31 Jul 2005 19:45:04 -0000 1.3 @@ -7,7 +7,8 @@ { Flow_Chart *chart = (Flow_Chart *)data; - Evas_Object *o, *last; + Evas_Object *o; + Evas_Object *last = NULL; Evas_List *l; int i, j = 0; int value = 0, text_value = 0; @@ -64,7 +65,7 @@ for(i = x+w; l && j - 2 < w - dist_right - dist_left; l = l->next, j++) { - Evas_Coord x,y; + Evas_Coord y; Evas_Object *lo; lo = (Evas_Object *)evas_list_data(l); =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e_modules/src/modules/monitor/flow_chart.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- flow_chart.h 22 May 2005 03:07:06 -0000 1.1 +++ flow_chart.h 31 Jul 2005 19:45:04 -0000 1.2 @@ -1,6 +1,7 @@ #include <Ecore.h> #include <Evas.h> +#include <Edje.h> typedef struct _Chart_Container Chart_Container; typedef struct _Flow_Chart Flow_Chart; =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e_modules/src/modules/monitor/linux_2.6.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- linux_2.6.c 19 Jul 2005 11:38:21 -0000 1.3 +++ linux_2.6.c 31 Jul 2005 19:45:04 -0000 1.4 @@ -14,7 +14,7 @@ return -1; while (fscanf (stat, "cp%s %*u %*u %*u %*u %*u %*u %*u %*u\n", - &tmp) == 1) + (char *)&tmp) == 1) { cpu++; } @@ -103,7 +103,7 @@ long bytes_out = 0; int in_usage = 0; int out_usage = 0; - +int interface_changed = 1; int get_net_input_output(unsigned long *in, unsigned long *out, const char *dev) @@ -160,6 +160,19 @@ unsigned long r_total = 0, t_total = 0; + if (interface_changed) + { + /* Interface Changed, reset counters! */ + interface_changed = 0; + old_r_total = 0; + old_t_total = 0; + bytes_in = 0; + bytes_out = 0; + in_usage = 0; + out_usage = 0; + return; + } + if ((get_net_input_output( &r_total, &t_total, net_dev)) == -1) { in_usage = -1; @@ -214,15 +227,74 @@ return out_usage; } +void net_interface_set(char* interface_name) +{ + /* Change Network Interface */ + net_dev = interface_name; + interface_changed = 1; +} + +int +net_interfaces_get(Ecore_List * ifaces) +{ + unsigned long int dummy; + + char *iface; + char buf[256]; + FILE *stat; + int iface_count = 0; + int x = 0; + + stat = fopen ("/proc/net/dev", "r"); + if (!stat) return 0; + + while (fgets (buf, 256, stat)) + { + int i = 0; + + /* remove : */ + for(; buf[i] != 0; i++) + if(buf[i] == ':')buf[i] = ' '; + + iface = (char *)malloc(sizeof(char) * 64); + x = sscanf (buf, + "%s %*u %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu" + "%lu %lu %lu %lu %lu\n", iface, &dummy, &dummy, + &dummy, &dummy, &dummy, &dummy, &dummy, &dummy, + &dummy, &dummy, &dummy, &dummy, &dummy, &dummy, + &dummy, &dummy); + if (x >= 16) + { + ecore_list_append(ifaces, iface); + iface_count++; + } + } + fclose (stat); + + return iface_count; + +} + long mem_real = 0; long mem_swap = 0; int mem_real_usage = 0; int mem_swap_usage = 0; - +int mem_real_ignore_buffers = 0; +int mem_real_ignore_cached = 0; /* Begin memory monitor code */ -void memory_check(int ignore_buffers, int ignore_cached) +void mem_real_ignore_buffers_set(int ignore_buffers) +{ + mem_real_ignore_buffers = ignore_buffers; +} + +void mem_real_ignore_cached_set(int ignore_cached) +{ + mem_real_ignore_cached = ignore_cached; +} + +void memory_check(void) { FILE *pmeminfo = NULL; int cursor = 0; @@ -251,11 +323,11 @@ mtotal = value; else if (strcmp(field, "MemFree:") == 0) mfree = value; - else if (ignore_buffers && strcmp(field, "Buffers:") == 0) + else if (mem_real_ignore_buffers && strcmp(field, "Buffers:") == 0) mfree += value; - else if (ignore_cached && strcmp(field, "Cached:") == 0) + else if (mem_real_ignore_cached && strcmp(field, "Cached:") == 0) mfree += value; - else if (ignore_cached && strcmp(field, "SwapCached:") == 0) + else if (mem_real_ignore_cached && strcmp(field, "SwapCached:") == 0) sfree += value; else if (strcmp(field, "SwapTotal:") == 0) stotal = value; @@ -307,10 +379,7 @@ int mem_real_usage_get(void) { - /* FIXME - * Need a menu option to change the ignore buffers and ignore cache options - */ - memory_check(0, 0); + memory_check(); return mem_real_usage; } =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e_modules/src/modules/monitor/linux_2.6.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- linux_2.6.h 19 Jul 2005 11:38:21 -0000 1.2 +++ linux_2.6.h 31 Jul 2005 19:45:04 -0000 1.3 @@ -5,6 +5,7 @@ #include <stdio.h> #include <string.h> #include <stdlib.h> +#include <Ecore.h> int cpu_usage_get(void); @@ -13,10 +14,15 @@ int mem_real_usage_get(void); int mem_swap_usage_get(void); +void mem_real_ignore_buffers_set(int ignore_buffers); +void mem_real_ignore_cached_set(int ignore_cached); + int net_in_usage_get(void); long net_bytes_in_get(void); int net_out_usage_get(void); long net_bytes_out_get(void); +int net_interfaces_get(Ecore_List * ifaces); +void net_interface_set(char* interface_name); #endif /* LINUX_2_6 */ =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e_modules/src/modules/monitor/monitor.edc,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- monitor.edc 19 Jul 2005 11:38:21 -0000 1.2 +++ monitor.edc 31 Jul 2005 19:45:04 -0000 1.3 @@ -18,6 +18,49 @@ { group { + name, "monitor/menu/cpu"; + parts { + part { + name, "background"; + mouse_events, 0; + description { + state, "default" 0.0; + image { normal, "cpu.png"; border, 0 0 0 0; } + fill { smooth, 0; } + } + } + } + }//close group menu/cpu + group { + name, "monitor/menu/mem"; + parts { + part { + name, "background"; + mouse_events, 0; + description { + state, "default" 0.0; + image { normal, "memory.png"; border, 0 0 0 0; } + fill { smooth, 0; } + } + } + } + }//close group mem + group { + name, "monitor/menu/net"; + parts { + part { + name, "background"; + mouse_events, 0; + description { + state, "default" 0.0; + image { normal, "eth_dev.png"; border, 0 0 0 0; } + fill { smooth, 0; } + } + } + } + }//close group net + + group { name, "monitor/main"; parts { ------------------------------------------------------- SF.Net email is sponsored by: Discover Easy Linux Migration Strategies from IBM. Find simple to follow Roadmaps, straightforward articles, informative Webcasts and more! Get everything you need to get up to speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs