← Back to team overview

kicad-developers team mailing list archive

Re: [FEATURE] Partial selection in pcbnew

 

JP,

I think that the code "wxPoint near" should also be changed to "wxPoint
nearpt" ('near' also seems to be a somewhat-reserved keyword)

On Wed, May 10, 2017 at 11:23 PM, Oliver Walters <
oliver.henry.walters@xxxxxxxxx> wrote:

> Looks like JP has already fixed this :)
>
> On Wed, May 10, 2017 at 10:56 PM, Wayne Stambaugh <stambaughw@xxxxxxxxx>
> wrote:
>
>> Windows builds on mingw using gcc 6.3.0 are broken.  Here is the
>> compiler error:
>>
>> C:/msys64/home/wstambaugh/src/kicad-trunk/common/base_struct.cpp: In
>> member function 'bool EDA_RECT::IntersectsCircleEdge(const wxPoint&,
>> int, int) const':
>> C:/msys64/home/wstambaugh/src/kicad-trunk/common/base_struct.cpp:592:17:
>> error: expected unqualified-id before '=' token
>>      wxPoint far = FarthestPointTo( aCenter );
>>                  ^
>> C:/msys64/home/wstambaugh/src/kicad-trunk/common/base_struct.cpp:594:18:
>> error: expected primary-expression before 'double'
>>      double fx = (double) far.x;
>>                   ^~~~~~
>> C:/msys64/home/wstambaugh/src/kicad-trunk/common/base_struct.cpp:594:18:
>> error: expected ')' before 'double'
>> C:/msys64/home/wstambaugh/src/kicad-trunk/common/base_struct.cpp:595:18:
>> error: expected primary-expression before 'double'
>>      double fy = (double) far.y;
>>                   ^~~~~~
>> C:/msys64/home/wstambaugh/src/kicad-trunk/common/base_struct.cpp:595:18:
>> error: expected ')' before 'double'
>> make[2]: *** [common/CMakeFiles/common.dir/build.make:1200:
>> common/CMakeFiles/common.dir/base_struct.cpp.obj] Error 1
>> make[1]: *** [CMakeFiles/Makefile2:326:
>> common/CMakeFiles/common.dir/all] Error 2
>>
>>
>> On 5/10/2017 5:41 AM, Maciej Sumiński wrote:
>> > Hi Oliver,
>> >
>> > Thank you very much for your effort, I have just pushed your patches to
>> > the master branch.
>> >
>> > 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
>> >
>>
>> _______________________________________________
>> 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
>>
>
>

Follow ups

References