Re: [Kicad-developers] Adding global mouse shortcuts in GAL tool framework

2018-11-24 Thread Maciej Suminski
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

2018-11-23 Thread John Beard
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

2018-11-23 Thread Maciej Sumiński
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

2018-11-21 Thread John Beard
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