44#include <wx/filedlg.h> 
   46#include <wx/wupdlock.h> 
  133            listItem.SetText( str );
 
  134            listItem.SetData( code );
 
  146                            { wxID_CANCEL, 
_( 
"Close" )   } } );
 
 
  179        g_lastIgnored.push_back( { m_ignoredList->GetItemText( ii ), m_ignoredList->GetItemData( ii ) } );
 
 
  200        SetReturnCode( wxID_CANCEL );
 
 
  217        int newValue = 
KiROUND( cur * 1000.0 );
 
  225    std::chrono::steady_clock::time_point now = std::chrono::steady_clock::now();
 
  226    if( std::chrono::duration_cast<std::chrono::milliseconds>( now - 
m_lastUpdateUi ).count()
 
  229        Pgm().
App().SafeYieldFor( 
this, wxEVT_CATEGORY_NATIVE_EVENTS );
 
 
  268    menu.Append( 4205, 
_( 
"Report All Errors for Each Track" ),
 
  269                 _( 
"If unchecked, only the first error will be reported for each track" ),
 
  273    menu.AppendSeparator();
 
  275    menu.Append( 4206, 
_( 
"Cross-probe Selected Items" ),
 
  276                 _( 
"Highlight corresponding items on canvas when selected in the DRC list" ),
 
  280    menu.Append( 4207, 
_( 
"Center on Cross-probe" ),
 
  281                 _( 
"When cross-probing, scroll the canvas so that the item is visible" ),
 
  286    int menu_id = 
m_bMenu->GetPopupMenuSelectionFromUser( menu );
 
  288    if( menu_id == 0 || menu_id == 4205 )
 
  292    else if( menu_id == 2 || menu_id == 4206 )
 
  296    else if( menu_id == 3 || menu_id == 4207 )
 
 
  305    m_frame->ShowBoardSetupDialog( 
_( 
"Custom Rules" ), 
this );
 
 
  311    if( 
int hotkey = aEvt.GetKeyCode() )
 
  313        if( aEvt.ControlDown() )
 
  315        if( aEvt.ShiftDown() )
 
 
  339    if( zoneFillerTool->IsBusy() )
 
  359        m_messages->Report( 
_( 
"DRC incomplete: could not compile custom design rules." )
 
  360                            + wxS( 
"  " )
 
  361                            + wxS( 
"<a href='$CUSTOM_RULES'>" ) + 
_( 
"Show design rules." ) + wxT( 
"</a>" ) );
 
  374    m_frame->GetBoard()->RecordDRCExclusions();
 
  380    for( std::reference_wrapper<RC_ITEM>& item : violations )
 
  386            listItem.SetText( wxT( 
" • " ) + item.get().GetErrorText() );
 
  387            listItem.SetData( item.get().GetErrorCode() );
 
  414        m_messages->Report( 
_( 
"-------- DRC canceled by user.<br><br>" ) );
 
 
  471    auto getActiveLayers =
 
  479                    for( 
int layer : aItem->GetLayerSet() )
 
  481                        if( 
pad->FlashLayer( layer ) )
 
  489                    return aItem->GetLayerSet();
 
  501    std::shared_ptr<RC_ITEM> rc_item = node->
m_RcItem;
 
  523    LSET         violationLayers;
 
  549        if( a || b || c || d )
 
  560            LSET layersList = getActiveLayers( it );
 
  561            violationLayers &= layersList;
 
  564                principalLayer = layersList.
Seq().front();
 
  568    if( violationLayers.count() )
 
  569        principalLayer = violationLayers.
Seq().front();
 
  570    else if( principalLayer >= 0 )
 
  571        violationLayers.
set( principalLayer );
 
  576        m_frame->GetAppearancePanel()->SetLayerVisible( principalLayer, 
true );
 
  579        m_frame->SetActiveLayer( principalLayer );
 
  583        if( !
m_frame->GetPcbNewSettings()->m_Display.m_ShowGlobalRatsnest )
 
  590            m_frame->GetBoard()->GetConnectivity()->RunOnUnconnectedEdges(
 
  606                            if( item == a && item == b )
 
  634        std::vector<BOARD_ITEM*> items;
 
  642            for( 
const KIID& 
id : rc_item->GetIDs() )
 
  646                if( candidate && candidate->GetNetCode() == net )
 
  647                    items.push_back( candidate );
 
  652            items.push_back( item );
 
 
  668    if( aEvent.GetItem().IsOk() )
 
 
  690    std::shared_ptr<RC_ITEM>           rcItem = node->m_RcItem;
 
  692    std::shared_ptr<CONNECTIVITY_DATA> conn = 
m_currentBoard->GetConnectivity();
 
  696    switch( 
bds().m_DRCSeverities[ rcItem->GetErrorCode() ] )
 
  700    default:                   listName = 
_( 
"appropriate" ); 
break;
 
  705        ID_EDIT_EXCLUSION_COMMENT = 4467,
 
  707        ID_REMOVE_EXCLUSION_ALL,
 
  709        ID_ADD_EXCLUSION_WITH_COMMENT,
 
  710        ID_ADD_EXCLUSION_ALL,
 
  711        ID_INSPECT_VIOLATION,
 
  713        ID_SET_SEVERITY_TO_ERROR,
 
  714        ID_SET_SEVERITY_TO_WARNING,
 
  715        ID_SET_SEVERITY_TO_IGNORE,
 
  719    if( rcItem->GetParent()->IsExcluded() )
 
  721        menu.Append( ID_REMOVE_EXCLUSION,
 
  722                     _( 
"Remove exclusion for this violation" ),
 
  723                     wxString::Format( 
_( 
"It will be placed back in the %s list" ), listName ) );
 
  725        menu.Append( ID_EDIT_EXCLUSION_COMMENT,
 
  726                     _( 
"Edit exclusion comment..." ) );
 
  730            menu.Append( ID_REMOVE_EXCLUSION_ALL,
 
  731                         wxString::Format( 
_( 
"Remove all exclusions for violations of rule '%s'" ),
 
  733                         wxString::Format( 
_( 
"They will be placed back in the %s list" ), listName ) );
 
  738        menu.Append( ID_ADD_EXCLUSION,
 
  739                     _( 
"Exclude this violation" ),
 
  740                     wxString::Format( 
_( 
"It will be excluded from the %s list" ), listName ) );
 
  742        menu.Append( ID_ADD_EXCLUSION_WITH_COMMENT,
 
  743                     _( 
"Exclude with comment..." ),
 
  744                     wxString::Format( 
_( 
"It will be excluded from the %s list" ), listName ) );
 
  748            menu.Append( ID_ADD_EXCLUSION_ALL,
 
  749                         wxString::Format( 
_( 
"Exclude all violations of rule '%s'..." ),
 
  751                         wxString::Format( 
_( 
"They will be excluded from the %s list" ), listName ) );
 
  755    menu.AppendSeparator();
 
  758    wxString fixDRCErrorMenuText = drcTool->FixDRCErrorMenuText( rcItem );
 
  760    if( !inspectDRCErrorMenuText.IsEmpty() || !fixDRCErrorMenuText.IsEmpty() )
 
  762        if( !inspectDRCErrorMenuText.IsEmpty() )
 
  763            menu.Append( ID_INSPECT_VIOLATION, inspectDRCErrorMenuText );
 
  765        if( !fixDRCErrorMenuText.IsEmpty() )
 
  766            menu.Append( ID_FIX_VIOLATION, fixDRCErrorMenuText );
 
  768        menu.AppendSeparator();
 
  773        menu.Append( ID_SET_SEVERITY_TO_ERROR,
 
  774                     wxString::Format( 
_( 
"Change severity to Error for all '%s' violations" ),
 
  775                                       rcItem->GetErrorText() ),
 
  776                     _( 
"Violation severities can also be edited in the Board Setup... dialog" ) );
 
  780        menu.Append( ID_SET_SEVERITY_TO_WARNING,
 
  781                     wxString::Format( 
_( 
"Change severity to Warning for all '%s' violations" ),
 
  782                                       rcItem->GetErrorText() ),
 
  783                     _( 
"Violation severities can also be edited in the Board Setup... dialog" ) );
 
  786    menu.Append( ID_SET_SEVERITY_TO_IGNORE,
 
  787                 wxString::Format( 
_( 
"Ignore all '%s' violations" ), rcItem->GetErrorText() ),
 
  788                 _( 
"Violations will not be checked or reported" ) );
 
  790    menu.AppendSeparator();
 
  792    menu.Append( ID_EDIT_SEVERITIES,
 
  793                 _( 
"Edit violation severities..." ),
 
  794                 _( 
"Open the Board Setup... dialog" ) );
 
  796    bool modified = 
false;
 
  797    int  command = GetPopupMenuSelectionFromUser( menu );
 
  801    case ID_EDIT_EXCLUSION_COMMENT:
 
  804            WX_TEXT_ENTRY_DIALOG dlg( 
this, wxEmptyString, 
_( 
"Exclusion Comment" ), marker->GetComment(), 
true );
 
  809            marker->SetExcluded( 
true, dlg.
GetValue() );
 
  811            wxString serialized = marker->SerializeToString();
 
  822    case ID_REMOVE_EXCLUSION:
 
  825            marker->SetExcluded( 
false );
 
  827            wxString serialized = marker->SerializeToString();
 
  833                m_frame->GetBoard()->UpdateRatsnestExclusions();
 
  834                m_frame->GetCanvas()->RedrawRatsnest();
 
  838                m_frame->GetCanvas()->GetView()->Update( marker );
 
  848    case ID_ADD_EXCLUSION:
 
  849    case ID_ADD_EXCLUSION_WITH_COMMENT:
 
  854            if( command == ID_ADD_EXCLUSION_WITH_COMMENT )
 
  864            marker->SetExcluded( 
true, comment );
 
  866            wxString serialized = marker->SerializeToString();
 
  872                m_frame->GetBoard()->UpdateRatsnestExclusions();
 
  873                m_frame->GetCanvas()->RedrawRatsnest();
 
  877                m_frame->GetCanvas()->GetView()->Update( marker );
 
  891    case ID_REMOVE_EXCLUSION_ALL:
 
  894            DRC_ITEM* candidateDrcItem = 
static_cast<DRC_ITEM*
>( marker->GetRCItem().get() );
 
  898                marker->SetExcluded( 
false );
 
  900                wxString serialized = marker->SerializeToString();
 
  911    case ID_ADD_EXCLUSION_ALL:
 
  914            DRC_ITEM* candidateDrcItem = 
static_cast<DRC_ITEM*
>( marker->GetRCItem().get() );
 
  918                marker->SetExcluded( 
true );
 
  920                wxString serialized = marker->SerializeToString();
 
  930    case ID_INSPECT_VIOLATION:
 
  934    case ID_FIX_VIOLATION:
 
  935        drcTool->FixDRCError( node->m_RcItem );
 
  938    case ID_SET_SEVERITY_TO_ERROR:
 
  943            if( marker->GetRCItem()->GetErrorCode() == rcItem->GetErrorCode() )
 
  944                m_frame->GetCanvas()->GetView()->Update( marker );
 
  952    case ID_SET_SEVERITY_TO_WARNING:
 
  957            if( marker->GetRCItem()->GetErrorCode() == rcItem->GetErrorCode() )
 
  958                m_frame->GetCanvas()->GetView()->Update( marker );
 
  966    case ID_SET_SEVERITY_TO_IGNORE:
 
  972        listItem.SetText( wxT( 
" • " ) + rcItem->GetErrorText() );
 
  973        listItem.SetData( rcItem->GetErrorCode() );
 
  979        std::vector<BOARD_ITEM*> toRemove;
 
  983            if( marker->GetRCItem()->GetErrorCode() == rcItem->GetErrorCode() )
 
  985                m_frame->GetCanvas()->GetView()->Remove( marker );
 
  986                toRemove.emplace_back( marker );
 
  996            m_frame->GetCanvas()->RedrawRatsnest();
 
 1004    case ID_EDIT_SEVERITIES:
 
 1005        m_frame->ShowBoardSetupDialog( 
_( 
"Violation Severity" ), 
this );
 
 
 1020    int    errorCode = (int) event.m_item.GetData();
 
 1027    menu.Check( 
bds().GetSeverity( errorCode ), 
true );
 
 1029    int severity = GetPopupMenuSelectionFromUser( menu );
 
 1033        if( 
bds().m_DRCSeverities[ errorCode ] != severity )
 
 
 1047    m_frame->ShowBoardSetupDialog( 
_( 
"Violation Severity" ), 
this );
 
 
 1053    if( aEvent.GetEventObject() == 
m_showAll )
 
 
 1068    wxFileDialog dlg( 
this, 
_( 
"Save Report File" ), 
Prj().GetProjectPath(), fn.GetFullName(),
 
 1070                      wxFD_SAVE | wxFD_OVERWRITE_PROMPT );
 
 1072    if( dlg.ShowModal() != wxID_OK )
 
 1077    if( fn.GetExt().IsEmpty() )
 
 1080    if( !fn.IsAbsolute() )
 
 1083        fn.MakeAbsolute( prj_path );
 
 1089    bool success = 
false;
 
 1096        m_messages->Report( wxString::Format( 
_( 
"Report file '%s' created<br>" ), fn.GetFullPath() ) );
 
 1098        DisplayError( 
this, wxString::Format( 
_( 
"Failed to create file '%s'." ), fn.GetFullPath() ) );
 
 
 1104    wxCommandEvent 
dummy;
 
 
 1119    SetReturnCode( wxID_CANCEL );
 
 
 1142    m_frame->GetCanvas()->Refresh();
 
 
 1213            m_frame->GetCanvas()->GetView()->Update( marker );
 
 
 1239    m_frame->GetBoard()->DeleteMARKERs( 
true, aIncludeExclusions );
 
 
 1271    static bool s_includeExclusions = 
false;
 
 1273    int  numExcluded = 0;
 
 1284    if( numExcluded > 0 )
 
 1286        wxMessageDialog dlg( 
this, 
_( 
"Delete exclusions too?" ), 
_( 
"Delete All Markers" ),
 
 1287                             wxYES_NO | wxCANCEL | wxCENTER | wxICON_QUESTION );
 
 1288        dlg.SetYesNoLabels( 
_( 
"Errors and Warnings Only" ),
 
 1289                            _( 
"Errors, Warnings and Exclusions" ) );
 
 1291        int ret = dlg.ShowModal();
 
 1293        if( ret == wxID_CANCEL )
 
 1295        else if( ret == wxID_NO )
 
 1296            s_includeExclusions = 
true;
 
 
 1315    int numUnconnected = 0;
 
 1316    int numFootprints = 0;
 
 1319    int numWarnings = 0;
 
 1320    int numExcluded = 0;
 
 1346    bool errorsOverflowed = 
false;
 
 1347    bool warningsOverflowed = 
false;
 
 1348    bool markersOverflowed = 
false;
 
 1349    bool unconnectedOverflowed = 
false;
 
 1350    bool footprintsOverflowed = 
false;
 
 1356        if( drcEngine->IsErrorLimitExceeded( ii ) )
 
 1359                errorsOverflowed = 
true;
 
 1361                warningsOverflowed = 
true;
 
 1366                    unconnectedOverflowed = 
true;
 
 1368                    unconnectedOverflowed = 
true;
 
 1378                    footprintsOverflowed = 
true;
 
 1380                    footprintsOverflowed = 
true;
 
 1385                    markersOverflowed = 
true;
 
 1387                    markersOverflowed = 
true;
 
 1399        num.Printf( markersOverflowed ? wxT( 
"%d+" ) : wxT( 
"%d" ), numMarkers );
 
 1405        msg.Replace( wxT( 
"(%s)" ), wxEmptyString );
 
 1412        num.Printf( unconnectedOverflowed ? wxT( 
"%d+" ) : wxT( 
"%d" ), numUnconnected );
 
 1418        msg.Replace( wxT( 
"(%s)" ), wxEmptyString );
 
 1425        num.Printf( footprintsOverflowed ? wxT( 
"%d+" ) : wxT( 
"%d" ), numFootprints );
 
 1431        msg.Replace( wxT( 
"%s" ), 
_( 
"not run" ) );
 
 1436        msg.Replace( wxT( 
"(%s)" ), wxEmptyString );
 
 1449        msg.Replace( wxT( 
"(%s)" ), wxEmptyString );
 
 1459    if( !
m_drcRun && numWarnings == 0 )
 
 
KIFACE_BASE & Kiface()
Global KIFACE_BASE "get" accessor.
 
wxBitmapBundle KiBitmapBundle(BITMAPS aBitmap, int aMinHeight)
 
constexpr BOX2I KiROUND(const BOX2D &aBoxD)
 
static TOOL_ACTION excludeMarker
 
static TOOL_ACTION selectionClear
Clear the current selection.
 
BASE_SET & set(size_t pos)
 
A base class derived from BOARD_ITEM for items that can be connected and have a net,...
 
std::map< wxString, wxString > m_DrcExclusionComments
 
std::map< int, SEVERITY > m_DRCSeverities
 
std::set< wxString > m_DrcExclusions
 
SEVERITY GetSeverity(int aDRCErrorCode)
 
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
 
Information pertinent to a Pcbnew printed circuit board.
 
const LSET & GetVisibleLayers() const
A proxy function that calls the correspondent function in m_BoardSettings.
 
const MARKERS & Markers() const
 
void FinalizeBulkRemove(std::vector< BOARD_ITEM * > &aRemovedItems)
Must be used if Remove() is used using a BULK_x REMOVE_MODE to generate a change event for listeners.
 
void Remove(BOARD_ITEM *aBoardItem, REMOVE_MODE aMode=REMOVE_MODE::NORMAL) override
Removes an item from the container.
 
BOARD_ITEM * ResolveItem(const KIID &aID, bool aAllowNullptrReturn=false) const
 
BOARD_CONNECTED_ITEM * Parent() const
 
CN_EDGE represents a point-to-point connection, whether realized or unrealized (ie: tracks etc.
 
std::shared_ptr< const CN_ANCHOR > GetSourceNode() const
 
std::shared_ptr< const CN_ANCHOR > GetTargetNode() const
 
const VECTOR2I GetTargetPos() const
 
const VECTOR2I GetSourcePos() const
 
wxCheckBox * m_cbRefillZones
 
wxButton * m_DeleteAllMarkersButton
 
wxCheckBox * m_showExclusions
 
wxCheckBox * m_showErrors
 
wxDataViewCtrl * m_unconnectedDataView
 
wxDataViewCtrl * m_footprintsDataView
 
NUMBER_BADGE * m_warningsBadge
 
NUMBER_BADGE * m_exclusionsBadge
 
wxSimplebook * m_runningResultsBook
 
wxButton * m_DeleteCurrentMarkerButton
 
STD_BITMAP_BUTTON * m_bMenu
 
wxButton * m_sdbSizerCancel
 
wxCheckBox * m_cbTestFootprints
 
DIALOG_DRC_BASE(wxWindow *parent, wxWindowID id=wxID_ANY, const wxString &title=_("Design Rules Checker"), const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxSize(-1,-1), long style=wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER)
 
wxCheckBox * m_showWarnings
 
wxListCtrl * m_ignoredList
 
NUMBER_BADGE * m_errorsBadge
 
WX_HTML_REPORT_BOX * m_messages
 
wxDataViewCtrl * m_markerDataView
 
void OnDRCItemSelected(wxDataViewEvent &aEvent) override
 
wxString m_footprintsTitleTemplate
 
void UpdateData()
Rebuild the contents of the violation tabs based on the current markers and severties.
 
std::shared_ptr< RC_ITEMS_PROVIDER > m_ratsnestProvider
 
wxString m_markersTitleTemplate
 
DIALOG_DRC(PCB_EDIT_FRAME *aEditorFrame, wxWindow *aParent)
Constructors.
 
void OnEditViolationSeverities(wxHyperlinkEvent &aEvent) override
 
void OnDeleteOneClick(wxCommandEvent &aEvent) override
 
RC_TREE_MODEL * m_fpWarningsTreeModel
 
void OnDeleteAllClick(wxCommandEvent &aEvent) override
 
void OnMenu(wxCommandEvent &aEvent) override
 
bool TransferDataToWindow() override
 
void OnErrorLinkClicked(wxHtmlLinkEvent &event) override
 
BOARD_DESIGN_SETTINGS & bds()
 
bool m_report_all_track_errors
 
void SelectMarker(const PCB_MARKER *aMarker)
 
std::chrono::steady_clock::time_point m_lastUpdateUi
Used to slow down the rate of yields in updateUi()
 
void OnClose(wxCloseEvent &event) override
 
void OnCharHook(wxKeyEvent &aEvt) override
 
void OnDRCItemRClick(wxDataViewEvent &aEvent) override
 
void OnRunDRCClick(wxCommandEvent &aEvent) override
 
wxString m_ignoredTitleTemplate
 
void OnDRCItemDClick(wxDataViewEvent &aEvent) override
 
void deleteAllMarkers(bool aIncludeExclusions)
 
void updateDisplayedCounts()
 
RC_TREE_MODEL * m_unconnectedTreeModel
 
bool m_scroll_on_crossprobe
 
wxString m_unconnectedTitleTemplate
 
std::shared_ptr< RC_ITEMS_PROVIDER > m_fpWarningsProvider
 
std::shared_ptr< RC_ITEMS_PROVIDER > m_markersProvider
 
void OnSeverity(wxCommandEvent &aEvent) override
 
void OnIgnoredItemRClick(wxListEvent &event) override
 
void OnCancelClick(wxCommandEvent &aEvent) override
 
void OnActivateDlg(wxActivateEvent &aEvent) override
 
void OnChangingNotebookPage(wxNotebookEvent &aEvent) override
 
void OnSaveReport(wxCommandEvent &aEvent) override
 
RC_TREE_MODEL * m_markersTreeModel
 
bool Show(bool show) override
 
void SetupStandardButtons(std::map< int, wxString > aLabels={})
 
void finishDialogSettings()
In all dialogs, we must call the same functions to fix minimal dlg size, the default position and per...
 
virtual void OnCharHook(wxKeyEvent &aEvt)
 
EDA_UNITS GetUserUnits() const
 
Design Rule Checker object that performs all the DRC tests.
 
void InitEngine(const wxFileName &aRulePath)
Initialize the DRC engine.
 
static std::vector< std::reference_wrapper< RC_ITEM > > GetItemsWithSeverities()
 
DRC_RULE * GetViolatingRule() const
 
bool WriteJsonReport(const wxString &aFullFileName)
 
bool WriteTextReport(const wxString &aFullFileName)
 
KICAD_T Type() const
Returns the type of object.
 
EDA_ITEM_FLAGS GetFlags() const
 
PROJECT & Prj() const
Return a reference to the PROJECT associated with this KIWAY.
 
LSET is a set of PCB_LAYER_IDs.
 
LSEQ Seq(const LSEQ &aSequence) const
Return an LSEQ from the union of this LSET and a desired sequence.
 
static const LSET & AllLayersMask()
 
const VECTOR2I & GetPos() const
 
void SetExcluded(bool aExcluded, const wxString &aComment=wxEmptyString)
 
enum MARKER_T GetMarkerType() const
 
static TOOL_ACTION showRatsnest
 
The main frame for Pcbnew.
 
SEVERITY GetSeverity() const override
 
wxString SerializeToString() const
 
virtual wxApp & App()
Return a bare naked wxApp which may come from wxPython, SINGLE_TOP, or kicad.exe.
 
virtual void AdvancePhase() override
Use the next available virtual zone of the dialog progress bar.
 
PROGRESS_REPORTER_BASE(int aNumPhases)
 
virtual void SetCurrentProgress(double aProgress) override
Set the progress value to aProgress (0..1).
 
std::atomic_bool m_cancelled
 
std::atomic_int m_progress
 
std::atomic_int m_maxProgress
 
virtual void AdvancePhase()=0
Use the next available virtual zone of the dialog progress bar.
 
virtual const wxString GetProjectPath() const
Return the full path of the project.
 
MARKER_BASE * GetParent() const
 
static RC_TREE_NODE * ToNode(wxDataViewItem aItem)
 
void ValueChanged(RC_TREE_NODE *aNode)
 
void Update(std::shared_ptr< RC_ITEMS_PROVIDER > aProvider, int aSeverities)
 
void DeleteCurrentItem(bool aDeep)
 
static KIID ToUUID(wxDataViewItem aItem)
 
std::shared_ptr< RC_ITEM > m_RcItem
 
A KICAD version of wxTextEntryDialog which supports the various improvements/work-arounds from DIALOG...
 
wxString GetValue() const
 
void DisplayError(wxWindow *aParent, const wxString &aText)
Display an error or warning message box with aMessage.
 
This file is part of the common library.
 
static BOARD * g_lastDRCBoard
 
static bool g_lastFootprintTestsRun
 
static std::vector< std::pair< wxString, int > > g_lastIgnored
 
#define DIALOG_DRC_WINDOW_NAME
 
@ DRCE_DIFF_PAIR_UNCOUPLED_LENGTH_TOO_LONG
 
@ DRCE_MALFORMED_COURTYARD
 
@ DRCE_UNRESOLVED_VARIABLE
 
@ DRCE_DUPLICATE_FOOTPRINT
 
#define MALFORMED_F_COURTYARD
 
#define MALFORMED_B_COURTYARD
 
static int DEFAULT_SINGLE_COL_WIDTH
 
static const std::string ReportFileExtension
 
static const std::string JsonFileExtension
 
static wxString JsonFileWildcard()
 
static wxString ReportFileWildcard()
 
PCB_LAYER_ID
A quick note on layer IDs:
 
This file contains miscellaneous commonly used macros and functions.
 
PGM_BASE & Pgm()
The global program "get" accessor.
 
std::vector< FAB_LAYER_COLOR > dummy
 
A filename or source description, a problem input line, a line number, a byte offset,...
 
@ PCB_ZONE_T
class ZONE, a copper pour area
 
@ PCB_PAD_T
class PAD, a pad in a footprint
 
Functions to provide common constants and other functions to assist in making a consistent UI.
 
VECTOR2< int32_t > VECTOR2I
 
Definition of file extensions used in Kicad.