diff --git a/3d-viewer/3d_cache/3d_cache.cpp b/3d-viewer/3d_cache/3d_cache.cpp
index 46d9acadf2..a8b66b5eb4 100644
--- a/3d-viewer/3d_cache/3d_cache.cpp
+++ b/3d-viewer/3d_cache/3d_cache.cpp
@@ -43,7 +43,7 @@
 #include "3d_cache.h"
 #include "3d_info.h"
 #include "sg/scenegraph.h"
-#include "3d_filename_resolver.h"
+#include "filename_resolver.h"
 #include "3d_plugin_manager.h"
 #include "plugins/3dapi/ifsg_api.h"
 
@@ -180,7 +180,7 @@ const wxString S3D_CACHE_ENTRY::GetCacheBaseName( void )
 S3D_CACHE::S3D_CACHE()
 {
     m_DirtyCache = false;
-    m_FNResolver = new S3D_FILENAME_RESOLVER;
+    m_FNResolver = new FILENAME_RESOLVER;
     m_Plugins = new S3D_PLUGIN_MANAGER;
 
     return;
@@ -217,7 +217,7 @@ SCENEGRAPH* S3D_CACHE::load( const wxString& aModelFile, S3D_CACHE_ENTRY** aCach
 
     // check cache if file is already loaded
     wxCriticalSectionLocker lock( lock3D_cache );
-    std::map< wxString, S3D_CACHE_ENTRY*, S3D::rsort_wxString >::iterator mi;
+    std::map< wxString, S3D_CACHE_ENTRY*, rsort_wxString >::iterator mi;
     mi = m_CacheMap.find( full3Dpath );
 
     if( mi != m_CacheMap.end() )
@@ -736,7 +736,7 @@ wxString S3D_CACHE::GetProjectDir( void )
 }
 
 
-S3D_FILENAME_RESOLVER* S3D_CACHE::GetResolver( void )
+FILENAME_RESOLVER* S3D_CACHE::GetResolver( void )
 {
     return m_FNResolver;
 }
@@ -818,7 +818,7 @@ wxString S3D_CACHE::GetModelHash( const wxString& aModelFileName )
         return wxEmptyString;
 
     // check cache if file is already loaded
-    std::map< wxString, S3D_CACHE_ENTRY*, S3D::rsort_wxString >::iterator mi;
+    std::map< wxString, S3D_CACHE_ENTRY*, rsort_wxString >::iterator mi;
     mi = m_CacheMap.find( full3Dpath );
 
     if( mi != m_CacheMap.end() )
diff --git a/3d-viewer/3d_cache/3d_cache.h b/3d-viewer/3d_cache/3d_cache.h
index 08d901ef3b..305790ff8a 100644
--- a/3d-viewer/3d_cache/3d_cache.h
+++ b/3d-viewer/3d_cache/3d_cache.h
@@ -32,8 +32,8 @@
 #include <list>
 #include <map>
 #include <wx/string.h>
-#include "str_rsort.h"
-#include "3d_filename_resolver.h"
+#include "kicad_string.h"
+#include "filename_resolver.h"
 #include "3d_info.h"
 #include "plugins/3dapi/c3dmodel.h"
 
@@ -42,7 +42,7 @@ class  PGM_BASE;
 class  S3D_CACHE;
 class  S3D_CACHE_ENTRY;
 class  SCENEGRAPH;
-class  S3D_FILENAME_RESOLVER;
+class  FILENAME_RESOLVER;
 class  S3D_PLUGIN_MANAGER;
 
 
@@ -53,10 +53,10 @@ private:
     std::list< S3D_CACHE_ENTRY* > m_CacheList;
 
     /// mapping of file names to cache names and data
-    std::map< wxString, S3D_CACHE_ENTRY*, S3D::rsort_wxString > m_CacheMap;
+    std::map< wxString, S3D_CACHE_ENTRY*, rsort_wxString > m_CacheMap;
 
     /// object to resolve file names
-    S3D_FILENAME_RESOLVER* m_FNResolver;
+    FILENAME_RESOLVER* m_FNResolver;
 
     /// plugin manager
     S3D_PLUGIN_MANAGER* m_Plugins;
@@ -167,7 +167,7 @@ public:
      */
     SCENEGRAPH* Load( const wxString& aModelFile );
 
-    S3D_FILENAME_RESOLVER* GetResolver( void );
+    FILENAME_RESOLVER* GetResolver( void );
 
     /**
      * Function GetFileFilters
diff --git a/3d-viewer/3d_cache/dialogs/3d_cache_dialogs.cpp b/3d-viewer/3d_cache/dialogs/3d_cache_dialogs.cpp
index 8fb29884ce..f01ad0944f 100644
--- a/3d-viewer/3d_cache/dialogs/3d_cache_dialogs.cpp
+++ b/3d-viewer/3d_cache/dialogs/3d_cache_dialogs.cpp
@@ -27,7 +27,7 @@
 #include "3d_cache.h"
 #include "plugins/3dapi/ifsg_api.h"
 #include "3d_cache_dialogs.h"
-#include "dlg_3d_pathconfig.h"
+#include "dialog_configure_paths.h"
 #include "dlg_select_3dmodel.h"
 
 
@@ -51,16 +51,9 @@ bool S3D::Select3DModel( wxWindow* aParent, S3D_CACHE* aCache,
 }
 
 
-bool S3D::Configure3DPaths( wxWindow* aParent, S3D_FILENAME_RESOLVER* aResolver )
+bool S3D::Configure3DPaths( wxWindow* aParent, FILENAME_RESOLVER* aResolver )
 {
-    DLG_3D_PATH_CONFIG* dp = new DLG_3D_PATH_CONFIG( aParent, aResolver );
+    DIALOG_CONFIGURE_PATHS dlg( aParent, aResolver );
 
-    if( wxID_OK == dp->ShowModal() )
-    {
-        delete dp;
-        return true;
-    }
-
-    delete dp;
-    return false;
+    return( dlg.ShowModal() == wxID_OK );
 }
diff --git a/3d-viewer/3d_cache/dialogs/3d_cache_dialogs.h b/3d-viewer/3d_cache/dialogs/3d_cache_dialogs.h
index e6731f938c..7693d02bed 100644
--- a/3d-viewer/3d_cache/dialogs/3d_cache_dialogs.h
+++ b/3d-viewer/3d_cache/dialogs/3d_cache_dialogs.h
@@ -27,14 +27,14 @@
 #include <wx/window.h>
 
 class S3D_CACHE;
-class S3D_FILENAME_RESOLVER;
+class FILENAME_RESOLVER;
 
 namespace S3D
 {
     bool Select3DModel( wxWindow* aParent, S3D_CACHE* aCache,
         wxString& prevModelSelectDir, int& prevModelWildcard, MODULE_3D_SETTINGS* aModel );
 
-    bool Configure3DPaths( wxWindow* aParent, S3D_FILENAME_RESOLVER* aResolver );
+    bool Configure3DPaths( wxWindow* aParent, FILENAME_RESOLVER* aResolver );
 }
 
 #endif  // CACHE_DIALOGS_3D_H
diff --git a/3d-viewer/3d_cache/dialogs/dlg_3d_pathconfig.cpp b/3d-viewer/3d_cache/dialogs/dlg_3d_pathconfig.cpp
deleted file mode 100644
index 2f73c8563d..0000000000
--- a/3d-viewer/3d_cache/dialogs/dlg_3d_pathconfig.cpp
+++ /dev/null
@@ -1,383 +0,0 @@
-/*
- * This program source code file is part of KiCad, a free EDA CAD application.
- *
- * Copyright (C) 2016 Cirilo Bernardo <cirilo.bernardo@gmail.com>
- *
- * 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 <wx/msgdlg.h>
-#include <pgm_base.h>
-#include <html_messagebox.h>
-#include "3d_cache/dialogs/dlg_3d_pathconfig.h"
-#include "3d_cache/3d_filename_resolver.h"
-
-DLG_3D_PATH_CONFIG::DLG_3D_PATH_CONFIG( wxWindow* aParent, S3D_FILENAME_RESOLVER* aResolver ) :
-    DLG_3D_PATH_CONFIG_BASE( aParent ), m_resolver( aResolver )
-{
-    initDialog();
-
-    GetSizer()->SetSizeHints( this );
-	Centre();
-
-    return;
-}
-
-
-void DLG_3D_PATH_CONFIG::initDialog()
-{
-    m_Aliases->EnableEditing( true );
-
-    // Gives a min width to each column, when the user drags a column
-    m_Aliases->SetColMinimalWidth( 0, 80 );
-    m_Aliases->SetColMinimalWidth( 1, 300 );
-    m_Aliases->SetColMinimalWidth( 2, 120 );
-    m_Aliases->SetColMinimalAcceptableWidth( 80 );
-
-    // Set column sizes to this min value
-	m_Aliases->SetColSize( 0, 80 );
-	m_Aliases->SetColSize( 1, 300 );
-	m_Aliases->SetColSize( 2, 120 );
-
-    m_EnvVars->SetColMinimalWidth( 0, 80 );
-    m_EnvVars->SetColMinimalWidth( 1, 300 );
-    m_EnvVars->SetColMinimalAcceptableWidth( 80 );
-    m_EnvVars->SetColSize( 0, 80 );
-    m_EnvVars->SetColSize( 1, 300 );
-
-    if( m_resolver )
-    {
-        updateEnvVars();
-
-        // prohibit these characters in the alias names: []{}()%~<>"='`;:.,&?/\|$
-        m_aliasValidator.SetStyle( wxFILTER_EXCLUDE_CHAR_LIST );
-        m_aliasValidator.SetCharExcludes( wxT( "{}[]()%~<>\"='`;:.,&?/\\|$" ) );
-
-        const std::list< S3D_ALIAS >* rpaths = m_resolver->GetPaths();
-        std::list< S3D_ALIAS >::const_iterator rI = rpaths->begin();
-        std::list< S3D_ALIAS >::const_iterator rE = rpaths->end();
-        size_t listsize = rpaths->size();
-        size_t listidx = 0;
-
-        while( rI != rE && ( (*rI).m_alias.StartsWith( "${" ) || (*rI).m_alias.StartsWith( "$(" ) ) )
-        {
-            ++listidx;
-            ++rI;
-        }
-
-        if( listidx < listsize )
-            m_curdir = (*rI).m_pathexp;
-        else
-            return;
-
-        listsize = listsize - listidx - m_Aliases->GetNumberRows();
-
-        // note: if the list allocation fails we have bigger problems
-        // and there is no point in trying to notify the user here
-        if( listsize > 0 && !m_Aliases->InsertRows( 0, listsize ) )
-            return;
-
-        int nitems = 0;
-        wxGridCellTextEditor* pEdAlias;
-
-        while( rI != rE )
-        {
-            m_Aliases->SetCellValue( nitems, 0, rI->m_alias );
-
-            if( 0 == nitems )
-            {
-                m_Aliases->SetCellEditor( nitems, 0, new wxGridCellTextEditor );
-                pEdAlias = (wxGridCellTextEditor*) m_Aliases->GetCellEditor( nitems, 0 );
-                pEdAlias->SetValidator( m_aliasValidator );
-                pEdAlias->DecRef();
-            }
-            else
-            {
-                pEdAlias->IncRef();
-                m_Aliases->SetCellEditor( nitems, 0, pEdAlias );
-            }
-
-            m_Aliases->SetCellValue( nitems, 1, rI->m_pathvar );
-            m_Aliases->SetCellValue( nitems++, 2, rI->m_description );
-
-            // TODO: implement a wxGridCellEditor which invokes a wxDirDialog
-
-            ++rI;
-        }
-
-        m_Aliases->AutoSize();
-    }
-}
-
-
-bool DLG_3D_PATH_CONFIG::TransferDataFromWindow()
-{
-    if( NULL == m_resolver )
-    {
-        wxMessageBox( _( "[BUG] No valid resolver; data will not be updated" ),
-            _( "Update 3D search path list" ) );
-
-        return false;
-    }
-
-    std::vector<S3D_ALIAS> alist;
-    S3D_ALIAS alias;
-
-    int ni = m_Aliases->GetNumberRows();
-
-    if( ni <= 0 )
-    {
-        // note: UI usability: we should ask a user if they're sure they
-        // want to clear the entire path list
-        m_resolver->UpdatePathList( alist );
-        return true;
-    }
-
-    for( int i = 0; i < ni; ++i )
-    {
-        alias.m_alias = m_Aliases->GetCellValue( i, 0 );
-        alias.m_pathvar = m_Aliases->GetCellValue( i, 1 );
-        alias.m_description = m_Aliases->GetCellValue( i, 2 );
-
-        if( !alias.m_alias.empty() && !alias.m_pathvar.empty() )
-            alist.push_back( alias );
-
-    }
-
-    return m_resolver->UpdatePathList( alist );
-}
-
-
-void DLG_3D_PATH_CONFIG::OnAddAlias( wxCommandEvent& event )
-{
-    int ni = m_Aliases->GetNumberRows();
-
-    if( m_Aliases->InsertRows( ni, 1 ) )
-    {
-        wxGridCellTextEditor* pEdAlias;
-        pEdAlias = (wxGridCellTextEditor*) m_Aliases->GetCellEditor( 0, 0 );
-        m_Aliases->SetCellEditor( ni, 0, pEdAlias );
-        m_Aliases->SelectRow( ni, false );
-        m_Aliases->AutoSize();
-        Fit();
-
-        // TODO: set the editors on any newly created rows
-    }
-
-    event.Skip();
-}
-
-
-void DLG_3D_PATH_CONFIG::OnDelAlias( wxCommandEvent& event )
-{
-    wxArrayInt sel = m_Aliases->GetSelectedRows();
-
-    if( sel.empty() )
-    {
-        wxMessageBox( _( "No entry selected" ), _( "Delete alias entry" ) );
-        return;
-    }
-
-    if( sel.size() > 1 )
-    {
-        wxMessageBox( _( "Multiple entries selected; please\nselect only one entry" ),
-            _( "Delete alias entry" ) );
-        return;
-    }
-
-    if( m_Aliases->GetNumberRows() > 1 )
-    {
-        int ni = sel.front();
-        m_Aliases->DeleteRows( ni, 1 );
-
-        if( ni >= m_Aliases->GetNumberRows() )
-            ni = m_Aliases->GetNumberRows() - 1;
-
-        m_Aliases->SelectRow( ni, false );
-        m_Aliases->AutoSize();
-        Fit();
-    }
-    else
-    {
-        m_Aliases->SetCellValue( 0, 0, wxEmptyString );
-        m_Aliases->SetCellValue( 0, 1, wxEmptyString );
-        m_Aliases->SetCellValue( 0, 2, wxEmptyString );
-    }
-
-    event.Skip();
-}
-
-
-void DLG_3D_PATH_CONFIG::OnAliasMoveUp( wxCommandEvent& event )
-{
-    wxArrayInt sel = m_Aliases->GetSelectedRows();
-
-    if( sel.empty() )
-    {
-        wxMessageBox( _( "No entry selected" ), _( "Move alias up" ) );
-        return;
-    }
-
-    if( sel.size() > 1 )
-    {
-        wxMessageBox( _( "Multiple entries selected; please\nselect only one entry" ),
-                      _( "Move alias up" ) );
-        return;
-    }
-
-    int ci = sel.front();
-
-    if( ci > 0 )
-    {
-        S3D_ALIAS al0;
-        al0.m_alias = m_Aliases->GetCellValue( ci, 0 );
-        al0.m_pathvar = m_Aliases->GetCellValue( ci, 1 );
-        al0.m_description = m_Aliases->GetCellValue( ci, 2 );
-
-        int ni = ci - 1;
-        m_Aliases->SetCellValue( ci, 0, m_Aliases->GetCellValue( ni, 0 ) );
-        m_Aliases->SetCellValue( ci, 1, m_Aliases->GetCellValue( ni, 1 ) );
-        m_Aliases->SetCellValue( ci, 2, m_Aliases->GetCellValue( ni, 2 ) );
-
-        m_Aliases->SetCellValue( ni, 0, al0.m_alias );
-        m_Aliases->SetCellValue( ni, 1, al0.m_pathvar );
-        m_Aliases->SetCellValue( ni, 2, al0.m_description );
-        m_Aliases->SelectRow( ni, false );
-    }
-
-    event.Skip();
-}
-
-
-void DLG_3D_PATH_CONFIG::OnAliasMoveDown( wxCommandEvent& event )
-{
-    wxArrayInt sel = m_Aliases->GetSelectedRows();
-
-    if( sel.empty() )
-    {
-        wxMessageBox( _( "No entry selected" ), _( "Move alias down" ) );
-        return;
-    }
-
-    if( sel.size() > 1 )
-    {
-        wxMessageBox( _( "Multiple entries selected; please\nselect only one entry" ),
-                      _( "Move alias down" ) );
-        return;
-    }
-
-    int ni = m_Aliases->GetNumberRows() - 1;
-    int ci = sel.front();
-
-    if( ci < ni )
-    {
-        S3D_ALIAS al0;
-        al0.m_alias = m_Aliases->GetCellValue( ci, 0 );
-        al0.m_pathvar = m_Aliases->GetCellValue( ci, 1 );
-        al0.m_description = m_Aliases->GetCellValue( ci, 2 );
-
-        ni = ci + 1;
-        m_Aliases->SetCellValue( ci, 0, m_Aliases->GetCellValue( ni, 0 ) );
-        m_Aliases->SetCellValue( ci, 1, m_Aliases->GetCellValue( ni, 1 ) );
-        m_Aliases->SetCellValue( ci, 2, m_Aliases->GetCellValue( ni, 2 ) );
-
-        m_Aliases->SetCellValue( ni, 0, al0.m_alias );
-        m_Aliases->SetCellValue( ni, 1, al0.m_pathvar );
-        m_Aliases->SetCellValue( ni, 2, al0.m_description );
-        m_Aliases->SelectRow( ni, false );
-    }
-
-    event.Skip();
-}
-
-
-void DLG_3D_PATH_CONFIG::OnConfigEnvVar( wxCommandEvent& event )
-{
-    Pgm().ConfigurePaths( this );
-    updateEnvVars();
-    event.Skip();
-}
-
-
-void DLG_3D_PATH_CONFIG::updateEnvVars( void )
-{
-    if( !m_resolver )
-        return;
-
-    std::list< wxString > epaths;
-
-    m_resolver->GetKicadPaths( epaths );
-    size_t nitems = epaths.size();
-    size_t nrows = m_EnvVars->GetNumberRows();
-    bool resize = nrows != nitems;  // true after adding/removing env vars
-
-    if( nrows > nitems )
-    {
-        size_t ni = nrows - nitems;
-        m_EnvVars->DeleteRows( 0, ni );
-    }
-    else if( nrows < nitems )
-    {
-        size_t ni = nitems - nrows;
-        m_EnvVars->InsertRows( 0, ni );
-    }
-
-    int j = 0;
-
-    for( const auto& i : epaths )
-    {
-        wxString val = ExpandEnvVarSubstitutions( i );
-        m_EnvVars->SetCellValue( j, 0, i );
-        m_EnvVars->SetCellValue( j, 1, val );
-        m_EnvVars->SetReadOnly( j, 0, true );
-        m_EnvVars->SetReadOnly( j, 1, true );
-        wxGridCellAttr* ap = m_EnvVars->GetOrCreateCellAttr( j, 0 );
-        ap->SetReadOnly( true );
-        ap->SetBackgroundColour( *wxLIGHT_GREY );
-        m_EnvVars->SetRowAttr( j, ap );
-        ++j;
-    }
-
-    m_EnvVars->AutoSize();
-
-    // Resizing the full dialog is sometimes needed for a clean display
-    // i.e. when adding/removing Kicad environment variables
-    if( resize )
-        GetSizer()->SetSizeHints( this );
-
-    return;
-}
-
-
-void DLG_3D_PATH_CONFIG::OnHelp( wxCommandEvent& event )
-{
-    wxString msg = _( "Enter the name and path for each 3D alias variable.<br>KiCad "
-                      "environment variables and their values are shown for "
-                      "reference only and cannot be edited." );
-    msg << "<br><br><b>";
-    msg << _( "Alias names may not contain any of the characters " );
-    msg << "{}[]()%~<>\"='`;:.,&?/\\|$";
-    msg << "</b>";
-
-    HTML_MESSAGE_BOX dlg( GetParent(), _( "Environment Variable Help" ) );
-    dlg.AddHTML_Text( msg );
-    dlg.ShowModal();
-
-    event.Skip();
-}
diff --git a/3d-viewer/3d_cache/dialogs/dlg_3d_pathconfig.h b/3d-viewer/3d_cache/dialogs/dlg_3d_pathconfig.h
deleted file mode 100644
index e47681ca09..0000000000
--- a/3d-viewer/3d_cache/dialogs/dlg_3d_pathconfig.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * This program source code file is part of KiCad, a free EDA CAD application.
- *
- * Copyright (C) 2016 Cirilo Bernardo <cirilo.bernardo@gmail.com>
- *
- * 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
- */
-
-
-#ifndef DLG_3D_PATHCONFIG_H
-#define DLG_3D_PATHCONFIG_H
-
-#include <wx/valtext.h>
-#include "dlg_3d_pathconfig_base.h"
-
-class S3D_FILENAME_RESOLVER;
-
-class DLG_3D_PATH_CONFIG : public DLG_3D_PATH_CONFIG_BASE
-{
-private:
-    S3D_FILENAME_RESOLVER* m_resolver;
-    wxString m_curdir;
-    wxTextValidator m_aliasValidator;
-
-    void initDialog();
-
-    void OnAddAlias( wxCommandEvent& event ) override;
-    void OnDelAlias( wxCommandEvent& event ) override;
-    void OnAliasMoveUp( wxCommandEvent& event ) override;
-    void OnAliasMoveDown( wxCommandEvent& event ) override;
-    void OnConfigEnvVar( wxCommandEvent& event ) override;
-    void OnHelp( wxCommandEvent& event ) override;
-
-public:
-    DLG_3D_PATH_CONFIG( wxWindow* aParent, S3D_FILENAME_RESOLVER* aResolver );
-    bool TransferDataFromWindow() override;
-
-private:
-    void updateEnvVars( void );
-};
-
-#endif  // DLG_3D_PATHCONFIG_H
diff --git a/3d-viewer/3d_cache/dialogs/dlg_3d_pathconfig_base.cpp b/3d-viewer/3d_cache/dialogs/dlg_3d_pathconfig_base.cpp
deleted file mode 100644
index 43537b3304..0000000000
--- a/3d-viewer/3d_cache/dialogs/dlg_3d_pathconfig_base.cpp
+++ /dev/null
@@ -1,162 +0,0 @@
-///////////////////////////////////////////////////////////////////////////
-// C++ code generated with wxFormBuilder (version Nov 22 2017)
-// http://www.wxformbuilder.org/
-//
-// PLEASE DO *NOT* EDIT THIS FILE!
-///////////////////////////////////////////////////////////////////////////
-
-#include "dlg_3d_pathconfig_base.h"
-
-///////////////////////////////////////////////////////////////////////////
-
-DLG_3D_PATH_CONFIG_BASE::DLG_3D_PATH_CONFIG_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : DIALOG_SHIM( parent, id, title, pos, size, style )
-{
-	this->SetSizeHints( wxSize( -1,-1 ), wxDefaultSize );
-	
-	wxBoxSizer* bSizerMain;
-	bSizerMain = new wxBoxSizer( wxVERTICAL );
-	
-	wxBoxSizer* bSizer5;
-	bSizer5 = new wxBoxSizer( wxVERTICAL );
-	
-	m_EnvVars = new wxGrid( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
-	
-	// Grid
-	m_EnvVars->CreateGrid( 1, 2 );
-	m_EnvVars->EnableEditing( true );
-	m_EnvVars->EnableGridLines( true );
-	m_EnvVars->EnableDragGridSize( false );
-	m_EnvVars->SetMargins( 0, 0 );
-	
-	// Columns
-	m_EnvVars->SetColSize( 0, 150 );
-	m_EnvVars->SetColSize( 1, 300 );
-	m_EnvVars->EnableDragColMove( false );
-	m_EnvVars->EnableDragColSize( true );
-	m_EnvVars->SetColLabelSize( 30 );
-	m_EnvVars->SetColLabelValue( 0, _("Name") );
-	m_EnvVars->SetColLabelValue( 1, _("Path") );
-	m_EnvVars->SetColLabelAlignment( wxALIGN_CENTRE, wxALIGN_CENTRE );
-	
-	// Rows
-	m_EnvVars->EnableDragRowSize( true );
-	m_EnvVars->SetRowLabelSize( 80 );
-	m_EnvVars->SetRowLabelAlignment( wxALIGN_CENTRE, wxALIGN_CENTRE );
-	
-	// Label Appearance
-	
-	// Cell Defaults
-	m_EnvVars->SetDefaultCellAlignment( wxALIGN_LEFT, wxALIGN_TOP );
-	m_EnvVars->SetMinSize( wxSize( 250,100 ) );
-	
-	bSizer5->Add( m_EnvVars, 1, wxALL|wxEXPAND, 5 );
-	
-	m_btnEnvCfg = new wxButton( this, wxID_ANY, _("Configure Environment Variables"), wxDefaultPosition, wxDefaultSize, 0 );
-	bSizer5->Add( m_btnEnvCfg, 0, wxALIGN_CENTER|wxALL, 5 );
-	
-	
-	bSizerMain->Add( bSizer5, 0, wxEXPAND, 5 );
-	
-	m_staticline2 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
-	bSizerMain->Add( m_staticline2, 0, wxEXPAND | wxALL, 5 );
-	
-	wxBoxSizer* bSizerGrid;
-	bSizerGrid = new wxBoxSizer( wxHORIZONTAL );
-	
-	m_Aliases = new wxGrid( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
-	
-	// Grid
-	m_Aliases->CreateGrid( 1, 3 );
-	m_Aliases->EnableEditing( true );
-	m_Aliases->EnableGridLines( true );
-	m_Aliases->EnableDragGridSize( false );
-	m_Aliases->SetMargins( 0, 0 );
-	
-	// Columns
-	m_Aliases->SetColSize( 0, 80 );
-	m_Aliases->SetColSize( 1, 300 );
-	m_Aliases->SetColSize( 2, 120 );
-	m_Aliases->EnableDragColMove( false );
-	m_Aliases->EnableDragColSize( true );
-	m_Aliases->SetColLabelSize( 30 );
-	m_Aliases->SetColLabelValue( 0, _("Alias") );
-	m_Aliases->SetColLabelValue( 1, _("Path") );
-	m_Aliases->SetColLabelValue( 2, _("Description") );
-	m_Aliases->SetColLabelAlignment( wxALIGN_CENTRE, wxALIGN_CENTRE );
-	
-	// Rows
-	m_Aliases->AutoSizeRows();
-	m_Aliases->EnableDragRowSize( false );
-	m_Aliases->SetRowLabelSize( 80 );
-	m_Aliases->SetRowLabelAlignment( wxALIGN_CENTRE, wxALIGN_CENTRE );
-	
-	// Label Appearance
-	
-	// Cell Defaults
-	m_Aliases->SetDefaultCellAlignment( wxALIGN_LEFT, wxALIGN_TOP );
-	m_Aliases->SetMinSize( wxSize( -1,150 ) );
-	
-	bSizerGrid->Add( m_Aliases, 1, wxALL|wxEXPAND, 5 );
-	
-	
-	bSizerMain->Add( bSizerGrid, 1, wxEXPAND, 5 );
-	
-	wxBoxSizer* bSizerButtons;
-	bSizerButtons = new wxBoxSizer( wxHORIZONTAL );
-	
-	m_btnAddAlias = new wxButton( this, wxID_ANY, _("Add Alias"), wxDefaultPosition, wxDefaultSize, 0 );
-	bSizerButtons->Add( m_btnAddAlias, 0, wxALL, 5 );
-	
-	m_btnDelAlias = new wxButton( this, wxID_ANY, _("Remove Alias"), wxDefaultPosition, wxDefaultSize, 0 );
-	bSizerButtons->Add( m_btnDelAlias, 0, wxALL, 5 );
-	
-	m_btnMoveUp = new wxButton( this, wxID_ANY, _("Move Up"), wxDefaultPosition, wxDefaultSize, 0 );
-	bSizerButtons->Add( m_btnMoveUp, 0, wxALL, 5 );
-	
-	m_btnMoveDown = new wxButton( this, wxID_ANY, _("Move Down"), wxDefaultPosition, wxDefaultSize, 0 );
-	bSizerButtons->Add( m_btnMoveDown, 0, wxALL, 5 );
-	
-	
-	bSizerMain->Add( bSizerButtons, 0, wxALIGN_CENTER_HORIZONTAL, 5 );
-	
-	m_staticline1 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
-	bSizerMain->Add( m_staticline1, 0, wxEXPAND | wxALL, 5 );
-	
-	m_sdbSizer2 = new wxStdDialogButtonSizer();
-	m_sdbSizer2OK = new wxButton( this, wxID_OK );
-	m_sdbSizer2->AddButton( m_sdbSizer2OK );
-	m_sdbSizer2Cancel = new wxButton( this, wxID_CANCEL );
-	m_sdbSizer2->AddButton( m_sdbSizer2Cancel );
-	m_sdbSizer2Help = new wxButton( this, wxID_HELP );
-	m_sdbSizer2->AddButton( m_sdbSizer2Help );
-	m_sdbSizer2->Realize();
-	
-	bSizerMain->Add( m_sdbSizer2, 0, wxALL|wxEXPAND, 5 );
-	
-	
-	this->SetSizer( bSizerMain );
-	this->Layout();
-	bSizerMain->Fit( this );
-	
-	this->Centre( wxBOTH );
-	
-	// Connect Events
-	m_btnEnvCfg->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DLG_3D_PATH_CONFIG_BASE::OnConfigEnvVar ), NULL, this );
-	m_btnAddAlias->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DLG_3D_PATH_CONFIG_BASE::OnAddAlias ), NULL, this );
-	m_btnDelAlias->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DLG_3D_PATH_CONFIG_BASE::OnDelAlias ), NULL, this );
-	m_btnMoveUp->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DLG_3D_PATH_CONFIG_BASE::OnAliasMoveUp ), NULL, this );
-	m_btnMoveDown->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DLG_3D_PATH_CONFIG_BASE::OnAliasMoveDown ), NULL, this );
-	m_sdbSizer2Help->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DLG_3D_PATH_CONFIG_BASE::OnHelp ), NULL, this );
-}
-
-DLG_3D_PATH_CONFIG_BASE::~DLG_3D_PATH_CONFIG_BASE()
-{
-	// Disconnect Events
-	m_btnEnvCfg->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DLG_3D_PATH_CONFIG_BASE::OnConfigEnvVar ), NULL, this );
-	m_btnAddAlias->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DLG_3D_PATH_CONFIG_BASE::OnAddAlias ), NULL, this );
-	m_btnDelAlias->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DLG_3D_PATH_CONFIG_BASE::OnDelAlias ), NULL, this );
-	m_btnMoveUp->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DLG_3D_PATH_CONFIG_BASE::OnAliasMoveUp ), NULL, this );
-	m_btnMoveDown->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DLG_3D_PATH_CONFIG_BASE::OnAliasMoveDown ), NULL, this );
-	m_sdbSizer2Help->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DLG_3D_PATH_CONFIG_BASE::OnHelp ), NULL, this );
-	
-}
diff --git a/3d-viewer/3d_cache/dialogs/dlg_3d_pathconfig_base.fbp b/3d-viewer/3d_cache/dialogs/dlg_3d_pathconfig_base.fbp
deleted file mode 100644
index 08abd96a56..0000000000
--- a/3d-viewer/3d_cache/dialogs/dlg_3d_pathconfig_base.fbp
+++ /dev/null
@@ -1,1046 +0,0 @@
-<?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">dlg_3d_pathconfig_base</property>
-        <property name="first_id">1000</property>
-        <property name="help_provider">none</property>
-        <property name="internationalize">1</property>
-        <property name="name">MyProject1</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="Dialog" expanded="1">
-            <property name="aui_managed">0</property>
-            <property name="aui_manager_style">wxAUI_MGR_DEFAULT</property>
-            <property name="bg"></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">DLG_3D_PATH_CONFIG_BASE</property>
-            <property name="pos"></property>
-            <property name="size">-1,-1</property>
-            <property name="style">wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>
-            <property name="subclass">DIALOG_SHIM; dialog_shim.h</property>
-            <property name="title">3D Search Path Configuration</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="OnAuiFindManager"></event>
-            <event name="OnAuiPaneButton"></event>
-            <event name="OnAuiPaneClose"></event>
-            <event name="OnAuiPaneMaximize"></event>
-            <event name="OnAuiPaneRestore"></event>
-            <event name="OnAuiRender"></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>
-            <object class="wxBoxSizer" expanded="1">
-                <property name="minimum_size"></property>
-                <property name="name">bSizerMain</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</property>
-                    <property name="proportion">0</property>
-                    <object class="wxBoxSizer" expanded="1">
-                        <property name="minimum_size"></property>
-                        <property name="name">bSizer5</property>
-                        <property name="orient">wxVERTICAL</property>
-                        <property name="permission">none</property>
-                        <object class="sizeritem" expanded="1">
-                            <property name="border">5</property>
-                            <property name="flag">wxALL|wxEXPAND</property>
-                            <property name="proportion">1</property>
-                            <object class="wxGrid" 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="autosize_cols">0</property>
-                                <property name="autosize_rows">0</property>
-                                <property name="best_size"></property>
-                                <property name="bg"></property>
-                                <property name="caption"></property>
-                                <property name="caption_visible">1</property>
-                                <property name="cell_bg"></property>
-                                <property name="cell_font"></property>
-                                <property name="cell_horiz_alignment">wxALIGN_LEFT</property>
-                                <property name="cell_text"></property>
-                                <property name="cell_vert_alignment">wxALIGN_TOP</property>
-                                <property name="center_pane">0</property>
-                                <property name="close_button">1</property>
-                                <property name="col_label_horiz_alignment">wxALIGN_CENTRE</property>
-                                <property name="col_label_size">30</property>
-                                <property name="col_label_values">&quot;Name&quot; &quot;Path&quot;</property>
-                                <property name="col_label_vert_alignment">wxALIGN_CENTRE</property>
-                                <property name="cols">2</property>
-                                <property name="column_sizes">150,300</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="drag_col_move">0</property>
-                                <property name="drag_col_size">1</property>
-                                <property name="drag_grid_size">0</property>
-                                <property name="drag_row_size">1</property>
-                                <property name="editing">1</property>
-                                <property name="enabled">1</property>
-                                <property name="fg"></property>
-                                <property name="floatable">1</property>
-                                <property name="font"></property>
-                                <property name="grid_line_color"></property>
-                                <property name="grid_lines">1</property>
-                                <property name="gripper">0</property>
-                                <property name="hidden">0</property>
-                                <property name="id">wxID_ANY</property>
-                                <property name="label_bg"></property>
-                                <property name="label_font"></property>
-                                <property name="label_text"></property>
-                                <property name="margin_height">0</property>
-                                <property name="margin_width">0</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">250,100</property>
-                                <property name="moveable">1</property>
-                                <property name="name">m_EnvVars</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="row_label_horiz_alignment">wxALIGN_CENTRE</property>
-                                <property name="row_label_size">80</property>
-                                <property name="row_label_values"></property>
-                                <property name="row_label_vert_alignment">wxALIGN_CENTRE</property>
-                                <property name="row_sizes"></property>
-                                <property name="rows">1</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="OnGridCellChange"></event>
-                                <event name="OnGridCellLeftClick"></event>
-                                <event name="OnGridCellLeftDClick"></event>
-                                <event name="OnGridCellRightClick"></event>
-                                <event name="OnGridCellRightDClick"></event>
-                                <event name="OnGridCmdCellChange"></event>
-                                <event name="OnGridCmdCellLeftClick"></event>
-                                <event name="OnGridCmdCellLeftDClick"></event>
-                                <event name="OnGridCmdCellRightClick"></event>
-                                <event name="OnGridCmdCellRightDClick"></event>
-                                <event name="OnGridCmdColSize"></event>
-                                <event name="OnGridCmdEditorCreated"></event>
-                                <event name="OnGridCmdEditorHidden"></event>
-                                <event name="OnGridCmdEditorShown"></event>
-                                <event name="OnGridCmdLabelLeftClick"></event>
-                                <event name="OnGridCmdLabelLeftDClick"></event>
-                                <event name="OnGridCmdLabelRightClick"></event>
-                                <event name="OnGridCmdLabelRightDClick"></event>
-                                <event name="OnGridCmdRangeSelect"></event>
-                                <event name="OnGridCmdRowSize"></event>
-                                <event name="OnGridCmdSelectCell"></event>
-                                <event name="OnGridColSize"></event>
-                                <event name="OnGridEditorCreated"></event>
-                                <event name="OnGridEditorHidden"></event>
-                                <event name="OnGridEditorShown"></event>
-                                <event name="OnGridLabelLeftClick"></event>
-                                <event name="OnGridLabelLeftDClick"></event>
-                                <event name="OnGridLabelRightClick"></event>
-                                <event name="OnGridLabelRightDClick"></event>
-                                <event name="OnGridRangeSelect"></event>
-                                <event name="OnGridRowSize"></event>
-                                <event name="OnGridSelectCell"></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">wxALIGN_CENTER|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">Configure Environment Variables</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_btnEnvCfg</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">OnConfigEnvVar</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 class="sizeritem" expanded="1">
-                    <property name="border">5</property>
-                    <property name="flag">wxEXPAND | wxALL</property>
-                    <property name="proportion">0</property>
-                    <object class="wxStaticLine" 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="min_size"></property>
-                        <property name="minimize_button">0</property>
-                        <property name="minimum_size"></property>
-                        <property name="moveable">1</property>
-                        <property name="name">m_staticline2</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">wxLI_HORIZONTAL</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">5</property>
-                    <property name="flag">wxEXPAND</property>
-                    <property name="proportion">1</property>
-                    <object class="wxBoxSizer" expanded="1">
-                        <property name="minimum_size">-1,-1</property>
-                        <property name="name">bSizerGrid</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|wxEXPAND</property>
-                            <property name="proportion">1</property>
-                            <object class="wxGrid" 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="autosize_cols">0</property>
-                                <property name="autosize_rows">1</property>
-                                <property name="best_size"></property>
-                                <property name="bg"></property>
-                                <property name="caption"></property>
-                                <property name="caption_visible">1</property>
-                                <property name="cell_bg"></property>
-                                <property name="cell_font"></property>
-                                <property name="cell_horiz_alignment">wxALIGN_LEFT</property>
-                                <property name="cell_text"></property>
-                                <property name="cell_vert_alignment">wxALIGN_TOP</property>
-                                <property name="center_pane">0</property>
-                                <property name="close_button">1</property>
-                                <property name="col_label_horiz_alignment">wxALIGN_CENTRE</property>
-                                <property name="col_label_size">30</property>
-                                <property name="col_label_values">&quot;Alias&quot; &quot;Path&quot; &quot;Description&quot;</property>
-                                <property name="col_label_vert_alignment">wxALIGN_CENTRE</property>
-                                <property name="cols">3</property>
-                                <property name="column_sizes">80,300,120</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="drag_col_move">0</property>
-                                <property name="drag_col_size">1</property>
-                                <property name="drag_grid_size">0</property>
-                                <property name="drag_row_size">0</property>
-                                <property name="editing">1</property>
-                                <property name="enabled">1</property>
-                                <property name="fg"></property>
-                                <property name="floatable">1</property>
-                                <property name="font"></property>
-                                <property name="grid_line_color"></property>
-                                <property name="grid_lines">1</property>
-                                <property name="gripper">0</property>
-                                <property name="hidden">0</property>
-                                <property name="id">wxID_ANY</property>
-                                <property name="label_bg"></property>
-                                <property name="label_font"></property>
-                                <property name="label_text"></property>
-                                <property name="margin_height">0</property>
-                                <property name="margin_width">0</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">-1,150</property>
-                                <property name="moveable">1</property>
-                                <property name="name">m_Aliases</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="row_label_horiz_alignment">wxALIGN_CENTRE</property>
-                                <property name="row_label_size">80</property>
-                                <property name="row_label_values"></property>
-                                <property name="row_label_vert_alignment">wxALIGN_CENTRE</property>
-                                <property name="row_sizes"></property>
-                                <property name="rows">1</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="OnGridCellChange"></event>
-                                <event name="OnGridCellLeftClick"></event>
-                                <event name="OnGridCellLeftDClick"></event>
-                                <event name="OnGridCellRightClick"></event>
-                                <event name="OnGridCellRightDClick"></event>
-                                <event name="OnGridCmdCellChange"></event>
-                                <event name="OnGridCmdCellLeftClick"></event>
-                                <event name="OnGridCmdCellLeftDClick"></event>
-                                <event name="OnGridCmdCellRightClick"></event>
-                                <event name="OnGridCmdCellRightDClick"></event>
-                                <event name="OnGridCmdColSize"></event>
-                                <event name="OnGridCmdEditorCreated"></event>
-                                <event name="OnGridCmdEditorHidden"></event>
-                                <event name="OnGridCmdEditorShown"></event>
-                                <event name="OnGridCmdLabelLeftClick"></event>
-                                <event name="OnGridCmdLabelLeftDClick"></event>
-                                <event name="OnGridCmdLabelRightClick"></event>
-                                <event name="OnGridCmdLabelRightDClick"></event>
-                                <event name="OnGridCmdRangeSelect"></event>
-                                <event name="OnGridCmdRowSize"></event>
-                                <event name="OnGridCmdSelectCell"></event>
-                                <event name="OnGridColSize"></event>
-                                <event name="OnGridEditorCreated"></event>
-                                <event name="OnGridEditorHidden"></event>
-                                <event name="OnGridEditorShown"></event>
-                                <event name="OnGridLabelLeftClick"></event>
-                                <event name="OnGridLabelLeftDClick"></event>
-                                <event name="OnGridLabelRightClick"></event>
-                                <event name="OnGridLabelRightDClick"></event>
-                                <event name="OnGridRangeSelect"></event>
-                                <event name="OnGridRowSize"></event>
-                                <event name="OnGridSelectCell"></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">wxALIGN_CENTER_HORIZONTAL</property>
-                    <property name="proportion">0</property>
-                    <object class="wxBoxSizer" expanded="1">
-                        <property name="minimum_size"></property>
-                        <property name="name">bSizerButtons</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="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">Add Alias</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_btnAddAlias</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">OnAddAlias</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">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">Remove Alias</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_btnDelAlias</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">OnDelAlias</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">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">Move Up</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_btnMoveUp</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">OnAliasMoveUp</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">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">Move Down</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_btnMoveDown</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">OnAliasMoveDown</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 class="sizeritem" expanded="1">
-                    <property name="border">5</property>
-                    <property name="flag">wxEXPAND | wxALL</property>
-                    <property name="proportion">0</property>
-                    <object class="wxStaticLine" 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="min_size"></property>
-                        <property name="minimize_button">0</property>
-                        <property name="minimum_size"></property>
-                        <property name="moveable">1</property>
-                        <property name="name">m_staticline1</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">wxLI_HORIZONTAL</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">5</property>
-                    <property name="flag">wxALL|wxEXPAND</property>
-                    <property name="proportion">0</property>
-                    <object class="wxStdDialogButtonSizer" expanded="1">
-                        <property name="Apply">0</property>
-                        <property name="Cancel">1</property>
-                        <property name="ContextHelp">0</property>
-                        <property name="Help">1</property>
-                        <property name="No">0</property>
-                        <property name="OK">1</property>
-                        <property name="Save">0</property>
-                        <property name="Yes">0</property>
-                        <property name="minimum_size"></property>
-                        <property name="name">m_sdbSizer2</property>
-                        <property name="permission">protected</property>
-                        <event name="OnApplyButtonClick"></event>
-                        <event name="OnCancelButtonClick"></event>
-                        <event name="OnContextHelpButtonClick"></event>
-                        <event name="OnHelpButtonClick">OnHelp</event>
-                        <event name="OnNoButtonClick"></event>
-                        <event name="OnOKButtonClick"></event>
-                        <event name="OnSaveButtonClick"></event>
-                        <event name="OnYesButtonClick"></event>
-                    </object>
-                </object>
-            </object>
-        </object>
-    </object>
-</wxFormBuilder_Project>
diff --git a/3d-viewer/3d_cache/dialogs/dlg_3d_pathconfig_base.h b/3d-viewer/3d_cache/dialogs/dlg_3d_pathconfig_base.h
deleted file mode 100644
index 5aee0aaca7..0000000000
--- a/3d-viewer/3d_cache/dialogs/dlg_3d_pathconfig_base.h
+++ /dev/null
@@ -1,67 +0,0 @@
-///////////////////////////////////////////////////////////////////////////
-// C++ code generated with wxFormBuilder (version Nov 22 2017)
-// http://www.wxformbuilder.org/
-//
-// PLEASE DO *NOT* EDIT THIS FILE!
-///////////////////////////////////////////////////////////////////////////
-
-#ifndef __DLG_3D_PATHCONFIG_BASE_H__
-#define __DLG_3D_PATHCONFIG_BASE_H__
-
-#include <wx/artprov.h>
-#include <wx/xrc/xmlres.h>
-#include <wx/intl.h>
-#include "dialog_shim.h"
-#include <wx/colour.h>
-#include <wx/settings.h>
-#include <wx/string.h>
-#include <wx/font.h>
-#include <wx/grid.h>
-#include <wx/gdicmn.h>
-#include <wx/button.h>
-#include <wx/sizer.h>
-#include <wx/statline.h>
-#include <wx/dialog.h>
-
-///////////////////////////////////////////////////////////////////////////
-
-
-///////////////////////////////////////////////////////////////////////////////
-/// Class DLG_3D_PATH_CONFIG_BASE
-///////////////////////////////////////////////////////////////////////////////
-class DLG_3D_PATH_CONFIG_BASE : public DIALOG_SHIM
-{
-	private:
-	
-	protected:
-		wxGrid* m_EnvVars;
-		wxButton* m_btnEnvCfg;
-		wxStaticLine* m_staticline2;
-		wxGrid* m_Aliases;
-		wxButton* m_btnAddAlias;
-		wxButton* m_btnDelAlias;
-		wxButton* m_btnMoveUp;
-		wxButton* m_btnMoveDown;
-		wxStaticLine* m_staticline1;
-		wxStdDialogButtonSizer* m_sdbSizer2;
-		wxButton* m_sdbSizer2OK;
-		wxButton* m_sdbSizer2Cancel;
-		wxButton* m_sdbSizer2Help;
-		
-		// Virtual event handlers, overide them in your derived class
-		virtual void OnConfigEnvVar( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnAddAlias( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnDelAlias( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnAliasMoveUp( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnAliasMoveDown( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnHelp( wxCommandEvent& event ) { event.Skip(); }
-		
-	
-	public:
-		
-		DLG_3D_PATH_CONFIG_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("3D Search Path Configuration"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER ); 
-		~DLG_3D_PATH_CONFIG_BASE();
-	
-};
-
-#endif //__DLG_3D_PATHCONFIG_BASE_H__
diff --git a/3d-viewer/3d_cache/dialogs/dlg_select_3dmodel.cpp b/3d-viewer/3d_cache/dialogs/dlg_select_3dmodel.cpp
index 7ba2847a61..938dd535bf 100644
--- a/3d-viewer/3d_cache/dialogs/dlg_select_3dmodel.cpp
+++ b/3d-viewer/3d_cache/dialogs/dlg_select_3dmodel.cpp
@@ -240,9 +240,9 @@ void DLG_SELECT_3DMODEL::updateDirChoiceList( void )
     if( NULL == m_FileTree || NULL == m_resolver || NULL == dirChoices )
         return;
 
-    std::list< S3D_ALIAS > const* md = m_resolver->GetPaths();
-    std::list< S3D_ALIAS >::const_iterator sL = md->begin();
-    std::list< S3D_ALIAS >::const_iterator eL = md->end();
+    std::list< SEARCH_PATH > const* md = m_resolver->GetPaths();
+    std::list< SEARCH_PATH >::const_iterator sL = md->begin();
+    std::list< SEARCH_PATH >::const_iterator eL = md->end();
     std::set< wxString > cl;
     wxString prjDir;
 
diff --git a/3d-viewer/3d_cache/dialogs/dlg_select_3dmodel.h b/3d-viewer/3d_cache/dialogs/dlg_select_3dmodel.h
index bbee1a18f6..e6e32d5cb8 100644
--- a/3d-viewer/3d_cache/dialogs/dlg_select_3dmodel.h
+++ b/3d-viewer/3d_cache/dialogs/dlg_select_3dmodel.h
@@ -43,7 +43,7 @@
 
 class MODULE_3D_SETTINGS;
 class S3D_CACHE;
-class S3D_FILENAME_RESOLVER;
+class FILENAME_RESOLVER;
 class C3D_MODEL_VIEWER;
 
 class DLG_SELECT_3DMODEL : public DIALOG_SHIM
@@ -51,7 +51,7 @@ class DLG_SELECT_3DMODEL : public DIALOG_SHIM
 private:
     MODULE_3D_SETTINGS* m_model;        // data for the selected model
     S3D_CACHE* m_cache;                 // cache manager
-    S3D_FILENAME_RESOLVER*  m_resolver; // 3D filename resolver
+    FILENAME_RESOLVER*  m_resolver; // 3D filename resolver
 
     wxString& m_previousDir;
     int&      m_previousFilterIndex;
diff --git a/3d-viewer/3d_cache/dialogs/panel_prev_model.h b/3d-viewer/3d_cache/dialogs/panel_prev_model.h
index 264b36d65a..7c7b982feb 100644
--- a/3d-viewer/3d_cache/dialogs/panel_prev_model.h
+++ b/3d-viewer/3d_cache/dialogs/panel_prev_model.h
@@ -47,23 +47,23 @@
 #define MAX_ROTATION       180.0
 #define MAX_OFFSET         1000.0
 
-#define SCALE_INCREMENT_FINE    0.02
-#define SCALE_INCREMENT     0.1
+#define SCALE_INCREMENT_FINE       0.02
+#define SCALE_INCREMENT            0.1
 
 #define ROTATION_INCREMENT 5             // in degrees, for spin button command
 #define ROTATION_INCREMENT_WHEEL 15      // in degrees, for mouse wheel command
 #define ROTATION_INCREMENT_WHEEL_FINE 1  // in degrees, for mouse wheel command
 
-#define OFFSET_INCREMENT_MM   0.5
-#define OFFSET_INCREMENT_MM_FINE 0.1
+#define OFFSET_INCREMENT_MM        0.5
+#define OFFSET_INCREMENT_MM_FINE   0.1
 
-#define OFFSET_INCREMENT_MIL   25.0
-#define OFFSET_INCREMENT_MIL_FINE   5.0
+#define OFFSET_INCREMENT_MIL       25.0
+#define OFFSET_INCREMENT_MIL_FINE  5.0
 
 
 // Declared classes to create pointers
 class S3D_CACHE;
-class S3D_FILENAME_RESOLVER;
+class FILENAME_RESOLVER;
 class BOARD;
 class CINFO3D_VISU;
 class MODULE;
@@ -80,31 +80,31 @@ public:
     ~PANEL_PREV_3D();
 
 private:
-    wxString                currentModelFile;   ///< Used to check if the model file was changed
-    S3D_FILENAME_RESOLVER   *m_resolver;        ///< Used to get the full path name
+    wxString            currentModelFile;   ///< Used to check if the model file was changed
+    FILENAME_RESOLVER   *m_resolver;        ///< Used to get the full path name
 
     /// The 3D canvas
-    EDA_3D_CANVAS   *m_previewPane;
+    EDA_3D_CANVAS       *m_previewPane;
 
     /// A dummy board used to store the copy moduled
-    BOARD           *m_dummyBoard;
+    BOARD               *m_dummyBoard;
 
     /// The settings that will be used for this 3D viewer canvas
-    CINFO3D_VISU    *m_settings3Dviewer;
+    CINFO3D_VISU        *m_settings3Dviewer;
 
     /// A pointer to a new copy of the original module
-    MODULE          *m_copyModule;
+    MODULE              *m_copyModule;
 
     /// A pointer to the parent MODULE_3D_SETTINGS list that we will use to copy to the preview module
     std::vector<MODULE_3D_SETTINGS> *m_parentInfoList;
 
     /// The current selected index of the MODULE_3D_SETTINGS list
-    int             m_currentSelectedIdx;
+    int                 m_currentSelectedIdx;
 
     /// Current MODULE_3D_SETTINGS that is being edited
-    MODULE_3D_SETTINGS        m_modelInfo;
+    MODULE_3D_SETTINGS  m_modelInfo;
 
-    EDA_UNITS_T     m_userUnits;
+    EDA_UNITS_T         m_userUnits;
 
     // Methods of the class
 private:
diff --git a/3d-viewer/3d_cache/str_rsort.h b/3d-viewer/3d_cache/str_rsort.h
deleted file mode 100644
index 35044c6d71..0000000000
--- a/3d-viewer/3d_cache/str_rsort.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * This program source code file is part of KiCad, a free EDA CAD application.
- *
- * Copyright (C) 2015 Cirilo Bernardo <cirilo.bernardo@gmail.com>
- *
- * 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
- */
-
-/**
- * @file str_rsort.h
- * provides a wxString sorting functino which works from the
- * end of the string towards the beginning
- */
-
-#ifndef STR_RSORT_H
-#define STR_RSORT_H
-
-#include <wx/string.h>
-
-namespace S3D
-{
-
-    struct rsort_wxString
-    {
-        bool operator() (const wxString& strA, const wxString& strB ) const
-        {
-            // sort a wxString using the reverse character order; for 3d model
-            // filenames this will typically be a much faster operation than
-            // a normal alphabetic sort
-            wxString::const_reverse_iterator sA = strA.rbegin();
-            wxString::const_reverse_iterator eA = strA.rend();
-
-            wxString::const_reverse_iterator sB = strB.rbegin();
-            wxString::const_reverse_iterator eB = strB.rend();
-
-            if( strA.empty() )
-            {
-                if( strB.empty() )
-                    return false;
-
-                // note: this rule implies that a null string is first in the sort order
-                return true;
-            }
-
-            if( strB.empty() )
-                return false;
-
-            while( sA != eA && sB != eB )
-            {
-                if( (*sA) == (*sB) )
-                {
-                    ++sA;
-                    ++sB;
-                    continue;
-                }
-
-                if( (*sA) < (*sB) )
-                    return true;
-                else
-                    return false;
-            }
-
-            if( sB == eB )
-                return false;
-
-            return true;
-        }
-    };
-
-} // end NAMESPACE
-
-#endif  // STR_RSORT_H
diff --git a/3d-viewer/CMakeLists.txt b/3d-viewer/CMakeLists.txt
index 5d6cb66fe1..76ce150944 100644
--- a/3d-viewer/CMakeLists.txt
+++ b/3d-viewer/CMakeLists.txt
@@ -33,10 +33,7 @@ set(3D-VIEWER_SRCS
     3d_cache/3d_cache_wrapper.cpp
     3d_cache/3d_cache.cpp
     3d_cache/3d_plugin_manager.cpp
-    3d_cache/3d_filename_resolver.cpp
     ${DIR_DLG}/3d_cache_dialogs.cpp
-    ${DIR_DLG}/dlg_3d_pathconfig_base.cpp
-    ${DIR_DLG}/dlg_3d_pathconfig.cpp
     ${DIR_DLG}/dlg_select_3dmodel.cpp
     ${DIR_DLG}/panel_prev_3d_base.cpp
     ${DIR_DLG}/panel_prev_model.cpp
diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt
index a7719d4d60..4db26187df 100644
--- a/common/CMakeLists.txt
+++ b/common/CMakeLists.txt
@@ -153,9 +153,9 @@ set( COMMON_ABOUT_DLG_SRCS
     )
 
 set( COMMON_DLG_SRCS
+    dialogs/dialog_configure_paths.cpp
+    dialogs/dialog_configure_paths_base.cpp
     dialogs/dialog_display_info_HTML_base.cpp
-    dialogs/dialog_env_var_config.cpp
-    dialogs/dialog_env_var_config_base.cpp
     dialogs/dialog_exit_base.cpp
     dialogs/dialog_file_dir_picker.cpp
     dialogs/dialog_hotkeys_editor.cpp
@@ -261,6 +261,7 @@ set( COMMON_SRCS
     env_paths.cpp
     exceptions.cpp
     executable_names.cpp
+    filename_resolver.cpp
     filter_reader.cpp
     footprint_filter.cpp
     footprint_info.cpp
diff --git a/common/dialog_shim.cpp b/common/dialog_shim.cpp
index 98adf34154..6bbd534866 100644
--- a/common/dialog_shim.cpp
+++ b/common/dialog_shim.cpp
@@ -81,8 +81,8 @@ DIALOG_SHIM::DIALOG_SHIM( wxWindow* aParent, wxWindowID id, const wxString& titl
     }
     else
     {
-        wxFAIL_MSG( wxString::Format( "No KIWAY_HOLDER in parent chain.  Top window is a %s.",
-                    aParent->GetClassInfo()->GetClassName() ) );
+        // There are a few dialogs, such as Configure Paths, which are called
+        // from the top-level wxFrame.
         m_units = MILLIMETRES;
     }
 
diff --git a/common/dialogs/dialog_configure_paths.cpp b/common/dialogs/dialog_configure_paths.cpp
new file mode 100644
index 0000000000..ba063f8411
--- /dev/null
+++ b/common/dialogs/dialog_configure_paths.cpp
@@ -0,0 +1,565 @@
+/*
+ * This program source code file is part of KICAD, a free EDA CAD application.
+ *
+ * Copyright (C) 2015 Wayne Stambaugh <stambaughw@gmail.com>
+ * Copyright (C) 2015-2018 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 <dialog_configure_paths.h>
+
+#include <confirm.h>
+#include <menus_helpers.h>
+#include <validators.h>
+#include <html_messagebox.h>
+#include <filename_resolver.h>
+
+
+enum ENV_VAR_GRID_COLUMNS
+{
+    EV_NAME_COL = 0,
+    EV_PATH_COL,
+    EV_FLAG_COL
+};
+
+enum SEARCH_PATH_GRID_COLUMNS
+{
+    SP_ALIAS_COL = 0,
+    SP_PATH_COL,
+    SP_DESC_COL
+};
+
+
+DIALOG_CONFIGURE_PATHS::DIALOG_CONFIGURE_PATHS( wxWindow* aParent, FILENAME_RESOLVER* aResolver ) :
+    DIALOG_CONFIGURE_PATHS_BASE( aParent ),
+    m_errorGrid( nullptr ),
+    m_resolver( aResolver )
+{
+    m_btnAddEnvVar->SetBitmap( KiBitmap( small_plus_xpm ) );
+    m_btnDeleteEnvVar->SetBitmap( KiBitmap( trash_xpm ) );
+    m_btnAddSearchPath->SetBitmap( KiBitmap( small_plus_xpm ) );
+    m_btnDeleteSearchPath->SetBitmap( KiBitmap( trash_xpm ) );
+    m_btnMoveUp->SetBitmap( KiBitmap( small_up_xpm ) );
+    m_btnMoveDown->SetBitmap( KiBitmap( small_down_xpm ) );
+
+    m_EnvVars->DeleteRows( 0, m_EnvVars->GetNumberRows() );
+    m_EnvVars->AppendCols( 1 );     // for the isExternal flags
+    m_EnvVars->HideCol( EV_FLAG_COL );
+    m_EnvVars->UseNativeColHeader( true );
+
+    if( m_resolver )
+    {
+        m_SearchPaths->DeleteRows( 0, m_SearchPaths->GetNumberRows() );
+        m_SearchPaths->UseNativeColHeader( true );
+
+        // prohibit these characters in the alias names: []{}()%~<>"='`;:.,&?/\|$
+        m_aliasValidator.SetStyle( wxFILTER_EXCLUDE_CHAR_LIST );
+        m_aliasValidator.SetCharExcludes( wxT( "{}[]()%~<>\"='`;:.,&?/\\|$" ) );
+    }
+    else
+        m_sb3DSearchPaths->Show( false );
+
+    SetInitialFocus( m_EnvVars );
+    m_sdbSizerOK->SetDefault();
+
+    // wxFormBuilder doesn't include this event...
+    m_EnvVars->Connect( wxEVT_GRID_CELL_CHANGING, wxGridEventHandler( DIALOG_CONFIGURE_PATHS::OnGridCellChanging ), NULL, this );
+    m_SearchPaths->Connect( wxEVT_GRID_CELL_CHANGING, wxGridEventHandler( DIALOG_CONFIGURE_PATHS::OnGridCellChanging ), NULL, this );
+
+    GetSizer()->SetSizeHints( this );
+    Centre();
+}
+
+
+DIALOG_CONFIGURE_PATHS::~DIALOG_CONFIGURE_PATHS()
+{
+    m_EnvVars->Disconnect( wxEVT_GRID_CELL_CHANGING, wxGridEventHandler( DIALOG_CONFIGURE_PATHS::OnGridCellChanging ), NULL, this );
+    m_SearchPaths->Disconnect( wxEVT_GRID_CELL_CHANGING, wxGridEventHandler( DIALOG_CONFIGURE_PATHS::OnGridCellChanging ), NULL, this );
+}
+
+
+bool DIALOG_CONFIGURE_PATHS::TransferDataToWindow()
+{
+   if( !wxDialog::TransferDataToWindow() )
+       return false;
+
+   // Environment variables
+
+   const ENV_VAR_MAP& envVars = Pgm().GetLocalEnvVariables();
+
+   for( auto it = envVars.begin(); it != envVars.end(); ++it )
+       AppendEnvVar( it->first, it->second.GetValue(), it->second.GetDefinedExternally() );
+
+   // 3D search paths
+
+   if( m_resolver )
+   {
+       const std::list<SEARCH_PATH>* paths = m_resolver->GetPaths();
+       auto it = paths->begin();
+
+       while( it != paths->end()
+              && ( ( *it ).m_alias.StartsWith( "${" ) || ( *it ).m_alias.StartsWith( "$(" ) ) )
+           ++it;
+
+       if( it != paths->end() )
+           m_curdir = ( *it ).m_pathexp;
+
+       for( ; it != paths->end(); ++it )
+           AppendSearchPath( it->m_alias, it->m_pathvar, it->m_description );
+   }
+
+   return true;
+}
+
+
+void DIALOG_CONFIGURE_PATHS::AppendEnvVar( const wxString& aName, const wxString& aPath,
+                                           bool isExternal )
+{
+    int i = m_EnvVars->GetNumberRows();
+
+    m_EnvVars->AppendRows( 1 );
+
+    m_EnvVars->SetCellValue( i, EV_NAME_COL, aName );
+
+    wxGridCellAttr* nameCellAttr = m_EnvVars->GetOrCreateCellAttr( i, EV_NAME_COL );
+    wxGridCellTextEditor* nameTextEditor = new GRID_CELL_TEXT_EDITOR();
+    nameTextEditor->SetValidator( ENV_VAR_NAME_VALIDATOR() );
+    nameCellAttr->SetEditor( nameTextEditor );
+    nameCellAttr->SetReadOnly( IsEnvVarImmutable( aName ) );
+    nameCellAttr->DecRef();
+
+    m_EnvVars->SetCellValue( i, EV_PATH_COL, aPath );
+
+    wxGridCellAttr* pathCellAttr = m_EnvVars->GetOrCreateCellAttr( i, EV_PATH_COL );
+    wxSystemColour c = isExternal ? wxSYS_COLOUR_MENU : wxSYS_COLOUR_LISTBOX;
+    pathCellAttr->SetBackgroundColour( wxSystemSettings::GetColour( c ) );
+    pathCellAttr->DecRef();
+
+    m_EnvVars->SetCellValue( i, EV_FLAG_COL, isExternal ? wxT( "external" ) : wxEmptyString );
+}
+
+
+void DIALOG_CONFIGURE_PATHS::AppendSearchPath( const wxString& aName, const wxString& aPath,
+                                          const wxString& aDescription )
+{
+    int i = m_SearchPaths->GetNumberRows();
+
+    m_SearchPaths->AppendRows( 1 );
+
+    m_SearchPaths->SetCellValue( i, SP_ALIAS_COL, aName );
+
+    wxGridCellAttr* nameCellAttr = m_SearchPaths->GetOrCreateCellAttr( i, SP_ALIAS_COL );
+    wxGridCellTextEditor* nameTextEditor = new GRID_CELL_TEXT_EDITOR();
+    nameTextEditor->SetValidator( m_aliasValidator );
+    nameCellAttr->SetEditor( nameTextEditor );
+    nameCellAttr->DecRef();
+
+    m_SearchPaths->SetCellValue( i, SP_PATH_COL, aPath );
+    m_SearchPaths->SetCellValue( i, SP_DESC_COL, aDescription );
+}
+
+
+bool DIALOG_CONFIGURE_PATHS::TransferDataFromWindow()
+{
+    if( !wxDialog::TransferDataFromWindow() )
+        return false;
+
+    // Commit any pending in-place edits and close the editor
+    m_EnvVars->DisableCellEditControl();
+    m_SearchPaths->DisableCellEditControl();
+
+    // Environment variables
+
+    ENV_VAR_MAP envVarMap;
+
+    for( int row = 0; row < m_EnvVars->GetNumberRows(); ++row )
+    {
+        wxString name = m_EnvVars->GetCellValue( row, EV_NAME_COL );
+        wxString path = m_EnvVars->GetCellValue( row, EV_PATH_COL );
+
+        if( name.IsEmpty() )
+        {
+            m_errorGrid = m_EnvVars;
+            m_errorRow = row;
+            m_errorCol = EV_NAME_COL;
+            m_errorMsg = _( "Environment variable name cannot be empty." );
+            return false;
+        }
+        else if( path.IsEmpty() )
+        {
+            m_errorGrid = m_EnvVars;
+            m_errorRow = row;
+            m_errorCol = EV_PATH_COL;
+            m_errorMsg = _( "Environment variable path cannot be empty." );
+            return false;
+        }
+
+        envVarMap[ name ] = ENV_VAR_ITEM( path );
+    }
+
+    Pgm().SetLocalEnvVariables( envVarMap );
+
+    // 3D search paths
+
+    if( m_resolver )
+    {
+        std::vector<SEARCH_PATH> alist;
+        SEARCH_PATH alias;
+
+        for( int row = 0; row < m_SearchPaths->GetNumberRows(); ++row )
+        {
+            alias.m_alias = m_SearchPaths->GetCellValue( row, SP_ALIAS_COL );
+            alias.m_pathvar = m_SearchPaths->GetCellValue( row, SP_PATH_COL );
+            alias.m_description = m_SearchPaths->GetCellValue( row, SP_DESC_COL );
+
+            if( alias.m_alias.IsEmpty() )
+            {
+                m_errorGrid = m_SearchPaths;
+                m_errorRow = row;
+                m_errorCol = SP_ALIAS_COL;
+                m_errorMsg = _( "3D search path alias cannot be empty." );
+                return false;
+            }
+            else if( alias.m_pathvar.IsEmpty() )
+            {
+                m_errorGrid = m_SearchPaths;
+                m_errorRow = row;
+                m_errorCol = SP_PATH_COL;
+                m_errorMsg = _( "3D search path cannot be empty." );
+                return false;
+            }
+
+            alist.push_back( alias );
+        }
+
+        if( !m_resolver->UpdatePathList( alist ) )
+            return false;
+    }
+
+    return true;
+}
+
+
+void DIALOG_CONFIGURE_PATHS::OnGridCellChanging( wxGridEvent& event )
+{
+    wxGrid*  grid = dynamic_cast<wxGrid*>( event.GetEventObject() );
+    int      row = event.GetRow();
+    int      col = event.GetCol();
+    wxString text = event.GetString();
+
+    if( text.IsEmpty() )
+    {
+        if( grid == m_EnvVars )
+        {
+            if( col == EV_NAME_COL )
+                m_errorMsg = _( "Environment variable name cannot be empty." );
+            else
+                m_errorMsg = _( "Environment variable path cannot be empty." );
+        }
+        else
+        {
+            if( col == SP_ALIAS_COL )
+                m_errorMsg = _( "3D search path alias cannot be empty." );
+            else
+                m_errorMsg = _( "3D search path cannot be empty." );
+        }
+        m_errorGrid = dynamic_cast<wxGrid*>( event.GetEventObject() );
+        m_errorRow = row;
+        m_errorCol = col;
+
+        event.Veto();
+    }
+
+    if( grid == m_EnvVars )
+    {
+        if( col == EV_PATH_COL && m_EnvVars->GetCellValue( row, EV_FLAG_COL ).Length() )
+        {
+            wxString msg1 = _( "This path was defined  externally to the running process and\n"
+                               "will only be temporarily overwritten." );
+            wxString msg2 = _( "The next time KiCad is launched, any paths that have already\n"
+                               "been defined are honored and any settings defined in the path\n"
+                               "configuration dialog are ignored.  If you did not intend for\n"
+                               "this behavior, either rename any conflicting entries or remove\n"
+                               "the external environment variable(s) from your system." );
+            KIDIALOG dlg( this, msg1, KIDIALOG::KD_WARNING );
+            dlg.ShowDetailedText( msg2 );
+            dlg.DoNotShowCheckbox();
+            dlg.ShowModal();
+        }
+        else if( col == EV_NAME_COL && m_EnvVars->GetCellValue( row, EV_NAME_COL ) != text )
+        {
+            // Changing name; clear external flag
+            m_EnvVars->SetCellValue( row, EV_FLAG_COL, wxEmptyString );
+        }
+    }
+}
+
+
+void DIALOG_CONFIGURE_PATHS::OnAddEnvVar( wxCommandEvent& event )
+{
+    AppendEnvVar( wxEmptyString, wxEmptyString, false );
+
+    m_EnvVars->MakeCellVisible( m_EnvVars->GetNumberRows() - 1, EV_NAME_COL );
+    m_EnvVars->SetGridCursor( m_EnvVars->GetNumberRows() - 1, EV_NAME_COL );
+
+    m_EnvVars->EnableCellEditControl( true );
+    m_EnvVars->ShowCellEditControl();
+}
+
+
+void DIALOG_CONFIGURE_PATHS::OnAddSearchPath( wxCommandEvent& event )
+{
+    AppendSearchPath( wxEmptyString, wxEmptyString, wxEmptyString);
+
+    m_SearchPaths->MakeCellVisible( m_SearchPaths->GetNumberRows() - 1, SP_ALIAS_COL );
+    m_SearchPaths->SetGridCursor( m_SearchPaths->GetNumberRows() - 1, SP_ALIAS_COL );
+
+    m_SearchPaths->EnableCellEditControl( true );
+    m_SearchPaths->ShowCellEditControl();
+}
+
+
+void DIALOG_CONFIGURE_PATHS::OnRemoveEnvVar( wxCommandEvent& event )
+{
+    int curRow = m_EnvVars->GetGridCursorRow();
+
+    if( !m_EnvVars->HasFocus() || curRow < 0 )
+    {
+        m_EnvVars->SetFocus();
+        return;
+    }
+
+    if( IsEnvVarImmutable( m_EnvVars->GetCellValue( curRow, EV_NAME_COL ) ) )
+    {
+        wxBell();
+        return;
+    }
+
+    m_EnvVars->DeleteRows( curRow, 1 );
+
+    curRow = std::max( 0, curRow - 1 );
+    m_EnvVars->MakeCellVisible( curRow, m_EnvVars->GetGridCursorCol() );
+    m_EnvVars->SetGridCursor( curRow, m_EnvVars->GetGridCursorCol() );
+}
+
+
+void DIALOG_CONFIGURE_PATHS::OnDeleteSearchPath( wxCommandEvent& event )
+{
+    int curRow = m_SearchPaths->GetGridCursorRow();
+
+    if( !m_SearchPaths->HasFocus() || curRow < 0 )
+    {
+        m_SearchPaths->SetFocus();
+        return;
+    }
+
+    m_SearchPaths->DeleteRows( curRow, 1 );
+
+    curRow = std::max( 0, curRow - 1 );
+    m_SearchPaths->MakeCellVisible( curRow, m_SearchPaths->GetGridCursorCol() );
+    m_SearchPaths->SetGridCursor( curRow, m_SearchPaths->GetGridCursorCol() );
+}
+
+
+void DIALOG_CONFIGURE_PATHS::OnSearchPathMoveUp( wxCommandEvent& event )
+{
+    int curRow   = m_SearchPaths->GetGridCursorRow();
+    int prevRow  = curRow - 1;
+
+    m_SearchPaths->DisableCellEditControl();
+
+    if( curRow > 0 )
+    {
+        for( int i = 0; i < m_SearchPaths->GetNumberCols(); ++i )
+        {
+            wxString tmp = m_SearchPaths->GetCellValue( curRow, i );
+            m_SearchPaths->SetCellValue( curRow, i, m_SearchPaths->GetCellValue( prevRow, i ) );
+            m_SearchPaths->SetCellValue( prevRow, i, tmp );
+        }
+
+        m_SearchPaths->SetGridCursor( prevRow, m_SearchPaths->GetGridCursorCol() );
+    }
+}
+
+
+void DIALOG_CONFIGURE_PATHS::OnSearchPathMoveDown( wxCommandEvent& event )
+{
+    int curRow   = m_SearchPaths->GetGridCursorRow();
+    int nextRow  = curRow + 1;
+
+    m_SearchPaths->DisableCellEditControl();
+
+    if( curRow < m_SearchPaths->GetNumberRows() - 1 )
+    {
+        for( int i = 0; i < m_SearchPaths->GetNumberCols(); ++i )
+        {
+            wxString tmp = m_SearchPaths->GetCellValue( curRow, i );
+            m_SearchPaths->SetCellValue( curRow, i, m_SearchPaths->GetCellValue( nextRow, i ) );
+            m_SearchPaths->SetCellValue( nextRow, i, tmp );
+        }
+
+        m_SearchPaths->SetGridCursor( nextRow, m_SearchPaths->GetGridCursorCol() );
+    }
+}
+
+
+void DIALOG_CONFIGURE_PATHS::OnGridCellRightClick( wxGridEvent& aEvent )
+{
+    wxASSERT( (int) EV_PATH_COL == (int) SP_PATH_COL );
+
+    if( aEvent.GetCol() == EV_PATH_COL )
+    {
+        wxMenu menu;
+
+        AddMenuItem( &menu, 1, _( "File Browser..." ), KiBitmap( folder_xpm ) );
+        if( GetPopupMenuSelectionFromUser( menu ) == 1 )
+        {
+            wxString title = _( "Select Path" );
+            wxString path;  // Currently the first opened path is not initialized
+
+            wxDirDialog dlg( nullptr, title, path, wxDD_DEFAULT_STYLE | wxDD_DIR_MUST_EXIST );
+
+            if( dlg.ShowModal() == wxID_OK )
+            {
+                wxGrid* grid = dynamic_cast<wxGrid*>( aEvent.GetEventObject() );
+                grid->SetCellValue( aEvent.GetRow(), EV_PATH_COL, dlg.GetPath() );
+            }
+        }
+    }
+}
+
+
+void DIALOG_CONFIGURE_PATHS::AdjustGridColumns( int aWidth )
+{
+    m_EnvVars->AutoSizeColumn( EV_NAME_COL );
+    m_EnvVars->SetColSize( EV_NAME_COL, std::max( m_EnvVars->GetColSize( EV_NAME_COL ), 120 ) );
+
+    m_EnvVars->SetColSize( EV_PATH_COL, aWidth - m_EnvVars->GetColSize( EV_NAME_COL ) );
+
+    m_SearchPaths->AutoSizeColumn( SP_ALIAS_COL );
+    m_SearchPaths->SetColSize( SP_ALIAS_COL, std::max( m_SearchPaths->GetColSize( SP_ALIAS_COL ), 120 ) );
+
+    m_SearchPaths->AutoSizeColumn( SP_PATH_COL );
+    m_SearchPaths->SetColSize( SP_PATH_COL, std::max( m_SearchPaths->GetColSize( SP_PATH_COL ), 300 ) );
+
+    m_SearchPaths->SetColSize( SP_DESC_COL, aWidth - ( m_SearchPaths->GetColSize( SP_ALIAS_COL )
+                                                   + m_SearchPaths->GetColSize( SP_PATH_COL ) ) );
+}
+
+
+void DIALOG_CONFIGURE_PATHS::OnUpdateUI( wxUpdateUIEvent& event )
+{
+    if( !m_EnvVars->IsCellEditControlShown() && !m_SearchPaths->IsCellEditControlShown() )
+        AdjustGridColumns( m_EnvVars->GetRect().GetWidth() );
+
+    // Handle a grid error.  This is delayed to OnUpdateUI so that we can change focus
+    // even when the original validation was triggered from a killFocus event (and for
+    // dialog with notebooks, so that the corresponding notebook page can be shown in
+    // the background when triggered from an OK).
+    if( m_errorGrid )
+    {
+        // We will re-enter this routine when the error dialog is displayed, so make
+        // sure we don't keep putting up more dialogs.
+        wxGrid* grid = m_errorGrid;
+        m_errorGrid = nullptr;
+
+        DisplayErrorMessage( this, m_errorMsg );
+
+        grid->SetFocus();
+        grid->MakeCellVisible( m_errorRow, m_errorCol );
+        grid->SetGridCursor( m_errorRow, m_errorCol );
+
+        grid->EnableCellEditControl( true );
+        grid->ShowCellEditControl();
+    }
+}
+
+
+void DIALOG_CONFIGURE_PATHS::OnGridSize( wxSizeEvent& event )
+{
+    AdjustGridColumns( event.GetSize().GetX() );
+
+    event.Skip();
+}
+
+
+void DIALOG_CONFIGURE_PATHS::OnHelp( wxCommandEvent& event )
+{
+    wxString msg = _( "Enter the name and value for each environment variable.  Grey entries "
+                      "are names that have been defined externally at the system or user "
+                      "level.  Environment variables defined at the system or user level "
+                      "take precedence over the ones defined in this table.  This means the "
+                      "values in this table are ignored." );
+    msg << wxT( "<br><br><b>" );
+    msg << _( "To ensure environment variable names are valid on all platforms, the name field "
+              "will only accept upper case letters, digits, and the underscore characters." );
+    msg << wxT( "</b><br><br>" );
+    msg << _( "<b>KICAD_SYMBOL_DIR</b> is the base path of the locally installed symbol libraries." );
+    msg << wxT( "<br><br>" );
+    msg << _( "<b>KIGITHUB</b> is used by KiCad to define the URL of the repository "
+              "of the official KiCad footprint libraries." );
+    msg << wxT( "<br><br>" );
+    msg << _( "<b>KISYS3DMOD</b> is the base path of system footprint 3D "
+              "shapes (.3Dshapes folders)." );
+    msg << wxT( "<br><br>" );
+    msg << _( "<b>KISYSMOD</b> is the base path of locally installed system "
+              "footprint libraries (.pretty folders)." );
+    msg << wxT( "<br><br>" );
+    msg << _( "<b>KIPRJMOD</b> is internally defined by KiCad (cannot be edited) and is set "
+              "to the absolute path of the currently loaded project file.  This environment "
+              "variable can be used to define files and paths relative to the currently loaded "
+              "project.  For instance, ${KIPRJMOD}/libs/footprints.pretty can be defined as a "
+              "folder containing a project specific footprint library named footprints.pretty." );
+    msg << wxT( "<br><br>" );
+    msg << _( "<b>KICAD_PTEMPLATES</b> is optional and can be defined if you want to "
+              "create your own project templates folder." );
+
+    HTML_MESSAGE_BOX dlg( GetParent(), _( "Environment Variable Help" ) );
+    dlg.SetDialogSizeInDU( 400, 250 );
+
+    dlg.AddHTML_Text( msg );
+    dlg.ShowModal();
+}
+
+
+bool DIALOG_CONFIGURE_PATHS::IsEnvVarImmutable( const wxString aEnvVar )
+{
+    /*
+     * TODO - Instead of defining these values here,
+     * extract them from elsewhere in the program
+     * (where they are originally defined)
+     */
+
+    static const wxString immutable[] = {
+            "KIGITHUB",
+            "KISYS3DMOD",
+            "KISYSMOD",
+            "KIPRJMOD",
+            "KICAD_PTEMPLATES",
+            "KICAD_SYMBOL_DIR"
+    };
+
+    for( const auto& ii : immutable )
+    {
+        if( aEnvVar.Cmp( ii ) == 0 )
+            return true;
+    }
+
+    return false;
+}
diff --git a/common/dialogs/dialog_configure_paths_base.cpp b/common/dialogs/dialog_configure_paths_base.cpp
new file mode 100644
index 0000000000..6a30529413
--- /dev/null
+++ b/common/dialogs/dialog_configure_paths_base.cpp
@@ -0,0 +1,186 @@
+///////////////////////////////////////////////////////////////////////////
+// C++ code generated with wxFormBuilder (version Dec 30 2017)
+// http://www.wxformbuilder.org/
+//
+// PLEASE DO *NOT* EDIT THIS FILE!
+///////////////////////////////////////////////////////////////////////////
+
+#include "dialog_configure_paths_base.h"
+
+///////////////////////////////////////////////////////////////////////////
+
+DIALOG_CONFIGURE_PATHS_BASE::DIALOG_CONFIGURE_PATHS_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : DIALOG_SHIM( parent, id, title, pos, size, style )
+{
+	this->SetSizeHints( wxSize( -1,-1 ), wxDefaultSize );
+	
+	wxBoxSizer* bSizerMain;
+	bSizerMain = new wxBoxSizer( wxVERTICAL );
+	
+	wxStaticBoxSizer* sbEnvVars;
+	sbEnvVars = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Environment Variables") ), wxVERTICAL );
+	
+	m_EnvVars = new wxGrid( sbEnvVars->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
+	
+	// Grid
+	m_EnvVars->CreateGrid( 1, 2 );
+	m_EnvVars->EnableEditing( true );
+	m_EnvVars->EnableGridLines( true );
+	m_EnvVars->EnableDragGridSize( false );
+	m_EnvVars->SetMargins( 0, 0 );
+	
+	// Columns
+	m_EnvVars->SetColSize( 0, 150 );
+	m_EnvVars->SetColSize( 1, 454 );
+	m_EnvVars->EnableDragColMove( false );
+	m_EnvVars->EnableDragColSize( true );
+	m_EnvVars->SetColLabelSize( 22 );
+	m_EnvVars->SetColLabelValue( 0, _("Name") );
+	m_EnvVars->SetColLabelValue( 1, _("Path") );
+	m_EnvVars->SetColLabelAlignment( wxALIGN_CENTRE, wxALIGN_CENTRE );
+	
+	// Rows
+	m_EnvVars->EnableDragRowSize( true );
+	m_EnvVars->SetRowLabelSize( 0 );
+	m_EnvVars->SetRowLabelAlignment( wxALIGN_CENTRE, wxALIGN_CENTRE );
+	
+	// Label Appearance
+	
+	// Cell Defaults
+	m_EnvVars->SetDefaultCellAlignment( wxALIGN_LEFT, wxALIGN_TOP );
+	m_EnvVars->SetMinSize( wxSize( 600,150 ) );
+	
+	sbEnvVars->Add( m_EnvVars, 1, wxEXPAND|wxBOTTOM, 5 );
+	
+	wxBoxSizer* bSizerEnvVarBtns;
+	bSizerEnvVarBtns = new wxBoxSizer( wxHORIZONTAL );
+	
+	m_btnAddEnvVar = new wxBitmapButton( sbEnvVars->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW );
+	m_btnAddEnvVar->SetMinSize( wxSize( 29,29 ) );
+	
+	bSizerEnvVarBtns->Add( m_btnAddEnvVar, 0, 0, 5 );
+	
+	m_btnDeleteEnvVar = new wxBitmapButton( sbEnvVars->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW );
+	m_btnDeleteEnvVar->SetMinSize( wxSize( 29,29 ) );
+	
+	bSizerEnvVarBtns->Add( m_btnDeleteEnvVar, 0, 0, 5 );
+	
+	
+	sbEnvVars->Add( bSizerEnvVarBtns, 0, wxEXPAND, 5 );
+	
+	
+	bSizerMain->Add( sbEnvVars, 1, wxEXPAND|wxALL, 5 );
+	
+	m_sb3DSearchPaths = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("3D Search Paths") ), wxVERTICAL );
+	
+	m_SearchPaths = new wxGrid( m_sb3DSearchPaths->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
+	
+	// Grid
+	m_SearchPaths->CreateGrid( 1, 3 );
+	m_SearchPaths->EnableEditing( true );
+	m_SearchPaths->EnableGridLines( true );
+	m_SearchPaths->EnableDragGridSize( false );
+	m_SearchPaths->SetMargins( 0, 0 );
+	
+	// Columns
+	m_SearchPaths->SetColSize( 0, 150 );
+	m_SearchPaths->SetColSize( 1, 300 );
+	m_SearchPaths->SetColSize( 2, 154 );
+	m_SearchPaths->EnableDragColMove( false );
+	m_SearchPaths->EnableDragColSize( true );
+	m_SearchPaths->SetColLabelSize( 22 );
+	m_SearchPaths->SetColLabelValue( 0, _("Alias") );
+	m_SearchPaths->SetColLabelValue( 1, _("Path") );
+	m_SearchPaths->SetColLabelValue( 2, _("Description") );
+	m_SearchPaths->SetColLabelAlignment( wxALIGN_CENTRE, wxALIGN_CENTRE );
+	
+	// Rows
+	m_SearchPaths->AutoSizeRows();
+	m_SearchPaths->EnableDragRowSize( false );
+	m_SearchPaths->SetRowLabelSize( 0 );
+	m_SearchPaths->SetRowLabelAlignment( wxALIGN_CENTRE, wxALIGN_CENTRE );
+	
+	// Label Appearance
+	
+	// Cell Defaults
+	m_SearchPaths->SetDefaultCellAlignment( wxALIGN_LEFT, wxALIGN_TOP );
+	m_SearchPaths->SetMinSize( wxSize( 600,150 ) );
+	
+	m_sb3DSearchPaths->Add( m_SearchPaths, 1, wxEXPAND|wxBOTTOM, 5 );
+	
+	wxBoxSizer* bSizerSearchPathBtns;
+	bSizerSearchPathBtns = new wxBoxSizer( wxHORIZONTAL );
+	
+	m_btnAddSearchPath = new wxBitmapButton( m_sb3DSearchPaths->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW );
+	m_btnAddSearchPath->SetMinSize( wxSize( 29,29 ) );
+	
+	bSizerSearchPathBtns->Add( m_btnAddSearchPath, 0, 0, 5 );
+	
+	m_btnDeleteSearchPath = new wxBitmapButton( m_sb3DSearchPaths->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW );
+	m_btnDeleteSearchPath->SetMinSize( wxSize( 29,29 ) );
+	
+	bSizerSearchPathBtns->Add( m_btnDeleteSearchPath, 0, wxRIGHT, 10 );
+	
+	m_btnMoveUp = new wxBitmapButton( m_sb3DSearchPaths->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW );
+	m_btnMoveUp->SetMinSize( wxSize( 29,29 ) );
+	
+	bSizerSearchPathBtns->Add( m_btnMoveUp, 0, wxLEFT, 10 );
+	
+	m_btnMoveDown = new wxBitmapButton( m_sb3DSearchPaths->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW );
+	m_btnMoveDown->SetMinSize( wxSize( 29,29 ) );
+	
+	bSizerSearchPathBtns->Add( m_btnMoveDown, 0, 0, 5 );
+	
+	
+	m_sb3DSearchPaths->Add( bSizerSearchPathBtns, 0, wxEXPAND, 5 );
+	
+	
+	bSizerMain->Add( m_sb3DSearchPaths, 1, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
+	
+	m_sdbSizer = new wxStdDialogButtonSizer();
+	m_sdbSizerOK = new wxButton( this, wxID_OK );
+	m_sdbSizer->AddButton( m_sdbSizerOK );
+	m_sdbSizerCancel = new wxButton( this, wxID_CANCEL );
+	m_sdbSizer->AddButton( m_sdbSizerCancel );
+	m_sdbSizerHelp = new wxButton( this, wxID_HELP );
+	m_sdbSizer->AddButton( m_sdbSizerHelp );
+	m_sdbSizer->Realize();
+	
+	bSizerMain->Add( m_sdbSizer, 0, wxALL|wxEXPAND, 5 );
+	
+	
+	this->SetSizer( bSizerMain );
+	this->Layout();
+	bSizerMain->Fit( this );
+	
+	this->Centre( wxBOTH );
+	
+	// Connect Events
+	m_EnvVars->Connect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_CONFIGURE_PATHS_BASE::OnGridSize ), NULL, this );
+	m_EnvVars->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_CONFIGURE_PATHS_BASE::OnUpdateUI ), NULL, this );
+	m_btnAddEnvVar->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_CONFIGURE_PATHS_BASE::OnAddEnvVar ), NULL, this );
+	m_btnDeleteEnvVar->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_CONFIGURE_PATHS_BASE::OnRemoveEnvVar ), NULL, this );
+	m_SearchPaths->Connect( wxEVT_GRID_CELL_RIGHT_CLICK, wxGridEventHandler( DIALOG_CONFIGURE_PATHS_BASE::OnGridCellRightClick ), NULL, this );
+	m_SearchPaths->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_CONFIGURE_PATHS_BASE::OnUpdateUI ), NULL, this );
+	m_btnAddSearchPath->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_CONFIGURE_PATHS_BASE::OnAddSearchPath ), NULL, this );
+	m_btnDeleteSearchPath->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_CONFIGURE_PATHS_BASE::OnDeleteSearchPath ), NULL, this );
+	m_btnMoveUp->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_CONFIGURE_PATHS_BASE::OnSearchPathMoveUp ), NULL, this );
+	m_btnMoveDown->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_CONFIGURE_PATHS_BASE::OnSearchPathMoveDown ), NULL, this );
+	m_sdbSizerHelp->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_CONFIGURE_PATHS_BASE::OnHelp ), NULL, this );
+}
+
+DIALOG_CONFIGURE_PATHS_BASE::~DIALOG_CONFIGURE_PATHS_BASE()
+{
+	// Disconnect Events
+	m_EnvVars->Disconnect( wxEVT_SIZE, wxSizeEventHandler( DIALOG_CONFIGURE_PATHS_BASE::OnGridSize ), NULL, this );
+	m_EnvVars->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_CONFIGURE_PATHS_BASE::OnUpdateUI ), NULL, this );
+	m_btnAddEnvVar->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_CONFIGURE_PATHS_BASE::OnAddEnvVar ), NULL, this );
+	m_btnDeleteEnvVar->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_CONFIGURE_PATHS_BASE::OnRemoveEnvVar ), NULL, this );
+	m_SearchPaths->Disconnect( wxEVT_GRID_CELL_RIGHT_CLICK, wxGridEventHandler( DIALOG_CONFIGURE_PATHS_BASE::OnGridCellRightClick ), NULL, this );
+	m_SearchPaths->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_CONFIGURE_PATHS_BASE::OnUpdateUI ), NULL, this );
+	m_btnAddSearchPath->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_CONFIGURE_PATHS_BASE::OnAddSearchPath ), NULL, this );
+	m_btnDeleteSearchPath->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_CONFIGURE_PATHS_BASE::OnDeleteSearchPath ), NULL, this );
+	m_btnMoveUp->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_CONFIGURE_PATHS_BASE::OnSearchPathMoveUp ), NULL, this );
+	m_btnMoveDown->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_CONFIGURE_PATHS_BASE::OnSearchPathMoveDown ), NULL, this );
+	m_sdbSizerHelp->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_CONFIGURE_PATHS_BASE::OnHelp ), NULL, this );
+	
+}
diff --git a/common/dialogs/dialog_configure_paths_base.fbp b/common/dialogs/dialog_configure_paths_base.fbp
new file mode 100644
index 0000000000..d0015f2bb9
--- /dev/null
+++ b/common/dialogs/dialog_configure_paths_base.fbp
@@ -0,0 +1,1021 @@
+<?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">dialog_configure_paths_base</property>
+        <property name="first_id">1000</property>
+        <property name="help_provider">none</property>
+        <property name="internationalize">1</property>
+        <property name="name">DIALOG_CONFIGURE_PATHS_BASE</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="Dialog" expanded="1">
+            <property name="aui_managed">0</property>
+            <property name="aui_manager_style">wxAUI_MGR_DEFAULT</property>
+            <property name="bg"></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">DIALOG_CONFIGURE_PATHS_BASE</property>
+            <property name="pos"></property>
+            <property name="size">-1,-1</property>
+            <property name="style">wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>
+            <property name="subclass">DIALOG_SHIM; dialog_shim.h</property>
+            <property name="title">Configure Paths</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="OnAuiFindManager"></event>
+            <event name="OnAuiPaneButton"></event>
+            <event name="OnAuiPaneClose"></event>
+            <event name="OnAuiPaneMaximize"></event>
+            <event name="OnAuiPaneRestore"></event>
+            <event name="OnAuiRender"></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>
+            <object class="wxBoxSizer" expanded="1">
+                <property name="minimum_size"></property>
+                <property name="name">bSizerMain</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">1</property>
+                    <object class="wxStaticBoxSizer" expanded="1">
+                        <property name="id">wxID_ANY</property>
+                        <property name="label">Environment Variables</property>
+                        <property name="minimum_size"></property>
+                        <property name="name">sbEnvVars</property>
+                        <property name="orient">wxVERTICAL</property>
+                        <property name="parent">1</property>
+                        <property name="permission">none</property>
+                        <event name="OnUpdateUI"></event>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxEXPAND|wxBOTTOM</property>
+                            <property name="proportion">1</property>
+                            <object class="wxGrid" 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="autosize_cols">0</property>
+                                <property name="autosize_rows">0</property>
+                                <property name="best_size"></property>
+                                <property name="bg"></property>
+                                <property name="caption"></property>
+                                <property name="caption_visible">1</property>
+                                <property name="cell_bg"></property>
+                                <property name="cell_font"></property>
+                                <property name="cell_horiz_alignment">wxALIGN_LEFT</property>
+                                <property name="cell_text"></property>
+                                <property name="cell_vert_alignment">wxALIGN_TOP</property>
+                                <property name="center_pane">0</property>
+                                <property name="close_button">1</property>
+                                <property name="col_label_horiz_alignment">wxALIGN_CENTRE</property>
+                                <property name="col_label_size">22</property>
+                                <property name="col_label_values">&quot;Name&quot; &quot;Path&quot;</property>
+                                <property name="col_label_vert_alignment">wxALIGN_CENTRE</property>
+                                <property name="cols">2</property>
+                                <property name="column_sizes">150,454</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="drag_col_move">0</property>
+                                <property name="drag_col_size">1</property>
+                                <property name="drag_grid_size">0</property>
+                                <property name="drag_row_size">1</property>
+                                <property name="editing">1</property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="floatable">1</property>
+                                <property name="font"></property>
+                                <property name="grid_line_color"></property>
+                                <property name="grid_lines">1</property>
+                                <property name="gripper">0</property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_ANY</property>
+                                <property name="label_bg"></property>
+                                <property name="label_font"></property>
+                                <property name="label_text"></property>
+                                <property name="margin_height">0</property>
+                                <property name="margin_width">0</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">600,150</property>
+                                <property name="moveable">1</property>
+                                <property name="name">m_EnvVars</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="row_label_horiz_alignment">wxALIGN_CENTRE</property>
+                                <property name="row_label_size">0</property>
+                                <property name="row_label_values"></property>
+                                <property name="row_label_vert_alignment">wxALIGN_CENTRE</property>
+                                <property name="row_sizes"></property>
+                                <property name="rows">1</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="OnGridCellChange"></event>
+                                <event name="OnGridCellLeftClick"></event>
+                                <event name="OnGridCellLeftDClick"></event>
+                                <event name="OnGridCellRightClick"></event>
+                                <event name="OnGridCellRightDClick"></event>
+                                <event name="OnGridCmdCellChange"></event>
+                                <event name="OnGridCmdCellLeftClick"></event>
+                                <event name="OnGridCmdCellLeftDClick"></event>
+                                <event name="OnGridCmdCellRightClick"></event>
+                                <event name="OnGridCmdCellRightDClick"></event>
+                                <event name="OnGridCmdColSize"></event>
+                                <event name="OnGridCmdEditorCreated"></event>
+                                <event name="OnGridCmdEditorHidden"></event>
+                                <event name="OnGridCmdEditorShown"></event>
+                                <event name="OnGridCmdLabelLeftClick"></event>
+                                <event name="OnGridCmdLabelLeftDClick"></event>
+                                <event name="OnGridCmdLabelRightClick"></event>
+                                <event name="OnGridCmdLabelRightDClick"></event>
+                                <event name="OnGridCmdRangeSelect"></event>
+                                <event name="OnGridCmdRowSize"></event>
+                                <event name="OnGridCmdSelectCell"></event>
+                                <event name="OnGridColSize"></event>
+                                <event name="OnGridEditorCreated"></event>
+                                <event name="OnGridEditorHidden"></event>
+                                <event name="OnGridEditorShown"></event>
+                                <event name="OnGridLabelLeftClick"></event>
+                                <event name="OnGridLabelLeftDClick"></event>
+                                <event name="OnGridLabelRightClick"></event>
+                                <event name="OnGridLabelRightDClick"></event>
+                                <event name="OnGridRangeSelect"></event>
+                                <event name="OnGridRowSize"></event>
+                                <event name="OnGridSelectCell"></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">OnGridSize</event>
+                                <event name="OnUpdateUI">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">bSizerEnvVarBtns</property>
+                                <property name="orient">wxHORIZONTAL</property>
+                                <property name="permission">none</property>
+                                <object class="sizeritem" expanded="1">
+                                    <property name="border">5</property>
+                                    <property name="flag"></property>
+                                    <property name="proportion">0</property>
+                                    <object class="wxBitmapButton" 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"></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="disabled"></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="focus"></property>
+                                        <property name="font"></property>
+                                        <property name="gripper">0</property>
+                                        <property name="hidden">0</property>
+                                        <property name="hover"></property>
+                                        <property name="id">wxID_ANY</property>
+                                        <property name="label">Add Environment Variable</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">29,29</property>
+                                        <property name="moveable">1</property>
+                                        <property name="name">m_btnAddEnvVar</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="selected"></property>
+                                        <property name="show">1</property>
+                                        <property name="size"></property>
+                                        <property name="style">wxBU_AUTODRAW</property>
+                                        <property name="subclass">; forward_declare</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">OnAddEnvVar</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"></property>
+                                    <property name="proportion">0</property>
+                                    <object class="wxBitmapButton" 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"></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="disabled"></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="focus"></property>
+                                        <property name="font"></property>
+                                        <property name="gripper">0</property>
+                                        <property name="hidden">0</property>
+                                        <property name="hover"></property>
+                                        <property name="id">wxID_ANY</property>
+                                        <property name="label">Delete Environment Variable</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">29,29</property>
+                                        <property name="moveable">1</property>
+                                        <property name="name">m_btnDeleteEnvVar</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="selected"></property>
+                                        <property name="show">1</property>
+                                        <property name="size"></property>
+                                        <property name="style">wxBU_AUTODRAW</property>
+                                        <property name="subclass">; forward_declare</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">OnRemoveEnvVar</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">wxEXPAND|wxTOP|wxRIGHT|wxLEFT</property>
+                    <property name="proportion">1</property>
+                    <object class="wxStaticBoxSizer" expanded="1">
+                        <property name="id">wxID_ANY</property>
+                        <property name="label">3D Search Paths</property>
+                        <property name="minimum_size"></property>
+                        <property name="name">m_sb3DSearchPaths</property>
+                        <property name="orient">wxVERTICAL</property>
+                        <property name="parent">1</property>
+                        <property name="permission">protected</property>
+                        <event name="OnUpdateUI"></event>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxEXPAND|wxBOTTOM</property>
+                            <property name="proportion">1</property>
+                            <object class="wxGrid" 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="autosize_cols">0</property>
+                                <property name="autosize_rows">1</property>
+                                <property name="best_size"></property>
+                                <property name="bg"></property>
+                                <property name="caption"></property>
+                                <property name="caption_visible">1</property>
+                                <property name="cell_bg"></property>
+                                <property name="cell_font"></property>
+                                <property name="cell_horiz_alignment">wxALIGN_LEFT</property>
+                                <property name="cell_text"></property>
+                                <property name="cell_vert_alignment">wxALIGN_TOP</property>
+                                <property name="center_pane">0</property>
+                                <property name="close_button">1</property>
+                                <property name="col_label_horiz_alignment">wxALIGN_CENTRE</property>
+                                <property name="col_label_size">22</property>
+                                <property name="col_label_values">&quot;Alias&quot; &quot;Path&quot; &quot;Description&quot;</property>
+                                <property name="col_label_vert_alignment">wxALIGN_CENTRE</property>
+                                <property name="cols">3</property>
+                                <property name="column_sizes">150,300,154</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="drag_col_move">0</property>
+                                <property name="drag_col_size">1</property>
+                                <property name="drag_grid_size">0</property>
+                                <property name="drag_row_size">0</property>
+                                <property name="editing">1</property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="floatable">1</property>
+                                <property name="font"></property>
+                                <property name="grid_line_color"></property>
+                                <property name="grid_lines">1</property>
+                                <property name="gripper">0</property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_ANY</property>
+                                <property name="label_bg"></property>
+                                <property name="label_font"></property>
+                                <property name="label_text"></property>
+                                <property name="margin_height">0</property>
+                                <property name="margin_width">0</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">600,150</property>
+                                <property name="moveable">1</property>
+                                <property name="name">m_SearchPaths</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="row_label_horiz_alignment">wxALIGN_CENTRE</property>
+                                <property name="row_label_size">0</property>
+                                <property name="row_label_values"></property>
+                                <property name="row_label_vert_alignment">wxALIGN_CENTRE</property>
+                                <property name="row_sizes"></property>
+                                <property name="rows">1</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="OnGridCellChange"></event>
+                                <event name="OnGridCellLeftClick"></event>
+                                <event name="OnGridCellLeftDClick"></event>
+                                <event name="OnGridCellRightClick">OnGridCellRightClick</event>
+                                <event name="OnGridCellRightDClick"></event>
+                                <event name="OnGridCmdCellChange"></event>
+                                <event name="OnGridCmdCellLeftClick"></event>
+                                <event name="OnGridCmdCellLeftDClick"></event>
+                                <event name="OnGridCmdCellRightClick"></event>
+                                <event name="OnGridCmdCellRightDClick"></event>
+                                <event name="OnGridCmdColSize"></event>
+                                <event name="OnGridCmdEditorCreated"></event>
+                                <event name="OnGridCmdEditorHidden"></event>
+                                <event name="OnGridCmdEditorShown"></event>
+                                <event name="OnGridCmdLabelLeftClick"></event>
+                                <event name="OnGridCmdLabelLeftDClick"></event>
+                                <event name="OnGridCmdLabelRightClick"></event>
+                                <event name="OnGridCmdLabelRightDClick"></event>
+                                <event name="OnGridCmdRangeSelect"></event>
+                                <event name="OnGridCmdRowSize"></event>
+                                <event name="OnGridCmdSelectCell"></event>
+                                <event name="OnGridColSize"></event>
+                                <event name="OnGridEditorCreated"></event>
+                                <event name="OnGridEditorHidden"></event>
+                                <event name="OnGridEditorShown"></event>
+                                <event name="OnGridLabelLeftClick"></event>
+                                <event name="OnGridLabelLeftDClick"></event>
+                                <event name="OnGridLabelRightClick"></event>
+                                <event name="OnGridLabelRightDClick"></event>
+                                <event name="OnGridRangeSelect"></event>
+                                <event name="OnGridRowSize"></event>
+                                <event name="OnGridSelectCell"></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">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">bSizerSearchPathBtns</property>
+                                <property name="orient">wxHORIZONTAL</property>
+                                <property name="permission">none</property>
+                                <object class="sizeritem" expanded="0">
+                                    <property name="border">5</property>
+                                    <property name="flag"></property>
+                                    <property name="proportion">0</property>
+                                    <object class="wxBitmapButton" 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="bitmap"></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="disabled"></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="focus"></property>
+                                        <property name="font"></property>
+                                        <property name="gripper">0</property>
+                                        <property name="hidden">0</property>
+                                        <property name="hover"></property>
+                                        <property name="id">wxID_ANY</property>
+                                        <property name="label">Add 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">29,29</property>
+                                        <property name="moveable">1</property>
+                                        <property name="name">m_btnAddSearchPath</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="selected"></property>
+                                        <property name="show">1</property>
+                                        <property name="size"></property>
+                                        <property name="style">wxBU_AUTODRAW</property>
+                                        <property name="subclass">; forward_declare</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">OnAddSearchPath</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">10</property>
+                                    <property name="flag">wxRIGHT</property>
+                                    <property name="proportion">0</property>
+                                    <object class="wxBitmapButton" 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="bitmap"></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="disabled"></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="focus"></property>
+                                        <property name="font"></property>
+                                        <property name="gripper">0</property>
+                                        <property name="hidden">0</property>
+                                        <property name="hover"></property>
+                                        <property name="id">wxID_ANY</property>
+                                        <property name="label">Delete 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">29,29</property>
+                                        <property name="moveable">1</property>
+                                        <property name="name">m_btnDeleteSearchPath</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="selected"></property>
+                                        <property name="show">1</property>
+                                        <property name="size"></property>
+                                        <property name="style">wxBU_AUTODRAW</property>
+                                        <property name="subclass">; forward_declare</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">OnDeleteSearchPath</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">10</property>
+                                    <property name="flag">wxLEFT</property>
+                                    <property name="proportion">0</property>
+                                    <object class="wxBitmapButton" 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="bitmap"></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="disabled"></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="focus"></property>
+                                        <property name="font"></property>
+                                        <property name="gripper">0</property>
+                                        <property name="hidden">0</property>
+                                        <property name="hover"></property>
+                                        <property name="id">wxID_ANY</property>
+                                        <property name="label">Move Up</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">29,29</property>
+                                        <property name="moveable">1</property>
+                                        <property name="name">m_btnMoveUp</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="selected"></property>
+                                        <property name="show">1</property>
+                                        <property name="size"></property>
+                                        <property name="style">wxBU_AUTODRAW</property>
+                                        <property name="subclass">; forward_declare</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">OnSearchPathMoveUp</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"></property>
+                                    <property name="proportion">0</property>
+                                    <object class="wxBitmapButton" 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="bitmap"></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="disabled"></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="focus"></property>
+                                        <property name="font"></property>
+                                        <property name="gripper">0</property>
+                                        <property name="hidden">0</property>
+                                        <property name="hover"></property>
+                                        <property name="id">wxID_ANY</property>
+                                        <property name="label">Move Down</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">29,29</property>
+                                        <property name="moveable">1</property>
+                                        <property name="name">m_btnMoveDown</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="selected"></property>
+                                        <property name="show">1</property>
+                                        <property name="size"></property>
+                                        <property name="style">wxBU_AUTODRAW</property>
+                                        <property name="subclass">; forward_declare</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">OnSearchPathMoveDown</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">wxALL|wxEXPAND</property>
+                    <property name="proportion">0</property>
+                    <object class="wxStdDialogButtonSizer" expanded="1">
+                        <property name="Apply">0</property>
+                        <property name="Cancel">1</property>
+                        <property name="ContextHelp">0</property>
+                        <property name="Help">1</property>
+                        <property name="No">0</property>
+                        <property name="OK">1</property>
+                        <property name="Save">0</property>
+                        <property name="Yes">0</property>
+                        <property name="minimum_size"></property>
+                        <property name="name">m_sdbSizer</property>
+                        <property name="permission">protected</property>
+                        <event name="OnApplyButtonClick"></event>
+                        <event name="OnCancelButtonClick"></event>
+                        <event name="OnContextHelpButtonClick"></event>
+                        <event name="OnHelpButtonClick">OnHelp</event>
+                        <event name="OnNoButtonClick"></event>
+                        <event name="OnOKButtonClick"></event>
+                        <event name="OnSaveButtonClick"></event>
+                        <event name="OnYesButtonClick"></event>
+                    </object>
+                </object>
+            </object>
+        </object>
+    </object>
+</wxFormBuilder_Project>
diff --git a/common/dialogs/dialog_configure_paths_base.h b/common/dialogs/dialog_configure_paths_base.h
new file mode 100644
index 0000000000..6a488ba4ea
--- /dev/null
+++ b/common/dialogs/dialog_configure_paths_base.h
@@ -0,0 +1,75 @@
+///////////////////////////////////////////////////////////////////////////
+// C++ code generated with wxFormBuilder (version Dec 30 2017)
+// http://www.wxformbuilder.org/
+//
+// PLEASE DO *NOT* EDIT THIS FILE!
+///////////////////////////////////////////////////////////////////////////
+
+#ifndef __DIALOG_CONFIGURE_PATHS_BASE_H__
+#define __DIALOG_CONFIGURE_PATHS_BASE_H__
+
+#include <wx/artprov.h>
+#include <wx/xrc/xmlres.h>
+#include <wx/intl.h>
+#include "dialog_shim.h"
+#include <wx/colour.h>
+#include <wx/settings.h>
+#include <wx/string.h>
+#include <wx/font.h>
+#include <wx/grid.h>
+#include <wx/gdicmn.h>
+#include <wx/bitmap.h>
+#include <wx/image.h>
+#include <wx/icon.h>
+#include <wx/bmpbuttn.h>
+#include <wx/button.h>
+#include <wx/sizer.h>
+#include <wx/statbox.h>
+#include <wx/dialog.h>
+
+///////////////////////////////////////////////////////////////////////////
+
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class DIALOG_CONFIGURE_PATHS_BASE
+///////////////////////////////////////////////////////////////////////////////
+class DIALOG_CONFIGURE_PATHS_BASE : public DIALOG_SHIM
+{
+	private:
+	
+	protected:
+		wxGrid* m_EnvVars;
+		wxBitmapButton* m_btnAddEnvVar;
+		wxBitmapButton* m_btnDeleteEnvVar;
+		wxStaticBoxSizer* m_sb3DSearchPaths;
+		wxGrid* m_SearchPaths;
+		wxBitmapButton* m_btnAddSearchPath;
+		wxBitmapButton* m_btnDeleteSearchPath;
+		wxBitmapButton* m_btnMoveUp;
+		wxBitmapButton* m_btnMoveDown;
+		wxStdDialogButtonSizer* m_sdbSizer;
+		wxButton* m_sdbSizerOK;
+		wxButton* m_sdbSizerCancel;
+		wxButton* m_sdbSizerHelp;
+		
+		// Virtual event handlers, overide them in your derived class
+		virtual void OnGridSize( wxSizeEvent& event ) { event.Skip(); }
+		virtual void OnUpdateUI( wxUpdateUIEvent& event ) { event.Skip(); }
+		virtual void OnAddEnvVar( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnRemoveEnvVar( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnGridCellRightClick( wxGridEvent& event ) { event.Skip(); }
+		virtual void OnAddSearchPath( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnDeleteSearchPath( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnSearchPathMoveUp( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnSearchPathMoveDown( wxCommandEvent& event ) { event.Skip(); }
+		virtual void OnHelp( wxCommandEvent& event ) { event.Skip(); }
+		
+	
+	public:
+		
+		DIALOG_CONFIGURE_PATHS_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Configure Paths"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER ); 
+		~DIALOG_CONFIGURE_PATHS_BASE();
+	
+};
+
+#endif //__DIALOG_CONFIGURE_PATHS_BASE_H__
diff --git a/common/dialogs/dialog_env_var_config.cpp b/common/dialogs/dialog_env_var_config.cpp
deleted file mode 100644
index e29f6443d5..0000000000
--- a/common/dialogs/dialog_env_var_config.cpp
+++ /dev/null
@@ -1,511 +0,0 @@
-/*
- * This program source code file is part of KICAD, a free EDA CAD application.
- *
- * Copyright (C) 2015 Wayne Stambaugh <stambaughw@gmail.com>
- * Copyright (C) 2015-2018 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
- */
-
-/**
- * @file dialog_env_var_config.cpp
- */
-
-#include <dialog_env_var_config.h>
-
-#include <confirm.h>
-
-#include <validators.h>
-#include <html_messagebox.h>
-
-#include <wx/regex.h>
-
-/** A helper dialog to edit a env var name and/or its value (often a path)
- */
-class DIALOG_ENV_VAR_SINGLE : public DIALOG_ENV_VAR_SINGLE_BASE
-{
-public:
-    DIALOG_ENV_VAR_SINGLE( wxWindow* parent, const wxString& aEnvVarName,
-                           const wxString& aEnvVarPath );
-
-    /// @return the new environment variable name
-    wxString GetEnvVarName() const
-    {
-        return m_envVarName->GetValue();
-    }
-
-    /// @return the new environment variable value
-    wxString GetEnvVarValue() const
-    {
-        return m_envVarPath->GetValue();
-    }
-
-    /// disable  the environment variable name (must be called
-    /// for predefined environment variable names, not editable
-    void SetEnvVarProtected()
-    {
-        m_envVarName->Enable( false );
-    }
-
-protected:
-    void OnSelectPath( wxCommandEvent& event ) override;
-    void onHelpClick( wxCommandEvent& event ) override;
-
-    // Currently, only upper case variable names are accepted. onVarNameChange
-    // changes on the fly any lower case char by the corresponding upper case
-	void onVarNameChange( wxCommandEvent& event ) override;
-
-    bool TransferDataFromWindow() override;
-};
-
-
-DIALOG_ENV_VAR_CONFIG::DIALOG_ENV_VAR_CONFIG( wxWindow* aParent, const ENV_VAR_MAP& aEnvVarMap ) :
-    DIALOG_ENV_VAR_CONFIG_BASE( aParent )
-{
-    // Copy environment variables across
-    m_envVarMap = aEnvVarMap;
-}
-
-
-bool DIALOG_ENV_VAR_CONFIG::TransferDataToWindow()
-{
-    wxLogDebug( wxT( "In DIALOG_ENV_VAR_CONFIG::TransferDataToWindow()." ) );
-
-    if( !wxDialog::TransferDataToWindow() )
-        return false;
-
-    //TODO
-    /*
-    // Grab the project path var (not editable)
-    wxString prjPath;
-
-    wxGetEnv( PROJECT_VAR_NAME, &prjPath );
-
-    m_kiprjmod->SetLabel( prjPath );
-    */
-
-    //TODO - Call SetAlternateRowColour first to prevent assertion error
-    //m_pathList->EnableAlternateRowColours( true );
-
-    PopulatePathList();
-
-    // Select the first item in the list
-    SelectListIndex( 0 );
-
-    GetSizer()->Layout();
-    GetSizer()->Fit( this );
-    GetSizer()->SetSizeHints( this );
-
-    return true;
-}
-
-
-bool DIALOG_ENV_VAR_CONFIG::TransferDataFromWindow()
-{
-    if( !wxDialog::TransferDataFromWindow() )
-    {
-        return false;
-    }
-
-    Pgm().SetLocalEnvVariables( m_envVarMap );
-
-    return true;
-}
-
-
-void DIALOG_ENV_VAR_CONFIG::PopulatePathList()
-{
-    m_pathList->Freeze();
-
-    m_pathList->ClearAll();
-
-    m_pathList->AppendColumn( _( "Name:" ) );
-    m_pathList->AppendColumn( _( "Path:" ) );
-
-    int row = 0;
-
-    for( auto it = m_envVarMap.begin(); it != m_envVarMap.end(); ++it )
-    {
-        long index = m_pathList->InsertItem( row, it->first );
-
-        m_pathList->SetItem( index, 1, it->second.GetValue() );
-
-        if( it->second.GetDefinedExternally() )
-        {
-            wxColour color = wxSystemSettings::GetColour( wxSYS_COLOUR_GRAYTEXT );
-
-            m_pathList->SetItemBackgroundColour( index, color );
-        }
-
-        row++;
-    }
-
-    m_pathList->SetColumnWidth( 0, wxLIST_AUTOSIZE );
-    m_pathList->SetColumnWidth( 1, wxLIST_AUTOSIZE );
-
-    m_pathList->Update();
-
-    m_pathList->Thaw();
-}
-
-
-bool DIALOG_ENV_VAR_CONFIG::GetPathAtIndex( unsigned int aIndex, wxString& aEnvVar,
-                                            wxString& aEnvPath )
-{
-    if( aIndex > m_envVarMap.size() )
-    {
-        return false;
-    }
-
-    unsigned int idx = 0;
-
-    for( auto it = m_envVarMap.begin(); it != m_envVarMap.end(); ++it )
-    {
-        if( idx == aIndex )
-        {
-            aEnvVar = it->first;
-            aEnvPath = it->second.GetValue();
-
-            return true;
-        }
-
-        idx++;
-    }
-
-    return false;
-}
-
-
-void DIALOG_ENV_VAR_CONFIG::OnAddButton( wxCommandEvent& event )
-{
-    DIALOG_ENV_VAR_SINGLE dlg( nullptr, wxEmptyString, wxEmptyString );
-
-    if( dlg.ShowModal() == wxID_OK )
-    {
-        wxString newName = dlg.GetEnvVarName();
-        wxString newPath = dlg.GetEnvVarValue();
-
-        // Check that the name does not already exist
-        if( m_envVarMap.count( newName ) > 0 )
-        {
-            //TODO - Improve this message, use DisplayErrorMessage instead
-            DisplayError( this, _( "Path already exists." ) );
-        }
-        else
-        {
-            m_envVarMap[newName] = ENV_VAR_ITEM( newPath );
-
-            // Update path list
-            PopulatePathList();
-        }
-    }
-}
-
-
-void DIALOG_ENV_VAR_CONFIG::OnEditButton( wxCommandEvent& event )
-{
-    EditSelectedEntry();
-}
-
-
-void DIALOG_ENV_VAR_CONFIG::EditSelectedEntry()
-{
-    wxString envName;
-    wxString envPath;
-
-    if( GetPathAtIndex( m_pathIndex, envName, envPath ) )
-    {
-        auto dlg = new DIALOG_ENV_VAR_SINGLE( nullptr, envName, envPath );
-
-        if( IsEnvVarImmutable( envName ) )
-        {
-            dlg->SetEnvVarProtected();
-        }
-
-        if( dlg->ShowModal() == wxID_OK )
-        {
-            wxString newName = dlg->GetEnvVarName();
-            wxString newPath = dlg->GetEnvVarValue();
-
-            // If the path name has not been changed
-            if( envName.Cmp( newName ) == 0 )
-            {
-                m_envVarMap[envName].SetValue( newPath );
-
-                if( m_envVarMap[envName].GetDefinedExternally() )
-                {
-                    m_extDefsChanged = true;
-                }
-            }
-            // Path-name needs to be updated
-            else
-            {
-                if( IsEnvVarImmutable( envName ) )
-                {
-                    DisplayErrorMessage( this,
-                                         wxString::Format( _( "Environment variable \"%s\" cannot "
-                                                              "be renamed." ),
-                                                           envName.ToStdString() ),
-                                         _( "The selected environment variable name "
-                                            "is required for KiCad functionality and "
-                                            "can not be renamed." ) );
-
-                    return;
-                }
-
-                auto envVar = m_envVarMap[envName];
-
-                m_envVarMap.erase( envName );
-
-                envVar.SetValue( newPath );
-                envVar.SetDefinedExternally( false );
-                m_envVarMap[newName] = envVar;
-            }
-
-            // Update the path list
-            PopulatePathList();
-        }
-
-        dlg->Destroy();
-    }
-}
-
-
-void DIALOG_ENV_VAR_CONFIG::OnHelpButton( wxCommandEvent& event )
-{
-    wxString msg = _( "Enter the name and value for each environment variable.  Grey entries "
-                      "are names that have been defined externally at the system or user "
-                      "level.  Environment variables defined at the system or user level "
-                      "take precedence over the ones defined in this table.  This means the "
-                      "values in this table are ignored." );
-    msg << wxT( "<br><br><b>" );
-    msg << _( "To ensure environment variable names are valid on all platforms, the name field "
-              "will only accept upper case letters, digits, and the underscore characters." );
-    msg << wxT( "</b><br><br>" );
-    msg << _( "<b>KICAD_SYMBOL_DIR</b> is the base path of the locally installed symbol "
-              "libraries." );
-    msg << wxT( "<br><br>" );
-    msg << _( "<b>KIGITHUB</b> is used by KiCad to define the URL of the repository "
-              "of the official KiCad footprint libraries.  This is only required if the "
-              "Github plugin is used to access footprint libraries" );
-    msg << wxT( "<br><br>" );
-    msg << _( "<b>KISYS3DMOD</b> is the base path of system footprint 3D "
-              "shapes (.3Dshapes folders)." );
-    msg << wxT( "<br><br>" );
-    msg << _( "<b>KISYSMOD</b> is the base path of locally installed system "
-              "footprint libraries (.pretty folders)." );
-    msg << wxT( "<br><br>" );
-    msg << _( "<b>KIPRJMOD</b> is internally defined by KiCad (cannot be edited) and is set "
-              "to the absolute path of the currently loaded project file.  This environment "
-              "variable can be used to define files and paths relative to the currently loaded "
-              "project.  For instance, ${KIPRJMOD}/libs/footprints.pretty can be defined as a "
-              "folder containing a project specific footprint library named footprints.pretty." );
-    msg << wxT( "<br><br>" );
-    msg << _( "<b>KICAD_TEMPLATE_DIR</b> is required and is the path containing the project "
-              "templates installed with KiCad." );
-    msg << wxT( "<br><br>" );
-    msg << _( "<b>KICAD_USER_TEMPLATE_DIR</b> is required and is the path containing any user "
-              "specific project templates." );
-
-    HTML_MESSAGE_BOX dlg( GetParent(), _( "Environment Variable Help" ) );
-    dlg.SetDialogSizeInDU( 400, 350 );
-
-    dlg.AddHTML_Text( msg );
-    dlg.ShowModal();
-}
-
-
-bool DIALOG_ENV_VAR_CONFIG::IsEnvVarImmutable( const wxString aEnvVar )
-{
-    /*
-     * TODO - Instead of defining these values here,
-     * extract them from elsewhere in the program
-     * (where they are originally defined)
-     */
-
-    static const wxString immutable[] = {
-            "KIGITHUB",
-            "KISYS3DMOD",
-            "KISYSMOD",
-            "KIPRJMOD",
-            "KICAD_SYMBOL_DIR",
-            "KICAD_TEMPLATE_DIR",
-            "KICAD_USER_TEMPLATE_DIR"
-    };
-
-    for( unsigned int ii=0; ii<6; ii++ )
-    {
-        if( aEnvVar.Cmp( immutable[ii] ) == 0 )
-        {
-            return true;
-        }
-    }
-
-    return false;
-}
-
-
-void DIALOG_ENV_VAR_CONFIG::OnRemoveButton( wxCommandEvent& event )
-{
-    wxString envName;
-    wxString envPath;
-
-    if( GetPathAtIndex( m_pathIndex, envName, envPath ) )
-    {
-        if( IsEnvVarImmutable( envName ) )
-        {
-            return;
-        }
-
-        m_envVarMap.erase( envName );
-
-        PopulatePathList();
-    }
-}
-
-
-void DIALOG_ENV_VAR_CONFIG::SelectListIndex( unsigned int aIndex )
-{
-    if( aIndex >= m_envVarMap.size() )
-    {
-        aIndex = 0;
-    }
-
-    m_pathIndex = aIndex;
-
-    wxString envName;
-    wxString envPath;
-
-    if( GetPathAtIndex( m_pathIndex, envName, envPath ) )
-    {
-        // Disable the 'delete' button if the path cannot be deleted
-        m_deletePathButton->Enable( !IsEnvVarImmutable( envName ) );
-    }
-}
-
-void DIALOG_ENV_VAR_CONFIG::OnPathSelected( wxListEvent& event )
-{
-    SelectListIndex( event.GetIndex() );
-}
-
-
-void DIALOG_ENV_VAR_CONFIG::OnPathActivated( wxListEvent& event )
-{
-    SelectListIndex( event.GetIndex() );
-
-    EditSelectedEntry();
-}
-
-
-///////////////////////////
-// DIALOG_ENV_VAR_SINGLE //
-///////////////////////////
-
-DIALOG_ENV_VAR_SINGLE::DIALOG_ENV_VAR_SINGLE( wxWindow* parent,
-                                              const wxString& aEnvVarName,
-                                              const wxString& aEnvVarPath ) :
-    DIALOG_ENV_VAR_SINGLE_BASE( parent )
-{
-    m_envVarName->SetValue( aEnvVarName );
-    m_envVarPath->SetValue( aEnvVarPath );
-    m_envVarName->SetValidator( ENV_VAR_NAME_VALIDATOR() );
-}
-
-
-void DIALOG_ENV_VAR_SINGLE::OnSelectPath( wxCommandEvent& event )
-{
-    wxString title = _( "Select Path for Environment Variable" );
-    wxString path;  // Currently the first opened path is not initialized
-
-    wxDirDialog dlg( nullptr, title, path, wxDD_DEFAULT_STYLE | wxDD_DIR_MUST_EXIST );
-
-    if( dlg.ShowModal() == wxID_OK )
-         m_envVarPath->SetValue( dlg.GetPath() );
-}
-
-
-void DIALOG_ENV_VAR_SINGLE::onVarNameChange( wxCommandEvent& event )
-{
-    wxString upper_var = m_envVarName->GetValue().Upper();
-
-    if( upper_var != m_envVarName->GetValue() )
-    {
-        int pos = m_envVarName->GetInsertionPoint();
-        m_envVarName->ChangeValue( upper_var );
-        m_envVarName->SetInsertionPoint( pos );
-    }
-
-}
-
-
-bool DIALOG_ENV_VAR_SINGLE::TransferDataFromWindow()
-{
-    // The user pressed the OK button, test data validity
-    wxString name = m_envVarName->GetValue();
-    wxString path = m_envVarPath->GetValue();
-
-    // Neither name nor path can be empty
-    if( name.IsEmpty() )
-    {
-        DisplayError( this, _( "Environment variable name cannot be empty." ) );
-        //  Veto:
-        return false;
-    }
-
-    if( path.IsEmpty() )
-    {
-        DisplayError( this, _( "Environment variable value cannot be empty." ) );
-        //  Veto:
-        return false;
-    }
-
-    // Name cannot start with a number
-    if( name.Left( 1 ).IsNumber() )
-    {
-        DisplayError( this, _( "Environment variable names cannot start with a digit (0-9)." ) );
-        //  Veto:
-        return false;
-    }
-
-    // No errors detected
-    return true;
-}
-
-
-void DIALOG_ENV_VAR_SINGLE::onHelpClick( wxCommandEvent& event )
-{
-    wxString msg = _( "An environment variable is used for string substitutions.<br>"
-                      "Environment variables are primarily used for paths to make KiCad portable "
-                      "between platforms.<br><br>"
-                      "If an environment variable is defined as <b>MYLIBPATH</b> with a "
-                      "value <b>e:/kicad_libs</b>, then a library name "
-                      "<b>${MYLIBPATH}/mylib.lib</b> gets expanded to "
-                      "<b>e:/kicad_libs/mylib.lib</b>"
-                      "<br><br>"
-                      "<b>Note:</b><br>"
-                      "Only characters <b>ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_</b> are "
-                      "allowed in environment variable names and the environment variable name "
-                      "cannot start with a digit (0-9)."
-                    );
-
-    HTML_MESSAGE_BOX dlg( GetParent(), _( "Environment Variable Help" ) );
-    dlg.SetDialogSizeInDU( 400, 350 );
-
-    dlg.AddHTML_Text( msg );
-    dlg.ShowModal();
-}
diff --git a/common/dialogs/dialog_env_var_config_base.cpp b/common/dialogs/dialog_env_var_config_base.cpp
deleted file mode 100644
index e0e95bc6ab..0000000000
--- a/common/dialogs/dialog_env_var_config_base.cpp
+++ /dev/null
@@ -1,167 +0,0 @@
-///////////////////////////////////////////////////////////////////////////
-// C++ code generated with wxFormBuilder (version Aug  4 2017)
-// http://www.wxformbuilder.org/
-//
-// PLEASE DO "NOT" EDIT THIS FILE!
-///////////////////////////////////////////////////////////////////////////
-
-#include "dialog_env_var_config_base.h"
-
-///////////////////////////////////////////////////////////////////////////
-
-DIALOG_ENV_VAR_CONFIG_BASE::DIALOG_ENV_VAR_CONFIG_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : DIALOG_SHIM( parent, id, title, pos, size, style )
-{
-	this->SetSizeHints( wxDefaultSize, wxDefaultSize );
-	
-	wxBoxSizer* mainSizer;
-	mainSizer = new wxBoxSizer( wxVERTICAL );
-	
-	wxBoxSizer* bSizer7;
-	bSizer7 = new wxBoxSizer( wxHORIZONTAL );
-	
-	m_pathList = new wxListCtrl( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_HRULES|wxLC_REPORT|wxLC_VRULES );
-	bSizer7->Add( m_pathList, 1, wxALL|wxEXPAND, 5 );
-	
-	wxBoxSizer* bSizer6;
-	bSizer6 = new wxBoxSizer( wxVERTICAL );
-	
-	m_addPathButton = new wxButton( this, ID_BUTTON_ADD_PATH, _("Add"), wxDefaultPosition, wxDefaultSize, 0 );
-	m_addPathButton->SetToolTip( _("Add path prefix") );
-	
-	bSizer6->Add( m_addPathButton, 0, wxALL, 5 );
-	
-	m_editPathButton = new wxButton( this, ID_BUTTON_EDIT_PATH, _("Edit"), wxDefaultPosition, wxDefaultSize, 0 );
-	m_editPathButton->SetToolTip( _("Edit selected path prefix") );
-	
-	bSizer6->Add( m_editPathButton, 0, wxBOTTOM|wxLEFT|wxRIGHT, 5 );
-	
-	m_deletePathButton = new wxButton( this, ID_BUTTON_DELETE_PATH, _("Remove"), wxDefaultPosition, wxDefaultSize, 0 );
-	m_deletePathButton->SetToolTip( _("Remove selected path prefix") );
-	
-	bSizer6->Add( m_deletePathButton, 0, wxBOTTOM|wxLEFT|wxRIGHT, 5 );
-	
-	
-	bSizer6->Add( 0, 0, 1, wxEXPAND, 5 );
-	
-	
-	bSizer7->Add( bSizer6, 0, wxEXPAND, 5 );
-	
-	
-	mainSizer->Add( bSizer7, 1, wxEXPAND, 5 );
-	
-	m_staticline1 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
-	mainSizer->Add( m_staticline1, 0, wxEXPAND | wxALL, 5 );
-	
-	m_sdbSizer = new wxStdDialogButtonSizer();
-	m_sdbSizerOK = new wxButton( this, wxID_OK );
-	m_sdbSizer->AddButton( m_sdbSizerOK );
-	m_sdbSizerCancel = new wxButton( this, wxID_CANCEL );
-	m_sdbSizer->AddButton( m_sdbSizerCancel );
-	m_sdbSizerHelp = new wxButton( this, wxID_HELP );
-	m_sdbSizer->AddButton( m_sdbSizerHelp );
-	m_sdbSizer->Realize();
-	
-	mainSizer->Add( m_sdbSizer, 0, wxBOTTOM|wxALIGN_RIGHT, 5 );
-	
-	
-	this->SetSizer( mainSizer );
-	this->Layout();
-	mainSizer->Fit( this );
-	
-	this->Centre( wxBOTH );
-	
-	// Connect Events
-	m_pathList->Connect( wxEVT_COMMAND_LIST_ITEM_ACTIVATED, wxListEventHandler( DIALOG_ENV_VAR_CONFIG_BASE::OnPathActivated ), NULL, this );
-	m_pathList->Connect( wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler( DIALOG_ENV_VAR_CONFIG_BASE::OnPathSelected ), NULL, this );
-	m_addPathButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ENV_VAR_CONFIG_BASE::OnAddButton ), NULL, this );
-	m_editPathButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ENV_VAR_CONFIG_BASE::OnEditButton ), NULL, this );
-	m_deletePathButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ENV_VAR_CONFIG_BASE::OnRemoveButton ), NULL, this );
-	m_sdbSizerHelp->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ENV_VAR_CONFIG_BASE::OnHelpButton ), NULL, this );
-}
-
-DIALOG_ENV_VAR_CONFIG_BASE::~DIALOG_ENV_VAR_CONFIG_BASE()
-{
-	// Disconnect Events
-	m_pathList->Disconnect( wxEVT_COMMAND_LIST_ITEM_ACTIVATED, wxListEventHandler( DIALOG_ENV_VAR_CONFIG_BASE::OnPathActivated ), NULL, this );
-	m_pathList->Disconnect( wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler( DIALOG_ENV_VAR_CONFIG_BASE::OnPathSelected ), NULL, this );
-	m_addPathButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ENV_VAR_CONFIG_BASE::OnAddButton ), NULL, this );
-	m_editPathButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ENV_VAR_CONFIG_BASE::OnEditButton ), NULL, this );
-	m_deletePathButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ENV_VAR_CONFIG_BASE::OnRemoveButton ), NULL, this );
-	m_sdbSizerHelp->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ENV_VAR_CONFIG_BASE::OnHelpButton ), NULL, this );
-	
-}
-
-DIALOG_ENV_VAR_SINGLE_BASE::DIALOG_ENV_VAR_SINGLE_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : DIALOG_SHIM( parent, id, title, pos, size, style )
-{
-	this->SetSizeHints( wxDefaultSize, wxDefaultSize );
-	
-	wxBoxSizer* bSizerMain;
-	bSizerMain = new wxBoxSizer( wxVERTICAL );
-	
-	wxFlexGridSizer* fgSizer1;
-	fgSizer1 = new wxFlexGridSizer( 0, 3, 0, 0 );
-	fgSizer1->AddGrowableCol( 1 );
-	fgSizer1->SetFlexibleDirection( wxBOTH );
-	fgSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
-	
-	m_envVarNameLabel = new wxStaticText( this, wxID_ANY, _("Name:"), wxDefaultPosition, wxDefaultSize, 0 );
-	m_envVarNameLabel->Wrap( -1 );
-	fgSizer1->Add( m_envVarNameLabel, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
-	
-	m_envVarName = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
-	fgSizer1->Add( m_envVarName, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 );
-	
-	m_buttonHelp = new wxButton( this, wxID_ANY, _("Help"), wxDefaultPosition, wxDefaultSize, 0 );
-	fgSizer1->Add( m_buttonHelp, 0, wxALL, 5 );
-	
-	m_envVarPathLabel = new wxStaticText( this, wxID_ANY, _("Value:"), wxDefaultPosition, wxDefaultSize, 0 );
-	m_envVarPathLabel->Wrap( -1 );
-	fgSizer1->Add( m_envVarPathLabel, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT|wxRIGHT, 5 );
-	
-	m_envVarPath = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
-	m_envVarPath->SetMinSize( wxSize( 250,-1 ) );
-	
-	fgSizer1->Add( m_envVarPath, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 5 );
-	
-	m_selectPathButton = new wxButton( this, wxID_ANY, _("Browse"), wxDefaultPosition, wxDefaultSize, 0 );
-	fgSizer1->Add( m_selectPathButton, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT|wxRIGHT, 5 );
-	
-	
-	bSizerMain->Add( fgSizer1, 0, wxALL|wxEXPAND, 5 );
-	
-	
-	bSizerMain->Add( 0, 0, 1, wxEXPAND, 5 );
-	
-	m_staticline2 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
-	bSizerMain->Add( m_staticline2, 0, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 5 );
-	
-	m_sdbSizer2 = new wxStdDialogButtonSizer();
-	m_sdbSizer2OK = new wxButton( this, wxID_OK );
-	m_sdbSizer2->AddButton( m_sdbSizer2OK );
-	m_sdbSizer2Cancel = new wxButton( this, wxID_CANCEL );
-	m_sdbSizer2->AddButton( m_sdbSizer2Cancel );
-	m_sdbSizer2->Realize();
-	
-	bSizerMain->Add( m_sdbSizer2, 0, wxBOTTOM|wxLEFT|wxRIGHT|wxALIGN_RIGHT, 5 );
-	
-	
-	this->SetSizer( bSizerMain );
-	this->Layout();
-	bSizerMain->Fit( this );
-	
-	this->Centre( wxBOTH );
-	
-	// Connect Events
-	m_envVarName->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_ENV_VAR_SINGLE_BASE::onVarNameChange ), NULL, this );
-	m_buttonHelp->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ENV_VAR_SINGLE_BASE::onHelpClick ), NULL, this );
-	m_selectPathButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ENV_VAR_SINGLE_BASE::OnSelectPath ), NULL, this );
-}
-
-DIALOG_ENV_VAR_SINGLE_BASE::~DIALOG_ENV_VAR_SINGLE_BASE()
-{
-	// Disconnect Events
-	m_envVarName->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_ENV_VAR_SINGLE_BASE::onVarNameChange ), NULL, this );
-	m_buttonHelp->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ENV_VAR_SINGLE_BASE::onHelpClick ), NULL, this );
-	m_selectPathButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ENV_VAR_SINGLE_BASE::OnSelectPath ), NULL, this );
-	
-}
diff --git a/common/dialogs/dialog_env_var_config_base.fbp b/common/dialogs/dialog_env_var_config_base.fbp
deleted file mode 100644
index e695b4b20f..0000000000
--- a/common/dialogs/dialog_env_var_config_base.fbp
+++ /dev/null
@@ -1,1335 +0,0 @@
-<?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">dialog_env_var_config_base</property>
-        <property name="first_id">1000</property>
-        <property name="help_provider">none</property>
-        <property name="internationalize">1</property>
-        <property name="name">dialog_env_var_editor_base</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="Dialog" expanded="1">
-            <property name="aui_managed">0</property>
-            <property name="aui_manager_style">wxAUI_MGR_DEFAULT</property>
-            <property name="bg"></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"></property>
-            <property name="name">DIALOG_ENV_VAR_CONFIG_BASE</property>
-            <property name="pos"></property>
-            <property name="size">-1,-1</property>
-            <property name="style">wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>
-            <property name="subclass">DIALOG_SHIM; dialog_shim.h</property>
-            <property name="title">Environment Variable Configuration</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="OnAuiFindManager"></event>
-            <event name="OnAuiPaneButton"></event>
-            <event name="OnAuiPaneClose"></event>
-            <event name="OnAuiPaneMaximize"></event>
-            <event name="OnAuiPaneRestore"></event>
-            <event name="OnAuiRender"></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>
-            <object class="wxBoxSizer" expanded="1">
-                <property name="minimum_size"></property>
-                <property name="name">mainSizer</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</property>
-                    <property name="proportion">1</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|wxEXPAND</property>
-                            <property name="proportion">1</property>
-                            <object class="wxListCtrl" 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="min_size"></property>
-                                <property name="minimize_button">0</property>
-                                <property name="minimum_size"></property>
-                                <property name="moveable">1</property>
-                                <property name="name">m_pathList</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">wxLC_HRULES|wxLC_REPORT|wxLC_VRULES</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="OnListBeginDrag"></event>
-                                <event name="OnListBeginLabelEdit"></event>
-                                <event name="OnListBeginRDrag"></event>
-                                <event name="OnListCacheHint"></event>
-                                <event name="OnListColBeginDrag"></event>
-                                <event name="OnListColClick"></event>
-                                <event name="OnListColDragging"></event>
-                                <event name="OnListColEndDrag"></event>
-                                <event name="OnListColRightClick"></event>
-                                <event name="OnListDeleteAllItems"></event>
-                                <event name="OnListDeleteItem"></event>
-                                <event name="OnListEndLabelEdit"></event>
-                                <event name="OnListInsertItem"></event>
-                                <event name="OnListItemActivated">OnPathActivated</event>
-                                <event name="OnListItemDeselected"></event>
-                                <event name="OnListItemFocused"></event>
-                                <event name="OnListItemMiddleClick"></event>
-                                <event name="OnListItemRightClick"></event>
-                                <event name="OnListItemSelected">OnPathSelected</event>
-                                <event name="OnListKeyDown"></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">wxEXPAND</property>
-                            <property name="proportion">0</property>
-                            <object class="wxBoxSizer" expanded="0">
-                                <property name="minimum_size"></property>
-                                <property name="name">bSizer6</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="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">ID_BUTTON_ADD_PATH</property>
-                                        <property name="label">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_addPathButton</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">Add path prefix</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">OnAddButton</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">wxBOTTOM|wxLEFT|wxRIGHT</property>
-                                    <property name="proportion">0</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">ID_BUTTON_EDIT_PATH</property>
-                                        <property name="label">Edit</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_editPathButton</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">Edit selected path prefix</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">OnEditButton</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">wxBOTTOM|wxLEFT|wxRIGHT</property>
-                                    <property name="proportion">0</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">ID_BUTTON_DELETE_PATH</property>
-                                        <property name="label">Remove</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_deletePathButton</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">Remove selected path prefix</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">OnRemoveButton</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">wxEXPAND</property>
-                                    <property name="proportion">1</property>
-                                    <object class="spacer" expanded="0">
-                                        <property name="height">0</property>
-                                        <property name="permission">protected</property>
-                                        <property name="width">0</property>
-                                    </object>
-                                </object>
-                            </object>
-                        </object>
-                    </object>
-                </object>
-                <object class="sizeritem" expanded="1">
-                    <property name="border">5</property>
-                    <property name="flag">wxEXPAND | wxALL</property>
-                    <property name="proportion">0</property>
-                    <object class="wxStaticLine" 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="min_size"></property>
-                        <property name="minimize_button">0</property>
-                        <property name="minimum_size"></property>
-                        <property name="moveable">1</property>
-                        <property name="name">m_staticline1</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">wxLI_HORIZONTAL</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">5</property>
-                    <property name="flag">wxBOTTOM|wxALIGN_RIGHT</property>
-                    <property name="proportion">0</property>
-                    <object class="wxStdDialogButtonSizer" expanded="1">
-                        <property name="Apply">0</property>
-                        <property name="Cancel">1</property>
-                        <property name="ContextHelp">0</property>
-                        <property name="Help">1</property>
-                        <property name="No">0</property>
-                        <property name="OK">1</property>
-                        <property name="Save">0</property>
-                        <property name="Yes">0</property>
-                        <property name="minimum_size"></property>
-                        <property name="name">m_sdbSizer</property>
-                        <property name="permission">protected</property>
-                        <event name="OnApplyButtonClick"></event>
-                        <event name="OnCancelButtonClick"></event>
-                        <event name="OnContextHelpButtonClick"></event>
-                        <event name="OnHelpButtonClick">OnHelpButton</event>
-                        <event name="OnNoButtonClick"></event>
-                        <event name="OnOKButtonClick"></event>
-                        <event name="OnSaveButtonClick"></event>
-                        <event name="OnYesButtonClick"></event>
-                    </object>
-                </object>
-            </object>
-        </object>
-        <object class="Dialog" expanded="1">
-            <property name="aui_managed">0</property>
-            <property name="aui_manager_style">wxAUI_MGR_DEFAULT</property>
-            <property name="bg"></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"></property>
-            <property name="name">DIALOG_ENV_VAR_SINGLE_BASE</property>
-            <property name="pos"></property>
-            <property name="size">-1,-1</property>
-            <property name="style">wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>
-            <property name="subclass">DIALOG_SHIM; dialog_shim.h</property>
-            <property name="title">Edit Environment Variable</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="OnAuiFindManager"></event>
-            <event name="OnAuiPaneButton"></event>
-            <event name="OnAuiPaneClose"></event>
-            <event name="OnAuiPaneMaximize"></event>
-            <event name="OnAuiPaneRestore"></event>
-            <event name="OnAuiRender"></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>
-            <object class="wxBoxSizer" expanded="1">
-                <property name="minimum_size"></property>
-                <property name="name">bSizerMain</property>
-                <property name="orient">wxVERTICAL</property>
-                <property name="permission">none</property>
-                <object class="sizeritem" expanded="1">
-                    <property name="border">5</property>
-                    <property name="flag">wxALL|wxEXPAND</property>
-                    <property name="proportion">0</property>
-                    <object class="wxFlexGridSizer" expanded="1">
-                        <property name="cols">3</property>
-                        <property name="flexible_direction">wxBOTH</property>
-                        <property name="growablecols">1</property>
-                        <property name="growablerows"></property>
-                        <property name="hgap">0</property>
-                        <property name="minimum_size"></property>
-                        <property name="name">fgSizer1</property>
-                        <property name="non_flexible_grow_mode">wxFLEX_GROWMODE_SPECIFIED</property>
-                        <property name="permission">none</property>
-                        <property name="rows">0</property>
-                        <property name="vgap">0</property>
-                        <object class="sizeritem" expanded="1">
-                            <property name="border">5</property>
-                            <property name="flag">wxALIGN_CENTER_VERTICAL|wxALL</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">Name:</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_envVarNameLabel</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">wxALIGN_CENTER_VERTICAL|wxALL|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_envVarName</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">onVarNameChange</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">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">Help</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_buttonHelp</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">onHelpClick</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">wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT|wxRIGHT</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">Value:</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_envVarPathLabel</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">wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT</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">250,-1</property>
-                                <property name="moveable">1</property>
-                                <property name="name">m_envVarPath</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 class="sizeritem" expanded="1">
-                            <property name="border">5</property>
-                            <property name="flag">wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT|wxRIGHT</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_selectPathButton</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">OnSelectPath</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 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">wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT</property>
-                    <property name="proportion">0</property>
-                    <object class="wxStaticLine" 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="min_size"></property>
-                        <property name="minimize_button">0</property>
-                        <property name="minimum_size"></property>
-                        <property name="moveable">1</property>
-                        <property name="name">m_staticline2</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">wxLI_HORIZONTAL</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">5</property>
-                    <property name="flag">wxBOTTOM|wxLEFT|wxRIGHT|wxALIGN_RIGHT</property>
-                    <property name="proportion">0</property>
-                    <object class="wxStdDialogButtonSizer" expanded="1">
-                        <property name="Apply">0</property>
-                        <property name="Cancel">1</property>
-                        <property name="ContextHelp">0</property>
-                        <property name="Help">0</property>
-                        <property name="No">0</property>
-                        <property name="OK">1</property>
-                        <property name="Save">0</property>
-                        <property name="Yes">0</property>
-                        <property name="minimum_size"></property>
-                        <property name="name">m_sdbSizer2</property>
-                        <property name="permission">protected</property>
-                        <event name="OnApplyButtonClick"></event>
-                        <event name="OnCancelButtonClick"></event>
-                        <event name="OnContextHelpButtonClick"></event>
-                        <event name="OnHelpButtonClick"></event>
-                        <event name="OnNoButtonClick"></event>
-                        <event name="OnOKButtonClick"></event>
-                        <event name="OnSaveButtonClick"></event>
-                        <event name="OnYesButtonClick"></event>
-                    </object>
-                </object>
-            </object>
-        </object>
-    </object>
-</wxFormBuilder_Project>
diff --git a/common/dialogs/dialog_env_var_config_base.h b/common/dialogs/dialog_env_var_config_base.h
deleted file mode 100644
index 7ef5f5db36..0000000000
--- a/common/dialogs/dialog_env_var_config_base.h
+++ /dev/null
@@ -1,102 +0,0 @@
-///////////////////////////////////////////////////////////////////////////
-// C++ code generated with wxFormBuilder (version Aug  4 2017)
-// http://www.wxformbuilder.org/
-//
-// PLEASE DO "NOT" EDIT THIS FILE!
-///////////////////////////////////////////////////////////////////////////
-
-#ifndef __DIALOG_ENV_VAR_CONFIG_BASE_H__
-#define __DIALOG_ENV_VAR_CONFIG_BASE_H__
-
-#include <wx/artprov.h>
-#include <wx/xrc/xmlres.h>
-#include <wx/intl.h>
-class DIALOG_SHIM;
-
-#include "dialog_shim.h"
-#include <wx/listctrl.h>
-#include <wx/gdicmn.h>
-#include <wx/font.h>
-#include <wx/colour.h>
-#include <wx/settings.h>
-#include <wx/string.h>
-#include <wx/button.h>
-#include <wx/sizer.h>
-#include <wx/statline.h>
-#include <wx/dialog.h>
-#include <wx/stattext.h>
-#include <wx/textctrl.h>
-
-///////////////////////////////////////////////////////////////////////////
-
-#define ID_BUTTON_ADD_PATH 1000
-#define ID_BUTTON_EDIT_PATH 1001
-#define ID_BUTTON_DELETE_PATH 1002
-
-///////////////////////////////////////////////////////////////////////////////
-/// Class DIALOG_ENV_VAR_CONFIG_BASE
-///////////////////////////////////////////////////////////////////////////////
-class DIALOG_ENV_VAR_CONFIG_BASE : public DIALOG_SHIM
-{
-	private:
-	
-	protected:
-		wxListCtrl* m_pathList;
-		wxButton* m_addPathButton;
-		wxButton* m_editPathButton;
-		wxButton* m_deletePathButton;
-		wxStaticLine* m_staticline1;
-		wxStdDialogButtonSizer* m_sdbSizer;
-		wxButton* m_sdbSizerOK;
-		wxButton* m_sdbSizerCancel;
-		wxButton* m_sdbSizerHelp;
-		
-		// Virtual event handlers, overide them in your derived class
-		virtual void OnPathActivated( wxListEvent& event ) { event.Skip(); }
-		virtual void OnPathSelected( wxListEvent& event ) { event.Skip(); }
-		virtual void OnAddButton( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnEditButton( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnRemoveButton( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnHelpButton( wxCommandEvent& event ) { event.Skip(); }
-		
-	
-	public:
-		
-		DIALOG_ENV_VAR_CONFIG_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Environment Variable Configuration"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER ); 
-		~DIALOG_ENV_VAR_CONFIG_BASE();
-	
-};
-
-///////////////////////////////////////////////////////////////////////////////
-/// Class DIALOG_ENV_VAR_SINGLE_BASE
-///////////////////////////////////////////////////////////////////////////////
-class DIALOG_ENV_VAR_SINGLE_BASE : public DIALOG_SHIM
-{
-	private:
-	
-	protected:
-		wxStaticText* m_envVarNameLabel;
-		wxTextCtrl* m_envVarName;
-		wxButton* m_buttonHelp;
-		wxStaticText* m_envVarPathLabel;
-		wxTextCtrl* m_envVarPath;
-		wxButton* m_selectPathButton;
-		wxStaticLine* m_staticline2;
-		wxStdDialogButtonSizer* m_sdbSizer2;
-		wxButton* m_sdbSizer2OK;
-		wxButton* m_sdbSizer2Cancel;
-		
-		// Virtual event handlers, overide them in your derived class
-		virtual void onVarNameChange( wxCommandEvent& event ) { event.Skip(); }
-		virtual void onHelpClick( wxCommandEvent& event ) { event.Skip(); }
-		virtual void OnSelectPath( wxCommandEvent& event ) { event.Skip(); }
-		
-	
-	public:
-		
-		DIALOG_ENV_VAR_SINGLE_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Edit Environment Variable"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER ); 
-		~DIALOG_ENV_VAR_SINGLE_BASE();
-	
-};
-
-#endif //__DIALOG_ENV_VAR_CONFIG_BASE_H__
diff --git a/3d-viewer/3d_cache/3d_filename_resolver.cpp b/common/filename_resolver.cpp
similarity index 91%
rename from 3d-viewer/3d_cache/3d_filename_resolver.cpp
rename to common/filename_resolver.cpp
index 0a00c9c4c8..2e6b7ec304 100644
--- a/3d-viewer/3d_cache/3d_filename_resolver.cpp
+++ b/common/filename_resolver.cpp
@@ -22,7 +22,6 @@
  */
 
 #include <sstream>
-#include <cstring>
 #include <fstream>
 #include <sstream>
 #include <wx/filename.h>
@@ -32,11 +31,11 @@
 #include <trace_helpers.h>
 
 #include "common.h"
-#include "3d_filename_resolver.h"
+#include "filename_resolver.h"
 
 // configuration file version
 #define CFGFILE_VERSION 1
-#define S3D_RESOLVER_CONFIG wxT( "3Dresolver.cfg" )
+#define RESOLVER_CONFIG wxT( "3Dresolver.cfg" )
 
 // flag bits used to track different one-off messages to users
 #define ERRFLG_ALIAS    (1)
@@ -45,19 +44,19 @@
 
 #define MASK_3D_RESOLVER "3D_RESOLVER"
 
-static wxCriticalSection lock3D_resolver;
+static wxCriticalSection lock_resolver;
 
 static bool getHollerith( const std::string& aString, size_t& aIndex, wxString& aResult );
 
 
-S3D_FILENAME_RESOLVER::S3D_FILENAME_RESOLVER()
+FILENAME_RESOLVER::FILENAME_RESOLVER()
 {
     m_errflags = 0;
     m_pgm = NULL;
 }
 
 
-bool S3D_FILENAME_RESOLVER::Set3DConfigDir( const wxString& aConfigDir )
+bool FILENAME_RESOLVER::Set3DConfigDir( const wxString& aConfigDir )
 {
     if( aConfigDir.empty() )
         return false;
@@ -71,7 +70,7 @@ bool S3D_FILENAME_RESOLVER::Set3DConfigDir( const wxString& aConfigDir )
 
     cfgdir.Normalize();
 
-    if( false == cfgdir.DirExists() )
+    if( !cfgdir.DirExists() )
         return false;
 
     m_ConfigDir = cfgdir.GetPath();
@@ -81,7 +80,7 @@ bool S3D_FILENAME_RESOLVER::Set3DConfigDir( const wxString& aConfigDir )
 }
 
 
-bool S3D_FILENAME_RESOLVER::SetProjectDir( const wxString& aProjDir, bool* flgChanged )
+bool FILENAME_RESOLVER::SetProjectDir( const wxString& aProjDir, bool* flgChanged )
 {
     if( aProjDir.empty() )
         return false;
@@ -95,7 +94,7 @@ bool S3D_FILENAME_RESOLVER::SetProjectDir( const wxString& aProjDir, bool* flgCh
 
     projdir.Normalize();
 
-    if( false == projdir.DirExists() )
+    if( !projdir.DirExists() )
         return false;
 
     m_curProjDir = projdir.GetPath();
@@ -105,7 +104,7 @@ bool S3D_FILENAME_RESOLVER::SetProjectDir( const wxString& aProjDir, bool* flgCh
 
     if( m_Paths.empty() )
     {
-        S3D_ALIAS al;
+        SEARCH_PATH al;
         al.m_alias = "${KIPRJMOD}";
         al.m_pathvar = "${KIPRJMOD}";
         al.m_pathexp = m_curProjDir;
@@ -145,28 +144,26 @@ bool S3D_FILENAME_RESOLVER::SetProjectDir( const wxString& aProjDir, bool* flgCh
 }
 
 
-wxString S3D_FILENAME_RESOLVER::GetProjectDir( void )
+wxString FILENAME_RESOLVER::GetProjectDir()
 {
     return m_curProjDir;
 }
 
 
-void S3D_FILENAME_RESOLVER::SetProgramBase( PGM_BASE* aBase )
+void FILENAME_RESOLVER::SetProgramBase( PGM_BASE* aBase )
 {
     m_pgm = aBase;
 
-    if( NULL == m_pgm || m_Paths.empty() )
+    if( !m_pgm || m_Paths.empty() )
         return;
 
     // recreate the path list
     m_Paths.clear();
     createPathList();
-
-    return;
 }
 
 
-bool S3D_FILENAME_RESOLVER::createPathList( void )
+bool FILENAME_RESOLVER::createPathList()
 {
     if( !m_Paths.empty() )
         return true;
@@ -177,7 +174,7 @@ bool S3D_FILENAME_RESOLVER::createPathList( void )
     // we cannot set a sensible default so we use an empty string.
     // the user may change this later with a call to SetProjectDir()
 
-    S3D_ALIAS lpath;
+    SEARCH_PATH lpath;
     lpath.m_alias = "${KIPRJMOD}";
     lpath.m_pathvar = "${KIPRJMOD}";
     lpath.m_pathexp = m_curProjDir;
@@ -221,8 +218,8 @@ bool S3D_FILENAME_RESOLVER::createPathList( void )
 
 #ifdef DEBUG
     wxLogTrace( MASK_3D_RESOLVER, " * [3D model] search paths:\n" );
-    std::list< S3D_ALIAS >::const_iterator sPL = m_Paths.begin();
-    std::list< S3D_ALIAS >::const_iterator ePL = m_Paths.end();
+    std::list< SEARCH_PATH >::const_iterator sPL = m_Paths.begin();
+    std::list< SEARCH_PATH >::const_iterator ePL = m_Paths.end();
 
     while( sPL != ePL )
     {
@@ -236,7 +233,7 @@ bool S3D_FILENAME_RESOLVER::createPathList( void )
 }
 
 
-bool S3D_FILENAME_RESOLVER::UpdatePathList( std::vector< S3D_ALIAS >& aPathList )
+bool FILENAME_RESOLVER::UpdatePathList( std::vector< SEARCH_PATH >& aPathList )
 {
     wxUniChar envMarker( '$' );
 
@@ -252,9 +249,9 @@ bool S3D_FILENAME_RESOLVER::UpdatePathList( std::vector< S3D_ALIAS >& aPathList
 }
 
 
-wxString S3D_FILENAME_RESOLVER::ResolvePath( const wxString& aFileName )
+wxString FILENAME_RESOLVER::ResolvePath( const wxString& aFileName )
 {
-    wxCriticalSectionLocker lock( lock3D_resolver );
+    wxCriticalSectionLocker lock( lock_resolver );
 
     if( aFileName.empty() )
         return wxEmptyString;
@@ -329,8 +326,8 @@ wxString S3D_FILENAME_RESOLVER::ResolvePath( const wxString& aFileName )
     // a. an aliased shortened name or
     // b. cannot be determined
 
-    std::list< S3D_ALIAS >::const_iterator sPL = m_Paths.begin();
-    std::list< S3D_ALIAS >::const_iterator ePL = m_Paths.end();
+    std::list< SEARCH_PATH >::const_iterator sPL = m_Paths.begin();
+    std::list< SEARCH_PATH >::const_iterator ePL = m_Paths.end();
 
     // check the path relative to the current project directory;
     // note: this is not necessarily the same as the current working
@@ -438,14 +435,14 @@ wxString S3D_FILENAME_RESOLVER::ResolvePath( const wxString& aFileName )
 }
 
 
-bool S3D_FILENAME_RESOLVER::addPath( const S3D_ALIAS& aPath )
+bool FILENAME_RESOLVER::addPath( const SEARCH_PATH& aPath )
 {
     if( aPath.m_alias.empty() || aPath.m_pathvar.empty() )
         return false;
 
-    wxCriticalSectionLocker lock( lock3D_resolver );
+    wxCriticalSectionLocker lock( lock_resolver );
 
-    S3D_ALIAS tpath = aPath;
+    SEARCH_PATH tpath = aPath;
 
     #ifdef _WIN32
     while( tpath.m_pathvar.EndsWith( wxT( "\\" ) ) )
@@ -492,8 +489,8 @@ bool S3D_FILENAME_RESOLVER::addPath( const S3D_ALIAS& aPath )
     }
 
     wxString pname = path.GetPath();
-    std::list< S3D_ALIAS >::iterator sPL = m_Paths.begin();
-    std::list< S3D_ALIAS >::iterator ePL = m_Paths.end();
+    std::list< SEARCH_PATH >::iterator sPL = m_Paths.begin();
+    std::list< SEARCH_PATH >::iterator ePL = m_Paths.end();
 
     while( sPL != ePL )
     {
@@ -520,7 +517,7 @@ bool S3D_FILENAME_RESOLVER::addPath( const S3D_ALIAS& aPath )
 }
 
 
-bool S3D_FILENAME_RESOLVER::readPathList( void )
+bool FILENAME_RESOLVER::readPathList()
 {
     if( m_ConfigDir.empty() )
     {
@@ -532,7 +529,7 @@ bool S3D_FILENAME_RESOLVER::readPathList( void )
         return false;
     }
 
-    wxFileName cfgpath( m_ConfigDir, S3D_RESOLVER_CONFIG );
+    wxFileName cfgpath( m_ConfigDir, RESOLVER_CONFIG );
     cfgpath.Normalize();
     wxString cfgname = cfgpath.GetFullPath();
 
@@ -565,7 +562,7 @@ bool S3D_FILENAME_RESOLVER::readPathList( void )
     }
 
     int lineno = 0;
-    S3D_ALIAS al;
+    SEARCH_PATH al;
     size_t idx;
     int vnum = 0;           // version number
 
@@ -619,14 +616,11 @@ bool S3D_FILENAME_RESOLVER::readPathList( void )
     if( vnum < CFGFILE_VERSION )
         writePathList();
 
-    if( m_Paths.size() != nitems )
-        return true;
-
-    return false;
+    return( m_Paths.size() != nitems );
 }
 
 
-bool S3D_FILENAME_RESOLVER::writePathList( void )
+bool FILENAME_RESOLVER::writePathList()
 {
     if( m_ConfigDir.empty() )
     {
@@ -641,13 +635,13 @@ bool S3D_FILENAME_RESOLVER::writePathList( void )
     }
 
     // skip all ${ENV_VAR} alias names
-    std::list< S3D_ALIAS >::const_iterator sPL = m_Paths.begin();
-    std::list< S3D_ALIAS >::const_iterator ePL = m_Paths.end();
+    std::list< SEARCH_PATH >::const_iterator sPL = m_Paths.begin();
+    std::list< SEARCH_PATH >::const_iterator ePL = m_Paths.end();
 
     while( sPL != ePL && ( sPL->m_alias.StartsWith( "${" ) || sPL->m_alias.StartsWith( "$(" ) ) )
         ++sPL;
 
-    wxFileName cfgpath( m_ConfigDir, S3D_RESOLVER_CONFIG );
+    wxFileName cfgpath( m_ConfigDir, RESOLVER_CONFIG );
     wxString cfgname = cfgpath.GetFullPath();
     std::ofstream cfgFile;
 
@@ -694,7 +688,7 @@ bool S3D_FILENAME_RESOLVER::writePathList( void )
 }
 
 
-void S3D_FILENAME_RESOLVER::checkEnvVarPath( const wxString& aPath )
+void FILENAME_RESOLVER::checkEnvVarPath( const wxString& aPath )
 {
     bool useParen = false;
 
@@ -731,7 +725,7 @@ void S3D_FILENAME_RESOLVER::checkEnvVarPath( const wxString& aPath )
         ++sPL;
     }
 
-    S3D_ALIAS lpath;
+    SEARCH_PATH lpath;
     lpath.m_alias = envar;
     lpath.m_pathvar = lpath.m_alias;
     wxFileName tmpFN;
@@ -756,20 +750,19 @@ void S3D_FILENAME_RESOLVER::checkEnvVarPath( const wxString& aPath )
         return;
 
     m_Paths.insert( sPL, lpath );
-    return;
 }
 
 
-wxString S3D_FILENAME_RESOLVER::ShortenPath( const wxString& aFullPathName )
+wxString FILENAME_RESOLVER::ShortenPath( const wxString& aFullPathName )
 {
     wxString fname = aFullPathName;
 
     if( m_Paths.empty() )
         createPathList();
 
-    wxCriticalSectionLocker lock( lock3D_resolver );
-    std::list< S3D_ALIAS >::const_iterator sL = m_Paths.begin();
-    std::list< S3D_ALIAS >::const_iterator eL = m_Paths.end();
+    wxCriticalSectionLocker lock( lock_resolver );
+    std::list< SEARCH_PATH >::const_iterator sL = m_Paths.begin();
+    std::list< SEARCH_PATH >::const_iterator eL = m_Paths.end();
     size_t idx;
 
     while( sL != eL )
@@ -807,7 +800,7 @@ wxString S3D_FILENAME_RESOLVER::ShortenPath( const wxString& aFullPathName )
 
         idx = fname.find( fps );
 
-        if( std::string::npos != idx && 0 == idx  )
+        if( idx == 0 )
         {
             fname = fname.substr( fps.size() );
 
@@ -851,13 +844,13 @@ wxString S3D_FILENAME_RESOLVER::ShortenPath( const wxString& aFullPathName )
 
 
 
-const std::list< S3D_ALIAS >* S3D_FILENAME_RESOLVER::GetPaths( void )
+const std::list< SEARCH_PATH >* FILENAME_RESOLVER::GetPaths()
 {
     return &m_Paths;
 }
 
 
-bool S3D_FILENAME_RESOLVER::SplitAlias( const wxString& aFileName,
+bool FILENAME_RESOLVER::SplitAlias( const wxString& aFileName,
     wxString& anAlias, wxString& aRelPath )
 {
     anAlias.clear();
@@ -976,7 +969,7 @@ static bool getHollerith( const std::string& aString, size_t& aIndex, wxString&
 }
 
 
-bool S3D_FILENAME_RESOLVER::ValidateFileName( const wxString& aFileName, bool& hasAlias )
+bool FILENAME_RESOLVER::ValidateFileName( const wxString& aFileName, bool& hasAlias )
 {
     // Rules:
     // 1. The generic form of an aliased 3D relative path is:
@@ -1034,7 +1027,7 @@ bool S3D_FILENAME_RESOLVER::ValidateFileName( const wxString& aFileName, bool& h
 }
 
 
-bool S3D_FILENAME_RESOLVER::GetKicadPaths( std::list< wxString >& paths )
+bool FILENAME_RESOLVER::GetKicadPaths( std::list< wxString >& paths )
 {
     paths.clear();
 
diff --git a/common/pgm_base.cpp b/common/pgm_base.cpp
index 23df10a564..3a1344da15 100644
--- a/common/pgm_base.cpp
+++ b/common/pgm_base.cpp
@@ -50,7 +50,7 @@
 #include <gestfich.h>
 #include <menus_helpers.h>
 #include <confirm.h>
-#include <dialog_env_var_config.h>
+#include <dialog_configure_paths.h>
 #include <lockfile.h>
 #include <systemdirsappend.h>
 
@@ -517,7 +517,7 @@ bool PGM_BASE::InitPgm()
     else
     {
         tmpFileName.AppendDir( wxT( "packages3d" ) );
-        envVarItem.SetDefinedExternally( false );
+        envVarItem.SetDefinedExternally( true );
     }
 
     envVarItem.SetValue( tmpFileName.GetFullPath() );
@@ -975,40 +975,8 @@ void PGM_BASE::SetLocalEnvVariables( const ENV_VAR_MAP& aEnvVarMap )
 }
 
 
-void PGM_BASE::ConfigurePaths( wxWindow* aParent )
+void PGM_BASE::ConfigurePaths( wxWindow* aParent, FILENAME_RESOLVER* aResolver )
 {
-    DIALOG_ENV_VAR_CONFIG dlg_envvars( aParent, GetLocalEnvVariables() );
-
-    if( dlg_envvars.ShowModal() == wxID_CANCEL )
-        return;
-
-    ENV_VAR_MAP envVarMap = dlg_envvars.GetEnvVarMap();
-
-    for( ENV_VAR_MAP_ITER it = envVarMap.begin(); it != envVarMap.end(); ++it )
-    {
-        wxLogTrace( traceEnvVars, wxT( "Environment variable %s=%s defined externally = %d" ),
-                    GetChars( it->first ), GetChars( it->second.GetValue() ),
-                    it->second.GetDefinedExternally() );
-    }
-
-    // If any of the environment variables are defined externally, warn the user that the
-    // next time kicad is run that the externally defined variables will be used instead of
-    // the user's settings.  This is by design.
-    if( dlg_envvars.ExternalDefsChanged() && m_show_env_var_dialog )
-    {
-        wxString msg1 = _( "Warning!  Some of paths you have configured have been defined \n"
-                           "externally to the running process and will be temporarily overwritten." );
-        wxString msg2 = _( "The next time KiCad is launched, any paths that have already\n"
-                           "been defined are honored and any settings defined in the path\n"
-                           "configuration dialog are ignored.  If you did not intend for this\n"
-                           "behavior, either rename any conflicting entries or remove the\n"
-                           "external environment variable definition(s) from your system." );
-        wxRichMessageDialog dlg( aParent, msg1, _( "Warning" ), wxOK | wxCENTRE );
-        dlg.ShowDetailedText( msg2 );
-        dlg.ShowCheckBox( _( "Do not show this message again." ) );
-        dlg.ShowModal();
-        m_show_env_var_dialog = !dlg.IsCheckBoxChecked();
-    }
-
-    SetLocalEnvVariables( dlg_envvars.GetEnvVarMap() );
+    DIALOG_CONFIGURE_PATHS dlg( aParent, aResolver );
+    dlg.ShowModal();
 }
diff --git a/cvpcb/cvpcb_mainframe.cpp b/cvpcb/cvpcb_mainframe.cpp
index dc65c0a530..31d612af9b 100644
--- a/cvpcb/cvpcb_mainframe.cpp
+++ b/cvpcb/cvpcb_mainframe.cpp
@@ -41,6 +41,7 @@
 #include <netlist_reader.h>
 #include <bitmaps.h>
 #include <widgets/progress_reporter.h>
+#include <3d_cache/3d_cache.h>
 
 #include <cvpcb_mainframe.h>
 #include <cvpcb.h>
@@ -974,7 +975,7 @@ void CVPCB_MAINFRAME::SetStatusText( const wxString& aText, int aNumber )
 
 void CVPCB_MAINFRAME::OnConfigurePaths( wxCommandEvent& aEvent )
 {
-    Pgm().ConfigurePaths( this );
+    Pgm().ConfigurePaths( this, Prj().Get3DCacheManager()->GetResolver() );
 }
 
 
diff --git a/eeschema/sch_base_frame.cpp b/eeschema/sch_base_frame.cpp
index e91eb576a5..d72fa995f4 100644
--- a/eeschema/sch_base_frame.cpp
+++ b/eeschema/sch_base_frame.cpp
@@ -263,7 +263,7 @@ void SCH_BASE_FRAME::UpdateStatusBar()
 
 void SCH_BASE_FRAME::OnConfigurePaths( wxCommandEvent& aEvent )
 {
-    Pgm().ConfigurePaths( this );
+    Pgm().ConfigurePaths( this, nullptr );
 }
 
 
diff --git a/include/dialog_configure_paths.h b/include/dialog_configure_paths.h
new file mode 100644
index 0000000000..bf12896eb9
--- /dev/null
+++ b/include/dialog_configure_paths.h
@@ -0,0 +1,87 @@
+/*
+ * This program source code file is part of KICAD, a free EDA CAD application.
+ *
+ * Copyright (C) 2015 Wayne Stambaugh <stambaughw@gmail.com>
+ * Copyright (C) 2015-2018 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
+ */
+
+#ifndef _DIALOG_CONFIGURE_PATHS_H_
+#define _DIALOG_CONFIGURE_PATHS_H_
+
+#include <../common/dialogs/dialog_configure_paths_base.h>
+
+#include <wx/valtext.h>
+#include <pgm_base.h>
+
+
+class EDA_DRAW_FRAME;
+class FILENAME_RESOLVER;
+
+/**
+ * DIALOG_CONFIGURE_PATHS class declaration
+ */
+
+class DIALOG_CONFIGURE_PATHS: public DIALOG_CONFIGURE_PATHS_BASE
+{
+public:
+    DIALOG_CONFIGURE_PATHS(  wxWindow* aParent, FILENAME_RESOLVER* aResolver  );
+    virtual ~DIALOG_CONFIGURE_PATHS();
+
+    bool TransferDataToWindow() override;
+    bool TransferDataFromWindow() override;
+
+protected:
+    // Various button callbacks
+    virtual void OnGridCellRightClick( wxGridEvent& event ) override;
+    virtual void OnGridSize( wxSizeEvent& event ) override;
+    virtual void OnUpdateUI( wxUpdateUIEvent& event ) override;
+    virtual void OnGridCellChanging( wxGridEvent& event );
+    virtual void OnAddEnvVar( wxCommandEvent& event ) override;
+    virtual void OnRemoveEnvVar( wxCommandEvent& event ) override;
+    virtual void OnAddSearchPath( wxCommandEvent& event ) override;
+    virtual void OnDeleteSearchPath( wxCommandEvent& event ) override;
+    virtual void OnSearchPathMoveUp( wxCommandEvent& event ) override;
+    virtual void OnSearchPathMoveDown( wxCommandEvent& event ) override;
+    virtual void OnHelp( wxCommandEvent& event ) override;
+
+    void AppendEnvVar( const wxString& aName, const wxString& aPath,
+                       bool isExternal );
+    void AppendSearchPath( const wxString& aName, const wxString& aPath,
+                           const wxString& aDescription );
+    void AdjustGridColumns( int aWidth );
+
+    /**
+     * Determine if a particular ENV_VAR is protected
+     */
+    bool IsEnvVarImmutable( const wxString aEnvVar );
+
+private:
+    wxString               m_errorMsg;
+    wxGrid*                m_errorGrid;
+    int                    m_errorRow;
+    int                    m_errorCol;
+
+    FILENAME_RESOLVER* m_resolver;
+    wxString               m_curdir;
+    wxTextValidator        m_aliasValidator;
+
+};
+
+#endif    // _DIALOG_CONFIGURE_PATHS_H_
diff --git a/include/dialog_env_var_config.h b/include/dialog_env_var_config.h
deleted file mode 100644
index 783da0ad5c..0000000000
--- a/include/dialog_env_var_config.h
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * This program source code file is part of KICAD, a free EDA CAD application.
- *
- * Copyright (C) 2015 Wayne Stambaugh <stambaughw@gmail.com>
- * Copyright (C) 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
- */
-
-#ifndef _DIALOG_ENV_VAR_CONFIG_H_
-#define _DIALOG_ENV_VAR_CONFIG_H_
-
-class EDA_DRAW_FRAME;
-
-#include <../common/dialogs/dialog_env_var_config_base.h>
-
-#include <pgm_base.h>
-
-
-/**
- * DIALOG_ENV_VAR_CONFIG class declaration
- */
-
-class DIALOG_ENV_VAR_CONFIG: public DIALOG_ENV_VAR_CONFIG_BASE
-{
-private:
-    ENV_VAR_MAP  m_envVarMap;
-    bool         m_extDefsChanged = false;
-
-protected:
-
-    /**
-     * Update the displayed list of ENV_VAR paths
-     */
-    void PopulatePathList();
-
-    /**
-     * Edit the currently selected ENV_VAR entry
-     */
-    void EditSelectedEntry();
-
-    // Various button callbacks
-    virtual void OnAddButton( wxCommandEvent& event ) override;
-    virtual void OnEditButton( wxCommandEvent& event ) override;
-    virtual void OnRemoveButton( wxCommandEvent& event ) override;
-    virtual void OnHelpButton( wxCommandEvent& event ) override;
-
-    virtual void OnPathSelected( wxListEvent& event ) override;
-    virtual void OnPathActivated( wxListEvent& event ) override;
-
-    // Variable for keeping track of currently selected list index
-    unsigned int m_pathIndex = 0;
-
-    /**
-     * Extract the NAME and PATH data from the ENV_VAR at the provided index
-     * @param aIndex is the index to extract data from
-     * @return true if data was extracted else false
-     */
-    bool GetPathAtIndex( unsigned int aIndex, wxString& aEnvVar, wxString& aEnvPath );
-
-    /**
-     * Determine if a particular ENV_VAR is protected
-     * @param aEnvVar is the name of the ENV_VAR
-     */
-    bool IsEnvVarImmutable( const wxString aEnvVar );
-
-    /**
-     * Select the ENV_VAR at the provided index
-     */
-    void SelectListIndex( unsigned int aIndex );
-
-public:
-    DIALOG_ENV_VAR_CONFIG( wxWindow* parent, const ENV_VAR_MAP& aEnvVarMap );
-    virtual ~DIALOG_ENV_VAR_CONFIG() {}
-
-    bool TransferDataToWindow() override;
-    bool TransferDataFromWindow() override;
-
-    bool ExternalDefsChanged() const { return m_extDefsChanged; }
-
-    const ENV_VAR_MAP& GetEnvVarMap() const
-    {
-        return m_envVarMap;
-    }
-};
-
-#endif    // _DIALOG_ENV_VAR_CONFIG_H_
diff --git a/3d-viewer/3d_cache/3d_filename_resolver.h b/include/filename_resolver.h
similarity index 93%
rename from 3d-viewer/3d_cache/3d_filename_resolver.h
rename to include/filename_resolver.h
index 432bbb70cc..21bd9c833c 100644
--- a/3d-viewer/3d_cache/3d_filename_resolver.h
+++ b/include/filename_resolver.h
@@ -22,7 +22,7 @@
  */
 
 /**
- * @file 3d_filename_resolver.h
+ * @file filename_resolver.h
  * provides an extensible class to resolve 3D model paths. Initially
  * the legacy behavior will be implemented and an incomplete path
  * would be checked against the project directory or the KISYS3DMOD
@@ -30,18 +30,17 @@
  * paths may be specified.
  */
 
-#ifndef FILENAME_RESOLVER_3D_H
-#define FILENAME_RESOLVER_3D_H
+#ifndef FILENAME_RESOLVER_H
+#define FILENAME_RESOLVER_H
 
 #include <list>
 #include <map>
 #include <vector>
 #include <wx/string.h>
-#include "str_rsort.h"
 
 class PGM_BASE;
 
-struct S3D_ALIAS
+struct SEARCH_PATH
 {
     wxString m_alias;           // alias to the base path
     wxString m_pathvar;         // base path as stored in the config file
@@ -49,11 +48,11 @@ struct S3D_ALIAS
     wxString m_description;     // description of the aliased path
 };
 
-class S3D_FILENAME_RESOLVER
+class FILENAME_RESOLVER
 {
 private:
     wxString m_ConfigDir;           // 3D configuration directory
-    std::list< S3D_ALIAS > m_Paths; // list of base paths to search from
+    std::list< SEARCH_PATH > m_Paths; // list of base paths to search from
     int m_errflags;
     PGM_BASE* m_pgm;
     wxString m_curProjDir;
@@ -76,7 +75,7 @@ private:
      * @param aPath is the alias set to be checked and added
      * @return true if aPath is valid
      */
-    bool addPath( const S3D_ALIAS& aPath );
+    bool addPath( const SEARCH_PATH& aPath );
 
     /**
      * Function readPathList
@@ -105,7 +104,7 @@ private:
     void checkEnvVarPath( const wxString& aPath );
 
 public:
-    S3D_FILENAME_RESOLVER();
+    FILENAME_RESOLVER();
 
     /**
      * Function Set3DConfigDir
@@ -143,7 +142,7 @@ public:
      * clears the current path list and substitutes the given path
      * list, updating the path configuration file on success.
      */
-    bool UpdatePathList( std::vector< S3D_ALIAS >& aPathList );
+    bool UpdatePathList( std::vector< SEARCH_PATH >& aPathList );
 
     /**
      * Function ResolvePath
@@ -175,7 +174,7 @@ public:
      *
      * @return pointer to the internal path list
      */
-    const std::list< S3D_ALIAS >* GetPaths( void );
+    const std::list< SEARCH_PATH >* GetPaths( void );
 
     /**
      * Function SplitAlias
@@ -201,4 +200,4 @@ public:
     bool GetKicadPaths( std::list< wxString >& paths );
 };
 
-#endif  // FILENAME_RESOLVER_3D_H
+#endif  // FILENAME_RESOLVER_H
diff --git a/include/kicad_string.h b/include/kicad_string.h
index f8ffe1a8e3..e997aa2928 100644
--- a/include/kicad_string.h
+++ b/include/kicad_string.h
@@ -189,4 +189,52 @@ bool ReplaceIllegalFileNameChars( wxString& aName, int aReplaceChar = 0 );
 extern "C" char* strtok_r( char* str, const char* delim, char** nextp );
 #endif
 
+/**
+ * A helper for sorting strings from the rear.  Useful for things like 3d model names
+ * where they tend to be largely repititous at the front.
+ */
+struct rsort_wxString
+{
+    bool operator() (const wxString& strA, const wxString& strB ) const
+    {
+        wxString::const_reverse_iterator sA = strA.rbegin();
+        wxString::const_reverse_iterator eA = strA.rend();
+
+        wxString::const_reverse_iterator sB = strB.rbegin();
+        wxString::const_reverse_iterator eB = strB.rend();
+
+        if( strA.empty() )
+        {
+            if( strB.empty() )
+                return false;
+
+            // note: this rule implies that a null string is first in the sort order
+            return true;
+        }
+
+        if( strB.empty() )
+            return false;
+
+        while( sA != eA && sB != eB )
+        {
+            if( (*sA) == (*sB) )
+            {
+                ++sA;
+                ++sB;
+                continue;
+            }
+
+            if( (*sA) < (*sB) )
+                return true;
+            else
+                return false;
+        }
+
+        if( sB == eB )
+            return false;
+
+        return true;
+    }
+};
+
 #endif  // KICAD_STRING_H_
diff --git a/include/pgm_base.h b/include/pgm_base.h
index 0fa00f7be9..92a67cd176 100644
--- a/include/pgm_base.h
+++ b/include/pgm_base.h
@@ -43,6 +43,8 @@ class wxApp;
 class wxMenu;
 class wxWindow;
 
+class FILENAME_RESOLVER;
+
 
 // inter program module calling
 #define VTBL_ENTRY      virtual
@@ -279,11 +281,8 @@ public:
      * the footprint library table and the 3D model importer.  It was added to PGM_BASE because
      * it will eventually find use for in schematic I/O design so it needs to accessible by
      * almost every KiCad application.
-     *
-     * @param aParent - a pointer the wxWindow parent of the dialog or NULL to use the top level
-     *                  window.
      */
-    VTBL_ENTRY void ConfigurePaths( wxWindow* aParent = NULL );
+    VTBL_ENTRY void ConfigurePaths(  wxWindow* aParent, FILENAME_RESOLVER* aResolver  );
 
     /**
      * Function App
diff --git a/kicad/mainframe.cpp b/kicad/mainframe.cpp
index 899815b38f..4368bec1a5 100644
--- a/kicad/mainframe.cpp
+++ b/kicad/mainframe.cpp
@@ -588,5 +588,5 @@ void KICAD_MANAGER_FRAME::Process_Config( wxCommandEvent& event )
 
 void KICAD_MANAGER_FRAME::OnConfigurePaths( wxCommandEvent& aEvent )
 {
-    Pgm().ConfigurePaths( this );
+    Pgm().ConfigurePaths( this, nullptr );
 }
diff --git a/pcbnew/dialogs/dialog_edit_footprint_for_BoardEditor.cpp b/pcbnew/dialogs/dialog_edit_footprint_for_BoardEditor.cpp
index 15fbc3f563..a7c1fbf7f2 100644
--- a/pcbnew/dialogs/dialog_edit_footprint_for_BoardEditor.cpp
+++ b/pcbnew/dialogs/dialog_edit_footprint_for_BoardEditor.cpp
@@ -49,13 +49,13 @@
 #include <class_text_mod.h>
 #include <validators.h>
 #include <widgets/text_ctrl_eval.h>
+#include <filename_resolver.h>
 
 #include <dialog_edit_footprint_for_BoardEditor.h>
 #include <wildcards_and_files_ext.h>
 #include "3d_cache/dialogs/panel_prev_model.h"
 #include "3d_cache/dialogs/3d_cache_dialogs.h"
 #include "3d_cache/3d_cache.h"
-#include "3d_cache/3d_filename_resolver.h"
 
 #include <dialog_edit_footprint_text.h>
 
@@ -312,7 +312,7 @@ void DIALOG_FOOTPRINT_BOARD_EDITOR::InitModeditProperties()
     wxString origPath;
     wxString alias;
     wxString shortPath;
-    S3D_FILENAME_RESOLVER* res = Prj().Get3DCacheManager()->GetResolver();
+    FILENAME_RESOLVER* res = Prj().Get3DCacheManager()->GetResolver();
 
     while( sM != eM )
     {
@@ -498,7 +498,7 @@ void DIALOG_FOOTPRINT_BOARD_EDITOR::Edit3DShapeFileName()
     WX_TEXT_ENTRY_DIALOG dlg( this, wxEmptyString, wxEmptyString, filename );
 
     bool hasAlias;
-    S3D_FILENAME_RESOLVER* res = Prj().Get3DCacheManager()->GetResolver();
+    FILENAME_RESOLVER* res = Prj().Get3DCacheManager()->GetResolver();
 
     if( dlg.ShowModal() != wxID_OK )
         return;
@@ -573,7 +573,7 @@ void DIALOG_FOOTPRINT_BOARD_EDITOR::BrowseAndAdd3DShapeFile()
     prj.SetRString( PROJECT::VIEWER_3D_PATH, initialpath );
     sidx = wxString::Format( wxT( "%i" ), filter );
     prj.SetRString( PROJECT::VIEWER_3D_FILTER_INDEX, sidx );
-    S3D_FILENAME_RESOLVER* res = Prj().Get3DCacheManager()->GetResolver();
+    FILENAME_RESOLVER* res = Prj().Get3DCacheManager()->GetResolver();
     wxString alias;
     wxString shortPath;
     wxString filename = model.m_Filename;
diff --git a/pcbnew/dialogs/dialog_edit_footprint_for_fp_editor.cpp b/pcbnew/dialogs/dialog_edit_footprint_for_fp_editor.cpp
index 1031a96497..e7afd5266f 100644
--- a/pcbnew/dialogs/dialog_edit_footprint_for_fp_editor.cpp
+++ b/pcbnew/dialogs/dialog_edit_footprint_for_fp_editor.cpp
@@ -53,11 +53,11 @@
 #include <footprint_edit_frame.h>
 #include <dialog_edit_footprint_for_fp_editor.h>
 #include <wildcards_and_files_ext.h>
+#include "filename_resolver.h"
 #include <pgm_base.h>
 #include "3d_cache/dialogs/panel_prev_model.h"
 #include "3d_cache/dialogs/3d_cache_dialogs.h"
 #include "3d_cache/3d_cache.h"
-#include "3d_cache/3d_filename_resolver.h"
 
 #include <dialog_edit_footprint_text.h>
 
@@ -157,7 +157,7 @@ void DIALOG_FOOTPRINT_FP_EDITOR::initModeditProperties()
     wxString origPath;
     wxString alias;
     wxString shortPath;
-    S3D_FILENAME_RESOLVER* res = Prj().Get3DCacheManager()->GetResolver();
+    FILENAME_RESOLVER* res = Prj().Get3DCacheManager()->GetResolver();
 
     while( sM != eM )
     {
@@ -371,7 +371,7 @@ void DIALOG_FOOTPRINT_FP_EDITOR::Edit3DShapeFileName()
     WX_TEXT_ENTRY_DIALOG dlg( this, _( "Filepath:" ), _( "Edit 3D Shape Name" ), filename );
 
     bool hasAlias;
-    S3D_FILENAME_RESOLVER* res = Prj().Get3DCacheManager()->GetResolver();
+    FILENAME_RESOLVER* res = Prj().Get3DCacheManager()->GetResolver();
 
     if( dlg.ShowModal() != wxID_OK )
         return;
@@ -449,7 +449,7 @@ void DIALOG_FOOTPRINT_FP_EDITOR::BrowseAndAdd3DShapeFile()
     wxString origPath = model.m_Filename;
     wxString alias;
     wxString shortPath;
-    S3D_FILENAME_RESOLVER* res = Prj().Get3DCacheManager()->GetResolver();
+    FILENAME_RESOLVER* res = Prj().Get3DCacheManager()->GetResolver();
 
     if( res && res->SplitAlias( origPath, alias, shortPath ) )
     {
diff --git a/pcbnew/exporters/export_idf.cpp b/pcbnew/exporters/export_idf.cpp
index 647218e2a2..144313b0b8 100644
--- a/pcbnew/exporters/export_idf.cpp
+++ b/pcbnew/exporters/export_idf.cpp
@@ -39,7 +39,7 @@
 #include "project.h"
 #include "kiway.h"
 #include "3d_cache/3d_cache.h"
-#include "3d_cache/3d_filename_resolver.h"
+#include "filename_resolver.h"
 
 #ifndef PCBNEW
 #define PCBNEW                  // needed to define the right value of Millimeter2iu(x)
@@ -49,7 +49,7 @@
 // assumed default graphical line thickness: == 0.1mm
 #define LINE_WIDTH (Millimeter2iu( 0.1 ))
 
-static S3D_FILENAME_RESOLVER* resolver;
+static FILENAME_RESOLVER* resolver;
 
 /**
  * Function idf_export_outline
diff --git a/pcbnew/footprint_edit_frame.cpp b/pcbnew/footprint_edit_frame.cpp
index 0a16e8254b..2763619ebe 100644
--- a/pcbnew/footprint_edit_frame.cpp
+++ b/pcbnew/footprint_edit_frame.cpp
@@ -907,7 +907,7 @@ void FOOTPRINT_EDIT_FRAME::ProcessPreferences( wxCommandEvent& event )
 
 void FOOTPRINT_EDIT_FRAME::OnConfigurePaths( wxCommandEvent& aEvent )
 {
-    Pgm().ConfigurePaths( this );
+    Pgm().ConfigurePaths( this, Prj().Get3DCacheManager()->GetResolver() );
 }
 
 
diff --git a/pcbnew/pcb_edit_frame.cpp b/pcbnew/pcb_edit_frame.cpp
index f4898e7510..e4b091a401 100644
--- a/pcbnew/pcb_edit_frame.cpp
+++ b/pcbnew/pcb_edit_frame.cpp
@@ -1216,7 +1216,7 @@ bool PCB_EDIT_FRAME::SetCurrentNetClass( const wxString& aNetClassName )
 
 void PCB_EDIT_FRAME::OnConfigurePaths( wxCommandEvent& aEvent )
 {
-    Pgm().ConfigurePaths( this );
+    Pgm().ConfigurePaths( this, Prj().Get3DCacheManager()->GetResolver() );
 }
 
 
diff --git a/utils/kicad2step/pcb/3d_resolver.cpp b/utils/kicad2step/pcb/3d_resolver.cpp
index 864ab38b5c..d3468514ab 100644
--- a/utils/kicad2step/pcb/3d_resolver.cpp
+++ b/utils/kicad2step/pcb/3d_resolver.cpp
@@ -136,7 +136,7 @@ bool S3D_RESOLVER::SetProjectDir( const wxString& aProjDir, bool* flgChanged )
 
     if( m_Paths.empty() )
     {
-        S3D_ALIAS al;
+        SEARCH_PATH al;
         al.m_alias = "${KIPRJMOD}";
         al.m_pathvar = "${KIPRJMOD}";
         al.m_pathexp = m_curProjDir;
@@ -195,7 +195,7 @@ bool S3D_RESOLVER::createPathList( void )
     // we cannot set a sensible default so we use an empty string.
     // the user may change this later with a call to SetProjectDir()
 
-    S3D_ALIAS lpath;
+    SEARCH_PATH lpath;
     lpath.m_alias = "${KIPRJMOD}";
     lpath.m_pathvar = "${KIPRJMOD}";
     lpath.m_pathexp = m_curProjDir;
@@ -294,8 +294,8 @@ bool S3D_RESOLVER::createPathList( void )
 
 #ifdef DEBUG
     wxLogTrace( MASK_3D_RESOLVER, " * [3D model] search paths:\n" );
-    std::list< S3D_ALIAS >::const_iterator sPL = m_Paths.begin();
-    std::list< S3D_ALIAS >::const_iterator ePL = m_Paths.end();
+    std::list< SEARCH_PATH >::const_iterator sPL = m_Paths.begin();
+    std::list< SEARCH_PATH >::const_iterator ePL = m_Paths.end();
 
     while( sPL != ePL )
     {
@@ -308,7 +308,7 @@ bool S3D_RESOLVER::createPathList( void )
 }
 
 
-bool S3D_RESOLVER::UpdatePathList( std::vector< S3D_ALIAS >& aPathList )
+bool S3D_RESOLVER::UpdatePathList( std::vector< SEARCH_PATH >& aPathList )
 {
     wxUniChar envMarker( '$' );
 
@@ -408,8 +408,8 @@ wxString S3D_RESOLVER::ResolvePath( const wxString& aFileName )
     // a. an aliased shortened name or
     // b. cannot be determined
 
-    std::list< S3D_ALIAS >::const_iterator sPL = m_Paths.begin();
-    std::list< S3D_ALIAS >::const_iterator ePL = m_Paths.end();
+    std::list< SEARCH_PATH >::const_iterator sPL = m_Paths.begin();
+    std::list< SEARCH_PATH >::const_iterator ePL = m_Paths.end();
 
     // check the path relative to the current project directory;
     // note: this is not necessarily the same as the current working
@@ -519,14 +519,14 @@ wxString S3D_RESOLVER::ResolvePath( const wxString& aFileName )
 }
 
 
-bool S3D_RESOLVER::addPath( const S3D_ALIAS& aPath )
+bool S3D_RESOLVER::addPath( const SEARCH_PATH& aPath )
 {
     if( aPath.m_alias.empty() || aPath.m_pathvar.empty() )
         return false;
 
     wxCriticalSectionLocker lock( lock3D_resolver );
 
-    S3D_ALIAS tpath = aPath;
+    SEARCH_PATH tpath = aPath;
 
 #ifdef _WIN32
     while( tpath.m_pathvar.EndsWith( "\\" ) )
@@ -566,8 +566,8 @@ bool S3D_RESOLVER::addPath( const S3D_ALIAS& aPath )
     }
 
     wxString pname = path.GetPath();
-    std::list< S3D_ALIAS >::iterator sPL = m_Paths.begin();
-    std::list< S3D_ALIAS >::iterator ePL = m_Paths.end();
+    std::list< SEARCH_PATH >::iterator sPL = m_Paths.begin();
+    std::list< SEARCH_PATH >::iterator ePL = m_Paths.end();
 
     while( sPL != ePL )
     {
@@ -639,7 +639,7 @@ bool S3D_RESOLVER::readPathList( void )
     }
 
     int lineno = 0;
-    S3D_ALIAS al;
+    SEARCH_PATH al;
     size_t idx;
     int vnum = 0;           // version number
 
@@ -715,8 +715,8 @@ bool S3D_RESOLVER::writePathList( void )
     }
 
     // skip all ${ENV_VAR} alias names
-    std::list< S3D_ALIAS >::const_iterator sPL = m_Paths.begin();
-    std::list< S3D_ALIAS >::const_iterator ePL = m_Paths.end();
+    std::list< SEARCH_PATH >::const_iterator sPL = m_Paths.begin();
+    std::list< SEARCH_PATH >::const_iterator ePL = m_Paths.end();
 
     while( sPL != ePL && ( sPL->m_alias.StartsWith( "${" )
                            || sPL->m_alias.StartsWith( "$(" ) ) )
@@ -818,8 +818,8 @@ void S3D_RESOLVER::checkEnvVarPath( const wxString& aPath )
 
     // check if the alias exists; if not then add it to the end of the
     // env var section of the path list
-    std::list< S3D_ALIAS >::iterator sPL = m_Paths.begin();
-    std::list< S3D_ALIAS >::iterator ePL = m_Paths.end();
+    std::list< SEARCH_PATH >::iterator sPL = m_Paths.begin();
+    std::list< SEARCH_PATH >::iterator ePL = m_Paths.end();
 
     while( sPL != ePL )
     {
@@ -832,7 +832,7 @@ void S3D_RESOLVER::checkEnvVarPath( const wxString& aPath )
         ++sPL;
     }
 
-    S3D_ALIAS lpath;
+    SEARCH_PATH lpath;
     lpath.m_alias = envar;
     lpath.m_pathvar = lpath.m_alias;
     wxFileName tmpFN( lpath.m_alias, "" );
@@ -896,8 +896,8 @@ wxString S3D_RESOLVER::ShortenPath( const wxString& aFullPathName )
         createPathList();
 
     wxCriticalSectionLocker lock( lock3D_resolver );
-    std::list< S3D_ALIAS >::const_iterator sL = m_Paths.begin();
-    std::list< S3D_ALIAS >::const_iterator eL = m_Paths.end();
+    std::list< SEARCH_PATH >::const_iterator sL = m_Paths.begin();
+    std::list< SEARCH_PATH >::const_iterator eL = m_Paths.end();
     size_t idx;
 
     while( sL != eL )
@@ -960,7 +960,7 @@ wxString S3D_RESOLVER::ShortenPath( const wxString& aFullPathName )
 
 
 
-const std::list< S3D_ALIAS >* S3D_RESOLVER::GetPaths( void )
+const std::list< SEARCH_PATH >* S3D_RESOLVER::GetPaths( void )
 {
     return &m_Paths;
 }
diff --git a/utils/kicad2step/pcb/3d_resolver.h b/utils/kicad2step/pcb/3d_resolver.h
index 8959396e8e..e9ec2d1825 100644
--- a/utils/kicad2step/pcb/3d_resolver.h
+++ b/utils/kicad2step/pcb/3d_resolver.h
@@ -91,7 +91,7 @@ namespace S3D
 
 class KICADPCB;
 
-struct S3D_ALIAS
+struct SEARCH_PATH
 {
     wxString m_alias;           // alias to the base path
     wxString m_pathvar;         // base path as stored in the config file
@@ -103,7 +103,7 @@ class S3D_RESOLVER
 {
 private:
     wxString m_ConfigDir;           // 3D configuration directory
-    std::list< S3D_ALIAS > m_Paths; // list of base paths to search from
+    std::list< SEARCH_PATH > m_Paths; // list of base paths to search from
     // mapping of (short) file names to resolved names
     std::map< wxString, wxString, S3D::rsort_wxString > m_NameMap;
     int m_errflags;
@@ -129,7 +129,7 @@ private:
      * @param aPath is the alias set to be checked and added
      * @return true if aPath is valid
      */
-    bool addPath( const S3D_ALIAS& aPath );
+    bool addPath( const SEARCH_PATH& aPath );
 
     /**
      * Function readPathList
@@ -189,7 +189,7 @@ public:
      * clears the current path list and substitutes the given path
      * list, updating the path configuration file on success.
      */
-    bool UpdatePathList( std::vector< S3D_ALIAS >& aPathList );
+    bool UpdatePathList( std::vector< SEARCH_PATH >& aPathList );
 
     /**
      * Function ResolvePath
@@ -221,7 +221,7 @@ public:
      *
      * @return pointer to the internal path list
      */
-    const std::list< S3D_ALIAS >* GetPaths( void );
+    const std::list< SEARCH_PATH >* GetPaths( void );
 
     /**
      * Function SplitAlias