Split the console service out of the shell, to remove dep

This commit is contained in:
Marco Pesenti Gritti
2006-08-12 16:19:47 +02:00
parent 0963329b47
commit 2636bc63d0
4 changed files with 37 additions and 26 deletions
+16 -1
View File
@@ -1,6 +1,8 @@
import logging
import gtk
import dbus
import dbus.service
class Console(gtk.ScrolledWindow):
def __init__(self):
@@ -36,7 +38,16 @@ class Console(gtk.ScrolledWindow):
buf.insert_with_tags(it, msg, self._debug_tag)
else:
buf.insert(it, msg)
class ConsoleDbusService(dbus.service.Object):
def __init__(self, console, bus_name):
dbus.service.Object.__init__(self, bus_name, '/org/laptop/Sugar/Console')
self._console = console
@dbus.service.method('org.laptop.Sugar.Console')
def log(self, level, module_id, message):
self._console.log(level, module_id, message)
class ConsoleWindow(gtk.Window):
def __init__(self):
gtk.Window.__init__(self)
@@ -69,6 +80,10 @@ class ConsoleWindow(gtk.Window):
self._consoles = {}
session_bus = dbus.SessionBus()
bus_name = dbus.service.BusName('org.laptop.Sugar.Console', bus=session_bus)
ConsoleDbusService(self, bus_name)
def _add_console(self, page_id):
console = Console()
page = self._nb.append_page(console, gtk.Label(page_id))
+3 -13
View File
@@ -7,11 +7,9 @@ import gtk
import gobject
import wnck
from sugar.LogWriter import LogWriter
from ActivityRegistry import ActivityRegistry
from HomeWindow import HomeWindow
from sugar import env
from ConsoleWindow import ConsoleWindow
from Owner import ShellOwner
from sugar.presence.PresenceService import PresenceService
from ActivityHost import ActivityHost
@@ -39,10 +37,6 @@ class ShellDbusService(dbus.service.Object):
def show_console(self):
gobject.idle_add(self.__show_console_idle)
@dbus.service.method('com.redhat.Sugar.Shell')
def log(self, level, module_id, message):
self._shell.log(level, module_id, message)
class Shell(gobject.GObject):
__gsignals__ = {
'activity-closed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([str]))
@@ -60,10 +54,6 @@ class Shell(gobject.GObject):
bus_name = dbus.service.BusName('com.redhat.Sugar.Shell', bus=session_bus)
ShellDbusService(self, bus_name)
self._console = ConsoleWindow()
sugar.logger.start('Shell', self)
self._owner = ShellOwner()
self._owner.announce()
@@ -76,6 +66,9 @@ class Shell(gobject.GObject):
self._screen.connect('window-opened', self.__window_opened_cb)
self._screen.connect('window-closed', self.__window_closed_cb)
def set_console(self, console):
self._console = console
def __window_opened_cb(self, screen, window):
if window.get_window_type() == wnck.WINDOW_NORMAL:
self._hosts[window.get_xid()] = ActivityHost(self, window)
@@ -155,9 +148,6 @@ class Shell(gobject.GObject):
else:
logging.error('No such activity in the directory')
return None
def log(self, level, module_id, message):
self._console.log(level, module_id, message)
def get_registry(self):
return self._registry
+5
View File
@@ -9,6 +9,7 @@ import dbus.dbus_bindings
from sugar.presence import PresenceService
from Shell import Shell
from ConsoleWindow import ConsoleWindow
from session.Process import Process
import sugar.env
@@ -69,6 +70,9 @@ class Session:
process = DbusProcess()
process.start()
console = ConsoleWindow()
sugar.logger.start('Shell', console)
process = MatchboxProcess()
process.start()
@@ -76,6 +80,7 @@ class Session:
process.start()
shell = Shell(self._registry)
shell.set_console(console)
shell.start()
try: