57#define RESOLVE_PAGE( T, pageIndex ) static_cast<T*>( m_treebook->ResolvePage( pageIndex ) ) 
   60        PAGED_DIALOG( aParentWindow ? aParentWindow : aFrame, 
_( 
"Board Setup" ), false, false,
 
   61                      _( 
"Import Settings from Another Board..." ), wxSize( 980, 600 ) ),
 
   84    SetEvtHandlerEnabled( 
false );
 
  100            [
this]( wxWindow* aParent ) -> wxWindow*
 
  103            },  
_( 
"Board Editor Layers" ) );
 
  107            [
this]( wxWindow* aParent ) -> wxWindow*
 
  112            },  
_( 
"Physical Stackup" ) );
 
  116            [
this]( wxWindow* aParent ) -> wxWindow*
 
  119            }, 
_( 
"Board Finish" ) );
 
  123            [
this]( wxWindow* aParent ) -> wxWindow*
 
  126            }, 
_( 
"Solder Mask/Paste" ) );
 
  132            [
this]( wxWindow* aParent ) -> wxWindow*
 
  135            }, 
_( 
"Defaults" ) );
 
  139            [
this]( wxWindow* aParent ) -> wxWindow*
 
  142            }, 
_( 
"Formatting" ) );
 
  145            [
this]( wxWindow* aParent ) -> wxWindow*
 
  148            }, 
_( 
"Text Variables" ) );
 
  154            [
this]( wxWindow* aParent ) -> wxWindow*
 
  157            }, 
_( 
"Constraints" ) );
 
  161            [
this]( wxWindow* aParent ) -> wxWindow*
 
  164            },  
_( 
"Pre-defined Sizes" ) );
 
  168            [
this]( wxWindow* aParent ) -> wxWindow*
 
  171            }, 
_( 
"Teardrops" ) );
 
  175            [
this]( wxWindow* aParent ) -> wxWindow*
 
  183            }, 
_( 
"Length-tuning Patterns" ) );
 
  187            [
this]( wxWindow* aParent ) -> wxWindow*
 
  191                                                        m_frame->Prj().GetProjectFile().TuningProfileParameters() );
 
  193            _( 
"Tuning Profiles" ) );
 
  197            [
this]( wxWindow* aParent ) -> wxWindow*
 
  201                                                   m_frame->Prj().GetProjectFile().NetSettings(),
 
  204            }, 
_( 
"Net Classes" ) );
 
  208            [
this]( wxWindow* aParent ) -> wxWindow*
 
  212                        aParent, 
m_frame, 
m_frame->Prj().GetProjectFile().ComponentClassSettings(),
 
  215            _( 
"Component Classes" ) );
 
  219            [
this]( wxWindow* aParent ) -> wxWindow*
 
  223            _( 
"Custom Rules" ) );
 
  227            [
this]( wxWindow* aParent ) -> wxWindow*
 
  233            _( 
"Violation Severity" ) );
 
  238            [
this]( wxWindow* aParent ) -> wxWindow*
 
  242            _( 
"Embedded Files" ) );
 
  244    for( 
size_t i = 0; i < 
m_treebook->GetPageCount(); ++i )
 
  247    SetEvtHandlerEnabled( 
true );
 
  251    if( 
Prj().IsReadOnly() )
 
  253        m_infoBar->ShowMessage( 
_( 
"Project is missing or read-only. Some settings will not " 
  258    wxBookCtrlEvent evt( wxEVT_TREEBOOK_PAGE_CHANGED, wxID_ANY, 0 );
 
 
  273    size_t page = aEvent.GetSelection();
 
  308        if( 
Prj().IsReadOnly() )
 
 
  322    if( importDlg.
ShowModal() == wxID_CANCEL )
 
  326    wxFileName projectFn( boardFn );
 
  330    if( !
m_frame->GetSettingsManager()->LoadProject( projectFn.GetFullPath(), 
false ) )
 
  332        wxString msg = wxString::Format( 
_( 
"Error importing settings from board:\n" 
  333                                            "Associated project file %s could not be loaded" ),
 
  334                                         projectFn.GetFullPath() );
 
  346    bool okToProceed = 
true;
 
  348    PROJECT* otherPrj = 
m_frame->GetSettingsManager()->GetProject( projectFn.GetFullPath() );
 
  351    BOARD*              otherBoard = 
nullptr;
 
  357        pi->SetProgressReporter( &progressReporter );
 
  359        otherBoard = pi->LoadBoard( boardFn.GetFullPath(), 
nullptr );
 
  366            okToProceed = 
m_layers->CheckCopperLayerCount( loadedBoard, otherBoard );
 
  376            if( ioe.
Problem() != wxT( 
"CANCEL" ) )
 
  378                wxString msg = wxString::Format( 
_( 
"Error loading board file:\n%s" ),
 
  379                                                 boardFn.GetFullPath() );
 
  383            if( otherPrj != &
m_frame->Prj() )
 
  384                m_frame->GetSettingsManager()->UnloadProject( otherPrj, 
false );
 
  404            m_layers->ImportSettingsFrom( otherBoard );
 
  487        if( otherPrj != &
m_frame->Prj() )
 
  492    if( otherPrj != &
m_frame->Prj() )
 
  493        m_frame->GetSettingsManager()->UnloadProject( otherPrj, 
false );
 
 
Container for design settings for a BOARD object.
 
std::map< int, SEVERITY > m_DRCSeverities
 
PNS::MEANDER_SETTINGS m_DiffPairMeanderSettings
 
PNS::MEANDER_SETTINGS m_SingleTrackMeanderSettings
 
PNS::MEANDER_SETTINGS m_SkewMeanderSettings
 
Information pertinent to a Pcbnew printed circuit board.
 
std::set< wxString > GetNetClassAssignmentCandidates() const
Return the set of netname candidates for netclass assignment.
 
void SetProject(PROJECT *aProject, bool aReferenceOnly=false)
Link a board to a given project.
 
BOARD_DESIGN_SETTINGS & GetDesignSettings() const
 
size_t m_embeddedFilesPage
 
DIALOG_BOARD_SETUP(PCB_EDIT_FRAME *aFrame, wxWindow *aWindow=nullptr)
 
size_t m_tracksAndViasPage
 
size_t m_textAndGraphicsPage
 
size_t m_physicalStackupPage
 
PANEL_SETUP_TUNING_PROFILES * m_tuningProfiles
 
void onAuxiliaryAction(wxCommandEvent &aEvent) override
 
size_t m_tuningPatternsPage
 
PANEL_SETUP_BOARD_STACKUP * m_physicalStackup
 
PANEL_SETUP_BOARD_FINISH * m_boardFinish
 
PANEL_SETUP_LAYERS * m_layers
 
size_t m_tuningProfilesPage
 
size_t m_componentClassesPage
 
void onPageChanged(wxBookCtrlEvent &aEvent) override
 
PANEL_SETUP_NETCLASSES * m_netClasses
 
wxCheckBox * m_CustomRulesOpt
 
wxCheckBox * m_MaskAndPasteOpt
 
wxCheckBox * m_ConstraintsOpt
 
wxCheckBox * m_ComponentClassesOpt
 
wxCheckBox * m_TuningPatternsOpt
 
wxCheckBox * m_SeveritiesOpt
 
wxCheckBox * m_TextAndGraphicsOpt
 
wxCheckBox * m_TuningProfilesOpt
 
wxCheckBox * m_FormattingOpt
 
wxCheckBox * m_TeardropsOpt
 
wxCheckBox * m_TracksAndViasOpt
 
wxCheckBox * m_NetclassesOpt
 
void finishDialogSettings()
In all dialogs, we must call the same functions to fix minimal dlg size, the default position and per...
 
static std::vector< std::reference_wrapper< RC_ITEM > > GetItemsWithSeverities()
 
Hold an error message and may be used when throwing exceptions containing meaningful error messages.
 
virtual const wxString What() const
A composite of Problem() and Where()
 
virtual const wxString Problem() const
what was the problem?
 
PROJECT & Prj() const
Return a reference to the PROJECT associated with this KIWAY.
 
WX_TREEBOOK * GetTreebook()
 
PAGED_DIALOG(wxWindow *aParent, const wxString &aTitle, bool aShowReset, bool aShowOpenFolder, const wxString &aAuxiliaryAction=wxEmptyString, const wxSize &aInitialSize=wxDefaultSize)
 
virtual void onPageChanged(wxBookCtrlEvent &aEvent)
 
The main frame for Pcbnew.
 
static PCB_IO * PluginFind(PCB_FILE_T aFileType)
Return a #PLUGIN which the caller can use to import, export, save, or load design documents.
 
@ KICAD_SEXP
S-expression Pcbnew file format.
 
The backing store for a PROJECT, in JSON format.
 
std::shared_ptr< NET_SETTINGS > m_NetSettings
Net settings for this project (owned here)
 
std::shared_ptr< TUNING_PROFILES > & TuningProfileParameters()
 
std::shared_ptr< COMPONENT_CLASS_SETTINGS > m_ComponentClassSettings
Component class settings for the project (owned here)
 
Container for project specific data.
 
virtual PROJECT_FILE & GetProjectFile() const
 
Multi-thread safe progress reporter dialog, intended for use of tasks that parallel reporting back of...
 
void DisplayErrorMessage(wxWindow *aParent, const wxString &aText, const wxString &aExtraInfo)
Display an error message with aMessage.
 
This file is part of the common library.
 
#define RESOLVE_PAGE(T, pageIndex)
 
static const std::string ProjectFileExtension
 
std::unique_ptr< T > IO_RELEASER
Helper to hold and release an IO_BASE object when exceptions are thrown.
 
KICOMMON_API void Disable(wxWindow *aWindow)
Makes a window read-only.
 
Definition of file extensions used in Kicad.