kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #31774
Re: [PATCH] Add live footprint filtering in modview window
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.walters@xxxxxxxxx> 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 <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>>
>> > >
>> > >
>> >
>> >
>>
>>
>
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-17