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

Reply via email to