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.
This commit forbids setting duplicate key bindings in
`Preferences > Keybindings` tab.
If a duplicate key binding is detected upon editing, such a key binding
is not assigned and instead a message dialog is displayed saying that the
key binding is a duplicate.
This commit allows to set key bindings that contain
a key modified by a Shift key (e.g. `Ctrl + {`).
For example, after pressing `Ctrl + Shift + [`,
a key binding will be set to `Ctrl + {` as opposed
to `Ctrl + Shift + {` as before.
This is achieved by checking whether a key changes its
value when a Shift key is down. If it does, then the
Shift modifier is removed from `mods`. One exception:
if a key binding contains a letter then the Shift
modifier is not removed. This is because, for some
reason, a key value of a letter is never modified by the
Shift modifier and always corresponds to a key value of
a lowercase character. This is already handled in
`terminatorlib/keybindings.py`.
Resolves: #149
* Fix the tab switching if a terminal on another tab exits
* Fix for those not running IBus, where the IBus workaround caused broken keys in other keymaps set with non-IBus tools
* PuTTY paste mode
* Updated and grouped default shortcuts in man page
* Fix PuTTY paste mode so Ctrl-Right-Drag, and application mouse handling in terminal still works
* Added smart copy mode switch to prefs
* Merge feature branch for tab/terminal title editing from Haim Daniel
* setup.py can install the manual (and by extension do can debuild)
* setup.py has (inactive) code for generating the html from the source
but this will break if rtd theme is not available
* A few changes to doc strings to make the autodoc prettier
* Added help shortcut, by default F1 to open the local manual
* Added button to About tab to launch manual
* A couple of additional string to translate related to manual/help
* Small tweak to setup.py to seperate build and install, and always attempt
to install manual by default.
* Small fix for systems (i.e. my 12.04 LTS) that don't set LANGUAGE for
whatever reason. This breaks the manual lookup
BIG update to translations, due to additions and changes. Unfortunately Launchpad
translations don't work with gettext fuzzy matches, so I'm afraid there's a lot
of rework for translators.
* Add a few new translatable strings
* Update the list of files to scan with additionas and deletions
* Update the template (pot) and country (po) files
* Fix the preferences window to be translated (LP:#1245806) (accidentally added earlier in gtk3 rev 1565, just noting here)
* Update tab close button icon to match lighter gnome-terminal one (accidentally added earlier in gtk3 rev 1565, just noting here)