Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell/console/console.py
diff options
context:
space:
mode:
Diffstat (limited to 'shell/console/console.py')
-rw-r--r--shell/console/console.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/shell/console/console.py b/shell/console/console.py
new file mode 100644
index 0000000..1bdd5ce
--- /dev/null
+++ b/shell/console/console.py
@@ -0,0 +1,45 @@
+import os
+
+import gtk
+import hippo
+
+class Console(gtk.Window):
+ def __init__(self):
+ gtk.Window.__init__(self)
+
+ 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, border_color=0x000000FF,
+ border=3)
+ 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)