Just an update here:

The compromise didn’t turn out to be one after all.  I had always assumed 
TOOL_ACTION::LegacyHotKey( HK_RESET_LOCAL_COORD ) looked up the hotkey’s ID and 
stored it in the action, but it doesn’t: it looks up and stores the 
key-combination.  So the proposal: "The default hotkey key-combinations are 
defined in the TOOL_ACTION constructors." is already how it works.

That means I can put the mapping stuff on the long finger.  I’ll still be able 
to get rid of the wxIDs and all their associated mappings.

With one caveat: the toolbars are still using the wxIDs.  So we also need an 
ACTION_TOOLBAR.  (Which will also remove yet another copy of duplicated UI 
strings when instantiating toolbar buttons.)

I thought about a CONDITIONAL_TOOLBAR as well which would use the conditions to 
set the tool highlighting, but I think that’s probably overkill.  We already 
have SyncMenusAndToolbars() which updates their highlighting.

Cheers,
Jeff.


> On 12 May 2019, at 20:42, Jeff Young <[email protected]> wrote:
> 
> OK, how about a compromise:
> 
> The default hotkey key-combinations are defined in the TOOL_ACTION 
> constructors.
> 
> A config file is then read which contain maps from action-name to 
> key-combinations.  Each map entry is applied to its action, overwriting the 
> default.
> 
> This also allows us to skip yet-ever-more-config-options: if the user wants 
> immediate actions then they can import the immediate-action-mappings config 
> file.  The default will be the (somewhat more learner-friendly) 
> select-tool-mappings.
> 
> Similarly, as Tom suggests they could import the Altium-mappings config file.
> 
> For Tom’s last paragraph, I plan to rename CONTEXT_MENU to ACTION_MENU.  
> CONDITIONAL_MENUs constructor then takes a isContextMenu flag; if it’s not 
> set then conditions which evaluate to false produce disabled menu items 
> (rather than non-existant menu items).
> 
> We can then plug these menus into the main menu bar and get rid of the 
> wx-based IDs altogether (and all the corresponding EVT_MENU and EVT_UPDATE_UI 
> calls).  Actions will get dispatched automatically by TOOL_DISPATCHER, and 
> the enabling/disabling will get handled automatically by the CONDITIONs.
> 
> Comments?
> 
> Cheers,
> Jeff
> 
> 
>> On 10 May 2019, at 16:01, Tomasz Wlostowski <[email protected]> 
>> wrote:
>> 
>> On 10/05/2019 11:46, John Beard wrote:
>>> Do the tool actions actually even need to know their hotkey? I think
>>> perhaps they shouldn't really care *what* the hotkey is or even if one
>>> is set, it's not their problem. It's the tool framework that should be
>>> maintaining this mapping.
>> 
>> Hi,
>> 
>> +1 here. The hotkeys (standard, sequential and
>> whatever-else-we-come-up-with) can be kept separate from the ACTION
>> objets in the code and stored in a configuration file. This would let
>> people coming from other EDA packages to have their own config files
>> with custom hotkey mappings.
>> 
>> IMO the same approach later can be used for toolbar/menu layouts.
>> 
>> Cheers,
>> Tom
>> 
>> _______________________________________________
>> Mailing list: https://launchpad.net/~kicad-developers
>> Post to     : [email protected]
>> Unsubscribe : https://launchpad.net/~kicad-developers
>> More help   : https://help.launchpad.net/ListHelp
> 
> 
> _______________________________________________
> Mailing list: https://launchpad.net/~kicad-developers
> Post to     : [email protected]
> Unsubscribe : https://launchpad.net/~kicad-developers
> More help   : https://help.launchpad.net/ListHelp

_______________________________________________
Mailing list: https://launchpad.net/~kicad-developers
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp

Reply via email to