Pcbnew: Verify path can be made relative before asking in plotter dialog
CHANGED: When the output path is set in the plotter dialog, the user is asked if they want to make the path relative to the project. The old code would ask the user if they wanted to do this, and then if it failed would present an error dialog. The new code tries it first on a copy, and only if it works does the user get asked if they want to do it. Fixes https://gitlab.com/kicad/code/kicad/issues/5263
This commit is contained in:
parent
de7a1b647c
commit
dad3101107
|
@ -360,19 +360,23 @@ void DIALOG_PLOT::OnOutputDirectoryBrowseClicked( wxCommandEvent& event )
|
||||||
wxFileName dirName = wxFileName::DirName( dirDialog.GetPath() );
|
wxFileName dirName = wxFileName::DirName( dirDialog.GetPath() );
|
||||||
|
|
||||||
wxFileName fn( Prj().AbsolutePath( m_parent->GetBoard()->GetFileName() ) );
|
wxFileName fn( Prj().AbsolutePath( m_parent->GetBoard()->GetFileName() ) );
|
||||||
wxString defaultPath = fn.GetPathWithSep();
|
wxString defaultPath = fn.GetPathWithSep();
|
||||||
wxString msg;
|
wxString msg;
|
||||||
msg.Printf( _( "Do you want to use a path relative to\n\"%s\"" ),
|
wxFileName relPathTest; // Used to test if we can make the path relative
|
||||||
GetChars( defaultPath ) );
|
|
||||||
|
|
||||||
wxMessageDialog dialog( this, msg, _( "Plot Output Directory" ),
|
relPathTest.Assign( dirDialog.GetPath() );
|
||||||
wxYES_NO | wxICON_QUESTION | wxYES_DEFAULT );
|
|
||||||
|
|
||||||
if( dialog.ShowModal() == wxID_YES )
|
// Test if making the path relative is possible before asking the user if they want to do it
|
||||||
|
if( relPathTest.MakeRelativeTo( defaultPath ) )
|
||||||
{
|
{
|
||||||
if( !dirName.MakeRelativeTo( defaultPath ) )
|
msg.Printf( _( "Do you want to use a path relative to\n\"%s\"" ),
|
||||||
wxMessageBox( _( "Cannot make path relative (target volume different from file volume)!" ),
|
GetChars( defaultPath ) );
|
||||||
_( "Plot Output Directory" ), wxOK | wxICON_ERROR );
|
|
||||||
|
wxMessageDialog dialog( this, msg, _( "Plot Output Directory" ),
|
||||||
|
wxYES_NO | wxICON_QUESTION | wxYES_DEFAULT );
|
||||||
|
|
||||||
|
if( dialog.ShowModal() == wxID_YES )
|
||||||
|
dirName.MakeRelativeTo( defaultPath );
|
||||||
}
|
}
|
||||||
|
|
||||||
m_outputDirectoryName->SetValue( dirName.GetFullPath() );
|
m_outputDirectoryName->SetValue( dirName.GetFullPath() );
|
||||||
|
|
Loading…
Reference in New Issue