Eeschema: fix annotation bug.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6154
This commit is contained in:
parent
d7ee5fe97f
commit
f7084afb72
|
@ -500,6 +500,7 @@ void SCH_EDIT_FRAME::SetSheetNumberAndCount()
|
||||||
for( screen = s_list.GetFirst(); screen != NULL; screen = s_list.GetNext() )
|
for( screen = s_list.GetFirst(); screen != NULL; screen = s_list.GetNext() )
|
||||||
screen->SetPageCount( sheet_count );
|
screen->SetPageCount( sheet_count );
|
||||||
|
|
||||||
|
GetCurrentSheet().SetVirtualPageNumber( sheet_number );
|
||||||
GetScreen()->SetVirtualPageNumber( sheet_number );
|
GetScreen()->SetVirtualPageNumber( sheet_number );
|
||||||
GetScreen()->SetPageNumber( GetCurrentSheet().GetPageNumber() );
|
GetScreen()->SetPageNumber( GetCurrentSheet().GetPageNumber() );
|
||||||
}
|
}
|
||||||
|
|
|
@ -96,7 +96,7 @@ namespace std
|
||||||
|
|
||||||
SCH_SHEET_PATH::SCH_SHEET_PATH()
|
SCH_SHEET_PATH::SCH_SHEET_PATH()
|
||||||
{
|
{
|
||||||
m_pageNumber = 0;
|
m_virtualPageNumber = 0;
|
||||||
m_current_hash = 0;
|
m_current_hash = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -116,9 +116,9 @@ SCH_SHEET_PATH& SCH_SHEET_PATH::operator=( const SCH_SHEET_PATH& aOther )
|
||||||
|
|
||||||
void SCH_SHEET_PATH::initFromOther( const SCH_SHEET_PATH& aOther )
|
void SCH_SHEET_PATH::initFromOther( const SCH_SHEET_PATH& aOther )
|
||||||
{
|
{
|
||||||
m_sheets = aOther.m_sheets;
|
m_sheets = aOther.m_sheets;
|
||||||
m_pageNumber = aOther.m_pageNumber;
|
m_virtualPageNumber = aOther.m_virtualPageNumber;
|
||||||
m_current_hash = aOther.m_current_hash;
|
m_current_hash = aOther.m_current_hash;
|
||||||
|
|
||||||
// Note: don't copy m_recursion_test_cache as it is slow and we want SCH_SHEET_PATHS to be
|
// Note: don't copy m_recursion_test_cache as it is slow and we want SCH_SHEET_PATHS to be
|
||||||
// very fast to construct for use in the connectivity algorithm.
|
// very fast to construct for use in the connectivity algorithm.
|
||||||
|
@ -282,7 +282,7 @@ void SCH_SHEET_PATH::GetComponents( SCH_REFERENCE_LIST& aReferences, bool aInclu
|
||||||
{
|
{
|
||||||
SCH_REFERENCE schReference( component, part, *this );
|
SCH_REFERENCE schReference( component, part, *this );
|
||||||
|
|
||||||
schReference.SetSheetNumber( m_pageNumber );
|
schReference.SetSheetNumber( m_virtualPageNumber );
|
||||||
aReferences.AddItem( schReference );
|
aReferences.AddItem( schReference );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -307,7 +307,7 @@ void SCH_SHEET_PATH::GetMultiUnitComponents( SCH_MULTI_UNIT_REFERENCE_MAP& aRefL
|
||||||
if( part && part->GetUnitCount() > 1 )
|
if( part && part->GetUnitCount() > 1 )
|
||||||
{
|
{
|
||||||
SCH_REFERENCE schReference = SCH_REFERENCE( component, part, *this );
|
SCH_REFERENCE schReference = SCH_REFERENCE( component, part, *this );
|
||||||
schReference.SetSheetNumber( m_pageNumber );
|
schReference.SetSheetNumber( m_virtualPageNumber );
|
||||||
wxString reference_str = schReference.GetRef();
|
wxString reference_str = schReference.GetRef();
|
||||||
|
|
||||||
// Never lock unassigned references
|
// Never lock unassigned references
|
||||||
|
@ -441,7 +441,7 @@ void SCH_SHEET_LIST::BuildSheetList( SCH_SHEET* aSheet, bool aCheckIntegrity )
|
||||||
std::vector<SCH_SHEET*> badSheets;
|
std::vector<SCH_SHEET*> badSheets;
|
||||||
|
|
||||||
m_currentSheetPath.push_back( aSheet );
|
m_currentSheetPath.push_back( aSheet );
|
||||||
|
m_currentSheetPath.SetVirtualPageNumber( static_cast<int>( size() ) + 1 );
|
||||||
push_back( m_currentSheetPath );
|
push_back( m_currentSheetPath );
|
||||||
|
|
||||||
if( m_currentSheetPath.LastScreen() )
|
if( m_currentSheetPath.LastScreen() )
|
||||||
|
|
|
@ -141,7 +141,7 @@ protected:
|
||||||
|
|
||||||
size_t m_current_hash;
|
size_t m_current_hash;
|
||||||
|
|
||||||
int m_pageNumber; /// Page numbers are maintained by the sheet load order.
|
int m_virtualPageNumber; /// Page numbers are maintained by the sheet load order.
|
||||||
|
|
||||||
std::map<std::pair<wxString, wxString>, bool> m_recursion_test_cache;
|
std::map<std::pair<wxString, wxString>, bool> m_recursion_test_cache;
|
||||||
|
|
||||||
|
@ -186,6 +186,24 @@ public:
|
||||||
|
|
||||||
size_t GetCurrentHash() const { return m_current_hash; }
|
size_t GetCurrentHash() const { return m_current_hash; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the sheet instance virtual page number.
|
||||||
|
*
|
||||||
|
* Virtual page numbers are incremental integers set automatically when the sheet path
|
||||||
|
* hierarchy is created (@see #SCH_SHEET_LIST::BuildSheetList). The virtual page
|
||||||
|
* numbering is ordered by the X and Y position of the sheet in a schematic which
|
||||||
|
* mimics the page numbering code prior to the addition of actual user definable page
|
||||||
|
* numbers. Virtual page numbers should only be use when annotating schematics.
|
||||||
|
*/
|
||||||
|
void SetVirtualPageNumber( int aPageNumber ) { m_virtualPageNumber = aPageNumber; }
|
||||||
|
|
||||||
|
int GetVirtualPageNumber() const { return m_virtualPageNumber; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the sheet instance user definable page number.
|
||||||
|
*
|
||||||
|
* @note User definable page numbers can be any string devoid of white space characters.
|
||||||
|
*/
|
||||||
void SetPageNumber( const wxString& aPageNumber );
|
void SetPageNumber( const wxString& aPageNumber );
|
||||||
|
|
||||||
wxString GetPageNumber() const;
|
wxString GetPageNumber() const;
|
||||||
|
|
Loading…
Reference in New Issue