Remove obsolete code requiring unique sheet names.
This commit is contained in:
parent
e1d59337d1
commit
490f39a671
|
@ -111,17 +111,6 @@ bool DIALOG_SCH_SHEET_PROPS::TransferDataFromWindow()
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Duplicate sheet names are not valid.
|
|
||||||
SCH_SHEET_LIST hierarchy( g_RootSheet );
|
|
||||||
const SCH_SHEET* sheet = hierarchy.FindSheetByName( GetSheetName() );
|
|
||||||
|
|
||||||
if( sheet && (sheet != m_sheet) )
|
|
||||||
{
|
|
||||||
DisplayError( this, wxString::Format( _( "A sheet named \"%s\" already exists." ),
|
|
||||||
GetSheetName() ) );
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_sheet->SetShowFileName( m_filenameVisible->GetValue() );
|
m_sheet->SetShowFileName( m_filenameVisible->GetValue() );
|
||||||
m_sheet->SetFileNameSize( m_filenameTextSize.GetValue() );
|
m_sheet->SetFileNameSize( m_filenameTextSize.GetValue() );
|
||||||
m_sheet->SetShowSheetName( m_sheetnameVisible->GetValue() );
|
m_sheet->SetShowSheetName( m_sheetnameVisible->GetValue() );
|
||||||
|
|
|
@ -535,6 +535,7 @@ bool SCH_EDIT_FRAME::SaveProject()
|
||||||
|
|
||||||
CreateArchiveLibraryCacheFile();
|
CreateArchiveLibraryCacheFile();
|
||||||
|
|
||||||
|
// Save the sheet name map to the project file
|
||||||
wxString configFile = Prj().GetProjectFullName();
|
wxString configFile = Prj().GetProjectFullName();
|
||||||
wxConfigBase* config = new wxFileConfig( wxEmptyString, wxEmptyString, configFile );
|
wxConfigBase* config = new wxFileConfig( wxEmptyString, wxEmptyString, configFile );
|
||||||
int index = 1;
|
int index = 1;
|
||||||
|
|
|
@ -696,20 +696,6 @@ LIB_PIN* SCH_SCREEN::GetPin(
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SCH_SHEET* SCH_SCREEN::GetSheet( const wxString& aName )
|
|
||||||
{
|
|
||||||
for( auto item : Items().OfType( SCH_SHEET_T ) )
|
|
||||||
{
|
|
||||||
auto sheet = static_cast<SCH_SHEET*>( item );
|
|
||||||
|
|
||||||
if( aName.CmpNoCase( sheet->GetName() ) == 0 )
|
|
||||||
return sheet;
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
SCH_SHEET_PIN* SCH_SCREEN::GetSheetLabel( const wxPoint& aPosition )
|
SCH_SHEET_PIN* SCH_SCREEN::GetSheetLabel( const wxPoint& aPosition )
|
||||||
{
|
{
|
||||||
SCH_SHEET_PIN* sheetPin = nullptr;
|
SCH_SHEET_PIN* sheetPin = nullptr;
|
||||||
|
|
|
@ -362,15 +362,6 @@ public:
|
||||||
LIB_PIN* GetPin( const wxPoint& aPosition, SCH_COMPONENT** aComponent = NULL,
|
LIB_PIN* GetPin( const wxPoint& aPosition, SCH_COMPONENT** aComponent = NULL,
|
||||||
bool aEndPointOnly = false );
|
bool aEndPointOnly = false );
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a sheet object pointer that is named \a aName.
|
|
||||||
*
|
|
||||||
* @note The screen hierarchy is not descend.
|
|
||||||
* @param aName is the case insensitive name of the sheet.
|
|
||||||
* @return A pointer to the SCH_SHEET object found or NULL.
|
|
||||||
*/
|
|
||||||
SCH_SHEET* GetSheet( const wxString& aName );
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test the screen if \a aPosition is a sheet label object.
|
* Test the screen if \a aPosition is a sheet label object.
|
||||||
*
|
*
|
||||||
|
|
|
@ -306,30 +306,6 @@ bool SCH_SHEET_PATH::TestForRecursion( const wxString& aSrcFileName,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int SCH_SHEET_PATH::FindSheet( const wxString& aFileName ) const
|
|
||||||
{
|
|
||||||
for( unsigned i = 0; i < size(); i++ )
|
|
||||||
{
|
|
||||||
if( at( i )->GetFileName().CmpNoCase( aFileName ) == 0 )
|
|
||||||
return (int)i;
|
|
||||||
}
|
|
||||||
|
|
||||||
return SHEET_NOT_FOUND;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
SCH_SHEET* SCH_SHEET_PATH::FindSheetByName( const wxString& aSheetName )
|
|
||||||
{
|
|
||||||
for( unsigned i = 0; i < size(); i++ )
|
|
||||||
{
|
|
||||||
if( at( i )->GetName().CmpNoCase( aSheetName ) == 0 )
|
|
||||||
return at( i );
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/********************************************************************/
|
/********************************************************************/
|
||||||
/* Class SCH_SHEET_LIST to handle the list of Sheets in a hierarchy */
|
/* Class SCH_SHEET_LIST to handle the list of Sheets in a hierarchy */
|
||||||
/********************************************************************/
|
/********************************************************************/
|
||||||
|
@ -342,22 +318,6 @@ SCH_SHEET_LIST::SCH_SHEET_LIST( SCH_SHEET* aSheet )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SCH_SHEET_PATH* SCH_SHEET_LIST::GetSheetByPath( const wxString& aPath, bool aHumanReadable )
|
|
||||||
{
|
|
||||||
wxString sheetPath;
|
|
||||||
|
|
||||||
for( unsigned i = 0; i < size(); i++ )
|
|
||||||
{
|
|
||||||
sheetPath = ( aHumanReadable ) ? at( i ).PathHumanReadable() : at( i ).Path();
|
|
||||||
|
|
||||||
if( sheetPath == aPath )
|
|
||||||
return &at( i );
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void SCH_SHEET_LIST::BuildSheetList( SCH_SHEET* aSheet )
|
void SCH_SHEET_LIST::BuildSheetList( SCH_SHEET* aSheet )
|
||||||
{
|
{
|
||||||
wxCHECK_RET( aSheet != NULL, wxT( "Cannot build sheet list from undefined sheet." ) );
|
wxCHECK_RET( aSheet != NULL, wxT( "Cannot build sheet list from undefined sheet." ) );
|
||||||
|
@ -592,20 +552,6 @@ bool SCH_SHEET_LIST::TestForRecursion( const SCH_SHEET_LIST& aSrcSheetHierarchy,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SCH_SHEET* SCH_SHEET_LIST::FindSheetByName( const wxString& aSheetName )
|
|
||||||
{
|
|
||||||
for( unsigned i = 0; i < size(); i++ )
|
|
||||||
{
|
|
||||||
SCH_SHEET* sheet = at( i ).FindSheetByName( aSheetName );
|
|
||||||
|
|
||||||
if( sheet )
|
|
||||||
return sheet;
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
SCH_SHEET_PATH* SCH_SHEET_LIST::FindSheetForScreen( SCH_SCREEN* aScreen )
|
SCH_SHEET_PATH* SCH_SHEET_LIST::FindSheetForScreen( SCH_SCREEN* aScreen )
|
||||||
{
|
{
|
||||||
for( SCH_SHEET_PATH& sheetpath : *this )
|
for( SCH_SHEET_PATH& sheetpath : *this )
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
*
|
*
|
||||||
* Copyright (C) 2017 Jean-Pierre Charras, jp.charras at wanadoo.fr
|
* Copyright (C) 2017 Jean-Pierre Charras, jp.charras at wanadoo.fr
|
||||||
* Copyright (C) 2011 Wayne Stambaugh <stambaughw@gmail.com>
|
* Copyright (C) 2011 Wayne Stambaugh <stambaughw@gmail.com>
|
||||||
* Copyright (C) 1992-2017 KiCad Developers, see AUTHORS.txt for contributors.
|
* Copyright (C) 1992-2020 KiCad Developers, see AUTHORS.txt for contributors.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
|
@ -87,9 +87,6 @@ class SCH_ITEM;
|
||||||
class SCH_REFERENCE_LIST;
|
class SCH_REFERENCE_LIST;
|
||||||
|
|
||||||
|
|
||||||
#define SHEET_NOT_FOUND -1
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Type SCH_MULTI_UNIT_REFERENCE_MAP
|
* Type SCH_MULTI_UNIT_REFERENCE_MAP
|
||||||
* is used to create a map of reference designators for multi-unit parts.
|
* is used to create a map of reference designators for multi-unit parts.
|
||||||
|
@ -169,11 +166,6 @@ public:
|
||||||
return const_cast< SCH_SHEET* >( retv );
|
return const_cast< SCH_SHEET* >( retv );
|
||||||
}
|
}
|
||||||
|
|
||||||
SCH_SHEET* GetSheet( unsigned aIndex )
|
|
||||||
{
|
|
||||||
return const_cast< SCH_SHEET* >( static_cast< const SCH_SHEET_PATH& >( *this ).GetSheet( aIndex ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function Cmp
|
* Function Cmp
|
||||||
* Compare if this is the same sheet path as aSheetPathToTest
|
* Compare if this is the same sheet path as aSheetPathToTest
|
||||||
|
@ -286,28 +278,6 @@ public:
|
||||||
*/
|
*/
|
||||||
bool TestForRecursion( const wxString& aSrcFileName, const wxString& aDestFileName ) const;
|
bool TestForRecursion( const wxString& aSrcFileName, const wxString& aDestFileName ) const;
|
||||||
|
|
||||||
int FindSheet( const wxString& aFileName ) const;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function FindSheetByName
|
|
||||||
*
|
|
||||||
* searches the #SCH_SHEET_PATH for a sheet named \a aSheetName.
|
|
||||||
*
|
|
||||||
* @param aSheetName is the name of the sheet to find.
|
|
||||||
* @return a pointer to the sheet named \a aSheetName if found or NULL if not found.
|
|
||||||
*/
|
|
||||||
SCH_SHEET* FindSheetByName( const wxString& aSheetName );
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function FindSheetByPageNumber
|
|
||||||
*
|
|
||||||
* searches the #SCH_SHEET_LIST for a sheet with \a aPageNumber.
|
|
||||||
*
|
|
||||||
* @param aPageNumber is the number of the sheet to find.
|
|
||||||
* @return a pointer to a #SCH_SHEET object page \a aPageNumber if found or NULL if not found.
|
|
||||||
*/
|
|
||||||
SCH_SHEET* FindSheetByPageNumber( int aPageNumber );
|
|
||||||
|
|
||||||
bool operator==( const SCH_SHEET_PATH& d1 ) const;
|
bool operator==( const SCH_SHEET_PATH& d1 ) const;
|
||||||
|
|
||||||
bool operator!=( const SCH_SHEET_PATH& d1 ) const { return !( *this == d1 ) ; }
|
bool operator!=( const SCH_SHEET_PATH& d1 ) const { return !( *this == d1 ) ; }
|
||||||
|
@ -328,9 +298,6 @@ namespace std
|
||||||
|
|
||||||
typedef std::vector< SCH_SHEET_PATH > SCH_SHEET_PATHS;
|
typedef std::vector< SCH_SHEET_PATH > SCH_SHEET_PATHS;
|
||||||
typedef SCH_SHEET_PATHS::iterator SCH_SHEET_PATHS_ITER;
|
typedef SCH_SHEET_PATHS::iterator SCH_SHEET_PATHS_ITER;
|
||||||
typedef SCH_SHEET_PATHS::const_iterator SCH_SHEET_PATHS_CITER;
|
|
||||||
typedef SCH_SHEET_PATHS::reverse_iterator SCH_SHEET_PATHS_RITER;
|
|
||||||
typedef SCH_SHEET_PATHS::const_reverse_iterator SCH_SHEET_PATHS_CRITER;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -361,18 +328,6 @@ public:
|
||||||
|
|
||||||
~SCH_SHEET_LIST() {}
|
~SCH_SHEET_LIST() {}
|
||||||
|
|
||||||
/**
|
|
||||||
* Function GetSheetByPath
|
|
||||||
* returns a sheet matching the path name in \a aPath.
|
|
||||||
*
|
|
||||||
* @param aPath A wxString object containing path of the sheet to get.
|
|
||||||
* @param aHumanReadable True uses the human readable path for comparison.
|
|
||||||
* False uses the timestamp generated path.
|
|
||||||
* @return The sheet that matches \a aPath or NULL if no sheet matching
|
|
||||||
* \a aPath is found.
|
|
||||||
*/
|
|
||||||
SCH_SHEET_PATH* GetSheetByPath( const wxString& aPath, bool aHumanReadable = true );
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function IsModified
|
* Function IsModified
|
||||||
* checks the entire hierarchy for any modifications.
|
* checks the entire hierarchy for any modifications.
|
||||||
|
@ -453,16 +408,6 @@ public:
|
||||||
bool TestForRecursion( const SCH_SHEET_LIST& aSrcSheetHierarchy,
|
bool TestForRecursion( const SCH_SHEET_LIST& aSrcSheetHierarchy,
|
||||||
const wxString& aDestFileName ) const;
|
const wxString& aDestFileName ) const;
|
||||||
|
|
||||||
/**
|
|
||||||
* Function FindSheetByName
|
|
||||||
*
|
|
||||||
* searches the entire #SCH_SHEET_LIST for a sheet named \a aSheetName.
|
|
||||||
*
|
|
||||||
* @param aSheetName is the name of the sheet to find.
|
|
||||||
* @return a pointer to the sheet named \a aSheetName if found or NULL if not found.
|
|
||||||
*/
|
|
||||||
SCH_SHEET* FindSheetByName( const wxString& aSheetName );
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function FindSheetForScreen
|
* Function FindSheetForScreen
|
||||||
*
|
*
|
||||||
|
|
|
@ -445,41 +445,9 @@ bool SCH_EDIT_FRAME::LoadSheetFromFile( SCH_SHEET* aSheet, SCH_SHEET_PATH* aHier
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check for duplicate sheet names in the current page.
|
|
||||||
wxArrayString duplicateSheetNames;
|
|
||||||
|
|
||||||
for( auto item : currentScreen->Items().OfType( SCH_SHEET_T ) )
|
|
||||||
{
|
|
||||||
auto sheet = static_cast<SCH_SHEET*>( item );
|
|
||||||
|
|
||||||
if( newSheet->GetScreen()->GetSheet( sheet->GetName() ) )
|
|
||||||
duplicateSheetNames.Add( sheet->GetName() );
|
|
||||||
}
|
|
||||||
|
|
||||||
if( !duplicateSheetNames.IsEmpty() )
|
|
||||||
{
|
|
||||||
msg.Printf( "Duplicate sheet names exist on the current page. Do you want to "
|
|
||||||
"automatically rename the duplicate sheet names?" );
|
|
||||||
|
|
||||||
if( !IsOK( this, msg ) )
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Rename all duplicate sheet names.
|
|
||||||
SCH_SCREEN* newScreen = newSheet->GetScreen();
|
SCH_SCREEN* newScreen = newSheet->GetScreen();
|
||||||
wxCHECK_MSG( newScreen, false, "No screen defined for sheet." );
|
wxCHECK_MSG( newScreen, false, "No screen defined for sheet." );
|
||||||
|
|
||||||
for( const auto& duplicateName : duplicateSheetNames )
|
|
||||||
{
|
|
||||||
SCH_SHEET* renamedSheet = newScreen->GetSheet( duplicateName );
|
|
||||||
|
|
||||||
wxCHECK2_MSG( renamedSheet, continue,
|
|
||||||
"Sheet " + duplicateName + " not found in imported schematic." );
|
|
||||||
|
|
||||||
const_cast<UUID&>( renamedSheet->m_Uuid ) = UUID();
|
|
||||||
renamedSheet->SetName( wxString::Format( "Sheet%s", renamedSheet->m_Uuid.AsString() ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set all sheets loaded into the correct sheet file paths.
|
// Set all sheets loaded into the correct sheet file paths.
|
||||||
|
|
||||||
for( auto aItem : currentScreen->Items().OfType( SCH_SHEET_T ) )
|
for( auto aItem : currentScreen->Items().OfType( SCH_SHEET_T ) )
|
||||||
|
@ -747,7 +715,7 @@ bool SCH_EDIT_FRAME::EditSheet( SCH_SHEET* aSheet, SCH_SHEET_PATH* aHierarchy,
|
||||||
aSheet->SetName( dlg.GetSheetName() );
|
aSheet->SetName( dlg.GetSheetName() );
|
||||||
|
|
||||||
if( aSheet->GetName().IsEmpty() )
|
if( aSheet->GetName().IsEmpty() )
|
||||||
aSheet->SetName( wxString::Format( wxT( "Sheet%s" ), aSheet->m_Uuid.AsString() ) );
|
aSheet->SetName( wxT( "Untitled Sheet" ) );
|
||||||
|
|
||||||
if( aClearAnnotationNewItems )
|
if( aClearAnnotationNewItems )
|
||||||
*aClearAnnotationNewItems = clearAnnotation;
|
*aClearAnnotationNewItems = clearAnnotation;
|
||||||
|
|
|
@ -73,8 +73,6 @@ BOOST_AUTO_TEST_CASE( Default )
|
||||||
{
|
{
|
||||||
BOOST_CHECK_EQUAL( m_csheet.GetPosition(), wxPoint( 0, 0 ) );
|
BOOST_CHECK_EQUAL( m_csheet.GetPosition(), wxPoint( 0, 0 ) );
|
||||||
|
|
||||||
BOOST_CHECK_PREDICATE( KI_TEST::EndsInTimestamp, ( m_csheet.GetName().ToStdString() ) );
|
|
||||||
|
|
||||||
// it is it's own root sheet
|
// it is it's own root sheet
|
||||||
BOOST_CHECK_EQUAL( m_sheet.GetRootSheet(), &m_sheet );
|
BOOST_CHECK_EQUAL( m_sheet.GetRootSheet(), &m_sheet );
|
||||||
BOOST_CHECK_EQUAL( m_sheet.CountSheets(), 1 );
|
BOOST_CHECK_EQUAL( m_sheet.CountSheets(), 1 );
|
||||||
|
|
Loading…
Reference in New Issue