Here's another update for the monitor module in e_modules.
ADDED : Configuration Menus!
ADDED : Support for Interval Changing. Intervals for CPU, Memory, and
Network are all adjustable.
ADDED : Support for Network Interface changing. Monitor now scans for
network interfaces on load and provides a menu with a list.
ADDED : Option to ignore Cache or Buffer memory.
CHANGED : Clean up some more warnings.
TODO : The memory icon needs some cleaning.
BUGS : The configuration currently does not save to disk. If you restart
the monitor, only the position and size (gadman) settings will save. If
anyone would care to lend a hand here, it would be MUCH appreciated. My
EET skills are a bit limited. :-)
Thanks,
--
Ed Presutti (ekrunch on freenode)
--
understand, v.:
To reach a point, in your investigation of some subject, at which
you cease to examine what is really present, and operate on the
basis of your own internal model instead.
Index: e17/apps/e_modules/src/modules/monitor/e_mod_main.c
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e_modules/src/modules/monitor/e_mod_main.c,v
retrieving revision 1.2
diff -b -u -3 -r1.2 e_mod_main.c
--- e17/apps/e_modules/src/modules/monitor/e_mod_main.c 19 Jul 2005 11:38:21 -0000 1.2
+++ e17/apps/e_modules/src/modules/monitor/e_mod_main.c 20 Jul 2005 10:10:42 -0000
@@ -14,6 +14,47 @@
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);
+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,
@@ -38,6 +79,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)
@@ -222,7 +269,6 @@
Evas_Object *o;
Chart_Container *chart_con;
- Flow_Chart *flow_chart;
face = E_NEW(Monitor_Face, 1);
if (!face) return NULL;
@@ -233,9 +279,9 @@
evas_event_freeze(con->bg_evas);
/* setup intervals */
- face->cpu_rate = 1.0;
- face->mem_rate = 1.0;
- face->net_rate = 1.0;
+ face->cpu_interval = 1.0;
+ face->mem_interval = 1.0;
+ face->net_interval = 1.0;
/* setup monitor object */
o = edje_object_add(con->bg_evas);
@@ -264,13 +310,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, face->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 +337,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, face->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, face->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 +375,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, face->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, face->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);
@@ -488,6 +534,13 @@
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);
@@ -514,24 +567,200 @@
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_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->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->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->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->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->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_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->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->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->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->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->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->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->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_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->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->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->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->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->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->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
@@ -612,6 +841,57 @@
}
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->mem_real_ignore_buffers = 0;
+ mem_real_ignore_buffers_set(face->mem_real_ignore_buffers);
+ e_menu_item_toggle_set(mi, face->mem_real_ignore_buffers);
+ }
+ else
+ {
+ /* Check */
+ face->mem_real_ignore_buffers = 1;
+ mem_real_ignore_buffers_set(face->mem_real_ignore_buffers);
+ e_menu_item_toggle_set(mi, face->mem_real_ignore_buffers);
+ }
+}
+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->mem_real_ignore_cached = 0;
+ mem_real_ignore_cached_set(face->mem_real_ignore_cached);
+ e_menu_item_toggle_set(mi, face->mem_real_ignore_cached);
+ }
+ else
+ {
+ /* Check */
+ face->mem_real_ignore_cached = 1;
+ mem_real_ignore_cached_set(face->mem_real_ignore_cached);
+ e_menu_item_toggle_set(mi, face->mem_real_ignore_cached);
+ }
+}
+
+static void
_monitor_face_cb_mouse_down(void *data, Evas *e, Evas_Object *obj,
void *event_info)
{
@@ -652,3 +932,190 @@
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->mem_interval = 1.0;
+ flow_chart_update_rate_set(flow_chart_mem_real, face->mem_interval);
+ flow_chart_update_rate_set(flow_chart_mem_swap, face->mem_interval);
+}
+
+static void
+_monitor_mem_interval_cb_medium(void *data, E_Menu *m,
+ E_Menu_Item *mi)
+{
+ Monitor_Face *face;
+ face = data;
+
+ face->mem_interval = 5.0;
+ flow_chart_update_rate_set(flow_chart_mem_real, face->mem_interval);
+ flow_chart_update_rate_set(flow_chart_mem_swap, face->mem_interval);
+}
+
+static void
+_monitor_mem_interval_cb_normal(void *data, E_Menu *m,
+ E_Menu_Item *mi)
+{
+ Monitor_Face *face;
+ face = data;
+
+ face->mem_interval = 10.0;
+ flow_chart_update_rate_set(flow_chart_mem_real, face->mem_interval);
+ flow_chart_update_rate_set(flow_chart_mem_swap, face->mem_interval);
+}
+
+static void
+_monitor_mem_interval_cb_slow(void *data, E_Menu *m,
+ E_Menu_Item *mi)
+{
+ Monitor_Face *face;
+ face = data;
+
+ face->mem_interval = 30.0;
+ flow_chart_update_rate_set(flow_chart_mem_real, face->mem_interval);
+ flow_chart_update_rate_set(flow_chart_mem_swap, face->mem_interval);
+}
+
+static void
+_monitor_mem_interval_cb_very_slow(void *data, E_Menu *m,
+ E_Menu_Item *mi)
+{
+ Monitor_Face *face;
+ face = data;
+
+ face->mem_interval = 60.0;
+ flow_chart_update_rate_set(flow_chart_mem_real, face->mem_interval);
+ flow_chart_update_rate_set(flow_chart_mem_swap, face->mem_interval);
+}
+
+static void
+_monitor_cpu_interval_cb_fast(void *data, E_Menu *m,
+ E_Menu_Item *mi)
+{
+ Monitor_Face *face;
+ face = data;
+
+ face->cpu_interval = 1.0;
+ flow_chart_update_rate_set(flow_chart_cpu, face->cpu_interval);
+}
+
+static void
+_monitor_cpu_interval_cb_medium(void *data, E_Menu *m,
+ E_Menu_Item *mi)
+{
+ Monitor_Face *face;
+ face = data;
+
+ face->cpu_interval = 5.0;
+ flow_chart_update_rate_set(flow_chart_cpu, face->cpu_interval);
+}
+
+static void
+_monitor_cpu_interval_cb_normal(void *data, E_Menu *m,
+ E_Menu_Item *mi)
+{
+ Monitor_Face *face;
+ face = data;
+
+ face->cpu_interval = 10.0;
+ flow_chart_update_rate_set(flow_chart_cpu, face->cpu_interval);
+}
+
+static void
+_monitor_cpu_interval_cb_slow(void *data, E_Menu *m,
+ E_Menu_Item *mi)
+{
+ Monitor_Face *face;
+ face = data;
+
+ face->cpu_interval = 30.0;
+ flow_chart_update_rate_set(flow_chart_cpu, face->cpu_interval);
+}
+
+static void
+_monitor_cpu_interval_cb_very_slow(void *data, E_Menu *m,
+ E_Menu_Item *mi)
+{
+ Monitor_Face *face;
+ face = data;
+
+ face->cpu_interval = 60.0;
+ flow_chart_update_rate_set(flow_chart_cpu, face->cpu_interval);
+}
+
+static void
+_monitor_net_interval_cb_fast(void *data, E_Menu *m,
+ E_Menu_Item *mi)
+{
+ Monitor_Face *face;
+ face = data;
+
+ face->net_interval = 1.0;
+ flow_chart_update_rate_set(flow_chart_net_in, face->net_interval);
+ flow_chart_update_rate_set(flow_chart_net_out, face->net_interval);
+}
+
+static void
+_monitor_net_interval_cb_medium(void *data, E_Menu *m,
+ E_Menu_Item *mi)
+{
+ Monitor_Face *face;
+ face = data;
+
+ face->net_interval = 5.0;
+ flow_chart_update_rate_set(flow_chart_net_in, face->net_interval);
+ flow_chart_update_rate_set(flow_chart_net_out, face->net_interval);
+}
+
+static void
+_monitor_net_interval_cb_normal(void *data, E_Menu *m,
+ E_Menu_Item *mi)
+{
+ Monitor_Face *face;
+ face = data;
+
+ face->net_interval = 10.0;
+ flow_chart_update_rate_set(flow_chart_net_in, face->net_interval);
+ flow_chart_update_rate_set(flow_chart_net_out, face->net_interval);
+}
+
+static void
+_monitor_net_interval_cb_slow(void *data, E_Menu *m,
+ E_Menu_Item *mi)
+{
+ Monitor_Face *face;
+ face = data;
+
+ face->net_interval = 30.0;
+ flow_chart_update_rate_set(flow_chart_net_in, face->net_interval);
+ flow_chart_update_rate_set(flow_chart_net_out, face->net_interval);
+}
+
+static void
+_monitor_net_interval_cb_very_slow(void *data, E_Menu *m,
+ E_Menu_Item *mi)
+{
+ Monitor_Face *face;
+ face = data;
+
+ face->net_interval = 60.0;
+ flow_chart_update_rate_set(flow_chart_net_in, face->net_interval);
+ flow_chart_update_rate_set(flow_chart_net_out, face->net_interval);
+}
+
+static void
+_monitor_net_interface_cb(void *data, E_Menu *m,
+ E_Menu_Item *mi)
+{
+ Monitor_Face *face;
+ face = data;
+
+ face->net_interface = mi->label;
+ net_interface_set(face->net_interface);
+
+}
Index: e17/apps/e_modules/src/modules/monitor/e_mod_main.h
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e_modules/src/modules/monitor/e_mod_main.h,v
retrieving revision 1.2
diff -b -u -3 -r1.2 e_mod_main.h
--- e17/apps/e_modules/src/modules/monitor/e_mod_main.h 19 Jul 2005 11:38:21 -0000 1.2
+++ e17/apps/e_modules/src/modules/monitor/e_mod_main.h 20 Jul 2005 10:10:42 -0000
@@ -4,6 +4,7 @@
#include <e.h>
+#include <Ecore.h>
#include "flow_chart.h"
#include "linux_2.6.h"
@@ -35,18 +36,29 @@
{
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;
+ double cpu_interval;
+ double mem_interval;
+ double net_interval;
- Chart_Container *chart_cpu, *chart_net, *chart_mem;
+ char *net_interface;
+
+ int mem_real_ignore_cached;
+ int mem_real_ignore_buffers;
+ Chart_Container *chart_cpu, *chart_net, *chart_mem;
E_Gadman_Client *gmc;
};
Index: e17/apps/e_modules/src/modules/monitor/flow_chart.c
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e_modules/src/modules/monitor/flow_chart.c,v
retrieving revision 1.1
diff -b -u -3 -r1.1 flow_chart.c
--- e17/apps/e_modules/src/modules/monitor/flow_chart.c 22 May 2005 03:07:06 -0000 1.1
+++ e17/apps/e_modules/src/modules/monitor/flow_chart.c 20 Jul 2005 10:10:42 -0000
@@ -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);
Index: e17/apps/e_modules/src/modules/monitor/flow_chart.h
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e_modules/src/modules/monitor/flow_chart.h,v
retrieving revision 1.1
diff -b -u -3 -r1.1 flow_chart.h
--- e17/apps/e_modules/src/modules/monitor/flow_chart.h 22 May 2005 03:07:06 -0000 1.1
+++ e17/apps/e_modules/src/modules/monitor/flow_chart.h 20 Jul 2005 10:10:42 -0000
@@ -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;
Index: e17/apps/e_modules/src/modules/monitor/linux_2.6.c
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e_modules/src/modules/monitor/linux_2.6.c,v
retrieving revision 1.3
diff -b -u -3 -r1.3 linux_2.6.c
--- e17/apps/e_modules/src/modules/monitor/linux_2.6.c 19 Jul 2005 11:38:21 -0000 1.3
+++ e17/apps/e_modules/src/modules/monitor/linux_2.6.c 20 Jul 2005 10:10:43 -0000
@@ -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;
}
Index: e17/apps/e_modules/src/modules/monitor/linux_2.6.h
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e_modules/src/modules/monitor/linux_2.6.h,v
retrieving revision 1.2
diff -b -u -3 -r1.2 linux_2.6.h
--- e17/apps/e_modules/src/modules/monitor/linux_2.6.h 19 Jul 2005 11:38:21 -0000 1.2
+++ e17/apps/e_modules/src/modules/monitor/linux_2.6.h 20 Jul 2005 10:10:43 -0000
@@ -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 */