Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Silbe <silbe@activitycentral.com>2011-02-11 15:10:53 (GMT)
committer Sascha Silbe <silbe@activitycentral.com>2011-02-11 15:15:13 (GMT)
commit3749affee66a3beee8b9202316b7a6408053bd29 (patch)
tree300abdf027498fbdb4188ee5797e864ed0c31e36
parent851c3b82836df96bc2ab80d4c26f8e9fd7032bd4 (diff)
Revert "Add cpu and memory resource indicator to frame" as agreed on with
erikos. Scheduling for inclusion in 0.94 after potential artwork changes based on feedback from the Design Team. This reverts commit e014bc401195a9b096e44d33d7f6135f7ae0c1c6.
-rw-r--r--extensions/deviceicon/Makefile.am1
-rw-r--r--extensions/deviceicon/resources.py215
-rw-r--r--po/POTFILES.in1
3 files changed, 0 insertions, 217 deletions
diff --git a/extensions/deviceicon/Makefile.am b/extensions/deviceicon/Makefile.am
index 0d15c38..118d866 100644
--- a/extensions/deviceicon/Makefile.am
+++ b/extensions/deviceicon/Makefile.am
@@ -4,7 +4,6 @@ sugar_PYTHON = \
__init__.py \
battery.py \
network.py \
- resources.py \
speaker.py \
touchpad.py \
volume.py
diff --git a/extensions/deviceicon/resources.py b/extensions/deviceicon/resources.py
deleted file mode 100644
index 65e00dc..0000000
--- a/extensions/deviceicon/resources.py
+++ /dev/null
@@ -1,215 +0,0 @@
-# Copyright (C) Anish Mangal <anishmangal2002@gmail.com>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-from gettext import gettext as _
-import logging
-import os
-
-import gobject
-import gtk
-import gconf
-
-from sugar.graphics.tray import TrayIcon
-from sugar.graphics.xocolor import XoColor
-from sugar.graphics.palette import Palette
-from sugar.graphics import style
-
-
-_SYSTEM_MOODS = ['-sad', '-normal', '-happy']
-_ICON_NAME = 'computer'
-_UPDATE_INTERVAL = 5*1000
-
-
-class DeviceView(TrayIcon):
-
- FRAME_POSITION_RELATIVE = 500
-
- def __init__(self):
- client = gconf.client_get_default()
- self._color = XoColor(client.get_string('/desktop/sugar/user/color'))
- TrayIcon.__init__(self, icon_name=_ICON_NAME, xo_color=self._color)
- self.create_palette()
- self._icon_widget.connect('button-release-event', self._click_cb)
-
- def create_palette(self):
- self.palette = ResourcePalette(_('System resources'))
- self.palette.set_group_id('frame')
- self.palette.add_timer()
- self.palette.connect('system-mood-changed',
- self._system_mood_changed_cb)
- return self.palette
-
- def _system_mood_changed_cb(self, palette_, mood):
- self.icon.props.icon_name = _ICON_NAME + mood
-
- def _click_cb(self, widget, event):
- self.palette_invoker.notify_right_click()
-
-
-class ResourcePalette(Palette):
- __gsignals__ = {
- 'system-mood-changed': (gobject.SIGNAL_RUN_FIRST,
- gobject.TYPE_NONE,
- ([str])),
- }
-
- def __init__(self, primary_text):
- Palette.__init__(self, label=primary_text)
-
- self.vbox = gtk.VBox()
- self.set_content(self.vbox)
-
- self._cpu_text = gtk.Label()
- self.vbox.pack_start(self._cpu_text, padding=style.DEFAULT_PADDING)
- self._cpu_bar = gtk.ProgressBar()
- self._cpu_bar.set_size_request(
- style.zoom(style.GRID_CELL_SIZE * 4), -1)
- self.vbox.pack_start(self._cpu_bar, padding=style.DEFAULT_PADDING)
-
- self._memory_text = gtk.Label()
- self.vbox.pack_start(self._memory_text, padding=style.DEFAULT_PADDING)
- self._memory_bar = gtk.ProgressBar()
- self._memory_bar.set_size_request(
- style.zoom(style.GRID_CELL_SIZE * 4), -1)
- self.vbox.pack_start(self._memory_bar, padding=style.DEFAULT_PADDING)
-
- self._system_mood = None
- try:
- self._cpu_times = self._get_cpu_times_list()
- except IOError:
- logging.exception('An error ocurred while attempting to '
- 'read /proc/stat')
- self._stop_computing_statistics()
-
- self.vbox.show()
- self._cpu_text.show()
- self._cpu_bar.show()
- self._memory_text.show()
- self._memory_bar.show()
-
- def add_timer(self):
- gobject.timeout_add(_UPDATE_INTERVAL, self.__timer_cb)
-
- def _get_cpu_times_list(self):
- """Return various cpu times as read from /proc/stat
-
- This method returns the following cpu times measured
- in jiffies (1/100 of a second for x86 systems)
- as an ordered list of numbers - [user, nice,
- system, idle, iowait] where,
-
- user: normal processes executing in user mode
- nice: niced processes executing in user mode
- system: processes executing in kernel mode
- idle: twiddling thumbs
- iowait: waiting for I/O to complete
-
- Note: For systems having 2 or more CPU's, the above
- numbers would be the cumulative sum of these times
- for all CPU's present in the system.
-
- """
- return [int(count)
- for count in file('/proc/stat').readline().split()[1:6]]
-
- def _percentage_cpu_available(self):
- """
- Return free CPU resources as a percentage
-
- """
- _cpu_times_new = self._get_cpu_times_list()
- _cpu_times_current = [(new - old)
- for new, old in zip(_cpu_times_new, self._cpu_times)]
- user_, nice_, system_, idle, iowait = _cpu_times_current
- cpu_free = (idle + iowait) * 100.0 / sum(_cpu_times_current)
- self._cpu_times = self._get_cpu_times_list()
- return cpu_free
-
- def _percentage_memory_available(self):
- """
- Return free memory as a percentage
-
- """
- for line in file('/proc/meminfo'):
- name, value, unit_ = line.split()[:3]
- if 'MemTotal:' == name:
- total = int(value)
- elif 'MemFree:' == name:
- free = int(value)
- elif 'Buffers:' == name:
- buffers = int(value)
- elif 'Cached:' == name:
- cached = int(value)
- elif 'Active:' == name:
- break
- return (free + buffers + cached) * 100.0 / total
-
- def __timer_cb(self):
- try:
- cpu_in_use = 100 - self._percentage_cpu_available()
- memory_in_use = 100 - self._percentage_memory_available()
- except IOError:
- logging.exception('An error ocurred while trying to '
- 'retrieve resource usage statistics')
- self._stop_and_show_error()
- return False
- else:
- self._cpu_text.set_label(_('CPU in use: %d%%' % cpu_in_use))
- self._cpu_bar.set_fraction(float(cpu_in_use) / 100)
- self._memory_text.set_label(_('Memory in use: %d%%' %
- memory_in_use))
- self._memory_bar.set_fraction(float(memory_in_use) / 100)
-
- # both cpu_free and memory_free lie between 0-100
- system_mood = _SYSTEM_MOODS[
- int(300 - (cpu_in_use + 2 * memory_in_use)) // 100]
-
- # check if self._system_mood exists
- try:
- if self._system_mood != system_mood:
- self.emit('system-mood-changed', system_mood)
- self._system_mood = system_mood
- except AttributeError:
- self.emit('system-mood-changed', system_mood)
- self._system_mood = system_mood
-
- return True
-
- def _stop_and_show_error(self):
- """
- Stop computing usage statistics and display an error message
- since we've hit an exception.
-
- """
- # Use the existing _cpu_text label to display the error. Remove
- # everything else.
- self._cpu_text.set_size_request(
- style.zoom(style.GRID_CELL_SIZE * 4), -1)
- self._cpu_text.set_line_wrap(True)
- self._cpu_text.set_text(_('Cannot compute CPU and memory usage '
- 'statistics!'))
- self.vbox.remove(self._cpu_bar)
- self.vbox.remove(self._memory_text)
- self.vbox.remove(self._memory_bar)
- self.emit('system-mood-changed', '-error')
-
-
-def setup(tray):
- if not (os.path.exists('/proc/stat') and os.path.exists('/proc/meminfo')):
- logging.warning('Either /proc/stat or /proc/meminfo not present. Not '
- 'adding the CPU and memory usage icon to the frame')
- return
- tray.add_device(DeviceView())
diff --git a/po/POTFILES.in b/po/POTFILES.in
index b799339..9e46831 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -27,7 +27,6 @@ extensions/cpsection/updater/__init__.py
extensions/cpsection/updater/view.py
extensions/deviceicon/battery.py
extensions/deviceicon/network.py
-extensions/deviceicon/resources.py
extensions/deviceicon/speaker.py
extensions/deviceicon/touchpad.py
extensions/deviceicon/volume.py