Add corner radius to Shape Properties dialog.

This commit is contained in:
Jeff Young 2025-08-30 20:45:02 +01:00
parent c6fcf7e0b8
commit 194b7f9dc5
4 changed files with 624 additions and 274 deletions

View File

@ -716,8 +716,9 @@ private:
bool TransferDataToWindow() override; bool TransferDataToWindow() override;
bool TransferDataFromWindow() override; bool TransferDataFromWindow() override;
void onRoundedRectChanged( wxCommandEvent& event ) override;
void onCornerRadius( wxCommandEvent& event ) override;
void onLayerSelection( wxCommandEvent& event ) override; void onLayerSelection( wxCommandEvent& event ) override;
void onTechLayersChanged( wxCommandEvent& event ) override; void onTechLayersChanged( wxCommandEvent& event ) override;
bool Validate() override; bool Validate() override;
@ -748,6 +749,7 @@ private:
PCB_BASE_EDIT_FRAME* m_parent; PCB_BASE_EDIT_FRAME* m_parent;
PCB_SHAPE* m_item; PCB_SHAPE* m_item;
UNIT_BINDER m_cornerRadius;
UNIT_BINDER m_thickness; UNIT_BINDER m_thickness;
UNIT_BINDER m_solderMaskMargin; UNIT_BINDER m_solderMaskMargin;
@ -842,6 +844,7 @@ DIALOG_SHAPE_PROPERTIES::DIALOG_SHAPE_PROPERTIES( PCB_BASE_EDIT_FRAME* aParent,
DIALOG_SHAPE_PROPERTIES_BASE( aParent ), DIALOG_SHAPE_PROPERTIES_BASE( aParent ),
m_parent( aParent ), m_parent( aParent ),
m_item( aShape ), m_item( aShape ),
m_cornerRadius( aParent, m_cornerRadiusLabel, m_cornerRadiusCtrl, m_cornerRadiusUnits ),
m_thickness( aParent, m_thicknessLabel, m_thicknessCtrl, m_thicknessUnits ), m_thickness( aParent, m_thicknessLabel, m_thicknessCtrl, m_thicknessUnits ),
m_solderMaskMargin( aParent, m_solderMaskMarginLabel, m_solderMaskMarginCtrl, m_solderMaskMarginUnit ), m_solderMaskMargin( aParent, m_solderMaskMarginLabel, m_solderMaskMarginCtrl, m_solderMaskMarginUnit ),
m_workingCopy( *m_item ) m_workingCopy( *m_item )
@ -909,6 +912,9 @@ DIALOG_SHAPE_PROPERTIES::DIALOG_SHAPE_PROPERTIES( PCB_BASE_EDIT_FRAME* aParent,
showPage( *m_gbsLineByEnds, true ); showPage( *m_gbsLineByEnds, true );
showPage( *m_gbsLineByLengthAngle ); showPage( *m_gbsLineByLengthAngle );
showPage( *m_gbsLineByStartMid ); showPage( *m_gbsLineByStartMid );
m_cbRoundRect->Show( false );
m_cornerRadius.Show( false );
break; break;
case SHAPE_T::ARC: case SHAPE_T::ARC:
@ -924,6 +930,9 @@ DIALOG_SHAPE_PROPERTIES::DIALOG_SHAPE_PROPERTIES( PCB_BASE_EDIT_FRAME* aParent,
showPage( *m_gbsArcByCSA, true ); showPage( *m_gbsArcByCSA, true );
showPage( *m_gbsArcBySME ); showPage( *m_gbsArcBySME );
m_cbRoundRect->Show( false );
m_cornerRadius.Show( false );
break; break;
case SHAPE_T::CIRCLE: case SHAPE_T::CIRCLE:
@ -937,6 +946,9 @@ DIALOG_SHAPE_PROPERTIES::DIALOG_SHAPE_PROPERTIES( PCB_BASE_EDIT_FRAME* aParent,
showPage( *m_gbsCircleCenterRadius, true ); showPage( *m_gbsCircleCenterRadius, true );
showPage( *m_gbsCircleCenterPoint ); showPage( *m_gbsCircleCenterPoint );
m_cbRoundRect->Show( false );
m_cornerRadius.Show( false );
break; break;
case SHAPE_T::BEZIER: case SHAPE_T::BEZIER:
@ -953,6 +965,9 @@ DIALOG_SHAPE_PROPERTIES::DIALOG_SHAPE_PROPERTIES( PCB_BASE_EDIT_FRAME* aParent,
case SHAPE_T::POLY: case SHAPE_T::POLY:
m_notebookShapeDefs->Hide(); m_notebookShapeDefs->Hide();
// Nothing to do here...yet // Nothing to do here...yet
m_cbRoundRect->Show( false );
m_cornerRadius.Show( false );
break; break;
case SHAPE_T::UNDEFINED: case SHAPE_T::UNDEFINED:
@ -1061,6 +1076,19 @@ void PCB_BASE_EDIT_FRAME::ShowGraphicItemPropertiesDialog( PCB_SHAPE* aShape )
} }
void DIALOG_SHAPE_PROPERTIES::onRoundedRectChanged(wxCommandEvent &event)
{
if( !m_cbRoundRect->GetValue() )
m_cornerRadius.ChangeValue( wxEmptyString );
}
void DIALOG_SHAPE_PROPERTIES::onCornerRadius(wxCommandEvent &event)
{
m_cbRoundRect->SetValue( true );
}
void DIALOG_SHAPE_PROPERTIES::onLayerSelection( wxCommandEvent& event ) void DIALOG_SHAPE_PROPERTIES::onLayerSelection( wxCommandEvent& event )
{ {
if( m_LayerSelectionCtrl->GetLayerSelection() >= 0 ) if( m_LayerSelectionCtrl->GetLayerSelection() >= 0 )
@ -1081,13 +1109,19 @@ bool DIALOG_SHAPE_PROPERTIES::TransferDataToWindow()
if( !m_item ) if( !m_item )
return false; return false;
// Not al shapes have a syncer (e.g. polygons) // Not all shapes have a syncer (e.g. polygons)
if( m_geomSync ) if( m_geomSync )
m_geomSync->SetShape( *m_item ); m_geomSync->SetShape( *m_item );
m_fillCtrl->SetSelection( m_item->GetFillModeProp() ); m_fillCtrl->SetSelection( m_item->GetFillModeProp() );
m_locked->SetValue( m_item->IsLocked() ); m_locked->SetValue( m_item->IsLocked() );
if( m_item->GetShape() == SHAPE_T::RECTANGLE )
{
m_cbRoundRect->SetValue( m_item->GetCornerRadius() > 0 );
m_cornerRadius.ChangeValue( m_item->GetCornerRadius() );
}
m_thickness.SetValue( m_item->GetStroke().GetWidth() ); m_thickness.SetValue( m_item->GetStroke().GetWidth() );
int style = static_cast<int>( m_item->GetStroke().GetLineStyle() ); int style = static_cast<int>( m_item->GetStroke().GetLineStyle() );
@ -1137,6 +1171,9 @@ bool DIALOG_SHAPE_PROPERTIES::TransferDataFromWindow()
bool wasLocked = m_item->IsLocked(); bool wasLocked = m_item->IsLocked();
if( m_item->GetShape() == SHAPE_T::RECTANGLE )
m_item->SetCornerRadius( m_cbRoundRect->GetValue() ? m_cornerRadius.GetIntValue() : 0 );
m_item->SetFillModeProp( (UI_FILL_MODE) m_fillCtrl->GetSelection() ); m_item->SetFillModeProp( (UI_FILL_MODE) m_fillCtrl->GetSelection() );
m_item->SetLocked( m_locked->GetValue() ); m_item->SetLocked( m_locked->GetValue() );
@ -1205,14 +1242,20 @@ bool DIALOG_SHAPE_PROPERTIES::Validate()
break; break;
case SHAPE_T::RECTANGLE: case SHAPE_T::RECTANGLE:
{
if( m_fillCtrl->GetSelection() != UI_FILL_MODE::SOLID && m_thickness.GetValue() <= 0 ) if( m_fillCtrl->GetSelection() != UI_FILL_MODE::SOLID && m_thickness.GetValue() <= 0 )
errors.Add( _( "Line width must be greater than zero for an unfilled rectangle." ) ); errors.Add( _( "Line width must be greater than zero for an unfilled rectangle." ) );
if( m_item->GetCornerRadius() * 2 > std::min( m_item->GetRectangleWidth(), int shortSide = std::min( m_item->GetRectangleWidth(), m_item->GetRectangleHeight() );
m_item->GetRectangleHeight() ) )
if( m_cornerRadius.GetIntValue() * 2 > shortSide )
{
errors.Add( _( "Corner radius must be less than or equal to half the smaller side." ) ); errors.Add( _( "Corner radius must be less than or equal to half the smaller side." ) );
m_cornerRadius.SetValue( KiROUND( shortSide / 2.0 ) );
}
break; break;
}
case SHAPE_T::POLY: case SHAPE_T::POLY:
if( m_fillCtrl->GetSelection() != UI_FILL_MODE::SOLID && m_thickness.GetValue() <= 0 ) if( m_fillCtrl->GetSelection() != UI_FILL_MODE::SOLID && m_thickness.GetValue() <= 0 )

View File

@ -198,6 +198,32 @@ DIALOG_SHAPE_PROPERTIES_BASE::DIALOG_SHAPE_PROPERTIES_BASE( wxWindow* parent, wx
bMainSizer->Add( m_notebookShapeDefs, 0, wxEXPAND | wxALL, 5 ); bMainSizer->Add( m_notebookShapeDefs, 0, wxEXPAND | wxALL, 5 );
m_locked = new wxCheckBox( this, wxID_ANY, _("Locked"), wxDefaultPosition, wxDefaultSize, 0 );
bMainSizer->Add( m_locked, 0, wxALL, 10 );
wxBoxSizer* bSizerRoundRect;
bSizerRoundRect = new wxBoxSizer( wxHORIZONTAL );
m_cbRoundRect = new wxCheckBox( this, wxID_ANY, _("Rounded rectangle"), wxDefaultPosition, wxDefaultSize, 0 );
bSizerRoundRect->Add( m_cbRoundRect, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
bSizerRoundRect->Add( 15, 0, 1, wxEXPAND, 5 );
m_cornerRadiusLabel = new wxStaticText( this, wxID_ANY, _("Corner radius:"), wxDefaultPosition, wxDefaultSize, 0 );
m_cornerRadiusLabel->Wrap( -1 );
bSizerRoundRect->Add( m_cornerRadiusLabel, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 5 );
m_cornerRadiusCtrl = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
bSizerRoundRect->Add( m_cornerRadiusCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
m_cornerRadiusUnits = new wxStaticText( this, wxID_ANY, _("unit"), wxDefaultPosition, wxDefaultSize, 0 );
m_cornerRadiusUnits->Wrap( -1 );
bSizerRoundRect->Add( m_cornerRadiusUnits, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 );
bMainSizer->Add( bSizerRoundRect, 0, wxEXPAND|wxRIGHT|wxLEFT, 5 );
m_upperSizer = new wxBoxSizer( wxVERTICAL ); m_upperSizer = new wxBoxSizer( wxVERTICAL );
wxGridBagSizer* gbSizer2; wxGridBagSizer* gbSizer2;
@ -206,54 +232,51 @@ DIALOG_SHAPE_PROPERTIES_BASE::DIALOG_SHAPE_PROPERTIES_BASE( wxWindow* parent, wx
gbSizer2->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); gbSizer2->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
gbSizer2->SetEmptyCellSize( wxSize( -1,6 ) ); gbSizer2->SetEmptyCellSize( wxSize( -1,6 ) );
m_locked = new wxCheckBox( this, wxID_ANY, _("Locked"), wxDefaultPosition, wxDefaultSize, 0 );
gbSizer2->Add( m_locked, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxLEFT, 5 );
m_thicknessLabel = new wxStaticText( this, wxID_ANY, _("Line width:"), wxDefaultPosition, wxDefaultSize, 0 ); m_thicknessLabel = new wxStaticText( this, wxID_ANY, _("Line width:"), wxDefaultPosition, wxDefaultSize, 0 );
m_thicknessLabel->Wrap( -1 ); m_thicknessLabel->Wrap( -1 );
gbSizer2->Add( m_thicknessLabel, wxGBPosition( 3, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 ); gbSizer2->Add( m_thicknessLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
m_thicknessCtrl = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); m_thicknessCtrl = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
m_thicknessCtrl->SetMinSize( wxSize( 140,-1 ) ); m_thicknessCtrl->SetMinSize( wxSize( 140,-1 ) );
gbSizer2->Add( m_thicknessCtrl, wxGBPosition( 3, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 ); gbSizer2->Add( m_thicknessCtrl, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
m_thicknessUnits = new wxStaticText( this, wxID_ANY, _("unit"), wxDefaultPosition, wxDefaultSize, 0 ); m_thicknessUnits = new wxStaticText( this, wxID_ANY, _("unit"), wxDefaultPosition, wxDefaultSize, 0 );
m_thicknessUnits->Wrap( -1 ); m_thicknessUnits->Wrap( -1 );
gbSizer2->Add( m_thicknessUnits, wxGBPosition( 3, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); gbSizer2->Add( m_thicknessUnits, wxGBPosition( 0, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
m_lineStyleLabel = new wxStaticText( this, wxID_ANY, _("Line style:"), wxDefaultPosition, wxDefaultSize, 0 ); m_lineStyleLabel = new wxStaticText( this, wxID_ANY, _("Line style:"), wxDefaultPosition, wxDefaultSize, 0 );
m_lineStyleLabel->Wrap( -1 ); m_lineStyleLabel->Wrap( -1 );
gbSizer2->Add( m_lineStyleLabel, wxGBPosition( 4, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 ); gbSizer2->Add( m_lineStyleLabel, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
m_lineStyleCombo = new wxBitmapComboBox( this, wxID_ANY, _("Combo!"), wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_READONLY ); m_lineStyleCombo = new wxBitmapComboBox( this, wxID_ANY, _("Combo!"), wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_READONLY );
m_lineStyleCombo->SetMinSize( wxSize( 210,-1 ) ); m_lineStyleCombo->SetMinSize( wxSize( 210,-1 ) );
gbSizer2->Add( m_lineStyleCombo, wxGBPosition( 4, 1 ), wxGBSpan( 1, 2 ), wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT, 5 ); gbSizer2->Add( m_lineStyleCombo, wxGBPosition( 1, 1 ), wxGBSpan( 1, 2 ), wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT, 5 );
m_fillLabel = new wxStaticText( this, wxID_ANY, _("Fill:"), wxDefaultPosition, wxDefaultSize, 0 ); m_fillLabel = new wxStaticText( this, wxID_ANY, _("Fill:"), wxDefaultPosition, wxDefaultSize, 0 );
m_fillLabel->Wrap( -1 ); m_fillLabel->Wrap( -1 );
gbSizer2->Add( m_fillLabel, wxGBPosition( 5, 0 ), wxGBSpan( 1, 1 ), wxALL|wxALIGN_CENTER_VERTICAL, 5 ); gbSizer2->Add( m_fillLabel, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), wxALL|wxALIGN_CENTER_VERTICAL, 5 );
wxString m_fillCtrlChoices[] = { _("None"), _("Solid"), _("Hatch"), _("Reverse Hatch"), _("Cross-hatch") }; wxString m_fillCtrlChoices[] = { _("None"), _("Solid"), _("Hatch"), _("Reverse Hatch"), _("Cross-hatch") };
int m_fillCtrlNChoices = sizeof( m_fillCtrlChoices ) / sizeof( wxString ); int m_fillCtrlNChoices = sizeof( m_fillCtrlChoices ) / sizeof( wxString );
m_fillCtrl = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_fillCtrlNChoices, m_fillCtrlChoices, 0 ); m_fillCtrl = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_fillCtrlNChoices, m_fillCtrlChoices, 0 );
m_fillCtrl->SetSelection( 0 ); m_fillCtrl->SetSelection( 0 );
gbSizer2->Add( m_fillCtrl, wxGBPosition( 5, 1 ), wxGBSpan( 1, 2 ), wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT, 5 ); gbSizer2->Add( m_fillCtrl, wxGBPosition( 2, 1 ), wxGBSpan( 1, 2 ), wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT, 5 );
m_LayerLabel = new wxStaticText( this, wxID_ANY, _("Layer:"), wxDefaultPosition, wxDefaultSize, 0 );
m_LayerLabel->Wrap( -1 );
gbSizer2->Add( m_LayerLabel, wxGBPosition( 9, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
m_LayerSelectionCtrl = new PCB_LAYER_BOX_SELECTOR( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 );
gbSizer2->Add( m_LayerSelectionCtrl, wxGBPosition( 9, 1 ), wxGBSpan( 1, 2 ), wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT, 5 );
m_netLabel = new wxStaticText( this, wxID_ANY, _("Net:"), wxDefaultPosition, wxDefaultSize, 0 ); m_netLabel = new wxStaticText( this, wxID_ANY, _("Net:"), wxDefaultPosition, wxDefaultSize, 0 );
m_netLabel->Wrap( -1 ); m_netLabel->Wrap( -1 );
gbSizer2->Add( m_netLabel, wxGBPosition( 7, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 ); gbSizer2->Add( m_netLabel, wxGBPosition( 4, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
m_netSelector = new NET_SELECTOR( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); m_netSelector = new NET_SELECTOR( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
gbSizer2->Add( m_netSelector, wxGBPosition( 7, 1 ), wxGBSpan( 1, 2 ), wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT, 5 ); gbSizer2->Add( m_netSelector, wxGBPosition( 4, 1 ), wxGBSpan( 1, 2 ), wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT, 5 );
m_LayerLabel = new wxStaticText( this, wxID_ANY, _("Layer:"), wxDefaultPosition, wxDefaultSize, 0 );
m_LayerLabel->Wrap( -1 );
gbSizer2->Add( m_LayerLabel, wxGBPosition( 6, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
m_LayerSelectionCtrl = new PCB_LAYER_BOX_SELECTOR( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 );
gbSizer2->Add( m_LayerSelectionCtrl, wxGBPosition( 6, 1 ), wxGBSpan( 1, 2 ), wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT, 5 );
gbSizer2->AddGrowableCol( 1 ); gbSizer2->AddGrowableCol( 1 );
@ -320,6 +343,8 @@ DIALOG_SHAPE_PROPERTIES_BASE::DIALOG_SHAPE_PROPERTIES_BASE( wxWindow* parent, wx
bMainSizer->Fit( this ); bMainSizer->Fit( this );
// Connect Events // Connect Events
m_cbRoundRect->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_SHAPE_PROPERTIES_BASE::onRoundedRectChanged ), NULL, this );
m_cornerRadiusCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_SHAPE_PROPERTIES_BASE::onCornerRadius ), NULL, this );
m_LayerSelectionCtrl->Connect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( DIALOG_SHAPE_PROPERTIES_BASE::onLayerSelection ), NULL, this ); m_LayerSelectionCtrl->Connect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( DIALOG_SHAPE_PROPERTIES_BASE::onLayerSelection ), NULL, this );
m_hasSolderMask->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_SHAPE_PROPERTIES_BASE::onTechLayersChanged ), NULL, this ); m_hasSolderMask->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_SHAPE_PROPERTIES_BASE::onTechLayersChanged ), NULL, this );
} }
@ -327,6 +352,8 @@ DIALOG_SHAPE_PROPERTIES_BASE::DIALOG_SHAPE_PROPERTIES_BASE( wxWindow* parent, wx
DIALOG_SHAPE_PROPERTIES_BASE::~DIALOG_SHAPE_PROPERTIES_BASE() DIALOG_SHAPE_PROPERTIES_BASE::~DIALOG_SHAPE_PROPERTIES_BASE()
{ {
// Disconnect Events // Disconnect Events
m_cbRoundRect->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_SHAPE_PROPERTIES_BASE::onRoundedRectChanged ), NULL, this );
m_cornerRadiusCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_SHAPE_PROPERTIES_BASE::onCornerRadius ), NULL, this );
m_LayerSelectionCtrl->Disconnect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( DIALOG_SHAPE_PROPERTIES_BASE::onLayerSelection ), NULL, this ); m_LayerSelectionCtrl->Disconnect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( DIALOG_SHAPE_PROPERTIES_BASE::onLayerSelection ), NULL, this );
m_hasSolderMask->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_SHAPE_PROPERTIES_BASE::onTechLayersChanged ), NULL, this ); m_hasSolderMask->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_SHAPE_PROPERTIES_BASE::onTechLayersChanged ), NULL, this );

File diff suppressed because it is too large Load Diff

View File

@ -68,8 +68,12 @@ class DIALOG_SHAPE_PROPERTIES_BASE : public DIALOG_SHIM
wxGridBagSizer* m_gbsCircleCenterPoint; wxGridBagSizer* m_gbsCircleCenterPoint;
wxPanel* m_bezier; wxPanel* m_bezier;
wxGridBagSizer* m_gbsBezier; wxGridBagSizer* m_gbsBezier;
wxBoxSizer* m_upperSizer;
wxCheckBox* m_locked; wxCheckBox* m_locked;
wxCheckBox* m_cbRoundRect;
wxStaticText* m_cornerRadiusLabel;
wxTextCtrl* m_cornerRadiusCtrl;
wxStaticText* m_cornerRadiusUnits;
wxBoxSizer* m_upperSizer;
wxStaticText* m_thicknessLabel; wxStaticText* m_thicknessLabel;
wxTextCtrl* m_thicknessCtrl; wxTextCtrl* m_thicknessCtrl;
wxStaticText* m_thicknessUnits; wxStaticText* m_thicknessUnits;
@ -77,10 +81,10 @@ class DIALOG_SHAPE_PROPERTIES_BASE : public DIALOG_SHIM
wxBitmapComboBox* m_lineStyleCombo; wxBitmapComboBox* m_lineStyleCombo;
wxStaticText* m_fillLabel; wxStaticText* m_fillLabel;
wxChoice* m_fillCtrl; wxChoice* m_fillCtrl;
wxStaticText* m_LayerLabel;
PCB_LAYER_BOX_SELECTOR* m_LayerSelectionCtrl;
wxStaticText* m_netLabel; wxStaticText* m_netLabel;
NET_SELECTOR* m_netSelector; NET_SELECTOR* m_netSelector;
wxStaticText* m_LayerLabel;
PCB_LAYER_BOX_SELECTOR* m_LayerSelectionCtrl;
wxStaticText* m_techLayersLabel; wxStaticText* m_techLayersLabel;
wxStaticLine* m_staticline1; wxStaticLine* m_staticline1;
wxCheckBox* m_hasSolderMask; wxCheckBox* m_hasSolderMask;
@ -92,6 +96,8 @@ class DIALOG_SHAPE_PROPERTIES_BASE : public DIALOG_SHIM
wxButton* m_StandardButtonsSizerCancel; wxButton* m_StandardButtonsSizerCancel;
// Virtual event handlers, override them in your derived class // Virtual event handlers, override them in your derived class
virtual void onRoundedRectChanged( wxCommandEvent& event ) { event.Skip(); }
virtual void onCornerRadius( wxCommandEvent& event ) { event.Skip(); }
virtual void onLayerSelection( wxCommandEvent& event ) { event.Skip(); } virtual void onLayerSelection( wxCommandEvent& event ) { event.Skip(); }
virtual void onTechLayersChanged( wxCommandEvent& event ) { event.Skip(); } virtual void onTechLayersChanged( wxCommandEvent& event ) { event.Skip(); }