Merge pull request #5756 from RosettaCommons/roccomoretti/interactive_action_hotkeys
[Foldit] New UI Hotkey adjustment
A number of Hotkey-related improvements to the new interface.
The main feature is enabling the ability for people to rebind the selection interface action button hotkeys.
Part of this was reworking/refactoring the HotkeyTable system a bit. In the process, I've moved the HotkeyTable toward using the exec_id as a primary identifier. Key combos can be bound to the exec_id, and there's facilities for making sure that two exec_ids aren't bound to the same key combo, but things are refactored a bit around the primacy of the exec_ids.
Part of this is to allow for dynamic enabling/disabling of hotkeys. exec_ids can now be enabled/disabled, and when disabled their hotkey is invisible, available for other functions to use. Enabling them will only enable the hotkey if no one else is using it, or if it's been user-specified, in which case it will take control.
I've also changed how the hotkey.txt is viewed. It's no longer a raw dump of all hotkeys, it's now just a list of the rebound hotkeys -- hotkeys which are set at their default values are not listed. This should hopefully make things more flexible in the future regarding changing hotkey defaults and/or retiring old hotkeys. (As explicit key designations take primacy over the default values.)
I also needed to generalize how the hotkey updating system worked, to allow for updating the hints in the FloatMenu (as opposed to just the tooltips). There's also a short-string for hotkey designations, to give `CAS-T` instead of the can't-fit-on-a-button `Ctrl-Alt-Shift-T`. (Though the defaults for the actions should all be non-meta-ed single keys, so only people rebinding keys should see the issue.)
Release Notes:
* Allow action menu keyboard shortcuts to be rebound in the "Configure Keyboard Shortcuts" General Options submenu.
* Make sure that user-set keyboard shortcuts take priority over default shortcuts for other actions.
* To avoid conflicts with the actions menu, the default "Restore Very Best" and "Restore Credit Best" keyboard shortcuts were changed to Ctrl+B and Ctrl+C, respectively. These can be rebound in the "Configure Keyboard Shortcuts" General Options submenu.
* Made the "Configure Keyboard Shortcuts" dialog resizable.
* Clean up some residual keyboard shortcuts from the old interfaces & cross talk from other shortcuts. (e.g. Alt+T no longer invokes wiggle.)
* Add keyboard shortcuts for the side buttons (Help/Undo/View/Behavior/Cookbook). So as not to conflict with actions, these are F1/Alt+U/Alt+V/Alt-B/Alt+C by default. These can be rebound in the "Configure Keyboard Shortcuts" general options submenu
* Allow keyboard shortcuts to be bound to View Presets, including user defined presets (as with Recipes, these start off unbound.)
* Fix bug where the Color/View Protein/View Sidechains list in More View Options did not update when keyboard shortcuts were used.
* Add the screenshot and AlphaFold panel buttons to the list of rebindable keyboard shortcuts
* Other assorted hotkey-related bug and usability fixes.