Files
xed/plugins/textsize/textsize/signals.py
JosephMcc 01bada3e7e Implement font zooming in the editor
Give controls for zoom in, zoom out, and reset zoom in the menu and via hotkey.
Also add a new placeholder in the view menu to allow positioning the menuitems
properly. Still want to keep the highlighting menu item at the  bottom.

This is implemented by using a builtin libpeas python plugin. Add support for
loading these plugins at startup. They cannot be enabled or disabled through the
UI. They can still be disabled in gsettings but will be automatically reloaded
when xed is restarted.

Closes: https://github.com/linuxmint/xed/issues/45
2017-02-12 01:24:02 -08:00

69 lines
1.7 KiB
Python

class Signals(object):
def __init__(self):
self._signals = {}
def _connect(self, obj, name, handler, connector):
ret = self._signals.setdefault(obj, {})
hid = connector(name, handler)
ret.setdefault(name, []).append(hid)
return hid
def connect_signal(self, obj, name, handler):
return self._connect(obj, name, handler, obj.connect)
def connect_signal_after(self, obj, name, handler):
return self._connect(obj, name, handler, obj.connect_after)
def disconnect_signals(self, obj):
if obj not in self._signals:
return False
for name in self._signals[obj]:
for hid in self._signals[obj][name]:
obj.disconnect(hid)
del self._signals[obj]
return True
def block_signal(self, obj, name):
if obj not in self._signals:
return False
if name not in self._signals[obj]:
return False
for hid in self._signals[obj][name]:
obj.handler_block(hid)
return True
def unblock_signal(self, obj, name):
if obj not in self._signals:
return False
if name not in self._signals[obj]:
return False
for hid in self._signals[obj][name]:
obj.handler_unblock(hid)
return True
def disconnect_signal(self, obj, name):
if obj not in self._signals:
return False
if name not in self._signals[obj]:
return False
for hid in self._signals[obj][name]:
obj.disconnect(hid)
del self._signals[obj][name]
if len(self._signals[obj]) == 0:
del self._signals[obj]
return True