← Back to team overview

kicad-developers team mailing list archive

Re: [PATCH] Add live footprint filtering in modview window

 

Orson,

Yes this is correct. I have noticed this too and there is a workaround I
can make.

On Fri, Nov 17, 2017 at 10:07 AM, Maciej Suminski <maciej.suminski@xxxxxxx>
wrote:

> 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
> >
>
> _______________________________________________
> 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