kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #31673
Re: [PATCH] Add live footprint filtering in modview window
-
To:
<kicad-developers@xxxxxxxxxxxxxxxxxxx>
-
From:
Maciej Suminski <maciej.suminski@xxxxxxx>
-
Date:
Fri, 17 Nov 2017 00:07:09 +0100
-
Authentication-results:
spf=pass (sender IP is 188.184.36.48) smtp.mailfrom=cern.ch; lists.launchpad.net; dkim=none (message not signed) header.d=none;lists.launchpad.net; dmarc=bestguesspass action=none header.from=cern.ch;
-
In-reply-to:
<CAMfgvU9eDt8Pnsj=GiCLTdB8Z_tAkRbGn4mGZhYxi2QqwfNcKA@mail.gmail.com>
-
Spamdiagnosticmetadata:
NSPM
-
Spamdiagnosticoutput:
1:99
-
User-agent:
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0
Hi Oliver,
I admit that recently I have wished for a footprint filter (/me puts a
tinfoil hat), so I like the idea.
Being picky, I noticed that library and footprint filters behave a
little differently: for libraries one needs to explicitly use wildcards,
whereas it is not necessary for footprint names. To give an example:
"SMD:" leaves an empty list but "*SMD*:" gets me beloved SMD parts. For
footprint names it is enough to type "0603", no need to use "*0603*". As
you see, it is a minor detail, no showstoppers.
Cheers,
Orson
On 11/16/2017 10:26 PM, Oliver Walters wrote:
> Wayne,
>
> Patch set now goes to 0009 (all patches re-attached to this email).
>
> Most recent patch adds the following:
>
> - Busy cursor while loading each library (otherwise it feels like KiCad is
> just sleepy)
> - Further nullptr checks, trying to fix Seth's error
> - Removed a tooltip that erroneously suggested that regex was supported.
>
> Cheers
>
> On Wed, Nov 1, 2017 at 11:21 AM, Wayne Stambaugh <stambaughw@xxxxxxxxx>
> wrote:
>
>> On 10/31/2017 5:01 PM, Oliver Walters wrote:
>>> How should I proceed here then?
>>>
>>> I would like to see the various libraries being "cached" in the
>>> background, but this is increasing the scope of the work by a large
>> factor.
>>>
>>> One thing I have noticed:
>>>
>>> In eeschema when you launch the component viewer, it (on first run) maps
>>> and caches all the footprint libraries. This can take AGES (especially
>>> on Windows). However on subsequent launches of the component viewer it
>>> appears instantly. It appears to be keeping a static map of the
>>> footprint library data.
>>>
>>> a) Would this be an acceptable approach for the footprint viewer window
>>
>> Sure. Code reuse is a good thing. I'm pretty sure the threaded
>> footprint library code is split out from the component chooser so it
>> should be reusable.
>>
>>> b) What happens when the library data changes externally? Does component
>>> viewer need to be reloaded?
>>
>> No, only the library that changed gets reloaded the next time it's
>> accessed. It is not automatic. I thought about using wxFileWatcher but
>> that could be a lot of overhead for little net gain. See the pcb plugin
>> cache() functions.
>>
>>> c) Can we globally perform this caching in a background thread when
>>> KiCad launches? This will hide the large pauses (up to a minute under
>>> Windows) from the user...
>>
>> Yes, this should be done as a project element so that it can be accessed
>> from all of the main windows. Please keep in mind, this could be a lot
>> of work and given that we are nearing a stable 5 release feature freeze,
>> so if it's not by then it will not make it into the stable 5 release.
>>
>>>
>>> Oliver
>>>
>>> On Tue, Oct 31, 2017 at 11:32 PM, Wayne Stambaugh <stambaughw@xxxxxxxxx
>>> <mailto:stambaughw@xxxxxxxxx>> wrote:
>>>
>>> On 10/31/2017 1:25 AM, Oliver Walters wrote:
>>> > Hmm, I had thought that there was a way to load only the *names* of
>>> > footprints, rather than individually parsing each footprint file.
>> It
>>> > appears that this is not the case. Any suggestions on how the speed
>>> > could be improved? Currently I'm reading out all the footprint
>> names in
>>> > each footprint library and only storing the names (wxString)
>> rather than
>>> > the MODULE* objects. However, I still have to parse the entire
>> library
>>> > on load.
>>> >
>>> > Ideally, I think it would be good to just read in the names, and
>> then
>>> > load and display individual MODULE objects on demand.. Is this
>> possible?
>>>
>>> This is possible (although not implemented) for library types (kicad,
>>> geda) that use one file per footprint. You could just read the file
>>> names from the folder and load the files as required. If you want to
>>> search any other properties of the footprint, then you will have to
>> load
>>> all of the footprints anyway. I don't know if this would be worth
>> the
>>> effort.
>>>
>>> For library types that contain multiple footprints per file (legacy,
>>> Eagle), this wouldn't make much sense. Parsing the entire file just
>> to
>>> pick out the footprint names probably isn't going to save you very
>> much
>>> time.
>>>
>>> >
>>> > On Tue, Oct 31, 2017 at 10:40 AM, Wayne Stambaugh <
>> stambaughw@xxxxxxxxx <mailto:stambaughw@xxxxxxxxx>
>>> > <mailto:stambaughw@xxxxxxxxx <mailto:stambaughw@xxxxxxxxx>>>
>> wrote:
>>> >
>>> > On 10/30/2017 5:23 PM, Oliver Walters wrote:
>>> > > Thanks for the suggestions on fixing the text. I have that
>> sorted.
>>> > >
>>> > > I will look into different ways of caching footprint data so
>> it is quicker.
>>> > >
>>> > > Wayne, I didn't know about FOOTPRINT_FILTER I will switch to
>> using that
>>> > > instead (and provide regex search).
>>> >
>>> > Thanks Oliver!
>>> >
>>> > >
>>> > > On 31 Oct 2017 06:55, "Seth Hillbrand" <
>> seth.hillbrand@xxxxxxxxx <mailto:seth.hillbrand@xxxxxxxxx>
>>> <mailto:seth.hillbrand@xxxxxxxxx <mailto:seth.hillbrand@xxxxxxxxx>>
>>> > > <mailto:seth.hillbrand@xxxxxxxxx <mailto:
>> seth.hillbrand@xxxxxxxxx>
>>> <mailto:seth.hillbrand@xxxxxxxxx
>>> <mailto:seth.hillbrand@xxxxxxxxx>>>> wrote:
>>> > >
>>> > > On Mon, Oct 30, 2017 at 11:42 AM, Wayne Stambaugh
>>> > > <stambaughw@xxxxxxxxx <mailto:stambaughw@xxxxxxxxx>
>>> <mailto:stambaughw@xxxxxxxxx <mailto:stambaughw@xxxxxxxxx>>
>>> > <mailto:stambaughw@xxxxxxxxx <mailto:stambaughw@xxxxxxxxx>
>>> <mailto:stambaughw@xxxxxxxxx <mailto:stambaughw@xxxxxxxxx>>>>wrote:
>>> > >
>>> > > On 10/30/2017 1:16 PM, Seth Hillbrand wrote:
>>> > > > Oliver, this is neat and very helpful.
>>> > > >
>>> > > > The greyed-out thing is a wx2.8 bug. You can work
>>> > around it by setting
>>> > > > the foreground color when updating the filter like
>>> this:
>>> > > >
>>> > > > void FOOTPRINT_VIEWER_FRAME::OnFilterUpdated(
>>> > wxCommandEvent& event )
>>> > > > {
>>> > > > + // Workaround wx2.8 bug showing greyed color
>>> > > > + if( m_searchBox->GetValue() !=
>>> > m_searchBox->GetDescriptiveText() )
>>> > > > + m_searchBox->SetForegroundColour(
>>> > > > m_searchBox->GetDefaultAttributes().colFg );
>>> > > > +
>>> > > > // Filter is non case sensitive
>>> > > > wxString filter =
>>> m_searchBox->GetValue().Lower();
>>> > > >
>>> > > > The searchbox handles resetting it to grey on
>> idle()
>>> > when the text is empty.
>>> > >
>>> > > Don't you mean wx 3.0? CMake should not even
>>> generate the
>>> > build
>>> > > configuration files without wx 3.0 or greater.
>>> > >
>>> > >
>>> > > Hmm... This was an issue back in 2.8 that appears to be
>> only
>>> > partly
>>> > > fixed. The workaround I suggest above is functional
>>> but, for
>>> > this,
>>> > > we can also execute a cleaner fix by setting the
>> descriptive
>>> > text in
>>> > > the declaration:
>>> > >
>>> > > @@ -67,9 +67,10 @@ void
>>> FOOTPRINT_VIEWER_FRAME::ReCreateHToolbar()
>>> > > KiBitmap( module_xpm ),
>>> > > _( "Select footprint to
>>> > browse" ) );
>>> > >
>>> > > - m_searchBox = new wxSearchCtrl( m_mainToolBar,
>>> > > ID_MODVIEW_SEARCH_TEXT );
>>> > > + m_searchBox = new wxSearchCtrl( m_mainToolBar,
>>> > > ID_MODVIEW_SEARCH_TEXT,
>>> > > + _( "Enter filter string" ) );
>>> > > m_searchBox->SetMinSize( wxSize( 250, 30 ) );
>>> > > - m_searchBox->SetDescriptiveText( _( "Enter
>> filter
>>> > string" ) );
>>> > >
>>> > >
>>> > >
>>> > > _______________________________________________
>>> > > Mailing list: https://launchpad.net/~kicad-developers
>>> <https://launchpad.net/~kicad-developers>
>>> > <https://launchpad.net/~kicad-developers
>>> <https://launchpad.net/~kicad-developers>>
>>> > > <https://launchpad.net/~kicad-developers
>>> <https://launchpad.net/~kicad-developers>
>>> > <https://launchpad.net/~kicad-developers
>>> <https://launchpad.net/~kicad-developers>>>
>>> > > Post to : kicad-developers@xxxxxxxxxxxxxxxxxxx
>>> <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
>>> > <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
>>> <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>>
>>> > > <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
>>> <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
>>> > <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
>>> <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>>>
>>> > > Unsubscribe : https://launchpad.net/~kicad-developers
>>> <https://launchpad.net/~kicad-developers>
>>> > <https://launchpad.net/~kicad-developers
>>> <https://launchpad.net/~kicad-developers>>
>>> > > <https://launchpad.net/~kicad-developers
>>> <https://launchpad.net/~kicad-developers>
>>> > <https://launchpad.net/~kicad-developers
>>> <https://launchpad.net/~kicad-developers>>>
>>> > > More help : https://help.launchpad.net/ListHelp
>>> <https://help.launchpad.net/ListHelp>
>>> > <https://help.launchpad.net/ListHelp
>>> <https://help.launchpad.net/ListHelp>>
>>> > > <https://help.launchpad.net/ListHelp
>>> <https://help.launchpad.net/ListHelp>
>>> > <https://help.launchpad.net/ListHelp
>>> <https://help.launchpad.net/ListHelp>>>
>>> > >
>>> > >
>>> > >
>>> > > _______________________________________________
>>> > > Mailing list: https://launchpad.net/~kicad-developers
>>> <https://launchpad.net/~kicad-developers>
>>> > <https://launchpad.net/~kicad-developers
>>> <https://launchpad.net/~kicad-developers>>
>>> > > Post to : kicad-developers@xxxxxxxxxxxxxxxxxxx
>>> <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
>>> > <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
>>> <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>>
>>> > > Unsubscribe : https://launchpad.net/~kicad-developers
>>> <https://launchpad.net/~kicad-developers>
>>> > <https://launchpad.net/~kicad-developers
>>> <https://launchpad.net/~kicad-developers>>
>>> > > More help : https://help.launchpad.net/ListHelp
>>> <https://help.launchpad.net/ListHelp>
>>> > <https://help.launchpad.net/ListHelp
>>> <https://help.launchpad.net/ListHelp>>
>>> > >
>>> >
>>> >
>>> > _______________________________________________
>>> > Mailing list: https://launchpad.net/~kicad-developers
>>> <https://launchpad.net/~kicad-developers>
>>> > <https://launchpad.net/~kicad-developers
>>> <https://launchpad.net/~kicad-developers>>
>>> > Post to : kicad-developers@xxxxxxxxxxxxxxxxxxx
>>> <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
>>> > <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
>>> <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>>
>>> > Unsubscribe : https://launchpad.net/~kicad-developers
>>> <https://launchpad.net/~kicad-developers>
>>> > <https://launchpad.net/~kicad-developers
>>> <https://launchpad.net/~kicad-developers>>
>>> > More help : https://help.launchpad.net/ListHelp
>>> <https://help.launchpad.net/ListHelp>
>>> > <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
>
Follow ups
References
-
[PATCH] Add live footprint filtering in modview window
From: Oliver Walters, 2017-10-29
-
Re: [PATCH] Add live footprint filtering in modview window
From: Chris Fiege, 2017-10-30
-
Re: [PATCH] Add live footprint filtering in modview window
From: Seth Hillbrand, 2017-10-30
-
Re: [PATCH] Add live footprint filtering in modview window
From: Wayne Stambaugh, 2017-10-30
-
Re: [PATCH] Add live footprint filtering in modview window
From: Seth Hillbrand, 2017-10-30
-
Re: [PATCH] Add live footprint filtering in modview window
From: Oliver Walters, 2017-10-30
-
Re: [PATCH] Add live footprint filtering in modview window
From: Wayne Stambaugh, 2017-10-30
-
Re: [PATCH] Add live footprint filtering in modview window
From: Oliver Walters, 2017-10-31
-
Re: [PATCH] Add live footprint filtering in modview window
From: Wayne Stambaugh, 2017-10-31
-
Re: [PATCH] Add live footprint filtering in modview window
From: Oliver Walters, 2017-10-31
-
Re: [PATCH] Add live footprint filtering in modview window
From: Wayne Stambaugh, 2017-11-01
-
Re: [PATCH] Add live footprint filtering in modview window
From: Oliver Walters, 2017-11-16