Undo commit -r 6539

This commit is contained in:
Wayne Stambaugh 2016-02-15 15:11:50 -05:00
parent ee23342e31
commit 9eda45a97e
5 changed files with 75 additions and 67 deletions

View File

@ -1166,24 +1166,7 @@ void SCH_SHEET::Plot( PLOTTER* aPlotter )
} }
SCH_SHEET* SCH_SHEET::FindSheetByName( const wxString& aSheetName ) unsigned SCH_SHEET::GetSheets( std::vector<const SCH_SHEET*>& aSheetList ) const
{
std::vector< const SCH_SHEET* > sheets;
GetSheets( sheets );
for( unsigned i = 0; i < sheets.size(); i++ )
{
if( sheets[i]->GetName().CmpNoCase( aSheetName ) == 0 )
return const_cast< SCH_SHEET*>( sheets[i] );
}
return NULL;
}
unsigned SCH_SHEET::GetSheets( std::vector< const SCH_SHEET* >& aSheetList,
bool aSortByPath ) const
{ {
// Sheet pointers must be unique. // Sheet pointers must be unique.
wxASSERT( find( aSheetList.begin(), aSheetList.end(), this ) == aSheetList.end() ); wxASSERT( find( aSheetList.begin(), aSheetList.end(), this ) == aSheetList.end() );
@ -1200,9 +1183,6 @@ unsigned SCH_SHEET::GetSheets( std::vector< const SCH_SHEET* >& aSheetList,
item = item->Next(); item = item->Next();
} }
if( aSortByPath )
std::sort( aSheetList.begin(), aSheetList.end(), SortByPath() );
return aSheetList.size(); return aSheetList.size();
} }
@ -1245,7 +1225,7 @@ const SCH_SHEET* SCH_SHEET::GetRootSheet() const
} }
void SCH_SHEET::GetPath( std::vector< const SCH_SHEET* >& aSheetPath ) const void SCH_SHEET::GetPath( SCH_CONST_SHEETS& aSheetPath ) const
{ {
aSheetPath.insert( aSheetPath.begin(), const_cast<SCH_SHEET*>( this ) ); aSheetPath.insert( aSheetPath.begin(), const_cast<SCH_SHEET*>( this ) );
@ -1599,7 +1579,7 @@ int SCH_SHEET::operator-( const SCH_SHEET& aRhs ) const
if( this == &aRhs ) if( this == &aRhs )
return 0; return 0;
std::vector< const SCH_SHEET* > lhsPath, rhsPath; SCH_CONST_SHEETS lhsPath, rhsPath;
GetPath( lhsPath ); GetPath( lhsPath );
aRhs.GetPath( rhsPath ); aRhs.GetPath( rhsPath );

View File

@ -577,25 +577,6 @@ public:
*/ */
bool operator<( const SCH_SHEET& aRhs ) const; bool operator<( const SCH_SHEET& aRhs ) const;
/**
* Structure SortByPath
*
* tests if \a aLhs is less than \a aRhs.
*
* @param aLhs is the left hand side reference to a #SCH_SHEET for comparison.
* @param aRhs is the right hand side reference to a #SCH_SHEET for comparison.
* @return true if \a aLhs is less than \a aRhs otherwise false.
*/
struct SortByPath
{
bool operator()( const SCH_SHEET* aLhs, const SCH_SHEET* aRhs )
{
wxCHECK( aLhs != NULL && aRhs != NULL, false );
return *aLhs < *aRhs;
}
};
int operator-( const SCH_SHEET& aRhs ) const; int operator-( const SCH_SHEET& aRhs ) const;
wxPoint GetPosition() const { return m_pos; } wxPoint GetPosition() const { return m_pos; }
@ -610,33 +591,15 @@ public:
EDA_ITEM* Clone() const; EDA_ITEM* Clone() const;
/**
* Function FindSheetByName
*
* searches this #SCH_SHEET and all of it's sub-sheets 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 GetSheets * Function GetSheets
* *
* add the pointers to the #SCH_SHEET and all of it's sub-sheets to \a aSheetList. * add the point to #SCH_SHEET and all of it's sub-sheets to \a aSheetList.
*
* By default no sorting is performed and the #SCH_SHEET pointers are add to the list
* in the order they were loaded when the schematic was parse. When \a aSortByPath is
* true, the list is sorted using the < operator which sort by path length then path
* time stamps. This has the same sorting effect as the old SCH_SHEET_PATH::Cmp()
* function.
* *
* @param aSheetList is a reference to a set containing the #SCH_SHEET pointers. * @param aSheetList is a reference to a set containing the #SCH_SHEET pointers.
* @param aSortByPath true to sort by path. False for load order.
* @return the number of #SCH_SHEET object pointers in \a aSheetList. * @return the number of #SCH_SHEET object pointers in \a aSheetList.
*/ */
unsigned GetSheets( std::vector< const SCH_SHEET* >& aSheetList, unsigned GetSheets( std::vector<const SCH_SHEET*>& aSheetList ) const;
bool aSortByPath = false ) const;
/** /**
* Function GetSheetPaths * Function GetSheetPaths
@ -684,9 +647,9 @@ public:
* recurses up the parent branch up to the root sheet adding a pointer for each * recurses up the parent branch up to the root sheet adding a pointer for each
* parent sheet to \a aSheetPath. * parent sheet to \a aSheetPath.
* *
* @param aSheetPath is a refernce to an #SCH_SHEET object to populate. * @param aSheetPath is a refernce to an #SCH_SHEETS object to populate.
*/ */
void GetPath( std::vector< const SCH_SHEET* >& aSheetPath ) const; void GetPath( std::vector<const SCH_SHEET*>& aSheetPath ) const;
/** /**
* Function GetPath * Function GetPath
@ -834,4 +797,9 @@ protected:
}; };
typedef std::vector< SCH_SHEET* > SCH_SHEETS;
typedef std::vector< const SCH_SHEET* > SCH_CONST_SHEETS;
typedef SCH_SHEETS::iterator SCH_SHEETS_ITER;
typedef SCH_SHEETS::const_iterator SCH_SHEETS_CITER;
#endif /* SCH_SHEEET_H */ #endif /* SCH_SHEEET_H */

View File

@ -2,8 +2,8 @@
* This program source code file is part of KiCad, a free EDA CAD application. * This program source code file is part of KiCad, a free EDA CAD application.
* *
* Copyright (C) 2009 Jean-Pierre Charras, jaen-pierre.charras@gipsa-lab.inpg.com * Copyright (C) 2009 Jean-Pierre Charras, jaen-pierre.charras@gipsa-lab.inpg.com
* Copyright (C) 2011-2015 Wayne Stambaugh <stambaughw@verizon.net> * Copyright (C) 2011 Wayne Stambaugh <stambaughw@verizon.net>
* Copyright (C) 1992-2015 KiCad Developers, see AUTHORS.txt for contributors. * Copyright (C) 1992-2011 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
@ -294,6 +294,30 @@ bool SCH_SHEET_PATH::operator==( const SCH_SHEET_PATH& d1 ) const
} }
int SCH_SHEET_PATH::FindSheet( const wxString& aFileName ) const
{
for( unsigned i = 0; i < m_numSheets; i++ )
{
if( m_sheets[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 < m_numSheets; i++ )
{
if( m_sheets[i]->GetName().CmpNoCase( aSheetName ) == 0 )
return m_sheets[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 */
/********************************************************************/ /********************************************************************/
@ -511,3 +535,17 @@ SCH_ITEM* SCH_SHEET_LIST::FindPreviousItem( KICAD_T aType, SCH_SHEET_PATH** aShe
return NULL; return NULL;
} }
SCH_SHEET* SCH_SHEET_LIST::FindSheetByName( const wxString& aSheetName )
{
for( int i = 0; i < m_count; i++ )
{
SCH_SHEET* sheet = m_list[i].FindSheetByName( aSheetName );
if( sheet )
return sheet;
}
return NULL;
}

View File

@ -220,6 +220,18 @@ public:
*/ */
SCH_ITEM* FindPreviousItem( KICAD_T aType, SCH_ITEM* aLastItem = NULL, bool aWrap = false ) const; SCH_ITEM* FindPreviousItem( KICAD_T aType, SCH_ITEM* aLastItem = NULL, bool aWrap = false ) 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 );
SCH_SHEET_PATH& operator=( const SCH_SHEET_PATH& d1 ); SCH_SHEET_PATH& operator=( const SCH_SHEET_PATH& d1 );
bool operator==( const SCH_SHEET_PATH& d1 ) const; bool operator==( const SCH_SHEET_PATH& d1 ) const;
@ -363,6 +375,16 @@ public:
SCH_ITEM* FindPreviousItem( KICAD_T aType, SCH_SHEET_PATH** aSheetFound = NULL, SCH_ITEM* FindPreviousItem( KICAD_T aType, SCH_SHEET_PATH** aSheetFound = NULL,
SCH_ITEM* aLastItem = NULL, bool aWrap = true ); SCH_ITEM* aLastItem = NULL, bool aWrap = true );
/**
* 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 );
private: private:
/** /**

View File

@ -86,7 +86,7 @@ bool SCH_EDIT_FRAME::EditSheet( SCH_SHEET* aSheet, SCH_SHEET* aHierarchy )
} }
// Duplicate sheet names are not valid. // Duplicate sheet names are not valid.
const SCH_SHEET* sheet = g_RootSheet->FindSheetByName( dlg.GetSheetName() ); const SCH_SHEET* sheet = hierarchy.FindSheetByName( dlg.GetSheetName() );
if( sheet && (sheet != aSheet) ) if( sheet && (sheet != aSheet) )
{ {