Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/controlpanel/view/aboutxo.py
blob: 97a6f84f904de5fe05ad45c95164c3c85d3ce0df (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
import re
import os
import gtk
import gettext
import logging
_ = lambda msg: gettext.dgettext('sugar', msg)

from sugar.graphics import style

from controlpanel.sectionview import SectionView

ICON = 'module-about_my_xo'
TITLE = _('About my XO')

class Aboutxo(SectionView):
    def __init__(self, model=None, alerts=None):
        SectionView.__init__(self)

        self.set_border_width(style.DEFAULT_SPACING * 2)
        self.set_spacing(style.DEFAULT_SPACING)
        not_available = _('Not available')
        group = gtk.SizeGroup(gtk.SIZE_GROUP_HORIZONTAL)

        separator_identity = gtk.HSeparator()
        self.pack_start(separator_identity, expand=False)
        separator_identity.show()
        label_identity = gtk.Label(_('Identity'))
        label_identity.set_alignment(0, 0)
        self.pack_start(label_identity, expand=False)
        label_identity.show()
        vbox_identity = gtk.VBox()
        vbox_identity.set_border_width(style.DEFAULT_SPACING * 2)
        vbox_identity.set_spacing(style.DEFAULT_SPACING)
        box_identity = gtk.HBox(spacing=style.DEFAULT_SPACING)
        label_serial = gtk.Label(_('Serial Number:'))
        label_serial.set_alignment(1, 0)
        label_serial.modify_fg(gtk.STATE_NORMAL, 
                               style.COLOR_SELECTION_GREY.get_gdk_color())
        box_identity.pack_start(label_serial, expand=False)
        group.add_widget(label_serial)
        label_serial.show()
        serial_no = self._read_file('/ofw/serial-number')
        if serial_no is None:
            serial_no = not_available
        label_serial_no = gtk.Label(serial_no)
        label_serial_no.set_alignment(0, 0)
        box_identity.pack_start(label_serial_no, expand=False)
        label_serial_no.show()
        vbox_identity.pack_start(box_identity, expand=False)
        box_identity.show()
        self.pack_start(vbox_identity, expand=False)
        vbox_identity.show()

        separator_software = gtk.HSeparator()
        self.pack_start(separator_software, expand=False)
        separator_software.show()
        label_software = gtk.Label(_('Software'))
        label_software.set_alignment(0, 0)
        self.pack_start(label_software, expand=False)
        label_software.show()
        box_software = gtk.VBox()
        box_software.set_border_width(style.DEFAULT_SPACING * 2)
        box_software.set_spacing(style.DEFAULT_SPACING)
        box_build = gtk.HBox(spacing=style.DEFAULT_SPACING)
        label_build = gtk.Label(_('Build:'))
        label_build.set_alignment(1, 0)
        label_build.modify_fg(gtk.STATE_NORMAL, 
                              style.COLOR_SELECTION_GREY.get_gdk_color())
        box_build.pack_start(label_build, expand=False)
        group.add_widget(label_build)
        label_build.show()
        build_no = self._read_file('/boot/olpc_build')
        if build_no is None:
            build_no = not_available
        label_build_no = gtk.Label(build_no)
        label_build_no.set_alignment(0, 0)
        box_build.pack_start(label_build_no, expand=False)
        label_build_no.show()
        box_software.pack_start(box_build, expand=False)
        box_build.show()

        box_firmware = gtk.HBox(spacing=style.DEFAULT_SPACING)
        label_firmware = gtk.Label(_('Firmware:'))
        label_firmware.set_alignment(1, 0)
        label_firmware.modify_fg(gtk.STATE_NORMAL, 
                              style.COLOR_SELECTION_GREY.get_gdk_color())
        box_firmware.pack_start(label_firmware, expand=False)
        group.add_widget(label_firmware)
        label_firmware.show()
        firmware_no = self._read_file('/ofw/openprom/model')
        if firmware_no is None:
            firmware_no = not_available
        else:
            firmware_no = re.split(" +", firmware_no)
            if len(firmware_no) == 3:
                firmware_no = firmware_no[1]
        label_firmware_no = gtk.Label(firmware_no)
        label_firmware_no.set_alignment(0, 0)
        box_firmware.pack_start(label_firmware_no, expand=False)
        label_firmware_no.show()
        box_software.pack_start(box_firmware, expand=False)
        box_firmware.show()
        self.pack_start(box_software, expand=False)
        box_software.show()

    def _read_file(self, path):
        if os.access(path, os.R_OK) == 0:
            logging.error('read_file() No such file or directory: %s', path)
            return None

        fd = open(path, 'r')
        value = fd.read()
        fd.close()
        if value:
            value = value.strip('\n')
            return value
        else:
            logging.error('read_file() No information in file or directory: %s'
                          , path)
            return None