37#include <wx/filename.h>
55 wxFileName tmp( wxFileName::CreateTempFileName( wxS(
"saveas" ) ) );
56 wxString dirPath = tmp.GetPath();
57 wxString dirName = tmp.GetName();
58 wxRemoveFile( tmp.GetFullPath() );
60 wxFileName base( dirPath, wxEmptyString );
61 base.AppendDir( dirName );
75 wxCopyFile( dataDir.GetFullPath() + wxS(
"/issue13212.kicad_sch" ),
76 m_srcDir.GetFullPath() + wxS(
"/issue13212.kicad_sch" ) );
77 wxCopyFile( dataDir.GetFullPath() + wxS(
"/issue13212_subsheet_1.kicad_sch" ),
78 m_srcDir.GetFullPath() + wxS(
"/issue13212_subsheet_1.kicad_sch" ) );
79 wxCopyFile( dataDir.GetFullPath() + wxS(
"/issue13212_subsheet_2.kicad_sch" ),
80 m_externalDir.GetFullPath() + wxS(
"/issue13212_subsheet_2.kicad_sch" ) );
83 rootFile.SetFullName( wxS(
"issue13212.kicad_sch" ) );
85 wxFFile file( rootFile.GetFullPath(), wxS(
"rb" ) );
87 file.ReadAll( &content );
89 content.Replace( wxS(
"issue13212_subsheet_2.kicad_sch" ),
90 wxS(
"../external/issue13212_subsheet_2.kicad_sch" ) );
91 wxFFile outFile( rootFile.GetFullPath(), wxS(
"wb" ) );
92 outFile.Write( content );
99 fn.SetName( aRelativePath );
111 wxFileName srcRoot = GetSchematicPath( wxS(
"issue13212" ) );
113 wxFileName destRoot( m_baseDir );
114 destRoot.AppendDir( wxS(
"new" ) );
115 destRoot.AppendDir( wxS(
"location" ) );
116 destRoot.SetName( wxS(
"issue13212" ) );
118 { wxFileName destDir( destRoot ); destDir.SetFullName( wxEmptyString );
if( !destDir.DirExists() ) destDir.Mkdir( 0777, wxPATH_MKDIR_FULL ); }
120 std::unordered_map<SCH_SCREEN*, wxString> filenameMap;
123 m_schematic->Root().SetFileName( destRoot.GetFullName() );
124 m_schematic->RootScreen()->SetFileName( destRoot.GetFullPath() );
127 false, filenameMap, msg );
133 for(
size_t i = 0; i < screens.
GetCount(); i++ )
137 if( wxString( s->
GetFileName() ).EndsWith( wxS(
"issue13212_subsheet_1.kicad_sch" ) ) )
139 else if( wxString( s->
GetFileName() ).EndsWith( wxS(
"issue13212_subsheet_2.kicad_sch" ) ) )
143 wxFileName internalExpected( destRoot.GetPath(), wxS(
"issue13212_subsheet_1.kicad_sch" ) );
146 wxFileName externalExpected( m_externalDir.GetFullPath(), wxS(
"issue13212_subsheet_2.kicad_sch" ) );
149 SCH_SHEET_LIST sheetList = m_schematic->BuildSheetListSortedByPageNumbers();
151 wxString externalSheetPath;
155 if(
path.Last()->GetFileName().Contains( wxS(
"issue13212_subsheet_2" ) ) )
156 externalSheetPath =
path.Last()->GetFileName();
159 BOOST_CHECK_EQUAL( externalSheetPath, wxS(
"../../external/issue13212_subsheet_2.kicad_sch" ) );
167 wxFileName srcRoot = GetSchematicPath( wxS(
"issue13212" ) );
169 wxFileName destRoot( m_baseDir );
170 destRoot.AppendDir( wxS(
"destall" ) );
171 destRoot.SetName( wxS(
"issue13212" ) );
173 { wxFileName destDir( destRoot ); destDir.SetFullName( wxEmptyString );
if( !destDir.DirExists() ) destDir.Mkdir( 0777, wxPATH_MKDIR_FULL ); }
175 std::unordered_map<SCH_SCREEN*, wxString> filenameMap;
178 m_schematic->Root().SetFileName( destRoot.GetFullName() );
179 m_schematic->RootScreen()->SetFileName( destRoot.GetFullPath() );
182 true, filenameMap, msg );
187 for(
size_t i = 0; i < screens.
GetCount(); i++ )
191 if( wxString( s->
GetFileName() ).EndsWith( wxS(
"issue13212_subsheet_2.kicad_sch" ) ) )
195 wxFileName externalExpected( destRoot.GetPath(), wxS(
"issue13212_subsheet_2.kicad_sch" ) );
204 wxFileName srcRoot = GetSchematicPath( wxS(
"issue13212" ) );
206 wxFileName destRoot( m_baseDir );
207 destRoot.AppendDir( wxS(
"nocopy" ) );
208 destRoot.SetName( wxS(
"issue13212" ) );
210 { wxFileName destDir( destRoot ); destDir.SetFullName( wxEmptyString );
if( !destDir.DirExists() ) destDir.Mkdir( 0777, wxPATH_MKDIR_FULL ); }
212 std::unordered_map<SCH_SCREEN*, wxString> filenameMap;
215 m_schematic->Root().SetFileName( destRoot.GetFullName() );
216 m_schematic->RootScreen()->SetFileName( destRoot.GetFullPath() );
219 false, filenameMap, msg );
224 for(
size_t i = 0; i < screens.
GetCount(); i++ )
228 if( wxString( s->
GetFileName() ).EndsWith( wxS(
"issue13212_subsheet_1.kicad_sch" ) ) )
232 wxFileName internalExpected( m_srcDir.GetFullPath(), wxS(
"issue13212_subsheet_1.kicad_sch" ) );
A generic fixture for loading schematics and associated settings for qa tests.
SAVEAS_SUBSHEET_FIXTURE()
wxFileName GetSchematicPath(const wxString &aRelativePath) override
Container class that holds multiple SCH_SCREEN objects in a hierarchy.
SCH_SCREEN * GetScreen(unsigned int aIndex) const
const wxString & GetFileName() const
A container for handling SCH_SHEET_PATH objects in a flattened hierarchy.
Handle access to a stack of flattened SCH_SHEET objects by way of a path for creating a flattened sch...
bool PrepareSaveAsFiles(SCHEMATIC &aSchematic, SCH_SCREENS &aScreens, const wxFileName &aOldRoot, const wxFileName &aNewRoot, bool aSaveCopy, bool aCopySubsheets, bool aIncludeExternSheets, std::unordered_map< SCH_SCREEN *, wxString > &aFilenameMap, wxString &aErrorMsg)
static const std::string KiCadSchematicFileExtension
std::string GetEeschemaTestDataDir()
Get the configured location of Eeschema test data.
static void LoadSchematic(SCHEMATIC *aSchematic, SCH_SHEET *aRootSheet, const wxString &aFileName)
Definition of the SCH_SHEET_PATH and SCH_SHEET_LIST classes for Eeschema.
BOOST_AUTO_TEST_CASE(HorizontalAlignment)
BOOST_AUTO_TEST_SUITE_END()
BOOST_AUTO_TEST_CASE(CopyInternalReferenceExternal)
BOOST_CHECK_EQUAL(result, "25.4")
Definition of file extensions used in Kicad.