Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell/console/console.py
blob: 9e4578b670b3c3ee5239ef9600df595ed2af76ac (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
import os

import gtk
import hippo

from sugar.graphics.roundbox import CanvasRoundBox

class Console(gtk.Window):
    def __init__(self, shell_model):
        gtk.Window.__init__(self)

        self._shell_model = shell_model

        self.set_default_size(gtk.gdk.screen_width() * 3 / 4,
                              gtk.gdk.screen_height() * 3 / 4)
        self.set_decorated(False)
        self.set_position(gtk.WIN_POS_CENTER_ALWAYS)
        self.connect('realize', self._realize_cb)

        canvas = hippo.Canvas()
        self.add(canvas)
        canvas.show()

        box = hippo.CanvasBox(padding=20, background_color=0x000000FF)
        canvas.set_root(box)

        self.registry = Registry()
        for module in self.registry.view_modules:
            box.append(module.create_view('shell'), hippo.PACK_EXPAND)

    def _realize_cb(self, widget):
        self.window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG)

class Registry(object):
    def __init__(self):
        self.view_modules = []

        base_extensions = [ 'console.logviewer' ]
        for extension in base_extensions:
            self.load_extension(extension)

    def load_extension(self, name):
        module = __import__(name)
        components = name.split('.')
        for component in components[1:]:
            module = getattr(module, component)

        self.view_modules.append(module)