@Pecan:
Can you give some more information what the rework can do and how it works? Thank you!
The old cbKeybinder 1.0 was created 14 years ago using wxCode
(
http://wxcode.sourceforge.net/components/keybinder) as a model.
wxCode KeyBinder used a bazillion OnChar wxEvtHandlers to intercept and interpret keyboard input.[4]
It worked satisfactorily until about a year ago, when it could no longer re-toggle a check menu item after the first toggle.
This was caused by changes in wxUpdateUI usage. I was never able to find a good work-around that didn't require issuing wxUpdateUI just before every toggle.[2]
I noted that CodeLite did not have the problem. It doesn't use the wxEvtHander model and therefore does not have to manage wxEvtHandlers on every window. [1]
CodeLite sets menu items directly at app initialization, does not have to interpret OnChar event key codes, and even allows users to ask/for and set global accelerators as well as menu items.
It's a much more efficient and safer model.
Amazingly, it makes all app accelerators usable to wxAUI frames by managing the wxAccelerator table.
I have not implemented all features allowed by the CodeLite model. My purpose for
cbKeyBinder 2.0 was to implement the base features of the model while preserving
user KeyBindings from version 1.0 .[3]
[1] For each window, KeyBinder ver-1 had to assure it's event hander parented any other, else it could have missed keyboard accerators. Not so reliable.
[2] For some reason, wxWidgets (or CodeBlocks) stopped updating the state of check menu items such that when fetched by a plugin it always showed the old setting until the menu item was reactivated by the user (which caused a wxUpdateUI event).
And it could not be programatically set without issuing a wxUpdateUI event. That would have been seen by every task connected to UpdateUI events. That made me uneasy. Issuing unwarranted wxUpdateUI events could have broken too much code.
[3] In particular I have not yet implemented wxAUI support or allowing users to set global accelerators.
[4] wxCode also used a raw Matryoshka doll array structure incredibly hard to understand and maintain. I'm happy to be out from under that nest of dolls.