Re: [Kicad-developers] Adding global mouse shortcuts in GAL tool framework
Hi John, I am glad you like the idea. I agree it is better to wait until the legacy canvas removal, it feels like we are quite close to reaching that point. Cheers, Orson On 11/23/18 10:04 PM, John Beard wrote: > Hi Orson, > > Thanks for the idea - seems like that could be a fairly flexible way > to generalise action shortcuts. > > Perhaps such a refactor would be better after the hotkeys aren't > synced with legacy, though. > > Cheers, > > John > On Fri, Nov 23, 2018 at 8:58 AM Maciej Sumiński > wrote: >> >> Hi John, >> >> One possible way of solving the problem is to change the m_defaultHotkey >> in TOOL_ACTION class to a TOOL_EVENT field which says what triggers the >> action. Then ACTION_MANAGER instead of comparing hotkeys should run >> TOOL_EVENT::Matches() to check whether a processed TOOL_EVENT is >> supposed to fire an action. >> >> Cheers, >> Orson >> >> On 11/21/18 11:15 AM, John Beard wrote: >>> Hi, >>> >>> A little technical query provoked by someone else's question, which I >>> was unable to answer. >>> >>> Say one wanted to add a global mouse shortcut, for example, double >>> middle-click to do "zoom-to-fit" [1]. >>> >>> The current mouse events are handled on a contextual basis in the >>> event loops for each tool. Thus, each tool handles its own clicks, >>> drags, etc, which generally makes sense for the basic left/right >>> clicks as what that does is usually highly tool-dependent. Global key >>> shortcuts for ACTIONs are handled at a higher level and and either >>> trigger a transition set by setTransitions(), or translated to an >>> event and caught by the current tool's event loop as their own event >>> (checked with evt->IsAction()) >>> >>> However, there appears to be no way to add a mouse click pattern to an >>> ACTION, thus you can't have a global double-middle-click, unless you >>> add an "if( evt->IsDblClick( BTN_MIDDLE))" to every event loop. >>> >>> What would be the right way (if any) to approach this? I'm ignoring >>> for now the UI implications of presenting such a shortcut in the >>> hotkey dialog, implementing the "set hotkey" action, and any problems >>> that might arise in having it co-exist with legacy hotkeys. >>> >>> Cheers, >>> >>> John >>> >>> [1]: https://bugs.launchpad.net/kicad/+bug/1480868 >> >> ___ >> Mailing list: https://launchpad.net/~kicad-developers >> Post to : kicad-developers@lists.launchpad.net >> Unsubscribe : https://launchpad.net/~kicad-developers >> More help : https://help.launchpad.net/ListHelp signature.asc Description: OpenPGP digital signature ___ Mailing list: https://launchpad.net/~kicad-developers Post to : kicad-developers@lists.launchpad.net Unsubscribe : https://launchpad.net/~kicad-developers More help : https://help.launchpad.net/ListHelp
Re: [Kicad-developers] Adding global mouse shortcuts in GAL tool framework
Hi Orson, Thanks for the idea - seems like that could be a fairly flexible way to generalise action shortcuts. Perhaps such a refactor would be better after the hotkeys aren't synced with legacy, though. Cheers, John On Fri, Nov 23, 2018 at 8:58 AM Maciej Sumiński wrote: > > Hi John, > > One possible way of solving the problem is to change the m_defaultHotkey > in TOOL_ACTION class to a TOOL_EVENT field which says what triggers the > action. Then ACTION_MANAGER instead of comparing hotkeys should run > TOOL_EVENT::Matches() to check whether a processed TOOL_EVENT is > supposed to fire an action. > > Cheers, > Orson > > On 11/21/18 11:15 AM, John Beard wrote: > > Hi, > > > > A little technical query provoked by someone else's question, which I > > was unable to answer. > > > > Say one wanted to add a global mouse shortcut, for example, double > > middle-click to do "zoom-to-fit" [1]. > > > > The current mouse events are handled on a contextual basis in the > > event loops for each tool. Thus, each tool handles its own clicks, > > drags, etc, which generally makes sense for the basic left/right > > clicks as what that does is usually highly tool-dependent. Global key > > shortcuts for ACTIONs are handled at a higher level and and either > > trigger a transition set by setTransitions(), or translated to an > > event and caught by the current tool's event loop as their own event > > (checked with evt->IsAction()) > > > > However, there appears to be no way to add a mouse click pattern to an > > ACTION, thus you can't have a global double-middle-click, unless you > > add an "if( evt->IsDblClick( BTN_MIDDLE))" to every event loop. > > > > What would be the right way (if any) to approach this? I'm ignoring > > for now the UI implications of presenting such a shortcut in the > > hotkey dialog, implementing the "set hotkey" action, and any problems > > that might arise in having it co-exist with legacy hotkeys. > > > > Cheers, > > > > John > > > > [1]: https://bugs.launchpad.net/kicad/+bug/1480868 > > ___ > Mailing list: https://launchpad.net/~kicad-developers > Post to : kicad-developers@lists.launchpad.net > Unsubscribe : https://launchpad.net/~kicad-developers > More help : https://help.launchpad.net/ListHelp ___ Mailing list: https://launchpad.net/~kicad-developers Post to : kicad-developers@lists.launchpad.net Unsubscribe : https://launchpad.net/~kicad-developers More help : https://help.launchpad.net/ListHelp
Re: [Kicad-developers] Adding global mouse shortcuts in GAL tool framework
Hi John, One possible way of solving the problem is to change the m_defaultHotkey in TOOL_ACTION class to a TOOL_EVENT field which says what triggers the action. Then ACTION_MANAGER instead of comparing hotkeys should run TOOL_EVENT::Matches() to check whether a processed TOOL_EVENT is supposed to fire an action. Cheers, Orson On 11/21/18 11:15 AM, John Beard wrote: > Hi, > > A little technical query provoked by someone else's question, which I > was unable to answer. > > Say one wanted to add a global mouse shortcut, for example, double > middle-click to do "zoom-to-fit" [1]. > > The current mouse events are handled on a contextual basis in the > event loops for each tool. Thus, each tool handles its own clicks, > drags, etc, which generally makes sense for the basic left/right > clicks as what that does is usually highly tool-dependent. Global key > shortcuts for ACTIONs are handled at a higher level and and either > trigger a transition set by setTransitions(), or translated to an > event and caught by the current tool's event loop as their own event > (checked with evt->IsAction()) > > However, there appears to be no way to add a mouse click pattern to an > ACTION, thus you can't have a global double-middle-click, unless you > add an "if( evt->IsDblClick( BTN_MIDDLE))" to every event loop. > > What would be the right way (if any) to approach this? I'm ignoring > for now the UI implications of presenting such a shortcut in the > hotkey dialog, implementing the "set hotkey" action, and any problems > that might arise in having it co-exist with legacy hotkeys. > > Cheers, > > John > > [1]: https://bugs.launchpad.net/kicad/+bug/1480868 signature.asc Description: OpenPGP digital signature ___ Mailing list: https://launchpad.net/~kicad-developers Post to : kicad-developers@lists.launchpad.net Unsubscribe : https://launchpad.net/~kicad-developers More help : https://help.launchpad.net/ListHelp
[Kicad-developers] Adding global mouse shortcuts in GAL tool framework
Hi, A little technical query provoked by someone else's question, which I was unable to answer. Say one wanted to add a global mouse shortcut, for example, double middle-click to do "zoom-to-fit" [1]. The current mouse events are handled on a contextual basis in the event loops for each tool. Thus, each tool handles its own clicks, drags, etc, which generally makes sense for the basic left/right clicks as what that does is usually highly tool-dependent. Global key shortcuts for ACTIONs are handled at a higher level and and either trigger a transition set by setTransitions(), or translated to an event and caught by the current tool's event loop as their own event (checked with evt->IsAction()) However, there appears to be no way to add a mouse click pattern to an ACTION, thus you can't have a global double-middle-click, unless you add an "if( evt->IsDblClick( BTN_MIDDLE))" to every event loop. What would be the right way (if any) to approach this? I'm ignoring for now the UI implications of presenting such a shortcut in the hotkey dialog, implementing the "set hotkey" action, and any problems that might arise in having it co-exist with legacy hotkeys. Cheers, John [1]: https://bugs.launchpad.net/kicad/+bug/1480868 ___ Mailing list: https://launchpad.net/~kicad-developers Post to : kicad-developers@lists.launchpad.net Unsubscribe : https://launchpad.net/~kicad-developers More help : https://help.launchpad.net/ListHelp