← Back to team overview

kicad-developers team mailing list archive

Re: Wizard to download 3D shape libs from Github

 

Le 13/08/2015 21:20, jp charras a écrit :
> I wrote a wizard to download our 3D shape libs from our Github KiCad repo.
> 
> For guys who are interested at testing this wizard, here is a patch.
> 
> Although it works fine, it has an issue: the download process is very slow.
> 
> It uses a "brute force":
> It reads the main web page of packages3d to extract the URL of all
> .3dshapes folders available, and read the web page of each .3dshapes
> folder selected and read the URLs of 3D shape files.
> Then it reads and download all .wrl and .wings files (usually large
> files) found in selected folders.
> 
> So if someone knows a way to speed up these downloads from Github, let
> me know *exactly* how to do that.
> 
> (I am not a specialist of Github).

This patch replaces the previous patch.
It fixes 2 issues on Linux.


-- 
Jean-Pierre CHARRAS
=== modified file 'pcbnew/CMakeLists.txt'
--- pcbnew/CMakeLists.txt	2015-07-09 11:35:51 +0000
+++ pcbnew/CMakeLists.txt	2015-07-27 16:12:59 +0000
@@ -143,6 +143,8 @@
     dialogs/dialog_footprint_wizard_list.cpp
     dialogs/wizard_add_fplib_base.cpp
     dialogs/wizard_add_fplib.cpp
+    dialogs/wizard_3DShape_Libs_downloader_base.cpp
+    dialogs/wizard_3DShape_Libs_downloader.cpp
     )
 
 set( PCBNEW_IMPORT_DXF

=== added file 'pcbnew/dialogs/wizard_3DShape_Libs_downloader.cpp'
--- pcbnew/dialogs/wizard_3DShape_Libs_downloader.cpp	1970-01-01 00:00:00 +0000
+++ pcbnew/dialogs/wizard_3DShape_Libs_downloader.cpp	2015-08-16 15:20:52 +0000
@@ -0,0 +1,463 @@
+/*
+ * This program source code file is part of KiCad, a free EDA CAD application.
+ *
+ * Copyright (C) 2015 CERN
+ * Code derived from "wizard_add_fplib.cpp" ( @author Maciej Suminski <maciej.suminski@xxxxxxx> )
+ * Copyright (C) 2014-2015 Jean-Pierre Charras, jp.charras at wanadoo.fr
+ * Copyright (C) 1992-2015 KiCad Developers, see AUTHORS.txt for contributors.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, you may find one here:
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ * or you may search the http://www.gnu.org website for the version 2 license,
+ * or you may write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+ */
+
+/**
+ * @brief Wizard for selecting and dowloading D shapes libraries of footprints
+ * consisting of 3 steps:
+ * - select source and destination (Github URL and local folder)
+ * - pick and select libraries
+ * - download files
+ */
+
+#include <wx/wx.h>
+#include <wx/uri.h>
+#include <wx/dir.h>
+#include <wx/progdlg.h>
+
+#include <pgm_base.h>
+#include <project.h>
+#include <wizard_3DShape_Libs_downloader.h>
+#include <confirm.h>
+#include <3d_viewer.h>
+
+#include <../github/github_getliblist.h>
+
+// a key to store the default Kicad Github 3D libs URL
+#define KICAD_3DLIBS_URL_KEY wxT( "kicad_3Dlib_url" )
+#define KICAD_3DLIBS_LAST_DOWNLOAD_DIR wxT( "kicad_3Dlib_last_download_dir" )
+
+
+void Invoke3DShapeLibsDownloaderWizard( wxTopLevelWindow* aParent )
+{
+    WIZARD_3DSHAPE_LIBS_DOWNLOADER wizard( aParent );
+    wizard.RunWizard( wizard.GetFirstPage() );
+}
+
+
+WIZARD_3DSHAPE_LIBS_DOWNLOADER::WIZARD_3DSHAPE_LIBS_DOWNLOADER( wxWindow* aParent ) :
+    WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE( aParent )
+{
+    m_welcomeDlg = m_pages[0];
+    m_githubListDlg = m_pages[1];
+    m_reviewDlg = m_pages[2];
+
+    // Initialize default download dir
+    wxString default_path;
+    wxGetEnv( KISYS3DMOD, &default_path );
+    setDownloadDir( default_path );
+
+    // Restore the Github url
+    wxString githubUrl;
+
+    wxConfigBase* cfg = Pgm().CommonSettings();
+    cfg->Read( KICAD_3DLIBS_URL_KEY, &githubUrl );
+    cfg->Read( KICAD_3DLIBS_LAST_DOWNLOAD_DIR, &m_lastGithubDownloadDirectory );
+
+    if( !m_lastGithubDownloadDirectory.IsEmpty() )
+        setDownloadDir( m_lastGithubDownloadDirectory );
+    else
+        m_lastGithubDownloadDirectory = default_path;
+
+    if( githubUrl.IsEmpty() )
+        githubUrl = wxT( "https://github.com/KiCad/kicad-library/tree/master/modules/packages3d"; );
+
+    SetGithubURL( githubUrl );
+
+    // Give the minimal size to the dialog, which allows displaying any page
+    wxSize minsize;
+
+    for( unsigned ii = 0; ii < m_pages.size(); ii++ )
+    {
+        wxSize size = m_pages[ii]->GetSizer()->CalcMin();
+        minsize.x = std::max( minsize.x, size.x );
+        minsize.y = std::max( minsize.y, size.y );
+    }
+
+    SetMinSize( minsize );
+    SetPageSize( minsize );
+    GetSizer()->SetSizeHints( this );
+    Center();
+
+    setupDialogOrder();
+    updateGithubControls();
+
+    // When starting m_textCtrlGithubURL has the focus, and the text is selected,
+    // and not fully visible.
+    // Forcing deselection does not work, at least on W7 with wxWidgets 3.0.2
+    // So (and also because m_textCtrlGithubURL and m_downloadDir are rarely modified
+    // the focus is given to an other widget.
+    m_hyperlinkGithubKicad->SetFocus();
+
+    Connect( wxEVT_RADIOBUTTON, wxCommandEventHandler( WIZARD_3DSHAPE_LIBS_DOWNLOADER::OnSourceCheck ), NULL, this );
+    Connect( wxEVT_CHECKLISTBOX, wxCommandEventHandler( WIZARD_3DSHAPE_LIBS_DOWNLOADER::OnCheckGithubList ), NULL, this );
+}
+
+
+WIZARD_3DSHAPE_LIBS_DOWNLOADER::~WIZARD_3DSHAPE_LIBS_DOWNLOADER()
+{
+    // Use this if you want to store kicad lib URL in pcbnew/cvpcb section config:
+    // wxConfigBase* cfg = Kiface().KifaceSettings();
+
+    // Use this if you want to store kicad lib URL in common section config:
+    wxConfigBase* cfg = Pgm().CommonSettings();
+    cfg->Write( KICAD_3DLIBS_URL_KEY, GetGithubURL() );
+}
+
+
+
+void WIZARD_3DSHAPE_LIBS_DOWNLOADER::OnPageChanged( wxWizardEvent& aEvent )
+{
+    SetBitmap( KiBitmap( wizard_add_fplib_icon_xpm ) );
+    enableNext( true );
+
+    if( GetCurrentPage() == m_githubListDlg )
+        setupGithubList();
+    else if( GetCurrentPage() == m_reviewDlg )
+        setupReview();
+}
+
+
+void WIZARD_3DSHAPE_LIBS_DOWNLOADER::OnCheckGithubList( wxCommandEvent& aEvent )
+{
+    wxArrayInt dummy;
+
+    enableNext( m_checkList3Dlibnames->GetCheckedItems( dummy ) > 0 );
+}
+
+
+void WIZARD_3DSHAPE_LIBS_DOWNLOADER::OnSourceCheck( wxCommandEvent& aEvent )
+{
+    updateGithubControls();
+    setupDialogOrder();
+}
+
+void WIZARD_3DSHAPE_LIBS_DOWNLOADER::setupReview()
+{
+    wxArrayInt checkedIndices;
+    m_checkList3Dlibnames->GetCheckedItems( checkedIndices );
+
+    m_libraries.Clear();
+    m_lbReview->Clear();
+
+    for( unsigned int ii = 0; ii < checkedIndices.GetCount(); ++ii )
+    {
+        m_libraries.Add( m_checkList3Dlibnames->GetString( checkedIndices[ii] ).AfterLast( '/' ) );
+    }
+
+    m_lbReview->Append( m_libraries );
+}
+
+
+void WIZARD_3DSHAPE_LIBS_DOWNLOADER::OnSelectAll3Dlibs( wxCommandEvent& aEvent )
+{
+    for( unsigned int i = 0; i < m_checkList3Dlibnames->GetCount(); ++i )
+        m_checkList3Dlibnames->Check( i, true );
+
+    // The list might be empty, e.g. in case of download error
+    wxArrayInt dummy;
+    enableNext( m_checkList3Dlibnames->GetCheckedItems( dummy ) > 0 );
+}
+
+
+void WIZARD_3DSHAPE_LIBS_DOWNLOADER::OnUnselectAll3Dlibs( wxCommandEvent& aEvent )
+{
+    for( unsigned int i = 0; i < m_checkList3Dlibnames->GetCount(); ++i )
+        m_checkList3Dlibnames->Check( i, false );
+
+    enableNext( false );
+}
+
+
+void WIZARD_3DSHAPE_LIBS_DOWNLOADER::OnChangeSearch( wxCommandEvent& aEvent )
+{
+    wxString searchPhrase = m_searchCtrl3Dlibs->GetValue().Lower();
+
+    // Store the current selection
+    wxArrayInt checkedIndices;
+    m_checkList3Dlibnames->GetCheckedItems( checkedIndices );
+    wxArrayString checkedStrings;
+
+    for( unsigned int i = 0; i < checkedIndices.GetCount(); ++i )
+        checkedStrings.Add( m_checkList3Dlibnames->GetString( checkedIndices[i] ).AfterLast( '/' ) );
+
+    m_checkList3Dlibnames->Clear();
+
+    // Rebuild the list, putting the matching entries on the top
+    int matching = 0;   // number of entries matching the search phrase
+    for( unsigned int i = 0; i < m_githubLibs.GetCount(); ++i )
+    {
+        const wxString& lib = m_githubLibs[i].AfterLast( '/' );
+        bool wasChecked = ( checkedStrings.Index( lib ) != wxNOT_FOUND );
+        int insertedIdx = -1;
+
+        if( !searchPhrase.IsEmpty() && lib.Lower().Contains( searchPhrase ) )
+        {
+            insertedIdx = m_checkList3Dlibnames->Insert( lib, matching++ );
+            m_checkList3Dlibnames->SetSelection( insertedIdx );
+        }
+        else
+            insertedIdx = m_checkList3Dlibnames->Append( lib );
+
+        if( wasChecked )
+            m_checkList3Dlibnames->Check( insertedIdx );
+    }
+
+    if( !m_checkList3Dlibnames->IsEmpty() )
+        m_checkList3Dlibnames->EnsureVisible( 0 );
+}
+
+
+void WIZARD_3DSHAPE_LIBS_DOWNLOADER::OnWizardFinished( wxWizardEvent& aEvent )
+{
+    // we download a localy copy of the libraries
+    wxString error;
+
+    if( !downloadGithubLibsFromList( m_libraries, &error ) )
+    {
+        DisplayError( this, error );
+    }
+}
+
+
+void WIZARD_3DSHAPE_LIBS_DOWNLOADER::OnBrowseButtonClick( wxCommandEvent& aEvent )
+{
+    wxString path = getDownloadDir();
+
+    path = wxDirSelector( _("Choose a folder to save the downloaded libraries" ),
+                             path, 0, wxDefaultPosition, this );
+
+    if( !path.IsEmpty() && wxDirExists( path ) )
+    {
+        setDownloadDir( path );
+
+        wxConfigBase* cfg = Pgm().CommonSettings();
+        cfg->Write( KICAD_3DLIBS_LAST_DOWNLOAD_DIR, path );
+
+        updateGithubControls();
+    }
+}
+
+
+void WIZARD_3DSHAPE_LIBS_DOWNLOADER::OnDefault3DPathButtonClick( wxCommandEvent& event )
+{
+    wxString default_path;
+    wxGetEnv( KISYS3DMOD, &default_path );
+
+    if( !default_path.IsEmpty() && wxDirExists( default_path ) )
+    {
+        setDownloadDir( default_path );
+
+        wxConfigBase* cfg = Pgm().CommonSettings();
+        cfg->Write( KICAD_3DLIBS_LAST_DOWNLOAD_DIR, default_path );
+
+        updateGithubControls();
+    }
+    else
+        wxMessageBox( _( "KISYS3DMOD path not defined , or not existing" ) );
+}
+
+
+void WIZARD_3DSHAPE_LIBS_DOWNLOADER::OnCheckSaveCopy( wxCommandEvent& aEvent )
+{
+    updateGithubControls();
+}
+
+
+void WIZARD_3DSHAPE_LIBS_DOWNLOADER::getLibsListGithub( wxArrayString& aList )
+{
+    wxBeginBusyCursor();
+
+    // Be sure there is no trailing '/' at the end of the repo name
+    wxString git_url = m_textCtrlGithubURL->GetValue();
+
+    if( git_url.EndsWith( wxT( "/" ) ) )
+    {
+        git_url.RemoveLast();
+        m_textCtrlGithubURL->SetValue( git_url );
+    }
+
+    GITHUB_GETLIBLIST getter( git_url );
+    getter.Get3DshapesLibsList( aList, filter3dshapeslibraries );
+
+    wxEndBusyCursor();
+}
+
+
+// Download the .pretty libraries folders found in aUrlList and store them on disk
+// in a master folder
+bool WIZARD_3DSHAPE_LIBS_DOWNLOADER::downloadGithubLibsFromList( wxArrayString& aUrlList,
+                                                     wxString* aErrorMessage )
+{
+    // Display a progress bar to show the downlaod state
+    wxProgressDialog pdlg( _( "Downloading 3D libraries" ), wxEmptyString,
+                           aUrlList.GetCount() );
+
+    wxString url_base = GetGithubURL();
+
+    // Download libs:
+    for( unsigned ii = 0; ii < aUrlList.GetCount(); ii++ )
+    {
+        wxString& libsrc_name = aUrlList[ii];
+
+        // Extract the lib name from the full URL:
+        wxString url = GetGithubURL() + wxT( "/" ) + libsrc_name;
+        wxFileName fn( libsrc_name );
+        // Set our local path
+        fn.SetPath( getDownloadDir() );
+        wxString libdst_name = fn.GetFullPath();
+
+        pdlg.Update( ii, libsrc_name.AfterLast( '/' ) );
+
+        if( !wxDirExists( libdst_name ) )
+            wxMkdir( libdst_name );
+
+        if( !downloadOneLib( url, libdst_name, aErrorMessage ) )
+            return false;
+    }
+
+    return true;
+}
+
+
+bool WIZARD_3DSHAPE_LIBS_DOWNLOADER::downloadOneLib( const wxString& aLibURL,
+                const wxString& aLocalLibName, wxString* aErrorMessage )
+{
+    wxArrayString fileslist;
+
+    bool success;
+
+    // Get the list of candidate files: with ext .wrl or .wings
+    do
+    {
+        GITHUB_GETLIBLIST getter( aLibURL );
+        success = getter.Get3DshapesLibsList( fileslist, filter3dshapesfiles );
+    } while( 0 );
+
+    if( !success )
+        return false;
+
+
+    // Load each file in list:
+    wxURI repo( GetGithubURL() );
+    wxArrayString dummy;
+
+    wxProgressDialog pdlg( aLibURL.AfterLast( '/' ), wxEmptyString,
+            fileslist.GetCount(),
+            this, wxPD_CAN_ABORT | wxPD_APP_MODAL | wxPD_AUTO_HIDE );
+
+    for( unsigned ii = 0; ii < fileslist.GetCount(); ii++ )
+    {
+        wxString target_full_url =  repo.GetScheme() + wxT( "://" )
+                                    + repo.GetServer()
+                                    + wxT( "/" ) + fileslist[ii];
+
+        // Fix me: this is special to github
+        // find a better way to get the raw file url
+        target_full_url.Replace( wxT( "blob" ), wxT( "raw" ) );
+
+        bool abort = !pdlg.Update( ii, target_full_url.AfterLast( '/' ) );
+
+        if( abort )
+        {
+            if( aErrorMessage )
+                *aErrorMessage << _( "Aborted by user" );
+            return false;
+        }
+
+        GITHUB_GETLIBLIST getter( target_full_url );
+        success = getter.Get3DshapesLibsList( dummy, NULL );
+
+        if( !success )
+            break;
+
+        wxFileName fn;
+        fn.AssignDir( aLocalLibName );
+        fn.SetFullName( fileslist[ii].AfterLast( '/' ) );
+
+        const std::string& buffer = getter.GetBuffer();
+
+        wxFile file(fn.GetFullPath(), wxFile::write);
+        file.Write( &buffer[0], buffer.size() );
+    }
+
+
+    return success;
+}
+
+
+void WIZARD_3DSHAPE_LIBS_DOWNLOADER::setupGithubList()
+{
+    // Enable 'Next' only if there is at least one library selected
+    wxArrayInt checkedIndices;
+    m_checkList3Dlibnames->GetCheckedItems( checkedIndices );
+    enableNext( checkedIndices.GetCount() > 0 );
+
+    // Update only if necessary
+    if( m_githubLibs.GetCount() == 0 )
+        getLibsListGithub( m_githubLibs );
+
+    m_searchCtrl3Dlibs->Clear();
+
+    // Clear the review list so it will be reloaded
+    m_libraries.clear();
+    m_lbReview->Clear();
+}
+
+
+void WIZARD_3DSHAPE_LIBS_DOWNLOADER::updateGithubControls()
+{
+    bool valid = wxFileName::IsDirWritable( getDownloadDir() );
+
+    // Do not allow to go further unless there is a valid directory selected
+    m_invalidDir->Show( !valid );
+    enableNext( valid );
+}
+
+
+void WIZARD_3DSHAPE_LIBS_DOWNLOADER::updateLibraries()
+{
+    // No need to update, the review list is ready
+    if( m_lbReview->GetCount() != 0 )
+        return;
+
+    wxArrayInt checkedLibs;
+    m_checkList3Dlibnames->GetCheckedItems( checkedLibs );
+
+    m_libraries.reserve( checkedLibs.GetCount() );
+
+    for( unsigned int i = 0; i < checkedLibs.GetCount(); ++i )
+        m_libraries.push_back( GetGithubURL() + "/" + m_checkList3Dlibnames->GetString( checkedLibs[i] ) );
+}
+
+
+void WIZARD_3DSHAPE_LIBS_DOWNLOADER::setupDialogOrder()
+{
+    m_welcomeDlg->SetNext( m_githubListDlg );
+    m_githubListDlg->SetPrev( m_welcomeDlg );
+    m_githubListDlg->SetNext( m_reviewDlg );
+    m_reviewDlg->SetPrev( m_githubListDlg );
+}
+

=== added file 'pcbnew/dialogs/wizard_3DShape_Libs_downloader.h'
--- pcbnew/dialogs/wizard_3DShape_Libs_downloader.h	1970-01-01 00:00:00 +0000
+++ pcbnew/dialogs/wizard_3DShape_Libs_downloader.h	2015-08-16 18:49:56 +0000
@@ -0,0 +1,145 @@
+/*
+ * This program source code file is part of KiCad, a free EDA CAD application.
+ *
+ * Copyright (C) 2015 CERN
+ * Code derived from "wizard_add_fplib.h" (from Maciej Suminski <maciej.suminski@xxxxxxx>)
+ * Copyright (C) 2014-2015 Jean-Pierre Charras, jp.charras at wanadoo.fr
+ * Copyright (C) 1992-2015 KiCad Developers, see AUTHORS.txt for contributors.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, you may find one here:
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ * or you may search the http://www.gnu.org website for the version 2 license,
+ * or you may write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+ */
+
+#include <wizard_3DShape_Libs_downloader_base.h>
+
+class KIWAY_PLAYER;
+
+class WIZARD_3DSHAPE_LIBS_DOWNLOADER : public WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE
+{
+public:
+    WIZARD_3DSHAPE_LIBS_DOWNLOADER( wxWindow* aParent );
+    ~WIZARD_3DSHAPE_LIBS_DOWNLOADER();
+
+    /**
+     * Function GetFirstPage
+     * Returns the welcoming page for the wizard.
+     */
+    inline wxWizardPage* GetFirstPage() const
+    {
+        return m_welcomeDlg;
+    }
+
+    /**
+     * Function GetGithubURL
+     * Returns the current Github repository URL set in the wizard.
+     */
+    inline wxString GetGithubURL() const
+    {
+        return m_textCtrlGithubURL->GetValue();
+    }
+
+    /**
+     * Function SetGithubURL
+     * Sets the current Github repository URL used by the wizard.
+     * @param aUrl is the new URL to be applied.
+     */
+    inline void SetGithubURL( const wxString& aUrl )
+    {
+        m_textCtrlGithubURL->SetValue( aUrl );
+    }
+
+    // Wizard event handlers
+    void OnSourceCheck( wxCommandEvent& aEvent );
+    void OnCheckGithubList( wxCommandEvent& aEvent );
+    void OnPageChanged( wxWizardEvent& aEvent );
+    void OnSelectAll3Dlibs( wxCommandEvent& aEvent );
+    void OnUnselectAll3Dlibs( wxCommandEvent& aEvent );
+    void OnChangeSearch( wxCommandEvent& aEvent );
+    void OnWizardFinished( wxWizardEvent& aEvent );
+    void OnBrowseButtonClick( wxCommandEvent& aEvent );
+    void OnCheckSaveCopy( wxCommandEvent& aEvent );
+	void OnDefault3DPathButtonClick( wxCommandEvent& event );
+
+protected:
+    // Initialization of wizard pages
+    void setupDialogOrder();
+    void setupGithubList();
+    void setupReview();
+
+    ///> Sets the target directory for libraries downloaded from Github
+    void setDownloadDir( const wxString& aDir )
+    {
+        m_downloadDir->SetValue( aDir );
+    }
+
+    ///> Gets the current target for downloaded libraries
+    inline wxString getDownloadDir()
+    {
+        return m_downloadDir->GetValue();
+    }
+
+    ///> Downloads the list of Github libraries
+    void getLibsListGithub( wxArrayString& aList );
+
+    ///> Saves a list of Github libraries locally.
+    bool downloadGithubLibsFromList( wxArrayString& aUrlList, wxString* aErrorMessage );
+
+    ///> Saves a Github library aLibURL locally in aLocalLibName.
+    bool downloadOneLib( const wxString& aLibURL,
+                         const wxString& aLocalLibName, wxString* aErrorMessage );
+
+    ///> Enables Github widgets depending on the selected options.
+    void updateGithubControls();
+
+    ///> Updates m_libraries basing on dialogs contents
+    void updateLibraries();
+
+    ///> Enables/disable 'Next' button
+    inline void enableNext( bool aEnable )
+    {
+        wxWindow* nextBtn = FindWindowById( wxID_FORWARD );
+
+        if( nextBtn )
+            nextBtn->Enable( aEnable );
+    }
+
+    // A callback function to filter 3D filenames
+    static bool filter3dshapesfiles( const wxString& aData )
+    {
+        return aData.Contains( wxT( ".wrl" ) ) || aData.Contains( wxT( ".wings" ) );
+    }
+
+    // A callback function to filter 3D folders names
+    static bool filter3dshapeslibraries( const wxString& aData )
+    {
+        return aData.Contains( wxT( ".3dshapes" ) );
+    }
+
+    ///> Cache for the downloaded Github library list
+    wxArrayString m_githubLibs;
+
+    ///> Libraries names selected in the wizard
+    wxArrayString m_libraries;
+
+    // Aliases for wizard pages to make code more readable
+    wxWizardPageSimple* m_welcomeDlg;
+    wxWizardPageSimple* m_githubListDlg;
+    wxWizardPageSimple* m_reviewDlg;
+
+    // path to the most recently used download directory from Github.
+    wxString m_lastGithubDownloadDirectory;
+};

=== added file 'pcbnew/dialogs/wizard_3DShape_Libs_downloader_base.cpp'
--- pcbnew/dialogs/wizard_3DShape_Libs_downloader_base.cpp	1970-01-01 00:00:00 +0000
+++ pcbnew/dialogs/wizard_3DShape_Libs_downloader_base.cpp	2015-08-13 15:50:18 +0000
@@ -0,0 +1,198 @@
+///////////////////////////////////////////////////////////////////////////
+// C++ code generated with wxFormBuilder (version Jun 17 2015)
+// http://www.wxformbuilder.org/
+//
+// PLEASE DO "NOT" EDIT THIS FILE!
+///////////////////////////////////////////////////////////////////////////
+
+#include "wizard_3DShape_Libs_downloader_base.h"
+
+///////////////////////////////////////////////////////////////////////////
+
+WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE::WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxBitmap& bitmap, const wxPoint& pos, long style ) 
+{
+	this->Create( parent, id, title, bitmap, pos, style );
+	this->SetSizeHints( wxSize( -1,-1 ), wxDefaultSize );
+	
+	wxWizardPageSimple* m_wizPage1 = new wxWizardPageSimple( this, NULL, NULL, wxArtProvider::GetBitmap( wxART_HELP_BOOK, wxART_FRAME_ICON ) );
+	m_pages.Add( m_wizPage1 );
+	
+	m_wizPage1->SetMinSize( wxSize( 720,480 ) );
+	
+	wxBoxSizer* bSizer1;
+	bSizer1 = new wxBoxSizer( wxVERTICAL );
+	
+	m_staticText1 = new wxStaticText( m_wizPage1, wxID_ANY, _("Welcome to the 3D shape Libraries downloader Wizard!"), wxDefaultPosition, wxDefaultSize, 0 );
+	m_staticText1->Wrap( -1 );
+	bSizer1->Add( m_staticText1, 0, wxALL|wxEXPAND, 5 );
+	
+	
+	bSizer1->Add( 0, 20, 0, 0, 5 );
+	
+	wxBoxSizer* bSizer19;
+	bSizer19 = new wxBoxSizer( wxVERTICAL );
+	
+	m_staticText8 = new wxStaticText( m_wizPage1, wxID_ANY, _("Please select the URL for the 3D libraries to download"), wxDefaultPosition, wxDefaultSize, 0 );
+	m_staticText8->Wrap( -1 );
+	bSizer19->Add( m_staticText8, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
+	
+	m_textCtrlGithubURL = new wxTextCtrl( m_wizPage1, wxID_ANY, _("http://github.com/KiCad";), wxDefaultPosition, wxDefaultSize, 0 );
+	m_textCtrlGithubURL->SetMinSize( wxSize( 300,-1 ) );
+	
+	bSizer19->Add( m_textCtrlGithubURL, 0, wxALL|wxEXPAND, 5 );
+	
+	
+	bSizer19->Add( 0, 10, 0, 0, 5 );
+	
+	wxBoxSizer* bSizerLocalFolder;
+	bSizerLocalFolder = new wxBoxSizer( wxHORIZONTAL );
+	
+	wxBoxSizer* bSizerDinname;
+	bSizerDinname = new wxBoxSizer( wxVERTICAL );
+	
+	m_staticText9 = new wxStaticText( m_wizPage1, wxID_ANY, _("3D shape local folder:"), wxDefaultPosition, wxDefaultSize, 0 );
+	m_staticText9->Wrap( -1 );
+	bSizerDinname->Add( m_staticText9, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
+	
+	m_downloadDir = new wxTextCtrl( m_wizPage1, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+	bSizerDinname->Add( m_downloadDir, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
+	
+	
+	bSizerLocalFolder->Add( bSizerDinname, 1, wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
+	
+	wxBoxSizer* bSizerButts;
+	bSizerButts = new wxBoxSizer( wxVERTICAL );
+	
+	m_btnBrowse = new wxButton( m_wizPage1, wxID_ANY, _("Browse"), wxDefaultPosition, wxDefaultSize, 0 );
+	bSizerButts->Add( m_btnBrowse, 0, wxEXPAND|wxALL, 5 );
+	
+	m_buttonDefault3DPath = new wxButton( m_wizPage1, wxID_ANY, _("Default 3D Path"), wxDefaultPosition, wxDefaultSize, 0 );
+	bSizerButts->Add( m_buttonDefault3DPath, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
+	
+	
+	bSizerLocalFolder->Add( bSizerButts, 0, wxEXPAND, 5 );
+	
+	
+	bSizer19->Add( bSizerLocalFolder, 0, wxEXPAND, 5 );
+	
+	
+	bSizer19->Add( 0, 10, 0, 0, 5 );
+	
+	m_invalidDir = new wxStaticText( m_wizPage1, wxID_ANY, _("It is not possible to write in the selected directory.\nPlease choose another one."), wxDefaultPosition, wxDefaultSize, 0 );
+	m_invalidDir->Wrap( -1 );
+	m_invalidDir->SetForegroundColour( wxColour( 255, 0, 0 ) );
+	
+	bSizer19->Add( m_invalidDir, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
+	
+	
+	bSizer1->Add( bSizer19, 1, wxEXPAND, 5 );
+	
+	wxBoxSizer* bSizerOfficialRepo;
+	bSizerOfficialRepo = new wxBoxSizer( wxHORIZONTAL );
+	
+	m_bitmapRepo = new wxStaticBitmap( m_wizPage1, wxID_ANY, wxArtProvider::GetBitmap( wxART_INFORMATION, wxART_OTHER ), wxDefaultPosition, wxDefaultSize, 0 );
+	bSizerOfficialRepo->Add( m_bitmapRepo, 0, wxALL, 5 );
+	
+	
+	bSizerOfficialRepo->Add( 0, 0, 0, wxRIGHT|wxLEFT, 10 );
+	
+	m_hyperlinkGithubKicad = new wxHyperlinkCtrl( m_wizPage1, wxID_ANY, _("Visit our official Kicad repository on Github and get more libraries"), wxT("https://github.com/KiCad";), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE );
+	bSizerOfficialRepo->Add( m_hyperlinkGithubKicad, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+	
+	
+	bSizer1->Add( bSizerOfficialRepo, 0, wxEXPAND, 5 );
+	
+	
+	m_wizPage1->SetSizer( bSizer1 );
+	m_wizPage1->Layout();
+	wxWizardPageSimple* m_wizPage2_Github = new wxWizardPageSimple( this, NULL, NULL, wxArtProvider::GetBitmap( wxART_HELP_BOOK, wxART_FRAME_ICON ) );
+	m_pages.Add( m_wizPage2_Github );
+	
+	wxBoxSizer* bSizer111;
+	bSizer111 = new wxBoxSizer( wxVERTICAL );
+	
+	m_staticText112 = new wxStaticText( m_wizPage2_Github, wxID_ANY, _("Select Github libraries to add:"), wxDefaultPosition, wxDefaultSize, 0 );
+	m_staticText112->Wrap( -1 );
+	bSizer111->Add( m_staticText112, 0, wxALL|wxEXPAND, 5 );
+	
+	wxArrayString m_checkList3DlibnamesChoices;
+	m_checkList3Dlibnames = new wxCheckListBox( m_wizPage2_Github, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_checkList3DlibnamesChoices, wxLB_MULTIPLE|wxLB_NEEDED_SB );
+	bSizer111->Add( m_checkList3Dlibnames, 1, wxALL|wxEXPAND, 5 );
+	
+	wxBoxSizer* bSizer7;
+	bSizer7 = new wxBoxSizer( wxHORIZONTAL );
+	
+	m_btnSelectAll3Dlibs = new wxButton( m_wizPage2_Github, wxID_ANY, _("Select all"), wxDefaultPosition, wxDefaultSize, 0 );
+	bSizer7->Add( m_btnSelectAll3Dlibs, 1, wxALL, 5 );
+	
+	m_btnUnselectAll3Dlibs = new wxButton( m_wizPage2_Github, wxID_ANY, _("Unselect all"), wxDefaultPosition, wxDefaultSize, 0 );
+	bSizer7->Add( m_btnUnselectAll3Dlibs, 1, wxALL, 5 );
+	
+	
+	bSizer7->Add( 0, 0, 1, wxEXPAND, 5 );
+	
+	m_searchCtrl3Dlibs = new wxSearchCtrl( m_wizPage2_Github, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+	#ifndef __WXMAC__
+	m_searchCtrl3Dlibs->ShowSearchButton( true );
+	#endif
+	m_searchCtrl3Dlibs->ShowCancelButton( false );
+	bSizer7->Add( m_searchCtrl3Dlibs, 2, wxALL, 5 );
+	
+	
+	bSizer111->Add( bSizer7, 0, wxEXPAND, 5 );
+	
+	
+	m_wizPage2_Github->SetSizer( bSizer111 );
+	m_wizPage2_Github->Layout();
+	bSizer111->Fit( m_wizPage2_Github );
+	wxWizardPageSimple* m_wizPage3_SelectTarget = new wxWizardPageSimple( this, NULL, NULL, wxArtProvider::GetBitmap( wxART_HELP_BOOK, wxART_FRAME_ICON ) );
+	m_pages.Add( m_wizPage3_SelectTarget );
+	
+	wxBoxSizer* bSizer12;
+	bSizer12 = new wxBoxSizer( wxVERTICAL );
+	
+	m_staticText12 = new wxStaticText( m_wizPage3_SelectTarget, wxID_ANY, _("3D shape libraries to be downloaded:"), wxDefaultPosition, wxDefaultSize, 0 );
+	m_staticText12->Wrap( -1 );
+	bSizer12->Add( m_staticText12, 0, wxALL, 5 );
+	
+	m_lbReview = new wxListBox( m_wizPage3_SelectTarget, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); 
+	bSizer12->Add( m_lbReview, 1, wxALL|wxEXPAND, 5 );
+	
+	
+	m_wizPage3_SelectTarget->SetSizer( bSizer12 );
+	m_wizPage3_SelectTarget->Layout();
+	bSizer12->Fit( m_wizPage3_SelectTarget );
+	
+	this->Centre( wxBOTH );
+	
+	for ( unsigned int i = 1; i < m_pages.GetCount(); i++ )
+	{
+		m_pages.Item( i )->SetPrev( m_pages.Item( i - 1 ) );
+		m_pages.Item( i - 1 )->SetNext( m_pages.Item( i ) );
+	}
+	
+	// Connect Events
+	this->Connect( wxID_ANY, wxEVT_WIZARD_FINISHED, wxWizardEventHandler( WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE::OnWizardFinished ) );
+	this->Connect( wxID_ANY, wxEVT_WIZARD_PAGE_CHANGED, wxWizardEventHandler( WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE::OnPageChanged ) );
+	this->Connect( wxID_ANY, wxEVT_WIZARD_PAGE_CHANGING, wxWizardEventHandler( WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE::OnPageChanging ) );
+	m_btnBrowse->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE::OnBrowseButtonClick ), NULL, this );
+	m_buttonDefault3DPath->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE::OnDefault3DPathButtonClick ), NULL, this );
+	m_btnSelectAll3Dlibs->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE::OnSelectAll3Dlibs ), NULL, this );
+	m_btnUnselectAll3Dlibs->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE::OnUnselectAll3Dlibs ), NULL, this );
+	m_searchCtrl3Dlibs->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE::OnChangeSearch ), NULL, this );
+}
+
+WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE::~WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE()
+{
+	// Disconnect Events
+	this->Disconnect( wxID_ANY, wxEVT_WIZARD_FINISHED, wxWizardEventHandler( WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE::OnWizardFinished ) );
+	this->Disconnect( wxID_ANY, wxEVT_WIZARD_PAGE_CHANGED, wxWizardEventHandler( WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE::OnPageChanged ) );
+	this->Disconnect( wxID_ANY, wxEVT_WIZARD_PAGE_CHANGING, wxWizardEventHandler( WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE::OnPageChanging ) );
+	m_btnBrowse->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE::OnBrowseButtonClick ), NULL, this );
+	m_buttonDefault3DPath->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE::OnDefault3DPathButtonClick ), NULL, this );
+	m_btnSelectAll3Dlibs->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE::OnSelectAll3Dlibs ), NULL, this );
+	m_btnUnselectAll3Dlibs->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE::OnUnselectAll3Dlibs ), NULL, this );
+	m_searchCtrl3Dlibs->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE::OnChangeSearch ), NULL, this );
+	
+	m_pages.Clear();
+}

=== added file 'pcbnew/dialogs/wizard_3DShape_Libs_downloader_base.fbp'
--- pcbnew/dialogs/wizard_3DShape_Libs_downloader_base.fbp	1970-01-01 00:00:00 +0000
+++ pcbnew/dialogs/wizard_3DShape_Libs_downloader_base.fbp	2015-08-13 15:50:15 +0000
@@ -0,0 +1,1829 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<wxFormBuilder_Project>
+    <FileVersion major="1" minor="13" />
+    <object class="Project" expanded="1">
+        <property name="class_decoration"></property>
+        <property name="code_generation">C++</property>
+        <property name="disconnect_events">1</property>
+        <property name="disconnect_mode">source_name</property>
+        <property name="disconnect_php_events">0</property>
+        <property name="disconnect_python_events">0</property>
+        <property name="embedded_files_path">res</property>
+        <property name="encoding">UTF-8</property>
+        <property name="event_generation">connect</property>
+        <property name="file">wizard_3DShape_Libs_downloader_base</property>
+        <property name="first_id">1000</property>
+        <property name="help_provider">none</property>
+        <property name="internationalize">1</property>
+        <property name="name">Wizard_3DShapes_Libs_Downloader</property>
+        <property name="namespace"></property>
+        <property name="path">.</property>
+        <property name="precompiled_header"></property>
+        <property name="relative_path">1</property>
+        <property name="skip_lua_events">1</property>
+        <property name="skip_php_events">1</property>
+        <property name="skip_python_events">1</property>
+        <property name="ui_table">UI</property>
+        <property name="use_enum">0</property>
+        <property name="use_microsoft_bom">0</property>
+        <object class="Wizard" expanded="1">
+            <property name="bg"></property>
+            <property name="bitmap">Load From Art Provider; wxART_HELP_BOOK; wxART_FRAME_ICON</property>
+            <property name="center">wxBOTH</property>
+            <property name="context_help"></property>
+            <property name="context_menu">1</property>
+            <property name="enabled">1</property>
+            <property name="event_handler">impl_virtual</property>
+            <property name="extra_style"></property>
+            <property name="fg"></property>
+            <property name="font"></property>
+            <property name="hidden">0</property>
+            <property name="id">wxID_ANY</property>
+            <property name="maximum_size"></property>
+            <property name="minimum_size">-1,-1</property>
+            <property name="name">WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE</property>
+            <property name="pos"></property>
+            <property name="size">591,405</property>
+            <property name="style">wxCAPTION|wxCLOSE_BOX|wxDEFAULT_DIALOG_STYLE|wxMAXIMIZE_BOX|wxRESIZE_BORDER</property>
+            <property name="subclass">; </property>
+            <property name="title">Add 3D Shape Libraries Wizard</property>
+            <property name="tooltip"></property>
+            <property name="window_extra_style"></property>
+            <property name="window_name"></property>
+            <property name="window_style"></property>
+            <event name="OnActivate"></event>
+            <event name="OnActivateApp"></event>
+            <event name="OnChar"></event>
+            <event name="OnClose"></event>
+            <event name="OnEnterWindow"></event>
+            <event name="OnEraseBackground"></event>
+            <event name="OnHibernate"></event>
+            <event name="OnIconize"></event>
+            <event name="OnIdle"></event>
+            <event name="OnInitDialog"></event>
+            <event name="OnKeyDown"></event>
+            <event name="OnKeyUp"></event>
+            <event name="OnKillFocus"></event>
+            <event name="OnLeaveWindow"></event>
+            <event name="OnLeftDClick"></event>
+            <event name="OnLeftDown"></event>
+            <event name="OnLeftUp"></event>
+            <event name="OnMiddleDClick"></event>
+            <event name="OnMiddleDown"></event>
+            <event name="OnMiddleUp"></event>
+            <event name="OnMotion"></event>
+            <event name="OnMouseEvents"></event>
+            <event name="OnMouseWheel"></event>
+            <event name="OnPaint"></event>
+            <event name="OnRightDClick"></event>
+            <event name="OnRightDown"></event>
+            <event name="OnRightUp"></event>
+            <event name="OnSetFocus"></event>
+            <event name="OnSize"></event>
+            <event name="OnUpdateUI"></event>
+            <event name="OnWizardCancel"></event>
+            <event name="OnWizardFinished">OnWizardFinished</event>
+            <event name="OnWizardHelp"></event>
+            <event name="OnWizardPageChanged">OnPageChanged</event>
+            <event name="OnWizardPageChanging">OnPageChanging</event>
+            <object class="WizardPageSimple" expanded="1">
+                <property name="bg"></property>
+                <property name="bitmap">Load From Art Provider; wxART_HELP_BOOK; wxART_FRAME_ICON</property>
+                <property name="context_help"></property>
+                <property name="context_menu">1</property>
+                <property name="enabled">1</property>
+                <property name="fg"></property>
+                <property name="font"></property>
+                <property name="hidden">0</property>
+                <property name="id">wxID_ANY</property>
+                <property name="maximum_size"></property>
+                <property name="minimum_size">720,480</property>
+                <property name="name">m_wizPage1</property>
+                <property name="permission">protected</property>
+                <property name="pos"></property>
+                <property name="size">720,480</property>
+                <property name="subclass"></property>
+                <property name="tooltip"></property>
+                <property name="window_extra_style"></property>
+                <property name="window_name"></property>
+                <property name="window_style"></property>
+                <event name="OnChar"></event>
+                <event name="OnEnterWindow"></event>
+                <event name="OnEraseBackground"></event>
+                <event name="OnKeyDown"></event>
+                <event name="OnKeyUp"></event>
+                <event name="OnKillFocus"></event>
+                <event name="OnLeaveWindow"></event>
+                <event name="OnLeftDClick"></event>
+                <event name="OnLeftDown"></event>
+                <event name="OnLeftUp"></event>
+                <event name="OnMiddleDClick"></event>
+                <event name="OnMiddleDown"></event>
+                <event name="OnMiddleUp"></event>
+                <event name="OnMotion"></event>
+                <event name="OnMouseEvents"></event>
+                <event name="OnMouseWheel"></event>
+                <event name="OnPaint"></event>
+                <event name="OnRightDClick"></event>
+                <event name="OnRightDown"></event>
+                <event name="OnRightUp"></event>
+                <event name="OnSetFocus"></event>
+                <event name="OnSize"></event>
+                <event name="OnUpdateUI"></event>
+                <object class="wxBoxSizer" expanded="1">
+                    <property name="minimum_size"></property>
+                    <property name="name">bSizer1</property>
+                    <property name="orient">wxVERTICAL</property>
+                    <property name="permission">none</property>
+                    <object class="sizeritem" expanded="0">
+                        <property name="border">5</property>
+                        <property name="flag">wxALL|wxEXPAND</property>
+                        <property name="proportion">0</property>
+                        <object class="wxStaticText" expanded="0">
+                            <property name="BottomDockable">1</property>
+                            <property name="LeftDockable">1</property>
+                            <property name="RightDockable">1</property>
+                            <property name="TopDockable">1</property>
+                            <property name="aui_layer"></property>
+                            <property name="aui_name"></property>
+                            <property name="aui_position"></property>
+                            <property name="aui_row"></property>
+                            <property name="best_size"></property>
+                            <property name="bg"></property>
+                            <property name="caption"></property>
+                            <property name="caption_visible">1</property>
+                            <property name="center_pane">0</property>
+                            <property name="close_button">1</property>
+                            <property name="context_help"></property>
+                            <property name="context_menu">1</property>
+                            <property name="default_pane">0</property>
+                            <property name="dock">Dock</property>
+                            <property name="dock_fixed">0</property>
+                            <property name="docking">Left</property>
+                            <property name="enabled">1</property>
+                            <property name="fg"></property>
+                            <property name="floatable">1</property>
+                            <property name="font"></property>
+                            <property name="gripper">0</property>
+                            <property name="hidden">0</property>
+                            <property name="id">wxID_ANY</property>
+                            <property name="label">Welcome to the 3D shape Libraries downloader Wizard!</property>
+                            <property name="max_size"></property>
+                            <property name="maximize_button">0</property>
+                            <property name="maximum_size"></property>
+                            <property name="min_size"></property>
+                            <property name="minimize_button">0</property>
+                            <property name="minimum_size"></property>
+                            <property name="moveable">1</property>
+                            <property name="name">m_staticText1</property>
+                            <property name="pane_border">1</property>
+                            <property name="pane_position"></property>
+                            <property name="pane_size"></property>
+                            <property name="permission">protected</property>
+                            <property name="pin_button">1</property>
+                            <property name="pos"></property>
+                            <property name="resize">Resizable</property>
+                            <property name="show">1</property>
+                            <property name="size"></property>
+                            <property name="style"></property>
+                            <property name="subclass"></property>
+                            <property name="toolbar_pane">0</property>
+                            <property name="tooltip"></property>
+                            <property name="window_extra_style"></property>
+                            <property name="window_name"></property>
+                            <property name="window_style"></property>
+                            <property name="wrap">-1</property>
+                            <event name="OnChar"></event>
+                            <event name="OnEnterWindow"></event>
+                            <event name="OnEraseBackground"></event>
+                            <event name="OnKeyDown"></event>
+                            <event name="OnKeyUp"></event>
+                            <event name="OnKillFocus"></event>
+                            <event name="OnLeaveWindow"></event>
+                            <event name="OnLeftDClick"></event>
+                            <event name="OnLeftDown"></event>
+                            <event name="OnLeftUp"></event>
+                            <event name="OnMiddleDClick"></event>
+                            <event name="OnMiddleDown"></event>
+                            <event name="OnMiddleUp"></event>
+                            <event name="OnMotion"></event>
+                            <event name="OnMouseEvents"></event>
+                            <event name="OnMouseWheel"></event>
+                            <event name="OnPaint"></event>
+                            <event name="OnRightDClick"></event>
+                            <event name="OnRightDown"></event>
+                            <event name="OnRightUp"></event>
+                            <event name="OnSetFocus"></event>
+                            <event name="OnSize"></event>
+                            <event name="OnUpdateUI"></event>
+                        </object>
+                    </object>
+                    <object class="sizeritem" expanded="1">
+                        <property name="border">5</property>
+                        <property name="flag"></property>
+                        <property name="proportion">0</property>
+                        <object class="spacer" expanded="1">
+                            <property name="height">20</property>
+                            <property name="permission">protected</property>
+                            <property name="width">0</property>
+                        </object>
+                    </object>
+                    <object class="sizeritem" expanded="1">
+                        <property name="border">5</property>
+                        <property name="flag">wxEXPAND</property>
+                        <property name="proportion">1</property>
+                        <object class="wxBoxSizer" expanded="1">
+                            <property name="minimum_size"></property>
+                            <property name="name">bSizer19</property>
+                            <property name="orient">wxVERTICAL</property>
+                            <property name="permission">none</property>
+                            <object class="sizeritem" expanded="1">
+                                <property name="border">5</property>
+                                <property name="flag">wxTOP|wxRIGHT|wxLEFT</property>
+                                <property name="proportion">0</property>
+                                <object class="wxStaticText" expanded="1">
+                                    <property name="BottomDockable">1</property>
+                                    <property name="LeftDockable">1</property>
+                                    <property name="RightDockable">1</property>
+                                    <property name="TopDockable">1</property>
+                                    <property name="aui_layer"></property>
+                                    <property name="aui_name"></property>
+                                    <property name="aui_position"></property>
+                                    <property name="aui_row"></property>
+                                    <property name="best_size"></property>
+                                    <property name="bg"></property>
+                                    <property name="caption"></property>
+                                    <property name="caption_visible">1</property>
+                                    <property name="center_pane">0</property>
+                                    <property name="close_button">1</property>
+                                    <property name="context_help"></property>
+                                    <property name="context_menu">1</property>
+                                    <property name="default_pane">0</property>
+                                    <property name="dock">Dock</property>
+                                    <property name="dock_fixed">0</property>
+                                    <property name="docking">Left</property>
+                                    <property name="enabled">1</property>
+                                    <property name="fg"></property>
+                                    <property name="floatable">1</property>
+                                    <property name="font"></property>
+                                    <property name="gripper">0</property>
+                                    <property name="hidden">0</property>
+                                    <property name="id">wxID_ANY</property>
+                                    <property name="label">Please select the URL for the 3D libraries to download</property>
+                                    <property name="max_size"></property>
+                                    <property name="maximize_button">0</property>
+                                    <property name="maximum_size"></property>
+                                    <property name="min_size"></property>
+                                    <property name="minimize_button">0</property>
+                                    <property name="minimum_size"></property>
+                                    <property name="moveable">1</property>
+                                    <property name="name">m_staticText8</property>
+                                    <property name="pane_border">1</property>
+                                    <property name="pane_position"></property>
+                                    <property name="pane_size"></property>
+                                    <property name="permission">protected</property>
+                                    <property name="pin_button">1</property>
+                                    <property name="pos"></property>
+                                    <property name="resize">Resizable</property>
+                                    <property name="show">1</property>
+                                    <property name="size"></property>
+                                    <property name="style"></property>
+                                    <property name="subclass"></property>
+                                    <property name="toolbar_pane">0</property>
+                                    <property name="tooltip"></property>
+                                    <property name="window_extra_style"></property>
+                                    <property name="window_name"></property>
+                                    <property name="window_style"></property>
+                                    <property name="wrap">-1</property>
+                                    <event name="OnChar"></event>
+                                    <event name="OnEnterWindow"></event>
+                                    <event name="OnEraseBackground"></event>
+                                    <event name="OnKeyDown"></event>
+                                    <event name="OnKeyUp"></event>
+                                    <event name="OnKillFocus"></event>
+                                    <event name="OnLeaveWindow"></event>
+                                    <event name="OnLeftDClick"></event>
+                                    <event name="OnLeftDown"></event>
+                                    <event name="OnLeftUp"></event>
+                                    <event name="OnMiddleDClick"></event>
+                                    <event name="OnMiddleDown"></event>
+                                    <event name="OnMiddleUp"></event>
+                                    <event name="OnMotion"></event>
+                                    <event name="OnMouseEvents"></event>
+                                    <event name="OnMouseWheel"></event>
+                                    <event name="OnPaint"></event>
+                                    <event name="OnRightDClick"></event>
+                                    <event name="OnRightDown"></event>
+                                    <event name="OnRightUp"></event>
+                                    <event name="OnSetFocus"></event>
+                                    <event name="OnSize"></event>
+                                    <event name="OnUpdateUI"></event>
+                                </object>
+                            </object>
+                            <object class="sizeritem" expanded="0">
+                                <property name="border">5</property>
+                                <property name="flag">wxALL|wxEXPAND</property>
+                                <property name="proportion">0</property>
+                                <object class="wxTextCtrl" expanded="0">
+                                    <property name="BottomDockable">1</property>
+                                    <property name="LeftDockable">1</property>
+                                    <property name="RightDockable">1</property>
+                                    <property name="TopDockable">1</property>
+                                    <property name="aui_layer"></property>
+                                    <property name="aui_name"></property>
+                                    <property name="aui_position"></property>
+                                    <property name="aui_row"></property>
+                                    <property name="best_size"></property>
+                                    <property name="bg"></property>
+                                    <property name="caption"></property>
+                                    <property name="caption_visible">1</property>
+                                    <property name="center_pane">0</property>
+                                    <property name="close_button">1</property>
+                                    <property name="context_help"></property>
+                                    <property name="context_menu">1</property>
+                                    <property name="default_pane">0</property>
+                                    <property name="dock">Dock</property>
+                                    <property name="dock_fixed">0</property>
+                                    <property name="docking">Left</property>
+                                    <property name="enabled">1</property>
+                                    <property name="fg"></property>
+                                    <property name="floatable">1</property>
+                                    <property name="font"></property>
+                                    <property name="gripper">0</property>
+                                    <property name="hidden">0</property>
+                                    <property name="id">wxID_ANY</property>
+                                    <property name="max_size"></property>
+                                    <property name="maximize_button">0</property>
+                                    <property name="maximum_size"></property>
+                                    <property name="maxlength"></property>
+                                    <property name="min_size"></property>
+                                    <property name="minimize_button">0</property>
+                                    <property name="minimum_size">300,-1</property>
+                                    <property name="moveable">1</property>
+                                    <property name="name">m_textCtrlGithubURL</property>
+                                    <property name="pane_border">1</property>
+                                    <property name="pane_position"></property>
+                                    <property name="pane_size"></property>
+                                    <property name="permission">protected</property>
+                                    <property name="pin_button">1</property>
+                                    <property name="pos"></property>
+                                    <property name="resize">Resizable</property>
+                                    <property name="show">1</property>
+                                    <property name="size"></property>
+                                    <property name="style"></property>
+                                    <property name="subclass"></property>
+                                    <property name="toolbar_pane">0</property>
+                                    <property name="tooltip"></property>
+                                    <property name="validator_data_type"></property>
+                                    <property name="validator_style">wxFILTER_NONE</property>
+                                    <property name="validator_type">wxDefaultValidator</property>
+                                    <property name="validator_variable"></property>
+                                    <property name="value">http://github.com/KiCad</property>
+                                    <property name="window_extra_style"></property>
+                                    <property name="window_name"></property>
+                                    <property name="window_style"></property>
+                                    <event name="OnChar"></event>
+                                    <event name="OnEnterWindow"></event>
+                                    <event name="OnEraseBackground"></event>
+                                    <event name="OnKeyDown"></event>
+                                    <event name="OnKeyUp"></event>
+                                    <event name="OnKillFocus"></event>
+                                    <event name="OnLeaveWindow"></event>
+                                    <event name="OnLeftDClick"></event>
+                                    <event name="OnLeftDown"></event>
+                                    <event name="OnLeftUp"></event>
+                                    <event name="OnMiddleDClick"></event>
+                                    <event name="OnMiddleDown"></event>
+                                    <event name="OnMiddleUp"></event>
+                                    <event name="OnMotion"></event>
+                                    <event name="OnMouseEvents"></event>
+                                    <event name="OnMouseWheel"></event>
+                                    <event name="OnPaint"></event>
+                                    <event name="OnRightDClick"></event>
+                                    <event name="OnRightDown"></event>
+                                    <event name="OnRightUp"></event>
+                                    <event name="OnSetFocus"></event>
+                                    <event name="OnSize"></event>
+                                    <event name="OnText"></event>
+                                    <event name="OnTextEnter"></event>
+                                    <event name="OnTextMaxLen"></event>
+                                    <event name="OnTextURL"></event>
+                                    <event name="OnUpdateUI"></event>
+                                </object>
+                            </object>
+                            <object class="sizeritem" expanded="1">
+                                <property name="border">5</property>
+                                <property name="flag"></property>
+                                <property name="proportion">0</property>
+                                <object class="spacer" expanded="1">
+                                    <property name="height">10</property>
+                                    <property name="permission">protected</property>
+                                    <property name="width">0</property>
+                                </object>
+                            </object>
+                            <object class="sizeritem" expanded="1">
+                                <property name="border">5</property>
+                                <property name="flag">wxEXPAND</property>
+                                <property name="proportion">0</property>
+                                <object class="wxBoxSizer" expanded="1">
+                                    <property name="minimum_size"></property>
+                                    <property name="name">bSizerLocalFolder</property>
+                                    <property name="orient">wxHORIZONTAL</property>
+                                    <property name="permission">none</property>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxEXPAND|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">1</property>
+                                        <object class="wxBoxSizer" expanded="1">
+                                            <property name="minimum_size"></property>
+                                            <property name="name">bSizerDinname</property>
+                                            <property name="orient">wxVERTICAL</property>
+                                            <property name="permission">none</property>
+                                            <object class="sizeritem" expanded="1">
+                                                <property name="border">5</property>
+                                                <property name="flag">wxTOP|wxRIGHT|wxLEFT</property>
+                                                <property name="proportion">0</property>
+                                                <object class="wxStaticText" expanded="1">
+                                                    <property name="BottomDockable">1</property>
+                                                    <property name="LeftDockable">1</property>
+                                                    <property name="RightDockable">1</property>
+                                                    <property name="TopDockable">1</property>
+                                                    <property name="aui_layer"></property>
+                                                    <property name="aui_name"></property>
+                                                    <property name="aui_position"></property>
+                                                    <property name="aui_row"></property>
+                                                    <property name="best_size"></property>
+                                                    <property name="bg"></property>
+                                                    <property name="caption"></property>
+                                                    <property name="caption_visible">1</property>
+                                                    <property name="center_pane">0</property>
+                                                    <property name="close_button">1</property>
+                                                    <property name="context_help"></property>
+                                                    <property name="context_menu">1</property>
+                                                    <property name="default_pane">0</property>
+                                                    <property name="dock">Dock</property>
+                                                    <property name="dock_fixed">0</property>
+                                                    <property name="docking">Left</property>
+                                                    <property name="enabled">1</property>
+                                                    <property name="fg"></property>
+                                                    <property name="floatable">1</property>
+                                                    <property name="font"></property>
+                                                    <property name="gripper">0</property>
+                                                    <property name="hidden">0</property>
+                                                    <property name="id">wxID_ANY</property>
+                                                    <property name="label">3D shape local folder:</property>
+                                                    <property name="max_size"></property>
+                                                    <property name="maximize_button">0</property>
+                                                    <property name="maximum_size"></property>
+                                                    <property name="min_size"></property>
+                                                    <property name="minimize_button">0</property>
+                                                    <property name="minimum_size"></property>
+                                                    <property name="moveable">1</property>
+                                                    <property name="name">m_staticText9</property>
+                                                    <property name="pane_border">1</property>
+                                                    <property name="pane_position"></property>
+                                                    <property name="pane_size"></property>
+                                                    <property name="permission">protected</property>
+                                                    <property name="pin_button">1</property>
+                                                    <property name="pos"></property>
+                                                    <property name="resize">Resizable</property>
+                                                    <property name="show">1</property>
+                                                    <property name="size"></property>
+                                                    <property name="style"></property>
+                                                    <property name="subclass"></property>
+                                                    <property name="toolbar_pane">0</property>
+                                                    <property name="tooltip"></property>
+                                                    <property name="window_extra_style"></property>
+                                                    <property name="window_name"></property>
+                                                    <property name="window_style"></property>
+                                                    <property name="wrap">-1</property>
+                                                    <event name="OnChar"></event>
+                                                    <event name="OnEnterWindow"></event>
+                                                    <event name="OnEraseBackground"></event>
+                                                    <event name="OnKeyDown"></event>
+                                                    <event name="OnKeyUp"></event>
+                                                    <event name="OnKillFocus"></event>
+                                                    <event name="OnLeaveWindow"></event>
+                                                    <event name="OnLeftDClick"></event>
+                                                    <event name="OnLeftDown"></event>
+                                                    <event name="OnLeftUp"></event>
+                                                    <event name="OnMiddleDClick"></event>
+                                                    <event name="OnMiddleDown"></event>
+                                                    <event name="OnMiddleUp"></event>
+                                                    <event name="OnMotion"></event>
+                                                    <event name="OnMouseEvents"></event>
+                                                    <event name="OnMouseWheel"></event>
+                                                    <event name="OnPaint"></event>
+                                                    <event name="OnRightDClick"></event>
+                                                    <event name="OnRightDown"></event>
+                                                    <event name="OnRightUp"></event>
+                                                    <event name="OnSetFocus"></event>
+                                                    <event name="OnSize"></event>
+                                                    <event name="OnUpdateUI"></event>
+                                                </object>
+                                            </object>
+                                            <object class="sizeritem" expanded="1">
+                                                <property name="border">5</property>
+                                                <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND</property>
+                                                <property name="proportion">0</property>
+                                                <object class="wxTextCtrl" expanded="1">
+                                                    <property name="BottomDockable">1</property>
+                                                    <property name="LeftDockable">1</property>
+                                                    <property name="RightDockable">1</property>
+                                                    <property name="TopDockable">1</property>
+                                                    <property name="aui_layer"></property>
+                                                    <property name="aui_name"></property>
+                                                    <property name="aui_position"></property>
+                                                    <property name="aui_row"></property>
+                                                    <property name="best_size"></property>
+                                                    <property name="bg"></property>
+                                                    <property name="caption"></property>
+                                                    <property name="caption_visible">1</property>
+                                                    <property name="center_pane">0</property>
+                                                    <property name="close_button">1</property>
+                                                    <property name="context_help"></property>
+                                                    <property name="context_menu">1</property>
+                                                    <property name="default_pane">0</property>
+                                                    <property name="dock">Dock</property>
+                                                    <property name="dock_fixed">0</property>
+                                                    <property name="docking">Left</property>
+                                                    <property name="enabled">1</property>
+                                                    <property name="fg"></property>
+                                                    <property name="floatable">1</property>
+                                                    <property name="font"></property>
+                                                    <property name="gripper">0</property>
+                                                    <property name="hidden">0</property>
+                                                    <property name="id">wxID_ANY</property>
+                                                    <property name="max_size"></property>
+                                                    <property name="maximize_button">0</property>
+                                                    <property name="maximum_size"></property>
+                                                    <property name="maxlength"></property>
+                                                    <property name="min_size"></property>
+                                                    <property name="minimize_button">0</property>
+                                                    <property name="minimum_size"></property>
+                                                    <property name="moveable">1</property>
+                                                    <property name="name">m_downloadDir</property>
+                                                    <property name="pane_border">1</property>
+                                                    <property name="pane_position"></property>
+                                                    <property name="pane_size"></property>
+                                                    <property name="permission">protected</property>
+                                                    <property name="pin_button">1</property>
+                                                    <property name="pos"></property>
+                                                    <property name="resize">Resizable</property>
+                                                    <property name="show">1</property>
+                                                    <property name="size"></property>
+                                                    <property name="style"></property>
+                                                    <property name="subclass"></property>
+                                                    <property name="toolbar_pane">0</property>
+                                                    <property name="tooltip"></property>
+                                                    <property name="validator_data_type"></property>
+                                                    <property name="validator_style">wxFILTER_NONE</property>
+                                                    <property name="validator_type">wxDefaultValidator</property>
+                                                    <property name="validator_variable"></property>
+                                                    <property name="value"></property>
+                                                    <property name="window_extra_style"></property>
+                                                    <property name="window_name"></property>
+                                                    <property name="window_style"></property>
+                                                    <event name="OnChar"></event>
+                                                    <event name="OnEnterWindow"></event>
+                                                    <event name="OnEraseBackground"></event>
+                                                    <event name="OnKeyDown"></event>
+                                                    <event name="OnKeyUp"></event>
+                                                    <event name="OnKillFocus"></event>
+                                                    <event name="OnLeaveWindow"></event>
+                                                    <event name="OnLeftDClick"></event>
+                                                    <event name="OnLeftDown"></event>
+                                                    <event name="OnLeftUp"></event>
+                                                    <event name="OnMiddleDClick"></event>
+                                                    <event name="OnMiddleDown"></event>
+                                                    <event name="OnMiddleUp"></event>
+                                                    <event name="OnMotion"></event>
+                                                    <event name="OnMouseEvents"></event>
+                                                    <event name="OnMouseWheel"></event>
+                                                    <event name="OnPaint"></event>
+                                                    <event name="OnRightDClick"></event>
+                                                    <event name="OnRightDown"></event>
+                                                    <event name="OnRightUp"></event>
+                                                    <event name="OnSetFocus"></event>
+                                                    <event name="OnSize"></event>
+                                                    <event name="OnText"></event>
+                                                    <event name="OnTextEnter"></event>
+                                                    <event name="OnTextMaxLen"></event>
+                                                    <event name="OnTextURL"></event>
+                                                    <event name="OnUpdateUI"></event>
+                                                </object>
+                                            </object>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxEXPAND</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxBoxSizer" expanded="1">
+                                            <property name="minimum_size"></property>
+                                            <property name="name">bSizerButts</property>
+                                            <property name="orient">wxVERTICAL</property>
+                                            <property name="permission">none</property>
+                                            <object class="sizeritem" expanded="1">
+                                                <property name="border">5</property>
+                                                <property name="flag">wxEXPAND|wxALL</property>
+                                                <property name="proportion">0</property>
+                                                <object class="wxButton" expanded="1">
+                                                    <property name="BottomDockable">1</property>
+                                                    <property name="LeftDockable">1</property>
+                                                    <property name="RightDockable">1</property>
+                                                    <property name="TopDockable">1</property>
+                                                    <property name="aui_layer"></property>
+                                                    <property name="aui_name"></property>
+                                                    <property name="aui_position"></property>
+                                                    <property name="aui_row"></property>
+                                                    <property name="best_size"></property>
+                                                    <property name="bg"></property>
+                                                    <property name="caption"></property>
+                                                    <property name="caption_visible">1</property>
+                                                    <property name="center_pane">0</property>
+                                                    <property name="close_button">1</property>
+                                                    <property name="context_help"></property>
+                                                    <property name="context_menu">1</property>
+                                                    <property name="default">0</property>
+                                                    <property name="default_pane">0</property>
+                                                    <property name="dock">Dock</property>
+                                                    <property name="dock_fixed">0</property>
+                                                    <property name="docking">Left</property>
+                                                    <property name="enabled">1</property>
+                                                    <property name="fg"></property>
+                                                    <property name="floatable">1</property>
+                                                    <property name="font"></property>
+                                                    <property name="gripper">0</property>
+                                                    <property name="hidden">0</property>
+                                                    <property name="id">wxID_ANY</property>
+                                                    <property name="label">Browse</property>
+                                                    <property name="max_size"></property>
+                                                    <property name="maximize_button">0</property>
+                                                    <property name="maximum_size"></property>
+                                                    <property name="min_size"></property>
+                                                    <property name="minimize_button">0</property>
+                                                    <property name="minimum_size"></property>
+                                                    <property name="moveable">1</property>
+                                                    <property name="name">m_btnBrowse</property>
+                                                    <property name="pane_border">1</property>
+                                                    <property name="pane_position"></property>
+                                                    <property name="pane_size"></property>
+                                                    <property name="permission">protected</property>
+                                                    <property name="pin_button">1</property>
+                                                    <property name="pos"></property>
+                                                    <property name="resize">Resizable</property>
+                                                    <property name="show">1</property>
+                                                    <property name="size"></property>
+                                                    <property name="style"></property>
+                                                    <property name="subclass"></property>
+                                                    <property name="toolbar_pane">0</property>
+                                                    <property name="tooltip"></property>
+                                                    <property name="validator_data_type"></property>
+                                                    <property name="validator_style">wxFILTER_NONE</property>
+                                                    <property name="validator_type">wxDefaultValidator</property>
+                                                    <property name="validator_variable"></property>
+                                                    <property name="window_extra_style"></property>
+                                                    <property name="window_name"></property>
+                                                    <property name="window_style"></property>
+                                                    <event name="OnButtonClick">OnBrowseButtonClick</event>
+                                                    <event name="OnChar"></event>
+                                                    <event name="OnEnterWindow"></event>
+                                                    <event name="OnEraseBackground"></event>
+                                                    <event name="OnKeyDown"></event>
+                                                    <event name="OnKeyUp"></event>
+                                                    <event name="OnKillFocus"></event>
+                                                    <event name="OnLeaveWindow"></event>
+                                                    <event name="OnLeftDClick"></event>
+                                                    <event name="OnLeftDown"></event>
+                                                    <event name="OnLeftUp"></event>
+                                                    <event name="OnMiddleDClick"></event>
+                                                    <event name="OnMiddleDown"></event>
+                                                    <event name="OnMiddleUp"></event>
+                                                    <event name="OnMotion"></event>
+                                                    <event name="OnMouseEvents"></event>
+                                                    <event name="OnMouseWheel"></event>
+                                                    <event name="OnPaint"></event>
+                                                    <event name="OnRightDClick"></event>
+                                                    <event name="OnRightDown"></event>
+                                                    <event name="OnRightUp"></event>
+                                                    <event name="OnSetFocus"></event>
+                                                    <event name="OnSize"></event>
+                                                    <event name="OnUpdateUI"></event>
+                                                </object>
+                                            </object>
+                                            <object class="sizeritem" expanded="1">
+                                                <property name="border">5</property>
+                                                <property name="flag">wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT</property>
+                                                <property name="proportion">0</property>
+                                                <object class="wxButton" expanded="1">
+                                                    <property name="BottomDockable">1</property>
+                                                    <property name="LeftDockable">1</property>
+                                                    <property name="RightDockable">1</property>
+                                                    <property name="TopDockable">1</property>
+                                                    <property name="aui_layer"></property>
+                                                    <property name="aui_name"></property>
+                                                    <property name="aui_position"></property>
+                                                    <property name="aui_row"></property>
+                                                    <property name="best_size"></property>
+                                                    <property name="bg"></property>
+                                                    <property name="caption"></property>
+                                                    <property name="caption_visible">1</property>
+                                                    <property name="center_pane">0</property>
+                                                    <property name="close_button">1</property>
+                                                    <property name="context_help"></property>
+                                                    <property name="context_menu">1</property>
+                                                    <property name="default">0</property>
+                                                    <property name="default_pane">0</property>
+                                                    <property name="dock">Dock</property>
+                                                    <property name="dock_fixed">0</property>
+                                                    <property name="docking">Left</property>
+                                                    <property name="enabled">1</property>
+                                                    <property name="fg"></property>
+                                                    <property name="floatable">1</property>
+                                                    <property name="font"></property>
+                                                    <property name="gripper">0</property>
+                                                    <property name="hidden">0</property>
+                                                    <property name="id">wxID_ANY</property>
+                                                    <property name="label">Default 3D Path</property>
+                                                    <property name="max_size"></property>
+                                                    <property name="maximize_button">0</property>
+                                                    <property name="maximum_size"></property>
+                                                    <property name="min_size"></property>
+                                                    <property name="minimize_button">0</property>
+                                                    <property name="minimum_size"></property>
+                                                    <property name="moveable">1</property>
+                                                    <property name="name">m_buttonDefault3DPath</property>
+                                                    <property name="pane_border">1</property>
+                                                    <property name="pane_position"></property>
+                                                    <property name="pane_size"></property>
+                                                    <property name="permission">protected</property>
+                                                    <property name="pin_button">1</property>
+                                                    <property name="pos"></property>
+                                                    <property name="resize">Resizable</property>
+                                                    <property name="show">1</property>
+                                                    <property name="size"></property>
+                                                    <property name="style"></property>
+                                                    <property name="subclass"></property>
+                                                    <property name="toolbar_pane">0</property>
+                                                    <property name="tooltip"></property>
+                                                    <property name="validator_data_type"></property>
+                                                    <property name="validator_style">wxFILTER_NONE</property>
+                                                    <property name="validator_type">wxDefaultValidator</property>
+                                                    <property name="validator_variable"></property>
+                                                    <property name="window_extra_style"></property>
+                                                    <property name="window_name"></property>
+                                                    <property name="window_style"></property>
+                                                    <event name="OnButtonClick">OnDefault3DPathButtonClick</event>
+                                                    <event name="OnChar"></event>
+                                                    <event name="OnEnterWindow"></event>
+                                                    <event name="OnEraseBackground"></event>
+                                                    <event name="OnKeyDown"></event>
+                                                    <event name="OnKeyUp"></event>
+                                                    <event name="OnKillFocus"></event>
+                                                    <event name="OnLeaveWindow"></event>
+                                                    <event name="OnLeftDClick"></event>
+                                                    <event name="OnLeftDown"></event>
+                                                    <event name="OnLeftUp"></event>
+                                                    <event name="OnMiddleDClick"></event>
+                                                    <event name="OnMiddleDown"></event>
+                                                    <event name="OnMiddleUp"></event>
+                                                    <event name="OnMotion"></event>
+                                                    <event name="OnMouseEvents"></event>
+                                                    <event name="OnMouseWheel"></event>
+                                                    <event name="OnPaint"></event>
+                                                    <event name="OnRightDClick"></event>
+                                                    <event name="OnRightDown"></event>
+                                                    <event name="OnRightUp"></event>
+                                                    <event name="OnSetFocus"></event>
+                                                    <event name="OnSize"></event>
+                                                    <event name="OnUpdateUI"></event>
+                                                </object>
+                                            </object>
+                                        </object>
+                                    </object>
+                                </object>
+                            </object>
+                            <object class="sizeritem" expanded="1">
+                                <property name="border">5</property>
+                                <property name="flag"></property>
+                                <property name="proportion">0</property>
+                                <object class="spacer" expanded="1">
+                                    <property name="height">10</property>
+                                    <property name="permission">protected</property>
+                                    <property name="width">0</property>
+                                </object>
+                            </object>
+                            <object class="sizeritem" expanded="1">
+                                <property name="border">5</property>
+                                <property name="flag">wxALL|wxALIGN_CENTER_HORIZONTAL</property>
+                                <property name="proportion">0</property>
+                                <object class="wxStaticText" expanded="1">
+                                    <property name="BottomDockable">1</property>
+                                    <property name="LeftDockable">1</property>
+                                    <property name="RightDockable">1</property>
+                                    <property name="TopDockable">1</property>
+                                    <property name="aui_layer"></property>
+                                    <property name="aui_name"></property>
+                                    <property name="aui_position"></property>
+                                    <property name="aui_row"></property>
+                                    <property name="best_size"></property>
+                                    <property name="bg"></property>
+                                    <property name="caption"></property>
+                                    <property name="caption_visible">1</property>
+                                    <property name="center_pane">0</property>
+                                    <property name="close_button">1</property>
+                                    <property name="context_help"></property>
+                                    <property name="context_menu">1</property>
+                                    <property name="default_pane">0</property>
+                                    <property name="dock">Dock</property>
+                                    <property name="dock_fixed">0</property>
+                                    <property name="docking">Left</property>
+                                    <property name="enabled">1</property>
+                                    <property name="fg">255,0,0</property>
+                                    <property name="floatable">1</property>
+                                    <property name="font"></property>
+                                    <property name="gripper">0</property>
+                                    <property name="hidden">0</property>
+                                    <property name="id">wxID_ANY</property>
+                                    <property name="label">It is not possible to write in the selected directory.&#x0A;Please choose another one.</property>
+                                    <property name="max_size"></property>
+                                    <property name="maximize_button">0</property>
+                                    <property name="maximum_size"></property>
+                                    <property name="min_size"></property>
+                                    <property name="minimize_button">0</property>
+                                    <property name="minimum_size"></property>
+                                    <property name="moveable">1</property>
+                                    <property name="name">m_invalidDir</property>
+                                    <property name="pane_border">1</property>
+                                    <property name="pane_position"></property>
+                                    <property name="pane_size"></property>
+                                    <property name="permission">protected</property>
+                                    <property name="pin_button">1</property>
+                                    <property name="pos"></property>
+                                    <property name="resize">Resizable</property>
+                                    <property name="show">1</property>
+                                    <property name="size"></property>
+                                    <property name="style"></property>
+                                    <property name="subclass"></property>
+                                    <property name="toolbar_pane">0</property>
+                                    <property name="tooltip"></property>
+                                    <property name="window_extra_style"></property>
+                                    <property name="window_name"></property>
+                                    <property name="window_style"></property>
+                                    <property name="wrap">-1</property>
+                                    <event name="OnChar"></event>
+                                    <event name="OnEnterWindow"></event>
+                                    <event name="OnEraseBackground"></event>
+                                    <event name="OnKeyDown"></event>
+                                    <event name="OnKeyUp"></event>
+                                    <event name="OnKillFocus"></event>
+                                    <event name="OnLeaveWindow"></event>
+                                    <event name="OnLeftDClick"></event>
+                                    <event name="OnLeftDown"></event>
+                                    <event name="OnLeftUp"></event>
+                                    <event name="OnMiddleDClick"></event>
+                                    <event name="OnMiddleDown"></event>
+                                    <event name="OnMiddleUp"></event>
+                                    <event name="OnMotion"></event>
+                                    <event name="OnMouseEvents"></event>
+                                    <event name="OnMouseWheel"></event>
+                                    <event name="OnPaint"></event>
+                                    <event name="OnRightDClick"></event>
+                                    <event name="OnRightDown"></event>
+                                    <event name="OnRightUp"></event>
+                                    <event name="OnSetFocus"></event>
+                                    <event name="OnSize"></event>
+                                    <event name="OnUpdateUI"></event>
+                                </object>
+                            </object>
+                        </object>
+                    </object>
+                    <object class="sizeritem" expanded="1">
+                        <property name="border">5</property>
+                        <property name="flag">wxEXPAND</property>
+                        <property name="proportion">0</property>
+                        <object class="wxBoxSizer" expanded="1">
+                            <property name="minimum_size"></property>
+                            <property name="name">bSizerOfficialRepo</property>
+                            <property name="orient">wxHORIZONTAL</property>
+                            <property name="permission">none</property>
+                            <object class="sizeritem" expanded="1">
+                                <property name="border">5</property>
+                                <property name="flag">wxALL</property>
+                                <property name="proportion">0</property>
+                                <object class="wxStaticBitmap" expanded="1">
+                                    <property name="BottomDockable">1</property>
+                                    <property name="LeftDockable">1</property>
+                                    <property name="RightDockable">1</property>
+                                    <property name="TopDockable">1</property>
+                                    <property name="aui_layer"></property>
+                                    <property name="aui_name"></property>
+                                    <property name="aui_position"></property>
+                                    <property name="aui_row"></property>
+                                    <property name="best_size"></property>
+                                    <property name="bg"></property>
+                                    <property name="bitmap">Load From Art Provider; wxART_INFORMATION; wxART_OTHER</property>
+                                    <property name="caption"></property>
+                                    <property name="caption_visible">1</property>
+                                    <property name="center_pane">0</property>
+                                    <property name="close_button">1</property>
+                                    <property name="context_help"></property>
+                                    <property name="context_menu">1</property>
+                                    <property name="default_pane">0</property>
+                                    <property name="dock">Dock</property>
+                                    <property name="dock_fixed">0</property>
+                                    <property name="docking">Left</property>
+                                    <property name="enabled">1</property>
+                                    <property name="fg"></property>
+                                    <property name="floatable">1</property>
+                                    <property name="font"></property>
+                                    <property name="gripper">0</property>
+                                    <property name="hidden">0</property>
+                                    <property name="id">wxID_ANY</property>
+                                    <property name="max_size"></property>
+                                    <property name="maximize_button">0</property>
+                                    <property name="maximum_size"></property>
+                                    <property name="min_size"></property>
+                                    <property name="minimize_button">0</property>
+                                    <property name="minimum_size"></property>
+                                    <property name="moveable">1</property>
+                                    <property name="name">m_bitmapRepo</property>
+                                    <property name="pane_border">1</property>
+                                    <property name="pane_position"></property>
+                                    <property name="pane_size"></property>
+                                    <property name="permission">protected</property>
+                                    <property name="pin_button">1</property>
+                                    <property name="pos"></property>
+                                    <property name="resize">Resizable</property>
+                                    <property name="show">1</property>
+                                    <property name="size"></property>
+                                    <property name="subclass"></property>
+                                    <property name="toolbar_pane">0</property>
+                                    <property name="tooltip"></property>
+                                    <property name="window_extra_style"></property>
+                                    <property name="window_name"></property>
+                                    <property name="window_style"></property>
+                                    <event name="OnChar"></event>
+                                    <event name="OnEnterWindow"></event>
+                                    <event name="OnEraseBackground"></event>
+                                    <event name="OnKeyDown"></event>
+                                    <event name="OnKeyUp"></event>
+                                    <event name="OnKillFocus"></event>
+                                    <event name="OnLeaveWindow"></event>
+                                    <event name="OnLeftDClick"></event>
+                                    <event name="OnLeftDown"></event>
+                                    <event name="OnLeftUp"></event>
+                                    <event name="OnMiddleDClick"></event>
+                                    <event name="OnMiddleDown"></event>
+                                    <event name="OnMiddleUp"></event>
+                                    <event name="OnMotion"></event>
+                                    <event name="OnMouseEvents"></event>
+                                    <event name="OnMouseWheel"></event>
+                                    <event name="OnPaint"></event>
+                                    <event name="OnRightDClick"></event>
+                                    <event name="OnRightDown"></event>
+                                    <event name="OnRightUp"></event>
+                                    <event name="OnSetFocus"></event>
+                                    <event name="OnSize"></event>
+                                    <event name="OnUpdateUI"></event>
+                                </object>
+                            </object>
+                            <object class="sizeritem" expanded="1">
+                                <property name="border">10</property>
+                                <property name="flag">wxRIGHT|wxLEFT</property>
+                                <property name="proportion">0</property>
+                                <object class="spacer" expanded="1">
+                                    <property name="height">0</property>
+                                    <property name="permission">protected</property>
+                                    <property name="width">0</property>
+                                </object>
+                            </object>
+                            <object class="sizeritem" expanded="0">
+                                <property name="border">5</property>
+                                <property name="flag">wxALIGN_CENTER_VERTICAL|wxALL</property>
+                                <property name="proportion">0</property>
+                                <object class="wxHyperlinkCtrl" expanded="0">
+                                    <property name="BottomDockable">1</property>
+                                    <property name="LeftDockable">1</property>
+                                    <property name="RightDockable">1</property>
+                                    <property name="TopDockable">1</property>
+                                    <property name="aui_layer"></property>
+                                    <property name="aui_name"></property>
+                                    <property name="aui_position"></property>
+                                    <property name="aui_row"></property>
+                                    <property name="best_size"></property>
+                                    <property name="bg"></property>
+                                    <property name="caption"></property>
+                                    <property name="caption_visible">1</property>
+                                    <property name="center_pane">0</property>
+                                    <property name="close_button">1</property>
+                                    <property name="context_help"></property>
+                                    <property name="context_menu">1</property>
+                                    <property name="default_pane">0</property>
+                                    <property name="dock">Dock</property>
+                                    <property name="dock_fixed">0</property>
+                                    <property name="docking">Left</property>
+                                    <property name="enabled">1</property>
+                                    <property name="fg"></property>
+                                    <property name="floatable">1</property>
+                                    <property name="font"></property>
+                                    <property name="gripper">0</property>
+                                    <property name="hidden">0</property>
+                                    <property name="hover_color"></property>
+                                    <property name="id">wxID_ANY</property>
+                                    <property name="label">Visit our official Kicad repository on Github and get more libraries</property>
+                                    <property name="max_size"></property>
+                                    <property name="maximize_button">0</property>
+                                    <property name="maximum_size"></property>
+                                    <property name="min_size"></property>
+                                    <property name="minimize_button">0</property>
+                                    <property name="minimum_size"></property>
+                                    <property name="moveable">1</property>
+                                    <property name="name">m_hyperlinkGithubKicad</property>
+                                    <property name="normal_color"></property>
+                                    <property name="pane_border">1</property>
+                                    <property name="pane_position"></property>
+                                    <property name="pane_size"></property>
+                                    <property name="permission">protected</property>
+                                    <property name="pin_button">1</property>
+                                    <property name="pos"></property>
+                                    <property name="resize">Resizable</property>
+                                    <property name="show">1</property>
+                                    <property name="size"></property>
+                                    <property name="style">wxHL_DEFAULT_STYLE</property>
+                                    <property name="subclass"></property>
+                                    <property name="toolbar_pane">0</property>
+                                    <property name="tooltip"></property>
+                                    <property name="url">https://github.com/KiCad</property>
+                                    <property name="visited_color"></property>
+                                    <property name="window_extra_style"></property>
+                                    <property name="window_name"></property>
+                                    <property name="window_style"></property>
+                                    <event name="OnChar"></event>
+                                    <event name="OnEnterWindow"></event>
+                                    <event name="OnEraseBackground"></event>
+                                    <event name="OnHyperlink"></event>
+                                    <event name="OnKeyDown"></event>
+                                    <event name="OnKeyUp"></event>
+                                    <event name="OnKillFocus"></event>
+                                    <event name="OnLeaveWindow"></event>
+                                    <event name="OnLeftDClick"></event>
+                                    <event name="OnLeftDown"></event>
+                                    <event name="OnLeftUp"></event>
+                                    <event name="OnMiddleDClick"></event>
+                                    <event name="OnMiddleDown"></event>
+                                    <event name="OnMiddleUp"></event>
+                                    <event name="OnMotion"></event>
+                                    <event name="OnMouseEvents"></event>
+                                    <event name="OnMouseWheel"></event>
+                                    <event name="OnPaint"></event>
+                                    <event name="OnRightDClick"></event>
+                                    <event name="OnRightDown"></event>
+                                    <event name="OnRightUp"></event>
+                                    <event name="OnSetFocus"></event>
+                                    <event name="OnSize"></event>
+                                    <event name="OnUpdateUI"></event>
+                                </object>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+            </object>
+            <object class="WizardPageSimple" expanded="1">
+                <property name="bg"></property>
+                <property name="bitmap">Load From Art Provider; wxART_HELP_BOOK; wxART_FRAME_ICON</property>
+                <property name="context_help"></property>
+                <property name="context_menu">1</property>
+                <property name="enabled">1</property>
+                <property name="fg"></property>
+                <property name="font"></property>
+                <property name="hidden">0</property>
+                <property name="id">wxID_ANY</property>
+                <property name="maximum_size"></property>
+                <property name="minimum_size"></property>
+                <property name="name">m_wizPage2_Github</property>
+                <property name="permission">protected</property>
+                <property name="pos"></property>
+                <property name="size"></property>
+                <property name="subclass"></property>
+                <property name="tooltip"></property>
+                <property name="window_extra_style"></property>
+                <property name="window_name"></property>
+                <property name="window_style"></property>
+                <event name="OnChar"></event>
+                <event name="OnEnterWindow"></event>
+                <event name="OnEraseBackground"></event>
+                <event name="OnKeyDown"></event>
+                <event name="OnKeyUp"></event>
+                <event name="OnKillFocus"></event>
+                <event name="OnLeaveWindow"></event>
+                <event name="OnLeftDClick"></event>
+                <event name="OnLeftDown"></event>
+                <event name="OnLeftUp"></event>
+                <event name="OnMiddleDClick"></event>
+                <event name="OnMiddleDown"></event>
+                <event name="OnMiddleUp"></event>
+                <event name="OnMotion"></event>
+                <event name="OnMouseEvents"></event>
+                <event name="OnMouseWheel"></event>
+                <event name="OnPaint"></event>
+                <event name="OnRightDClick"></event>
+                <event name="OnRightDown"></event>
+                <event name="OnRightUp"></event>
+                <event name="OnSetFocus"></event>
+                <event name="OnSize"></event>
+                <event name="OnUpdateUI"></event>
+                <object class="wxBoxSizer" expanded="1">
+                    <property name="minimum_size"></property>
+                    <property name="name">bSizer111</property>
+                    <property name="orient">wxVERTICAL</property>
+                    <property name="permission">none</property>
+                    <object class="sizeritem" expanded="0">
+                        <property name="border">5</property>
+                        <property name="flag">wxALL|wxEXPAND</property>
+                        <property name="proportion">0</property>
+                        <object class="wxStaticText" expanded="0">
+                            <property name="BottomDockable">1</property>
+                            <property name="LeftDockable">1</property>
+                            <property name="RightDockable">1</property>
+                            <property name="TopDockable">1</property>
+                            <property name="aui_layer"></property>
+                            <property name="aui_name"></property>
+                            <property name="aui_position"></property>
+                            <property name="aui_row"></property>
+                            <property name="best_size"></property>
+                            <property name="bg"></property>
+                            <property name="caption"></property>
+                            <property name="caption_visible">1</property>
+                            <property name="center_pane">0</property>
+                            <property name="close_button">1</property>
+                            <property name="context_help"></property>
+                            <property name="context_menu">1</property>
+                            <property name="default_pane">0</property>
+                            <property name="dock">Dock</property>
+                            <property name="dock_fixed">0</property>
+                            <property name="docking">Left</property>
+                            <property name="enabled">1</property>
+                            <property name="fg"></property>
+                            <property name="floatable">1</property>
+                            <property name="font"></property>
+                            <property name="gripper">0</property>
+                            <property name="hidden">0</property>
+                            <property name="id">wxID_ANY</property>
+                            <property name="label">Select Github libraries to add:</property>
+                            <property name="max_size"></property>
+                            <property name="maximize_button">0</property>
+                            <property name="maximum_size"></property>
+                            <property name="min_size"></property>
+                            <property name="minimize_button">0</property>
+                            <property name="minimum_size"></property>
+                            <property name="moveable">1</property>
+                            <property name="name">m_staticText112</property>
+                            <property name="pane_border">1</property>
+                            <property name="pane_position"></property>
+                            <property name="pane_size"></property>
+                            <property name="permission">protected</property>
+                            <property name="pin_button">1</property>
+                            <property name="pos"></property>
+                            <property name="resize">Resizable</property>
+                            <property name="show">1</property>
+                            <property name="size"></property>
+                            <property name="style"></property>
+                            <property name="subclass"></property>
+                            <property name="toolbar_pane">0</property>
+                            <property name="tooltip"></property>
+                            <property name="window_extra_style"></property>
+                            <property name="window_name"></property>
+                            <property name="window_style"></property>
+                            <property name="wrap">-1</property>
+                            <event name="OnChar"></event>
+                            <event name="OnEnterWindow"></event>
+                            <event name="OnEraseBackground"></event>
+                            <event name="OnKeyDown"></event>
+                            <event name="OnKeyUp"></event>
+                            <event name="OnKillFocus"></event>
+                            <event name="OnLeaveWindow"></event>
+                            <event name="OnLeftDClick"></event>
+                            <event name="OnLeftDown"></event>
+                            <event name="OnLeftUp"></event>
+                            <event name="OnMiddleDClick"></event>
+                            <event name="OnMiddleDown"></event>
+                            <event name="OnMiddleUp"></event>
+                            <event name="OnMotion"></event>
+                            <event name="OnMouseEvents"></event>
+                            <event name="OnMouseWheel"></event>
+                            <event name="OnPaint"></event>
+                            <event name="OnRightDClick"></event>
+                            <event name="OnRightDown"></event>
+                            <event name="OnRightUp"></event>
+                            <event name="OnSetFocus"></event>
+                            <event name="OnSize"></event>
+                            <event name="OnUpdateUI"></event>
+                        </object>
+                    </object>
+                    <object class="sizeritem" expanded="0">
+                        <property name="border">5</property>
+                        <property name="flag">wxALL|wxEXPAND</property>
+                        <property name="proportion">1</property>
+                        <object class="wxCheckListBox" expanded="0">
+                            <property name="BottomDockable">1</property>
+                            <property name="LeftDockable">1</property>
+                            <property name="RightDockable">1</property>
+                            <property name="TopDockable">1</property>
+                            <property name="aui_layer"></property>
+                            <property name="aui_name"></property>
+                            <property name="aui_position"></property>
+                            <property name="aui_row"></property>
+                            <property name="best_size"></property>
+                            <property name="bg"></property>
+                            <property name="caption"></property>
+                            <property name="caption_visible">1</property>
+                            <property name="center_pane">0</property>
+                            <property name="choices"></property>
+                            <property name="close_button">1</property>
+                            <property name="context_help"></property>
+                            <property name="context_menu">1</property>
+                            <property name="default_pane">0</property>
+                            <property name="dock">Dock</property>
+                            <property name="dock_fixed">0</property>
+                            <property name="docking">Left</property>
+                            <property name="enabled">1</property>
+                            <property name="fg"></property>
+                            <property name="floatable">1</property>
+                            <property name="font"></property>
+                            <property name="gripper">0</property>
+                            <property name="hidden">0</property>
+                            <property name="id">wxID_ANY</property>
+                            <property name="max_size"></property>
+                            <property name="maximize_button">0</property>
+                            <property name="maximum_size"></property>
+                            <property name="min_size"></property>
+                            <property name="minimize_button">0</property>
+                            <property name="minimum_size"></property>
+                            <property name="moveable">1</property>
+                            <property name="name">m_checkList3Dlibnames</property>
+                            <property name="pane_border">1</property>
+                            <property name="pane_position"></property>
+                            <property name="pane_size"></property>
+                            <property name="permission">protected</property>
+                            <property name="pin_button">1</property>
+                            <property name="pos"></property>
+                            <property name="resize">Resizable</property>
+                            <property name="show">1</property>
+                            <property name="size"></property>
+                            <property name="style">wxLB_MULTIPLE|wxLB_NEEDED_SB</property>
+                            <property name="subclass"></property>
+                            <property name="toolbar_pane">0</property>
+                            <property name="tooltip"></property>
+                            <property name="validator_data_type"></property>
+                            <property name="validator_style">wxFILTER_NONE</property>
+                            <property name="validator_type">wxDefaultValidator</property>
+                            <property name="validator_variable"></property>
+                            <property name="window_extra_style"></property>
+                            <property name="window_name"></property>
+                            <property name="window_style"></property>
+                            <event name="OnChar"></event>
+                            <event name="OnCheckListBox"></event>
+                            <event name="OnCheckListBoxDClick"></event>
+                            <event name="OnCheckListBoxToggled"></event>
+                            <event name="OnEnterWindow"></event>
+                            <event name="OnEraseBackground"></event>
+                            <event name="OnKeyDown"></event>
+                            <event name="OnKeyUp"></event>
+                            <event name="OnKillFocus"></event>
+                            <event name="OnLeaveWindow"></event>
+                            <event name="OnLeftDClick"></event>
+                            <event name="OnLeftDown"></event>
+                            <event name="OnLeftUp"></event>
+                            <event name="OnMiddleDClick"></event>
+                            <event name="OnMiddleDown"></event>
+                            <event name="OnMiddleUp"></event>
+                            <event name="OnMotion"></event>
+                            <event name="OnMouseEvents"></event>
+                            <event name="OnMouseWheel"></event>
+                            <event name="OnPaint"></event>
+                            <event name="OnRightDClick"></event>
+                            <event name="OnRightDown"></event>
+                            <event name="OnRightUp"></event>
+                            <event name="OnSetFocus"></event>
+                            <event name="OnSize"></event>
+                            <event name="OnUpdateUI"></event>
+                        </object>
+                    </object>
+                    <object class="sizeritem" expanded="1">
+                        <property name="border">5</property>
+                        <property name="flag">wxEXPAND</property>
+                        <property name="proportion">0</property>
+                        <object class="wxBoxSizer" expanded="1">
+                            <property name="minimum_size"></property>
+                            <property name="name">bSizer7</property>
+                            <property name="orient">wxHORIZONTAL</property>
+                            <property name="permission">none</property>
+                            <object class="sizeritem" expanded="0">
+                                <property name="border">5</property>
+                                <property name="flag">wxALL</property>
+                                <property name="proportion">1</property>
+                                <object class="wxButton" expanded="0">
+                                    <property name="BottomDockable">1</property>
+                                    <property name="LeftDockable">1</property>
+                                    <property name="RightDockable">1</property>
+                                    <property name="TopDockable">1</property>
+                                    <property name="aui_layer"></property>
+                                    <property name="aui_name"></property>
+                                    <property name="aui_position"></property>
+                                    <property name="aui_row"></property>
+                                    <property name="best_size"></property>
+                                    <property name="bg"></property>
+                                    <property name="caption"></property>
+                                    <property name="caption_visible">1</property>
+                                    <property name="center_pane">0</property>
+                                    <property name="close_button">1</property>
+                                    <property name="context_help"></property>
+                                    <property name="context_menu">1</property>
+                                    <property name="default">0</property>
+                                    <property name="default_pane">0</property>
+                                    <property name="dock">Dock</property>
+                                    <property name="dock_fixed">0</property>
+                                    <property name="docking">Left</property>
+                                    <property name="enabled">1</property>
+                                    <property name="fg"></property>
+                                    <property name="floatable">1</property>
+                                    <property name="font"></property>
+                                    <property name="gripper">0</property>
+                                    <property name="hidden">0</property>
+                                    <property name="id">wxID_ANY</property>
+                                    <property name="label">Select all</property>
+                                    <property name="max_size"></property>
+                                    <property name="maximize_button">0</property>
+                                    <property name="maximum_size"></property>
+                                    <property name="min_size"></property>
+                                    <property name="minimize_button">0</property>
+                                    <property name="minimum_size"></property>
+                                    <property name="moveable">1</property>
+                                    <property name="name">m_btnSelectAll3Dlibs</property>
+                                    <property name="pane_border">1</property>
+                                    <property name="pane_position"></property>
+                                    <property name="pane_size"></property>
+                                    <property name="permission">protected</property>
+                                    <property name="pin_button">1</property>
+                                    <property name="pos"></property>
+                                    <property name="resize">Resizable</property>
+                                    <property name="show">1</property>
+                                    <property name="size"></property>
+                                    <property name="style"></property>
+                                    <property name="subclass"></property>
+                                    <property name="toolbar_pane">0</property>
+                                    <property name="tooltip"></property>
+                                    <property name="validator_data_type"></property>
+                                    <property name="validator_style">wxFILTER_NONE</property>
+                                    <property name="validator_type">wxDefaultValidator</property>
+                                    <property name="validator_variable"></property>
+                                    <property name="window_extra_style"></property>
+                                    <property name="window_name"></property>
+                                    <property name="window_style"></property>
+                                    <event name="OnButtonClick">OnSelectAll3Dlibs</event>
+                                    <event name="OnChar"></event>
+                                    <event name="OnEnterWindow"></event>
+                                    <event name="OnEraseBackground"></event>
+                                    <event name="OnKeyDown"></event>
+                                    <event name="OnKeyUp"></event>
+                                    <event name="OnKillFocus"></event>
+                                    <event name="OnLeaveWindow"></event>
+                                    <event name="OnLeftDClick"></event>
+                                    <event name="OnLeftDown"></event>
+                                    <event name="OnLeftUp"></event>
+                                    <event name="OnMiddleDClick"></event>
+                                    <event name="OnMiddleDown"></event>
+                                    <event name="OnMiddleUp"></event>
+                                    <event name="OnMotion"></event>
+                                    <event name="OnMouseEvents"></event>
+                                    <event name="OnMouseWheel"></event>
+                                    <event name="OnPaint"></event>
+                                    <event name="OnRightDClick"></event>
+                                    <event name="OnRightDown"></event>
+                                    <event name="OnRightUp"></event>
+                                    <event name="OnSetFocus"></event>
+                                    <event name="OnSize"></event>
+                                    <event name="OnUpdateUI"></event>
+                                </object>
+                            </object>
+                            <object class="sizeritem" expanded="0">
+                                <property name="border">5</property>
+                                <property name="flag">wxALL</property>
+                                <property name="proportion">1</property>
+                                <object class="wxButton" expanded="0">
+                                    <property name="BottomDockable">1</property>
+                                    <property name="LeftDockable">1</property>
+                                    <property name="RightDockable">1</property>
+                                    <property name="TopDockable">1</property>
+                                    <property name="aui_layer"></property>
+                                    <property name="aui_name"></property>
+                                    <property name="aui_position"></property>
+                                    <property name="aui_row"></property>
+                                    <property name="best_size"></property>
+                                    <property name="bg"></property>
+                                    <property name="caption"></property>
+                                    <property name="caption_visible">1</property>
+                                    <property name="center_pane">0</property>
+                                    <property name="close_button">1</property>
+                                    <property name="context_help"></property>
+                                    <property name="context_menu">1</property>
+                                    <property name="default">0</property>
+                                    <property name="default_pane">0</property>
+                                    <property name="dock">Dock</property>
+                                    <property name="dock_fixed">0</property>
+                                    <property name="docking">Left</property>
+                                    <property name="enabled">1</property>
+                                    <property name="fg"></property>
+                                    <property name="floatable">1</property>
+                                    <property name="font"></property>
+                                    <property name="gripper">0</property>
+                                    <property name="hidden">0</property>
+                                    <property name="id">wxID_ANY</property>
+                                    <property name="label">Unselect all</property>
+                                    <property name="max_size"></property>
+                                    <property name="maximize_button">0</property>
+                                    <property name="maximum_size"></property>
+                                    <property name="min_size"></property>
+                                    <property name="minimize_button">0</property>
+                                    <property name="minimum_size"></property>
+                                    <property name="moveable">1</property>
+                                    <property name="name">m_btnUnselectAll3Dlibs</property>
+                                    <property name="pane_border">1</property>
+                                    <property name="pane_position"></property>
+                                    <property name="pane_size"></property>
+                                    <property name="permission">protected</property>
+                                    <property name="pin_button">1</property>
+                                    <property name="pos"></property>
+                                    <property name="resize">Resizable</property>
+                                    <property name="show">1</property>
+                                    <property name="size"></property>
+                                    <property name="style"></property>
+                                    <property name="subclass"></property>
+                                    <property name="toolbar_pane">0</property>
+                                    <property name="tooltip"></property>
+                                    <property name="validator_data_type"></property>
+                                    <property name="validator_style">wxFILTER_NONE</property>
+                                    <property name="validator_type">wxDefaultValidator</property>
+                                    <property name="validator_variable"></property>
+                                    <property name="window_extra_style"></property>
+                                    <property name="window_name"></property>
+                                    <property name="window_style"></property>
+                                    <event name="OnButtonClick">OnUnselectAll3Dlibs</event>
+                                    <event name="OnChar"></event>
+                                    <event name="OnEnterWindow"></event>
+                                    <event name="OnEraseBackground"></event>
+                                    <event name="OnKeyDown"></event>
+                                    <event name="OnKeyUp"></event>
+                                    <event name="OnKillFocus"></event>
+                                    <event name="OnLeaveWindow"></event>
+                                    <event name="OnLeftDClick"></event>
+                                    <event name="OnLeftDown"></event>
+                                    <event name="OnLeftUp"></event>
+                                    <event name="OnMiddleDClick"></event>
+                                    <event name="OnMiddleDown"></event>
+                                    <event name="OnMiddleUp"></event>
+                                    <event name="OnMotion"></event>
+                                    <event name="OnMouseEvents"></event>
+                                    <event name="OnMouseWheel"></event>
+                                    <event name="OnPaint"></event>
+                                    <event name="OnRightDClick"></event>
+                                    <event name="OnRightDown"></event>
+                                    <event name="OnRightUp"></event>
+                                    <event name="OnSetFocus"></event>
+                                    <event name="OnSize"></event>
+                                    <event name="OnUpdateUI"></event>
+                                </object>
+                            </object>
+                            <object class="sizeritem" expanded="1">
+                                <property name="border">5</property>
+                                <property name="flag">wxEXPAND</property>
+                                <property name="proportion">1</property>
+                                <object class="spacer" expanded="1">
+                                    <property name="height">0</property>
+                                    <property name="permission">protected</property>
+                                    <property name="width">0</property>
+                                </object>
+                            </object>
+                            <object class="sizeritem" expanded="1">
+                                <property name="border">5</property>
+                                <property name="flag">wxALL</property>
+                                <property name="proportion">2</property>
+                                <object class="wxSearchCtrl" expanded="1">
+                                    <property name="BottomDockable">1</property>
+                                    <property name="LeftDockable">1</property>
+                                    <property name="RightDockable">1</property>
+                                    <property name="TopDockable">1</property>
+                                    <property name="aui_layer"></property>
+                                    <property name="aui_name"></property>
+                                    <property name="aui_position"></property>
+                                    <property name="aui_row"></property>
+                                    <property name="best_size"></property>
+                                    <property name="bg"></property>
+                                    <property name="cancel_button">0</property>
+                                    <property name="caption"></property>
+                                    <property name="caption_visible">1</property>
+                                    <property name="center_pane">0</property>
+                                    <property name="close_button">1</property>
+                                    <property name="context_help"></property>
+                                    <property name="context_menu">1</property>
+                                    <property name="default_pane">0</property>
+                                    <property name="dock">Dock</property>
+                                    <property name="dock_fixed">0</property>
+                                    <property name="docking">Left</property>
+                                    <property name="enabled">1</property>
+                                    <property name="fg"></property>
+                                    <property name="floatable">1</property>
+                                    <property name="font"></property>
+                                    <property name="gripper">0</property>
+                                    <property name="hidden">0</property>
+                                    <property name="id">wxID_ANY</property>
+                                    <property name="max_size"></property>
+                                    <property name="maximize_button">0</property>
+                                    <property name="maximum_size"></property>
+                                    <property name="min_size"></property>
+                                    <property name="minimize_button">0</property>
+                                    <property name="minimum_size"></property>
+                                    <property name="moveable">1</property>
+                                    <property name="name">m_searchCtrl3Dlibs</property>
+                                    <property name="pane_border">1</property>
+                                    <property name="pane_position"></property>
+                                    <property name="pane_size"></property>
+                                    <property name="permission">protected</property>
+                                    <property name="pin_button">1</property>
+                                    <property name="pos"></property>
+                                    <property name="resize">Resizable</property>
+                                    <property name="search_button">1</property>
+                                    <property name="show">1</property>
+                                    <property name="size"></property>
+                                    <property name="style"></property>
+                                    <property name="subclass"></property>
+                                    <property name="toolbar_pane">0</property>
+                                    <property name="tooltip"></property>
+                                    <property name="validator_data_type"></property>
+                                    <property name="validator_style">wxFILTER_NONE</property>
+                                    <property name="validator_type">wxDefaultValidator</property>
+                                    <property name="validator_variable"></property>
+                                    <property name="value"></property>
+                                    <property name="window_extra_style"></property>
+                                    <property name="window_name"></property>
+                                    <property name="window_style"></property>
+                                    <event name="OnCancelButton"></event>
+                                    <event name="OnChar"></event>
+                                    <event name="OnEnterWindow"></event>
+                                    <event name="OnEraseBackground"></event>
+                                    <event name="OnKeyDown"></event>
+                                    <event name="OnKeyUp"></event>
+                                    <event name="OnKillFocus"></event>
+                                    <event name="OnLeaveWindow"></event>
+                                    <event name="OnLeftDClick"></event>
+                                    <event name="OnLeftDown"></event>
+                                    <event name="OnLeftUp"></event>
+                                    <event name="OnMiddleDClick"></event>
+                                    <event name="OnMiddleDown"></event>
+                                    <event name="OnMiddleUp"></event>
+                                    <event name="OnMotion"></event>
+                                    <event name="OnMouseEvents"></event>
+                                    <event name="OnMouseWheel"></event>
+                                    <event name="OnPaint"></event>
+                                    <event name="OnRightDClick"></event>
+                                    <event name="OnRightDown"></event>
+                                    <event name="OnRightUp"></event>
+                                    <event name="OnSearchButton"></event>
+                                    <event name="OnSetFocus"></event>
+                                    <event name="OnSize"></event>
+                                    <event name="OnText">OnChangeSearch</event>
+                                    <event name="OnTextEnter"></event>
+                                    <event name="OnUpdateUI"></event>
+                                </object>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+            </object>
+            <object class="WizardPageSimple" expanded="1">
+                <property name="bg"></property>
+                <property name="bitmap">Load From Art Provider; wxART_HELP_BOOK; wxART_FRAME_ICON</property>
+                <property name="context_help"></property>
+                <property name="context_menu">1</property>
+                <property name="enabled">1</property>
+                <property name="fg"></property>
+                <property name="font"></property>
+                <property name="hidden">0</property>
+                <property name="id">wxID_ANY</property>
+                <property name="maximum_size"></property>
+                <property name="minimum_size"></property>
+                <property name="name">m_wizPage3_SelectTarget</property>
+                <property name="permission">protected</property>
+                <property name="pos"></property>
+                <property name="size"></property>
+                <property name="subclass"></property>
+                <property name="tooltip"></property>
+                <property name="window_extra_style"></property>
+                <property name="window_name"></property>
+                <property name="window_style"></property>
+                <event name="OnChar"></event>
+                <event name="OnEnterWindow"></event>
+                <event name="OnEraseBackground"></event>
+                <event name="OnKeyDown"></event>
+                <event name="OnKeyUp"></event>
+                <event name="OnKillFocus"></event>
+                <event name="OnLeaveWindow"></event>
+                <event name="OnLeftDClick"></event>
+                <event name="OnLeftDown"></event>
+                <event name="OnLeftUp"></event>
+                <event name="OnMiddleDClick"></event>
+                <event name="OnMiddleDown"></event>
+                <event name="OnMiddleUp"></event>
+                <event name="OnMotion"></event>
+                <event name="OnMouseEvents"></event>
+                <event name="OnMouseWheel"></event>
+                <event name="OnPaint"></event>
+                <event name="OnRightDClick"></event>
+                <event name="OnRightDown"></event>
+                <event name="OnRightUp"></event>
+                <event name="OnSetFocus"></event>
+                <event name="OnSize"></event>
+                <event name="OnUpdateUI"></event>
+                <object class="wxBoxSizer" expanded="1">
+                    <property name="minimum_size"></property>
+                    <property name="name">bSizer12</property>
+                    <property name="orient">wxVERTICAL</property>
+                    <property name="permission">none</property>
+                    <object class="sizeritem" expanded="0">
+                        <property name="border">5</property>
+                        <property name="flag">wxALL</property>
+                        <property name="proportion">0</property>
+                        <object class="wxStaticText" expanded="0">
+                            <property name="BottomDockable">1</property>
+                            <property name="LeftDockable">1</property>
+                            <property name="RightDockable">1</property>
+                            <property name="TopDockable">1</property>
+                            <property name="aui_layer"></property>
+                            <property name="aui_name"></property>
+                            <property name="aui_position"></property>
+                            <property name="aui_row"></property>
+                            <property name="best_size"></property>
+                            <property name="bg"></property>
+                            <property name="caption"></property>
+                            <property name="caption_visible">1</property>
+                            <property name="center_pane">0</property>
+                            <property name="close_button">1</property>
+                            <property name="context_help"></property>
+                            <property name="context_menu">1</property>
+                            <property name="default_pane">0</property>
+                            <property name="dock">Dock</property>
+                            <property name="dock_fixed">0</property>
+                            <property name="docking">Left</property>
+                            <property name="enabled">1</property>
+                            <property name="fg"></property>
+                            <property name="floatable">1</property>
+                            <property name="font"></property>
+                            <property name="gripper">0</property>
+                            <property name="hidden">0</property>
+                            <property name="id">wxID_ANY</property>
+                            <property name="label">3D shape libraries to be downloaded:</property>
+                            <property name="max_size"></property>
+                            <property name="maximize_button">0</property>
+                            <property name="maximum_size"></property>
+                            <property name="min_size"></property>
+                            <property name="minimize_button">0</property>
+                            <property name="minimum_size"></property>
+                            <property name="moveable">1</property>
+                            <property name="name">m_staticText12</property>
+                            <property name="pane_border">1</property>
+                            <property name="pane_position"></property>
+                            <property name="pane_size"></property>
+                            <property name="permission">protected</property>
+                            <property name="pin_button">1</property>
+                            <property name="pos"></property>
+                            <property name="resize">Resizable</property>
+                            <property name="show">1</property>
+                            <property name="size"></property>
+                            <property name="style"></property>
+                            <property name="subclass"></property>
+                            <property name="toolbar_pane">0</property>
+                            <property name="tooltip"></property>
+                            <property name="window_extra_style"></property>
+                            <property name="window_name"></property>
+                            <property name="window_style"></property>
+                            <property name="wrap">-1</property>
+                            <event name="OnChar"></event>
+                            <event name="OnEnterWindow"></event>
+                            <event name="OnEraseBackground"></event>
+                            <event name="OnKeyDown"></event>
+                            <event name="OnKeyUp"></event>
+                            <event name="OnKillFocus"></event>
+                            <event name="OnLeaveWindow"></event>
+                            <event name="OnLeftDClick"></event>
+                            <event name="OnLeftDown"></event>
+                            <event name="OnLeftUp"></event>
+                            <event name="OnMiddleDClick"></event>
+                            <event name="OnMiddleDown"></event>
+                            <event name="OnMiddleUp"></event>
+                            <event name="OnMotion"></event>
+                            <event name="OnMouseEvents"></event>
+                            <event name="OnMouseWheel"></event>
+                            <event name="OnPaint"></event>
+                            <event name="OnRightDClick"></event>
+                            <event name="OnRightDown"></event>
+                            <event name="OnRightUp"></event>
+                            <event name="OnSetFocus"></event>
+                            <event name="OnSize"></event>
+                            <event name="OnUpdateUI"></event>
+                        </object>
+                    </object>
+                    <object class="sizeritem" expanded="1">
+                        <property name="border">5</property>
+                        <property name="flag">wxALL|wxEXPAND</property>
+                        <property name="proportion">1</property>
+                        <object class="wxListBox" expanded="1">
+                            <property name="BottomDockable">1</property>
+                            <property name="LeftDockable">1</property>
+                            <property name="RightDockable">1</property>
+                            <property name="TopDockable">1</property>
+                            <property name="aui_layer"></property>
+                            <property name="aui_name"></property>
+                            <property name="aui_position"></property>
+                            <property name="aui_row"></property>
+                            <property name="best_size"></property>
+                            <property name="bg"></property>
+                            <property name="caption"></property>
+                            <property name="caption_visible">1</property>
+                            <property name="center_pane">0</property>
+                            <property name="choices"></property>
+                            <property name="close_button">1</property>
+                            <property name="context_help"></property>
+                            <property name="context_menu">1</property>
+                            <property name="default_pane">0</property>
+                            <property name="dock">Dock</property>
+                            <property name="dock_fixed">0</property>
+                            <property name="docking">Left</property>
+                            <property name="enabled">1</property>
+                            <property name="fg"></property>
+                            <property name="floatable">1</property>
+                            <property name="font"></property>
+                            <property name="gripper">0</property>
+                            <property name="hidden">0</property>
+                            <property name="id">wxID_ANY</property>
+                            <property name="max_size"></property>
+                            <property name="maximize_button">0</property>
+                            <property name="maximum_size"></property>
+                            <property name="min_size"></property>
+                            <property name="minimize_button">0</property>
+                            <property name="minimum_size"></property>
+                            <property name="moveable">1</property>
+                            <property name="name">m_lbReview</property>
+                            <property name="pane_border">1</property>
+                            <property name="pane_position"></property>
+                            <property name="pane_size"></property>
+                            <property name="permission">protected</property>
+                            <property name="pin_button">1</property>
+                            <property name="pos"></property>
+                            <property name="resize">Resizable</property>
+                            <property name="show">1</property>
+                            <property name="size"></property>
+                            <property name="style"></property>
+                            <property name="subclass"></property>
+                            <property name="toolbar_pane">0</property>
+                            <property name="tooltip"></property>
+                            <property name="validator_data_type"></property>
+                            <property name="validator_style">wxFILTER_NONE</property>
+                            <property name="validator_type">wxDefaultValidator</property>
+                            <property name="validator_variable"></property>
+                            <property name="window_extra_style"></property>
+                            <property name="window_name"></property>
+                            <property name="window_style"></property>
+                            <event name="OnChar"></event>
+                            <event name="OnEnterWindow"></event>
+                            <event name="OnEraseBackground"></event>
+                            <event name="OnKeyDown"></event>
+                            <event name="OnKeyUp"></event>
+                            <event name="OnKillFocus"></event>
+                            <event name="OnLeaveWindow"></event>
+                            <event name="OnLeftDClick"></event>
+                            <event name="OnLeftDown"></event>
+                            <event name="OnLeftUp"></event>
+                            <event name="OnListBox"></event>
+                            <event name="OnListBoxDClick"></event>
+                            <event name="OnMiddleDClick"></event>
+                            <event name="OnMiddleDown"></event>
+                            <event name="OnMiddleUp"></event>
+                            <event name="OnMotion"></event>
+                            <event name="OnMouseEvents"></event>
+                            <event name="OnMouseWheel"></event>
+                            <event name="OnPaint"></event>
+                            <event name="OnRightDClick"></event>
+                            <event name="OnRightDown"></event>
+                            <event name="OnRightUp"></event>
+                            <event name="OnSetFocus"></event>
+                            <event name="OnSize"></event>
+                            <event name="OnUpdateUI"></event>
+                        </object>
+                    </object>
+                </object>
+            </object>
+        </object>
+    </object>
+</wxFormBuilder_Project>

=== added file 'pcbnew/dialogs/wizard_3DShape_Libs_downloader_base.h'
--- pcbnew/dialogs/wizard_3DShape_Libs_downloader_base.h	1970-01-01 00:00:00 +0000
+++ pcbnew/dialogs/wizard_3DShape_Libs_downloader_base.h	2015-08-13 15:50:18 +0000
@@ -0,0 +1,83 @@
+///////////////////////////////////////////////////////////////////////////
+// C++ code generated with wxFormBuilder (version Jun 17 2015)
+// http://www.wxformbuilder.org/
+//
+// PLEASE DO "NOT" EDIT THIS FILE!
+///////////////////////////////////////////////////////////////////////////
+
+#ifndef __WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE_H__
+#define __WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE_H__
+
+#include <wx/artprov.h>
+#include <wx/xrc/xmlres.h>
+#include <wx/intl.h>
+#include <wx/string.h>
+#include <wx/stattext.h>
+#include <wx/gdicmn.h>
+#include <wx/font.h>
+#include <wx/colour.h>
+#include <wx/settings.h>
+#include <wx/textctrl.h>
+#include <wx/sizer.h>
+#include <wx/button.h>
+#include <wx/bitmap.h>
+#include <wx/image.h>
+#include <wx/icon.h>
+#include <wx/statbmp.h>
+#include <wx/hyperlink.h>
+#include <wx/checklst.h>
+#include <wx/srchctrl.h>
+#include <wx/listbox.h>
+#include <wx/wizard.h>
+#include <wx/dynarray.h>
+WX_DEFINE_ARRAY_PTR( wxWizardPageSimple*, WizardPages );
+
+///////////////////////////////////////////////////////////////////////////
+
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE
+///////////////////////////////////////////////////////////////////////////////
+class WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE : public wxWizard 
+{
+	private:
+	
+	protected:
+		wxStaticText* m_staticText1;
+		wxStaticText* m_staticText8;
+		wxTextCtrl* m_textCtrlGithubURL;
+		wxStaticText* m_staticText9;
+		wxTextCtrl* m_downloadDir;
+		wxButton* m_btnBrowse;
+		wxButton* m_buttonDefault3DPath;
+		wxStaticText* m_invalidDir;
+		wxStaticBitmap* m_bitmapRepo;
+		wxHyperlinkCtrl* m_hyperlinkGithubKicad;
+		wxStaticText* m_staticText112;
+		wxCheckListBox* m_checkList3Dlibnames;
+		wxButton* m_btnSelectAll3Dlibs;
+		wxButton* m_btnUnselectAll3Dlibs;
+		wxSearchCtrl* m_searchCtrl3Dlibs;
+		wxStaticText* m_staticText12;
+		wxListBox* m_lbReview;
+		
+		// Virtual event handlers, overide them in your derived class
+		virtual void OnWizardFinished( wxWizardEvent& event ) { event.Skip(); }
+		virtual void OnPageChanged( wxWizardEvent& event ) { event.Skip(); }
+		virtual void OnPageChanging( wxWizardEvent& event ) { event.Skip(); }
+		virtual void OnBrowseButtonClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnDefault3DPathButtonClick( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnSelectAll3Dlibs( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnUnselectAll3Dlibs( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnChangeSearch( wxCommandEvent& event ) { event.Skip(); }
+		
+	
+	public:
+		
+		WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Add 3D Shape Libraries Wizard"), const wxBitmap& bitmap = wxArtProvider::GetBitmap( wxART_HELP_BOOK, wxART_FRAME_ICON ), const wxPoint& pos = wxDefaultPosition, long style = wxCAPTION|wxCLOSE_BOX|wxDEFAULT_DIALOG_STYLE|wxMAXIMIZE_BOX|wxRESIZE_BORDER );
+		WizardPages m_pages;
+		~WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE();
+	
+};
+
+#endif //__WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE_H__

=== modified file 'pcbnew/github/CMakeLists.txt'
--- pcbnew/github/CMakeLists.txt	2015-03-03 10:50:50 +0000
+++ pcbnew/github/CMakeLists.txt	2015-08-12 12:23:51 +0000
@@ -51,7 +51,7 @@
     "${CMAKE_CXX_FLAGS} -Wno-sign-compare -Wno-reorder -Wno-unused-variable -Wno-unused-function -Wno-strict-aliasing" )
 
 set( GITHUB_PLUGIN_SRCS
-    github_plugin.cpp github_getliblist.cpp
+    github_plugin.cpp github_getliblist.cpp html_link_parser.cpp
     )
 
 add_library( github_plugin STATIC ${GITHUB_PLUGIN_SRCS} )

=== modified file 'pcbnew/github/github_getliblist.cpp'
--- pcbnew/github/github_getliblist.cpp	2015-01-17 08:01:16 +0000
+++ pcbnew/github/github_getliblist.cpp	2015-08-12 16:54:00 +0000
@@ -75,11 +75,46 @@
 #include <github_getliblist.h>
 #include <macros.h>
 #include <common.h>
+#include <html_link_parser.h>
 
 
 GITHUB_GETLIBLIST::GITHUB_GETLIBLIST( const wxString& aRepoURL )
 {
     m_repoURL = aRepoURL;
+    m_libs_ext =  wxT( ".pretty" );
+    strcpy( m_option_string, "application/json" );
+}
+
+
+bool GITHUB_GETLIBLIST::Get3DshapesLibsList( wxArrayString& aList,
+                        bool (*aFilter)( const wxString& aData ) )
+{
+    std::string fullURLCommand;
+    strcpy( m_option_string, "text/html" );
+
+    wxString repoURL = m_repoURL;
+
+    wxString errorMsg;
+
+    fullURLCommand = repoURL.utf8_str();
+    bool success = remote_get_json( &fullURLCommand, &errorMsg );
+
+    if( !success )
+    {
+        wxMessageBox( errorMsg );
+        return false;
+    }
+
+    if( aFilter )
+    {
+        //Convert m_json_image (std::string) to wxString for HTML_LINK_PARSER
+        wxString buffer( GetBuffer() );
+
+        HTML_LINK_PARSER html_parser( buffer, aList );
+        html_parser.ParseLinks( aFilter );
+    }
+
+    return true;
 }
 
 
@@ -88,6 +123,7 @@
     std::string fullURLCommand;
     int page = 1;
     int itemCountMax = 99;              // Do not use a valu > 100, it does not work
+    strcpy( m_option_string, "application/json" );
 
     // Github max items returned is 100 per page
 
@@ -129,7 +165,7 @@
                     if( tmp[tmp.Length() - 1] == QUOTE )
                         tmp.RemoveLast();
 
-                    if( tmp.EndsWith( wxT( ".pretty" ) ) )
+                    if( tmp.EndsWith( m_libs_ext ) )
                     {
                         aList.Add( tmp.AfterLast( ':' ) );
                         int idx = aList.GetCount() - 1;

=== modified file 'pcbnew/github/github_getliblist.h'
--- pcbnew/github/github_getliblist.h	2015-01-15 20:01:53 +0000
+++ pcbnew/github/github_getliblist.h	2015-08-12 16:53:40 +0000
@@ -39,7 +39,20 @@
 {
 public:
     // -----<API>----------------------------------------------------------
+
+    /**
+     * Fills aList by the name of libraries found on the github repo
+     */
     bool GetLibraryList( wxArrayString& aList );
+    bool Get3DshapesLibsList( wxArrayString& aList,
+                        bool (*aFilter)( const wxString& aData ) );
+    const std::string& GetBuffer() { return m_json_image; }
+
+    /**
+     * The library names are expecting ending by .pretty
+     * SetLibraryExt set the extension to aExt
+     */
+    void SetLibraryExt( const wxString& aExt ) { m_libs_ext = aExt; }
 
     // -----</API>---------------------------------------------------------
 
@@ -55,7 +68,7 @@
      *
      * @param  aRepoURL points to the base of the repo.
      * @param  aFullURLCommand is URL the full URL command (URL+options).
-     * @param  aItemCountMax is the max item count in apage,
+     * @param  aItemCountMax is the max item count in a page,
      *   and is 100 for github repo.
      * @param  aPage is the page number, if there are more than one page in repo.
      * @return bool - true if @a aRepoULR was parseable, else false
@@ -76,7 +89,9 @@
 
     wxString m_github_path;     ///< Something like https://api.github.com/orgs/KiCad
     std::string m_json_image;   ///< image of the text file in its entirety.
-    wxString m_repoURL;         // the URL of the Github repo
+    wxString m_repoURL;         ///< the URL of the Github repo
+    wxString m_libs_ext;        ///< the extension of the name of libraries (default = .pretty)
+    char m_option_string[64];   ///< option for transfert type, like "application/json"
 };
 
 

=== modified file 'pcbnew/github/github_plugin.cpp'
--- pcbnew/github/github_plugin.cpp	2015-05-26 15:12:43 +0000
+++ pcbnew/github/github_plugin.cpp	2015-08-12 11:57:12 +0000
@@ -592,8 +592,9 @@
     avhttp::http_stream     h( io );
     avhttp::request_opts    options;
 
-    options.insert( "Accept",       "application/json" );
-    options.insert( "User-Agent",   "http://kicad-pcb.org"; );   // THAT WOULD BE ME.
+
+    options.insert( "Accept", m_option_string );
+    options.insert( "User-Agent", "http://kicad-pcb.org"; );   // THAT WOULD BE ME.
     h.request_options( options );
 
     try
@@ -625,7 +626,7 @@
 
         if( aMsgError )
         {
-            *aMsgError =  msg;
+            *aMsgError = FROM_UTF8( msg.c_str() );
             return false;
         }
     }

=== added file 'pcbnew/github/html_link_parser.cpp'
--- pcbnew/github/html_link_parser.cpp	1970-01-01 00:00:00 +0000
+++ pcbnew/github/html_link_parser.cpp	2015-08-12 15:34:59 +0000
@@ -0,0 +1,68 @@
+/**
+ * @file html_link_parse.cpp
+ */
+
+/*
+ * This program source code file is part of KiCad, a free EDA CAD application.
+ *
+ * Copyright (C) 1992-2014 KiCad Developers, see AUTHORS.txt for contributors.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, you may find one here:
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ * or you may search the http://www.gnu.org website for the version 2 license,
+ * or you may write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+ */
+
+/*
+ * wxWidgets gives very few info about wxwebkit. For more info and more comments:
+ * see https://forums.wxwidgets.org/viewtopic.php?f=1&t=1119#
+ */
+
+#include <html_link_parser.h>
+
+bool LINK_TAGHANDLER::HandleTag(const wxHtmlTag& tag)
+{
+    if( tag.HasParam( wxT("HREF") ) )
+    {
+        wxString href( tag.GetParam( wxT("HREF") ) );
+        // Add the first parameter (the link)
+        m_Parser->AddString( href );
+        // Parse other params, but do nothing, because the AddText() callback
+        // do nothing
+        ParseInner(tag);
+        return true;
+    }
+    else
+        return false;
+}
+
+HTML_LINK_PARSER::HTML_LINK_PARSER( const wxString& aSrc, wxArrayString& aUrls )
+        : m_src( aSrc ), stringUrls( aUrls )
+{
+    AddTagHandler( new LINK_TAGHANDLER(this) );
+}
+
+
+void HTML_LINK_PARSER::AddString( const wxString& aText )
+{
+    wxString text = aText;
+    text.Trim( true );
+    text.Trim( false );
+
+    if( ! m_filter || m_filter( text ) )
+    {
+        stringUrls.Add( text );
+    }
+}

=== added file 'pcbnew/github/html_link_parser.h'
--- pcbnew/github/html_link_parser.h	1970-01-01 00:00:00 +0000
+++ pcbnew/github/html_link_parser.h	2015-08-12 12:17:57 +0000
@@ -0,0 +1,109 @@
+/**
+ * @file html_link_parse.h
+ */
+
+/*
+ * This program source code file is part of KiCad, a free EDA CAD application.
+ *
+ * Copyright (C) 1992-2014 KiCad Developers, see AUTHORS.txt for contributors.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, you may find one here:
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ * or you may search the http://www.gnu.org website for the version 2 license,
+ * or you may write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+ */
+
+/*
+ * wxWidgets gives very few info about wxwebkit. For more info and more comments:
+ * see https://forums.wxwidgets.org/viewtopic.php?f=1&t=1119#
+ */
+
+#ifndef HTML_LINK_PARSE_H
+#define HTML_LINK_PARSE_H
+
+
+#include <wx/wx.h>
+#include <wx/html/htmlpars.h>
+
+class HTML_LINK_PARSER ;
+
+/**
+ * a Tag parser, to extract tagged data in html text.
+ * this tag handler extract a url link, givent by tag "A"
+ * like:
+ * "<a href="/KiCad/Valves.pretty" itemprop="name codeRepository"> Valves.pretty</a>"
+ * the tag is "a"
+ * and the link is the parameter given by "href"
+ */
+class LINK_TAGHANDLER : public wxHtmlTagHandler
+{
+    HTML_LINK_PARSER* m_Parser;
+
+public:
+    LINK_TAGHANDLER() : m_Parser( NULL )
+    {
+    }
+
+    LINK_TAGHANDLER( HTML_LINK_PARSER* aParser ) : m_Parser( aParser )
+    {
+    }
+
+    wxString GetSupportedTags()
+    {
+        return "A";
+    }
+
+    bool HandleTag(const wxHtmlTag& tag);
+};
+
+/**
+ * The engine to parse a html text and extract useful data
+ * Here, the useful data are url links
+ */
+class HTML_LINK_PARSER : public wxHtmlParser
+{
+    const wxString& m_src;          // the html text to parse
+    wxArrayString& stringUrls;      // the strings extracted from html text
+    bool (*m_filter)( const wxString& aData );  // a callback function to filter strings
+
+public:
+
+    HTML_LINK_PARSER( const wxString& aSrc, wxArrayString& aUrls );
+
+    /**
+     * Parse the html text and store links in stringUrls
+     * Stored links can be filtered if aFilter is non NULL
+     * @param aFilter a filtering function ( bool aFilter( const wxString& aData ) )
+     * which return true if the text aData must be stored.
+     */
+    void ParseLinks( bool (*aFilter)( const wxString& aData ) )
+    {
+        m_filter = aFilter;
+        Parse(m_src);
+    }
+
+    // virtual pure from wxHtmlParser, do nothing here, but needed.
+    void AddText( const wxString& aText ){}
+
+    // Our "AddText" used to store selected text (the url link)
+    void AddString( const wxString& aText );
+
+    wxObject* GetProduct()
+    {
+        return NULL;
+    }
+};
+
+#endif      // ifndef HTML_LINK_PARSE_H

=== modified file 'pcbnew/invoke_pcb_dialog.h'
--- pcbnew/invoke_pcb_dialog.h	2015-03-30 16:42:39 +0000
+++ pcbnew/invoke_pcb_dialog.h	2015-07-28 08:42:28 +0000
@@ -91,6 +91,16 @@
 int InvokeFootprintWizard( wxTopLevelWindow* aParent, FP_LIB_TABLE* aGlobal, FP_LIB_TABLE* aProject );
 
 /**
+ * Function Invoke3DShapeLibsDownloaderWizard
+ * Runs the downloader wizard for easy 3D shape libraries download from
+ * the official Kicad Github repository of *.3Dshape libraries.
+ *
+ * @param aCaller is the wxTopLevelWindow which is invoking the dialog.
+ */
+void Invoke3DShapeLibsDownloaderWizard( wxTopLevelWindow* aParent );
+
+
+/**
  * Function InvokePluginOptionsEditor
  * calls DIALOG_FP_PLUGIN_OPTIONS dialog so that plugin options set can be edited.
  *

=== modified file 'pcbnew/menubar_pcbframe.cpp'
--- pcbnew/menubar_pcbframe.cpp	2015-05-19 16:39:05 +0000
+++ pcbnew/menubar_pcbframe.cpp	2015-07-28 07:53:25 +0000
@@ -494,6 +494,10 @@
                  _( "Edit path configuration environment variables" ),
                  KiBitmap( editor_xpm ) );
 
+    AddMenuItem( configmenu, ID_PCB_3DSHAPELIB_WIZARD,
+                _( "&3D Shapes Libraries Downloader" ), _( "Download from Github the 3D shape libraries with wizard" ),
+                KiBitmap( wizard_add_fplib_small_xpm ) );
+
     // Colors and Visibility are also handled by the layers manager toolbar
     AddMenuItem( configmenu, ID_MENU_PCB_SHOW_HIDE_LAYERS_MANAGER_DIALOG,
                  m_show_layer_manager_tools ?

=== modified file 'pcbnew/pcbframe.cpp'
--- pcbnew/pcbframe.cpp	2015-08-15 14:00:34 +0000
+++ pcbnew/pcbframe.cpp	2015-08-16 06:20:53 +0000
@@ -136,6 +136,7 @@
     EVT_MENU( ID_PCB_DRAWINGS_WIDTHS_SETUP, PCB_EDIT_FRAME::OnConfigurePcbOptions )
     EVT_MENU( ID_PCB_LIB_TABLE_EDIT, PCB_EDIT_FRAME::Process_Config )
     EVT_MENU( ID_PCB_LIB_WIZARD, PCB_EDIT_FRAME::Process_Config )
+    EVT_MENU( ID_PCB_3DSHAPELIB_WIZARD, PCB_EDIT_FRAME::Process_Config )
     EVT_MENU( ID_PREFERENCES_CONFIGURE_PATHS, PCB_EDIT_FRAME::OnConfigurePaths )
     EVT_MENU( ID_CONFIG_SAVE, PCB_EDIT_FRAME::Process_Config )
     EVT_MENU( ID_CONFIG_READ, PCB_EDIT_FRAME::Process_Config )

=== modified file 'pcbnew/pcbnew_config.cpp'
--- pcbnew/pcbnew_config.cpp	2015-06-12 12:46:41 +0000
+++ pcbnew/pcbnew_config.cpp	2015-07-28 07:56:32 +0000
@@ -174,6 +174,10 @@
         }
         break;
 
+    case ID_PCB_3DSHAPELIB_WIZARD:
+        Invoke3DShapeLibsDownloaderWizard( this );
+        break;
+
     case ID_PCB_MASK_CLEARANCE:
         {
             DIALOG_PADS_MASK_CLEARANCE dlg( this );

=== modified file 'pcbnew/pcbnew_id.h'
--- pcbnew/pcbnew_id.h	2015-03-30 16:42:39 +0000
+++ pcbnew/pcbnew_id.h	2015-07-28 07:53:18 +0000
@@ -295,6 +295,7 @@
     ID_PCB_USER_GRID_SETUP,
     ID_PCB_GEN_BOM_FILE_FROM_BOARD,
     ID_PCB_LIB_WIZARD,
+    ID_PCB_3DSHAPELIB_WIZARD,
     ID_PCB_LIB_TABLE_EDIT,
     ID_MENU_PCB_SHOW_DESIGN_RULES_DIALOG,
     ID_MENU_PCB_SHOW_HIDE_LAYERS_MANAGER_DIALOG,


Follow ups

References