diff options
author | Dan Williams <dcbw@redhat.com> | 2007-08-30 06:01:12 (GMT) |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2007-08-30 06:01:12 (GMT) |
commit | 82a869fbbf33c91c71d57eb3644eedb5f8bcffbf (patch) | |
tree | bf604ef57f75711449d318abf77257b8ae388d12 /shell/view | |
parent | 55c6547fbf4d04c3a070dfa06d4ea1baab4fa0ef (diff) |
Add palette to Wireless device on Home view showing channel too
Convert the tooltip to a palette and show the wireless
channel in the palette.
Diffstat (limited to 'shell/view')
-rw-r--r-- | shell/view/devices/network/wireless.py | 58 | ||||
-rw-r--r-- | shell/view/home/MeshBox.py | 4 |
2 files changed, 57 insertions, 5 deletions
diff --git a/shell/view/devices/network/wireless.py b/shell/view/devices/network/wireless.py index 7f03f40..23aa149 100644 --- a/shell/view/devices/network/wireless.py +++ b/shell/view/devices/network/wireless.py @@ -15,9 +15,14 @@ # 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 gtk + from sugar.graphics.icon import get_icon_state from sugar.graphics.icon import CanvasIcon from sugar.graphics import style +from sugar.graphics.palette import Palette from model.devices.network import wireless from model.devices import device @@ -28,26 +33,42 @@ class DeviceView(CanvasIcon): def __init__(self, model): CanvasIcon.__init__(self, size=style.MEDIUM_ICON_SIZE) self._model = model + self._palette = WirelessPalette(self._get_palette_primary_text()) + self.set_palette(self._palette) + self._counter = 0 + self._palette.set_frequency(self._model.props.frequency) model.connect('notify::name', self._name_changed_cb) model.connect('notify::strength', self._strength_changed_cb) model.connect('notify::state', self._state_changed_cb) - self.set_tooltip(self._model.props.name) self._update_icon() self._update_state() + def _get_palette_primary_text(self): + if self._model.props.state == device.STATE_INACTIVE: + return _("Disconnected") + return self._model.props.name + def _strength_changed_cb(self, model, pspec): self._update_icon() + # Only update frequency periodically + if self._counter % 4 == 0: + self._palette.set_frequency(self._model.props.frequency) + self._counter += 1 def _name_changed_cb(self, model, pspec): - self.palette.set_primary_text(self._model.props.name) + self.palette.set_primary_text(self._get_palette_primary_text()) def _state_changed_cb(self, model, pspec): self._update_state() + self.palette.set_primary_text(self._get_palette_primary_text()) def _update_icon(self): - icon_name = get_icon_state(_ICON_NAME, self._model.props.strength) + strength = self._model.props.strength + if self._model.props.state == device.STATE_INACTIVE: + strength = 0 + icon_name = get_icon_state(_ICON_NAME, strength) if icon_name: self.props.icon_name = icon_name @@ -58,8 +79,35 @@ class DeviceView(CanvasIcon): self.props.fill_color = style.COLOR_INACTIVE_FILL.get_svg() self.props.stroke_color = style.COLOR_INACTIVE_STROKE.get_svg() elif state == device.STATE_ACTIVATED: - self.props.fill_color = None - self.props.stroke_color = None + (stroke, fill) = self._model.get_active_network_colors() + self.props.stroke_color = stroke + self.props.fill_color = fill elif state == device.STATE_INACTIVE: self.props.fill_color = style.COLOR_INACTIVE_FILL.get_svg() self.props.stroke_color = style.COLOR_INACTIVE_STROKE.get_svg() + +class WirelessPalette(Palette): + def __init__(self, primary_text): + Palette.__init__(self, primary_text) + + self._chan_label = gtk.Label() + self._chan_label.show() + + vbox = gtk.VBox() + vbox.pack_start(self._chan_label) + vbox.show() + + self.set_content(vbox) + + def set_frequency(self, freq): + chans = { 2.412: 1, 2.417: 2, 2.422: 3, 2.427: 4, + 2.432: 5, 2.437: 6, 2.442: 7, 2.447: 8, + 2.452: 9, 2.457: 10, 2.462: 11, 2.467: 12, + 2.472: 13 + } + try: + chan = chans[freq] + except KeyError: + chan = 0 + self._chan_label.set_text("%s: %d" % (_("Channel"), chan)) + diff --git a/shell/view/home/MeshBox.py b/shell/view/home/MeshBox.py index 4d6bde4..8d3bdf5 100644 --- a/shell/view/home/MeshBox.py +++ b/shell/view/home/MeshBox.py @@ -49,6 +49,10 @@ class AccessPointView(PulsingIcon): model.connect('notify::name', self._name_changed_cb) model.connect('notify::state', self._state_changed_cb) + (stroke, fill) = model.get_nm_network().get_colors() + self._device_stroke = stroke + self._device_fill = fill + import sha sh = sha.new() data = self._model.props.name + hex(self._model.props.capabilities) + \ |