← Back to team overview

kicad-developers team mailing list archive

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

 

Seth,

Currently at work but I'll have a look at these issues ASAP. I'd like to
get this merged :)

On Fri, Nov 17, 2017 at 9:46 AM, Seth Hillbrand <seth.hillbrand@xxxxxxxxx>
wrote:

> Hi Oliver-
>
> I found where the issue is.  I apparently have an invalid line in my
> fp-lib-table.  It lists my github library as type "KiCad".  This is why the
> URL looked odd in the debug message.  I have to admit, I'm not certain how
> this got mixed up but it must have been my mistake at some point in the
> past.  However, I think we should be able to handle a bad line without
> crashing.
>
> Once I fixed the error in my fp-lib-table, your patch functions without
> crashing.  Couple comments:
>
> - When the user clicks on a new library, it seems to move the location of
> the selected row to the top of the listbox.  This isn't a problem if you
> are scrolling but clicking around, I find it problematic.
> - The layout of the window doesn't seem to adjust well to changing the
> width.  (see attached image)  It seems to remember the starting width and
> not unwrap when enlarged.
>
> Thanks for the work on this!
>
> Best-
> Seth
>
>
>
>
> On Thu, Nov 16, 2017 at 1:26 PM, Oliver Walters <
> oliver.henry.walters@xxxxxxxxx> 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