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> 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> > 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>> 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>>> >> 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>>>> 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>>>>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@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>> >> > > > 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>> >> > > > 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@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>> >> > > 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@lists.launchpad.net Unsubscribe : https://launchpad.net/~kicad-developers More help : https://help.launchpad.net/ListHelp