Add a start number to annotate.
This also makes the dialog modeless so that one switch between sheets while annotating to choose the base numbers for each sheet (assuming they don't like the base number we pick because of the order of the sheets). Fixes: lp:1154131 * https://bugs.launchpad.net/kicad/+bug/1154131
This commit is contained in:
parent
9241a399a7
commit
447fd1bf02
|
@ -80,6 +80,7 @@ void SCH_EDIT_FRAME::DeleteAnnotation( bool aCurrentSheetOnly )
|
||||||
void SCH_EDIT_FRAME::AnnotateComponents( bool aAnnotateSchematic,
|
void SCH_EDIT_FRAME::AnnotateComponents( bool aAnnotateSchematic,
|
||||||
ANNOTATE_ORDER_T aSortOption,
|
ANNOTATE_ORDER_T aSortOption,
|
||||||
ANNOTATE_OPTION_T aAlgoOption,
|
ANNOTATE_OPTION_T aAlgoOption,
|
||||||
|
int aStartNumber,
|
||||||
bool aResetAnnotation,
|
bool aResetAnnotation,
|
||||||
bool aRepairTimestamps,
|
bool aRepairTimestamps,
|
||||||
bool aLockUnits,
|
bool aLockUnits,
|
||||||
|
@ -109,7 +110,7 @@ void SCH_EDIT_FRAME::AnnotateComponents( bool aAnnotateSchematic,
|
||||||
{
|
{
|
||||||
wxString msg;
|
wxString msg;
|
||||||
msg.Printf( _( "%d duplicate time stamps were found and replaced." ), count );
|
msg.Printf( _( "%d duplicate time stamps were found and replaced." ), count );
|
||||||
aReporter.Report( msg, REPORTER::RPT_INFO );
|
aReporter.Report( msg, REPORTER::RPT_WARNING );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -182,7 +183,7 @@ void SCH_EDIT_FRAME::AnnotateComponents( bool aAnnotateSchematic,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Recalculate and update reference numbers in schematic
|
// Recalculate and update reference numbers in schematic
|
||||||
references.Annotate( useSheetNum, idStep, lockedComponents );
|
references.Annotate( useSheetNum, idStep, aStartNumber, lockedComponents );
|
||||||
references.UpdateAnnotation();
|
references.UpdateAnnotation();
|
||||||
|
|
||||||
for( size_t i = 0; i < references.GetCount(); i++ )
|
for( size_t i = 0; i < references.GetCount(); i++ )
|
||||||
|
@ -222,12 +223,12 @@ void SCH_EDIT_FRAME::AnnotateComponents( bool aAnnotateSchematic,
|
||||||
GetChars( newRef ) );
|
GetChars( newRef ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
aReporter.Report( msg, REPORTER::RPT_INFO );
|
aReporter.Report( msg, REPORTER::RPT_ACTION );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Final control (just in case ... ).
|
// Final control (just in case ... ).
|
||||||
if( !CheckAnnotate( aReporter, !aAnnotateSchematic ) )
|
if( !CheckAnnotate( aReporter, !aAnnotateSchematic ) )
|
||||||
aReporter.Report( _( "Annotation complete." ), REPORTER::RPT_INFO );
|
aReporter.Report( _( "Annotation complete." ), REPORTER::RPT_ACTION );
|
||||||
|
|
||||||
OnModify();
|
OnModify();
|
||||||
|
|
||||||
|
|
|
@ -271,7 +271,7 @@ int SCH_REFERENCE_LIST::CreateFirstFreeRefId( std::vector<int>& aIdList, int aFi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SCH_REFERENCE_LIST::Annotate( bool aUseSheetNum, int aSheetIntervalId,
|
void SCH_REFERENCE_LIST::Annotate( bool aUseSheetNum, int aSheetIntervalId, int aStartNumber,
|
||||||
SCH_MULTI_UNIT_REFERENCE_MAP aLockedUnitMap )
|
SCH_MULTI_UNIT_REFERENCE_MAP aLockedUnitMap )
|
||||||
{
|
{
|
||||||
if ( componentFlatList.size() == 0 )
|
if ( componentFlatList.size() == 0 )
|
||||||
|
@ -297,11 +297,13 @@ void SCH_REFERENCE_LIST::Annotate( bool aUseSheetNum, int aSheetIntervalId,
|
||||||
|
|
||||||
LastReferenceNumber = GetLastReference( first, minRefId );
|
LastReferenceNumber = GetLastReference( first, minRefId );
|
||||||
#else
|
#else
|
||||||
int minRefId = 1;
|
int minRefId;
|
||||||
|
|
||||||
// when using sheet number, ensure ref number >= sheet number* aSheetIntervalId
|
// when using sheet number, ensure ref number >= sheet number* aSheetIntervalId
|
||||||
if( aUseSheetNum )
|
if( aUseSheetNum )
|
||||||
minRefId = componentFlatList[first].m_SheetNum * aSheetIntervalId + 1;
|
minRefId = componentFlatList[first].m_SheetNum * aSheetIntervalId + 1;
|
||||||
|
else
|
||||||
|
minRefId = aStartNumber + 1;
|
||||||
|
|
||||||
// This is the list of all Id already in use for a given reference prefix.
|
// This is the list of all Id already in use for a given reference prefix.
|
||||||
// Will be refilled for each new reference prefix.
|
// Will be refilled for each new reference prefix.
|
||||||
|
@ -345,11 +347,11 @@ void SCH_REFERENCE_LIST::Annotate( bool aUseSheetNum, int aSheetIntervalId,
|
||||||
|
|
||||||
LastReferenceNumber = componentFlatList.GetLastReference( ii, minRefId );
|
LastReferenceNumber = componentFlatList.GetLastReference( ii, minRefId );
|
||||||
#else
|
#else
|
||||||
minRefId = 1;
|
|
||||||
|
|
||||||
// when using sheet number, ensure ref number >= sheet number* aSheetIntervalId
|
// when using sheet number, ensure ref number >= sheet number* aSheetIntervalId
|
||||||
if( aUseSheetNum )
|
if( aUseSheetNum )
|
||||||
minRefId = componentFlatList[ii].m_SheetNum * aSheetIntervalId + 1;
|
minRefId = componentFlatList[ii].m_SheetNum * aSheetIntervalId + 1;
|
||||||
|
else
|
||||||
|
minRefId = aStartNumber + 1;
|
||||||
|
|
||||||
GetRefsInUse( first, idList, minRefId );
|
GetRefsInUse( first, idList, minRefId );
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -86,6 +86,8 @@ private:
|
||||||
*/
|
*/
|
||||||
int GetAnnotateAlgo();
|
int GetAnnotateAlgo();
|
||||||
|
|
||||||
|
int GetStartNumber();
|
||||||
|
|
||||||
bool GetAnnotateKeepOpen()
|
bool GetAnnotateKeepOpen()
|
||||||
{
|
{
|
||||||
return m_cbKeepDlgOpen->GetValue();
|
return m_cbKeepDlgOpen->GetValue();
|
||||||
|
@ -109,6 +111,7 @@ DIALOG_ANNOTATE::DIALOG_ANNOTATE( SCH_EDIT_FRAME* parent, const wxString& messag
|
||||||
m_userMessage->Show( true );
|
m_userMessage->Show( true );
|
||||||
|
|
||||||
m_rbScope->Enable( false );
|
m_rbScope->Enable( false );
|
||||||
|
m_cbKeepDlgOpen->Show( false );
|
||||||
}
|
}
|
||||||
|
|
||||||
m_MessageWindow->SetLabel( _( "Annotation Messages:" ) );
|
m_MessageWindow->SetLabel( _( "Annotation Messages:" ) );
|
||||||
|
@ -124,7 +127,7 @@ DIALOG_ANNOTATE::DIALOG_ANNOTATE( SCH_EDIT_FRAME* parent, const wxString& messag
|
||||||
DIALOG_ANNOTATE::~DIALOG_ANNOTATE()
|
DIALOG_ANNOTATE::~DIALOG_ANNOTATE()
|
||||||
{
|
{
|
||||||
m_Config->Write( KEY_ANNOTATE_SORT_OPTION, GetSortOrder() );
|
m_Config->Write( KEY_ANNOTATE_SORT_OPTION, GetSortOrder() );
|
||||||
m_Config->Write( KEY_ANNOTATE_ALGO_OPTION, m_rbNumbering->GetSelection() );
|
m_Config->Write( KEY_ANNOTATE_ALGO_OPTION, GetAnnotateAlgo() );
|
||||||
m_Config->Write( KEY_ANNOTATE_KEEP_OPEN_OPTION, GetAnnotateKeepOpen() );
|
m_Config->Write( KEY_ANNOTATE_KEEP_OPEN_OPTION, GetAnnotateKeepOpen() );
|
||||||
m_Config->Write( KEY_ANNOTATE_ASK_FOR_CONFIRMATION, GetAnnotateAskForConfirmation() );
|
m_Config->Write( KEY_ANNOTATE_ASK_FOR_CONFIRMATION, GetAnnotateAskForConfirmation() );
|
||||||
|
|
||||||
|
@ -156,7 +159,22 @@ void DIALOG_ANNOTATE::InitValues()
|
||||||
}
|
}
|
||||||
|
|
||||||
m_Config->Read( KEY_ANNOTATE_ALGO_OPTION, &option, 0L );
|
m_Config->Read( KEY_ANNOTATE_ALGO_OPTION, &option, 0L );
|
||||||
m_rbNumbering->SetSelection( option );
|
switch( option )
|
||||||
|
{
|
||||||
|
default:
|
||||||
|
case 0:
|
||||||
|
m_rbFirstFree->SetValue( 1 );
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
m_rbSheetX100->SetValue( 100 );
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
m_rbSheetX1000->SetValue( 1000 );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
m_textNumberAfter->SetValue( wxT( "0" ) );
|
||||||
|
|
||||||
m_Config->Read( KEY_ANNOTATE_KEEP_OPEN_OPTION, &option, 0L );
|
m_Config->Read( KEY_ANNOTATE_KEEP_OPEN_OPTION, &option, 0L );
|
||||||
m_cbKeepDlgOpen->SetValue( option );
|
m_cbKeepDlgOpen->SetValue( option );
|
||||||
|
@ -220,7 +238,7 @@ void DIALOG_ANNOTATE::OnApplyClick( wxCommandEvent& event )
|
||||||
m_MessageWindow->SetLazyUpdate( true ); // Don't update after each message
|
m_MessageWindow->SetLazyUpdate( true ); // Don't update after each message
|
||||||
|
|
||||||
m_Parent->AnnotateComponents( GetLevel(), (ANNOTATE_ORDER_T) GetSortOrder(),
|
m_Parent->AnnotateComponents( GetLevel(), (ANNOTATE_ORDER_T) GetSortOrder(),
|
||||||
(ANNOTATE_OPTION_T) GetAnnotateAlgo(),
|
(ANNOTATE_OPTION_T) GetAnnotateAlgo(), GetStartNumber(),
|
||||||
GetResetItems() , true, GetLockUnits(), reporter );
|
GetResetItems() , true, GetLockUnits(), reporter );
|
||||||
|
|
||||||
m_MessageWindow->Flush(); // Now update to show all messages
|
m_MessageWindow->Flush(); // Now update to show all messages
|
||||||
|
@ -229,9 +247,13 @@ void DIALOG_ANNOTATE::OnApplyClick( wxCommandEvent& event )
|
||||||
|
|
||||||
m_btnClear->Enable();
|
m_btnClear->Enable();
|
||||||
|
|
||||||
if( !GetAnnotateKeepOpen() && !reporter.HasMessage() )
|
// Don't close dialog if there are things the user needs to address
|
||||||
|
if( reporter.HasMessage() )
|
||||||
|
return;
|
||||||
|
|
||||||
|
if( m_userMessage->IsShown() || !GetAnnotateKeepOpen() )
|
||||||
{
|
{
|
||||||
// Close the dialog by calling the default dialog handler for a wxID_OK event
|
// Close the dialog by calling the default handler for a wxID_OK event
|
||||||
event.SetId( wxID_OK );
|
event.SetId( wxID_OK );
|
||||||
event.Skip();
|
event.Skip();
|
||||||
}
|
}
|
||||||
|
@ -288,21 +310,38 @@ int DIALOG_ANNOTATE::GetSortOrder()
|
||||||
|
|
||||||
int DIALOG_ANNOTATE::GetAnnotateAlgo()
|
int DIALOG_ANNOTATE::GetAnnotateAlgo()
|
||||||
{
|
{
|
||||||
return m_rbNumbering->GetSelection();
|
if( m_rbSheetX100->GetValue() )
|
||||||
|
return 1;
|
||||||
|
else if( m_rbSheetX1000->GetValue() )
|
||||||
|
return 2;
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void InvokeDialogAnnotate( SCH_EDIT_FRAME* aCaller )
|
int DIALOG_ANNOTATE::GetStartNumber()
|
||||||
{
|
{
|
||||||
DIALOG_ANNOTATE dlg( aCaller, wxT( "" ) );
|
return ValueFromString( EDA_UNITS_T::UNSCALED_UNITS, m_textNumberAfter->GetValue() );
|
||||||
|
|
||||||
dlg.ShowModal();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int InvokeDialogAnnotate( SCH_EDIT_FRAME* aCaller, const wxString& aMessage )
|
void SCH_EDIT_FRAME::OnAnnotate( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
DIALOG_ANNOTATE dlg( aCaller, aMessage );
|
if( !m_annotateDialog )
|
||||||
|
{
|
||||||
|
m_annotateDialog = new DIALOG_ANNOTATE( this, wxEmptyString );
|
||||||
|
m_annotateDialog->Show( true );
|
||||||
|
}
|
||||||
|
else // The dialog is just not visible
|
||||||
|
{
|
||||||
|
m_annotateDialog->Show( true );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int SCH_EDIT_FRAME::ModalAnnotate( const wxString& aMessage )
|
||||||
|
{
|
||||||
|
DIALOG_ANNOTATE dlg( this, aMessage );
|
||||||
|
|
||||||
return dlg.ShowModal();
|
return dlg.ShowModal();
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,9 +44,6 @@ DIALOG_ANNOTATE_BASE::DIALOG_ANNOTATE_BASE( wxWindow* parent, wxWindowID id, con
|
||||||
wxStaticBoxSizer* sbSizer1;
|
wxStaticBoxSizer* sbSizer1;
|
||||||
sbSizer1 = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Order") ), wxVERTICAL );
|
sbSizer1 = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Order") ), wxVERTICAL );
|
||||||
|
|
||||||
wxBoxSizer* b_orderOptSizer;
|
|
||||||
b_orderOptSizer = new wxBoxSizer( wxVERTICAL );
|
|
||||||
|
|
||||||
wxBoxSizer* bSizerXpos;
|
wxBoxSizer* bSizerXpos;
|
||||||
bSizerXpos = new wxBoxSizer( wxHORIZONTAL );
|
bSizerXpos = new wxBoxSizer( wxHORIZONTAL );
|
||||||
|
|
||||||
|
@ -60,7 +57,7 @@ DIALOG_ANNOTATE_BASE::DIALOG_ANNOTATE_BASE( wxWindow* parent, wxWindowID id, con
|
||||||
bSizerXpos->Add( annotate_down_right_bitmap, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
|
bSizerXpos->Add( annotate_down_right_bitmap, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
|
||||||
|
|
||||||
|
|
||||||
b_orderOptSizer->Add( bSizerXpos, 0, wxEXPAND, 5 );
|
sbSizer1->Add( bSizerXpos, 0, wxEXPAND, 5 );
|
||||||
|
|
||||||
wxBoxSizer* bSizerYpos;
|
wxBoxSizer* bSizerYpos;
|
||||||
bSizerYpos = new wxBoxSizer( wxHORIZONTAL );
|
bSizerYpos = new wxBoxSizer( wxHORIZONTAL );
|
||||||
|
@ -75,10 +72,7 @@ DIALOG_ANNOTATE_BASE::DIALOG_ANNOTATE_BASE( wxWindow* parent, wxWindowID id, con
|
||||||
bSizerYpos->Add( annotate_right_down_bitmap, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
|
bSizerYpos->Add( annotate_right_down_bitmap, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
|
||||||
|
|
||||||
|
|
||||||
b_orderOptSizer->Add( bSizerYpos, 0, wxEXPAND, 5 );
|
sbSizer1->Add( bSizerYpos, 0, wxEXPAND, 5 );
|
||||||
|
|
||||||
|
|
||||||
sbSizer1->Add( b_orderOptSizer, 0, wxEXPAND|wxLEFT, 5 );
|
|
||||||
|
|
||||||
|
|
||||||
fgSizer1->Add( sbSizer1, 0, wxALL|wxEXPAND, 5 );
|
fgSizer1->Add( sbSizer1, 0, wxALL|wxEXPAND, 5 );
|
||||||
|
@ -89,11 +83,31 @@ DIALOG_ANNOTATE_BASE::DIALOG_ANNOTATE_BASE( wxWindow* parent, wxWindowID id, con
|
||||||
m_rbOptions->SetSelection( 0 );
|
m_rbOptions->SetSelection( 0 );
|
||||||
fgSizer1->Add( m_rbOptions, 0, wxALL|wxEXPAND, 5 );
|
fgSizer1->Add( m_rbOptions, 0, wxALL|wxEXPAND, 5 );
|
||||||
|
|
||||||
wxString m_rbNumberingChoices[] = { _("Use first free number in schematic"), _("First free above sheet number * 100"), _("First free above sheet number * 1000") };
|
wxStaticBoxSizer* sbSizer2;
|
||||||
int m_rbNumberingNChoices = sizeof( m_rbNumberingChoices ) / sizeof( wxString );
|
sbSizer2 = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Numbering") ), wxVERTICAL );
|
||||||
m_rbNumbering = new wxRadioBox( this, wxID_ANY, _("Numbering"), wxDefaultPosition, wxDefaultSize, m_rbNumberingNChoices, m_rbNumberingChoices, 1, wxRA_SPECIFY_COLS );
|
|
||||||
m_rbNumbering->SetSelection( 1 );
|
wxGridBagSizer* gbSizer1;
|
||||||
fgSizer1->Add( m_rbNumbering, 0, wxALL|wxEXPAND, 5 );
|
gbSizer1 = new wxGridBagSizer( 0, 0 );
|
||||||
|
gbSizer1->SetFlexibleDirection( wxBOTH );
|
||||||
|
gbSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
|
||||||
|
|
||||||
|
m_rbFirstFree = new wxRadioButton( sbSizer2->GetStaticBox(), wxID_FIRST_FREE, _("Use first free number after:"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP );
|
||||||
|
gbSizer1->Add( m_rbFirstFree, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxTOP, 2 );
|
||||||
|
|
||||||
|
m_textNumberAfter = new wxTextCtrl( sbSizer2->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60,-1 ), 0 );
|
||||||
|
gbSizer1->Add( m_textNumberAfter, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxLEFT, 2 );
|
||||||
|
|
||||||
|
m_rbSheetX100 = new wxRadioButton( sbSizer2->GetStaticBox(), wxID_SHEET_X_100, _("First free after sheet number X 100"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||||
|
gbSizer1->Add( m_rbSheetX100, wxGBPosition( 1, 0 ), wxGBSpan( 1, 2 ), wxBOTTOM|wxTOP, 4 );
|
||||||
|
|
||||||
|
m_rbSheetX1000 = new wxRadioButton( sbSizer2->GetStaticBox(), wxID_SHEET_X_1000, _("First free after sheet number X 1000"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||||
|
gbSizer1->Add( m_rbSheetX1000, wxGBPosition( 2, 0 ), wxGBSpan( 1, 2 ), wxBOTTOM|wxTOP, 2 );
|
||||||
|
|
||||||
|
|
||||||
|
sbSizer2->Add( gbSizer1, 1, wxEXPAND, 5 );
|
||||||
|
|
||||||
|
|
||||||
|
fgSizer1->Add( sbSizer2, 1, wxALL|wxEXPAND, 5 );
|
||||||
|
|
||||||
|
|
||||||
bupperSizer->Add( fgSizer1, 0, wxBOTTOM|wxEXPAND, 5 );
|
bupperSizer->Add( fgSizer1, 0, wxBOTTOM|wxEXPAND, 5 );
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -28,6 +28,8 @@ class WX_HTML_REPORT_PANEL;
|
||||||
#include <wx/statbmp.h>
|
#include <wx/statbmp.h>
|
||||||
#include <wx/sizer.h>
|
#include <wx/sizer.h>
|
||||||
#include <wx/statbox.h>
|
#include <wx/statbox.h>
|
||||||
|
#include <wx/textctrl.h>
|
||||||
|
#include <wx/gbsizer.h>
|
||||||
#include <wx/checkbox.h>
|
#include <wx/checkbox.h>
|
||||||
#include <wx/button.h>
|
#include <wx/button.h>
|
||||||
#include <wx/panel.h>
|
#include <wx/panel.h>
|
||||||
|
@ -37,7 +39,10 @@ class WX_HTML_REPORT_PANEL;
|
||||||
|
|
||||||
#define ID_SORT_BY_X_POSITION 1000
|
#define ID_SORT_BY_X_POSITION 1000
|
||||||
#define ID_SORT_BY_Y_POSITION 1001
|
#define ID_SORT_BY_Y_POSITION 1001
|
||||||
#define ID_CLEAR_ANNOTATION_CMP 1002
|
#define wxID_FIRST_FREE 1002
|
||||||
|
#define wxID_SHEET_X_100 1003
|
||||||
|
#define wxID_SHEET_X_1000 1004
|
||||||
|
#define ID_CLEAR_ANNOTATION_CMP 1005
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
/// Class DIALOG_ANNOTATE_BASE
|
/// Class DIALOG_ANNOTATE_BASE
|
||||||
|
@ -54,7 +59,10 @@ class DIALOG_ANNOTATE_BASE : public DIALOG_SHIM
|
||||||
wxRadioButton* m_rbSortBy_Y_Position;
|
wxRadioButton* m_rbSortBy_Y_Position;
|
||||||
wxStaticBitmap* annotate_right_down_bitmap;
|
wxStaticBitmap* annotate_right_down_bitmap;
|
||||||
wxRadioBox* m_rbOptions;
|
wxRadioBox* m_rbOptions;
|
||||||
wxRadioBox* m_rbNumbering;
|
wxRadioButton* m_rbFirstFree;
|
||||||
|
wxTextCtrl* m_textNumberAfter;
|
||||||
|
wxRadioButton* m_rbSheetX100;
|
||||||
|
wxRadioButton* m_rbSheetX1000;
|
||||||
wxCheckBox* m_cbKeepDlgOpen;
|
wxCheckBox* m_cbKeepDlgOpen;
|
||||||
wxCheckBox* m_cbAskForConfirmation;
|
wxCheckBox* m_cbAskForConfirmation;
|
||||||
wxButton* m_btnApply;
|
wxButton* m_btnApply;
|
||||||
|
|
|
@ -65,15 +65,6 @@ class SCH_EDIT_FRAME;
|
||||||
*/
|
*/
|
||||||
int InvokeDialogRescueEach( SCH_EDIT_FRAME* aCaller, RESCUER& aRescuer, bool aAskShowAgain );
|
int InvokeDialogRescueEach( SCH_EDIT_FRAME* aCaller, RESCUER& aRescuer, bool aAskShowAgain );
|
||||||
|
|
||||||
/// Create and show DIALOG_ANNOTATE.
|
|
||||||
void InvokeDialogAnnotate( SCH_EDIT_FRAME* aCaller );
|
|
||||||
|
|
||||||
/// Create and show a modal DIALOG_ANNOTATE for a particular purpose. This version
|
|
||||||
/// forces scope to Full Schematic.
|
|
||||||
/// @param aMessage - indicates the purpose
|
|
||||||
/// @return the ShowModal() result
|
|
||||||
int InvokeDialogAnnotate( SCH_EDIT_FRAME* aCaller, const wxString& aMessage );
|
|
||||||
|
|
||||||
/// Create the modeless DIALOG_ERC and show it, return something to
|
/// Create the modeless DIALOG_ERC and show it, return something to
|
||||||
/// destroy or close it. The dialog will have ID_DIALOG_ERC from id.h
|
/// destroy or close it. The dialog will have ID_DIALOG_ERC from id.h
|
||||||
wxDialog* InvokeDialogERC( SCH_EDIT_FRAME* aCaller );
|
wxDialog* InvokeDialogERC( SCH_EDIT_FRAME* aCaller );
|
||||||
|
|
|
@ -173,10 +173,8 @@ bool SCH_EDIT_FRAME::prepareForNetlist()
|
||||||
// Performs some controls:
|
// Performs some controls:
|
||||||
if( CheckAnnotate( NULL_REPORTER::GetInstance(), 0 ) )
|
if( CheckAnnotate( NULL_REPORTER::GetInstance(), 0 ) )
|
||||||
{
|
{
|
||||||
// Schematic must be annotated: call Annotate dialog and tell
|
// Schematic must be annotated: call Annotate dialog and tell the user why.
|
||||||
// the user why that is.
|
ModalAnnotate( _( "Exporting the netlist requires a completely annotated schematic." ) );
|
||||||
InvokeDialogAnnotate( this,
|
|
||||||
_( "Exporting the netlist requires a completely annotated schematic." ) );
|
|
||||||
|
|
||||||
if( CheckAnnotate( NULL_REPORTER::GetInstance(), 0 ) )
|
if( CheckAnnotate( NULL_REPORTER::GetInstance(), 0 ) )
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -363,6 +363,7 @@ SCH_EDIT_FRAME::SCH_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ):
|
||||||
m_printMonochrome = true;
|
m_printMonochrome = true;
|
||||||
m_printSheetReference = true;
|
m_printSheetReference = true;
|
||||||
SetShowPageLimits( true );
|
SetShowPageLimits( true );
|
||||||
|
m_annotateDialog = nullptr;
|
||||||
m_hotkeysDescrList = g_Schematic_Hokeys_Descr;
|
m_hotkeysDescrList = g_Schematic_Hokeys_Descr;
|
||||||
m_dlgFindReplace = NULL;
|
m_dlgFindReplace = NULL;
|
||||||
m_findReplaceData = new wxFindReplaceData( wxFR_DOWN );
|
m_findReplaceData = new wxFindReplaceData( wxFR_DOWN );
|
||||||
|
@ -829,12 +830,6 @@ void SCH_EDIT_FRAME::OnUpdateHierarchySheet( wxUpdateUIEvent& aEvent )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SCH_EDIT_FRAME::OnAnnotate( wxCommandEvent& event )
|
|
||||||
{
|
|
||||||
InvokeDialogAnnotate( this );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void SCH_EDIT_FRAME::OnErc( wxCommandEvent& event )
|
void SCH_EDIT_FRAME::OnErc( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
// See if it's already open...
|
// See if it's already open...
|
||||||
|
@ -894,7 +889,7 @@ void SCH_EDIT_FRAME::doUpdatePcb( const wxString& aUpdateOptions )
|
||||||
schematic.UpdateSymbolLinks();
|
schematic.UpdateSymbolLinks();
|
||||||
SCH_SHEET_LIST sheets( g_RootSheet );
|
SCH_SHEET_LIST sheets( g_RootSheet );
|
||||||
sheets.AnnotatePowerSymbols();
|
sheets.AnnotatePowerSymbols();
|
||||||
AnnotateComponents( true, UNSORTED, INCREMENTAL_BY_REF, false, false, true,
|
AnnotateComponents( true, UNSORTED, INCREMENTAL_BY_REF, 0, false, false, true,
|
||||||
NULL_REPORTER::GetInstance() );
|
NULL_REPORTER::GetInstance() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -60,6 +60,7 @@ class SCH_FIELD;
|
||||||
class LIB_PIN;
|
class LIB_PIN;
|
||||||
class SCH_JUNCTION;
|
class SCH_JUNCTION;
|
||||||
class DIALOG_SCH_FIND;
|
class DIALOG_SCH_FIND;
|
||||||
|
class DIALOG_ANNOTATE;
|
||||||
class wxFindDialogEvent;
|
class wxFindDialogEvent;
|
||||||
class wxFindReplaceData;
|
class wxFindReplaceData;
|
||||||
class SCHLIB_FILTER;
|
class SCHLIB_FILTER;
|
||||||
|
@ -131,6 +132,7 @@ private:
|
||||||
wxSize m_printDialogSize;
|
wxSize m_printDialogSize;
|
||||||
bool m_printMonochrome; ///< Print monochrome instead of grey scale.
|
bool m_printMonochrome; ///< Print monochrome instead of grey scale.
|
||||||
bool m_printSheetReference;
|
bool m_printSheetReference;
|
||||||
|
DIALOG_ANNOTATE* m_annotateDialog;
|
||||||
DIALOG_SCH_FIND* m_dlgFindReplace;
|
DIALOG_SCH_FIND* m_dlgFindReplace;
|
||||||
wxPoint m_findDialogPosition;
|
wxPoint m_findDialogPosition;
|
||||||
wxSize m_findDialogSize;
|
wxSize m_findDialogSize;
|
||||||
|
@ -590,6 +592,7 @@ public:
|
||||||
* the current sheet only.
|
* the current sheet only.
|
||||||
* @param aSortOption Define the annotation order. See #ANNOTATE_ORDER_T.
|
* @param aSortOption Define the annotation order. See #ANNOTATE_ORDER_T.
|
||||||
* @param aAlgoOption Define the annotation style. See #ANNOTATE_OPTION_T.
|
* @param aAlgoOption Define the annotation style. See #ANNOTATE_OPTION_T.
|
||||||
|
* @param aStartNumber The start number for non-sheet-based annotation styles.
|
||||||
* @param aResetAnnotation Clear any previous annotation if true. Otherwise, keep the
|
* @param aResetAnnotation Clear any previous annotation if true. Otherwise, keep the
|
||||||
* existing component annotation.
|
* existing component annotation.
|
||||||
* @param aRepairTimestamps Test for and repair any duplicate time stamps if true.
|
* @param aRepairTimestamps Test for and repair any duplicate time stamps if true.
|
||||||
|
@ -611,8 +614,9 @@ public:
|
||||||
* 200 to 299, and so on.
|
* 200 to 299, and so on.
|
||||||
*/
|
*/
|
||||||
void AnnotateComponents( bool aAnnotateSchematic, ANNOTATE_ORDER_T aSortOption,
|
void AnnotateComponents( bool aAnnotateSchematic, ANNOTATE_ORDER_T aSortOption,
|
||||||
ANNOTATE_OPTION_T aAlgoOption, bool aResetAnnotation,
|
ANNOTATE_OPTION_T aAlgoOption, int aStartNumber,
|
||||||
bool aRepairTimestamps, bool aLockUnits, REPORTER& aReporter );
|
bool aResetAnnotation, bool aRepairTimestamps, bool aLockUnits,
|
||||||
|
REPORTER& aReporter );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check for annotation errors.
|
* Check for annotation errors.
|
||||||
|
@ -632,6 +636,13 @@ public:
|
||||||
*/
|
*/
|
||||||
int CheckAnnotate( REPORTER& aReporter, bool aOneSheetOnly );
|
int CheckAnnotate( REPORTER& aReporter, bool aOneSheetOnly );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run a modal version of the Annotate dialog for a specific purpose.
|
||||||
|
* @param aMessage A user message indicating the purpose.
|
||||||
|
* @return the result of ShowModal()
|
||||||
|
*/
|
||||||
|
int ModalAnnotate( const wxString& aMessage );
|
||||||
|
|
||||||
// Functions used for hierarchy handling
|
// Functions used for hierarchy handling
|
||||||
SCH_SHEET_PATH& GetCurrentSheet();
|
SCH_SHEET_PATH& GetCurrentSheet();
|
||||||
|
|
||||||
|
|
|
@ -287,6 +287,7 @@ public:
|
||||||
* @param aUseSheetNum Set to true to start annotation for each sheet at the sheet number
|
* @param aUseSheetNum Set to true to start annotation for each sheet at the sheet number
|
||||||
* times \a aSheetIntervalId. Otherwise annotate incrementally.
|
* times \a aSheetIntervalId. Otherwise annotate incrementally.
|
||||||
* @param aSheetIntervalId The per sheet reference designator multiplier.
|
* @param aSheetIntervalId The per sheet reference designator multiplier.
|
||||||
|
* @param aStartNumber The number to start with if NOT numbering based on sheet number.
|
||||||
* @param aLockedUnitMap A SCH_MULTI_UNIT_REFERENCE_MAP of reference designator wxStrings
|
* @param aLockedUnitMap A SCH_MULTI_UNIT_REFERENCE_MAP of reference designator wxStrings
|
||||||
* to SCH_REFERENCE_LISTs. May be an empty map. If not empty, any multi-unit parts
|
* to SCH_REFERENCE_LISTs. May be an empty map. If not empty, any multi-unit parts
|
||||||
* found in this map will be annotated as a group rather than individually.
|
* found in this map will be annotated as a group rather than individually.
|
||||||
|
@ -297,7 +298,8 @@ public:
|
||||||
* referenced U201 to U351, and items in sheet 3 start from U352
|
* referenced U201 to U351, and items in sheet 3 start from U352
|
||||||
* </p>
|
* </p>
|
||||||
*/
|
*/
|
||||||
void Annotate( bool aUseSheetNum, int aSheetIntervalId, SCH_MULTI_UNIT_REFERENCE_MAP aLockedUnitMap );
|
void Annotate( bool aUseSheetNum, int aSheetIntervalId, int aStartNumber,
|
||||||
|
SCH_MULTI_UNIT_REFERENCE_MAP aLockedUnitMap );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function CheckAnnotation
|
* Function CheckAnnotation
|
||||||
|
|
|
@ -583,7 +583,7 @@ void SCH_SHEET_LIST::AnnotatePowerSymbols()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Recalculate and update reference numbers in schematic
|
// Recalculate and update reference numbers in schematic
|
||||||
references.Annotate( false, 100, lockedComponents );
|
references.Annotate( false, 0, 100, lockedComponents );
|
||||||
references.UpdateAnnotation();
|
references.UpdateAnnotation();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue