summaryrefslogtreecommitdiff
path: root/qutebrowser/extensions
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2018-12-10 14:53:42 +0100
committerFlorian Bruhin <me@the-compiler.org>2018-12-10 15:03:09 +0100
commit1b1872e46430061eac70ee70cad0ea58ddbba7e7 (patch)
treef21695d060d4568c8b45f18e84456b63758bfcc9 /qutebrowser/extensions
parent42790e762342ec8f2b00f554d675dce8ff588555 (diff)
downloadqutebrowser-1b1872e46430061eac70ee70cad0ea58ddbba7e7.tar.gz
qutebrowser-1b1872e46430061eac70ee70cad0ea58ddbba7e7.zip
Expose a config_changed signal to extensions
Diffstat (limited to 'qutebrowser/extensions')
-rw-r--r--qutebrowser/extensions/loader.py24
1 files changed, 23 insertions, 1 deletions
diff --git a/qutebrowser/extensions/loader.py b/qutebrowser/extensions/loader.py
index 303eda213..e7b93967b 100644
--- a/qutebrowser/extensions/loader.py
+++ b/qutebrowser/extensions/loader.py
@@ -28,7 +28,10 @@ import pathlib
import attr
+from PyQt5.QtCore import pyqtSignal, QObject
+
from qutebrowser import components
+from qutebrowser.config import config
from qutebrowser.utils import log, standarddir, objreg
@@ -40,6 +43,14 @@ class InitContext:
data_dir = attr.ib() # type: pathlib.Path
config_dir = attr.ib() # type: pathlib.Path
args = attr.ib() # type: argparse.Namespace
+ signals = attr.ib() # type: ExtensionSignals
+
+
+class ExtensionSignals(QObject):
+
+ """Signals exposed to an extension."""
+
+ config_changed = pyqtSignal(str)
@attr.s
@@ -61,6 +72,12 @@ class ExtensionInfo:
name = attr.ib() # type: str
+# Global extension signals, shared between all extensions.
+# At some point we might want to make this per-extension, but then we'll need
+# to find out what to set as its Qt parent so it's kept alive.
+_extension_signals = ExtensionSignals()
+
+
def add_module_info(module: types.ModuleType) -> ModuleInfo:
"""Add ModuleInfo to a module (if not added yet)."""
# pylint: disable=protected-access
@@ -121,7 +138,8 @@ def _get_init_context() -> InitContext:
"""Get an InitContext object."""
return InitContext(data_dir=pathlib.Path(standarddir.data()),
config_dir=pathlib.Path(standarddir.config()),
- args=objreg.get('args'))
+ args=objreg.get('args'),
+ signals=_extension_signals)
def _load_component(info: ExtensionInfo) -> types.ModuleType:
@@ -136,3 +154,7 @@ def _load_component(info: ExtensionInfo) -> types.ModuleType:
mod_info.init_hook(_get_init_context())
return mod
+
+
+def init() -> None:
+ config.instance.changed.connect(_extension_signals.config_changed)