Add a simple editor for DRC rules.
This commit is contained in:
parent
5b07889347
commit
3656297f99
|
@ -165,6 +165,8 @@ set( PCBNEW_DIALOGS
|
||||||
dialogs/panel_setup_layers_base.cpp
|
dialogs/panel_setup_layers_base.cpp
|
||||||
dialogs/panel_setup_netclasses.cpp
|
dialogs/panel_setup_netclasses.cpp
|
||||||
dialogs/panel_setup_netclasses_base.cpp
|
dialogs/panel_setup_netclasses_base.cpp
|
||||||
|
dialogs/panel_setup_rules.cpp
|
||||||
|
dialogs/panel_setup_rules_base.cpp
|
||||||
dialogs/panel_setup_text_and_graphics.cpp
|
dialogs/panel_setup_text_and_graphics.cpp
|
||||||
dialogs/panel_setup_text_and_graphics_base.cpp
|
dialogs/panel_setup_text_and_graphics_base.cpp
|
||||||
dialogs/panel_setup_tracks_and_vias.cpp
|
dialogs/panel_setup_tracks_and_vias.cpp
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
#include <panel_text_variables.h>
|
#include <panel_text_variables.h>
|
||||||
|
|
||||||
#include "dialog_board_setup.h"
|
#include "dialog_board_setup.h"
|
||||||
|
#include "panel_setup_rules.h"
|
||||||
|
|
||||||
DIALOG_BOARD_SETUP::DIALOG_BOARD_SETUP( PCB_EDIT_FRAME* aFrame ) :
|
DIALOG_BOARD_SETUP::DIALOG_BOARD_SETUP( PCB_EDIT_FRAME* aFrame ) :
|
||||||
PAGED_DIALOG( aFrame, _( "Board Setup" ), _( "Import Settings from Another Project..." ) ),
|
PAGED_DIALOG( aFrame, _( "Board Setup" ), _( "Import Settings from Another Project..." ) ),
|
||||||
|
@ -42,6 +42,7 @@ DIALOG_BOARD_SETUP::DIALOG_BOARD_SETUP( PCB_EDIT_FRAME* aFrame ) :
|
||||||
m_textAndGraphics = new PANEL_SETUP_TEXT_AND_GRAPHICS( this, aFrame );
|
m_textAndGraphics = new PANEL_SETUP_TEXT_AND_GRAPHICS( this, aFrame );
|
||||||
m_constraints = new PANEL_SETUP_FEATURE_CONSTRAINTS( this, aFrame );
|
m_constraints = new PANEL_SETUP_FEATURE_CONSTRAINTS( this, aFrame );
|
||||||
m_netclasses = new PANEL_SETUP_NETCLASSES( this, aFrame, m_constraints );
|
m_netclasses = new PANEL_SETUP_NETCLASSES( this, aFrame, m_constraints );
|
||||||
|
m_rules = new PANEL_SETUP_RULES( this, aFrame );
|
||||||
m_tracksAndVias = new PANEL_SETUP_TRACKS_AND_VIAS( this, aFrame, m_constraints );
|
m_tracksAndVias = new PANEL_SETUP_TRACKS_AND_VIAS( this, aFrame, m_constraints );
|
||||||
m_maskAndPaste = new PANEL_SETUP_MASK_AND_PASTE( this, aFrame );
|
m_maskAndPaste = new PANEL_SETUP_MASK_AND_PASTE( this, aFrame );
|
||||||
m_physicalStackup = new PANEL_SETUP_BOARD_STACKUP( this, aFrame, m_layers );
|
m_physicalStackup = new PANEL_SETUP_BOARD_STACKUP( this, aFrame, m_layers );
|
||||||
|
@ -71,6 +72,7 @@ DIALOG_BOARD_SETUP::DIALOG_BOARD_SETUP( PCB_EDIT_FRAME* aFrame ) :
|
||||||
m_treebook->AddPage( new wxPanel( this ), _( "Design Rules" ) );
|
m_treebook->AddPage( new wxPanel( this ), _( "Design Rules" ) );
|
||||||
m_treebook->AddSubPage( m_constraints, _( "Constraints" ) );
|
m_treebook->AddSubPage( m_constraints, _( "Constraints" ) );
|
||||||
m_treebook->AddSubPage( m_netclasses, _( "Net Classes" ) );
|
m_treebook->AddSubPage( m_netclasses, _( "Net Classes" ) );
|
||||||
|
m_treebook->AddSubPage( m_rules, _( "Rules" ) );
|
||||||
m_treebook->AddSubPage( m_severities, _( "Violation Severity" ) );
|
m_treebook->AddSubPage( m_severities, _( "Violation Severity" ) );
|
||||||
|
|
||||||
m_treebook->AddPage( new wxPanel( this ), _( "Project" ) );
|
m_treebook->AddPage( new wxPanel( this ), _( "Project" ) );
|
||||||
|
|
|
@ -28,6 +28,7 @@ class PANEL_SETUP_FEATURE_CONSTRAINTS;
|
||||||
class PANEL_SETUP_LAYERS;
|
class PANEL_SETUP_LAYERS;
|
||||||
class PANEL_SETUP_TEXT_AND_GRAPHICS;
|
class PANEL_SETUP_TEXT_AND_GRAPHICS;
|
||||||
class PANEL_SETUP_NETCLASSES;
|
class PANEL_SETUP_NETCLASSES;
|
||||||
|
class PANEL_SETUP_RULES;
|
||||||
class PANEL_SETUP_TRACKS_AND_VIAS;
|
class PANEL_SETUP_TRACKS_AND_VIAS;
|
||||||
class PANEL_SETUP_MASK_AND_PASTE;
|
class PANEL_SETUP_MASK_AND_PASTE;
|
||||||
class PANEL_SETUP_BOARD_STACKUP;
|
class PANEL_SETUP_BOARD_STACKUP;
|
||||||
|
@ -50,6 +51,7 @@ protected:
|
||||||
PANEL_SETUP_LAYERS* m_layers;
|
PANEL_SETUP_LAYERS* m_layers;
|
||||||
PANEL_SETUP_TEXT_AND_GRAPHICS* m_textAndGraphics;
|
PANEL_SETUP_TEXT_AND_GRAPHICS* m_textAndGraphics;
|
||||||
PANEL_SETUP_NETCLASSES* m_netclasses;
|
PANEL_SETUP_NETCLASSES* m_netclasses;
|
||||||
|
PANEL_SETUP_RULES* m_rules;
|
||||||
PANEL_SETUP_TRACKS_AND_VIAS* m_tracksAndVias;
|
PANEL_SETUP_TRACKS_AND_VIAS* m_tracksAndVias;
|
||||||
PANEL_SETUP_MASK_AND_PASTE* m_maskAndPaste;
|
PANEL_SETUP_MASK_AND_PASTE* m_maskAndPaste;
|
||||||
PANEL_SETUP_BOARD_STACKUP* m_physicalStackup;
|
PANEL_SETUP_BOARD_STACKUP* m_physicalStackup;
|
||||||
|
|
|
@ -0,0 +1,126 @@
|
||||||
|
/*
|
||||||
|
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2020 KiCad Developers, see AUTHORS.txt for contributors.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, you may find one here:
|
||||||
|
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||||
|
* or you may search the http://www.gnu.org website for the version 2 license,
|
||||||
|
* or you may write to the Free Software Foundation, Inc.,
|
||||||
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <widgets/paged_dialog.h>
|
||||||
|
#include <pcb_edit_frame.h>
|
||||||
|
#include <project.h>
|
||||||
|
#include <tool/tool_manager.h>
|
||||||
|
#include <drc/drc.h>
|
||||||
|
#include <panel_setup_rules.h>
|
||||||
|
|
||||||
|
|
||||||
|
PANEL_SETUP_RULES::PANEL_SETUP_RULES( PAGED_DIALOG* aParent, PCB_EDIT_FRAME* aFrame ) :
|
||||||
|
PANEL_SETUP_RULES_BASE( aParent->GetTreebook() ),
|
||||||
|
m_frame( aFrame ),
|
||||||
|
m_lastCaretPos( -1 )
|
||||||
|
{
|
||||||
|
m_textEditor->SetIndentationGuides( wxSTC_IV_LOOKBOTH );
|
||||||
|
|
||||||
|
wxColour highlight = wxSystemSettings::GetColour( wxSYS_COLOUR_HIGHLIGHT );
|
||||||
|
wxColour highlightText = wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOWTEXT );
|
||||||
|
|
||||||
|
if( KIGFX::COLOR4D( highlightText ).GetBrightness() > 0.5 )
|
||||||
|
highlight = highlight.ChangeLightness( 75 );
|
||||||
|
else
|
||||||
|
highlight = highlight.ChangeLightness( 125 );
|
||||||
|
|
||||||
|
m_textEditor->StyleSetForeground( wxSTC_STYLE_BRACELIGHT, highlightText );
|
||||||
|
m_textEditor->StyleSetBackground( wxSTC_STYLE_BRACELIGHT, highlight );
|
||||||
|
m_textEditor->StyleSetForeground( wxSTC_STYLE_BRACEBAD, *wxRED );
|
||||||
|
|
||||||
|
m_textEditor->Bind( wxEVT_STC_UPDATEUI, &PANEL_SETUP_RULES::onScintillaUpdateUI, this );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void PANEL_SETUP_RULES::onScintillaUpdateUI( wxStyledTextEvent& aEvent )
|
||||||
|
{
|
||||||
|
auto isBrace = []( int c ) -> bool
|
||||||
|
{
|
||||||
|
return c == '(' || c == ')';
|
||||||
|
};
|
||||||
|
|
||||||
|
// Has the caret changed position?
|
||||||
|
int caretPos = m_textEditor->GetCurrentPos();
|
||||||
|
|
||||||
|
if( m_lastCaretPos != caretPos )
|
||||||
|
{
|
||||||
|
m_lastCaretPos = caretPos;
|
||||||
|
int bracePos1 = -1;
|
||||||
|
int bracePos2 = -1;
|
||||||
|
|
||||||
|
// Is there a brace to the left or right?
|
||||||
|
if( caretPos > 0 && isBrace( m_textEditor->GetCharAt( caretPos-1 ) ) )
|
||||||
|
bracePos1 = ( caretPos - 1 );
|
||||||
|
else if( isBrace( m_textEditor->GetCharAt( caretPos ) ) )
|
||||||
|
bracePos1 = caretPos;
|
||||||
|
|
||||||
|
if( bracePos1 >= 0 )
|
||||||
|
{
|
||||||
|
// Find the matching brace
|
||||||
|
bracePos2 = m_textEditor->BraceMatch( bracePos1 );
|
||||||
|
|
||||||
|
if( bracePos2 == -1 )
|
||||||
|
{
|
||||||
|
m_textEditor->BraceBadLight( bracePos1 );
|
||||||
|
m_textEditor->SetHighlightGuide( 0 );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_textEditor->BraceHighlight( bracePos1, bracePos2 );
|
||||||
|
m_textEditor->SetHighlightGuide( m_textEditor->GetColumn( bracePos1 ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Turn off brace matching
|
||||||
|
m_textEditor->BraceHighlight( -1, -1 );
|
||||||
|
m_textEditor->SetHighlightGuide( 0 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool PANEL_SETUP_RULES::TransferDataToWindow()
|
||||||
|
{
|
||||||
|
wxString rulesFilepath = m_frame->Prj().AbsolutePath( "drc-rules" );
|
||||||
|
wxFileName rulesFile( rulesFilepath );
|
||||||
|
|
||||||
|
if( rulesFile.FileExists() )
|
||||||
|
m_textEditor->LoadFile( rulesFile.GetFullPath() );
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool PANEL_SETUP_RULES::TransferDataFromWindow()
|
||||||
|
{
|
||||||
|
if( m_textEditor->SaveFile( m_frame->Prj().AbsolutePath( "drc-rules" ) ) )
|
||||||
|
{
|
||||||
|
m_frame->GetToolManager()->GetTool<DRC>()->Reset( TOOL_BASE::MODEL_RELOAD );
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
/*
|
||||||
|
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2020 KiCad Developers, see AUTHORS.txt for contributors.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, you may find one here:
|
||||||
|
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||||
|
* or you may search the http://www.gnu.org website for the version 2 license,
|
||||||
|
* or you may write to the Free Software Foundation, Inc.,
|
||||||
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef PANEL_SETUP_RULES_H
|
||||||
|
#define PANEL_SETUP_RULES_H
|
||||||
|
|
||||||
|
#include <panel_setup_rules_base.h>
|
||||||
|
|
||||||
|
class DRC;
|
||||||
|
class PAGED_DIALOG;
|
||||||
|
class PCB_EDIT_FRAME;
|
||||||
|
|
||||||
|
|
||||||
|
class PANEL_SETUP_RULES : public PANEL_SETUP_RULES_BASE
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
PCB_EDIT_FRAME* m_frame;
|
||||||
|
int m_lastCaretPos;
|
||||||
|
|
||||||
|
public:
|
||||||
|
PANEL_SETUP_RULES( PAGED_DIALOG* aParent, PCB_EDIT_FRAME* aFrame );
|
||||||
|
~PANEL_SETUP_RULES( ) override { };
|
||||||
|
|
||||||
|
private:
|
||||||
|
void onScintillaUpdateUI( wxStyledTextEvent& aEvent );
|
||||||
|
|
||||||
|
bool TransferDataToWindow() override;
|
||||||
|
bool TransferDataFromWindow() override;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif //PANEL_SETUP_RULES_H
|
|
@ -0,0 +1,71 @@
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
// C++ code generated with wxFormBuilder (version Oct 26 2018)
|
||||||
|
// http://www.wxformbuilder.org/
|
||||||
|
//
|
||||||
|
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#include "panel_setup_rules_base.h"
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
PANEL_SETUP_RULES_BASE::PANEL_SETUP_RULES_BASE( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) : wxPanel( parent, id, pos, size, style, name )
|
||||||
|
{
|
||||||
|
wxBoxSizer* bPanelSizer;
|
||||||
|
bPanelSizer = new wxBoxSizer( wxHORIZONTAL );
|
||||||
|
|
||||||
|
m_leftMargin = new wxBoxSizer( wxHORIZONTAL );
|
||||||
|
|
||||||
|
m_topMargin = new wxBoxSizer( wxVERTICAL );
|
||||||
|
|
||||||
|
m_title = new wxStaticText( this, wxID_ANY, _("DRC rules:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||||
|
m_title->Wrap( -1 );
|
||||||
|
m_topMargin->Add( m_title, 0, wxTOP|wxBOTTOM, 5 );
|
||||||
|
|
||||||
|
m_textEditor = new wxStyledTextCtrl( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0, wxEmptyString );
|
||||||
|
m_textEditor->SetUseTabs( true );
|
||||||
|
m_textEditor->SetTabWidth( 4 );
|
||||||
|
m_textEditor->SetIndent( 4 );
|
||||||
|
m_textEditor->SetTabIndents( true );
|
||||||
|
m_textEditor->SetBackSpaceUnIndents( true );
|
||||||
|
m_textEditor->SetViewEOL( false );
|
||||||
|
m_textEditor->SetViewWhiteSpace( false );
|
||||||
|
m_textEditor->SetMarginWidth( 2, 0 );
|
||||||
|
m_textEditor->SetIndentationGuides( true );
|
||||||
|
m_textEditor->SetMarginWidth( 1, 0 );
|
||||||
|
m_textEditor->SetMarginType( 0, wxSTC_MARGIN_NUMBER );
|
||||||
|
m_textEditor->SetMarginWidth( 0, m_textEditor->TextWidth( wxSTC_STYLE_LINENUMBER, wxT("_99999") ) );
|
||||||
|
m_textEditor->MarkerDefine( wxSTC_MARKNUM_FOLDER, wxSTC_MARK_BOXPLUS );
|
||||||
|
m_textEditor->MarkerSetBackground( wxSTC_MARKNUM_FOLDER, wxColour( wxT("BLACK") ) );
|
||||||
|
m_textEditor->MarkerSetForeground( wxSTC_MARKNUM_FOLDER, wxColour( wxT("WHITE") ) );
|
||||||
|
m_textEditor->MarkerDefine( wxSTC_MARKNUM_FOLDEROPEN, wxSTC_MARK_BOXMINUS );
|
||||||
|
m_textEditor->MarkerSetBackground( wxSTC_MARKNUM_FOLDEROPEN, wxColour( wxT("BLACK") ) );
|
||||||
|
m_textEditor->MarkerSetForeground( wxSTC_MARKNUM_FOLDEROPEN, wxColour( wxT("WHITE") ) );
|
||||||
|
m_textEditor->MarkerDefine( wxSTC_MARKNUM_FOLDERSUB, wxSTC_MARK_EMPTY );
|
||||||
|
m_textEditor->MarkerDefine( wxSTC_MARKNUM_FOLDEREND, wxSTC_MARK_BOXPLUS );
|
||||||
|
m_textEditor->MarkerSetBackground( wxSTC_MARKNUM_FOLDEREND, wxColour( wxT("BLACK") ) );
|
||||||
|
m_textEditor->MarkerSetForeground( wxSTC_MARKNUM_FOLDEREND, wxColour( wxT("WHITE") ) );
|
||||||
|
m_textEditor->MarkerDefine( wxSTC_MARKNUM_FOLDEROPENMID, wxSTC_MARK_BOXMINUS );
|
||||||
|
m_textEditor->MarkerSetBackground( wxSTC_MARKNUM_FOLDEROPENMID, wxColour( wxT("BLACK") ) );
|
||||||
|
m_textEditor->MarkerSetForeground( wxSTC_MARKNUM_FOLDEROPENMID, wxColour( wxT("WHITE") ) );
|
||||||
|
m_textEditor->MarkerDefine( wxSTC_MARKNUM_FOLDERMIDTAIL, wxSTC_MARK_EMPTY );
|
||||||
|
m_textEditor->MarkerDefine( wxSTC_MARKNUM_FOLDERTAIL, wxSTC_MARK_EMPTY );
|
||||||
|
m_textEditor->SetSelBackground( true, wxSystemSettings::GetColour( wxSYS_COLOUR_HIGHLIGHT ) );
|
||||||
|
m_textEditor->SetSelForeground( true, wxSystemSettings::GetColour( wxSYS_COLOUR_HIGHLIGHTTEXT ) );
|
||||||
|
m_topMargin->Add( m_textEditor, 1, wxEXPAND | wxALL, 5 );
|
||||||
|
|
||||||
|
|
||||||
|
m_leftMargin->Add( m_topMargin, 1, wxEXPAND|wxRIGHT|wxLEFT, 10 );
|
||||||
|
|
||||||
|
|
||||||
|
bPanelSizer->Add( m_leftMargin, 1, wxEXPAND, 5 );
|
||||||
|
|
||||||
|
|
||||||
|
this->SetSizer( bPanelSizer );
|
||||||
|
this->Layout();
|
||||||
|
bPanelSizer->Fit( this );
|
||||||
|
}
|
||||||
|
|
||||||
|
PANEL_SETUP_RULES_BASE::~PANEL_SETUP_RULES_BASE()
|
||||||
|
{
|
||||||
|
}
|
|
@ -0,0 +1,209 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||||
|
<wxFormBuilder_Project>
|
||||||
|
<FileVersion major="1" minor="15" />
|
||||||
|
<object class="Project" expanded="1">
|
||||||
|
<property name="class_decoration"></property>
|
||||||
|
<property name="code_generation">C++</property>
|
||||||
|
<property name="disconnect_events">1</property>
|
||||||
|
<property name="disconnect_mode">source_name</property>
|
||||||
|
<property name="disconnect_php_events">0</property>
|
||||||
|
<property name="disconnect_python_events">0</property>
|
||||||
|
<property name="embedded_files_path">res</property>
|
||||||
|
<property name="encoding">UTF-8</property>
|
||||||
|
<property name="event_generation">connect</property>
|
||||||
|
<property name="file">panel_setup_rules_base</property>
|
||||||
|
<property name="first_id">1000</property>
|
||||||
|
<property name="help_provider">none</property>
|
||||||
|
<property name="indent_with_spaces"></property>
|
||||||
|
<property name="internationalize">1</property>
|
||||||
|
<property name="name">PanelSetupRules</property>
|
||||||
|
<property name="namespace"></property>
|
||||||
|
<property name="path">.</property>
|
||||||
|
<property name="precompiled_header"></property>
|
||||||
|
<property name="relative_path">1</property>
|
||||||
|
<property name="skip_lua_events">1</property>
|
||||||
|
<property name="skip_php_events">1</property>
|
||||||
|
<property name="skip_python_events">1</property>
|
||||||
|
<property name="ui_table">UI</property>
|
||||||
|
<property name="use_enum">1</property>
|
||||||
|
<property name="use_microsoft_bom">0</property>
|
||||||
|
<object class="Panel" expanded="1">
|
||||||
|
<property name="aui_managed">0</property>
|
||||||
|
<property name="aui_manager_style">wxAUI_MGR_DEFAULT</property>
|
||||||
|
<property name="bg"></property>
|
||||||
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
|
<property name="enabled">1</property>
|
||||||
|
<property name="event_handler">impl_virtual</property>
|
||||||
|
<property name="fg"></property>
|
||||||
|
<property name="font"></property>
|
||||||
|
<property name="hidden">0</property>
|
||||||
|
<property name="id">wxID_ANY</property>
|
||||||
|
<property name="maximum_size"></property>
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="name">PANEL_SETUP_RULES_BASE</property>
|
||||||
|
<property name="pos"></property>
|
||||||
|
<property name="size">-1,-1</property>
|
||||||
|
<property name="subclass">; forward_declare</property>
|
||||||
|
<property name="tooltip"></property>
|
||||||
|
<property name="window_extra_style"></property>
|
||||||
|
<property name="window_name"></property>
|
||||||
|
<property name="window_style">wxTAB_TRAVERSAL</property>
|
||||||
|
<object class="wxBoxSizer" expanded="1">
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="name">bPanelSizer</property>
|
||||||
|
<property name="orient">wxHORIZONTAL</property>
|
||||||
|
<property name="permission">none</property>
|
||||||
|
<object class="sizeritem" expanded="1">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxEXPAND</property>
|
||||||
|
<property name="proportion">1</property>
|
||||||
|
<object class="wxBoxSizer" expanded="1">
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="name">m_leftMargin</property>
|
||||||
|
<property name="orient">wxHORIZONTAL</property>
|
||||||
|
<property name="permission">protected</property>
|
||||||
|
<object class="sizeritem" expanded="1">
|
||||||
|
<property name="border">10</property>
|
||||||
|
<property name="flag">wxEXPAND|wxRIGHT|wxLEFT</property>
|
||||||
|
<property name="proportion">1</property>
|
||||||
|
<object class="wxBoxSizer" expanded="1">
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="name">m_topMargin</property>
|
||||||
|
<property name="orient">wxVERTICAL</property>
|
||||||
|
<property name="permission">protected</property>
|
||||||
|
<object class="sizeritem" expanded="1">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxTOP|wxBOTTOM</property>
|
||||||
|
<property name="proportion">0</property>
|
||||||
|
<object class="wxStaticText" expanded="1">
|
||||||
|
<property name="BottomDockable">1</property>
|
||||||
|
<property name="LeftDockable">1</property>
|
||||||
|
<property name="RightDockable">1</property>
|
||||||
|
<property name="TopDockable">1</property>
|
||||||
|
<property name="aui_layer"></property>
|
||||||
|
<property name="aui_name"></property>
|
||||||
|
<property name="aui_position"></property>
|
||||||
|
<property name="aui_row"></property>
|
||||||
|
<property name="best_size"></property>
|
||||||
|
<property name="bg"></property>
|
||||||
|
<property name="caption"></property>
|
||||||
|
<property name="caption_visible">1</property>
|
||||||
|
<property name="center_pane">0</property>
|
||||||
|
<property name="close_button">1</property>
|
||||||
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
|
<property name="default_pane">0</property>
|
||||||
|
<property name="dock">Dock</property>
|
||||||
|
<property name="dock_fixed">0</property>
|
||||||
|
<property name="docking">Left</property>
|
||||||
|
<property name="enabled">1</property>
|
||||||
|
<property name="fg"></property>
|
||||||
|
<property name="floatable">1</property>
|
||||||
|
<property name="font"></property>
|
||||||
|
<property name="gripper">0</property>
|
||||||
|
<property name="hidden">0</property>
|
||||||
|
<property name="id">wxID_ANY</property>
|
||||||
|
<property name="label">DRC rules:</property>
|
||||||
|
<property name="markup">0</property>
|
||||||
|
<property name="max_size"></property>
|
||||||
|
<property name="maximize_button">0</property>
|
||||||
|
<property name="maximum_size"></property>
|
||||||
|
<property name="min_size"></property>
|
||||||
|
<property name="minimize_button">0</property>
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="moveable">1</property>
|
||||||
|
<property name="name">m_title</property>
|
||||||
|
<property name="pane_border">1</property>
|
||||||
|
<property name="pane_position"></property>
|
||||||
|
<property name="pane_size"></property>
|
||||||
|
<property name="permission">protected</property>
|
||||||
|
<property name="pin_button">1</property>
|
||||||
|
<property name="pos"></property>
|
||||||
|
<property name="resize">Resizable</property>
|
||||||
|
<property name="show">1</property>
|
||||||
|
<property name="size"></property>
|
||||||
|
<property name="style"></property>
|
||||||
|
<property name="subclass">; ; forward_declare</property>
|
||||||
|
<property name="toolbar_pane">0</property>
|
||||||
|
<property name="tooltip"></property>
|
||||||
|
<property name="window_extra_style"></property>
|
||||||
|
<property name="window_name"></property>
|
||||||
|
<property name="window_style"></property>
|
||||||
|
<property name="wrap">-1</property>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem" expanded="1">
|
||||||
|
<property name="border">5</property>
|
||||||
|
<property name="flag">wxEXPAND | wxALL</property>
|
||||||
|
<property name="proportion">1</property>
|
||||||
|
<object class="wxStyledTextCtrl" expanded="1">
|
||||||
|
<property name="BottomDockable">1</property>
|
||||||
|
<property name="LeftDockable">1</property>
|
||||||
|
<property name="RightDockable">1</property>
|
||||||
|
<property name="TopDockable">1</property>
|
||||||
|
<property name="aui_layer"></property>
|
||||||
|
<property name="aui_name"></property>
|
||||||
|
<property name="aui_position"></property>
|
||||||
|
<property name="aui_row"></property>
|
||||||
|
<property name="backspace_unindents">1</property>
|
||||||
|
<property name="best_size"></property>
|
||||||
|
<property name="bg"></property>
|
||||||
|
<property name="caption"></property>
|
||||||
|
<property name="caption_visible">1</property>
|
||||||
|
<property name="center_pane">0</property>
|
||||||
|
<property name="close_button">1</property>
|
||||||
|
<property name="context_help"></property>
|
||||||
|
<property name="context_menu">1</property>
|
||||||
|
<property name="default_pane">0</property>
|
||||||
|
<property name="dock">Dock</property>
|
||||||
|
<property name="dock_fixed">0</property>
|
||||||
|
<property name="docking">Left</property>
|
||||||
|
<property name="enabled">1</property>
|
||||||
|
<property name="fg"></property>
|
||||||
|
<property name="floatable">1</property>
|
||||||
|
<property name="folding">0</property>
|
||||||
|
<property name="font"></property>
|
||||||
|
<property name="gripper">0</property>
|
||||||
|
<property name="hidden">0</property>
|
||||||
|
<property name="id">wxID_ANY</property>
|
||||||
|
<property name="indentation_guides">1</property>
|
||||||
|
<property name="line_numbers">1</property>
|
||||||
|
<property name="max_size"></property>
|
||||||
|
<property name="maximize_button">0</property>
|
||||||
|
<property name="maximum_size"></property>
|
||||||
|
<property name="min_size"></property>
|
||||||
|
<property name="minimize_button">0</property>
|
||||||
|
<property name="minimum_size"></property>
|
||||||
|
<property name="moveable">1</property>
|
||||||
|
<property name="name">m_textEditor</property>
|
||||||
|
<property name="pane_border">1</property>
|
||||||
|
<property name="pane_position"></property>
|
||||||
|
<property name="pane_size"></property>
|
||||||
|
<property name="permission">protected</property>
|
||||||
|
<property name="pin_button">1</property>
|
||||||
|
<property name="pos"></property>
|
||||||
|
<property name="resize">Resizable</property>
|
||||||
|
<property name="show">1</property>
|
||||||
|
<property name="size"></property>
|
||||||
|
<property name="subclass">; ; forward_declare</property>
|
||||||
|
<property name="tab_indents">1</property>
|
||||||
|
<property name="tab_width">4</property>
|
||||||
|
<property name="toolbar_pane">0</property>
|
||||||
|
<property name="tooltip"></property>
|
||||||
|
<property name="use_tabs">1</property>
|
||||||
|
<property name="view_eol">0</property>
|
||||||
|
<property name="view_whitespace">0</property>
|
||||||
|
<property name="window_extra_style"></property>
|
||||||
|
<property name="window_name"></property>
|
||||||
|
<property name="window_style"></property>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</wxFormBuilder_Project>
|
|
@ -0,0 +1,44 @@
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
// C++ code generated with wxFormBuilder (version Oct 26 2018)
|
||||||
|
// http://www.wxformbuilder.org/
|
||||||
|
//
|
||||||
|
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <wx/artprov.h>
|
||||||
|
#include <wx/xrc/xmlres.h>
|
||||||
|
#include <wx/intl.h>
|
||||||
|
#include <wx/string.h>
|
||||||
|
#include <wx/stattext.h>
|
||||||
|
#include <wx/gdicmn.h>
|
||||||
|
#include <wx/font.h>
|
||||||
|
#include <wx/colour.h>
|
||||||
|
#include <wx/settings.h>
|
||||||
|
#include <wx/stc/stc.h>
|
||||||
|
#include <wx/sizer.h>
|
||||||
|
#include <wx/panel.h>
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
/// Class PANEL_SETUP_RULES_BASE
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
class PANEL_SETUP_RULES_BASE : public wxPanel
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
|
||||||
|
protected:
|
||||||
|
wxBoxSizer* m_leftMargin;
|
||||||
|
wxBoxSizer* m_topMargin;
|
||||||
|
wxStaticText* m_title;
|
||||||
|
wxStyledTextCtrl* m_textEditor;
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
PANEL_SETUP_RULES_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString );
|
||||||
|
~PANEL_SETUP_RULES_BASE();
|
||||||
|
|
||||||
|
};
|
||||||
|
|
|
@ -92,15 +92,15 @@ void DRC::Reset( RESET_REASON aReason )
|
||||||
{
|
{
|
||||||
m_pcbEditorFrame = getEditFrame<PCB_EDIT_FRAME>();
|
m_pcbEditorFrame = getEditFrame<PCB_EDIT_FRAME>();
|
||||||
|
|
||||||
if( aReason == MODEL_RELOAD )
|
if( m_pcb != m_pcbEditorFrame->GetBoard() )
|
||||||
{
|
{
|
||||||
if( m_drcDialog )
|
if( m_drcDialog )
|
||||||
DestroyDRCDialog( wxID_OK );
|
DestroyDRCDialog( wxID_OK );
|
||||||
|
|
||||||
m_pcb = m_pcbEditorFrame->GetBoard();
|
m_pcb = m_pcbEditorFrame->GetBoard();
|
||||||
|
|
||||||
loadRules();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
loadRules();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue