~ubuntu-branches/debian/sid/hal/sid

« back to all changes in this revision

Viewing changes to tools/device-manager/Representation.py

  • Committer: Bazaar Package Importer
  • Author(s): Martin Pitt
  • Date: 2007-10-23 12:33:58 UTC
  • Revision ID: james.westby@ubuntu.com-20071023123358-xaf8mjc5n84d5gtz
Tags: upstream-0.5.10
ImportĀ upstreamĀ versionĀ 0.5.10

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
"""This file contains the Representation class."""
2
 
 
3
 
import gtk
4
 
 
5
 
import Const
6
 
 
7
 
class Representation:
8
 
    """This class maps a device to presentation texts and icons used in
9
 
    the GUI"""
10
 
 
11
 
    def load_and_scale_icon(self, path):
12
 
        """Helper function for loading an icon and scaling it to 16x16"""
13
 
        orig = gtk.gdk.pixbuf_new_from_file(path)
14
 
        icon = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, True, 8, 16, 16)
15
 
        orig.scale(icon, 0, 0, 16, 16,
16
 
                   0, 0,
17
 
                   16.0/orig.get_width(),
18
 
                   16.0/orig.get_height(),
19
 
                   gtk.gdk.INTERP_HYPER)
20
 
        return icon
21
 
 
22
 
    def __init__(self):
23
 
        """Init the class and load neccessary resources."""
24
 
        self.icons = {}
25
 
        self.icons["computer"] = self.load_and_scale_icon(Const.DATADIR + "/hal-computer.png")
26
 
        self.icons["bus_pci"] = self.load_and_scale_icon(Const.DATADIR + "/hal-bus-pci.png")
27
 
        self.icons["bus_usb"] = self.load_and_scale_icon(Const.DATADIR + "/hal-bus-usb.png")
28
 
        self.icons["abstract"] = self.load_and_scale_icon(Const.DATADIR + "/hal-abstract.png");
29
 
        self.icons["harddisk"] = self.load_and_scale_icon(Const.DATADIR + "/hal-harddisk.png");
30
 
        self.icons["cdrom"] = self.load_and_scale_icon(Const.DATADIR + "/hal-cdrom.png");
31
 
        self.icons["floppy"] = self.load_and_scale_icon(Const.DATADIR + "/hal-floppy.png");
32
 
        self.icons["unknown"] = self.load_and_scale_icon(Const.DATADIR + "/hal-unknown.png")
33
 
        self.icons["mouse"] = self.load_and_scale_icon(Const.DATADIR + "/hal-cat-mouse.png")
34
 
        self.icons["keyboard"] = self.load_and_scale_icon(Const.DATADIR + "/hal-cat-keyboard.png")
35
 
        self.icons["cardbus"] = self.load_and_scale_icon(Const.DATADIR + "/hal-cat-cardbus.png")
36
 
        self.icons["video"] = self.load_and_scale_icon(Const.DATADIR + "/hal-video.png")
37
 
        self.icons["flash"] = self.load_and_scale_icon(Const.DATADIR + "/hal-flash.png")
38
 
        self.icons["network"] = self.load_and_scale_icon(Const.DATADIR + "/hal-network.png")
39
 
        self.icons["audio"] = self.load_and_scale_icon(Const.DATADIR + "/hal-audio.png")
40
 
        self.icons["camera"] = self.load_and_scale_icon(Const.DATADIR + "/hal-camera.png")
41
 
        self.icons["serial"] = self.load_and_scale_icon(Const.DATADIR + "/hal-serial-port.png")
42
 
 
43
 
 
44
 
    def get_icon(self, device):
45
 
        """Given a Device object return an icon to display"""
46
 
 
47
 
        # Default to abstract icon
48
 
        icon = self.icons["abstract"]
49
 
 
50
 
        try:
51
 
            product = device.properties["info.product"]
52
 
        except KeyError:
53
 
            product = "Unknown"
54
 
        except TypeError:
55
 
            return icon
56
 
            
57
 
        if product=="Computer":
58
 
            return self.icons["computer"]
59
 
 
60
 
        # First look at bus type, every device got subsystem property
61
 
        if device.properties.has_key("info.subsystem"):
62
 
            bus = device.properties["info.subsystem"]
63
 
            if bus=="usb_device":
64
 
                icon = self.icons["bus_usb"]
65
 
            elif bus=="pci":
66
 
                icon = self.icons["bus_pci"]
67
 
        else:
68
 
            bus = "unknown"
69
 
 
70
 
        # Then look at Category, if available
71
 
        if not device.properties.has_key("info.category"):
72
 
            return icon
73
 
        cat = device.properties["info.category"]
74
 
        if cat=="input.mouse":
75
 
            icon = self.icons["mouse"]
76
 
        elif cat=="input.keyboard":
77
 
            icon = self.icons["keyboard"]
78
 
        elif cat=="pcmcia_socket":
79
 
            icon = self.icons["cardbus"]
80
 
        elif cat=="video4linux":
81
 
            icon = self.icons["video"]
82
 
        elif cat=="dvb":
83
 
            icon = self.icons["video"]
84
 
        elif cat=="camera":
85
 
            icon = self.icons["camera"]
86
 
        elif cat=="storage" or cat=="storage.removable":
87
 
            if device.properties.has_key("storage.media"):
88
 
                media = device.properties["storage.media"]
89
 
                if media=="cdrom":
90
 
                    icon = self.icons["cdrom"]
91
 
                elif media=="floppy":
92
 
                    icon = self.icons["floppy"]
93
 
                elif media=="disk":
94
 
                    icon = self.icons["harddisk"]
95
 
                elif media=="flash":
96
 
                    icon = self.icons["flash"]
97
 
        elif cat=="net":
98
 
            icon = self.icons["network"]
99
 
        elif cat=="multimedia.audio":
100
 
            icon = self.icons["audio"]
101
 
        elif cat=="serial":
102
 
            icon = self.icons["serial"]
103
 
 
104
 
        return icon