mirror of
https://gitlab.com/kicad/code/kicad.git
synced 2025-09-13 17:53:11 +02:00
Compare commits
7 Commits
df6ce87f32
...
6603f59aac
Author | SHA1 | Date | |
---|---|---|---|
|
6603f59aac | ||
|
5dc6d43f43 | ||
|
98dd5a68eb | ||
|
1082ba3c8a | ||
|
a4c8da229e | ||
|
b0a21df548 | ||
|
d969ba2572 |
@ -26,6 +26,7 @@
|
||||
#include "render_3d_opengl.h"
|
||||
#include <board.h>
|
||||
#include <footprint.h>
|
||||
#include <pcb_track.h>
|
||||
#include "../../3d_math.h"
|
||||
#include "convert_basic_shapes_to_polygon.h"
|
||||
#include <lset.h>
|
||||
@ -726,6 +727,54 @@ void RENDER_3D_OPENGL::generateCylinder( const SFVEC2F& aCenter, float aInnerRad
|
||||
}
|
||||
|
||||
|
||||
void RENDER_3D_OPENGL::generateDisk( const SFVEC2F& aCenter, float aRadius, float aZ,
|
||||
unsigned int aNr_sides_per_circle, TRIANGLE_DISPLAY_LIST* aDstLayer,
|
||||
bool aTop )
|
||||
{
|
||||
const float delta = 2.0f * glm::pi<float>() / (float) aNr_sides_per_circle;
|
||||
|
||||
for( unsigned int i = 0; i < aNr_sides_per_circle; ++i )
|
||||
{
|
||||
float a0 = delta * i;
|
||||
float a1 = delta * ( i + 1 );
|
||||
const SFVEC3F p0( aCenter.x + cosf( a0 ) * aRadius,
|
||||
aCenter.y + sinf( a0 ) * aRadius, aZ );
|
||||
const SFVEC3F p1( aCenter.x + cosf( a1 ) * aRadius,
|
||||
aCenter.y + sinf( a1 ) * aRadius, aZ );
|
||||
const SFVEC3F c( aCenter.x, aCenter.y, aZ );
|
||||
|
||||
if( aTop )
|
||||
aDstLayer->m_layer_top_triangles->AddTriangle( p1, p0, c );
|
||||
else
|
||||
aDstLayer->m_layer_bot_triangles->AddTriangle( p0, p1, c );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void RENDER_3D_OPENGL::generateDimple( const SFVEC2F& aCenter, float aRadius, float aZ,
|
||||
float aDepth, unsigned int aNr_sides_per_circle,
|
||||
TRIANGLE_DISPLAY_LIST* aDstLayer, bool aTop )
|
||||
{
|
||||
const float delta = 2.0f * glm::pi<float>() / (float) aNr_sides_per_circle;
|
||||
const SFVEC3F c( aCenter.x, aCenter.y, aTop ? aZ - aDepth : aZ + aDepth );
|
||||
|
||||
for( unsigned int i = 0; i < aNr_sides_per_circle; ++i )
|
||||
{
|
||||
float a0 = delta * i;
|
||||
float a1 = delta * ( i + 1 );
|
||||
const SFVEC3F p0( aCenter.x + cosf( a0 ) * aRadius,
|
||||
aCenter.y + sinf( a0 ) * aRadius, aZ );
|
||||
const SFVEC3F p1( aCenter.x + cosf( a1 ) * aRadius,
|
||||
aCenter.y + sinf( a1 ) * aRadius, aZ );
|
||||
|
||||
if( aTop )
|
||||
aDstLayer->m_layer_top_triangles->AddTriangle( p0, p1, c );
|
||||
else
|
||||
aDstLayer->m_layer_bot_triangles->AddTriangle( p1, p0, c );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void RENDER_3D_OPENGL::generateViasAndPads()
|
||||
{
|
||||
if( !m_boardAdapter.GetBoard() )
|
||||
@ -882,6 +931,63 @@ void RENDER_3D_OPENGL::generateViasAndPads()
|
||||
delete layerTriangles;
|
||||
}
|
||||
}
|
||||
|
||||
TRIANGLE_DISPLAY_LIST* frontCover = new TRIANGLE_DISPLAY_LIST( m_boardAdapter.GetViaCount() );
|
||||
TRIANGLE_DISPLAY_LIST* backCover = new TRIANGLE_DISPLAY_LIST( m_boardAdapter.GetViaCount() );
|
||||
|
||||
for( const PCB_TRACK* track : m_boardAdapter.GetBoard()->Tracks() )
|
||||
{
|
||||
if( track->Type() != PCB_VIA_T )
|
||||
continue;
|
||||
|
||||
const PCB_VIA* via = static_cast<const PCB_VIA*>( track );
|
||||
|
||||
const float holediameter = via->GetDrillValue() * m_boardAdapter.BiuTo3dUnits();
|
||||
const float hole_radius = holediameter / 2.0f + 2.0 * platingThickness3d;
|
||||
const SFVEC2F center( via->GetStart().x * m_boardAdapter.BiuTo3dUnits(),
|
||||
-via->GetStart().y * m_boardAdapter.BiuTo3dUnits() );
|
||||
unsigned int seg = m_boardAdapter.GetCircleSegmentCount( via->GetDrillValue() );
|
||||
|
||||
PCB_LAYER_ID top_layer, bottom_layer;
|
||||
via->LayerPair( &top_layer, &bottom_layer );
|
||||
float ztop, zbot, dummy;
|
||||
getLayerZPos( top_layer, ztop, dummy );
|
||||
getLayerZPos( bottom_layer, dummy, zbot );
|
||||
|
||||
bool frontCovering = via->GetFrontCoveringMode() == COVERING_MODE::COVERED || via->IsTented( F_Mask );
|
||||
bool backCovering = via->GetBackCoveringMode() == COVERING_MODE::COVERED || via->IsTented( B_Mask );
|
||||
bool frontPlugged = via->GetFrontPluggingMode() == PLUGGING_MODE::PLUGGED;
|
||||
bool backPlugged = via->GetBackPluggingMode() == PLUGGING_MODE::PLUGGED;
|
||||
bool filled = via->GetFillingMode() == FILLING_MODE::FILLED
|
||||
|| via->GetCappingMode() == CAPPING_MODE::CAPPED;
|
||||
|
||||
const float depth = hole_radius * 0.3f;
|
||||
|
||||
if( frontCovering )
|
||||
{
|
||||
if( filled || !frontPlugged )
|
||||
generateDisk( center, hole_radius, ztop, seg, frontCover, true );
|
||||
else
|
||||
generateDimple( center, hole_radius, ztop, depth, seg, frontCover, true );
|
||||
}
|
||||
|
||||
if( backCovering )
|
||||
{
|
||||
if( filled || !backPlugged )
|
||||
generateDisk( center, hole_radius, zbot, seg, backCover, false );
|
||||
else
|
||||
generateDimple( center, hole_radius, zbot, depth, seg, backCover, false );
|
||||
}
|
||||
}
|
||||
|
||||
if( frontCover->m_layer_top_triangles->GetVertexSize() > 0 )
|
||||
m_viaFrontCover = new OPENGL_RENDER_LIST( *frontCover, 0, 0.0f, 0.0f );
|
||||
|
||||
if( backCover->m_layer_bot_triangles->GetVertexSize() > 0 )
|
||||
m_viaBackCover = new OPENGL_RENDER_LIST( *backCover, 0, 0.0f, 0.0f );
|
||||
|
||||
delete frontCover;
|
||||
delete backCover;
|
||||
}
|
||||
|
||||
|
||||
|
@ -72,6 +72,8 @@ RENDER_3D_OPENGL::RENDER_3D_OPENGL( EDA_3D_CANVAS* aCanvas, BOARD_ADAPTER& aAdap
|
||||
m_outerViaThroughHoles = nullptr;
|
||||
m_microviaHoles = nullptr;
|
||||
m_padHoles = nullptr;
|
||||
m_viaFrontCover = nullptr;
|
||||
m_viaBackCover = nullptr;
|
||||
|
||||
m_circleTexture = 0;
|
||||
m_grid = 0;
|
||||
@ -947,6 +949,8 @@ void RENDER_3D_OPENGL::freeAllLists()
|
||||
|
||||
DELETE_AND_FREE( m_microviaHoles )
|
||||
DELETE_AND_FREE( m_padHoles )
|
||||
DELETE_AND_FREE( m_viaFrontCover )
|
||||
DELETE_AND_FREE( m_viaBackCover )
|
||||
}
|
||||
|
||||
|
||||
@ -968,6 +972,17 @@ void RENDER_3D_OPENGL::renderSolderMaskLayer( PCB_LAYER_ID aLayerID, float aZPos
|
||||
setLayerMaterial( aLayerID );
|
||||
m_board->SetItIsTransparent( true );
|
||||
m_board->DrawCulled( aShowThickness, solder_mask, via_holes );
|
||||
|
||||
if( aLayerID == F_Mask && m_viaFrontCover )
|
||||
{
|
||||
m_viaFrontCover->ApplyScalePosition( aZPos, 4 * m_boardAdapter.GetNonCopperLayerThickness() );
|
||||
m_viaFrontCover->DrawTop();
|
||||
}
|
||||
else if( aLayerID == B_Mask && m_viaBackCover )
|
||||
{
|
||||
m_viaBackCover->ApplyScalePosition( aZPos, 4 * m_boardAdapter.GetNonCopperLayerThickness() );
|
||||
m_viaBackCover->DrawBot();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -123,6 +123,14 @@ private:
|
||||
float aZtop, float aZbot, unsigned int aNr_sides_per_circle,
|
||||
TRIANGLE_DISPLAY_LIST* aDstLayer );
|
||||
|
||||
void generateDisk( const SFVEC2F& aCenter, float aRadius, float aZ,
|
||||
unsigned int aNr_sides_per_circle, TRIANGLE_DISPLAY_LIST* aDstLayer,
|
||||
bool aTop );
|
||||
|
||||
void generateDimple( const SFVEC2F& aCenter, float aRadius, float aZ, float aDepth,
|
||||
unsigned int aNr_sides_per_circle, TRIANGLE_DISPLAY_LIST* aDstLayer,
|
||||
bool aTop );
|
||||
|
||||
void generateViasAndPads();
|
||||
|
||||
/**
|
||||
@ -236,6 +244,8 @@ private:
|
||||
|
||||
OPENGL_RENDER_LIST* m_microviaHoles;
|
||||
OPENGL_RENDER_LIST* m_padHoles;
|
||||
OPENGL_RENDER_LIST* m_viaFrontCover;
|
||||
OPENGL_RENDER_LIST* m_viaBackCover;
|
||||
|
||||
// Caches
|
||||
std::map<wxString, MODEL_3D*> m_3dModelMap;
|
||||
|
@ -23,6 +23,7 @@
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include "layer_ids.h"
|
||||
#include <wx/radiobut.h>
|
||||
#include <kiface_base.h>
|
||||
#include <confirm.h>
|
||||
@ -36,6 +37,7 @@
|
||||
#include <trigo.h>
|
||||
#include <eda_pattern_match.h>
|
||||
|
||||
#include <pcb_layer_box_selector.h>
|
||||
#include <dialog_copper_zones_base.h>
|
||||
#include <string_utils.h>
|
||||
|
||||
@ -76,6 +78,8 @@ private:
|
||||
void OnNetSelectionUpdated( wxCommandEvent& event ) override;
|
||||
void OnRemoveIslandsSelection( wxCommandEvent& event ) override;
|
||||
void OnPadInZoneSelection( wxCommandEvent& event ) override;
|
||||
void OnLayerSelectorChanged( wxCommandEvent& event ) override;
|
||||
void OnHatchingOffsetChecked( wxCommandEvent& event ) override;
|
||||
|
||||
void readNetInformation();
|
||||
void readFilteringAndSortingCriteria();
|
||||
@ -91,6 +95,7 @@ private:
|
||||
void updateInfoBar();
|
||||
void storePersistentNetSortConfigurations();
|
||||
void loadPersistentNetSortConfigurations();
|
||||
void updatePerLayerProperties();
|
||||
|
||||
private:
|
||||
PCB_BASE_FRAME* m_Parent;
|
||||
@ -130,6 +135,11 @@ private:
|
||||
wxRadioButton* m_rbCenterline;
|
||||
wxRadioButton* m_rbEnvelope;
|
||||
wxCheckBox* m_cbDeleteOriginals;
|
||||
|
||||
UNIT_BINDER m_hatchingOffsetX;
|
||||
UNIT_BINDER m_hatchingOffsetY;
|
||||
|
||||
PCB_LAYER_ID m_currentLayer;
|
||||
};
|
||||
|
||||
|
||||
@ -191,7 +201,10 @@ DIALOG_COPPER_ZONE::DIALOG_COPPER_ZONE( PCB_BASE_FRAME* aParent, ZONE_SETTINGS*
|
||||
m_convertSettings( aConvertSettings ),
|
||||
m_rbCenterline( nullptr ),
|
||||
m_rbEnvelope( nullptr ),
|
||||
m_cbDeleteOriginals( nullptr )
|
||||
m_cbDeleteOriginals( nullptr ),
|
||||
m_hatchingOffsetX( aParent, m_hatchingOffsetXLabel, m_hatchingOffsetXValue, m_hatchingOffsetXUnit ),
|
||||
m_hatchingOffsetY( aParent, m_hatchingOffsetYLabel, m_hatchingOffsetYValue, m_hatchingOffsetYUnit ),
|
||||
m_currentLayer( UNDEFINED_LAYER )
|
||||
{
|
||||
m_Parent = aParent;
|
||||
|
||||
@ -264,6 +277,8 @@ DIALOG_COPPER_ZONE::DIALOG_COPPER_ZONE( PCB_BASE_FRAME* aParent, ZONE_SETTINGS*
|
||||
m_gap = nullptr;
|
||||
}
|
||||
|
||||
m_currentLayer = m_settings.m_Layers.Seq().at( 0 );
|
||||
|
||||
m_currentlySelectedNetcode = INVALID_NET_CODE;
|
||||
m_maxNetCode = INVALID_NET_CODE;
|
||||
|
||||
@ -377,6 +392,32 @@ bool DIALOG_COPPER_ZONE::TransferDataToWindow()
|
||||
|
||||
m_tcZoneName->SetValue( m_settings.m_Name );
|
||||
|
||||
m_layerSelector->SetLayersHotkeys( false );
|
||||
m_layerSelector->SetBoardFrame( m_Parent );
|
||||
m_layerSelector->SetNotAllowedLayerSet( ~( m_settings.m_Layers ) );
|
||||
m_layerSelector->Resync();
|
||||
|
||||
if( !m_settings.m_LayerProperties.empty() )
|
||||
{
|
||||
m_currentLayer = m_settings.m_LayerProperties.begin()->first;
|
||||
|
||||
m_hatchingOffsetUseDefault->SetValue(
|
||||
!m_settings.m_LayerProperties[m_currentLayer].hatching_offset.has_value() );
|
||||
|
||||
VECTOR2I value = m_settings.m_LayerProperties[m_currentLayer].hatching_offset.value_or( VECTOR2I( 0, 0 ) );
|
||||
m_hatchingOffsetX.SetValue( value.x );
|
||||
m_hatchingOffsetY.SetValue( value.y );
|
||||
|
||||
m_hatchingOffsetXValue->Enable( !m_hatchingOffsetUseDefault->IsChecked() );
|
||||
m_hatchingOffsetYValue->Enable( !m_hatchingOffsetUseDefault->IsChecked() );
|
||||
}
|
||||
else
|
||||
{
|
||||
m_currentLayer = m_settings.m_Layers.Seq().at( 0 );
|
||||
}
|
||||
|
||||
m_layerSelector->SetLayerSelection( m_currentLayer );
|
||||
|
||||
SetInitialFocus( m_ShowNetNameFilter );
|
||||
|
||||
// Enable/Disable some widgets
|
||||
@ -485,6 +526,35 @@ void DIALOG_COPPER_ZONE::OnPadInZoneSelection( wxCommandEvent& event )
|
||||
}
|
||||
|
||||
|
||||
void DIALOG_COPPER_ZONE::OnLayerSelectorChanged( wxCommandEvent& aEvent )
|
||||
{
|
||||
if( m_currentLayer != UNDEFINED_LAYER )
|
||||
{
|
||||
if( !m_hatchingOffsetUseDefault->IsChecked() )
|
||||
{
|
||||
m_settings.m_LayerProperties[m_currentLayer].hatching_offset =
|
||||
VECTOR2I( m_hatchingOffsetX.GetIntValue(), m_hatchingOffsetY.GetIntValue() );
|
||||
}
|
||||
else
|
||||
{
|
||||
m_settings.m_LayerProperties[m_currentLayer].hatching_offset.reset();
|
||||
}
|
||||
}
|
||||
|
||||
updatePerLayerProperties();
|
||||
|
||||
aEvent.Skip();
|
||||
}
|
||||
|
||||
|
||||
void DIALOG_COPPER_ZONE::OnHatchingOffsetChecked( wxCommandEvent& aEvent )
|
||||
{
|
||||
m_hatchingOffsetXValue->Enable( !m_hatchingOffsetUseDefault->IsChecked() );
|
||||
m_hatchingOffsetYValue->Enable( !m_hatchingOffsetUseDefault->IsChecked() );
|
||||
aEvent.Skip();
|
||||
}
|
||||
|
||||
|
||||
bool DIALOG_COPPER_ZONE::TransferDataFromWindow()
|
||||
{
|
||||
if( m_GridStyleCtrl->GetSelection() > 0 )
|
||||
@ -512,6 +582,23 @@ bool DIALOG_COPPER_ZONE::TransferDataFromWindow()
|
||||
m_settings.m_HatchSmoothingLevel = m_spinCtrlSmoothLevel->GetValue();
|
||||
m_settings.m_HatchSmoothingValue = m_spinCtrlSmoothValue->GetValue();
|
||||
|
||||
if( m_currentLayer != UNDEFINED_LAYER )
|
||||
{
|
||||
if( !m_settings.m_LayerProperties.contains( m_currentLayer ) )
|
||||
m_settings.m_LayerProperties.emplace( m_currentLayer, ZONE_LAYER_PROPERTIES() );
|
||||
|
||||
if( !m_hatchingOffsetUseDefault->IsChecked() )
|
||||
{
|
||||
m_settings.m_LayerProperties[m_currentLayer].hatching_offset =
|
||||
VECTOR2I( m_hatchingOffsetX.GetIntValue(), m_hatchingOffsetY.GetIntValue() );
|
||||
}
|
||||
else
|
||||
{
|
||||
m_settings.m_LayerProperties[m_currentLayer].hatching_offset.reset();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
*m_ptr = m_settings;
|
||||
return true;
|
||||
}
|
||||
@ -656,6 +743,15 @@ void DIALOG_COPPER_ZONE::OnLayerSelection( wxDataViewEvent& event )
|
||||
m_layers->GetValue( layerID, row, 2 );
|
||||
|
||||
m_settings.m_Layers.set( ToLAYER_ID( layerID.GetInteger() ), checked );
|
||||
|
||||
m_layerSelector->SetNotAllowedLayerSet( ~( m_settings.m_Layers ) );
|
||||
m_layerSelector->Resync();
|
||||
|
||||
m_currentLayer = m_settings.m_Layers.Seq().at( 0 );
|
||||
|
||||
m_layerSelector->SetLayerSelection( m_currentLayer );
|
||||
|
||||
updatePerLayerProperties();
|
||||
}
|
||||
|
||||
|
||||
@ -697,6 +793,28 @@ void DIALOG_COPPER_ZONE::loadPersistentNetSortConfigurations()
|
||||
}
|
||||
|
||||
|
||||
void DIALOG_COPPER_ZONE::updatePerLayerProperties()
|
||||
{
|
||||
m_currentLayer = ToLAYER_ID( m_layerSelector->GetLayerSelection() );
|
||||
if( m_currentLayer != UNDEFINED_LAYER )
|
||||
{
|
||||
if( !m_settings.m_LayerProperties.contains( m_currentLayer ) )
|
||||
m_settings.m_LayerProperties.emplace( m_currentLayer, ZONE_LAYER_PROPERTIES() );
|
||||
|
||||
m_hatchingOffsetUseDefault->SetValue(
|
||||
!m_settings.m_LayerProperties[m_currentLayer].hatching_offset.has_value() );
|
||||
|
||||
VECTOR2I value = m_settings.m_LayerProperties[m_currentLayer].hatching_offset.value_or( VECTOR2I( 0, 0 ) );
|
||||
|
||||
m_hatchingOffsetX.SetValue( value.x );
|
||||
m_hatchingOffsetY.SetValue( value.y );
|
||||
|
||||
m_hatchingOffsetXValue->Enable( !m_hatchingOffsetUseDefault->IsChecked() );
|
||||
m_hatchingOffsetYValue->Enable( !m_hatchingOffsetUseDefault->IsChecked() );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void DIALOG_COPPER_ZONE::OnShowNetNameFilterChange( wxCommandEvent& event )
|
||||
{
|
||||
updateDisplayedListOfNets();
|
||||
|
@ -1,10 +1,12 @@
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
|
||||
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6-dirty)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "pcb_layer_box_selector.h"
|
||||
|
||||
#include "dialog_copper_zones_base.h"
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
@ -274,8 +276,10 @@ DIALOG_COPPER_ZONE_BASE::DIALOG_COPPER_ZONE_BASE( wxWindow* parent, wxWindowID i
|
||||
|
||||
bSizerMiddle->Add( bMiddleColumn, 1, wxEXPAND, 5 );
|
||||
|
||||
wxStaticBoxSizer* sbSizerZoneStyle;
|
||||
sbSizerZoneStyle = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Fill") ), wxVERTICAL );
|
||||
m_fillNotebook = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_fillPanel = new wxPanel( m_fillNotebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||
wxBoxSizer* bSizer11;
|
||||
bSizer11 = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
wxGridBagSizer* gbSizer3;
|
||||
gbSizer3 = new wxGridBagSizer( 0, 0 );
|
||||
@ -283,72 +287,72 @@ DIALOG_COPPER_ZONE_BASE::DIALOG_COPPER_ZONE_BASE( wxWindow* parent, wxWindowID i
|
||||
gbSizer3->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
|
||||
gbSizer3->SetEmptyCellSize( wxSize( -1,10 ) );
|
||||
|
||||
m_staticTextGridFillType = new wxStaticText( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, _("Fill type:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextGridFillType = new wxStaticText( m_fillPanel, wxID_ANY, _("Fill type:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextGridFillType->Wrap( -1 );
|
||||
gbSizer3->Add( m_staticTextGridFillType, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
|
||||
|
||||
wxString m_GridStyleCtrlChoices[] = { _("Solid fill"), _("Hatch pattern") };
|
||||
int m_GridStyleCtrlNChoices = sizeof( m_GridStyleCtrlChoices ) / sizeof( wxString );
|
||||
m_GridStyleCtrl = new wxChoice( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_GridStyleCtrlNChoices, m_GridStyleCtrlChoices, 0 );
|
||||
m_GridStyleCtrl = new wxChoice( m_fillPanel, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_GridStyleCtrlNChoices, m_GridStyleCtrlChoices, 0 );
|
||||
m_GridStyleCtrl->SetSelection( 0 );
|
||||
gbSizer3->Add( m_GridStyleCtrl, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
m_staticTextGrindOrient = new wxStaticText( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, _("Orientation:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextGrindOrient = new wxStaticText( m_fillPanel, wxID_ANY, _("Orientation:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextGrindOrient->Wrap( -1 );
|
||||
gbSizer3->Add( m_staticTextGrindOrient, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT|wxTOP, 5 );
|
||||
|
||||
m_tcGridStyleOrientation = new wxTextCtrl( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_tcGridStyleOrientation = new wxTextCtrl( m_fillPanel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
gbSizer3->Add( m_tcGridStyleOrientation, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL|wxALL, 5 );
|
||||
|
||||
m_staticTextRotUnits = new wxStaticText( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, _("deg"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextRotUnits = new wxStaticText( m_fillPanel, wxID_ANY, _("deg"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextRotUnits->Wrap( -1 );
|
||||
gbSizer3->Add( m_staticTextRotUnits, wxGBPosition( 1, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 );
|
||||
|
||||
m_staticTextStyleThickness = new wxStaticText( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, _("Hatch width:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextStyleThickness = new wxStaticText( m_fillPanel, wxID_ANY, _("Hatch width:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextStyleThickness->Wrap( -1 );
|
||||
gbSizer3->Add( m_staticTextStyleThickness, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT, 5 );
|
||||
|
||||
m_tcGridStyleThickness = new wxTextCtrl( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_tcGridStyleThickness = new wxTextCtrl( m_fillPanel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
gbSizer3->Add( m_tcGridStyleThickness, wxGBPosition( 2, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
m_GridStyleThicknessUnits = new wxStaticText( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_GridStyleThicknessUnits = new wxStaticText( m_fillPanel, wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_GridStyleThicknessUnits->Wrap( -1 );
|
||||
gbSizer3->Add( m_GridStyleThicknessUnits, wxGBPosition( 2, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
|
||||
|
||||
m_staticTextGridGap = new wxStaticText( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, _("Hatch gap:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextGridGap = new wxStaticText( m_fillPanel, wxID_ANY, _("Hatch gap:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextGridGap->Wrap( -1 );
|
||||
gbSizer3->Add( m_staticTextGridGap, wxGBPosition( 3, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT, 5 );
|
||||
|
||||
m_tcGridStyleGap = new wxTextCtrl( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_tcGridStyleGap = new wxTextCtrl( m_fillPanel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
gbSizer3->Add( m_tcGridStyleGap, wxGBPosition( 3, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
|
||||
|
||||
m_GridStyleGapUnits = new wxStaticText( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_GridStyleGapUnits = new wxStaticText( m_fillPanel, wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_GridStyleGapUnits->Wrap( -1 );
|
||||
gbSizer3->Add( m_GridStyleGapUnits, wxGBPosition( 3, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
|
||||
|
||||
m_staticTextGridSmoothingLevel = new wxStaticText( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, _("Smoothing effort:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextGridSmoothingLevel = new wxStaticText( m_fillPanel, wxID_ANY, _("Smoothing effort:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextGridSmoothingLevel->Wrap( -1 );
|
||||
m_staticTextGridSmoothingLevel->SetToolTip( _("Value of smoothing effort\n0 = no smoothing\n1 = chamfer\n2 = round corners\n3 = round corners (finer shape)") );
|
||||
|
||||
gbSizer3->Add( m_staticTextGridSmoothingLevel, wxGBPosition( 4, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT, 5 );
|
||||
|
||||
m_spinCtrlSmoothLevel = new wxSpinCtrl( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 3, 0 );
|
||||
m_spinCtrlSmoothLevel = new wxSpinCtrl( m_fillPanel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 3, 0 );
|
||||
gbSizer3->Add( m_spinCtrlSmoothLevel, wxGBPosition( 4, 1 ), wxGBSpan( 1, 1 ), wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
|
||||
|
||||
m_staticTextGridSmootingVal = new wxStaticText( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, _("Smoothing amount:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextGridSmootingVal = new wxStaticText( m_fillPanel, wxID_ANY, _("Smoothing amount:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextGridSmootingVal->Wrap( -1 );
|
||||
m_staticTextGridSmootingVal->SetToolTip( _("Ratio between smoothed corners size and the gap between lines\n0 = no smoothing\n1.0 = max radius/chamfer size (half gap value)") );
|
||||
|
||||
gbSizer3->Add( m_staticTextGridSmootingVal, wxGBPosition( 5, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT, 5 );
|
||||
|
||||
m_spinCtrlSmoothValue = new wxSpinCtrlDouble( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 1, 0.1, 0.1 );
|
||||
m_spinCtrlSmoothValue = new wxSpinCtrlDouble( m_fillPanel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 1, 0.1, 0.1 );
|
||||
m_spinCtrlSmoothValue->SetDigits( 2 );
|
||||
gbSizer3->Add( m_spinCtrlSmoothValue, wxGBPosition( 5, 1 ), wxGBSpan( 1, 1 ), wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
|
||||
|
||||
m_staticline5 = new wxStaticLine( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
|
||||
m_staticline5 = new wxStaticLine( m_fillPanel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
|
||||
gbSizer3->Add( m_staticline5, wxGBPosition( 6, 0 ), wxGBSpan( 1, 3 ), wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 );
|
||||
|
||||
m_staticText40 = new wxStaticText( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, _("Remove islands:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticText40 = new wxStaticText( m_fillPanel, wxID_ANY, _("Remove islands:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticText40->Wrap( -1 );
|
||||
m_staticText40->SetToolTip( _("Choose what to do with unconnected copper islands") );
|
||||
|
||||
@ -356,23 +360,23 @@ DIALOG_COPPER_ZONE_BASE::DIALOG_COPPER_ZONE_BASE( wxWindow* parent, wxWindowID i
|
||||
|
||||
wxString m_cbRemoveIslandsChoices[] = { _("Always"), _("Never"), _("Below area limit") };
|
||||
int m_cbRemoveIslandsNChoices = sizeof( m_cbRemoveIslandsChoices ) / sizeof( wxString );
|
||||
m_cbRemoveIslands = new wxChoice( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_cbRemoveIslandsNChoices, m_cbRemoveIslandsChoices, 0 );
|
||||
m_cbRemoveIslands = new wxChoice( m_fillPanel, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_cbRemoveIslandsNChoices, m_cbRemoveIslandsChoices, 0 );
|
||||
m_cbRemoveIslands->SetSelection( 0 );
|
||||
gbSizer3->Add( m_cbRemoveIslands, wxGBPosition( 7, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxALL, 5 );
|
||||
|
||||
m_islandThresholdLabel = new wxStaticText( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, _("Area limit:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_islandThresholdLabel = new wxStaticText( m_fillPanel, wxID_ANY, _("Area limit:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_islandThresholdLabel->Wrap( -1 );
|
||||
m_islandThresholdLabel->Enable( false );
|
||||
m_islandThresholdLabel->SetToolTip( _("Isolated islands smaller than this will be removed") );
|
||||
|
||||
gbSizer3->Add( m_islandThresholdLabel, wxGBPosition( 8, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT, 5 );
|
||||
|
||||
m_tcIslandThreshold = new wxTextCtrl( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_tcIslandThreshold = new wxTextCtrl( m_fillPanel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_tcIslandThreshold->Enable( false );
|
||||
|
||||
gbSizer3->Add( m_tcIslandThreshold, wxGBPosition( 8, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
|
||||
|
||||
m_islandThresholdUnits = new wxStaticText( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_islandThresholdUnits = new wxStaticText( m_fillPanel, wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_islandThresholdUnits->Wrap( -1 );
|
||||
m_islandThresholdUnits->Enable( false );
|
||||
|
||||
@ -381,10 +385,60 @@ DIALOG_COPPER_ZONE_BASE::DIALOG_COPPER_ZONE_BASE( wxWindow* parent, wxWindowID i
|
||||
|
||||
gbSizer3->AddGrowableCol( 0 );
|
||||
|
||||
sbSizerZoneStyle->Add( gbSizer3, 1, wxEXPAND|wxBOTTOM, 5 );
|
||||
bSizer11->Add( gbSizer3, 1, wxEXPAND|wxBOTTOM, 5 );
|
||||
|
||||
|
||||
bSizerMiddle->Add( sbSizerZoneStyle, 0, wxEXPAND|wxTOP|wxRIGHT, 10 );
|
||||
m_fillPanel->SetSizer( bSizer11 );
|
||||
m_fillPanel->Layout();
|
||||
bSizer11->Fit( m_fillPanel );
|
||||
m_fillNotebook->AddPage( m_fillPanel, _("Fill"), true );
|
||||
m_layerPropertiesPanel = new wxPanel( m_fillNotebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||
wxGridBagSizer* gbSizer4;
|
||||
gbSizer4 = new wxGridBagSizer( 0, 0 );
|
||||
gbSizer4->SetFlexibleDirection( wxBOTH );
|
||||
gbSizer4->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
|
||||
|
||||
m_layerSelectorLabel = new wxStaticText( m_layerPropertiesPanel, wxID_ANY, _("Layer"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_layerSelectorLabel->Wrap( -1 );
|
||||
gbSizer4->Add( m_layerSelectorLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxALL, 5 );
|
||||
|
||||
m_layerSelector = new PCB_LAYER_BOX_SELECTOR( m_layerPropertiesPanel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 );
|
||||
gbSizer4->Add( m_layerSelector, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxALL|wxEXPAND, 5 );
|
||||
|
||||
m_hatchingOffsetXLabel = new wxStaticText( m_layerPropertiesPanel, wxID_ANY, _("Hatching offset x"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_hatchingOffsetXLabel->Wrap( -1 );
|
||||
gbSizer4->Add( m_hatchingOffsetXLabel, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxALL, 5 );
|
||||
|
||||
m_hatchingOffsetXValue = new wxTextCtrl( m_layerPropertiesPanel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
gbSizer4->Add( m_hatchingOffsetXValue, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxALL|wxEXPAND, 5 );
|
||||
|
||||
m_hatchingOffsetXUnit = new wxStaticText( m_layerPropertiesPanel, wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_hatchingOffsetXUnit->Wrap( -1 );
|
||||
gbSizer4->Add( m_hatchingOffsetXUnit, wxGBPosition( 1, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxALL, 5 );
|
||||
|
||||
m_hatchingOffsetYLabel = new wxStaticText( m_layerPropertiesPanel, wxID_ANY, _("Hatching offset y"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_hatchingOffsetYLabel->Wrap( -1 );
|
||||
gbSizer4->Add( m_hatchingOffsetYLabel, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxALL, 5 );
|
||||
|
||||
m_hatchingOffsetYValue = new wxTextCtrl( m_layerPropertiesPanel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
gbSizer4->Add( m_hatchingOffsetYValue, wxGBPosition( 2, 1 ), wxGBSpan( 1, 1 ), wxALL|wxEXPAND, 5 );
|
||||
|
||||
m_hatchingOffsetYUnit = new wxStaticText( m_layerPropertiesPanel, wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_hatchingOffsetYUnit->Wrap( -1 );
|
||||
gbSizer4->Add( m_hatchingOffsetYUnit, wxGBPosition( 2, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxALL, 5 );
|
||||
|
||||
m_hatchingOffsetUseDefault = new wxCheckBox( m_layerPropertiesPanel, wxID_ANY, _("Use default value"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
gbSizer4->Add( m_hatchingOffsetUseDefault, wxGBPosition( 3, 0 ), wxGBSpan( 1, 3 ), wxALL|wxEXPAND, 5 );
|
||||
|
||||
|
||||
gbSizer4->AddGrowableCol( 1 );
|
||||
|
||||
m_layerPropertiesPanel->SetSizer( gbSizer4 );
|
||||
m_layerPropertiesPanel->Layout();
|
||||
gbSizer4->Fit( m_layerPropertiesPanel );
|
||||
m_fillNotebook->AddPage( m_layerPropertiesPanel, _("Per layer properties"), false );
|
||||
|
||||
bSizerMiddle->Add( m_fillNotebook, 1, wxEXPAND | wxALL, 5 );
|
||||
|
||||
|
||||
m_MainBoxSizer->Add( bSizerMiddle, 0, wxEXPAND, 5 );
|
||||
@ -421,6 +475,8 @@ DIALOG_COPPER_ZONE_BASE::DIALOG_COPPER_ZONE_BASE( wxWindow* parent, wxWindowID i
|
||||
m_PadInZoneOpt->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_COPPER_ZONE_BASE::OnPadInZoneSelection ), NULL, this );
|
||||
m_GridStyleCtrl->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_COPPER_ZONE_BASE::OnStyleSelection ), NULL, this );
|
||||
m_cbRemoveIslands->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_COPPER_ZONE_BASE::OnRemoveIslandsSelection ), NULL, this );
|
||||
m_layerSelector->Connect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( DIALOG_COPPER_ZONE_BASE::OnLayerSelectorChanged ), NULL, this );
|
||||
m_hatchingOffsetUseDefault->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_COPPER_ZONE_BASE::OnHatchingOffsetChecked ), NULL, this );
|
||||
m_sdbSizerCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_COPPER_ZONE_BASE::OnButtonCancelClick ), NULL, this );
|
||||
}
|
||||
|
||||
@ -438,6 +494,8 @@ DIALOG_COPPER_ZONE_BASE::~DIALOG_COPPER_ZONE_BASE()
|
||||
m_PadInZoneOpt->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_COPPER_ZONE_BASE::OnPadInZoneSelection ), NULL, this );
|
||||
m_GridStyleCtrl->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_COPPER_ZONE_BASE::OnStyleSelection ), NULL, this );
|
||||
m_cbRemoveIslands->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_COPPER_ZONE_BASE::OnRemoveIslandsSelection ), NULL, this );
|
||||
m_layerSelector->Disconnect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( DIALOG_COPPER_ZONE_BASE::OnLayerSelectorChanged ), NULL, this );
|
||||
m_hatchingOffsetUseDefault->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_COPPER_ZONE_BASE::OnHatchingOffsetChecked ), NULL, this );
|
||||
m_sdbSizerCancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_COPPER_ZONE_BASE::OnButtonCancelClick ), NULL, this );
|
||||
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,5 @@
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
|
||||
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6-dirty)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
@ -10,6 +10,8 @@
|
||||
#include <wx/artprov.h>
|
||||
#include <wx/xrc/xmlres.h>
|
||||
#include <wx/intl.h>
|
||||
class PCB_LAYER_BOX_SELECTOR;
|
||||
|
||||
#include "dialog_shim.h"
|
||||
#include <wx/infobar.h>
|
||||
#include <wx/gdicmn.h>
|
||||
@ -28,6 +30,12 @@
|
||||
#include <wx/choice.h>
|
||||
#include <wx/statline.h>
|
||||
#include <wx/gbsizer.h>
|
||||
#include <wx/panel.h>
|
||||
#include <wx/bitmap.h>
|
||||
#include <wx/image.h>
|
||||
#include <wx/icon.h>
|
||||
#include <wx/bmpcbox.h>
|
||||
#include <wx/notebook.h>
|
||||
#include <wx/button.h>
|
||||
#include <wx/dialog.h>
|
||||
|
||||
@ -93,6 +101,8 @@ class DIALOG_COPPER_ZONE_BASE : public DIALOG_SHIM
|
||||
wxStaticText* m_spokeWidthLabel;
|
||||
wxTextCtrl* m_spokeWidthCtrl;
|
||||
wxStaticText* m_spokeWidthUnits;
|
||||
wxNotebook* m_fillNotebook;
|
||||
wxPanel* m_fillPanel;
|
||||
wxStaticText* m_staticTextGridFillType;
|
||||
wxChoice* m_GridStyleCtrl;
|
||||
wxStaticText* m_staticTextGrindOrient;
|
||||
@ -114,6 +124,16 @@ class DIALOG_COPPER_ZONE_BASE : public DIALOG_SHIM
|
||||
wxStaticText* m_islandThresholdLabel;
|
||||
wxTextCtrl* m_tcIslandThreshold;
|
||||
wxStaticText* m_islandThresholdUnits;
|
||||
wxPanel* m_layerPropertiesPanel;
|
||||
wxStaticText* m_layerSelectorLabel;
|
||||
PCB_LAYER_BOX_SELECTOR* m_layerSelector;
|
||||
wxStaticText* m_hatchingOffsetXLabel;
|
||||
wxTextCtrl* m_hatchingOffsetXValue;
|
||||
wxStaticText* m_hatchingOffsetXUnit;
|
||||
wxStaticText* m_hatchingOffsetYLabel;
|
||||
wxTextCtrl* m_hatchingOffsetYValue;
|
||||
wxStaticText* m_hatchingOffsetYUnit;
|
||||
wxCheckBox* m_hatchingOffsetUseDefault;
|
||||
wxStdDialogButtonSizer* m_sdbSizer;
|
||||
wxButton* m_sdbSizerOK;
|
||||
wxButton* m_sdbSizerCancel;
|
||||
@ -128,6 +148,8 @@ class DIALOG_COPPER_ZONE_BASE : public DIALOG_SHIM
|
||||
virtual void OnPadInZoneSelection( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnStyleSelection( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnRemoveIslandsSelection( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnLayerSelectorChanged( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnHatchingOffsetChecked( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnButtonCancelClick( wxCommandEvent& event ) { event.Skip(); }
|
||||
|
||||
|
||||
|
@ -542,7 +542,8 @@ void DRC_ENGINE::compileRules()
|
||||
}
|
||||
|
||||
if( error_semaphore.HasMessageOfSeverity( RPT_SEVERITY_ERROR ) )
|
||||
THROW_PARSE_ERROR( wxT( "Parse error" ), rule->m_Name, rule->m_Condition->GetExpression(), 0, 0 );
|
||||
THROW_PARSE_ERROR( wxT( "Parse error" ), rule->m_Name,
|
||||
TO_UTF8( rule->m_Condition->GetExpression() ), 0, 0 );
|
||||
|
||||
for( const DRC_CONSTRAINT& constraint : rule->m_Constraints )
|
||||
{
|
||||
|
@ -46,6 +46,7 @@
|
||||
#include "model_zones_overview.h"
|
||||
#include "panel_zone_properties.h"
|
||||
#include "dialog_zone_manager.h"
|
||||
#include "project/project_local_settings.h"
|
||||
#include "widgets/wx_progress_reporters.h"
|
||||
#include "zone_management_base.h"
|
||||
#include "zone_manager/model_zones_overview.h"
|
||||
@ -54,6 +55,7 @@
|
||||
#include "zones_container.h"
|
||||
#include "pane_zone_viewer.h"
|
||||
#include "zone_manager_preference.h"
|
||||
#include "pcb_layer_box_selector.h"
|
||||
|
||||
|
||||
DIALOG_ZONE_MANAGER::DIALOG_ZONE_MANAGER( PCB_BASE_FRAME* aParent, ZONE_SETTINGS* aZoneInfo ) :
|
||||
@ -64,7 +66,10 @@ DIALOG_ZONE_MANAGER::DIALOG_ZONE_MANAGER( PCB_BASE_FRAME* aParent, ZONE_SETTINGS
|
||||
m_priorityDragIndex( {} ),
|
||||
m_needZoomGAL( true ),
|
||||
m_isFillingZones( false ),
|
||||
m_zoneFillComplete( false )
|
||||
m_zoneFillComplete( false ),
|
||||
m_hatchingOffsetX( aParent, m_hatchingOffsetXLabel, m_hatchingOffsetXValue, m_hatchingOffsetXUnit ),
|
||||
m_hatchingOffsetY( aParent, m_hatchingOffsetYLabel, m_hatchingOffsetYValue, m_hatchingOffsetYUnit ),
|
||||
m_currentLayer( F_Cu )
|
||||
{
|
||||
#ifdef __APPLE__
|
||||
m_sizerZoneOP->InsertSpacer( m_sizerZoneOP->GetItemCount(), 5 );
|
||||
@ -73,10 +78,10 @@ DIALOG_ZONE_MANAGER::DIALOG_ZONE_MANAGER( PCB_BASE_FRAME* aParent, ZONE_SETTINGS
|
||||
m_btnMoveUp->SetBitmap( KiBitmapBundle( BITMAPS::small_up ) );
|
||||
m_btnMoveDown->SetBitmap( KiBitmapBundle( BITMAPS::small_down ) );
|
||||
|
||||
m_panelZoneProperties = new PANEL_ZONE_PROPERTIES( this, aParent, *m_zonesContainer );
|
||||
m_panelZoneProperties = new PANEL_ZONE_PROPERTIES( m_zonePropertiesTab, aParent, *m_zonesContainer );
|
||||
m_sizerProperties->Add( m_panelZoneProperties, 1, wxTOP | wxEXPAND, 5 );
|
||||
|
||||
m_zoneViewer = new PANE_ZONE_VIEWER( this, aParent );
|
||||
m_zoneViewer = new PANE_ZONE_VIEWER( m_zonePropertiesTab, aParent );
|
||||
m_sizerTop->Add( m_zoneViewer, 1, wxBOTTOM | wxLEFT | wxRIGHT | wxEXPAND, 5 );
|
||||
|
||||
m_checkRepour->SetValue( ZONE_MANAGER_PREFERENCE::GetRepourOnClose() );
|
||||
@ -118,6 +123,23 @@ DIALOG_ZONE_MANAGER::DIALOG_ZONE_MANAGER( PCB_BASE_FRAME* aParent, ZONE_SETTINGS
|
||||
if( m_modelZonesOverview->GetCount() )
|
||||
SelectZoneTableItem( m_modelZonesOverview->GetItem( 0 ) );
|
||||
|
||||
m_prototypeFills->SetValue( m_pcbFrame->GetBoard()->GetProject()->GetLocalSettings().m_PrototypeZoneFill );
|
||||
|
||||
m_layerSelector->SetLayersHotkeys( false );
|
||||
m_layerSelector->SetNotAllowedLayerSet( LSET::AllNonCuMask() );
|
||||
m_layerSelector->SetBoardFrame( aParent );
|
||||
m_layerSelector->Resync();
|
||||
|
||||
m_layerSelector->SetLayerSelection( m_currentLayer );
|
||||
|
||||
if( m_zoneInfo->m_LayerProperties.contains( m_currentLayer ) )
|
||||
{
|
||||
VECTOR2I value = m_zoneInfo->m_LayerProperties[m_currentLayer].hatching_offset.value_or( VECTOR2D( 0, 0 ) );
|
||||
|
||||
m_hatchingOffsetX.SetValue( value.x );
|
||||
m_hatchingOffsetY.SetValue( value.y );
|
||||
}
|
||||
|
||||
Layout();
|
||||
m_MainBoxSizer->Fit( this );
|
||||
finishDialogSettings();
|
||||
@ -137,6 +159,22 @@ void DIALOG_ZONE_MANAGER::FitCanvasToScreen()
|
||||
}
|
||||
|
||||
|
||||
bool DIALOG_ZONE_MANAGER::TransferDefaultZoneSettingsFromWindow()
|
||||
{
|
||||
PCB_LAYER_ID layer = static_cast<PCB_LAYER_ID>( m_layerSelector->GetLayerSelection() );
|
||||
|
||||
if( !m_zoneInfo->m_LayerProperties.contains( layer ) )
|
||||
{
|
||||
m_zoneInfo->m_LayerProperties.emplace( layer, ZONE_LAYER_PROPERTIES() );
|
||||
}
|
||||
|
||||
m_zoneInfo->m_LayerProperties[m_currentLayer].hatching_offset =
|
||||
VECTOR2I( m_hatchingOffsetX.GetIntValue(), m_hatchingOffsetY.GetIntValue() );
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void DIALOG_ZONE_MANAGER::PostProcessZoneViewSelChange( wxDataViewItem const& aItem )
|
||||
{
|
||||
bool textCtrlHasFocus = m_filterCtrl->HasFocus();
|
||||
@ -191,6 +229,29 @@ void DIALOG_ZONE_MANAGER::OnTableCharHook( wxKeyEvent& aEvent )
|
||||
}
|
||||
|
||||
|
||||
void DIALOG_ZONE_MANAGER::OnLayerSelection( wxCommandEvent& aEvent )
|
||||
{
|
||||
if( m_zoneInfo->m_LayerProperties.contains( m_currentLayer ) )
|
||||
{
|
||||
m_zoneInfo->m_LayerProperties[m_currentLayer].hatching_offset =
|
||||
VECTOR2I( m_hatchingOffsetX.GetIntValue(), m_hatchingOffsetY.GetIntValue() );
|
||||
}
|
||||
|
||||
m_currentLayer = static_cast<PCB_LAYER_ID>( m_layerSelector->GetLayerSelection() );
|
||||
|
||||
if( !m_zoneInfo->m_LayerProperties.contains( m_currentLayer ) )
|
||||
{
|
||||
m_zoneInfo->m_LayerProperties.emplace( m_currentLayer, ZONE_LAYER_PROPERTIES() );
|
||||
}
|
||||
|
||||
VECTOR2I value = m_zoneInfo->m_LayerProperties[m_currentLayer].hatching_offset.value_or( VECTOR2I( 0, 0 ) );
|
||||
m_hatchingOffsetX.SetValue( value.x );
|
||||
m_hatchingOffsetY.SetValue( value.y );
|
||||
|
||||
aEvent.Skip();
|
||||
}
|
||||
|
||||
|
||||
void DIALOG_ZONE_MANAGER::OnIdle( wxIdleEvent& aEvent )
|
||||
{
|
||||
WXUNUSED( aEvent )
|
||||
@ -250,6 +311,13 @@ void DIALOG_ZONE_MANAGER::OnOk( wxCommandEvent& aEvt )
|
||||
{
|
||||
m_panelZoneProperties->OnUserConfirmChange();
|
||||
m_zonesContainer->OnUserConfirmChange();
|
||||
m_pcbFrame->GetBoard()->GetProject()->GetLocalSettings().m_PrototypeZoneFill = m_prototypeFills->GetValue();
|
||||
|
||||
for( ZONE_MANAGEMENT_BASE* zone_management :
|
||||
std::list<ZONE_MANAGEMENT_BASE*>{ m_panelZoneProperties, m_zonesContainer.get() } )
|
||||
{
|
||||
zone_management->OnUserConfirmChange();
|
||||
}
|
||||
|
||||
if( m_zoneInfo )
|
||||
{
|
||||
@ -257,6 +325,8 @@ void DIALOG_ZONE_MANAGER::OnOk( wxCommandEvent& aEvt )
|
||||
m_zoneInfo->CopyFrom( *zone, false );
|
||||
}
|
||||
|
||||
TransferDefaultZoneSettingsFromWindow();
|
||||
|
||||
aEvt.Skip();
|
||||
}
|
||||
|
||||
@ -372,6 +442,7 @@ void DIALOG_ZONE_MANAGER::OnUpdateDisplayedZonesClick( wxCommandEvent& aEvent )
|
||||
|
||||
m_isFillingZones = true;
|
||||
m_panelZoneProperties->TransferZoneSettingsFromWindow();
|
||||
TransferDefaultZoneSettingsFromWindow();
|
||||
m_zonesContainer->FlushZoneSettingsChange();
|
||||
m_zonesContainer->FlushPriorityChange();
|
||||
|
||||
|
@ -43,6 +43,7 @@
|
||||
#include <eda_pattern_match.h>
|
||||
|
||||
#include "dialog_zone_manager_base.h"
|
||||
#include "layer_ids.h"
|
||||
|
||||
|
||||
class PANEL_ZONE_PROPERTIES;
|
||||
@ -105,6 +106,8 @@ protected:
|
||||
void OnTableChar( wxKeyEvent& event ) override;
|
||||
void OnTableCharHook( wxKeyEvent& event ) override;
|
||||
|
||||
void OnLayerSelection( wxCommandEvent& aEvent ) override;
|
||||
|
||||
private:
|
||||
void GenericProcessChar( wxKeyEvent& event );
|
||||
|
||||
@ -112,6 +115,8 @@ private:
|
||||
|
||||
void FitCanvasToScreen();
|
||||
|
||||
bool TransferDefaultZoneSettingsFromWindow();
|
||||
|
||||
private:
|
||||
PCB_BASE_FRAME* m_pcbFrame;
|
||||
ZONE_SETTINGS* m_zoneInfo;
|
||||
@ -124,6 +129,9 @@ private:
|
||||
bool m_needZoomGAL;
|
||||
bool m_isFillingZones;
|
||||
bool m_zoneFillComplete;
|
||||
UNIT_BINDER m_hatchingOffsetX;
|
||||
UNIT_BINDER m_hatchingOffsetY;
|
||||
PCB_LAYER_ID m_currentLayer;
|
||||
};
|
||||
|
||||
#endif
|
@ -1,10 +1,11 @@
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
|
||||
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6-dirty)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "pcb_layer_box_selector.h"
|
||||
#include "widgets/std_bitmap_button.h"
|
||||
|
||||
#include "dialog_zone_manager_base.h"
|
||||
@ -17,6 +18,11 @@ DIALOG_ZONE_MANAGER_BASE::DIALOG_ZONE_MANAGER_BASE( wxWindow* parent, wxWindowID
|
||||
|
||||
m_MainBoxSizer = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
m_notebook1 = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_zonePropertiesTab = new wxPanel( m_notebook1, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||
wxBoxSizer* bSizer8;
|
||||
bSizer8 = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
m_sizerTop = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
wxBoxSizer* leftColumn;
|
||||
@ -25,7 +31,7 @@ DIALOG_ZONE_MANAGER_BASE::DIALOG_ZONE_MANAGER_BASE( wxWindow* parent, wxWindowID
|
||||
wxBoxSizer* searchSizer;
|
||||
searchSizer = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
m_filterCtrl = new wxSearchCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER );
|
||||
m_filterCtrl = new wxSearchCtrl( m_zonePropertiesTab, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER );
|
||||
#ifndef __WXMAC__
|
||||
m_filterCtrl->ShowSearchButton( true );
|
||||
#endif
|
||||
@ -35,30 +41,30 @@ DIALOG_ZONE_MANAGER_BASE::DIALOG_ZONE_MANAGER_BASE( wxWindow* parent, wxWindowID
|
||||
|
||||
searchSizer->Add( 10, 0, 0, wxEXPAND, 5 );
|
||||
|
||||
m_checkName = new wxCheckBox( this, wxID_ANY, _("Name"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_checkName = new wxCheckBox( m_zonePropertiesTab, wxID_ANY, _("Name"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_checkName->SetValue(true);
|
||||
searchSizer->Add( m_checkName, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
m_checkNet = new wxCheckBox( this, wxID_ANY, _("Net"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_checkNet = new wxCheckBox( m_zonePropertiesTab, wxID_ANY, _("Net"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_checkNet->SetValue(true);
|
||||
searchSizer->Add( m_checkNet, 0, wxALIGN_CENTER_VERTICAL, 5 );
|
||||
|
||||
|
||||
leftColumn->Add( searchSizer, 0, wxBOTTOM|wxEXPAND|wxTOP, 5 );
|
||||
|
||||
m_viewZonesOverview = new wxDataViewCtrl( this, wxID_ANY, wxDefaultPosition, wxSize( -1,240 ), wxDV_HORIZ_RULES|wxDV_SINGLE|wxDV_VERT_RULES );
|
||||
m_viewZonesOverview = new wxDataViewCtrl( m_zonePropertiesTab, wxID_ANY, wxDefaultPosition, wxSize( -1,240 ), wxDV_HORIZ_RULES|wxDV_SINGLE|wxDV_VERT_RULES );
|
||||
m_viewZonesOverview->SetMinSize( wxSize( -1,240 ) );
|
||||
|
||||
leftColumn->Add( m_viewZonesOverview, 1, wxEXPAND, 5 );
|
||||
|
||||
m_sizerZoneOP = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
m_btnMoveUp = new STD_BITMAP_BUTTON( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
|
||||
m_btnMoveUp = new STD_BITMAP_BUTTON( m_zonePropertiesTab, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
|
||||
m_btnMoveUp->SetToolTip( _("Top zone has the highest priority. When a zone is inside another zone, if its priority is higher, its outlines are removed from the other zone.") );
|
||||
|
||||
m_sizerZoneOP->Add( m_btnMoveUp, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
|
||||
|
||||
m_btnMoveDown = new STD_BITMAP_BUTTON( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
|
||||
m_btnMoveDown = new STD_BITMAP_BUTTON( m_zonePropertiesTab, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
|
||||
m_btnMoveDown->SetToolTip( _("Top zone has the highest priority. When a zone is inside another zone, if its priority is higher, its outlines are removed from the other zone.") );
|
||||
|
||||
m_sizerZoneOP->Add( m_btnMoveDown, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
|
||||
@ -70,12 +76,62 @@ DIALOG_ZONE_MANAGER_BASE::DIALOG_ZONE_MANAGER_BASE( wxWindow* parent, wxWindowID
|
||||
m_sizerTop->Add( leftColumn, 1, wxEXPAND|wxRIGHT|wxLEFT, 10 );
|
||||
|
||||
|
||||
m_MainBoxSizer->Add( m_sizerTop, 1, wxEXPAND|wxRIGHT, 5 );
|
||||
bSizer8->Add( m_sizerTop, 1, wxEXPAND|wxRIGHT, 5 );
|
||||
|
||||
m_sizerProperties = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
|
||||
m_MainBoxSizer->Add( m_sizerProperties, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
|
||||
bSizer8->Add( m_sizerProperties, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
|
||||
m_zonePropertiesTab->SetSizer( bSizer8 );
|
||||
m_zonePropertiesTab->Layout();
|
||||
bSizer8->Fit( m_zonePropertiesTab );
|
||||
m_notebook1->AddPage( m_zonePropertiesTab, _("Zones"), true );
|
||||
m_perLayerPropertiesTab = new wxPanel( m_notebook1, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||
wxGridBagSizer* gbSizer4;
|
||||
gbSizer4 = new wxGridBagSizer( 0, 0 );
|
||||
gbSizer4->SetFlexibleDirection( wxBOTH );
|
||||
gbSizer4->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
|
||||
|
||||
m_layerSelectorLabel = new wxStaticText( m_perLayerPropertiesTab, wxID_ANY, _("Layer"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_layerSelectorLabel->Wrap( -1 );
|
||||
gbSizer4->Add( m_layerSelectorLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxALL, 5 );
|
||||
|
||||
m_layerSelector = new PCB_LAYER_BOX_SELECTOR( m_perLayerPropertiesTab, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 );
|
||||
gbSizer4->Add( m_layerSelector, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxALL|wxEXPAND, 5 );
|
||||
|
||||
m_hatchingOffsetXLabel = new wxStaticText( m_perLayerPropertiesTab, wxID_ANY, _("Hatching offset x"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_hatchingOffsetXLabel->Wrap( -1 );
|
||||
gbSizer4->Add( m_hatchingOffsetXLabel, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxALL, 5 );
|
||||
|
||||
m_hatchingOffsetXValue = new wxTextCtrl( m_perLayerPropertiesTab, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
gbSizer4->Add( m_hatchingOffsetXValue, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxALL|wxEXPAND, 5 );
|
||||
|
||||
m_hatchingOffsetXUnit = new wxStaticText( m_perLayerPropertiesTab, wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_hatchingOffsetXUnit->Wrap( -1 );
|
||||
gbSizer4->Add( m_hatchingOffsetXUnit, wxGBPosition( 1, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxALL, 5 );
|
||||
|
||||
m_hatchingOffsetYLabel = new wxStaticText( m_perLayerPropertiesTab, wxID_ANY, _("Hatching offset y"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_hatchingOffsetYLabel->Wrap( -1 );
|
||||
gbSizer4->Add( m_hatchingOffsetYLabel, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxALL, 5 );
|
||||
|
||||
m_hatchingOffsetYValue = new wxTextCtrl( m_perLayerPropertiesTab, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
gbSizer4->Add( m_hatchingOffsetYValue, wxGBPosition( 2, 1 ), wxGBSpan( 1, 1 ), wxALL|wxEXPAND, 5 );
|
||||
|
||||
m_hatchingOffsetYUnit = new wxStaticText( m_perLayerPropertiesTab, wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_hatchingOffsetYUnit->Wrap( -1 );
|
||||
gbSizer4->Add( m_hatchingOffsetYUnit, wxGBPosition( 2, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxALL, 5 );
|
||||
|
||||
|
||||
gbSizer4->AddGrowableCol( 1 );
|
||||
|
||||
m_perLayerPropertiesTab->SetSizer( gbSizer4 );
|
||||
m_perLayerPropertiesTab->Layout();
|
||||
gbSizer4->Fit( m_perLayerPropertiesTab );
|
||||
m_notebook1->AddPage( m_perLayerPropertiesTab, _("Per layer properties"), false );
|
||||
|
||||
m_MainBoxSizer->Add( m_notebook1, 1, wxEXPAND | wxALL, 5 );
|
||||
|
||||
m_sizerBottom = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
@ -84,6 +140,11 @@ DIALOG_ZONE_MANAGER_BASE::DIALOG_ZONE_MANAGER_BASE( wxWindow* parent, wxWindowID
|
||||
|
||||
m_sizerBottom->Add( m_checkRepour, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
|
||||
|
||||
m_prototypeFills = new wxCheckBox( this, wxID_ANY, _("Fill all zones solid"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_prototypeFills->SetToolTip( _("When enabled, fill all zones solid regardless of selected fill style.") );
|
||||
|
||||
m_sizerBottom->Add( m_prototypeFills, 0, wxALL, 5 );
|
||||
|
||||
|
||||
m_sizerBottom->Add( 25, 0, 1, wxEXPAND, 5 );
|
||||
|
||||
@ -121,6 +182,7 @@ DIALOG_ZONE_MANAGER_BASE::DIALOG_ZONE_MANAGER_BASE( wxWindow* parent, wxWindowID
|
||||
m_viewZonesOverview->Connect( wxEVT_LEFT_UP, wxMouseEventHandler( DIALOG_ZONE_MANAGER_BASE::OnViewZonesOverviewOnLeftUp ), NULL, this );
|
||||
m_btnMoveUp->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ZONE_MANAGER_BASE::OnMoveUpClick ), NULL, this );
|
||||
m_btnMoveDown->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ZONE_MANAGER_BASE::OnMoveDownClick ), NULL, this );
|
||||
m_layerSelector->Connect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( DIALOG_ZONE_MANAGER_BASE::OnLayerSelection ), NULL, this );
|
||||
m_checkRepour->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_ZONE_MANAGER_BASE::OnRepourCheck ), NULL, this );
|
||||
m_updateDisplayedZones->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ZONE_MANAGER_BASE::OnUpdateDisplayedZonesClick ), NULL, this );
|
||||
m_sdbSizerOK->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ZONE_MANAGER_BASE::OnOk ), NULL, this );
|
||||
@ -140,6 +202,7 @@ DIALOG_ZONE_MANAGER_BASE::~DIALOG_ZONE_MANAGER_BASE()
|
||||
m_viewZonesOverview->Disconnect( wxEVT_LEFT_UP, wxMouseEventHandler( DIALOG_ZONE_MANAGER_BASE::OnViewZonesOverviewOnLeftUp ), NULL, this );
|
||||
m_btnMoveUp->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ZONE_MANAGER_BASE::OnMoveUpClick ), NULL, this );
|
||||
m_btnMoveDown->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ZONE_MANAGER_BASE::OnMoveDownClick ), NULL, this );
|
||||
m_layerSelector->Disconnect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( DIALOG_ZONE_MANAGER_BASE::OnLayerSelection ), NULL, this );
|
||||
m_checkRepour->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_ZONE_MANAGER_BASE::OnRepourCheck ), NULL, this );
|
||||
m_updateDisplayedZones->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ZONE_MANAGER_BASE::OnUpdateDisplayedZonesClick ), NULL, this );
|
||||
m_sdbSizerOK->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ZONE_MANAGER_BASE::OnOk ), NULL, this );
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,5 @@
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
|
||||
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6-dirty)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
@ -10,6 +10,7 @@
|
||||
#include <wx/artprov.h>
|
||||
#include <wx/xrc/xmlres.h>
|
||||
#include <wx/intl.h>
|
||||
class PCB_LAYER_BOX_SELECTOR;
|
||||
class STD_BITMAP_BUTTON;
|
||||
|
||||
#include "dialog_shim.h"
|
||||
@ -27,6 +28,12 @@ class STD_BITMAP_BUTTON;
|
||||
#include <wx/image.h>
|
||||
#include <wx/icon.h>
|
||||
#include <wx/button.h>
|
||||
#include <wx/panel.h>
|
||||
#include <wx/stattext.h>
|
||||
#include <wx/bmpcbox.h>
|
||||
#include <wx/textctrl.h>
|
||||
#include <wx/gbsizer.h>
|
||||
#include <wx/notebook.h>
|
||||
#include <wx/dialog.h>
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
@ -40,6 +47,8 @@ class DIALOG_ZONE_MANAGER_BASE : public DIALOG_SHIM
|
||||
|
||||
protected:
|
||||
wxBoxSizer* m_MainBoxSizer;
|
||||
wxNotebook* m_notebook1;
|
||||
wxPanel* m_zonePropertiesTab;
|
||||
wxBoxSizer* m_sizerTop;
|
||||
wxSearchCtrl* m_filterCtrl;
|
||||
wxCheckBox* m_checkName;
|
||||
@ -49,8 +58,18 @@ class DIALOG_ZONE_MANAGER_BASE : public DIALOG_SHIM
|
||||
STD_BITMAP_BUTTON* m_btnMoveUp;
|
||||
STD_BITMAP_BUTTON* m_btnMoveDown;
|
||||
wxBoxSizer* m_sizerProperties;
|
||||
wxPanel* m_perLayerPropertiesTab;
|
||||
wxStaticText* m_layerSelectorLabel;
|
||||
PCB_LAYER_BOX_SELECTOR* m_layerSelector;
|
||||
wxStaticText* m_hatchingOffsetXLabel;
|
||||
wxTextCtrl* m_hatchingOffsetXValue;
|
||||
wxStaticText* m_hatchingOffsetXUnit;
|
||||
wxStaticText* m_hatchingOffsetYLabel;
|
||||
wxTextCtrl* m_hatchingOffsetYValue;
|
||||
wxStaticText* m_hatchingOffsetYUnit;
|
||||
wxBoxSizer* m_sizerBottom;
|
||||
wxCheckBox* m_checkRepour;
|
||||
wxCheckBox* m_prototypeFills;
|
||||
wxButton* m_updateDisplayedZones;
|
||||
wxStdDialogButtonSizer* m_sdbSizer;
|
||||
wxButton* m_sdbSizerOK;
|
||||
@ -68,6 +87,7 @@ class DIALOG_ZONE_MANAGER_BASE : public DIALOG_SHIM
|
||||
virtual void OnViewZonesOverviewOnLeftUp( wxMouseEvent& event ) { event.Skip(); }
|
||||
virtual void OnMoveUpClick( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnMoveDownClick( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnLayerSelection( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnRepourCheck( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnUpdateDisplayedZonesClick( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnOk( wxCommandEvent& event ) { event.Skip(); }
|
||||
|
@ -26,6 +26,8 @@
|
||||
#include "panel_zone_properties.h"
|
||||
#include "zone_manager/zones_container.h"
|
||||
|
||||
#include "pcb_layer_box_selector.h"
|
||||
|
||||
#include <wx/radiobut.h>
|
||||
#include <kiface_base.h>
|
||||
#include <confirm.h>
|
||||
@ -46,21 +48,21 @@ PANEL_ZONE_PROPERTIES::PANEL_ZONE_PROPERTIES( wxWindow* aParent, PCB_BASE_FRAME*
|
||||
PANEL_ZONE_PROPERTIES_BASE( aParent ),
|
||||
m_ZoneContainer( aZoneContainer ),
|
||||
m_cornerSmoothingType( ZONE_SETTINGS::SMOOTHING_UNDEFINED ),
|
||||
m_outlineHatchPitch( aPCB_FRAME, m_stBorderHatchPitchText, m_outlineHatchPitchCtrl,
|
||||
m_outlineHatchUnits ),
|
||||
m_outlineHatchPitch( aPCB_FRAME, m_stBorderHatchPitchText, m_outlineHatchPitchCtrl, m_outlineHatchUnits ),
|
||||
m_cornerRadius( aPCB_FRAME, m_cornerRadiusLabel, m_cornerRadiusCtrl, m_cornerRadiusUnits ),
|
||||
m_clearance( aPCB_FRAME, m_clearanceLabel, m_clearanceCtrl, m_clearanceUnits ),
|
||||
m_minThickness( aPCB_FRAME, m_minWidthLabel, m_minWidthCtrl, m_minWidthUnits ),
|
||||
m_antipadClearance( aPCB_FRAME, m_antipadLabel, m_antipadCtrl, m_antipadUnits ),
|
||||
m_spokeWidth( aPCB_FRAME, m_spokeWidthLabel, m_spokeWidthCtrl, m_spokeWidthUnits ),
|
||||
m_gridStyleRotation( aPCB_FRAME, m_staticTextGrindOrient, m_tcGridStyleOrientation,
|
||||
m_staticTextRotUnits ),
|
||||
m_gridStyleRotation( aPCB_FRAME, m_staticTextGrindOrient, m_tcGridStyleOrientation, m_staticTextRotUnits ),
|
||||
m_gridStyleThickness( aPCB_FRAME, m_staticTextStyleThickness, m_tcGridStyleThickness,
|
||||
m_GridStyleThicknessUnits ),
|
||||
m_gridStyleGap( aPCB_FRAME, m_staticTextGridGap, m_tcGridStyleGap, m_GridStyleGapUnits ),
|
||||
m_islandThreshold( aPCB_FRAME, m_islandThresholdLabel, m_tcIslandThreshold,
|
||||
m_islandThresholdUnits ),
|
||||
m_isTeardrop()
|
||||
m_islandThreshold( aPCB_FRAME, m_islandThresholdLabel, m_tcIslandThreshold, m_islandThresholdUnits ),
|
||||
m_isTeardrop(),
|
||||
m_hatchingOffsetX( aPCB_FRAME, m_hatchingOffsetXLabel, m_hatchingOffsetXValue, m_hatchingOffsetXUnit ),
|
||||
m_hatchingOffsetY( aPCB_FRAME, m_hatchingOffsetYLabel, m_hatchingOffsetYValue, m_hatchingOffsetYUnit ),
|
||||
m_currentLayer( UNDEFINED_LAYER )
|
||||
{
|
||||
m_cbRemoveIslands->Bind( wxEVT_CHOICE,
|
||||
[&]( wxCommandEvent& )
|
||||
@ -163,6 +165,32 @@ bool PANEL_ZONE_PROPERTIES::TransferZoneSettingsToWindow()
|
||||
|
||||
m_tcZoneName->SetValue( m_settings->m_Name );
|
||||
|
||||
m_layerSelector->SetLayersHotkeys( false );
|
||||
m_layerSelector->SetNotAllowedLayerSet( ~( m_settings->m_Layers ) );
|
||||
m_layerSelector->SetBoardFrame( m_PCB_Frame );
|
||||
m_layerSelector->Resync();
|
||||
|
||||
if( !m_settings->m_LayerProperties.empty() )
|
||||
{
|
||||
m_currentLayer = m_settings->m_LayerProperties.begin()->first;
|
||||
|
||||
m_hatchingOffsetUseDefault->SetValue(
|
||||
!m_settings->m_LayerProperties[m_currentLayer].hatching_offset.has_value() );
|
||||
|
||||
VECTOR2I value = m_settings->m_LayerProperties[m_currentLayer].hatching_offset.value_or( VECTOR2I( 0, 0 ) );
|
||||
m_hatchingOffsetX.SetValue( value.x );
|
||||
m_hatchingOffsetY.SetValue( value.y );
|
||||
|
||||
m_hatchingOffsetXValue->Enable( !m_hatchingOffsetUseDefault->IsChecked() );
|
||||
m_hatchingOffsetYValue->Enable( !m_hatchingOffsetUseDefault->IsChecked() );
|
||||
}
|
||||
else
|
||||
{
|
||||
m_currentLayer = m_settings->m_Layers.Seq().at( 0 );
|
||||
}
|
||||
|
||||
m_layerSelector->SetLayerSelection( m_currentLayer );
|
||||
|
||||
|
||||
// Enable/Disable some widgets
|
||||
wxCommandEvent aEvent;
|
||||
@ -210,6 +238,50 @@ void PANEL_ZONE_PROPERTIES::OnZoneNameChanged( wxCommandEvent& aEvent )
|
||||
wxQueueEvent( m_parent, evt );
|
||||
}
|
||||
|
||||
void PANEL_ZONE_PROPERTIES::OnLayerSelection( wxCommandEvent& aEvent )
|
||||
{
|
||||
if( m_currentLayer != UNDEFINED_LAYER )
|
||||
{
|
||||
if( !m_hatchingOffsetUseDefault->IsChecked() )
|
||||
{
|
||||
m_settings->m_LayerProperties[m_currentLayer].hatching_offset =
|
||||
VECTOR2I( m_hatchingOffsetX.GetIntValue(), m_hatchingOffsetY.GetIntValue() );
|
||||
}
|
||||
else
|
||||
{
|
||||
m_settings->m_LayerProperties[m_currentLayer].hatching_offset.reset();
|
||||
}
|
||||
}
|
||||
|
||||
m_currentLayer = static_cast<PCB_LAYER_ID>( m_layerSelector->GetLayerSelection() );
|
||||
if( m_currentLayer != UNDEFINED_LAYER )
|
||||
{
|
||||
if( !m_settings->m_LayerProperties.contains( m_currentLayer ) )
|
||||
m_settings->m_LayerProperties.emplace( m_currentLayer, ZONE_LAYER_PROPERTIES() );
|
||||
|
||||
m_hatchingOffsetUseDefault->SetValue(
|
||||
!m_settings->m_LayerProperties[m_currentLayer].hatching_offset.has_value() );
|
||||
|
||||
VECTOR2I value = m_settings->m_LayerProperties[m_currentLayer].hatching_offset.value_or( VECTOR2I( 0, 0 ) );
|
||||
|
||||
m_hatchingOffsetX.SetValue( value.x );
|
||||
m_hatchingOffsetY.SetValue( value.y );
|
||||
|
||||
m_hatchingOffsetXValue->Enable( !m_hatchingOffsetUseDefault->IsChecked() );
|
||||
m_hatchingOffsetYValue->Enable( !m_hatchingOffsetUseDefault->IsChecked() );
|
||||
}
|
||||
|
||||
aEvent.Skip();
|
||||
}
|
||||
|
||||
|
||||
void PANEL_ZONE_PROPERTIES::OnHatchingOffsetChecked( wxCommandEvent& aEvent )
|
||||
{
|
||||
m_hatchingOffsetXValue->Enable( !m_hatchingOffsetUseDefault->IsChecked() );
|
||||
m_hatchingOffsetYValue->Enable( !m_hatchingOffsetUseDefault->IsChecked() );
|
||||
aEvent.Skip();
|
||||
}
|
||||
|
||||
|
||||
bool PANEL_ZONE_PROPERTIES::TransferZoneSettingsFromWindow()
|
||||
{
|
||||
@ -230,6 +302,23 @@ bool PANEL_ZONE_PROPERTIES::TransferZoneSettingsFromWindow()
|
||||
m_settings->m_HatchSmoothingLevel = m_spinCtrlSmoothLevel->GetValue();
|
||||
m_settings->m_HatchSmoothingValue = m_spinCtrlSmoothValue->GetValue();
|
||||
|
||||
if( m_currentLayer != UNDEFINED_LAYER )
|
||||
{
|
||||
if( !m_settings->m_LayerProperties.contains( m_currentLayer ) )
|
||||
m_settings->m_LayerProperties.emplace( m_currentLayer, ZONE_LAYER_PROPERTIES() );
|
||||
|
||||
if( !m_hatchingOffsetUseDefault->IsChecked() )
|
||||
{
|
||||
m_settings->m_LayerProperties[m_currentLayer].hatching_offset =
|
||||
VECTOR2I( m_hatchingOffsetX.GetIntValue(), m_hatchingOffsetY.GetIntValue() );
|
||||
}
|
||||
else
|
||||
{
|
||||
m_settings->m_LayerProperties[m_currentLayer].hatching_offset.reset();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -27,6 +27,7 @@
|
||||
#define PANEL_ZONE_PROPERTIES_H
|
||||
|
||||
|
||||
#include "layer_ids.h"
|
||||
#include "widgets/unit_binder.h"
|
||||
#include "zone_manager/panel_zone_properties_base.h"
|
||||
#include "zone_management_base.h"
|
||||
@ -79,6 +80,8 @@ private:
|
||||
void OnRemoveIslandsSelection( wxCommandEvent& event ) override;
|
||||
void OnPadInZoneSelection( wxCommandEvent& event ) override;
|
||||
void OnZoneNameChanged( wxCommandEvent& event ) override;
|
||||
void OnLayerSelection( wxCommandEvent& event ) override;
|
||||
void OnHatchingOffsetChecked( wxCommandEvent& aEvent ) override;
|
||||
|
||||
|
||||
private:
|
||||
@ -99,6 +102,11 @@ private:
|
||||
UNIT_BINDER m_gridStyleGap;
|
||||
UNIT_BINDER m_islandThreshold;
|
||||
bool m_isTeardrop;
|
||||
|
||||
UNIT_BINDER m_hatchingOffsetX;
|
||||
UNIT_BINDER m_hatchingOffsetY;
|
||||
|
||||
PCB_LAYER_ID m_currentLayer;
|
||||
};
|
||||
|
||||
|
||||
|
@ -1,10 +1,12 @@
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
|
||||
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6-dirty)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "pcb_layer_box_selector.h"
|
||||
|
||||
#include "panel_zone_properties_base.h"
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
@ -14,8 +16,8 @@ PANEL_ZONE_PROPERTIES_BASE::PANEL_ZONE_PROPERTIES_BASE( wxWindow* parent, wxWind
|
||||
wxBoxSizer* bSizerMiddle;
|
||||
bSizerMiddle = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
wxBoxSizer* bLeftColumn;
|
||||
bLeftColumn = new wxBoxSizer( wxVERTICAL );
|
||||
wxBoxSizer* bSizer2;
|
||||
bSizer2 = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
wxStaticBoxSizer* sbGeneral;
|
||||
sbGeneral = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("General") ), wxHORIZONTAL );
|
||||
@ -39,7 +41,7 @@ PANEL_ZONE_PROPERTIES_BASE::PANEL_ZONE_PROPERTIES_BASE( wxWindow* parent, wxWind
|
||||
sbGeneral->Add( fgSizer1, 1, wxEXPAND|wxTOP|wxBOTTOM, 5 );
|
||||
|
||||
|
||||
bLeftColumn->Add( sbGeneral, 0, wxEXPAND|wxLEFT|wxRIGHT, 5 );
|
||||
bSizer2->Add( sbGeneral, 0, wxEXPAND|wxLEFT|wxRIGHT, 5 );
|
||||
|
||||
wxStaticBoxSizer* m_ExportableSetupSizer;
|
||||
m_ExportableSetupSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Shape") ), wxHORIZONTAL );
|
||||
@ -103,52 +105,49 @@ PANEL_ZONE_PROPERTIES_BASE::PANEL_ZONE_PROPERTIES_BASE( wxWindow* parent, wxWind
|
||||
m_ExportableSetupSizer->Add( gbSizer1, 1, wxEXPAND|wxBOTTOM|wxRIGHT, 5 );
|
||||
|
||||
|
||||
bLeftColumn->Add( m_ExportableSetupSizer, 1, wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 );
|
||||
bSizer2->Add( m_ExportableSetupSizer, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
bSizerMiddle->Add( bLeftColumn, 0, wxBOTTOM|wxEXPAND|wxTOP, 5 );
|
||||
bSizerMiddle->Add( bSizer2, 1, wxEXPAND, 5 );
|
||||
|
||||
wxBoxSizer* bMiddleColumn;
|
||||
bMiddleColumn = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
wxStaticBoxSizer* sbSizer5;
|
||||
sbSizer5 = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Electrical Properties") ), wxVERTICAL );
|
||||
wxStaticBoxSizer* sbSizer3;
|
||||
sbSizer3 = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Electrical Properties") ), wxVERTICAL );
|
||||
|
||||
wxGridBagSizer* gbSizerSettings;
|
||||
gbSizerSettings = new wxGridBagSizer( 0, 0 );
|
||||
gbSizerSettings->SetFlexibleDirection( wxBOTH );
|
||||
gbSizerSettings->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
|
||||
|
||||
m_clearanceLabel = new wxStaticText( sbSizer5->GetStaticBox(), wxID_ANY, _("Clearance:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_clearanceLabel = new wxStaticText( sbSizer3->GetStaticBox(), wxID_ANY, _("Clearance:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_clearanceLabel->Wrap( -1 );
|
||||
m_clearanceLabel->SetToolTip( _("Copper clearance for this zone (set to 0 to use the netclass clearance)") );
|
||||
|
||||
gbSizerSettings->Add( m_clearanceLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT, 5 );
|
||||
|
||||
m_clearanceCtrl = new wxTextCtrl( sbSizer5->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_clearanceCtrl = new wxTextCtrl( sbSizer3->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
gbSizerSettings->Add( m_clearanceCtrl, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
m_clearanceUnits = new wxStaticText( sbSizer5->GetStaticBox(), wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_clearanceUnits = new wxStaticText( sbSizer3->GetStaticBox(), wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_clearanceUnits->Wrap( -1 );
|
||||
gbSizerSettings->Add( m_clearanceUnits, wxGBPosition( 0, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
|
||||
|
||||
m_minWidthLabel = new wxStaticText( sbSizer5->GetStaticBox(), wxID_ANY, _("Minimum width:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_minWidthLabel = new wxStaticText( sbSizer3->GetStaticBox(), wxID_ANY, _("Minimum width:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_minWidthLabel->Wrap( -1 );
|
||||
m_minWidthLabel->SetToolTip( _("Minimum thickness of filled areas.") );
|
||||
|
||||
gbSizerSettings->Add( m_minWidthLabel, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT, 5 );
|
||||
|
||||
m_minWidthCtrl = new wxTextCtrl( sbSizer5->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_minWidthCtrl = new wxTextCtrl( sbSizer3->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
gbSizerSettings->Add( m_minWidthCtrl, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
m_minWidthUnits = new wxStaticText( sbSizer5->GetStaticBox(), wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_minWidthUnits = new wxStaticText( sbSizer3->GetStaticBox(), wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_minWidthUnits->Wrap( -1 );
|
||||
gbSizerSettings->Add( m_minWidthUnits, wxGBPosition( 1, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
|
||||
|
||||
m_staticline2 = new wxStaticLine( sbSizer5->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
|
||||
m_staticline2 = new wxStaticLine( sbSizer3->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
|
||||
gbSizerSettings->Add( m_staticline2, wxGBPosition( 2, 0 ), wxGBSpan( 1, 3 ), wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 );
|
||||
|
||||
m_connectionLabel = new wxStaticText( sbSizer5->GetStaticBox(), wxID_ANY, _("Pad connections:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_connectionLabel = new wxStaticText( sbSizer3->GetStaticBox(), wxID_ANY, _("Pad connections:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_connectionLabel->Wrap( -1 );
|
||||
m_connectionLabel->SetToolTip( _("Default pad connection type to zone.\nThis setting can be overridden by local pad settings") );
|
||||
|
||||
@ -156,124 +155,119 @@ PANEL_ZONE_PROPERTIES_BASE::PANEL_ZONE_PROPERTIES_BASE( wxWindow* parent, wxWind
|
||||
|
||||
wxString m_PadInZoneOptChoices[] = { _("Solid"), _("Thermal reliefs"), _("Reliefs for PTH"), _("None") };
|
||||
int m_PadInZoneOptNChoices = sizeof( m_PadInZoneOptChoices ) / sizeof( wxString );
|
||||
m_PadInZoneOpt = new wxChoice( sbSizer5->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_PadInZoneOptNChoices, m_PadInZoneOptChoices, 0 );
|
||||
m_PadInZoneOpt = new wxChoice( sbSizer3->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_PadInZoneOptNChoices, m_PadInZoneOptChoices, 0 );
|
||||
m_PadInZoneOpt->SetSelection( 0 );
|
||||
gbSizerSettings->Add( m_PadInZoneOpt, wxGBPosition( 3, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxTOP|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
|
||||
|
||||
m_antipadLabel = new wxStaticText( sbSizer5->GetStaticBox(), wxID_ANY, _("Thermal relief gap:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_antipadLabel = new wxStaticText( sbSizer3->GetStaticBox(), wxID_ANY, _("Thermal relief gap:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_antipadLabel->Wrap( -1 );
|
||||
m_antipadLabel->SetToolTip( _("The distance that will be kept clear between the filled area of the zone and a pad connected by thermal relief spokes.") );
|
||||
|
||||
gbSizerSettings->Add( m_antipadLabel, wxGBPosition( 4, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP, 5 );
|
||||
|
||||
m_antipadCtrl = new wxTextCtrl( sbSizer5->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_antipadCtrl = new wxTextCtrl( sbSizer3->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_antipadCtrl->SetToolTip( _("Clearance between pads in the same net and filled areas.") );
|
||||
|
||||
gbSizerSettings->Add( m_antipadCtrl, wxGBPosition( 4, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
m_antipadUnits = new wxStaticText( sbSizer5->GetStaticBox(), wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_antipadUnits = new wxStaticText( sbSizer3->GetStaticBox(), wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_antipadUnits->Wrap( -1 );
|
||||
gbSizerSettings->Add( m_antipadUnits, wxGBPosition( 4, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT, 5 );
|
||||
|
||||
m_spokeWidthLabel = new wxStaticText( sbSizer5->GetStaticBox(), wxID_ANY, _("Thermal spoke width:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_spokeWidthLabel = new wxStaticText( sbSizer3->GetStaticBox(), wxID_ANY, _("Thermal spoke width:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_spokeWidthLabel->Wrap( -1 );
|
||||
gbSizerSettings->Add( m_spokeWidthLabel, wxGBPosition( 5, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT|wxTOP, 5 );
|
||||
|
||||
m_spokeWidthCtrl = new wxTextCtrl( sbSizer5->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_spokeWidthCtrl = new wxTextCtrl( sbSizer3->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_spokeWidthCtrl->SetToolTip( _("Width of copper in thermal reliefs.") );
|
||||
|
||||
gbSizerSettings->Add( m_spokeWidthCtrl, wxGBPosition( 5, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALL, 5 );
|
||||
|
||||
m_spokeWidthUnits = new wxStaticText( sbSizer5->GetStaticBox(), wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_spokeWidthUnits = new wxStaticText( sbSizer3->GetStaticBox(), wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_spokeWidthUnits->Wrap( -1 );
|
||||
gbSizerSettings->Add( m_spokeWidthUnits, wxGBPosition( 5, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 );
|
||||
|
||||
|
||||
gbSizerSettings->AddGrowableCol( 1 );
|
||||
|
||||
sbSizer5->Add( gbSizerSettings, 0, wxEXPAND, 5 );
|
||||
sbSizer3->Add( gbSizerSettings, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
bMiddleColumn->Add( sbSizer5, 1, wxEXPAND|wxRIGHT, 5 );
|
||||
|
||||
|
||||
bSizerMiddle->Add( bMiddleColumn, 1, wxEXPAND|wxALL, 5 );
|
||||
|
||||
wxStaticBoxSizer* sbSizerZoneStyle;
|
||||
sbSizerZoneStyle = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Fill") ), wxVERTICAL );
|
||||
bSizerMiddle->Add( sbSizer3, 1, wxALL|wxEXPAND, 5 );
|
||||
|
||||
m_notebook1 = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_fillPanel = new wxPanel( m_notebook1, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||
wxGridBagSizer* gbSizer3;
|
||||
gbSizer3 = new wxGridBagSizer( 5, 5 );
|
||||
gbSizer3->SetFlexibleDirection( wxBOTH );
|
||||
gbSizer3->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
|
||||
gbSizer3->SetEmptyCellSize( wxSize( -1,10 ) );
|
||||
|
||||
m_staticTextGridFillType = new wxStaticText( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, _("Fill type:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextGridFillType = new wxStaticText( m_fillPanel, wxID_ANY, _("Fill type:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextGridFillType->Wrap( -1 );
|
||||
gbSizer3->Add( m_staticTextGridFillType, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
|
||||
|
||||
wxString m_GridStyleCtrlChoices[] = { _("Solid fill"), _("Hatch pattern") };
|
||||
int m_GridStyleCtrlNChoices = sizeof( m_GridStyleCtrlChoices ) / sizeof( wxString );
|
||||
m_GridStyleCtrl = new wxChoice( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_GridStyleCtrlNChoices, m_GridStyleCtrlChoices, 0 );
|
||||
m_GridStyleCtrl = new wxChoice( m_fillPanel, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_GridStyleCtrlNChoices, m_GridStyleCtrlChoices, 0 );
|
||||
m_GridStyleCtrl->SetSelection( 0 );
|
||||
gbSizer3->Add( m_GridStyleCtrl, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxEXPAND, 5 );
|
||||
|
||||
m_staticTextGrindOrient = new wxStaticText( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, _("Orientation:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextGrindOrient = new wxStaticText( m_fillPanel, wxID_ANY, _("Orientation:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextGrindOrient->Wrap( -1 );
|
||||
gbSizer3->Add( m_staticTextGrindOrient, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP, 5 );
|
||||
|
||||
m_tcGridStyleOrientation = new wxTextCtrl( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_tcGridStyleOrientation = new wxTextCtrl( m_fillPanel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
gbSizer3->Add( m_tcGridStyleOrientation, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxEXPAND, 5 );
|
||||
|
||||
m_staticTextRotUnits = new wxStaticText( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, _("deg"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextRotUnits = new wxStaticText( m_fillPanel, wxID_ANY, _("deg"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextRotUnits->Wrap( -1 );
|
||||
gbSizer3->Add( m_staticTextRotUnits, wxGBPosition( 1, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxTOP, 5 );
|
||||
|
||||
m_staticTextStyleThickness = new wxStaticText( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, _("Hatch width:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextStyleThickness = new wxStaticText( m_fillPanel, wxID_ANY, _("Hatch width:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextStyleThickness->Wrap( -1 );
|
||||
gbSizer3->Add( m_staticTextStyleThickness, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
|
||||
|
||||
m_tcGridStyleThickness = new wxTextCtrl( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_tcGridStyleThickness = new wxTextCtrl( m_fillPanel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
gbSizer3->Add( m_tcGridStyleThickness, wxGBPosition( 2, 1 ), wxGBSpan( 1, 1 ), wxEXPAND, 5 );
|
||||
|
||||
m_GridStyleThicknessUnits = new wxStaticText( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_GridStyleThicknessUnits = new wxStaticText( m_fillPanel, wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_GridStyleThicknessUnits->Wrap( -1 );
|
||||
gbSizer3->Add( m_GridStyleThicknessUnits, wxGBPosition( 2, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
|
||||
|
||||
m_staticTextGridGap = new wxStaticText( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, _("Hatch gap:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextGridGap = new wxStaticText( m_fillPanel, wxID_ANY, _("Hatch gap:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextGridGap->Wrap( -1 );
|
||||
gbSizer3->Add( m_staticTextGridGap, wxGBPosition( 3, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
|
||||
|
||||
m_tcGridStyleGap = new wxTextCtrl( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_tcGridStyleGap = new wxTextCtrl( m_fillPanel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
gbSizer3->Add( m_tcGridStyleGap, wxGBPosition( 3, 1 ), wxGBSpan( 1, 1 ), wxEXPAND, 5 );
|
||||
|
||||
m_GridStyleGapUnits = new wxStaticText( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_GridStyleGapUnits = new wxStaticText( m_fillPanel, wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_GridStyleGapUnits->Wrap( -1 );
|
||||
gbSizer3->Add( m_GridStyleGapUnits, wxGBPosition( 3, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
|
||||
|
||||
m_staticTextGridSmoothingLevel = new wxStaticText( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, _("Smoothing effort:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextGridSmoothingLevel = new wxStaticText( m_fillPanel, wxID_ANY, _("Smoothing effort:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextGridSmoothingLevel->Wrap( -1 );
|
||||
m_staticTextGridSmoothingLevel->SetToolTip( _("Value of smoothing effort\n0 = no smoothing\n1 = chamfer\n2 = round corners\n3 = round corners (finer shape)") );
|
||||
|
||||
gbSizer3->Add( m_staticTextGridSmoothingLevel, wxGBPosition( 4, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
|
||||
|
||||
m_spinCtrlSmoothLevel = new wxSpinCtrl( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 3, 0 );
|
||||
m_spinCtrlSmoothLevel = new wxSpinCtrl( m_fillPanel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 3, 0 );
|
||||
gbSizer3->Add( m_spinCtrlSmoothLevel, wxGBPosition( 4, 1 ), wxGBSpan( 1, 1 ), wxEXPAND, 5 );
|
||||
|
||||
m_staticTextGridSmootingVal = new wxStaticText( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, _("Smoothing amount:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextGridSmootingVal = new wxStaticText( m_fillPanel, wxID_ANY, _("Smoothing amount:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextGridSmootingVal->Wrap( -1 );
|
||||
m_staticTextGridSmootingVal->SetToolTip( _("Ratio between smoothed corners size and the gap between lines\n0 = no smoothing\n1.0 = max radius/chamfer size (half gap value)") );
|
||||
|
||||
gbSizer3->Add( m_staticTextGridSmootingVal, wxGBPosition( 5, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
|
||||
|
||||
m_spinCtrlSmoothValue = new wxSpinCtrlDouble( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 1, 0.1, 0.1 );
|
||||
m_spinCtrlSmoothValue = new wxSpinCtrlDouble( m_fillPanel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 1, 0.1, 0.1 );
|
||||
m_spinCtrlSmoothValue->SetDigits( 2 );
|
||||
gbSizer3->Add( m_spinCtrlSmoothValue, wxGBPosition( 5, 1 ), wxGBSpan( 1, 1 ), wxEXPAND, 5 );
|
||||
|
||||
m_staticline5 = new wxStaticLine( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
|
||||
m_staticline5 = new wxStaticLine( m_fillPanel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
|
||||
gbSizer3->Add( m_staticline5, wxGBPosition( 6, 0 ), wxGBSpan( 1, 3 ), wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 );
|
||||
|
||||
m_staticText40 = new wxStaticText( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, _("Remove islands:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticText40 = new wxStaticText( m_fillPanel, wxID_ANY, _("Remove islands:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticText40->Wrap( -1 );
|
||||
m_staticText40->SetToolTip( _("Choose what to do with unconnected copper islands") );
|
||||
|
||||
@ -281,40 +275,86 @@ PANEL_ZONE_PROPERTIES_BASE::PANEL_ZONE_PROPERTIES_BASE( wxWindow* parent, wxWind
|
||||
|
||||
wxString m_cbRemoveIslandsChoices[] = { _("Always"), _("Never"), _("Below area limit") };
|
||||
int m_cbRemoveIslandsNChoices = sizeof( m_cbRemoveIslandsChoices ) / sizeof( wxString );
|
||||
m_cbRemoveIslands = new wxChoice( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_cbRemoveIslandsNChoices, m_cbRemoveIslandsChoices, 0 );
|
||||
m_cbRemoveIslands = new wxChoice( m_fillPanel, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_cbRemoveIslandsNChoices, m_cbRemoveIslandsChoices, 0 );
|
||||
m_cbRemoveIslands->SetSelection( 0 );
|
||||
gbSizer3->Add( m_cbRemoveIslands, wxGBPosition( 7, 1 ), wxGBSpan( 1, 1 ), wxEXPAND, 5 );
|
||||
|
||||
m_islandThresholdLabel = new wxStaticText( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, _("Area limit:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_islandThresholdLabel = new wxStaticText( m_fillPanel, wxID_ANY, _("Area limit:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_islandThresholdLabel->Wrap( -1 );
|
||||
m_islandThresholdLabel->Enable( false );
|
||||
m_islandThresholdLabel->SetToolTip( _("Isolated islands smaller than this will be removed") );
|
||||
|
||||
gbSizer3->Add( m_islandThresholdLabel, wxGBPosition( 8, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
|
||||
|
||||
m_tcIslandThreshold = new wxTextCtrl( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_tcIslandThreshold = new wxTextCtrl( m_fillPanel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_tcIslandThreshold->Enable( false );
|
||||
|
||||
gbSizer3->Add( m_tcIslandThreshold, wxGBPosition( 8, 1 ), wxGBSpan( 1, 1 ), wxEXPAND, 5 );
|
||||
|
||||
m_islandThresholdUnits = new wxStaticText( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_islandThresholdUnits = new wxStaticText( m_fillPanel, wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_islandThresholdUnits->Wrap( -1 );
|
||||
m_islandThresholdUnits->Enable( false );
|
||||
|
||||
gbSizer3->Add( m_islandThresholdUnits, wxGBPosition( 8, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
|
||||
|
||||
|
||||
gbSizer3->AddGrowableCol( 0 );
|
||||
gbSizer3->AddGrowableCol( 1 );
|
||||
|
||||
sbSizerZoneStyle->Add( gbSizer3, 1, wxBOTTOM|wxEXPAND, 5 );
|
||||
m_fillPanel->SetSizer( gbSizer3 );
|
||||
m_fillPanel->Layout();
|
||||
gbSizer3->Fit( m_fillPanel );
|
||||
m_notebook1->AddPage( m_fillPanel, _("Fill"), false );
|
||||
m_layerPropertiesPanel = new wxPanel( m_notebook1, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||
wxGridBagSizer* gbSizer4;
|
||||
gbSizer4 = new wxGridBagSizer( 0, 0 );
|
||||
gbSizer4->SetFlexibleDirection( wxBOTH );
|
||||
gbSizer4->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
|
||||
|
||||
m_layerSelectorLabel = new wxStaticText( m_layerPropertiesPanel, wxID_ANY, _("Layer"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_layerSelectorLabel->Wrap( -1 );
|
||||
gbSizer4->Add( m_layerSelectorLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxALL, 5 );
|
||||
|
||||
m_layerSelector = new PCB_LAYER_BOX_SELECTOR( m_layerPropertiesPanel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 );
|
||||
gbSizer4->Add( m_layerSelector, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxALL|wxEXPAND, 5 );
|
||||
|
||||
m_hatchingOffsetXLabel = new wxStaticText( m_layerPropertiesPanel, wxID_ANY, _("Hatching offset x"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_hatchingOffsetXLabel->Wrap( -1 );
|
||||
gbSizer4->Add( m_hatchingOffsetXLabel, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxALL, 5 );
|
||||
|
||||
m_hatchingOffsetXValue = new wxTextCtrl( m_layerPropertiesPanel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
gbSizer4->Add( m_hatchingOffsetXValue, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxALL|wxEXPAND, 5 );
|
||||
|
||||
m_hatchingOffsetXUnit = new wxStaticText( m_layerPropertiesPanel, wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_hatchingOffsetXUnit->Wrap( -1 );
|
||||
gbSizer4->Add( m_hatchingOffsetXUnit, wxGBPosition( 1, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxALL, 5 );
|
||||
|
||||
m_hatchingOffsetYLabel = new wxStaticText( m_layerPropertiesPanel, wxID_ANY, _("Hatching offset y"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_hatchingOffsetYLabel->Wrap( -1 );
|
||||
gbSizer4->Add( m_hatchingOffsetYLabel, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxALL, 5 );
|
||||
|
||||
m_hatchingOffsetYValue = new wxTextCtrl( m_layerPropertiesPanel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
gbSizer4->Add( m_hatchingOffsetYValue, wxGBPosition( 2, 1 ), wxGBSpan( 1, 1 ), wxALL|wxEXPAND, 5 );
|
||||
|
||||
m_hatchingOffsetYUnit = new wxStaticText( m_layerPropertiesPanel, wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_hatchingOffsetYUnit->Wrap( -1 );
|
||||
gbSizer4->Add( m_hatchingOffsetYUnit, wxGBPosition( 2, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxALL, 5 );
|
||||
|
||||
m_hatchingOffsetUseDefault = new wxCheckBox( m_layerPropertiesPanel, wxID_ANY, _("Use default value"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
gbSizer4->Add( m_hatchingOffsetUseDefault, wxGBPosition( 3, 0 ), wxGBSpan( 1, 3 ), wxALL|wxEXPAND, 5 );
|
||||
|
||||
|
||||
bSizerMiddle->Add( sbSizerZoneStyle, 0, wxBOTTOM|wxEXPAND|wxRIGHT|wxTOP, 5 );
|
||||
gbSizer4->AddGrowableCol( 1 );
|
||||
|
||||
m_layerPropertiesPanel->SetSizer( gbSizer4 );
|
||||
m_layerPropertiesPanel->Layout();
|
||||
gbSizer4->Fit( m_layerPropertiesPanel );
|
||||
m_notebook1->AddPage( m_layerPropertiesPanel, _("Per layer properties"), false );
|
||||
|
||||
bSizerMiddle->Add( m_notebook1, 1, wxEXPAND | wxALL, 5 );
|
||||
|
||||
|
||||
this->SetSizer( bSizerMiddle );
|
||||
this->Layout();
|
||||
bSizerMiddle->Fit( this );
|
||||
|
||||
// Connect Events
|
||||
this->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( PANEL_ZONE_PROPERTIES_BASE::OnUpdateUI ) );
|
||||
@ -322,6 +362,8 @@ PANEL_ZONE_PROPERTIES_BASE::PANEL_ZONE_PROPERTIES_BASE( wxWindow* parent, wxWind
|
||||
m_PadInZoneOpt->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PANEL_ZONE_PROPERTIES_BASE::OnPadInZoneSelection ), NULL, this );
|
||||
m_GridStyleCtrl->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PANEL_ZONE_PROPERTIES_BASE::OnStyleSelection ), NULL, this );
|
||||
m_cbRemoveIslands->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PANEL_ZONE_PROPERTIES_BASE::OnRemoveIslandsSelection ), NULL, this );
|
||||
m_layerSelector->Connect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( PANEL_ZONE_PROPERTIES_BASE::OnLayerSelection ), NULL, this );
|
||||
m_hatchingOffsetUseDefault->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( PANEL_ZONE_PROPERTIES_BASE::OnHatchingOffsetChecked ), NULL, this );
|
||||
}
|
||||
|
||||
PANEL_ZONE_PROPERTIES_BASE::~PANEL_ZONE_PROPERTIES_BASE()
|
||||
@ -332,5 +374,7 @@ PANEL_ZONE_PROPERTIES_BASE::~PANEL_ZONE_PROPERTIES_BASE()
|
||||
m_PadInZoneOpt->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PANEL_ZONE_PROPERTIES_BASE::OnPadInZoneSelection ), NULL, this );
|
||||
m_GridStyleCtrl->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PANEL_ZONE_PROPERTIES_BASE::OnStyleSelection ), NULL, this );
|
||||
m_cbRemoveIslands->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PANEL_ZONE_PROPERTIES_BASE::OnRemoveIslandsSelection ), NULL, this );
|
||||
m_layerSelector->Disconnect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( PANEL_ZONE_PROPERTIES_BASE::OnLayerSelection ), NULL, this );
|
||||
m_hatchingOffsetUseDefault->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( PANEL_ZONE_PROPERTIES_BASE::OnHatchingOffsetChecked ), NULL, this );
|
||||
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,5 @@
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
|
||||
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6-dirty)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
@ -10,6 +10,8 @@
|
||||
#include <wx/artprov.h>
|
||||
#include <wx/xrc/xmlres.h>
|
||||
#include <wx/intl.h>
|
||||
class PCB_LAYER_BOX_SELECTOR;
|
||||
|
||||
#include <wx/string.h>
|
||||
#include <wx/stattext.h>
|
||||
#include <wx/gdicmn.h>
|
||||
@ -25,6 +27,11 @@
|
||||
#include <wx/gbsizer.h>
|
||||
#include <wx/spinctrl.h>
|
||||
#include <wx/panel.h>
|
||||
#include <wx/bitmap.h>
|
||||
#include <wx/image.h>
|
||||
#include <wx/icon.h>
|
||||
#include <wx/bmpcbox.h>
|
||||
#include <wx/notebook.h>
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@ -65,6 +72,8 @@ class PANEL_ZONE_PROPERTIES_BASE : public wxPanel
|
||||
wxStaticText* m_spokeWidthLabel;
|
||||
wxTextCtrl* m_spokeWidthCtrl;
|
||||
wxStaticText* m_spokeWidthUnits;
|
||||
wxNotebook* m_notebook1;
|
||||
wxPanel* m_fillPanel;
|
||||
wxStaticText* m_staticTextGridFillType;
|
||||
wxChoice* m_GridStyleCtrl;
|
||||
wxStaticText* m_staticTextGrindOrient;
|
||||
@ -86,6 +95,16 @@ class PANEL_ZONE_PROPERTIES_BASE : public wxPanel
|
||||
wxStaticText* m_islandThresholdLabel;
|
||||
wxTextCtrl* m_tcIslandThreshold;
|
||||
wxStaticText* m_islandThresholdUnits;
|
||||
wxPanel* m_layerPropertiesPanel;
|
||||
wxStaticText* m_layerSelectorLabel;
|
||||
PCB_LAYER_BOX_SELECTOR* m_layerSelector;
|
||||
wxStaticText* m_hatchingOffsetXLabel;
|
||||
wxTextCtrl* m_hatchingOffsetXValue;
|
||||
wxStaticText* m_hatchingOffsetXUnit;
|
||||
wxStaticText* m_hatchingOffsetYLabel;
|
||||
wxTextCtrl* m_hatchingOffsetYValue;
|
||||
wxStaticText* m_hatchingOffsetYUnit;
|
||||
wxCheckBox* m_hatchingOffsetUseDefault;
|
||||
|
||||
// Virtual event handlers, override them in your derived class
|
||||
virtual void OnUpdateUI( wxUpdateUIEvent& event ) { event.Skip(); }
|
||||
@ -93,11 +112,13 @@ class PANEL_ZONE_PROPERTIES_BASE : public wxPanel
|
||||
virtual void OnPadInZoneSelection( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnStyleSelection( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnRemoveIslandsSelection( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnLayerSelection( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnHatchingOffsetChecked( wxCommandEvent& event ) { event.Skip(); }
|
||||
|
||||
|
||||
public:
|
||||
|
||||
PANEL_ZONE_PROPERTIES_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_ZONE_PROPERTIES_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 908,366 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString );
|
||||
|
||||
~PANEL_ZONE_PROPERTIES_BASE();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user