Oliver, I tested your footprint filtering patch set last night and it didn't go very well. The very first letter I typed ('r') in the filter control caused kicad to crash so it's not ready just yet.
Cheers, Wayne On 11/20/2017 06:57 PM, Oliver Walters wrote: > Wayne, > > Friendly bump in case this has been forgotten - this thread has wandered > around a fair bit. Patches 0001 through 0008 are in the email above. > > Thanks > > On Fri, Nov 17, 2017 at 11:05 PM, Oliver Walters > <oliver.henry.walt...@gmail.com <mailto:oliver.henry.walt...@gmail.com>> > wrote: > > Wayne, > > Please ignore the previous patch sets. I have made further tweaks > and the attached patch set 0001 through 0008 should be considered > canonical. > . > I have fixed a couple of pointer errors, and have also dropped the > filter-by-library functionality. It was a bit hooky and I'd rather > submit a solid functional set of patches and don't have time to > investigate further. > > I hope that the attached patch set meets your standards and can be > merged as-is :) > > Thanks! > > On Wed, Nov 1, 2017 at 11:21 AM, Wayne Stambaugh > <stambau...@gmail.com <mailto:stambau...@gmail.com>> 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 > <stambau...@gmail.com <mailto:stambau...@gmail.com> > > <mailto:stambau...@gmail.com <mailto:stambau...@gmail.com>>> 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 > <stambau...@gmail.com <mailto:stambau...@gmail.com> > <mailto:stambau...@gmail.com <mailto:stambau...@gmail.com>> > > > <mailto:stambau...@gmail.com <mailto:stambau...@gmail.com> > <mailto:stambau...@gmail.com <mailto:stambau...@gmail.com>>>> 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.hillbr...@gmail.com <mailto:seth.hillbr...@gmail.com> > <mailto:seth.hillbr...@gmail.com <mailto:seth.hillbr...@gmail.com>> > > <mailto:seth.hillbr...@gmail.com > <mailto:seth.hillbr...@gmail.com> > <mailto:seth.hillbr...@gmail.com <mailto:seth.hillbr...@gmail.com>>> > > > > <mailto:seth.hillbr...@gmail.com > <mailto:seth.hillbr...@gmail.com> > <mailto:seth.hillbr...@gmail.com <mailto:seth.hillbr...@gmail.com>> > > <mailto:seth.hillbr...@gmail.com > <mailto:seth.hillbr...@gmail.com> > > <mailto:seth.hillbr...@gmail.com > <mailto:seth.hillbr...@gmail.com>>>>> wrote: > > > > > > > > On Mon, Oct 30, 2017 at 11:42 AM, Wayne Stambaugh > > > > <stambau...@gmail.com > <mailto:stambau...@gmail.com> <mailto:stambau...@gmail.com > <mailto:stambau...@gmail.com>> > > <mailto:stambau...@gmail.com <mailto:stambau...@gmail.com> > <mailto:stambau...@gmail.com <mailto:stambau...@gmail.com>>> > > > <mailto:stambau...@gmail.com > <mailto:stambau...@gmail.com> <mailto:stambau...@gmail.com > <mailto:stambau...@gmail.com>> > > <mailto:stambau...@gmail.com <mailto:stambau...@gmail.com> > <mailto:stambau...@gmail.com <mailto:stambau...@gmail.com>>>>>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>>> > > > > <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@lists.launchpad.net > <mailto:kicad-developers@lists.launchpad.net> > > <mailto:kicad-developers@lists.launchpad.net > <mailto:kicad-developers@lists.launchpad.net>> > > > <mailto:kicad-developers@lists.launchpad.net > <mailto:kicad-developers@lists.launchpad.net> > > <mailto:kicad-developers@lists.launchpad.net > <mailto:kicad-developers@lists.launchpad.net>>> > > > > <mailto:kicad-developers@lists.launchpad.net > <mailto:kicad-developers@lists.launchpad.net> > > <mailto:kicad-developers@lists.launchpad.net > <mailto:kicad-developers@lists.launchpad.net>> > > > <mailto:kicad-developers@lists.launchpad.net > <mailto:kicad-developers@lists.launchpad.net> > > <mailto:kicad-developers@lists.launchpad.net > <mailto:kicad-developers@lists.launchpad.net>>>> > > > > 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>>> > > > > <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>>> > > > > <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>> > > > <https://launchpad.net/~kicad-developers > <https://launchpad.net/~kicad-developers> > > <https://launchpad.net/~kicad-developers > <https://launchpad.net/~kicad-developers>>> > > > > Post to : kicad-developers@lists.launchpad.net > <mailto:kicad-developers@lists.launchpad.net> > > <mailto:kicad-developers@lists.launchpad.net > <mailto:kicad-developers@lists.launchpad.net>> > > > <mailto:kicad-developers@lists.launchpad.net > <mailto:kicad-developers@lists.launchpad.net> > > <mailto:kicad-developers@lists.launchpad.net > <mailto:kicad-developers@lists.launchpad.net>>> > > > > 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>> > > > <https://launchpad.net/~kicad-developers > <https://launchpad.net/~kicad-developers> > > <https://launchpad.net/~kicad-developers > <https://launchpad.net/~kicad-developers>>> > > > Post to : kicad-developers@lists.launchpad.net > <mailto:kicad-developers@lists.launchpad.net> > > <mailto:kicad-developers@lists.launchpad.net > <mailto:kicad-developers@lists.launchpad.net>> > > > <mailto:kicad-developers@lists.launchpad.net > <mailto:kicad-developers@lists.launchpad.net> > > <mailto:kicad-developers@lists.launchpad.net > <mailto:kicad-developers@lists.launchpad.net>>> > > > 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 Post to : kicad-developers@lists.launchpad.net Unsubscribe : https://launchpad.net/~kicad-developers More help : https://help.launchpad.net/ListHelp