← Back to team overview

kicad-developers team mailing list archive

Re: [FEATURE] Partial selection in pcbnew

 

Hi Oliver,

I took your set of patches for a test drive. I am glad that you thought
about the subtractive mode in the selection tool, it really fits there.
Regarding different selection modes - I like the idea, but I think the
two modes should be more distinct, changing the selection direction
might be not enough.

I observed another user trying out the tool and he could not tell how
does it work, but noticed it is a bit different than the old tool.

Perhaps one of the following would work:

- change the selection box colors so they are easier to tell apart (my
mate was surprised to find out there were two colors for the selection box)

- change the mode using a key modifier (I think only Alt is left free)
or mouse button

- add an option to select the default mode (though I do not really like
having too many options to set)

I agree with Tom about the geometry library. IIRC currently it is only
used by the PNS router, but ultimately we would like to use it in the
primary model. The library already provides methods to check for
collisions between basic shapes, yet we still need a few more.
It would be a pity to drop your code now, so perhaps we could merge the
code as is and fix the methods during the model refactor.

Just to let you know, there are a few code formatting violations (mostly
not keeping two empty lines between method definitions in .cpp files),
but as they are infrequent - I can handle them myself.

Regards,
Orson

On 05/07/2017 02:11 AM, Oliver Walters wrote:
> Maciej,
> 
> That was it! Thanks for the hint.
> 
> #0016 attached, which fixes both issues:
> 
> a) No more double-selection of module and module-items (pads / lines / etc)
> in PCBNEW
> b) Disable selection of entire module in MODEDIT
> 
> As far as I can tell this patchset is now working very well.
> 
> Regards,
> Oliver
> 
> On Sat, May 6, 2017 at 10:21 PM, Oliver Walters <
> oliver.henry.walters@xxxxxxxxx> wrote:
> 
>> Maciej,
>>
>> Thanks, I'll look into that. If you have a chance to look over what I've
>> done, I'd appreciate that :)
>>
>> On Sat, May 6, 2017 at 10:17 PM, Maciej Suminski <maciej.suminski@xxxxxxx>
>> wrote:
>>
>>> Hi Oliver,
>>>
>>> I have not tested the patches yet, but my gut feeling says that you miss
>>> calling SELECTION_TOOL::selectable() to filter out redundant items.
>>>
>>> Regards,
>>> Orson
>>>
>>> On 05/06/2017 09:21 AM, Oliver Walters wrote:
>>>> Three further patch files attached:
>>>>
>>>> - Different color select box based on direction
>>>> - Fixed HitTest for EDA_TEXT
>>>> - Control modifier unselects anything in rectangle.
>>>>
>>>> The major piece of feedback I need right now is how to perfect the
>>>> behaviour of the tool in PCBNEW and MODEDIT:
>>>>
>>>> a) PCBNEW
>>>>
>>>> Selecting part of a MODULE (right to left) will select both the entire
>>>> module and also any parts of the module that you touched (lines, pads,
>>>> etc). Then, when you move the module, the doubly-selected items are
>>> moved
>>>> twice! It is hard to describe properly but if you try this you will see
>>>> what I mean.
>>>>
>>>> b) MODEDIT
>>>>
>>>> Selecting any item in the footprint selects the entire footprint, which
>>> is
>>>> highly undesirable. In this case I think the best approach is to filter
>>> the
>>>> MODULE from the selection entirely. But I am not sure how to do this.
>>>>
>>>> Feedback welcome :)
>>>>
>>>> Regards,
>>>> Oliver
>>>>
>>>> On Tue, May 2, 2017 at 5:25 PM, Oliver Walters <
>>>> oliver.henry.walters@xxxxxxxxx> wrote:
>>>>
>>>>> I have attached a patch-set that implements "partial selection" of
>>> objects
>>>>> when the selection box is dragged right-to-left.
>>>>>
>>>>> L -> R = Objects must be completely enclosed to be selected
>>>>> R -> L = Objects that intersect the selection rectangle will be
>>> selected.
>>>>>
>>>>> To achieve this I had to fix a lot of the HitTest implementations as
>>> this
>>>>> was broken for most shapes, under a variety of edge cases (some HitTest
>>>>> code did not work at all).
>>>>>
>>>>> There are two issues I see as outstanding, and am unsure how to
>>> proceed:
>>>>>
>>>>> 1. When editing a PCB, selecting part of a footprint (e.g. a line of
>>> the
>>>>> courtyard) selects both that line and the entire footprint. This causes
>>>>> some issues when the footprint is dragged around the PCB. I believe
>>> that
>>>>> the line should not be selected separately, but the entire footprint
>>> should.
>>>>>
>>>>> 2. The inverse of 1. In the footprint editor, selecting a single
>>> graphical
>>>>> item selects the entire footprint. Somehow I would like to filter the
>>>>> selection such that individual items are selected but NOT the entire
>>>>> footprint.
>>>>>
>>>>> Feedback please! :)
>>>>>
>>>>> I have fixed hit testing (both for wxPoint and EDA_RECT comparison)
>>> for:
>>>>>
>>>>> - Pads (all shapes)
>>>>> - Lines
>>>>> - Circles
>>>>> - Arcs
>>>>> - Text items
>>>>> - Zones
>>>>> - Footprints
>>>>>
>>>>> Cheers,
>>>>> Oliver
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Mailing list: https://launchpad.net/~kicad-developers
>>>> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>>>> Unsubscribe : https://launchpad.net/~kicad-developers
>>>> More help   : https://help.launchpad.net/ListHelp
>>>>
>>>
>>> _______________________________________________
>>> Mailing list: https://launchpad.net/~kicad-developers
>>> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>>> Unsubscribe : https://launchpad.net/~kicad-developers
>>> More help   : https://help.launchpad.net/ListHelp
>>>
>>
>>
> 


Attachment: signature.asc
Description: OpenPGP digital signature


Follow ups

References