Add "create a new directory" checkbox to the Create Project dialog

Fixes: lp:1753325
* https://bugs.launchpad.net/kicad/+bug/1753325
This commit is contained in:
Maciej Suminski 2018-03-06 16:21:53 +01:00
parent a164f7e2da
commit 49486b83b0
1 changed files with 37 additions and 1 deletions

View File

@ -184,12 +184,47 @@ void KICAD_MANAGER_FRAME::OnLoadProject( wxCommandEvent& event )
} }
///> Helper widget to select whether a new directory should be created for a project
class DIR_CHECKBOX : public wxPanel
{
public:
DIR_CHECKBOX( wxWindow* aParent )
: wxPanel( aParent )
{
m_cbCreateDir = new wxCheckBox( aParent, wxID_ANY,
_( "Create a new directory for the project" ) );
m_cbCreateDir->SetValue( true );
wxBoxSizer* sizer = new wxBoxSizer( wxHORIZONTAL );
sizer->Add( m_cbCreateDir );
SetSizerAndFit( sizer );
}
bool CreateNewDir() const
{
return m_cbCreateDir->GetValue();
}
static wxWindow* Create( wxWindow* aParent )
{
return new DIR_CHECKBOX( aParent );
}
protected:
wxCheckBox* m_cbCreateDir;
};
void KICAD_MANAGER_FRAME::OnNewProject( wxCommandEvent& aEvent ) void KICAD_MANAGER_FRAME::OnNewProject( wxCommandEvent& aEvent )
{ {
wxString default_dir = GetMruPath(); wxString default_dir = GetMruPath();
wxFileDialog dlg( this, _( "Create New Project" ), default_dir, wxEmptyString, wxFileDialog dlg( this, _( "Create New Project" ), default_dir, wxEmptyString,
ProjectFileWildcard(), wxFD_SAVE | wxFD_OVERWRITE_PROMPT ); ProjectFileWildcard(), wxFD_SAVE | wxFD_OVERWRITE_PROMPT );
// Add a "Create a new directory" checkbox
dlg.SetExtraControlCreator( &DIR_CHECKBOX::Create );
if( dlg.ShowModal() == wxID_CANCEL ) if( dlg.ShowModal() == wxID_CANCEL )
return; return;
@ -200,7 +235,8 @@ void KICAD_MANAGER_FRAME::OnNewProject( wxCommandEvent& aEvent )
pro.MakeAbsolute(); pro.MakeAbsolute();
// Append a new directory with the same name of the project file. // Append a new directory with the same name of the project file.
pro.AppendDir( pro.GetName() ); if( static_cast<DIR_CHECKBOX*>( dlg.GetExtraControl() )->CreateNewDir() )
pro.AppendDir( pro.GetName() );
// Check if the project directory is empty if it already exists. // Check if the project directory is empty if it already exists.
wxDir directory( pro.GetPath() ); wxDir directory( pro.GetPath() );