diff --git a/pcbnew/dialogs/dialog_shape_properties.cpp b/pcbnew/dialogs/dialog_shape_properties.cpp index fd2aece87d..cda7dc08ad 100644 --- a/pcbnew/dialogs/dialog_shape_properties.cpp +++ b/pcbnew/dialogs/dialog_shape_properties.cpp @@ -716,8 +716,9 @@ private: bool TransferDataToWindow() override; bool TransferDataFromWindow() override; + void onRoundedRectChanged( wxCommandEvent& event ) override; + void onCornerRadius( wxCommandEvent& event ) override; void onLayerSelection( wxCommandEvent& event ) override; - void onTechLayersChanged( wxCommandEvent& event ) override; bool Validate() override; @@ -748,6 +749,7 @@ private: PCB_BASE_EDIT_FRAME* m_parent; PCB_SHAPE* m_item; + UNIT_BINDER m_cornerRadius; UNIT_BINDER m_thickness; UNIT_BINDER m_solderMaskMargin; @@ -842,6 +844,7 @@ DIALOG_SHAPE_PROPERTIES::DIALOG_SHAPE_PROPERTIES( PCB_BASE_EDIT_FRAME* aParent, DIALOG_SHAPE_PROPERTIES_BASE( aParent ), m_parent( aParent ), m_item( aShape ), + m_cornerRadius( aParent, m_cornerRadiusLabel, m_cornerRadiusCtrl, m_cornerRadiusUnits ), m_thickness( aParent, m_thicknessLabel, m_thicknessCtrl, m_thicknessUnits ), m_solderMaskMargin( aParent, m_solderMaskMarginLabel, m_solderMaskMarginCtrl, m_solderMaskMarginUnit ), 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_gbsLineByLengthAngle ); showPage( *m_gbsLineByStartMid ); + + m_cbRoundRect->Show( false ); + m_cornerRadius.Show( false ); break; 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_gbsArcBySME ); + + m_cbRoundRect->Show( false ); + m_cornerRadius.Show( false ); break; 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_gbsCircleCenterPoint ); + + m_cbRoundRect->Show( false ); + m_cornerRadius.Show( false ); break; case SHAPE_T::BEZIER: @@ -953,6 +965,9 @@ DIALOG_SHAPE_PROPERTIES::DIALOG_SHAPE_PROPERTIES( PCB_BASE_EDIT_FRAME* aParent, case SHAPE_T::POLY: m_notebookShapeDefs->Hide(); // Nothing to do here...yet + + m_cbRoundRect->Show( false ); + m_cornerRadius.Show( false ); break; 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 ) { if( m_LayerSelectionCtrl->GetLayerSelection() >= 0 ) @@ -1081,13 +1109,19 @@ bool DIALOG_SHAPE_PROPERTIES::TransferDataToWindow() if( !m_item ) return false; - // Not al shapes have a syncer (e.g. polygons) + // Not all shapes have a syncer (e.g. polygons) if( m_geomSync ) m_geomSync->SetShape( *m_item ); m_fillCtrl->SetSelection( m_item->GetFillModeProp() ); 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() ); int style = static_cast( m_item->GetStroke().GetLineStyle() ); @@ -1137,6 +1171,9 @@ bool DIALOG_SHAPE_PROPERTIES::TransferDataFromWindow() 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->SetLocked( m_locked->GetValue() ); @@ -1205,14 +1242,20 @@ bool DIALOG_SHAPE_PROPERTIES::Validate() break; case SHAPE_T::RECTANGLE: + { 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." ) ); - if( m_item->GetCornerRadius() * 2 > std::min( m_item->GetRectangleWidth(), - m_item->GetRectangleHeight() ) ) + int shortSide = std::min( m_item->GetRectangleWidth(), m_item->GetRectangleHeight() ); + + if( m_cornerRadius.GetIntValue() * 2 > shortSide ) + { errors.Add( _( "Corner radius must be less than or equal to half the smaller side." ) ); + m_cornerRadius.SetValue( KiROUND( shortSide / 2.0 ) ); + } break; + } case SHAPE_T::POLY: if( m_fillCtrl->GetSelection() != UI_FILL_MODE::SOLID && m_thickness.GetValue() <= 0 ) diff --git a/pcbnew/dialogs/dialog_shape_properties_base.cpp b/pcbnew/dialogs/dialog_shape_properties_base.cpp index bf649a9750..717d34a5e3 100644 --- a/pcbnew/dialogs/dialog_shape_properties_base.cpp +++ b/pcbnew/dialogs/dialog_shape_properties_base.cpp @@ -198,6 +198,32 @@ DIALOG_SHAPE_PROPERTIES_BASE::DIALOG_SHAPE_PROPERTIES_BASE( wxWindow* parent, wx 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 ); wxGridBagSizer* gbSizer2; @@ -206,54 +232,51 @@ DIALOG_SHAPE_PROPERTIES_BASE::DIALOG_SHAPE_PROPERTIES_BASE( wxWindow* parent, wx gbSizer2->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); 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->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->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->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->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->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->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") }; int m_fillCtrlNChoices = sizeof( m_fillCtrlChoices ) / sizeof( wxString ); m_fillCtrl = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_fillCtrlNChoices, m_fillCtrlChoices, 0 ); m_fillCtrl->SetSelection( 0 ); - gbSizer2->Add( m_fillCtrl, wxGBPosition( 5, 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 ); + gbSizer2->Add( m_fillCtrl, wxGBPosition( 2, 1 ), wxGBSpan( 1, 2 ), wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT, 5 ); m_netLabel = new wxStaticText( this, wxID_ANY, _("Net:"), wxDefaultPosition, wxDefaultSize, 0 ); 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 ); - 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 ); @@ -320,6 +343,8 @@ DIALOG_SHAPE_PROPERTIES_BASE::DIALOG_SHAPE_PROPERTIES_BASE( wxWindow* parent, wx bMainSizer->Fit( this ); // 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_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() { // 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_hasSolderMask->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_SHAPE_PROPERTIES_BASE::onTechLayersChanged ), NULL, this ); diff --git a/pcbnew/dialogs/dialog_shape_properties_base.fbp b/pcbnew/dialogs/dialog_shape_properties_base.fbp index f380a89321..9f8683c82e 100644 --- a/pcbnew/dialogs/dialog_shape_properties_base.fbp +++ b/pcbnew/dialogs/dialog_shape_properties_base.fbp @@ -68,7 +68,7 @@ 5 wxEXPAND | wxALL 0 - + 1 1 1 @@ -122,11 +122,11 @@ - + Load From File; By Corners 0 - + 1 1 1 @@ -178,7 +178,7 @@ wxTAB_TRAVERSAL - + bSizer18 wxVERTICAL @@ -203,11 +203,11 @@ - + By Corner and Size 0 - + 1 1 1 @@ -259,7 +259,7 @@ wxTAB_TRAVERSAL - + bSizer19 wxVERTICAL @@ -284,11 +284,11 @@ - + By Center and Size 1 - + 1 1 1 @@ -340,7 +340,7 @@ wxTAB_TRAVERSAL - + bSizer20 wxVERTICAL @@ -365,11 +365,11 @@ - + By Endpoints 0 - + 1 1 1 @@ -421,7 +421,7 @@ wxTAB_TRAVERSAL - + bSizer6 wxVERTICAL @@ -446,11 +446,11 @@ - + By Length and Angle 0 - + 1 1 1 @@ -502,7 +502,7 @@ wxTAB_TRAVERSAL - + bSizer7 wxVERTICAL @@ -527,11 +527,11 @@ - + By Start/Midpoint 0 - + 1 1 1 @@ -583,16 +583,16 @@ wxTAB_TRAVERSAL - + bSizer71 wxVERTICAL none - + 5 wxALL|wxEXPAND 1 - + wxBOTH @@ -608,11 +608,11 @@ - + By Center/Start/Angle 0 - + 1 1 1 @@ -664,7 +664,7 @@ wxTAB_TRAVERSAL - + bSizer8 wxVERTICAL @@ -689,11 +689,11 @@ - + By Start/Mid/End 0 - + 1 1 1 @@ -745,7 +745,7 @@ wxTAB_TRAVERSAL - + bSizer9 wxVERTICAL @@ -770,11 +770,11 @@ - + By Center/Radius 0 - + 1 1 1 @@ -826,7 +826,7 @@ wxTAB_TRAVERSAL - + bSizer10 wxVERTICAL @@ -851,11 +851,11 @@ - + By Center/Point 0 - + 1 1 1 @@ -907,7 +907,7 @@ wxTAB_TRAVERSAL - + bSizer11 wxVERTICAL @@ -932,11 +932,11 @@ - + Bezier Control Points 0 - + 1 1 1 @@ -988,7 +988,7 @@ wxTAB_TRAVERSAL - + bSizer4 wxVERTICAL @@ -1015,6 +1015,348 @@ + + 10 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Locked + + 0 + + + 0 + + 1 + m_locked + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + 5 + wxEXPAND|wxRIGHT|wxLEFT + 0 + + + bSizerRoundRect + wxHORIZONTAL + none + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Rounded rectangle + + 0 + + + 0 + + 1 + m_cbRoundRect + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + onRoundedRectChanged + + + + 5 + wxEXPAND + 1 + + 0 + protected + 15 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Corner radius: + 0 + + 0 + + + 0 + + 1 + m_cornerRadiusLabel + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + + + -1 + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_cornerRadiusCtrl + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + onCornerRadius + + + + 5 + wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + unit + 0 + + 0 + + + 0 + + 1 + m_cornerRadiusUnits + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + + + -1 + + + + 5 wxALL|wxEXPAND @@ -1039,80 +1381,12 @@ wxFLEX_GROWMODE_SPECIFIED none 2 - - 5 - 1 - 0 - wxLEFT - 0 - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Locked - - 0 - - - 0 - - 1 - m_locked - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - 5 1 0 wxALIGN_CENTER_VERTICAL|wxLEFT - 3 + 0 1 1 @@ -1177,7 +1451,7 @@ 1 1 wxEXPAND|wxALIGN_CENTER_VERTICAL - 3 + 0 1 1 @@ -1245,7 +1519,7 @@ 1 2 wxALIGN_CENTER_VERTICAL|wxRIGHT - 3 + 0 1 1 @@ -1310,7 +1584,7 @@ 1 0 wxALIGN_CENTER_VERTICAL|wxLEFT - 4 + 1 1 1 @@ -1375,7 +1649,7 @@ 2 1 wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT - 4 + 1 1 1 @@ -1444,7 +1718,7 @@ 1 0 wxALL|wxALIGN_CENTER_VERTICAL - 5 + 2 1 1 @@ -1509,7 +1783,7 @@ 2 1 wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT - 5 + 2 1 1 @@ -1577,142 +1851,7 @@ 1 0 wxALIGN_CENTER_VERTICAL|wxLEFT - 9 - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - 1 - - 0 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Layer: - 0 - - 0 - - - 0 - - 1 - m_LayerLabel - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - 2 - 1 - wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT - 9 - 1 - - 1 - 1 - 1 - 1 - 0 - - 0 - 0 - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_LayerSelectionCtrl - 1 - - - protected - 1 - - Resizable - -1 - 1 - - - PCB_LAYER_BOX_SELECTOR; pcb_layer_box_selector.h - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - onLayerSelection - - - - 5 - 1 - 0 - wxALIGN_CENTER_VERTICAL|wxLEFT - 7 + 4 1 1 @@ -1777,7 +1916,7 @@ 2 1 wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT - 7 + 4 1 1 @@ -1838,6 +1977,141 @@ + + 5 + 1 + 0 + wxALIGN_CENTER_VERTICAL|wxLEFT + 6 + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 0 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Layer: + 0 + + 0 + + + 0 + + 1 + m_LayerLabel + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + 2 + 1 + wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT + 6 + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_LayerSelectionCtrl + 1 + + + protected + 1 + + Resizable + -1 + 1 + + + PCB_LAYER_BOX_SELECTOR; pcb_layer_box_selector.h + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + onLayerSelection + + diff --git a/pcbnew/dialogs/dialog_shape_properties_base.h b/pcbnew/dialogs/dialog_shape_properties_base.h index 9ac5f74dae..1cdf8137da 100644 --- a/pcbnew/dialogs/dialog_shape_properties_base.h +++ b/pcbnew/dialogs/dialog_shape_properties_base.h @@ -68,8 +68,12 @@ class DIALOG_SHAPE_PROPERTIES_BASE : public DIALOG_SHIM wxGridBagSizer* m_gbsCircleCenterPoint; wxPanel* m_bezier; wxGridBagSizer* m_gbsBezier; - wxBoxSizer* m_upperSizer; wxCheckBox* m_locked; + wxCheckBox* m_cbRoundRect; + wxStaticText* m_cornerRadiusLabel; + wxTextCtrl* m_cornerRadiusCtrl; + wxStaticText* m_cornerRadiusUnits; + wxBoxSizer* m_upperSizer; wxStaticText* m_thicknessLabel; wxTextCtrl* m_thicknessCtrl; wxStaticText* m_thicknessUnits; @@ -77,10 +81,10 @@ class DIALOG_SHAPE_PROPERTIES_BASE : public DIALOG_SHIM wxBitmapComboBox* m_lineStyleCombo; wxStaticText* m_fillLabel; wxChoice* m_fillCtrl; - wxStaticText* m_LayerLabel; - PCB_LAYER_BOX_SELECTOR* m_LayerSelectionCtrl; wxStaticText* m_netLabel; NET_SELECTOR* m_netSelector; + wxStaticText* m_LayerLabel; + PCB_LAYER_BOX_SELECTOR* m_LayerSelectionCtrl; wxStaticText* m_techLayersLabel; wxStaticLine* m_staticline1; wxCheckBox* m_hasSolderMask; @@ -92,6 +96,8 @@ class DIALOG_SHAPE_PROPERTIES_BASE : public DIALOG_SHIM wxButton* m_StandardButtonsSizerCancel; // 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 onTechLayersChanged( wxCommandEvent& event ) { event.Skip(); }