Enlightenment CVS committal

Author  : devilhorns
Project : e_modules
Module  : cpu

Dir     : e_modules/cpu


Modified Files:
        Makefile.am autogen.sh configure.in cpu.edc cpu.png 
        e_mod_main.c e_mod_main.h module.eap 
Removed Files:
        e_mod_config.c e_mod_config.h 


Log Message:
Cpu in the shelf.
Removes gadman errors.
Removed the graph until I get something better for this.
Just displays text for now.
Need to remove old module.cpu.cfg for this to work.

===================================================================
RCS file: /cvs/e/e_modules/cpu/Makefile.am,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -3 -r1.10 -r1.11
--- Makefile.am 15 Jul 2006 12:56:40 -0000      1.10
+++ Makefile.am 30 Aug 2006 18:08:52 -0000      1.11
@@ -1,6 +1,4 @@
-MAINTAINERCLEANFILES = Makefile.in e_modules-cpu.spec
-
-SUBDIRS = po
+MAINTAINERCLEANFILES = Makefile.in
 
 EDJE_CC = @edje_cc@
 EDJE_FLAGS = -v \
@@ -16,9 +14,7 @@
 cpu.edc \
 VeraMono.ttf \
 cpu.png \
-module.eap \
-e_modules-cpu.spec \
-e_modules-cpu.spec.in 
+module.eap
 
 # data files for the module
 filesdir = $(datadir)
@@ -32,11 +28,9 @@
 pkgdir                 = $(datadir)/$(MODULE_ARCH)
 pkg_LTLIBRARIES        = module.la
 module_la_SOURCES      = e_mod_main.c \
-                      e_mod_main.h \
-                      e_mod_config.c \
-                      e_mod_config.h
+                      e_mod_main.h
 
-module_la_LIBADD       = @e_libs@ -lm
+module_la_LIBADD       = @e_libs@
 module_la_LDFLAGS      = -module -avoid-version
 module_la_DEPENDENCIES = $(top_builddir)/config.h
 
===================================================================
RCS file: /cvs/e/e_modules/cpu/autogen.sh,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- autogen.sh  9 Mar 2006 11:36:10 -0000       1.2
+++ autogen.sh  30 Aug 2006 18:08:52 -0000      1.3
@@ -3,24 +3,11 @@
 rm -rf autom4te.cache
 rm -f aclocal.m4 ltmain.sh
 
-touch README
-
 echo "Running aclocal..." ; aclocal $ACLOCAL_FLAGS || exit 1
 echo "Running autoheader..." ; autoheader || exit 1
 echo "Running autoconf..." ; autoconf || exit 1
 echo "Running libtoolize..." ; (libtoolize --copy --automake || glibtoolize 
--automake) || exit 1
 echo "Running automake..." ; automake --add-missing --copy --gnu || exit 1
-echo "Generating gettext cpu.pot template"; \
-xgettext \
---output cpu.pot \
---output-dir=po \
---language=C \
---add-location \
---keyword=D_ \
---sort-by-file \
---copyright-holder="TODO" \
---foreign-user \
-`find . -name "*.[ch]" -print` || exit 1
 
 if [ -z "$NOCONFIGURE" ]; then
        ./configure "$@"
===================================================================
RCS file: /cvs/e/e_modules/cpu/configure.in,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -3 -r1.13 -r1.14
--- configure.in        25 Jul 2006 13:30:15 -0000      1.13
+++ configure.in        30 Aug 2006 18:08:52 -0000      1.14
@@ -17,12 +17,6 @@
 AM_ENABLE_SHARED
 AM_PROG_LIBTOOL
 
-ALL_LINGUAS="bg eo fi it sv ja ru"
-AC_SUBST(ALL_LINGUAS)
-
-AM_GNU_GETTEXT([external])
-AM_GNU_GETTEXT_VERSION(0.14)
-
 MODULE_ARCH="$host_os-$host_cpu"
 AC_SUBST(MODULE_ARCH)
 AC_DEFINE_UNQUOTED(MODULE_ARCH, "$MODULE_ARCH", "Module architecture")
@@ -148,8 +142,6 @@
 
 AC_OUTPUT([
 Makefile
-e_modules-cpu.spec
-po/Makefile
 ],[
 ])
 
===================================================================
RCS file: /cvs/e/e_modules/cpu/cpu.edc,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -3 -r1.12 -r1.13
--- cpu.edc     9 Aug 2006 07:09:43 -0000       1.12
+++ cpu.edc     30 Aug 2006 18:08:52 -0000      1.13
@@ -50,89 +50,41 @@
                         }
                    }
               }
-
             part
               {
-                 name,          "lines";
-                 mouse_events,  0;
-                 type,          SWALLOW;
-                 clip_to:      "fade_clip";
-                 description
-                   {
-                      state,    "default" 0.0;
-                      rel1
-                        {
-                           relative: 0.0 0.0;
-                        }
-                      rel2
-                        {
-                           relative: 1.0 1.0;
-                        }
-                      color, 0 0 0 0;
-                   }
-              }
-         }
-     }
-   //close group net
-
-   group
-     {
-       name: "modules/cpu/text";
-       parts
-         {
-            part
-              {
-                 name:           "text_clip";
-                 type:           RECT;
-                 mouse_events:   0;
-                 description
-                   {
-                      state: "default" 0.0;
-                      color: 255 255 255 255;
-                      rel1 
-                        {
-                           relative: 0.0 0.0;
-                           offset: 0 0;
-                        }
-                      rel2 
-                        {
-                           relative: 1.0 1.0;
-                           offset: -1 -1;                          
-                        }
-                   }
-              }             
-            part
-              {
-                 name:           "in-text";
+                 name:           "load";
                  type:           TEXT;
-                 effect:         SOFT_SHADOW;
+                 effect:         OUTLINE_SOFT_SHADOW;
                  mouse_events: 0;
-                 clip_to: "text_clip";
+                 clip_to: "fade_clip";
                  description
                    {
                       state: "default" 0.0;
                       align: 0.5 0.5;
                       rel1
                         {
-                           relative: 0.5  0.5;
+                           relative: 0.0  0.0;
+                           to: "cpu";
                         }
                       rel2
                         {
-                           relative: 0.5  0.5;
+                           relative: 1.0  1.0;
+                           to: "cpu";
                         }
-                      color: 0 0 0 255;
-                      color3: 255 255 255 100;
+                      color: 255 0 0 255;
+                      color2: 0 0 0 96;
+                      color3: 0 0 0 32;
                       text
                         {
-                           text: "";
+                           text: "0%";
                            font: "VeraMono";
                            size:  10;
                            min:     1 1;
                            align: 0.5 0.5;
+                           text_class: "module_large";
                         }
                    }
               }
          }
      }
 }
-
===================================================================
RCS file: /cvs/e/e_modules/cpu/cpu.png,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
Binary files /tmp/cvs1s9vzE and /tmp/cvsoO5Ee4 differ
===================================================================
RCS file: /cvs/e/e_modules/cpu/e_mod_main.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -3 -r1.22 -r1.23
--- e_mod_main.c        18 Jul 2006 00:03:26 -0000      1.22
+++ e_mod_main.c        30 Aug 2006 18:08:52 -0000      1.23
@@ -1,223 +1,556 @@
 #include <e.h>
 #include "e_mod_main.h"
-#include "e_mod_config.h"
-#include "config.h"
 
-static Cpu *_cpu_init (E_Module * m);
-static void _cpu_shutdown (Cpu * n);
-static void _cpu_config_menu_new (Cpu * n);
-static int _cpu_face_init (Cpu_Face * cf);
-static void _cpu_face_menu_new (Cpu_Face * cf);
-static void _cpu_face_enable (Cpu_Face * cf);
-static void _cpu_face_disable (Cpu_Face * cf);
-static void _cpu_face_free (Cpu_Face * cf);
-static void _cpu_face_cb_gmc_change (void *data, E_Gadman_Client * gmc,
-                                    E_Gadman_Change change);
-static void _cpu_face_cb_mouse_down (void *data, Evas * evas,
-                                    Evas_Object * obj, void *event_info);
-static void _cpu_face_cb_menu_edit (void *data, E_Menu * mn,
-                                   E_Menu_Item * mi);
-static void _cpu_face_cb_menu_configure (void *data, E_Menu * mn,
-                                        E_Menu_Item * mi);
-static int _cpu_face_update_values (void *data);
-static int _cpu_face_get_cpu_count (Cpu_Face * cf);
-static void _cpu_face_get_load (Cpu_Face * cf);
-static void _cpu_face_graph_values (Cpu_Face * cf);
-static void _cpu_face_graph_clear (Cpu_Face * cf);
+typedef struct _Instance Instance;
+typedef struct _Cpu Cpu;
+
+struct _Instance 
+{
+   E_Gadcon_Client *gcc;
+   Cpu             *cpu;
+   Ecore_Timer     *timer;
+};
+
+struct _Cpu 
+{
+   Instance *inst;
+   Evas_Object *o_icon;
+};
+
+static E_Gadcon_Client *_gc_init(E_Gadcon *gc, const char *name, const char 
*id, const char *style);
+static void _gc_shutdown(E_Gadcon_Client *gcc);
+static void _gc_orient(E_Gadcon_Client *gcc);
+static char *_gc_label(void);
+static Evas_Object *_gc_icon(Evas *evas);
+static Config_Item *_config_item_get(const char *id);
+static int _set_cpu_load(void *data);
+static int _get_cpu_count(void);
+static int _get_cpu_load(void);
+static void _button_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void 
*event_info);
+static void _menu_cb_post(void *data, E_Menu *m);
+static void _cpu_menu_fast(void *data, E_Menu *m, E_Menu_Item *mi);
+static void _cpu_menu_medium(void *data, E_Menu *m, E_Menu_Item *mi);
+static void _cpu_menu_normal(void *data, E_Menu *m, E_Menu_Item *mi);
+static void _cpu_menu_slow(void *data, E_Menu *m, E_Menu_Item *mi);
+static void _cpu_menu_very_slow(void *data, E_Menu *m, E_Menu_Item *mi);
+
+static E_Config_DD *conf_edd = NULL;
+static E_Config_DD *conf_item_edd = NULL;
+
+Config *cpu_conf = NULL;
 
 static int cpu_count;
 static int cpu_stats[4];
 
-EAPI E_Module_Api e_modapi = {
-  E_MODULE_API_VERSION,
-  "Cpu"
+static const E_Gadcon_Client_Class _gc_class = 
+{
+   GADCON_CLIENT_CLASS_VERSION, "cpu", 
+     {_gc_init, _gc_shutdown, _gc_orient, _gc_label, _gc_icon}
 };
 
-EAPI void *
-e_modapi_init (E_Module * m)
+static E_Gadcon_Client *
+_gc_init(E_Gadcon *gc, const char *name, const char *id, const char *style) 
 {
-  Cpu *c;
+   Cpu             *cpu;
+   Instance        *inst;
+   Config_Item     *ci;
+   E_Gadcon_Client *gcc;
+   char             buf[4096];
+
+   cpu_count = _get_cpu_count();
+   
+   inst = E_NEW(Instance, 1);   
+
+   ci = _config_item_get(id);
+   if (!ci->id)
+     ci->id = evas_stringshare_add(id);
+
+   cpu = E_NEW(Cpu, 1);
+   cpu->inst = inst;
 
-  /* Set up module's message catalogue */
-  bindtextdomain (PACKAGE, LOCALEDIR);
-  bind_textdomain_codeset (PACKAGE, "UTF-8");
-
-  c = _cpu_init (m);
-  if (!c)
-    return NULL;
-  c->module = m;
-  return c;
+   snprintf(buf, sizeof(buf), "%s/cpu.edj", 
+           e_module_dir_get(cpu_conf->module));
+   
+   cpu->o_icon = edje_object_add(gc->evas);
+   if (!e_theme_edje_object_set(cpu->o_icon, 
+                               "base/theme/modules/cpu", "modules/cpu/main"))
+     edje_object_file_set(cpu->o_icon, buf, "modules/cpu/main");
+   evas_object_show(cpu->o_icon);
+   
+   gcc = e_gadcon_client_new(gc, name, id, style, cpu->o_icon);
+   gcc->data = inst;
+   inst->gcc = gcc;
+   inst->cpu = cpu;
+
+   cpu_conf->instances = evas_list_append(cpu_conf->instances, inst);
+
+   evas_object_event_callback_add(cpu->o_icon, EVAS_CALLBACK_MOUSE_DOWN,
+                                 _button_cb_mouse_down, inst);
+
+   inst->timer = ecore_timer_add(ci->interval, _set_cpu_load, inst);
+   return gcc;
 }
 
-EAPI int
-e_modapi_shutdown (E_Module * m)
+static void
+_gc_shutdown(E_Gadcon_Client *gcc) 
 {
-  Cpu *c;
-
-  c = m->data;
-  if (!c)
-    return 0;
+   Instance *inst;
+   Cpu      *cpu;
+   
+   inst = gcc->data;
+   cpu = inst->cpu;
 
-  if (c->cfd)
-    {
-      e_object_del (E_OBJECT (c->cfd));
-      c->cfd = NULL;
-    }
-  _cpu_shutdown (c);
-  return 1;
+   if (inst->timer)
+     ecore_timer_del(inst->timer);
+   if (cpu->o_icon)
+     evas_object_del(cpu->o_icon);
+   
+   cpu_conf->instances = evas_list_remove(cpu_conf->instances, inst);
+   E_FREE(cpu);
+   E_FREE(inst);
 }
 
-EAPI int
-e_modapi_save (E_Module * m)
+static void
+_gc_orient(E_Gadcon_Client *gcc) 
 {
-  Cpu *c;
+   e_gadcon_client_aspect_set(gcc, 16, 16);
+   e_gadcon_client_min_size_set(gcc, 16, 16);
+}
 
-  c = m->data;
-  if (!c)
-    return 0;
-  e_config_domain_save ("module.cpu", c->conf_edd, c->conf);
-  return 1;
+static char *
+_gc_label(void) 
+{
+   return _("Cpu");
 }
 
-EAPI int
-e_modapi_about (E_Module * m)
+static Evas_Object *
+_gc_icon(Evas *evas) 
 {
-  e_module_dialog_show (m, D_ ("Enlightenment Cpu Monitor Module"),
-                       D_ ("This module is used to monitor a cpu."));
-  return 1;
+   Evas_Object *o;
+   char         buf[4096];
+
+   if (!cpu_conf->module) return NULL;
+   
+   snprintf(buf, sizeof(buf), "%s/module.eap", 
+           e_module_dir_get(cpu_conf->module));
+   
+   o = edje_object_add(evas);
+   edje_object_file_set(o, buf, "icon");
+   return o;
 }
 
-EAPI int
-e_modapi_config (E_Module * m)
+static Config_Item *
+_config_item_get(const char *id) 
 {
-  Cpu *c;
-  E_Container *con;
+   Evas_List   *l;
+   Config_Item *ci;
 
-  c = m->data;
-  if (!c)
-    return 0;
-  if (!c->face)
-    return 0;
-
-  con = e_container_current_get (e_manager_current_get ());
-  if (c->face->con == con)
-    _configure_cpu_module (con, c);
+   for (l = cpu_conf->items; l; l = l->next) 
+     {
+       ci = l->data;
+       if (!ci->id) continue;
+       if (!strcmp(ci->id, id)) return ci;
+     }
 
-  return 1;
+   ci = E_NEW(Config_Item, 1);
+   ci->id = evas_stringshare_add(id);
+   ci->interval = 1;
+   
+   cpu_conf->items = evas_list_append(cpu_conf->items, ci);
+   return ci;
 }
 
-static Cpu *
-_cpu_init (E_Module * m)
+static int 
+_set_cpu_load(void *data) 
 {
-  Cpu *c;
-  E_Menu_Item *mi;
-  Evas_List *mans, *l, *l2;
+   Instance *inst;
+   Cpu      *cpu;
+   int       load, i = 0;
+   char      str[100], str_tmp[100];
 
-  c = E_NEW (Cpu, 1);
+   if (cpu_count == -1) return 0;
 
-  if (!c)
-    return NULL;
+   inst = data;
+   if (!inst) return 1;
+   cpu = inst->cpu;
+   if (!cpu) return 1;
+   
+   _get_cpu_load();
 
-  c->conf_edd = E_CONFIG_DD_NEW ("Cpu_Config", Config);
-#undef T
-#undef D
-#define T Config
-#define D c->conf_edd
-  E_CONFIG_VAL (D, T, check_interval, INT);
-  E_CONFIG_VAL (D, T, show_text, INT);
-  E_CONFIG_VAL (D, T, show_graph, INT);
+   snprintf(str, sizeof(str), "%d%%", cpu_stats[0]);
+   i = 1;
+   while (i < cpu_count)
+     {
+       snprintf(str_tmp, sizeof(str_tmp), " / %d%%", cpu_stats[i]);
+       strncat(str, str_tmp, sizeof(str));
+       i++;
+     }
+   edje_object_part_text_set(cpu->o_icon, "load", str);
+   return 1;
+}
 
-  c->conf = e_config_domain_load ("module.cpu", c->conf_edd);
-  if (!c->conf)
-    {
-      c->conf = E_NEW (Config, 1);
+static int
+_get_cpu_count(void)
+{
+   FILE *f;
+   char tmp[4];
+   int cpu = -1;
 
-      c->conf->check_interval = 1;
-      c->conf->show_text = 1;
-      c->conf->show_graph = 1;
-    }
-  E_CONFIG_LIMIT (c->conf->check_interval, 0, 60);
-  E_CONFIG_LIMIT (c->conf->show_text, 0, 1);
-  E_CONFIG_LIMIT (c->conf->show_graph, 0, 1);
+   if (!(f = fopen("/proc/stat", "r"))) return cpu;
 
-  _cpu_config_menu_new (c);
+   while (fscanf(f, "cp%s %*u %*u %*u %*u %*u %*u %*u %*u\n", (char *) &tmp) 
== 1)
+     cpu++;
 
-  mans = e_manager_list ();
-  for (l = mans; l; l = l->next)
-    {
-      E_Manager *man;
+   fclose(f);
+   return cpu;
+}
 
-      man = l->data;
-      for (l2 = man->containers; l2; l2 = l2->next)
-       {
-         E_Container *con;
-         Cpu_Face *cf;
+static int
+_get_cpu_load(void) 
+{
+   FILE *stat;
+   static unsigned long old_u[4], old_n[4], old_s[4], old_i[4], old_wa[4], 
old_hi[4], old_si[4];
+   unsigned long new_u, new_n, new_s, new_i, new_wa = 0, new_hi = 0, new_si = 
0, ticks_past;
+   int tmp_u = 0, tmp_n = 0, tmp_s = 0;
+   char dummy[16];
+   int i = 0;
+   
+   if (!(stat = fopen("/proc/stat", "r"))) return -1;
+
+   while (i < cpu_count)
+     {
+
+       if (fscanf(stat, "%s %lu %lu %lu %lu %lu %lu %lu", dummy, &new_u, 
&new_n,
+            &new_s, &new_i, &new_wa, &new_hi, &new_si) < 5)
+         {
+            fclose (stat);
+            return;
+         }
+
+       ticks_past = ((new_u + new_n + new_s + new_i + new_wa + new_hi + 
new_si) -
+                     (old_u[i] + old_n[i] + old_s[i] + old_i[i] + old_wa[i] + 
old_hi[i] + old_si[i]));
+
+       if (ticks_past)
+         {
+            tmp_u = ((new_u - old_u[i]));
+            tmp_n = ((new_n - old_n[i]));
+            tmp_s = ((new_s - old_s[i]));
+         }
+       
+       cpu_stats[i] = (tmp_u + tmp_n + tmp_s) / cpu_count;
+
+       old_u[i] = new_u;
+       old_n[i] = new_n;
+       old_s[i] = new_s;
+       old_wa[i] = new_wa;
+       old_hi[i] = new_hi;
+       old_si[i] = new_si;
+       
+       if (cpu_stats[i] >= 100) cpu_stats[i] = 100;
+
+       i++;
+     }
+   fclose (stat);
+}
+
+static void
+_button_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+   Instance *inst;
+   Evas_Event_Mouse_Down *ev;
+   
+   inst = data;
+   ev = event_info;
+   if ((ev->button == 3) && (!cpu_conf->menu))
+     {
+       E_Menu *mn;
+       E_Menu_Item *mi;
+       int cx, cy, cw, ch;
+       Evas_List *l;
+       char buf[256];
+       Config_Item *ci;
+       
+       ci = _config_item_get(inst->gcc->id);
+
+       mn = e_menu_new();
+       cpu_conf->menu_interval = mn;
+       
+       mi = e_menu_item_new(mn);
+       e_menu_item_label_set(mi, _("Fast (0.5 sec)"));
+       e_menu_item_radio_set(mi, 1);
+       e_menu_item_radio_group_set(mi, 1);
+       if (ci->interval <= 0.5) e_menu_item_toggle_set(mi, 1);
+       e_menu_item_callback_set(mi, _cpu_menu_fast, inst);
+
+       mi = e_menu_item_new(mn);
+       e_menu_item_label_set(mi, _("Medium (1 sec)"));
+       e_menu_item_radio_set(mi, 1);
+       e_menu_item_radio_group_set(mi, 1);
+       if (ci->interval > 0.5) e_menu_item_toggle_set(mi, 1);
+       e_menu_item_callback_set(mi, _cpu_menu_medium, inst);
+
+       mi = e_menu_item_new(mn);
+       e_menu_item_label_set(mi, _("Normal (2 sec)"));
+       e_menu_item_radio_set(mi, 1);
+       e_menu_item_radio_group_set(mi, 1);
+       if (ci->interval >= 2.0) e_menu_item_toggle_set(mi, 1);
+       e_menu_item_callback_set(mi, _cpu_menu_normal, inst);
+
+       mi = e_menu_item_new(mn);
+       e_menu_item_label_set(mi, _("Slow (5 sec)"));
+       e_menu_item_radio_set(mi, 1);
+       e_menu_item_radio_group_set(mi, 1);
+       if (ci->interval >= 5.0) e_menu_item_toggle_set(mi, 1);
+       e_menu_item_callback_set(mi, _cpu_menu_slow, inst);
+
+       mi = e_menu_item_new(mn);
+       e_menu_item_label_set(mi, _("Very Slow (30 sec)"));
+       e_menu_item_radio_set(mi, 1);
+       e_menu_item_radio_group_set(mi, 1);
+       if (ci->interval >= 30.0) e_menu_item_toggle_set(mi, 1);
+       e_menu_item_callback_set(mi, _cpu_menu_very_slow, inst);
+
+       mn = e_menu_new();
+       cpu_conf->menu = mn;
+       e_menu_post_deactivate_callback_set(mn, _menu_cb_post, inst);
+       
+       mi = e_menu_item_new(mn);
+       e_menu_item_label_set(mi, _("Time Between Updates"));
+       e_menu_item_submenu_set(mi, cpu_conf->menu_interval);
+
+        e_gadcon_client_util_menu_items_append(inst->gcc, mn, 0);
+       
+       e_gadcon_canvas_zone_geometry_get(inst->gcc->gadcon, &cx, &cy, &cw, 
&ch);
+       e_menu_activate_mouse(mn,
+                             e_util_zone_current_get(e_manager_current_get()),
+                             cx + ev->output.x, cy + ev->output.y, 1, 1,
+                             E_MENU_POP_DIRECTION_DOWN, ev->timestamp);
+       evas_event_feed_mouse_up(inst->gcc->gadcon->evas, ev->button,
+                                EVAS_BUTTON_NONE, ev->timestamp, NULL);
+     }
+}
+
+static void
+_menu_cb_post(void *data, E_Menu *m)
+{
+   if (!cpu_conf->menu) return;
+   e_object_del(E_OBJECT(cpu_conf->menu));
+   cpu_conf->menu = NULL;
+   if (cpu_conf->menu_interval)
+     e_object_del(E_OBJECT(cpu_conf->menu_interval));
+   cpu_conf->menu_interval = NULL;
+}
+   
+static void
+_cpu_menu_fast(void *data, E_Menu *m, E_Menu_Item *mi)
+{
+   Instance *inst;
+   Config_Item *ci;
+   
+   inst = data;
+   ci = _config_item_get(inst->gcc->id);
+
+   ci->interval = 0.5;
+   ecore_timer_del(inst->timer);
+   inst->timer = ecore_timer_add(ci->interval, _set_cpu_load, inst);
+   e_config_save_queue();
+}
+
+static void
+_cpu_menu_medium(void *data, E_Menu *m, E_Menu_Item *mi)
+{
+   Instance *inst;
+   Config_Item *ci;
+   
+   inst = data;
+   ci = _config_item_get(inst->gcc->id);
+
+   ci->interval = 1.0;
+   ecore_timer_del(inst->timer);
+   inst->timer = ecore_timer_add(ci->interval, _set_cpu_load, inst);
+   e_config_save_queue();
+}
+
+static void
+_cpu_menu_normal(void *data, E_Menu *m, E_Menu_Item *mi)
+{
+   Instance *inst;
+   Config_Item *ci;
+   
+   inst = data;
+   ci = _config_item_get(inst->gcc->id);
+
+   ci->interval = 2.0;
+   ecore_timer_del(inst->timer);
+   inst->timer = ecore_timer_add(ci->interval, _set_cpu_load, inst);
+   e_config_save_queue();
+}
+
+static void
+_cpu_menu_slow(void *data, E_Menu *m, E_Menu_Item *mi)
+{
+   Instance *inst;
+   Config_Item *ci;
+   
+   inst = data;
+   ci = _config_item_get(inst->gcc->id);
+
+   ci->interval = 5.0;
+   ecore_timer_del(inst->timer);
+   inst->timer = ecore_timer_add(ci->interval, _set_cpu_load, inst);
+   e_config_save_queue();
+}
+
+static void
+_cpu_menu_very_slow(void *data, E_Menu *m, E_Menu_Item *mi)
+{
+   Instance *inst;
+   Config_Item *ci;
+   
+   inst = data;
+   ci = _config_item_get(inst->gcc->id);
+
+   ci->interval = 30.0;
+   ecore_timer_del(inst->timer);
+   inst->timer = ecore_timer_add(ci->interval, _set_cpu_load, inst);
+   e_config_save_queue();
+}
 
-         con = l2->data;
-         cf = E_NEW (Cpu_Face, 1);
+EAPI E_Module_Api e_modapi = 
+{
+   E_MODULE_API_VERSION, "Cpu"
+};
 
-         if (cf)
-           {
-             cf->conf_face_edd =
-               E_CONFIG_DD_NEW ("Cpu_Face_Config", Config_Face);
+EAPI void *
+e_modapi_init(E_Module *m) 
+{
+   conf_item_edd = E_CONFIG_DD_NEW("Cpu_Config_Item", Config_Item);
+   conf_edd = E_CONFIG_DD_NEW("Cpu_Config", Config);
+   
+   #undef T
+   #define T Config_Item
+   #undef D
+   #define D conf_item_edd
+   E_CONFIG_VAL(D, T, id, STR);
+   E_CONFIG_VAL(D, T, interval, DOUBLE);
+   
+   #undef T
+   #define T Config
+   #undef D
+   #define D conf_edd
+   E_CONFIG_LIST(D, T, items, conf_item_edd);
+   
+   cpu_conf = e_config_domain_load("module.cpu", conf_edd);
+   if (!cpu_conf) 
+     {
+       Config_Item *ci;
+       
+       cpu_conf = E_NEW(Config, 1);
+       ci = E_NEW(Config_Item, 1);
+       ci->id = evas_stringshare_add("0");
+       ci->interval = 1;
+       
+       cpu_conf->items = evas_list_append(cpu_conf->items, ci);
+     }
+   
+   cpu_conf->module = m;
+   e_gadcon_provider_register(&_gc_class);
+   return m;
+}
 
-#undef T
-#undef D
-#define T Config_Face
-#define D cf->conf_face_edd
-             E_CONFIG_VAL (D, T, enabled, UCHAR);
+EAPI int
+e_modapi_shutdown(E_Module *m) 
+{
+   cpu_conf->module = NULL;
+   e_gadcon_provider_unregister(&_gc_class);
+   if (cpu_conf->config_dialog)
+     e_object_del(E_OBJECT(cpu_conf->config_dialog));
+   if (cpu_conf->menu) 
+     {
+       e_menu_post_deactivate_callback_set(cpu_conf->menu, NULL, NULL);
+       e_object_del(E_OBJECT(cpu_conf->menu));
+       cpu_conf->menu = NULL;
+     }
+
+   while(cpu_conf->items) 
+     {
+       Config_Item *ci;
+       
+       ci = cpu_conf->items->data;
+       if (ci->id)
+         evas_stringshare_del(ci->id);
+       cpu_conf->items = evas_list_remove_list(cpu_conf->items, 
cpu_conf->items);
+       E_FREE(ci);
+     }
+
+   E_FREE(cpu_conf);
+   E_CONFIG_DD_FREE(conf_item_edd);
+   E_CONFIG_DD_FREE(conf_edd);
+   return 1;
+}
 
-             c->face = cf;
-             cf->cpu = c;
-             cf->con = con;
-             cf->evas = con->bg_evas;
+EAPI int
+e_modapi_save(E_Module *m) 
+{
+   Evas_List *l;
+   
+   for (l = cpu_conf->instances; l; l = l->next) 
+     {
+       Instance *inst;
+       Config_Item *ci;
+       
+       inst = l->data;
+       ci = _config_item_get(inst->gcc->id);
+       if (ci->id)
+         evas_stringshare_del(ci->id);
+       ci->id = evas_stringshare_add(inst->gcc->id);
+     }
+   e_config_domain_save("module.cpu", conf_edd, cpu_conf);
+   return 1;
+}
 
-             cf->conf = E_NEW (Config_Face, 1);
+EAPI int
+e_modapi_about(E_Module *m)
+{
+  e_module_dialog_show (m, _("Enlightenment Cpu Monitor Module"),
+                       _("This module is used to monitor cpu load."));
+  return 1;
+}
 
-             cf->conf->enabled = 1;
 
-             if (!_cpu_face_init (cf))
-               return NULL;
 
-             _cpu_face_menu_new (cf);
 
-             mi = e_menu_item_new (c->config_menu);
-             e_menu_item_label_set (mi, _("Configuration"));
-             e_menu_item_callback_set (mi, _cpu_face_cb_menu_configure, cf);
 
-             mi = e_menu_item_new (c->config_menu);
-             e_menu_item_label_set (mi, con->name);
-             e_menu_item_submenu_set (mi, cf->menu);
 
-             if (!cf->conf->enabled)
-               _cpu_face_disable (cf);
-             else
-               _cpu_face_enable (cf);
-           }
-       }
-    }
-  return c;
-}
 
-static void
-_cpu_shutdown (Cpu * c)
-{
-  _cpu_face_free (c->face);
 
-  c->module = NULL;
-  E_FREE (c->conf);
-  E_CONFIG_DD_FREE (c->conf_edd);
-  E_FREE (c);
-}
 
-static void
-_cpu_config_menu_new (Cpu * c)
-{
-  E_Menu *mn;
 
-  mn = e_menu_new ();
-  c->config_menu = mn;
-}
+
+/*
+static Cpu *_cpu_init (E_Module * m);
+static void _cpu_shutdown (Cpu * n);
+static void _cpu_config_menu_new (Cpu * n);
+static int _cpu_face_init (Cpu_Face * cf);
+static void _cpu_face_menu_new (Cpu_Face * cf);
+static void _cpu_face_enable (Cpu_Face * cf);
+static void _cpu_face_disable (Cpu_Face * cf);
+static void _cpu_face_free (Cpu_Face * cf);
+static void _cpu_face_cb_gmc_change (void *data, E_Gadman_Client * gmc,
+                                    E_Gadman_Change change);
+static void _cpu_face_cb_mouse_down (void *data, Evas * evas,
+                                    Evas_Object * obj, void *event_info);
+static void _cpu_face_cb_menu_edit (void *data, E_Menu * mn,
+                                   E_Menu_Item * mi);
+static void _cpu_face_cb_menu_configure (void *data, E_Menu * mn,
+                                        E_Menu_Item * mi);
+static int _cpu_face_get_cpu_count (Cpu_Face * cf);
+static void _cpu_face_get_load (Cpu_Face * cf);
+static void _cpu_face_graph_values (Cpu_Face * cf);
+static void _cpu_face_graph_clear (Cpu_Face * cf);
+
+static int cpu_count;
+
 
 static int
 _cpu_face_init (Cpu_Face * cf)
@@ -246,19 +579,6 @@
   evas_object_color_set (o, 255, 255, 255, 255);
   evas_object_show (o);
 
-  o = edje_object_add (cf->evas);
-  cf->txt_obj = o;
-  if (!e_theme_edje_object_set
-      (o, "base/theme/modules/cpu", "modules/cpu/text"))
-    {
-      snprintf (buf, sizeof (buf), PACKAGE_DATA_DIR "/cpu.edj");
-      edje_object_file_set (o, buf, "modules/cpu/text");
-    }
-  evas_object_layer_set (o, 2);
-  evas_object_repeat_events_set (o, 0);
-  evas_object_pass_events_set (o, 1);
-  evas_object_color_set (o, 255, 255, 255, 255);
-  evas_object_show (o);
 
   o = evas_object_rectangle_add (cf->evas);
   cf->event_obj = o;
@@ -309,258 +629,6 @@
   e_menu_item_callback_set (mi, _cpu_face_cb_menu_edit, cf);
 }
 
-static void
-_cpu_face_enable (Cpu_Face * cf)
-{
-  cf->conf->enabled = 1;
-  e_config_save_queue ();
-  evas_object_show (cf->cpu_obj);
-  evas_object_show (cf->event_obj);
-  if (cf->cpu->conf->show_graph)
-    evas_object_show (cf->chart_obj);
-  if (cf->cpu->conf->show_text)
-    evas_object_show (cf->txt_obj);
-}
-
-static void
-_cpu_face_disable (Cpu_Face * cf)
-{
-  cf->conf->enabled = 0;
-  e_config_save_queue ();
-  evas_object_hide (cf->event_obj);
-  evas_object_hide (cf->chart_obj);
-  evas_object_hide (cf->cpu_obj);
-  evas_object_hide (cf->txt_obj);
-}
-
-static void
-_cpu_face_free (Cpu_Face * cf)
-{
-  if (cf->monitor)
-    ecore_timer_del (cf->monitor);
-  if (cf->menu)
-    e_object_del (E_OBJECT (cf->menu));
-  if (cf->event_obj)
-    evas_object_del (cf->event_obj);
-  if (cf->cpu_obj)
-    evas_object_del (cf->cpu_obj);
-  if (cf->old_values)
-    _cpu_face_graph_clear (cf);
-  if (cf->chart_obj)
-    evas_object_del (cf->chart_obj);
-  if (cf->txt_obj)
-    evas_object_del (cf->txt_obj);
-
-  if (cf->gmc)
-    {
-      e_gadman_client_save (cf->gmc);
-      e_object_del (E_OBJECT (cf->gmc));
-    }
-
-  E_FREE (cf->conf);
-  E_FREE (cf);
-  cpu_count--;
-}
-
-static void
-_cpu_face_cb_gmc_change (void *data, E_Gadman_Client * gmc,
-                        E_Gadman_Change change)
-{
-  Cpu_Face *cf;
-  Evas_Coord x, y, w, h;
-
-  cf = data;
-  switch (change)
-    {
-    case E_GADMAN_CHANGE_MOVE_RESIZE:
-      e_gadman_client_geometry_get (cf->gmc, &x, &y, &w, &h);
-      evas_object_move (cf->chart_obj, x, y);
-      evas_object_move (cf->event_obj, x, y);
-      evas_object_move (cf->cpu_obj, x, y);
-      evas_object_move (cf->txt_obj, x, y);
-      evas_object_resize (cf->chart_obj, w, h);
-      evas_object_resize (cf->event_obj, w, h);
-      evas_object_resize (cf->cpu_obj, w, h);
-      evas_object_resize (cf->txt_obj, w, h);
-      _cpu_face_graph_clear (cf);
-      break;
-    case E_GADMAN_CHANGE_RAISE:
-      evas_object_raise (cf->cpu_obj);
-      evas_object_raise (cf->chart_obj);
-      evas_object_raise (cf->event_obj);
-      evas_object_raise (cf->txt_obj);
-      break;
-    default:
-      break;
-    }
-}
-
-static void
-_cpu_face_cb_mouse_down (void *data, Evas * evas, Evas_Object * obj,
-                        void *event_info)
-{
-  Cpu_Face *cf;
-  Evas_Event_Mouse_Down *ev;
-
-  ev = event_info;
-  cf = data;
-  if (ev->button == 3)
-    {
-      e_menu_activate_mouse (cf->menu, e_zone_current_get (cf->con),
-                            ev->output.x, ev->output.y, 1, 1,
-                            E_MENU_POP_DIRECTION_DOWN, ev->timestamp);
-      e_util_container_fake_mouse_up_all_later (cf->con);
-    }
-}
-
-static void
-_cpu_face_cb_menu_edit (void *data, E_Menu * mn, E_Menu_Item * mi)
-{
-  Cpu_Face *cf;
-
-  cf = data;
-  e_gadman_mode_set (cf->gmc->gadman, E_GADMAN_MODE_EDIT);
-}
-
-static void
-_cpu_face_cb_menu_configure (void *data, E_Menu * mn, E_Menu_Item * mi)
-{
-  Cpu_Face *cf;
-
-  cf = data;
-  _configure_cpu_module (cf->con, cf->cpu);
-}
-
-static int
-_cpu_face_update_values (void *data)
-{
-  Cpu_Face *cf;
-  char str[100];
-  int i = 0;
-  char str_tmp[100];
-
-  cf = data;
-  _cpu_face_get_load (cf);
-
-  if (cpu_stats[0] == -1)
-    return 1;
-
-  if (cf->cpu->conf->show_text)
-    {
-      snprintf (str, sizeof (str), "%d%%", cpu_stats[0]);
-      i = 1;
-      while (i < cpu_count)
-       {
-         snprintf (str_tmp, sizeof (str_tmp), " / %d%%", cpu_stats[i]);
-         strncat (str, str_tmp, sizeof (str));
-         i++;
-       }
-      edje_object_part_text_set (cf->txt_obj, "in-text", str);
-    }
-  else
-    edje_object_part_text_set (cf->txt_obj, "in-text", "");
-
-  if ((cf->cpu->conf->show_graph)
-      && (edje_object_part_exists (cf->cpu_obj, "lines")))
-    _cpu_face_graph_values (cf);
-  else
-    _cpu_face_graph_clear (cf);
-
-  return 1;
-}
-
-static int
-_cpu_face_get_cpu_count (Cpu_Face * cf)
-{
-  char tmp[4];
-  FILE *f;
-  int cpu = -1;
-
-  if (!(f = fopen ("/proc/stat", "r")))
-    return -1;
-
-  while (fscanf (f, "cp%s %*u %*u %*u %*u %*u %*u %*u %*u\n", (char *) &tmp)
-        == 1)
-    cpu++;
-
-  fclose (f);
-  return cpu;
-}
-
-static void
-_cpu_face_get_load (Cpu_Face * cf)
-{
-  static unsigned long old_u[4], old_n[4], old_s[4], old_i[4], old_wa[4],
-    old_hi[4], old_si[4];
-  unsigned long new_u, new_n, new_s, new_i, new_wa = 0, new_hi = 0, new_si =
-    0, ticks_past;
-  int tmp_u, tmp_n, tmp_s, tmp_i;
-  char dummy[16];
-  FILE *stat;
-  int cpu_count;
-  Edje_Message_Float msg;
-
-  cpu_count = _cpu_face_get_cpu_count (cf);
-  if (cpu_count == -1)
-    return;
-
-  if (!(stat = fopen ("/proc/stat", "r")))
-    return;
-
-  int i = 0;
-
-  while (i < cpu_count)
-    {
-
-      if (fscanf
-         (stat, "%s %lu %lu %lu %lu %lu %lu %lu", dummy, &new_u, &new_n,
-          &new_s, &new_i, &new_wa, &new_hi, &new_si) < 5)
-       {
-         fclose (stat);
-         return;
-       }
-
-      ticks_past =
-       ((new_u + new_n + new_s + new_i + new_wa + new_hi + new_si) -
-        (old_u[i] + old_n[i] + old_s[i] + old_i[i] + old_wa[i] + old_hi[i] +
-         old_si[i]));
-
-      if (ticks_past)
-       {
-         tmp_u = ((new_u - old_u[i]));
-         tmp_n = ((new_n - old_n[i]));
-         tmp_s = ((new_s - old_s[i]));
-         tmp_i = ((new_i - old_i[i]));
-       }
-      else
-       {
-         tmp_u = 0;
-         tmp_n = 0;
-         tmp_s = 0;
-         tmp_i = 0;
-       }
-
-      /* Update the values */
-      cpu_stats[i] = (tmp_u + tmp_n + tmp_s) / cpu_count;
-
-      old_u[i] = new_u;
-      old_n[i] = new_n;
-      old_s[i] = new_s;
-      old_i[i] = new_i;
-      old_wa[i] = new_wa;
-      old_hi[i] = new_hi;
-      old_si[i] = new_si;
-
-      if (cpu_stats[i] >= 100)
-       cpu_stats[i] = 100;
-
-      msg.val = cpu_stats[i];
-      edje_object_message_send (cf->cpu_obj, EDJE_MESSAGE_FLOAT, i, &msg);
-
-      i++;
-    }
-  fclose (stat);
-}
 
 static void
 _cpu_face_graph_values (Cpu_Face * cf)
@@ -666,3 +734,5 @@
 
   evas_event_thaw (cf->evas);
 }
+
+*/
===================================================================
RCS file: /cvs/e/e_modules/cpu/e_mod_main.h,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -3 -r1.10 -r1.11
--- e_mod_main.h        3 Jul 2006 13:36:59 -0000       1.10
+++ e_mod_main.h        30 Aug 2006 18:08:52 -0000      1.11
@@ -1,62 +1,33 @@
-#define D_(str) dgettext(PACKAGE, str)
-
 #ifndef E_MOD_MAIN_H
 #define E_MOD_MAIN_H
 
 typedef struct _Config Config;
-typedef struct _Config_Face Config_Face;
-typedef struct _Cpu Cpu;
-typedef struct _Cpu_Face Cpu_Face;
+typedef struct _Config_Item Config_Item;
 
-struct _Config
+struct _Config 
 {
-   int check_interval;
-   int show_text;
-   int show_graph;
+   E_Module        *module;
+   E_Config_Dialog *config_dialog;
+   E_Menu          *menu, *menu_interval;
+   Evas_List       *instances;
+   Evas_List       *items;
 };
 
-struct _Config_Face
+struct _Config_Item 
 {
-   unsigned char enabled;
+   const char *id;
+   double interval;
 };
 
-struct _Cpu
-{
-   E_Menu *config_menu;
-   Cpu_Face *face;
-   Config *conf;
-   E_Module *module;
-   E_Config_DD *conf_edd;
-   E_Config_Dialog *cfd;
-};
-
-struct _Cpu_Face
-{
-   Evas *evas;
-   E_Container *con;
-   E_Menu *menu;
-   Cpu *cpu;
-   Evas_List *old_values[4];
-
-   Config_Face *conf;
-   E_Config_DD *conf_face_edd;
-
-   Evas_Object *cpu_obj;
-   Evas_Object *event_obj;
-   Evas_Object *chart_obj;
-   Evas_Object *txt_obj;
-
-   Ecore_Timer *monitor;
+EAPI extern E_Module_Api e_modapi;
 
-   E_Gadman_Client *gmc;
-};
+EAPI void *e_modapi_init     (E_Module *m);
+EAPI int   e_modapi_shutdown (E_Module *m);
+EAPI int   e_modapi_save     (E_Module *m);
+EAPI int   e_modapi_about    (E_Module *m);
 
-EAPI extern E_Module_Api e_modapi;
+//void _config_cpu_module      (Config_Item *ci);
 
-EAPI void *e_modapi_init(E_Module *m);
-EAPI int e_modapi_shutdown(E_Module *m);
-EAPI int e_modapi_save(E_Module *m);
-EAPI int e_modapi_about(E_Module *m);
-EAPI int e_modapi_config(E_Module *m);
+extern Config *cpu_conf;
 
 #endif
===================================================================
RCS file: /cvs/e/e_modules/cpu/module.eap,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
Binary files /tmp/cvsAt2qdB and /tmp/cvsvljDY0 differ



-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to