diff --git a/pcbnew/dialogs/wizard_3DShape_Libs_downloader.cpp b/pcbnew/dialogs/wizard_3DShape_Libs_downloader.cpp
index b79be80dfe..08e61ffc15 100644
--- a/pcbnew/dialogs/wizard_3DShape_Libs_downloader.cpp
+++ b/pcbnew/dialogs/wizard_3DShape_Libs_downloader.cpp
@@ -71,8 +71,9 @@ WIZARD_3DSHAPE_LIBS_DOWNLOADER::WIZARD_3DSHAPE_LIBS_DOWNLOADER( wxWindow* aParen
wxGetEnv( KISYS3DMOD, &default_path );
wxConfigBase* cfg = Pgm().CommonSettings();
- cfg->Read( KICAD_3DLIBS_LAST_DOWNLOAD_DIR, &m_lastGithubDownloadDirectory, default_path );
- setDownloadDir( m_lastGithubDownloadDirectory );
+ wxString tmp;
+ cfg->Read( KICAD_3DLIBS_LAST_DOWNLOAD_DIR, &tmp, default_path );
+ setDownloadDir( tmp );
// Restore the Github 3D shapes libs url
wxString githubUrl;
@@ -411,7 +412,7 @@ bool WIZARD_3DSHAPE_LIBS_DOWNLOADER::downloadOneLib( const wxString& aLibURL,
// Github gives the current url of files inside .3dshapes folders like:
// "https://github.com/KiCad/kicad-library/blob/master/modules/packages3d/Capacitors_SMD.3dshapes/C_0402.wrl"
- // which displays a html page showing the file in htmp form.
+ // which displays a html page showing the file in html form.
//
// the URL of the corresponding raw file is
// "https://github.com/KiCad/kicad-library/raw/master/modules/packages3d/Capacitors_SMD.3dshapes/C_0402.wrl"
@@ -420,7 +421,7 @@ bool WIZARD_3DSHAPE_LIBS_DOWNLOADER::downloadOneLib( const wxString& aLibURL,
// when trying to download raw files.
// "https://github.com/KiCad/kicad-library/raw/master/modules/packages3d/Capacitors_SMD.3dshapes/C_0402.wrl"
// would be redirected to:
- // "https://codeload.github.com/KiCad/kicad-library/master/modules/packages3d/Capacitors_SMD.3dshapes/C_0402.wrl"
+ // "https://raw.githubusercontent.com/KiCad/kicad-library/master/modules/packages3d/Capacitors_SMD.3dshapes/C_0402.wrl"
// So use raw.githubusercontent.com instead of github.com
// (and removes the "/raw" in path) speed up the downloads (x2 faster).
//
@@ -506,11 +507,31 @@ void WIZARD_3DSHAPE_LIBS_DOWNLOADER::updateGithubControls()
{
bool valid = wxFileName::IsDirWritable( getDownloadDir() );
- // Do not allow to go further unless there is a valid directory selected
- m_invalidDir->Show( !valid );
+ // Shows or not the warning text if the target 3d folder does not exist, or is not
+ // writable.
+ m_invalidDirWarningText->Show( !valid );
+ m_bitmapDirWarn->Show( !valid );
+
+ // If the dialog starts with m_invalidDirWarningText and m_bitmapDirWarn not shown
+ // the size and position of the sizer containing these widgets can be incorrect,
+ // until a wxSizeEvent is fired, and the widgets are not shown, or truncated,
+ // at least on Windows. So fire a dummy wxSizeEvent if the size looks bad
+ if( m_invalidDirWarningText->IsShown() && m_invalidDirWarningText->GetSize().x < 2 )
+ {
+ wxSizeEvent event( GetSize() );
+ wxPostEvent( this, event );
+ }
+
+ // Allow to go further only if there is a valid target directory selected
enableNext( valid );
}
+// Called when the local folder name is edited.
+void WIZARD_3DSHAPE_LIBS_DOWNLOADER::OnLocalFolderChange( wxCommandEvent& event )
+{
+ updateGithubControls();
+}
+
void WIZARD_3DSHAPE_LIBS_DOWNLOADER::setupDialogOrder()
{
diff --git a/pcbnew/dialogs/wizard_3DShape_Libs_downloader.h b/pcbnew/dialogs/wizard_3DShape_Libs_downloader.h
index e3cf00ddce..8ea13f1d36 100644
--- a/pcbnew/dialogs/wizard_3DShape_Libs_downloader.h
+++ b/pcbnew/dialogs/wizard_3DShape_Libs_downloader.h
@@ -74,6 +74,7 @@ public:
void OnCheckSaveCopy( wxCommandEvent& aEvent );
void OnDefault3DPathButtonClick( wxCommandEvent& event );
void OnGridLibReviewSize( wxSizeEvent& event );
+ void OnLocalFolderChange( wxCommandEvent& event );
protected:
// Initialization of wizard pages
@@ -140,7 +141,4 @@ protected:
wxWizardPageSimple* m_welcomeDlg;
wxWizardPageSimple* m_githubListDlg;
wxWizardPageSimple* m_reviewDlg;
-
- // path to the most recently used download directory from Github.
- wxString m_lastGithubDownloadDirectory;
};
diff --git a/pcbnew/dialogs/wizard_3DShape_Libs_downloader_base.cpp b/pcbnew/dialogs/wizard_3DShape_Libs_downloader_base.cpp
index efe08dc9ec..8cde4a3986 100644
--- a/pcbnew/dialogs/wizard_3DShape_Libs_downloader_base.cpp
+++ b/pcbnew/dialogs/wizard_3DShape_Libs_downloader_base.cpp
@@ -22,9 +22,9 @@ WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE::WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE( wxWind
wxBoxSizer* bSizer1;
bSizer1 = new wxBoxSizer( wxVERTICAL );
- m_staticText1 = new wxStaticText( m_wizPage1, wxID_ANY, _("Welcome to the 3D shape Libraries downloader Wizard!"), wxDefaultPosition, wxDefaultSize, 0 );
- m_staticText1->Wrap( -1 );
- bSizer1->Add( m_staticText1, 0, wxALL|wxEXPAND, 5 );
+ m_staticTextWelcome = new wxStaticText( m_wizPage1, wxID_ANY, _("Welcome to the 3D shape Libraries downloader Wizard!"), wxDefaultPosition, wxDefaultSize, 0 );
+ m_staticTextWelcome->Wrap( -1 );
+ bSizer1->Add( m_staticTextWelcome, 0, wxALL|wxEXPAND, 5 );
bSizer1->Add( 0, 20, 0, 0, 5 );
@@ -44,8 +44,11 @@ WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE::WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE( wxWind
bSizer19->Add( 0, 10, 0, 0, 5 );
- wxBoxSizer* bSizerLocalFolder;
- bSizerLocalFolder = new wxBoxSizer( wxHORIZONTAL );
+ wxFlexGridSizer* fgSizerLocalFolder;
+ fgSizerLocalFolder = new wxFlexGridSizer( 0, 2, 0, 0 );
+ fgSizerLocalFolder->AddGrowableCol( 0 );
+ fgSizerLocalFolder->SetFlexibleDirection( wxBOTH );
+ fgSizerLocalFolder->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
wxBoxSizer* bSizerDinname;
bSizerDinname = new wxBoxSizer( wxVERTICAL );
@@ -58,7 +61,7 @@ WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE::WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE( wxWind
bSizerDinname->Add( m_downloadDir, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
- bSizerLocalFolder->Add( bSizerDinname, 1, wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
+ fgSizerLocalFolder->Add( bSizerDinname, 1, wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
wxBoxSizer* bSizerButts;
bSizerButts = new wxBoxSizer( wxVERTICAL );
@@ -70,19 +73,28 @@ WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE::WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE( wxWind
bSizerButts->Add( m_buttonDefault3DPath, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
- bSizerLocalFolder->Add( bSizerButts, 0, wxEXPAND, 5 );
+ fgSizerLocalFolder->Add( bSizerButts, 0, wxEXPAND, 5 );
+
+ wxBoxSizer* bSizerWarnMsg;
+ bSizerWarnMsg = new wxBoxSizer( wxHORIZONTAL );
+
+ m_bitmapDirWarn = new wxStaticBitmap( m_wizPage1, wxID_ANY, wxArtProvider::GetBitmap( wxART_ERROR, wxART_OTHER ), wxDefaultPosition, wxDefaultSize, 0 );
+ bSizerWarnMsg->Add( m_bitmapDirWarn, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 );
+
+ m_invalidDirWarningText = new wxStaticText( m_wizPage1, wxID_ANY, _("It is not possible to write in the selected directory.\nPlease choose another one."), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE );
+ m_invalidDirWarningText->Wrap( -1 );
+ m_invalidDirWarningText->SetForegroundColour( wxColour( 255, 0, 0 ) );
+
+ bSizerWarnMsg->Add( m_invalidDirWarningText, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
- bSizer19->Add( bSizerLocalFolder, 0, wxEXPAND, 5 );
+ fgSizerLocalFolder->Add( bSizerWarnMsg, 1, wxEXPAND, 5 );
- bSizer19->Add( 0, 10, 0, 0, 5 );
+ fgSizerLocalFolder->Add( 10, 40, 0, 0, 5 );
- m_invalidDir = new wxStaticText( m_wizPage1, wxID_ANY, _("It is not possible to write in the selected directory.\nPlease choose another one."), wxDefaultPosition, wxDefaultSize, 0 );
- m_invalidDir->Wrap( -1 );
- m_invalidDir->SetForegroundColour( wxColour( 255, 0, 0 ) );
- bSizer19->Add( m_invalidDir, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
+ bSizer19->Add( fgSizerLocalFolder, 1, wxEXPAND, 5 );
bSizer1->Add( bSizer19, 1, wxEXPAND, 5 );
@@ -210,6 +222,7 @@ WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE::WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE( wxWind
this->Connect( wxID_ANY, wxEVT_WIZARD_FINISHED, wxWizardEventHandler( WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE::OnWizardFinished ) );
this->Connect( wxID_ANY, wxEVT_WIZARD_PAGE_CHANGED, wxWizardEventHandler( WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE::OnPageChanged ) );
this->Connect( wxID_ANY, wxEVT_WIZARD_PAGE_CHANGING, wxWizardEventHandler( WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE::OnPageChanging ) );
+ m_downloadDir->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE::OnLocalFolderChange ), NULL, this );
m_btnBrowse->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE::OnBrowseButtonClick ), NULL, this );
m_buttonDefault3DPath->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE::OnDefault3DPathButtonClick ), NULL, this );
m_btnSelectAll3Dlibs->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE::OnSelectAll3Dlibs ), NULL, this );
@@ -224,6 +237,7 @@ WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE::~WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE()
this->Disconnect( wxID_ANY, wxEVT_WIZARD_FINISHED, wxWizardEventHandler( WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE::OnWizardFinished ) );
this->Disconnect( wxID_ANY, wxEVT_WIZARD_PAGE_CHANGED, wxWizardEventHandler( WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE::OnPageChanged ) );
this->Disconnect( wxID_ANY, wxEVT_WIZARD_PAGE_CHANGING, wxWizardEventHandler( WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE::OnPageChanging ) );
+ m_downloadDir->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE::OnLocalFolderChange ), NULL, this );
m_btnBrowse->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE::OnBrowseButtonClick ), NULL, this );
m_buttonDefault3DPath->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE::OnDefault3DPathButtonClick ), NULL, this );
m_btnSelectAll3Dlibs->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE::OnSelectAll3Dlibs ), NULL, this );
diff --git a/pcbnew/dialogs/wizard_3DShape_Libs_downloader_base.fbp b/pcbnew/dialogs/wizard_3DShape_Libs_downloader_base.fbp
index 59273ad644..83cedb813f 100644
--- a/pcbnew/dialogs/wizard_3DShape_Libs_downloader_base.fbp
+++ b/pcbnew/dialogs/wizard_3DShape_Libs_downloader_base.fbp
@@ -43,7 +43,7 @@
-1,-1
WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE
- 591,405
+ 591,386
wxCAPTION|wxCLOSE_BOX|wxDEFAULT_DIALOG_STYLE|wxMAXIMIZE_BOX|wxRESIZE_BORDER
;
Add 3D Shape Libraries Wizard
@@ -175,7 +175,7 @@
0
1
- m_staticText1
+ m_staticTextWelcome
1
@@ -424,12 +424,19 @@
-
-
- 5
-
- 0
-
- 10
- protected
- 0
-
-
-
- 5
- wxALL|wxALIGN_CENTER_HORIZONTAL
- 0
-
- 1
- 1
- 1
- 1
-
-
-
-
-
-
-
- 1
- 0
- 1
-
- 1
- 0
- Dock
- 0
- Left
- 1
- 255,0,0
- 1
-
- 0
- 0
- wxID_ANY
- It is not possible to write in the selected directory.
Please choose another one.
-
- 0
-
-
- 0
-
- 1
- m_invalidDir
- 1
-
-
- protected
- 1
-
- Resizable
- 1
-
-
-
- 0
-
-
-
-
- -1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ 5
+ wxEXPAND
+ 1
+
+
+ bSizerWarnMsg
+ wxHORIZONTAL
+ none
+
+ 5
+ wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL
+ 0
+
+ 1
+ 1
+ 1
+ 1
+
+
+
+
+
+
+ Load From Art Provider; wxART_ERROR; wxART_OTHER
+
+ 1
+ 0
+ 1
+
+ 1
+ 0
+ Dock
+ 0
+ Left
+ 1
+
+ 1
+
+ 0
+ 0
+ wxID_ANY
+
+ 0
+
+
+ 0
+
+ 1
+ m_bitmapDirWarn
+ 1
+
+
+ protected
+ 1
+
+ Resizable
+ 1
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 5
+ wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND
+ 0
+
+ 1
+ 1
+ 1
+ 1
+
+
+
+
+
+
+
+ 1
+ 0
+ 1
+
+ 1
+ 0
+ Dock
+ 0
+ Left
+ 1
+ 255,0,0
+ 1
+
+ 0
+ 0
+ wxID_ANY
+ It is not possible to write in the selected directory.
Please choose another one.
+
+ 0
+
+
+ 0
+ -1,-1
+ 1
+ m_invalidDirWarningText
+ 1
+
+
+ protected
+ 1
+
+ Resizable
+ 1
+
+ wxALIGN_CENTRE
+
+ 0
+
+
+
+
+ -1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 5
+
+ 0
+
+ 40
+ protected
+ 10
+
+
diff --git a/pcbnew/dialogs/wizard_3DShape_Libs_downloader_base.h b/pcbnew/dialogs/wizard_3DShape_Libs_downloader_base.h
index eff150d291..1e14d9db64 100644
--- a/pcbnew/dialogs/wizard_3DShape_Libs_downloader_base.h
+++ b/pcbnew/dialogs/wizard_3DShape_Libs_downloader_base.h
@@ -43,14 +43,15 @@ class WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE : public wxWizard
private:
protected:
- wxStaticText* m_staticText1;
+ wxStaticText* m_staticTextWelcome;
wxStaticText* m_staticText8;
wxTextCtrl* m_textCtrlGithubURL;
wxStaticText* m_staticText9;
wxTextCtrl* m_downloadDir;
wxButton* m_btnBrowse;
wxButton* m_buttonDefault3DPath;
- wxStaticText* m_invalidDir;
+ wxStaticBitmap* m_bitmapDirWarn;
+ wxStaticText* m_invalidDirWarningText;
wxStaticBitmap* m_bitmapRepo;
wxHyperlinkCtrl* m_hyperlinkGithubKicad;
wxStaticText* m_staticText112;
@@ -67,6 +68,7 @@ class WIZARD_3DSHAPE_LIBS_DOWNLOADER_BASE : public wxWizard
virtual void OnWizardFinished( wxWizardEvent& event ) { event.Skip(); }
virtual void OnPageChanged( wxWizardEvent& event ) { event.Skip(); }
virtual void OnPageChanging( wxWizardEvent& event ) { event.Skip(); }
+ virtual void OnLocalFolderChange( wxCommandEvent& event ) { event.Skip(); }
virtual void OnBrowseButtonClick( wxCommandEvent& event ) { event.Skip(); }
virtual void OnDefault3DPathButtonClick( wxCommandEvent& event ) { event.Skip(); }
virtual void OnSelectAll3Dlibs( wxCommandEvent& event ) { event.Skip(); }