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
69 lines
1.7 KiB
Python
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 |