From 9cda3dbff58df102d5c7d040dd21059576cbd624 Mon Sep 17 00:00:00 2001 From: PJM Date: Wed, 19 Aug 2020 18:01:42 -0700 Subject: [PATCH] Eeschema: 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. Related to issue https://gitlab.com/kicad/code/kicad/issues/5263 except that is for Pcbnew, and this fixes the same problem in Eeschema. Issue 5263 is fixed with Merge Request: https://gitlab.com/kicad/code/kicad/-/merge_requests/370 --- eeschema/dialogs/dialog_plot_schematic.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/eeschema/dialogs/dialog_plot_schematic.cpp b/eeschema/dialogs/dialog_plot_schematic.cpp index 1fa62fd3f4..be86030def 100644 --- a/eeschema/dialogs/dialog_plot_schematic.cpp +++ b/eeschema/dialogs/dialog_plot_schematic.cpp @@ -156,17 +156,20 @@ void DIALOG_PLOT_SCHEMATIC::OnOutputDirectoryBrowseClicked( wxCommandEvent& even wxFileName fn( Prj().AbsolutePath( m_parent->Schematic().Root().GetFileName() ) ); wxString defaultPath = fn.GetPathWithSep(); wxString msg; - msg.Printf( _( "Do you want to use a path relative to\n\"%s\"" ), GetChars( defaultPath ) ); + wxFileName relPathTest; // Used to test if we can make the path relative - wxMessageDialog dialog( this, msg, _( "Plot Output Directory" ), - wxYES_NO | wxICON_QUESTION | wxYES_DEFAULT ); + relPathTest.Assign( dirDialog.GetPath() ); - // relative directory selected - 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 ) ) - wxMessageBox( _( "Cannot make path relative (target volume different from file " - "volume)!" ), _( "Plot Output Directory" ), wxOK | wxICON_ERROR ); + msg.Printf( _( "Do you want to use a path relative to\n\"%s\"" ), GetChars( defaultPath ) ); + + 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() );