- removed plugin_util
- added key unbind feature
- updated plugin helper
- updated plugin helper - to have config as part of constructor
- updated MouseFreeURLHandler for plugin.py, unload
- removed circular dependency between plugin.py and config.py due to KeyBindUtil due to merging of plugin_util.py
- there was a bug wherein the duplicate keybindings from plugins were not throwing the error "Duplicate Key Bindings Are Not Allowed", now while checking they are merged and then final list of keybindings are checked.
Merge remote-tracking branch 'upstream/master' into 450-mouseless-URL-opening-or-yanking
1) Mouse less/free opening / yanking feature
2) plugin_util file to assist this and other plugins with key-press Helper function
3) adding Key Binding Help Functions in above (2) to config and preferences->keybinding to have a consistent behavior
2) plugin_util file to assist this and other plugins with key-press Helper function
3) adding Key Binding Help Functions in above (2) to config and preferences->keybinding to have a consistent behavior
- added a filter to the preferences menu for easy access to shortcuts
- may require some tweak, on search term size and update
Note: when edited in prefs it seems the Short Cut Labes in (right click) Context Menu are not updated will fix that in that bug Issue #662
Currently, we have a setting for changing the line height (cell height),
but not for changing cell width (both available in VTE).
Depending on the font used, it is useful to have the ability to set a
little more space between characters.
This commit adds a configuration similar to the existing one for line
height, but for character space (cell width scale [1]).
Thanks Matt Rose for helping and encouraging me to implement this.
1. https://lazka.github.io/pgi-docs/Vte-2.91/classes/Terminal.html#Vte.Terminal.set_cell_width_scale
The bug: Gtk.accelerator_parse throws an error if the arg is None.
This means that if one keybinding is set to None, it is impossible to
set any new keybinding.
- Plugins starting with underscore will not be displayed by the
preference/plugins window.
- This allow to add URLhandlers plugins on-the-fly.
- Add the RunCmdOnMatch plugin, which creates URLhandlers plugins
based on a regexp/command pair.
- If an URLhandler plugin returns a prepared URL starting with "terminator://",
then terminator will not try to open it with the URL handler (like xdg-open).
When a key binding is cleared its value is now set to "" (an empty
string) instead of `None` as before.
This change is introduced because `Gtk.accelerator_parse` does not
allow `None` to be used as a value, which in turn breaks
`on_cellrenderer_accel_edited` function in
`terminatorlib/prefseditor.py` by raising a `TypeError` every time a
new key binding is introduced. Note that this only happens if at
least one key binding has been cleared first.
This commit allows to assign the `Shift+Tab` key binding to an action in
`Preferences>Keybindings`.
In GTK the Tab key can be modified by the Shift key. Such a key combination
has a special key value - `Gdk.KEY_ISO_Left_Tab`.
To allow it, `key = key_with_shift.keyval` was added to the code.
However, `Gdk.KEY_ISO_Left_Tab` key value is displayed as `Left Tab` in
`Preferences>Keybindings`, which is confusing as it is not obvious that it
corresponds to the `Shift+Tab` key combination. To make sure that `Shift+Tab`
is displayed as `Shift+Tab`, the `Shift+Tab` case is treated as if no Shift
was pressed at all.
This commit adds tests that check that:
1) Default key binding accelerators are distinct.
2) Message dialog appears when a duplicate key binding accelerator is
attempted to be assigned to a different action.
3) Duplicate key binding accelerator cannot refer to more than one action.
Also, `active_message_dialog` attribute was added to `PrefsEditor`, so
that tests could get a reference to a message dialog window.