Пример #1
0
class App(BaseApp):
    def __init__(self, config_path=None, **kwargs):
        BaseApp.__init__(self, **kwargs)
        if config_path:
            self.user_config = sxmain.load_user_config(config_path)
        else:
            self.user_config = None

    def init(self):
        BaseApp.init(self)

        self.bus = SessionBus()
        self.add_fd_handler("read", self.bus, self.process_dbus)
        self.bus.request_name("org.yahiko.status_bar")
        screen = self.conn.setup.roots[self.conn.pref_screen]
        self.status_bar = StatusBar(self, screen, self.user_config)

    def run(self):
        self.status_bar.ui.recreate_surface()
        self.status_bar.ui.layout()
        self.status_bar.ui.dirty()

        BaseApp.run(self)

    def process_dbus(self):
        self.bus.receive_one()

        BaseApp.run(self)
Пример #2
0
class SXDBus(Plugin):
    key = 'dbus'

    def __init__(self, app):
        self.objects = {}
        if YAYDBUS:
            self.session_bus = SessionBus()
            app.add_fd_handler('read', self.session_bus, self.process_dbus)
        else:
            dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)

            self.session_bus = dbus.SessionBus()
            self.name = service.BusName(DEFAULT_BUS_NAME, self.session_bus)

        if YAYDBUS:
            self.session_bus.request_name(DEFAULT_BUS_NAME)
            self.session_bus.request_name(DEFAULT_BUS_NAME+'.DBusService')
        self.register('dbus', functools.partial(DBusObject, app))

    def process_dbus(self):
        self.session_bus.receive_one()

    def register(self, name, cls, path=None):
        """ register a new dbus object """
        log.info('registering %s: %s', name, cls)
        
        if path is None:
            path = "/%s" % name

        if YAYDBUS:
            self.objects[name] = self.session_bus.add_object(
                    cls(self.session_bus, path),
            )
        else:
            self.objects[name] = cls(
                    conn=self.session_bus, 
                    object_path=path,
                    bus_name=self.name,
            )