summaryrefslogtreecommitdiffstats
path: root/ibus/connection.py
blob: f1d28825751e38edd3501def03e26159fdbfb0d1 (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
import dbus.lowlevel
import ibus
import gobject

class Connection (ibus.Object):
	__gsignals__ = {
		"dbus-signal" : (
			gobject.SIGNAL_RUN_FIRST,
			gobject.TYPE_NONE,
			(gobject.TYPE_PYOBJECT, )
		)
	}
	def __init__ (self, dbusconn):
		ibus.Object.__init__ (self)
		self._dbusconn = dbusconn

	def get_object (self, path):
		return self._dbusconn.get_object ("no.name", path)

	def emit_dbus_signal (self, name, *args):
		message = dbus.lowlevel.SignalMessage (ibus.IBUS_PATH, ibus.IBUS_IFACE, name)
		message.append (*args)
		self._dbusconn.send_message (message)
		self._dbusconn.flush ()

	def do_destroy (self):
		self._dbusconn = None

	def dispatch_dbus_signal (self, message):
		self.emit ("dbus-signal", message)

gobject.type_register (Connection)