Update HACKING

This commit is contained in:
Florian Bruhin 2014-09-25 08:28:27 +02:00
parent 7b8829286c
commit a9819fe1bc

View File

@ -276,6 +276,38 @@ range-checked using `qutebrowser.utils.check_overflow`, or passing a value
which is too large should be avoided by other means (e.g. by setting a maximum which is too large should be avoided by other means (e.g. by setting a maximum
value for a config object). value for a config object).
[[object-registry]]
The object registry
~~~~~~~~~~~~~~~~~~~
The object registry in `qutebrowser.utils.objreg` is a collection of
dictionaries which map object names to the actual long-living objects.
There are currently these object registries, also called 'scopes':
* The `global` scope, with objects which are used globally (`config`,
`cookie-jar`, etc.)
* The `tab` scope with objects which are per-tab (`hintmanager`, `webview`,
etc.). Passing this scope to `objreg.get()` always selects the object in the
currently focused tab.
* The `meta` scope which is an object registry of all other object registries,
mainly intended for debugging.
A new object can be registered by using
+objreg.register(_name_, _object_[, scope=_scope_])+. An object should not be
registered twice. To update it, `update=True` has to been passed.
An object can be retrieved by using +objreg.get(_name_[, scope=_scope_])+. The
default scope is `global`.
All objects can be printed by starting with the `--debug` flag and using the
`:debug-all-objects` command.
The registry is mainly used for <<commands,command handlers>> but also can be
useful in places where using Qt's
http://qt-project.org/doc/qt-5/signalsandslots.html[signals and slots]
mechanism would be difficult.
Logging Logging
~~~~~~~ ~~~~~~~
@ -313,6 +345,7 @@ The following logging levels are available for every logger:
|debug |Verbose debugging informations. |debug |Verbose debugging informations.
|======================================================================= |=======================================================================
[[commands]]
Commands Commands
~~~~~~~~ ~~~~~~~~
@ -344,11 +377,10 @@ supported. For an example on how to solve that problem, see
`qutebrowser.browser.command` which dispatches commands to the currently active `qutebrowser.browser.command` which dispatches commands to the currently active
tab. tab.
The `instance` parameter is a dotted attribute-path, leading from the main The `instance` parameter is the name of an object in the object registry, which
Application instance to your object instance. then gets passed as the `self` parameter to the handler. The `scope` argument
For example, if the Application object has an attribute `status`, which then selects which object registry (global, per-tab, etc.) to use. See the
has an attribute `prompt` and commands are registered there, the parameter <<object-registry object registry>> section for details.
would be `status.prompt`.
There are also other arguments to customize the way the command is registered, There are also other arguments to customize the way the command is registered,
see the class documentation for `register` in `qutebrowser.commands.utils` for see the class documentation for `register` in `qutebrowser.commands.utils` for