← Back to team overview

kicad-developers team mailing list archive

Re: [FEATURE] Partial selection in pcbnew

 

On 5/9/2017 5:49 AM, Maciej Sumiński wrote:
> Hi Oliver,
> 
> Unfortunately, as you have noticed - there is no way to draw dashed
> lines in GAL at the moment.
> 
> I really like the new way of the selection mode indication. I vote for
> merging the patch. If there are no other objections, I will do it.

I'm fine with it.

Wayne

> 
> Regards,
> Orson
> 
> On 05/09/2017 09:32 AM, Oliver Walters wrote:
>> Two more patches for this set (attached)
>>
>> 0017 - Slight fix for arc segment hit test (line width was not accounted
>> for)
>> 0018 - SELECTION_AREA color now indicates selection mode as discussed above:
>>
>> a) Normal selection = BLUE
>> b) Addition selection = GREEN (Shift modifier)
>> c) Subtraction selection = RED (Control modifier)
>>
>> Additionally the line color indicates whether it is window selection (left
>> to right) or crossing selection (right to left). This is in lieu of making
>> the line dashed which does not seem to be possible unless that is added to
>> GAL_CAIRO and GAL_OPENGL.
>>
>> Regards,
>> Oliver
>>
>> On Tue, May 9, 2017 at 3:22 PM, Andrey Kuznetsov <kandrey89@xxxxxxxxx>
>> wrote:
>>
>>> What's CTRL taken by?
>>> I thought CTRL would be used to toggle grid snapping?
>>>
>>> On Mon, May 8, 2017 at 3:39 PM, José Ignacio <jose.cyborg@xxxxxxxxx>
>>> wrote:
>>>
>>>> Or switching between object and grid snap :)
>>>>
>>>> On Mon, May 8, 2017 at 5:34 PM, Wayne Stambaugh <stambaughw@xxxxxxxxx>
>>>> wrote:
>>>>
>>>>> I tend to lean toward Oliver's approach.  Most CAD tools I've used have
>>>>> this type of includes vs intersects selection paradigm.  I don't see the
>>>>> need to tie up the modifier key if we don't have to.  I would prefer
>>>>> that we keep a modifier key open for something like orthogonal move.
>>>>>
>>>>> On 5/8/2017 5:51 PM, Oliver Walters wrote:
>>>>>> I was approaching this from having used mechanical CAD tools where the
>>>>>> direction of selection is the standard approach. Whatever function is
>>>>>> chosen, it will still be required that the users adjust to the new
>>>>>> style, manuals updated, etc.
>>>>>>
>>>>>> Is assigning what is essentially the last remaining modifier key worth
>>>>>> it for this?
>>>>>>
>>>>>> On 8 May 2017 23:55, "Nick Østergaard" <oe.nick@xxxxxxxxx
>>>>>> <mailto:oe.nick@xxxxxxxxx>> wrote:
>>>>>>
>>>>>>     2017-05-08 14:59 GMT+02:00 Maciej Sumiński <
>>>>> maciej.suminski@xxxxxxx
>>>>>>     <mailto:maciej.suminski@xxxxxxx>>:
>>>>>>     > 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 personally prefer modifier keys as we are used to in Gimp and
>>>>>>     Inkscape.
>>>>>>
>>>>>>     > 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
>>>>>>     <mailto: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 <mailto: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
>>>>>>     <mailto: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
>>>>>>     <https://launchpad.net/~kicad-developers>
>>>>>>     >>>>> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>>>>>>     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
>>>>>>     >>>>> Unsubscribe : https://launchpad.net/~kicad-developers
>>>>>>     <https://launchpad.net/~kicad-developers>
>>>>>>     >>>>> More help   : https://help.launchpad.net/ListHelp
>>>>>>     <https://help.launchpad.net/ListHelp>
>>>>>>     >>>>>
>>>>>>     >>>>
>>>>>>     >>>> _______________________________________________
>>>>>>     >>>> Mailing list: https://launchpad.net/~kicad-developers
>>>>>>     <https://launchpad.net/~kicad-developers>
>>>>>>     >>>> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>>>>>>     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
>>>>>>     >>>> Unsubscribe : https://launchpad.net/~kicad-developers
>>>>>>     <https://launchpad.net/~kicad-developers>
>>>>>>     >>>> More help   : https://help.launchpad.net/ListHelp
>>>>>>     <https://help.launchpad.net/ListHelp>
>>>>>>     >>>>
>>>>>>     >>>
>>>>>>     >>>
>>>>>>     >>
>>>>>>     >
>>>>>>     >
>>>>>>     >
>>>>>>     > _______________________________________________
>>>>>>     > Mailing list: https://launchpad.net/~kicad-developers
>>>>>>     <https://launchpad.net/~kicad-developers>
>>>>>>     > Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>>>>>>     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
>>>>>>     > Unsubscribe : https://launchpad.net/~kicad-developers
>>>>>>     <https://launchpad.net/~kicad-developers>
>>>>>>     > More help   : https://help.launchpad.net/ListHelp
>>>>>>     <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
>>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> 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
>>>>
>>>>
>>>
>>>
>>> --
>>> Remember The Past, Live The Present, Change The Future
>>> Those who look only to the past or the present are certain to miss the
>>> future [JFK]
>>>
>>> kandrey89@xxxxxxxxx
>>> Live Long and Prosper,
>>> Andrey
>>>
>>> _______________________________________________
>>> 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
>>
> 
> 
> 
> 
> _______________________________________________
> 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
> 


References