From 3eb5c520730ca6fd17c3f9e44c3dbb591206fa7b Mon Sep 17 00:00:00 2001 From: Wayne Stambaugh Date: Sun, 3 Mar 2024 12:09:01 -0500 Subject: [PATCH] Improve zone manager dialog layout. --- pcbnew/zone_manager/dialog_zone_manager.cpp | 30 +- .../zone_manager/dialog_zone_manager_base.cpp | 222 ++--- .../zone_manager/dialog_zone_manager_base.fbp | 151 ++-- .../zone_manager/dialog_zone_manager_base.h | 88 +- .../panel_zone_properties_base.cpp | 785 +++++++----------- .../panel_zone_properties_base.fbp | 70 +- .../zone_manager/panel_zone_properties_base.h | 145 ++-- 7 files changed, 646 insertions(+), 845 deletions(-) diff --git a/pcbnew/zone_manager/dialog_zone_manager.cpp b/pcbnew/zone_manager/dialog_zone_manager.cpp index 3c0c32895e..197207ab8f 100644 --- a/pcbnew/zone_manager/dialog_zone_manager.cpp +++ b/pcbnew/zone_manager/dialog_zone_manager.cpp @@ -2,7 +2,7 @@ * This program source code file is part of KiCad, a free EDA CAD application. * * Copyright (C) 2023 Ethan Chien - * Copyright (C) 2023 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 2023, 2024 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -67,6 +67,7 @@ inline void DIALOG_ZONE_MANAGER::FitCanvasToScreen() canvas->ZoomFitScreen(); } + inline void DIALOG_ZONE_MANAGER::PostProcessZoneViewSelectionChange( wxDataViewItem const& aItem ) { bool textCtrlHasFocus = m_filterCtrl->HasFocus(); @@ -103,17 +104,20 @@ inline void DIALOG_ZONE_MANAGER::PostProcessZoneViewSelectionChange( wxDataViewI inline void DIALOG_ZONE_MANAGER::GenericProcessChar( wxKeyEvent& aEvent ) { aEvent.Skip(); + if( aEvent.GetKeyCode() == WXK_DOWN || aEvent.GetKeyCode() == WXK_UP ) { Bind( wxEVT_IDLE, &DIALOG_ZONE_MANAGER::OnIDle, this ); } } + void DIALOG_ZONE_MANAGER::OnTableChar( wxKeyEvent& aEvent ) { GenericProcessChar( aEvent ); } + void DIALOG_ZONE_MANAGER::OnTableCharHook( wxKeyEvent& aEvent ) { GenericProcessChar( aEvent ); @@ -151,7 +155,7 @@ 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_sizerProperties->Add( m_panelZoneProperties, 1, wxALL | wxEXPAND ); - m_sizerTop->Add( m_zoneViewer, 1, wxALL | wxEXPAND, 0 ); + m_sizerTop->Add( m_zoneViewer, 1, wxBOTTOM | wxTOP | wxRIGHT | wxEXPAND, 5 ); m_checkRepour->SetValue( ZONE_MANAGER_PREFERENCE::GetRepourOnClose() ); m_zoneViewer->SetId( ZONE_VIEWER ); @@ -205,6 +209,7 @@ DIALOG_ZONE_MANAGER::DIALOG_ZONE_MANAGER( PCB_BASE_FRAME* aParent, ZONE_SETTINGS FitCanvasToScreen(); } + DIALOG_ZONE_MANAGER::~DIALOG_ZONE_MANAGER() = default; @@ -220,6 +225,7 @@ int InvokeZonesManager( PCB_BASE_FRAME* aCaller, ZONE_SETTINGS* aZoneInfo ) return res; } + void DIALOG_ZONE_MANAGER::OnZoneSelectionChanged( ZONE* zone ) { for( ZONE_SELECTION_CHANGE_NOTIFIER* i : @@ -227,14 +233,17 @@ void DIALOG_ZONE_MANAGER::OnZoneSelectionChanged( ZONE* zone ) { i->OnZoneSelectionChanged( zone ); } + Layout(); } + void DIALOG_ZONE_MANAGER::OnViewZonesOverviewOnLeftUp( wxMouseEvent& aEvent ) { Bind( wxEVT_IDLE, &DIALOG_ZONE_MANAGER::OnIDle, this ); } + void DIALOG_ZONE_MANAGER::OnDataViewCtrlSelectionChanged( wxDataViewEvent& aEvent ) { SelectZoneTableItem( aEvent.GetItem() ); @@ -269,6 +278,7 @@ void DIALOG_ZONE_MANAGER::OnOk( wxCommandEvent& aEvt ) aEvt.Skip(); } + #if wxUSE_DRAG_AND_DROP void DIALOG_ZONE_MANAGER::OnBeginDrag( wxDataViewEvent& aEvent ) @@ -283,11 +293,13 @@ void DIALOG_ZONE_MANAGER::OnBeginDrag( wxDataViewEvent& aEvent ) m_priorityDragIndex = m_modelZoneOverviewTable->GetRow( it ); } + void DIALOG_ZONE_MANAGER::OnDropPossible( wxDataViewEvent& aEvent ) { aEvent.SetDropEffect( wxDragMove ); // check 'move' drop effect } + void DIALOG_ZONE_MANAGER::OnRepourCheck( wxCommandEvent& aEvent ) { ZONE_MANAGER_PREFERENCE::SetRepourOnClose( m_checkRepour->IsChecked() ); @@ -324,20 +336,24 @@ void DIALOG_ZONE_MANAGER::OnDrop( wxDataViewEvent& aEvent ) m_viewZonesOverview->Select( item ); } } + #endif // wxUSE_DRAG_AND_DROP + void DIALOG_ZONE_MANAGER::OnMoveUpClick( wxCommandEvent& aEvent ) { WXUNUSED( aEvent ); MoveSelectedZonePriority( ZONE_INDEX_MOVEMENT::MOVE_UP ); } + void DIALOG_ZONE_MANAGER::OnMoveDownClick( wxCommandEvent& aEvent ) { WXUNUSED( aEvent ); MoveSelectedZonePriority( ZONE_INDEX_MOVEMENT::MOVE_DOWN ); } + void DIALOG_ZONE_MANAGER::OnFilterCtrlCancel( wxCommandEvent& aEvent ) { PostProcessZoneViewSelectionChange( @@ -345,6 +361,7 @@ void DIALOG_ZONE_MANAGER::OnFilterCtrlCancel( wxCommandEvent& aEvent ) aEvent.Skip(); } + void DIALOG_ZONE_MANAGER::OnFilterCtrlSearch( wxCommandEvent& aEvent ) { PostProcessZoneViewSelectionChange( m_modelZoneOverviewTable->ApplyFilter( @@ -352,6 +369,7 @@ void DIALOG_ZONE_MANAGER::OnFilterCtrlSearch( wxCommandEvent& aEvent ) aEvent.Skip(); } + void DIALOG_ZONE_MANAGER::OnFilterCtrlTextChange( wxCommandEvent& aEvent ) { PostProcessZoneViewSelectionChange( m_modelZoneOverviewTable->ApplyFilter( @@ -359,6 +377,7 @@ void DIALOG_ZONE_MANAGER::OnFilterCtrlTextChange( wxCommandEvent& aEvent ) aEvent.Skip(); } + void DIALOG_ZONE_MANAGER::OnFilterCtrlEnter( wxCommandEvent& aEvent ) { PostProcessZoneViewSelectionChange( m_modelZoneOverviewTable->ApplyFilter( @@ -366,6 +385,7 @@ void DIALOG_ZONE_MANAGER::OnFilterCtrlEnter( wxCommandEvent& aEvent ) aEvent.Skip(); } + void DIALOG_ZONE_MANAGER::OnButtonApplyClick( wxCommandEvent& aEvent ) { if( m_isFillingZones ) @@ -383,7 +403,8 @@ void DIALOG_ZONE_MANAGER::OnButtonApplyClick( wxCommandEvent& aEvent ) auto reporter = std::make_unique( this, _( "Fill All Zones" ), 5 ); m_filler->SetProgressReporter( reporter.get() ); board->Zones() = m_zonesContainer->GetClonedZoneList(); - //NOTE - Nether revert nor commit is needed here , cause the cloned zones are not owned by the pcb frame + //NOTE - Nether revert nor commit is needed here , cause the cloned zones are not owned by + // the pcb frame. m_zoneFillComplete = m_filler->Fill( board->Zones() ); board->BuildConnectivity(); board->Zones() = m_zonesContainer->GetOriginalZoneList(); @@ -413,6 +434,7 @@ void DIALOG_ZONE_MANAGER::OnZoneNameUpdate( wxCommandEvent& aEvent ) } } + void DIALOG_ZONE_MANAGER::OnZonesTableRowCountChange( wxCommandEvent& aEvent ) { unsigned count = aEvent.GetInt(); @@ -421,6 +443,7 @@ void DIALOG_ZONE_MANAGER::OnZonesTableRowCountChange( wxCommandEvent& aEvent ) btn->Enable( count == m_modelZoneOverviewTable->GetAllZonesCount() ); } + void DIALOG_ZONE_MANAGER::OnCheckBoxClicked( wxCommandEvent& aEvent ) { const wxObject* sender = aEvent.GetEventObject(); @@ -441,6 +464,7 @@ void DIALOG_ZONE_MANAGER::OnCheckBoxClicked( wxCommandEvent& aEvent ) } } + void DIALOG_ZONE_MANAGER::MoveSelectedZonePriority( ZONE_INDEX_MOVEMENT aMove ) { if( !m_viewZonesOverview->HasSelection() ) diff --git a/pcbnew/zone_manager/dialog_zone_manager_base.cpp b/pcbnew/zone_manager/dialog_zone_manager_base.cpp index 89f5b50978..0eead1d469 100644 --- a/pcbnew/zone_manager/dialog_zone_manager_base.cpp +++ b/pcbnew/zone_manager/dialog_zone_manager_base.cpp @@ -9,187 +9,125 @@ /////////////////////////////////////////////////////////////////////////// -DIALOG_ZONE_MANAGER_BASE::DIALOG_ZONE_MANAGER_BASE( wxWindow* parent, wxWindowID id, - const wxString& title, const wxPoint& pos, - const wxSize& size, long style ) : - DIALOG_SHIM( parent, id, title, pos, size, style ) +DIALOG_ZONE_MANAGER_BASE::DIALOG_ZONE_MANAGER_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : DIALOG_SHIM( parent, id, title, pos, size, style ) { - this->SetSizeHints( wxSize( -1, -1 ), wxDefaultSize ); + this->SetSizeHints( wxSize( -1,-1 ), wxDefaultSize ); - m_MainBoxSizer = new wxBoxSizer( wxVERTICAL ); + m_MainBoxSizer = new wxBoxSizer( wxVERTICAL ); - wxBoxSizer* bSizer12; - bSizer12 = new wxBoxSizer( wxVERTICAL ); + wxBoxSizer* bSizer12; + bSizer12 = new wxBoxSizer( wxVERTICAL ); - m_sizerTop = new wxBoxSizer( wxHORIZONTAL ); + m_sizerTop = new wxBoxSizer( wxHORIZONTAL ); - wxBoxSizer* bSizer7; - bSizer7 = new wxBoxSizer( wxVERTICAL ); + wxBoxSizer* bSizer7; + bSizer7 = new wxBoxSizer( wxVERTICAL ); - m_viewZonesOverview = - new wxDataViewCtrl( this, VIEW_ZONE_TABLE, wxDefaultPosition, wxSize( -1, 240 ), - wxDV_HORIZ_RULES | wxDV_ROW_LINES | wxDV_SINGLE | wxDV_VERT_RULES ); - m_viewZonesOverview->SetMinSize( wxSize( -1, 240 ) ); + m_viewZonesOverview = new wxDataViewCtrl( this, VIEW_ZONE_TABLE, wxDefaultPosition, wxSize( -1,240 ), wxDV_HORIZ_RULES|wxDV_ROW_LINES|wxDV_SINGLE|wxDV_VERT_RULES ); + m_viewZonesOverview->SetMinSize( wxSize( -1,240 ) ); - bSizer7->Add( m_viewZonesOverview, 1, wxALL | wxEXPAND, 0 ); + bSizer7->Add( m_viewZonesOverview, 1, wxALL|wxEXPAND, 0 ); - m_sizerZoneOP = new wxBoxSizer( wxHORIZONTAL ); + m_sizerZoneOP = new wxBoxSizer( wxHORIZONTAL ); - m_btnMoveUp = new STD_BITMAP_BUTTON( this, BTN_MOVE_UP, 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_btnMoveUp = new STD_BITMAP_BUTTON( this, BTN_MOVE_UP, 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, wxRIGHT, 5 ); + m_sizerZoneOP->Add( m_btnMoveUp, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); - m_btnMoveDown = new STD_BITMAP_BUTTON( this, BTN_MOVE_DOWN, 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_btnMoveDown = new STD_BITMAP_BUTTON( this, BTN_MOVE_DOWN, 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, 0, 5 ); + m_sizerZoneOP->Add( m_btnMoveDown, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); - m_sizerZoneOP->Add( 0, 0, 0, wxEXPAND | wxLEFT | wxRIGHT, 10 ); + m_sizerZoneOP->Add( 0, 0, 0, wxEXPAND, 5 ); - m_checkName = - new wxCheckBox( this, CHECK_NAME, _( "Name" ), wxDefaultPosition, wxDefaultSize, 0 ); - m_checkName->SetValue( true ); - m_sizerZoneOP->Add( m_checkName, 0, wxBOTTOM | wxLEFT | wxTOP, 5 ); + m_checkName = new wxCheckBox( this, CHECK_NAME, _("Name"), wxDefaultPosition, wxDefaultSize, 0 ); + m_checkName->SetValue(true); + m_sizerZoneOP->Add( m_checkName, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); - m_checkNet = new wxCheckBox( this, CHECK_NET, _( "Net" ), wxDefaultPosition, wxDefaultSize, 0 ); - m_checkNet->SetValue( true ); - m_sizerZoneOP->Add( m_checkNet, 0, wxALL, 5 ); + m_checkNet = new wxCheckBox( this, CHECK_NET, _("Net"), wxDefaultPosition, wxDefaultSize, 0 ); + m_checkNet->SetValue(true); + m_sizerZoneOP->Add( m_checkNet, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); - m_filterCtrl = new wxSearchCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, - wxDefaultSize, wxTE_PROCESS_ENTER ); -#ifndef __WXMAC__ - m_filterCtrl->ShowSearchButton( true ); -#endif - m_filterCtrl->ShowCancelButton( true ); - m_sizerZoneOP->Add( m_filterCtrl, 1, wxALL, 0 ); + m_filterCtrl = new wxSearchCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER ); + #ifndef __WXMAC__ + m_filterCtrl->ShowSearchButton( true ); + #endif + m_filterCtrl->ShowCancelButton( true ); + m_sizerZoneOP->Add( m_filterCtrl, 1, wxEXPAND, 5 ); - bSizer7->Add( m_sizerZoneOP, 0, wxBOTTOM | wxEXPAND | wxLEFT | wxTOP, 5 ); + bSizer7->Add( m_sizerZoneOP, 0, wxEXPAND|wxLEFT|wxTOP, 5 ); - m_sizerTop->Add( bSizer7, 1, wxALL | wxEXPAND, 5 ); + m_sizerTop->Add( bSizer7, 1, wxALL|wxEXPAND, 5 ); - bSizer12->Add( m_sizerTop, 1, wxEXPAND, 5 ); + bSizer12->Add( m_sizerTop, 1, wxEXPAND, 5 ); - m_sizerProperties = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _( "Properties" ) ), - wxVERTICAL ); + m_sizerProperties = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Properties") ), wxVERTICAL ); - bSizer12->Add( m_sizerProperties, 0, wxALL | wxEXPAND, 5 ); + bSizer12->Add( m_sizerProperties, 0, wxALL|wxEXPAND, 5 ); - m_MainBoxSizer->Add( bSizer12, 1, wxEXPAND, 0 ); + m_MainBoxSizer->Add( bSizer12, 1, wxEXPAND, 0 ); - wxBoxSizer* bSizer61; - bSizer61 = new wxBoxSizer( wxHORIZONTAL ); + wxBoxSizer* bSizer61; + bSizer61 = new wxBoxSizer( wxHORIZONTAL ); - wxBoxSizer* bSizer71; - bSizer71 = new wxBoxSizer( wxVERTICAL ); - - m_checkRepour = - new wxCheckBox( this, wxID_ANY, _( "Repour" ), wxDefaultPosition, wxDefaultSize, 0 ); - bSizer71->Add( m_checkRepour, 0, wxLEFT | wxTOP, 10 ); + m_checkRepour = new wxCheckBox( this, wxID_ANY, _("Repour"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer61->Add( m_checkRepour, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 10 ); - bSizer61->Add( bSizer71, 0, wxEXPAND | wxLEFT, 15 ); + bSizer61->Add( 0, 0, 1, wxEXPAND, 5 ); + + m_sdbSizer = new wxStdDialogButtonSizer(); + m_sdbSizerOK = new wxButton( this, wxID_OK ); + m_sdbSizer->AddButton( m_sdbSizerOK ); + m_sdbSizerApply = new wxButton( this, wxID_APPLY ); + m_sdbSizer->AddButton( m_sdbSizerApply ); + m_sdbSizerCancel = new wxButton( this, wxID_CANCEL ); + m_sdbSizer->AddButton( m_sdbSizerCancel ); + m_sdbSizer->Realize(); + + bSizer61->Add( m_sdbSizer, 0, wxALL|wxEXPAND, 5 ); - bSizer61->Add( 0, 0, 1, wxEXPAND, 5 ); - - m_sdbSizer = new wxStdDialogButtonSizer(); - m_sdbSizerOK = new wxButton( this, wxID_OK ); - m_sdbSizer->AddButton( m_sdbSizerOK ); - m_sdbSizerApply = new wxButton( this, wxID_APPLY ); - m_sdbSizer->AddButton( m_sdbSizerApply ); - m_sdbSizerCancel = new wxButton( this, wxID_CANCEL ); - m_sdbSizer->AddButton( m_sdbSizerCancel ); - m_sdbSizer->Realize(); - - bSizer61->Add( m_sdbSizer, 0, wxALL | wxEXPAND, 5 ); + m_MainBoxSizer->Add( bSizer61, 0, wxEXPAND, 5 ); - m_MainBoxSizer->Add( bSizer61, 0, wxEXPAND, 5 ); + this->SetSizer( m_MainBoxSizer ); + this->Layout(); + m_MainBoxSizer->Fit( this ); - - this->SetSizer( m_MainBoxSizer ); - this->Layout(); - m_MainBoxSizer->Fit( this ); - - // Connect Events - m_viewZonesOverview->Connect( - wxEVT_CHAR, wxKeyEventHandler( DIALOG_ZONE_MANAGER_BASE::OnTableChar ), NULL, this ); - m_viewZonesOverview->Connect( wxEVT_CHAR_HOOK, - wxKeyEventHandler( DIALOG_ZONE_MANAGER_BASE::OnTableCharHook ), - NULL, this ); - m_viewZonesOverview->Connect( - wxEVT_COMMAND_DATAVIEW_SELECTION_CHANGED, - wxDataViewEventHandler( DIALOG_ZONE_MANAGER_BASE::OnDataViewCtrlSelectionChanged ), - NULL, this ); - m_viewZonesOverview->Connect( - wxEVT_LEFT_UP, - wxMouseEventHandler( DIALOG_ZONE_MANAGER_BASE::OnViewZonesOverviewOnLeftUp ), NULL, - this ); - m_filterCtrl->Connect( wxEVT_COMMAND_SEARCHCTRL_CANCEL_BTN, - wxCommandEventHandler( DIALOG_ZONE_MANAGER_BASE::OnFilterCtrlCancel ), - NULL, this ); - m_filterCtrl->Connect( wxEVT_COMMAND_SEARCHCTRL_SEARCH_BTN, - wxCommandEventHandler( DIALOG_ZONE_MANAGER_BASE::OnFilterCtrlSearch ), - NULL, this ); - m_filterCtrl->Connect( - wxEVT_COMMAND_TEXT_UPDATED, - wxCommandEventHandler( DIALOG_ZONE_MANAGER_BASE::OnFilterCtrlTextChange ), NULL, this ); - m_filterCtrl->Connect( wxEVT_COMMAND_TEXT_ENTER, - wxCommandEventHandler( DIALOG_ZONE_MANAGER_BASE::OnFilterCtrlEnter ), - NULL, this ); - m_checkRepour->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, - wxCommandEventHandler( DIALOG_ZONE_MANAGER_BASE::OnRepourCheck ), NULL, - this ); - m_sdbSizerApply->Connect( wxEVT_COMMAND_BUTTON_CLICKED, - wxCommandEventHandler( DIALOG_ZONE_MANAGER_BASE::OnButtonApplyClick ), - NULL, this ); + // Connect Events + m_viewZonesOverview->Connect( wxEVT_CHAR, wxKeyEventHandler( DIALOG_ZONE_MANAGER_BASE::OnTableChar ), NULL, this ); + m_viewZonesOverview->Connect( wxEVT_CHAR_HOOK, wxKeyEventHandler( DIALOG_ZONE_MANAGER_BASE::OnTableCharHook ), NULL, this ); + m_viewZonesOverview->Connect( wxEVT_COMMAND_DATAVIEW_SELECTION_CHANGED, wxDataViewEventHandler( DIALOG_ZONE_MANAGER_BASE::OnDataViewCtrlSelectionChanged ), NULL, this ); + m_viewZonesOverview->Connect( wxEVT_LEFT_UP, wxMouseEventHandler( DIALOG_ZONE_MANAGER_BASE::OnViewZonesOverviewOnLeftUp ), NULL, this ); + m_filterCtrl->Connect( wxEVT_COMMAND_SEARCHCTRL_CANCEL_BTN, wxCommandEventHandler( DIALOG_ZONE_MANAGER_BASE::OnFilterCtrlCancel ), NULL, this ); + m_filterCtrl->Connect( wxEVT_COMMAND_SEARCHCTRL_SEARCH_BTN, wxCommandEventHandler( DIALOG_ZONE_MANAGER_BASE::OnFilterCtrlSearch ), NULL, this ); + m_filterCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_ZONE_MANAGER_BASE::OnFilterCtrlTextChange ), NULL, this ); + m_filterCtrl->Connect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_ZONE_MANAGER_BASE::OnFilterCtrlEnter ), NULL, this ); + m_checkRepour->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_ZONE_MANAGER_BASE::OnRepourCheck ), NULL, this ); + m_sdbSizerApply->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ZONE_MANAGER_BASE::OnButtonApplyClick ), NULL, this ); } DIALOG_ZONE_MANAGER_BASE::~DIALOG_ZONE_MANAGER_BASE() { - // Disconnect Events - m_viewZonesOverview->Disconnect( - wxEVT_CHAR, wxKeyEventHandler( DIALOG_ZONE_MANAGER_BASE::OnTableChar ), NULL, this ); - m_viewZonesOverview->Disconnect( wxEVT_CHAR_HOOK, - wxKeyEventHandler( DIALOG_ZONE_MANAGER_BASE::OnTableCharHook ), - NULL, this ); - m_viewZonesOverview->Disconnect( - wxEVT_COMMAND_DATAVIEW_SELECTION_CHANGED, - wxDataViewEventHandler( DIALOG_ZONE_MANAGER_BASE::OnDataViewCtrlSelectionChanged ), - NULL, this ); - m_viewZonesOverview->Disconnect( - wxEVT_LEFT_UP, - wxMouseEventHandler( DIALOG_ZONE_MANAGER_BASE::OnViewZonesOverviewOnLeftUp ), NULL, - this ); - m_filterCtrl->Disconnect( wxEVT_COMMAND_SEARCHCTRL_CANCEL_BTN, - wxCommandEventHandler( DIALOG_ZONE_MANAGER_BASE::OnFilterCtrlCancel ), - NULL, this ); - m_filterCtrl->Disconnect( wxEVT_COMMAND_SEARCHCTRL_SEARCH_BTN, - wxCommandEventHandler( DIALOG_ZONE_MANAGER_BASE::OnFilterCtrlSearch ), - NULL, this ); - m_filterCtrl->Disconnect( - wxEVT_COMMAND_TEXT_UPDATED, - wxCommandEventHandler( DIALOG_ZONE_MANAGER_BASE::OnFilterCtrlTextChange ), NULL, this ); - m_filterCtrl->Disconnect( wxEVT_COMMAND_TEXT_ENTER, - wxCommandEventHandler( DIALOG_ZONE_MANAGER_BASE::OnFilterCtrlEnter ), - NULL, this ); - m_checkRepour->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, - wxCommandEventHandler( DIALOG_ZONE_MANAGER_BASE::OnRepourCheck ), - NULL, this ); - m_sdbSizerApply->Disconnect( - wxEVT_COMMAND_BUTTON_CLICKED, - wxCommandEventHandler( DIALOG_ZONE_MANAGER_BASE::OnButtonApplyClick ), NULL, this ); + // Disconnect Events + m_viewZonesOverview->Disconnect( wxEVT_CHAR, wxKeyEventHandler( DIALOG_ZONE_MANAGER_BASE::OnTableChar ), NULL, this ); + m_viewZonesOverview->Disconnect( wxEVT_CHAR_HOOK, wxKeyEventHandler( DIALOG_ZONE_MANAGER_BASE::OnTableCharHook ), NULL, this ); + m_viewZonesOverview->Disconnect( wxEVT_COMMAND_DATAVIEW_SELECTION_CHANGED, wxDataViewEventHandler( DIALOG_ZONE_MANAGER_BASE::OnDataViewCtrlSelectionChanged ), NULL, this ); + m_viewZonesOverview->Disconnect( wxEVT_LEFT_UP, wxMouseEventHandler( DIALOG_ZONE_MANAGER_BASE::OnViewZonesOverviewOnLeftUp ), NULL, this ); + m_filterCtrl->Disconnect( wxEVT_COMMAND_SEARCHCTRL_CANCEL_BTN, wxCommandEventHandler( DIALOG_ZONE_MANAGER_BASE::OnFilterCtrlCancel ), NULL, this ); + m_filterCtrl->Disconnect( wxEVT_COMMAND_SEARCHCTRL_SEARCH_BTN, wxCommandEventHandler( DIALOG_ZONE_MANAGER_BASE::OnFilterCtrlSearch ), NULL, this ); + m_filterCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_ZONE_MANAGER_BASE::OnFilterCtrlTextChange ), NULL, this ); + m_filterCtrl->Disconnect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_ZONE_MANAGER_BASE::OnFilterCtrlEnter ), NULL, this ); + m_checkRepour->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_ZONE_MANAGER_BASE::OnRepourCheck ), NULL, this ); + m_sdbSizerApply->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ZONE_MANAGER_BASE::OnButtonApplyClick ), NULL, this ); + } diff --git a/pcbnew/zone_manager/dialog_zone_manager_base.fbp b/pcbnew/zone_manager/dialog_zone_manager_base.fbp index 2c9cf8f68e..225d5e51fe 100644 --- a/pcbnew/zone_manager/dialog_zone_manager_base.fbp +++ b/pcbnew/zone_manager/dialog_zone_manager_base.fbp @@ -123,7 +123,7 @@ 5 - wxBOTTOM|wxEXPAND|wxLEFT|wxTOP + wxEXPAND|wxLEFT|wxTOP 0 @@ -132,7 +132,7 @@ protected 5 - wxRIGHT + wxALIGN_CENTER_VERTICAL|wxRIGHT 0 1 @@ -195,7 +195,7 @@ 5 - + wxALIGN_CENTER_VERTICAL|wxRIGHT 0 1 @@ -257,8 +257,8 @@ - 10 - wxEXPAND|wxLEFT|wxRIGHT + 5 + wxEXPAND 0 0 @@ -268,7 +268,7 @@ 5 - wxBOTTOM|wxLEFT|wxTOP + wxALIGN_CENTER_VERTICAL|wxRIGHT 0 1 @@ -333,7 +333,7 @@ 5 - wxALL + wxALIGN_CENTER_VERTICAL|wxRIGHT 0 1 @@ -397,8 +397,8 @@ - 0 - wxALL + 5 + wxEXPAND 1 1 @@ -498,80 +498,69 @@ wxHORIZONTAL none - 15 - wxEXPAND|wxLEFT + 10 + wxALIGN_CENTER_VERTICAL|wxLEFT 0 - + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Repour + + 0 + + + 0 - bSizer71 - wxVERTICAL - none - - 10 - wxLEFT|wxTOP - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 0 - 1 - - 1 - - 0 - 0 - wxID_ANY - Repour - - 0 - - - 0 - - 1 - m_checkRepour - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnRepourCheck - - + 1 + m_checkRepour + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnRepourCheck diff --git a/pcbnew/zone_manager/dialog_zone_manager_base.h b/pcbnew/zone_manager/dialog_zone_manager_base.h index 4b239887a0..b0bcefeec0 100644 --- a/pcbnew/zone_manager/dialog_zone_manager_base.h +++ b/pcbnew/zone_manager/dialog_zone_manager_base.h @@ -32,53 +32,53 @@ /////////////////////////////////////////////////////////////////////////////// class DIALOG_ZONE_MANAGER_BASE : public DIALOG_SHIM { -private: -protected: - enum - { - ID_DIALOG_COPPER_ZONE_BASE = 1000, - VIEW_ZONE_TABLE, - BTN_MOVE_UP, - BTN_MOVE_DOWN, - CHECK_NAME, - CHECK_NET - }; + private: - wxBoxSizer* m_MainBoxSizer; - wxBoxSizer* m_sizerTop; - wxDataViewCtrl* m_viewZonesOverview; - wxBoxSizer* m_sizerZoneOP; - STD_BITMAP_BUTTON* m_btnMoveUp; - STD_BITMAP_BUTTON* m_btnMoveDown; - wxCheckBox* m_checkName; - wxCheckBox* m_checkNet; - wxSearchCtrl* m_filterCtrl; - wxStaticBoxSizer* m_sizerProperties; - wxCheckBox* m_checkRepour; - wxStdDialogButtonSizer* m_sdbSizer; - wxButton* m_sdbSizerOK; - wxButton* m_sdbSizerApply; - wxButton* m_sdbSizerCancel; + protected: + enum + { + ID_DIALOG_COPPER_ZONE_BASE = 1000, + VIEW_ZONE_TABLE, + BTN_MOVE_UP, + BTN_MOVE_DOWN, + CHECK_NAME, + CHECK_NET + }; - // Virtual event handlers, override them in your derived class - virtual void OnTableChar( wxKeyEvent& event ) { event.Skip(); } - virtual void OnTableCharHook( wxKeyEvent& event ) { event.Skip(); } - virtual void OnDataViewCtrlSelectionChanged( wxDataViewEvent& event ) { event.Skip(); } - virtual void OnViewZonesOverviewOnLeftUp( wxMouseEvent& event ) { event.Skip(); } - virtual void OnFilterCtrlCancel( wxCommandEvent& event ) { event.Skip(); } - virtual void OnFilterCtrlSearch( wxCommandEvent& event ) { event.Skip(); } - virtual void OnFilterCtrlTextChange( wxCommandEvent& event ) { event.Skip(); } - virtual void OnFilterCtrlEnter( wxCommandEvent& event ) { event.Skip(); } - virtual void OnRepourCheck( wxCommandEvent& event ) { event.Skip(); } - virtual void OnButtonApplyClick( wxCommandEvent& event ) { event.Skip(); } + wxBoxSizer* m_MainBoxSizer; + wxBoxSizer* m_sizerTop; + wxDataViewCtrl* m_viewZonesOverview; + wxBoxSizer* m_sizerZoneOP; + STD_BITMAP_BUTTON* m_btnMoveUp; + STD_BITMAP_BUTTON* m_btnMoveDown; + wxCheckBox* m_checkName; + wxCheckBox* m_checkNet; + wxSearchCtrl* m_filterCtrl; + wxStaticBoxSizer* m_sizerProperties; + wxCheckBox* m_checkRepour; + wxStdDialogButtonSizer* m_sdbSizer; + wxButton* m_sdbSizerOK; + wxButton* m_sdbSizerApply; + wxButton* m_sdbSizerCancel; + + // Virtual event handlers, override them in your derived class + virtual void OnTableChar( wxKeyEvent& event ) { event.Skip(); } + virtual void OnTableCharHook( wxKeyEvent& event ) { event.Skip(); } + virtual void OnDataViewCtrlSelectionChanged( wxDataViewEvent& event ) { event.Skip(); } + virtual void OnViewZonesOverviewOnLeftUp( wxMouseEvent& event ) { event.Skip(); } + virtual void OnFilterCtrlCancel( wxCommandEvent& event ) { event.Skip(); } + virtual void OnFilterCtrlSearch( wxCommandEvent& event ) { event.Skip(); } + virtual void OnFilterCtrlTextChange( wxCommandEvent& event ) { event.Skip(); } + virtual void OnFilterCtrlEnter( wxCommandEvent& event ) { event.Skip(); } + virtual void OnRepourCheck( wxCommandEvent& event ) { event.Skip(); } + virtual void OnButtonApplyClick( wxCommandEvent& event ) { event.Skip(); } -public: - DIALOG_ZONE_MANAGER_BASE( wxWindow* parent, wxWindowID id = ID_DIALOG_COPPER_ZONE_BASE, - const wxString& title = _( "Zone Manager" ), - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxSize( -1, -1 ), - long style = wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER ); + public: + + DIALOG_ZONE_MANAGER_BASE( wxWindow* parent, wxWindowID id = ID_DIALOG_COPPER_ZONE_BASE, const wxString& title = _("Zone Manager"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER ); + + ~DIALOG_ZONE_MANAGER_BASE(); - ~DIALOG_ZONE_MANAGER_BASE(); }; + diff --git a/pcbnew/zone_manager/panel_zone_properties_base.cpp b/pcbnew/zone_manager/panel_zone_properties_base.cpp index 40d6779bb4..5963c30bd8 100644 --- a/pcbnew/zone_manager/panel_zone_properties_base.cpp +++ b/pcbnew/zone_manager/panel_zone_properties_base.cpp @@ -9,477 +9,326 @@ /////////////////////////////////////////////////////////////////////////// -PANEL_ZONE_PROPERTIES_BASE::PANEL_ZONE_PROPERTIES_BASE( wxWindow* parent, wxWindowID id, - const wxPoint& pos, const wxSize& size, - long style, const wxString& name ) : - wxPanel( parent, id, pos, size, style, name ) +PANEL_ZONE_PROPERTIES_BASE::PANEL_ZONE_PROPERTIES_BASE( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) : wxPanel( parent, id, pos, size, style, name ) { - wxBoxSizer* bSizerMiddle; - bSizerMiddle = new wxBoxSizer( wxHORIZONTAL ); - - wxBoxSizer* bLeftColumn; - bLeftColumn = new wxBoxSizer( wxVERTICAL ); - - wxStaticBoxSizer* sbGeneral; - sbGeneral = - new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _( "General" ) ), wxHORIZONTAL ); - - wxFlexGridSizer* fgSizer1; - fgSizer1 = new wxFlexGridSizer( 0, 2, 0, 0 ); - fgSizer1->AddGrowableCol( 1 ); - fgSizer1->SetFlexibleDirection( wxBOTH ); - fgSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); - - m_zoneNameLabel = new wxStaticText( sbGeneral->GetStaticBox(), wxID_ANY, _( "Zone name:" ), - wxDefaultPosition, wxDefaultSize, 0 ); - m_zoneNameLabel->Wrap( -1 ); - m_zoneNameLabel->SetToolTip( _( "A unique name for this zone to identify it for DRC" ) ); - - fgSizer1->Add( m_zoneNameLabel, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, 5 ); - - m_tcZoneName = new wxTextCtrl( sbGeneral->GetStaticBox(), EDIT_ZONE_NAME, wxEmptyString, - wxDefaultPosition, wxDefaultSize, 0 ); - fgSizer1->Add( m_tcZoneName, 0, - wxALIGN_CENTER_VERTICAL | wxBOTTOM | wxRIGHT | wxLEFT | wxEXPAND, 5 ); - - - sbGeneral->Add( fgSizer1, 1, wxEXPAND | wxBOTTOM, 5 ); - - - bLeftColumn->Add( sbGeneral, 0, wxEXPAND | wxTOP | wxRIGHT | wxLEFT, 10 ); - - wxStaticBoxSizer* m_ExportableSetupSizer; - m_ExportableSetupSizer = - new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _( "Shape" ) ), wxHORIZONTAL ); - - wxGridBagSizer* gbSizer1; - gbSizer1 = new wxGridBagSizer( 5, 5 ); - gbSizer1->SetFlexibleDirection( wxBOTH ); - gbSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); - - m_cbLocked = new wxCheckBox( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, _( "Locked" ), - wxDefaultPosition, wxDefaultSize, 0 ); - gbSizer1->Add( m_cbLocked, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxBOTTOM | wxRIGHT, 5 ); - - m_staticTextStyle = - new wxStaticText( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, - _( "Outline display:" ), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextStyle->Wrap( -1 ); - gbSizer1->Add( m_staticTextStyle, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), - wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT, 5 ); - - wxString m_OutlineDisplayCtrlChoices[] = { _( "Line" ), _( "Hatched" ), _( "Fully hatched" ) }; - int m_OutlineDisplayCtrlNChoices = sizeof( m_OutlineDisplayCtrlChoices ) / sizeof( wxString ); - m_OutlineDisplayCtrl = new wxChoice( - m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, - m_OutlineDisplayCtrlNChoices, m_OutlineDisplayCtrlChoices, 0 ); - m_OutlineDisplayCtrl->SetSelection( 0 ); - gbSizer1->Add( m_OutlineDisplayCtrl, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxALL, 5 ); - - m_stBorderHatchPitchText = - new wxStaticText( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, - _( "Outline hatch pitch:" ), wxDefaultPosition, wxDefaultSize, 0 ); - m_stBorderHatchPitchText->Wrap( -1 ); - gbSizer1->Add( m_stBorderHatchPitchText, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), - wxALIGN_CENTER_VERTICAL | wxLEFT, 5 ); - - m_outlineHatchPitchCtrl = - new wxTextCtrl( m_ExportableSetupSizer->GetStaticBox(), ID_M_CORNERSMOOTHINGCTRL, - wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - gbSizer1->Add( m_outlineHatchPitchCtrl, wxGBPosition( 2, 1 ), wxGBSpan( 1, 1 ), - wxALIGN_CENTER_VERTICAL | wxEXPAND, 5 ); - - m_outlineHatchUnits = new wxStaticText( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, - _( "mm" ), wxDefaultPosition, wxDefaultSize, 0 ); - m_outlineHatchUnits->Wrap( -1 ); - gbSizer1->Add( m_outlineHatchUnits, wxGBPosition( 2, 2 ), wxGBSpan( 1, 1 ), - wxALIGN_CENTER_VERTICAL, 5 ); - - m_staticline4 = new wxStaticLine( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, - wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - gbSizer1->Add( m_staticline4, wxGBPosition( 3, 0 ), wxGBSpan( 1, 3 ), wxEXPAND | wxALL, 5 ); - - m_staticTextSmoothing = - new wxStaticText( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, - _( "Corner smoothing:" ), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextSmoothing->Wrap( -1 ); - gbSizer1->Add( m_staticTextSmoothing, wxGBPosition( 4, 0 ), wxGBSpan( 1, 1 ), - wxALIGN_CENTER_VERTICAL | wxLEFT, 5 ); - - wxString m_cornerSmoothingChoiceChoices[] = { _( "None" ), _( "Chamfer" ), _( "Fillet" ) }; - int m_cornerSmoothingChoiceNChoices = - sizeof( m_cornerSmoothingChoiceChoices ) / sizeof( wxString ); - m_cornerSmoothingChoice = new wxChoice( - m_ExportableSetupSizer->GetStaticBox(), ID_CORNER_SMOOTHING, wxDefaultPosition, - wxDefaultSize, m_cornerSmoothingChoiceNChoices, m_cornerSmoothingChoiceChoices, 0 ); - m_cornerSmoothingChoice->SetSelection( 1 ); - gbSizer1->Add( m_cornerSmoothingChoice, wxGBPosition( 4, 1 ), wxGBSpan( 1, 1 ), - wxALIGN_CENTER_VERTICAL | wxEXPAND, 5 ); - - m_cornerRadiusLabel = - new wxStaticText( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, - _( "Chamfer distance:" ), wxDefaultPosition, wxDefaultSize, 0 ); - m_cornerRadiusLabel->Wrap( -1 ); - gbSizer1->Add( m_cornerRadiusLabel, wxGBPosition( 5, 0 ), wxGBSpan( 1, 1 ), - wxALIGN_CENTER_VERTICAL | wxLEFT, 5 ); - - m_cornerRadiusCtrl = - new wxTextCtrl( m_ExportableSetupSizer->GetStaticBox(), ID_M_CORNERSMOOTHINGCTRL, - wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - gbSizer1->Add( m_cornerRadiusCtrl, wxGBPosition( 5, 1 ), wxGBSpan( 1, 1 ), - wxALIGN_CENTER_VERTICAL | wxEXPAND, 5 ); - - m_cornerRadiusUnits = new wxStaticText( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, - _( "mm" ), wxDefaultPosition, wxDefaultSize, 0 ); - m_cornerRadiusUnits->Wrap( -1 ); - gbSizer1->Add( m_cornerRadiusUnits, wxGBPosition( 5, 2 ), wxGBSpan( 1, 1 ), - wxALIGN_CENTER_VERTICAL, 5 ); - - - gbSizer1->AddGrowableCol( 0 ); - - m_ExportableSetupSizer->Add( gbSizer1, 1, wxEXPAND | wxBOTTOM | wxRIGHT, 5 ); - - - bLeftColumn->Add( m_ExportableSetupSizer, 1, wxEXPAND | wxLEFT | wxRIGHT | wxTOP, 10 ); - - - bSizerMiddle->Add( bLeftColumn, 1, wxEXPAND, 5 ); - - wxBoxSizer* bMiddleColumn; - bMiddleColumn = new wxBoxSizer( wxVERTICAL ); - - wxStaticBoxSizer* sbSizer5; - sbSizer5 = 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->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 ); - 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->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->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 ); - 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->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 ); - 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->Wrap( -1 ); - m_connectionLabel->SetToolTip( _( "Default pad connection type to zone.\nThis setting can be " - "overridden by local pad settings" ) ); - - gbSizerSettings->Add( m_connectionLabel, wxGBPosition( 3, 0 ), wxGBSpan( 1, 1 ), - wxALIGN_CENTER_VERTICAL | wxTOP | wxLEFT, 5 ); - - wxString m_PadInZoneOptChoices[] = { _( "Solid" ), _( "Thermal reliefs" ), - _( "Reliefs for PTH" ), _( "None" ) }; - int m_PadInZoneOptNChoices = sizeof( m_PadInZoneOptChoices ) / sizeof( wxString ); - m_PadInZoneOpt = - new wxChoice( sbSizer5->GetStaticBox(), ID_M_PADINZONEOPT, 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->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_ANTIPAD_SIZE, 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->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->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_COPPER_BRIDGE_VALUE, - 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->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 ); - - - bMiddleColumn->Add( sbSizer5, 1, wxEXPAND | wxRIGHT | wxTOP, 10 ); - - - bSizerMiddle->Add( bMiddleColumn, 1, wxEXPAND, 5 ); - - wxStaticBoxSizer* sbSizerZoneStyle; - sbSizerZoneStyle = - new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _( "Fill" ) ), wxVERTICAL ); - - wxGridBagSizer* gbSizer3; - gbSizer3 = new wxGridBagSizer( 0, 0 ); - 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->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->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->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 ); - 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->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->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 ); - 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->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->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 ); - 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->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->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 ); - 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->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->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 ); - 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->Wrap( -1 ); - m_staticText40->SetToolTip( _( "Choose what to do with unconnected copper islands" ) ); - - gbSizer3->Add( m_staticText40, wxGBPosition( 7, 0 ), wxGBSpan( 1, 1 ), - wxALIGN_CENTER_VERTICAL | wxBOTTOM | wxLEFT | wxTOP, 5 ); - - 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->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, - _( "Minimum island size:" ), 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->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->Wrap( -1 ); - m_islandThresholdUnits->Enable( false ); - - gbSizer3->Add( m_islandThresholdUnits, wxGBPosition( 8, 2 ), wxGBSpan( 1, 1 ), - wxALIGN_CENTER_VERTICAL | wxBOTTOM | wxRIGHT, 5 ); - - - gbSizer3->AddGrowableCol( 0 ); - - sbSizerZoneStyle->Add( gbSizer3, 1, wxEXPAND | wxBOTTOM, 5 ); - - - bSizerMiddle->Add( sbSizerZoneStyle, 1, wxEXPAND | wxTOP | wxRIGHT, 10 ); - - - this->SetSizer( bSizerMiddle ); - this->Layout(); - bSizerMiddle->Fit( this ); - - // Connect Events - this->Connect( wxEVT_UPDATE_UI, - wxUpdateUIEventHandler( PANEL_ZONE_PROPERTIES_BASE::OnUpdateUI ) ); - m_tcZoneName->Connect( wxEVT_COMMAND_TEXT_UPDATED, - wxCommandEventHandler( PANEL_ZONE_PROPERTIES_BASE::OnZoneNameChanged ), - 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 ); + wxBoxSizer* bSizerMiddle; + bSizerMiddle = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bLeftColumn; + bLeftColumn = new wxBoxSizer( wxVERTICAL ); + + wxStaticBoxSizer* sbGeneral; + sbGeneral = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("General") ), wxHORIZONTAL ); + + wxFlexGridSizer* fgSizer1; + fgSizer1 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer1->AddGrowableCol( 1 ); + fgSizer1->SetFlexibleDirection( wxBOTH ); + fgSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + m_zoneNameLabel = new wxStaticText( sbGeneral->GetStaticBox(), wxID_ANY, _("Zone name:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_zoneNameLabel->Wrap( -1 ); + m_zoneNameLabel->SetToolTip( _("A unique name for this zone to identify it for DRC") ); + + fgSizer1->Add( m_zoneNameLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 ); + + m_tcZoneName = new wxTextCtrl( sbGeneral->GetStaticBox(), EDIT_ZONE_NAME, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizer1->Add( m_tcZoneName, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT, 5 ); + + + sbGeneral->Add( fgSizer1, 1, wxEXPAND|wxBOTTOM, 5 ); + + + bLeftColumn->Add( sbGeneral, 0, wxEXPAND|wxLEFT|wxRIGHT, 5 ); + + wxStaticBoxSizer* m_ExportableSetupSizer; + m_ExportableSetupSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Shape") ), wxHORIZONTAL ); + + wxGridBagSizer* gbSizer1; + gbSizer1 = new wxGridBagSizer( 5, 5 ); + gbSizer1->SetFlexibleDirection( wxBOTH ); + gbSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + m_cbLocked = new wxCheckBox( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, _("Locked"), wxDefaultPosition, wxDefaultSize, 0 ); + gbSizer1->Add( m_cbLocked, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxBOTTOM|wxRIGHT, 5 ); + + m_staticTextStyle = new wxStaticText( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, _("Outline display:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextStyle->Wrap( -1 ); + gbSizer1->Add( m_staticTextStyle, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 ); + + wxString m_OutlineDisplayCtrlChoices[] = { _("Line"), _("Hatched"), _("Fully hatched") }; + int m_OutlineDisplayCtrlNChoices = sizeof( m_OutlineDisplayCtrlChoices ) / sizeof( wxString ); + m_OutlineDisplayCtrl = new wxChoice( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_OutlineDisplayCtrlNChoices, m_OutlineDisplayCtrlChoices, 0 ); + m_OutlineDisplayCtrl->SetSelection( 0 ); + gbSizer1->Add( m_OutlineDisplayCtrl, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), 0, 5 ); + + m_stBorderHatchPitchText = new wxStaticText( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, _("Outline hatch pitch:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_stBorderHatchPitchText->Wrap( -1 ); + gbSizer1->Add( m_stBorderHatchPitchText, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 ); + + m_outlineHatchPitchCtrl = new wxTextCtrl( m_ExportableSetupSizer->GetStaticBox(), ID_M_CORNERSMOOTHINGCTRL, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + gbSizer1->Add( m_outlineHatchPitchCtrl, wxGBPosition( 2, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 ); + + m_outlineHatchUnits = new wxStaticText( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 ); + m_outlineHatchUnits->Wrap( -1 ); + gbSizer1->Add( m_outlineHatchUnits, wxGBPosition( 2, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 ); + + m_staticline4 = new wxStaticLine( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + gbSizer1->Add( m_staticline4, wxGBPosition( 3, 0 ), wxGBSpan( 1, 3 ), wxEXPAND | wxALL, 5 ); + + m_staticTextSmoothing = new wxStaticText( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, _("Corner smoothing:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextSmoothing->Wrap( -1 ); + gbSizer1->Add( m_staticTextSmoothing, wxGBPosition( 4, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 ); + + wxString m_cornerSmoothingChoiceChoices[] = { _("None"), _("Chamfer"), _("Fillet") }; + int m_cornerSmoothingChoiceNChoices = sizeof( m_cornerSmoothingChoiceChoices ) / sizeof( wxString ); + m_cornerSmoothingChoice = new wxChoice( m_ExportableSetupSizer->GetStaticBox(), ID_CORNER_SMOOTHING, wxDefaultPosition, wxDefaultSize, m_cornerSmoothingChoiceNChoices, m_cornerSmoothingChoiceChoices, 0 ); + m_cornerSmoothingChoice->SetSelection( 1 ); + gbSizer1->Add( m_cornerSmoothingChoice, wxGBPosition( 4, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 ); + + m_cornerRadiusLabel = new wxStaticText( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, _("Chamfer distance:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_cornerRadiusLabel->Wrap( -1 ); + gbSizer1->Add( m_cornerRadiusLabel, wxGBPosition( 5, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 ); + + m_cornerRadiusCtrl = new wxTextCtrl( m_ExportableSetupSizer->GetStaticBox(), ID_M_CORNERSMOOTHINGCTRL, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + gbSizer1->Add( m_cornerRadiusCtrl, wxGBPosition( 5, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 ); + + m_cornerRadiusUnits = new wxStaticText( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 ); + m_cornerRadiusUnits->Wrap( -1 ); + gbSizer1->Add( m_cornerRadiusUnits, wxGBPosition( 5, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 ); + + + gbSizer1->AddGrowableCol( 0 ); + + m_ExportableSetupSizer->Add( gbSizer1, 1, wxEXPAND|wxBOTTOM|wxRIGHT, 5 ); + + + bLeftColumn->Add( m_ExportableSetupSizer, 1, wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); + + + bSizerMiddle->Add( bLeftColumn, 0, wxBOTTOM|wxEXPAND|wxTOP, 5 ); + + wxBoxSizer* bMiddleColumn; + bMiddleColumn = new wxBoxSizer( wxVERTICAL ); + + wxStaticBoxSizer* sbSizer5; + sbSizer5 = 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->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 ); + 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->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->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 ); + 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->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 ); + 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->Wrap( -1 ); + m_connectionLabel->SetToolTip( _("Default pad connection type to zone.\nThis setting can be overridden by local pad settings") ); + + gbSizerSettings->Add( m_connectionLabel, wxGBPosition( 3, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT, 5 ); + + wxString m_PadInZoneOptChoices[] = { _("Solid"), _("Thermal reliefs"), _("Reliefs for PTH"), _("None") }; + int m_PadInZoneOptNChoices = sizeof( m_PadInZoneOptChoices ) / sizeof( wxString ); + m_PadInZoneOpt = new wxChoice( sbSizer5->GetStaticBox(), ID_M_PADINZONEOPT, 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->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_ANTIPAD_SIZE, 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->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->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_COPPER_BRIDGE_VALUE, 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->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 ); + + + bMiddleColumn->Add( sbSizer5, 1, wxEXPAND|wxRIGHT, 5 ); + + + bSizerMiddle->Add( bMiddleColumn, 1, wxBOTTOM|wxEXPAND|wxTOP, 5 ); + + wxStaticBoxSizer* sbSizerZoneStyle; + sbSizerZoneStyle = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Fill") ), wxVERTICAL ); + + 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->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->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->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 ); + 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->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->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 ); + 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->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->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 ); + 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->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->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 ); + 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->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->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 ); + 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->Wrap( -1 ); + m_staticText40->SetToolTip( _("Choose what to do with unconnected copper islands") ); + + gbSizer3->Add( m_staticText40, wxGBPosition( 7, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 ); + + 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->SetSelection( 0 ); + gbSizer3->Add( m_cbRemoveIslands, wxGBPosition( 7, 1 ), wxGBSpan( 1, 1 ), wxEXPAND, 5 ); + + m_islandThresholdLabel = new wxStaticText( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, _("Minimum island size:"), 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->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->Wrap( -1 ); + m_islandThresholdUnits->Enable( false ); + + gbSizer3->Add( m_islandThresholdUnits, wxGBPosition( 8, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 ); + + + gbSizer3->AddGrowableCol( 0 ); + + sbSizerZoneStyle->Add( gbSizer3, 1, wxBOTTOM|wxEXPAND, 5 ); + + + bSizerMiddle->Add( sbSizerZoneStyle, 0, wxBOTTOM|wxEXPAND|wxRIGHT|wxTOP, 5 ); + + + this->SetSizer( bSizerMiddle ); + this->Layout(); + bSizerMiddle->Fit( this ); + + // Connect Events + this->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( PANEL_ZONE_PROPERTIES_BASE::OnUpdateUI ) ); + m_tcZoneName->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PANEL_ZONE_PROPERTIES_BASE::OnZoneNameChanged ), 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 ); } PANEL_ZONE_PROPERTIES_BASE::~PANEL_ZONE_PROPERTIES_BASE() { - // Disconnect Events - this->Disconnect( wxEVT_UPDATE_UI, - wxUpdateUIEventHandler( PANEL_ZONE_PROPERTIES_BASE::OnUpdateUI ) ); - m_tcZoneName->Disconnect( - wxEVT_COMMAND_TEXT_UPDATED, - wxCommandEventHandler( PANEL_ZONE_PROPERTIES_BASE::OnZoneNameChanged ), 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 ); + // Disconnect Events + this->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( PANEL_ZONE_PROPERTIES_BASE::OnUpdateUI ) ); + m_tcZoneName->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PANEL_ZONE_PROPERTIES_BASE::OnZoneNameChanged ), 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 ); + } diff --git a/pcbnew/zone_manager/panel_zone_properties_base.fbp b/pcbnew/zone_manager/panel_zone_properties_base.fbp index 3f78f9a49f..87057f55f6 100644 --- a/pcbnew/zone_manager/panel_zone_properties_base.fbp +++ b/pcbnew/zone_manager/panel_zone_properties_base.fbp @@ -61,7 +61,7 @@ none 5 - wxEXPAND + wxBOTTOM|wxEXPAND|wxTOP 0 @@ -69,8 +69,8 @@ wxVERTICAL none - 10 - wxEXPAND|wxTOP|wxRIGHT|wxLEFT + 5 + wxEXPAND|wxLEFT|wxRIGHT 0 wxID_ANY @@ -160,7 +160,7 @@ 5 - wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND + wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT 0 1 @@ -229,7 +229,7 @@ - 10 + 5 wxEXPAND|wxLEFT|wxRIGHT|wxTOP 1 @@ -392,7 +392,7 @@ 5 1 1 - wxALL + 1 1 @@ -1055,7 +1055,7 @@ 5 - wxEXPAND + wxBOTTOM|wxEXPAND|wxTOP 1 @@ -1063,8 +1063,8 @@ wxVERTICAL none - 10 - wxEXPAND|wxRIGHT|wxTOP + 5 + wxEXPAND|wxRIGHT 1 wxID_ANY @@ -2083,8 +2083,8 @@ - 10 - wxEXPAND|wxTOP|wxRIGHT + 5 + wxBOTTOM|wxEXPAND|wxRIGHT|wxTOP 0 wxID_ANY @@ -2094,21 +2094,21 @@ wxVERTICAL 1 none - + 5 - wxEXPAND|wxBOTTOM + wxBOTTOM|wxEXPAND 1 - + -1,10 wxBOTH 0 - 0 + 5 gbSizer3 wxFLEX_GROWMODE_SPECIFIED none - 0 + 5 5 1 @@ -2178,7 +2178,7 @@ 5 1 1 - wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT|wxLEFT + wxEXPAND 0 1 @@ -2247,7 +2247,7 @@ 5 1 0 - wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT|wxTOP + wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP 1 1 @@ -2312,7 +2312,7 @@ 5 1 1 - wxEXPAND|wxALIGN_CENTER_VERTICAL|wxALL + wxEXPAND 1 1 @@ -2380,7 +2380,7 @@ 5 1 2 - wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT + wxALIGN_CENTER_VERTICAL|wxRIGHT|wxTOP 1 1 @@ -2445,7 +2445,7 @@ 5 1 0 - wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT + wxALIGN_CENTER_VERTICAL|wxLEFT 2 1 @@ -2510,7 +2510,7 @@ 5 1 1 - wxEXPAND|wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT + wxEXPAND 2 1 @@ -2578,7 +2578,7 @@ 5 1 2 - wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT + wxALIGN_CENTER_VERTICAL|wxRIGHT 2 1 @@ -2643,7 +2643,7 @@ 5 1 0 - wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT + wxALIGN_CENTER_VERTICAL|wxLEFT 3 1 @@ -2708,7 +2708,7 @@ 5 1 1 - wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL + wxEXPAND 3 1 @@ -2776,7 +2776,7 @@ 5 1 2 - wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT + wxALIGN_CENTER_VERTICAL|wxRIGHT 3 1 @@ -2841,7 +2841,7 @@ 5 1 0 - wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT + wxALIGN_CENTER_VERTICAL|wxLEFT 4 1 @@ -2906,7 +2906,7 @@ 5 1 1 - wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL|wxEXPAND + wxEXPAND 4 1 @@ -2972,7 +2972,7 @@ 5 1 0 - wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT + wxALIGN_CENTER_VERTICAL|wxLEFT 5 1 @@ -3037,7 +3037,7 @@ 5 1 1 - wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL|wxEXPAND + wxEXPAND 5 1 @@ -3167,7 +3167,7 @@ 5 1 0 - wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT|wxTOP + wxALIGN_CENTER_VERTICAL|wxLEFT 7 1 @@ -3232,7 +3232,7 @@ 5 1 1 - wxALIGN_CENTER_VERTICAL|wxALL + wxEXPAND 7 1 @@ -3301,7 +3301,7 @@ 5 1 0 - wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT + wxALIGN_CENTER_VERTICAL|wxLEFT 8 1 @@ -3366,7 +3366,7 @@ 5 1 1 - wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL + wxEXPAND 8 1 @@ -3434,7 +3434,7 @@ 5 1 2 - wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT + wxALIGN_CENTER_VERTICAL|wxRIGHT 8 1 diff --git a/pcbnew/zone_manager/panel_zone_properties_base.h b/pcbnew/zone_manager/panel_zone_properties_base.h index fdf640ea68..16c2b4005b 100644 --- a/pcbnew/zone_manager/panel_zone_properties_base.h +++ b/pcbnew/zone_manager/panel_zone_properties_base.h @@ -33,81 +33,82 @@ /////////////////////////////////////////////////////////////////////////////// class PANEL_ZONE_PROPERTIES_BASE : public wxPanel { -private: -protected: - enum - { - EDIT_ZONE_NAME = 1000, - ID_M_CORNERSMOOTHINGCTRL, - ID_CORNER_SMOOTHING, - ID_M_PADINZONEOPT, - wxID_ANTIPAD_SIZE, - wxID_COPPER_BRIDGE_VALUE - }; + private: - wxStaticText* m_zoneNameLabel; - wxTextCtrl* m_tcZoneName; - wxCheckBox* m_cbLocked; - wxStaticText* m_staticTextStyle; - wxChoice* m_OutlineDisplayCtrl; - wxStaticText* m_stBorderHatchPitchText; - wxTextCtrl* m_outlineHatchPitchCtrl; - wxStaticText* m_outlineHatchUnits; - wxStaticLine* m_staticline4; - wxStaticText* m_staticTextSmoothing; - wxChoice* m_cornerSmoothingChoice; - wxStaticText* m_cornerRadiusLabel; - wxTextCtrl* m_cornerRadiusCtrl; - wxStaticText* m_cornerRadiusUnits; - wxStaticText* m_clearanceLabel; - wxTextCtrl* m_clearanceCtrl; - wxStaticText* m_clearanceUnits; - wxStaticText* m_minWidthLabel; - wxTextCtrl* m_minWidthCtrl; - wxStaticText* m_minWidthUnits; - wxStaticLine* m_staticline2; - wxStaticText* m_connectionLabel; - wxChoice* m_PadInZoneOpt; - wxStaticText* m_antipadLabel; - wxTextCtrl* m_antipadCtrl; - wxStaticText* m_antipadUnits; - wxStaticText* m_spokeWidthLabel; - wxTextCtrl* m_spokeWidthCtrl; - wxStaticText* m_spokeWidthUnits; - wxStaticText* m_staticTextGridFillType; - wxChoice* m_GridStyleCtrl; - wxStaticText* m_staticTextGrindOrient; - wxTextCtrl* m_tcGridStyleOrientation; - wxStaticText* m_staticTextRotUnits; - wxStaticText* m_staticTextStyleThickness; - wxTextCtrl* m_tcGridStyleThickness; - wxStaticText* m_GridStyleThicknessUnits; - wxStaticText* m_staticTextGridGap; - wxTextCtrl* m_tcGridStyleGap; - wxStaticText* m_GridStyleGapUnits; - wxStaticText* m_staticTextGridSmoothingLevel; - wxSpinCtrl* m_spinCtrlSmoothLevel; - wxStaticText* m_staticTextGridSmootingVal; - wxSpinCtrlDouble* m_spinCtrlSmoothValue; - wxStaticLine* m_staticline5; - wxStaticText* m_staticText40; - wxChoice* m_cbRemoveIslands; - wxStaticText* m_islandThresholdLabel; - wxTextCtrl* m_tcIslandThreshold; - wxStaticText* m_islandThresholdUnits; + protected: + enum + { + EDIT_ZONE_NAME = 1000, + ID_M_CORNERSMOOTHINGCTRL, + ID_CORNER_SMOOTHING, + ID_M_PADINZONEOPT, + wxID_ANTIPAD_SIZE, + wxID_COPPER_BRIDGE_VALUE + }; - // Virtual event handlers, override them in your derived class - virtual void OnUpdateUI( wxUpdateUIEvent& event ) { event.Skip(); } - virtual void OnZoneNameChanged( wxCommandEvent& event ) { event.Skip(); } - virtual void OnStyleSelection( wxCommandEvent& event ) { event.Skip(); } - virtual void OnRemoveIslandsSelection( wxCommandEvent& event ) { event.Skip(); } + wxStaticText* m_zoneNameLabel; + wxTextCtrl* m_tcZoneName; + wxCheckBox* m_cbLocked; + wxStaticText* m_staticTextStyle; + wxChoice* m_OutlineDisplayCtrl; + wxStaticText* m_stBorderHatchPitchText; + wxTextCtrl* m_outlineHatchPitchCtrl; + wxStaticText* m_outlineHatchUnits; + wxStaticLine* m_staticline4; + wxStaticText* m_staticTextSmoothing; + wxChoice* m_cornerSmoothingChoice; + wxStaticText* m_cornerRadiusLabel; + wxTextCtrl* m_cornerRadiusCtrl; + wxStaticText* m_cornerRadiusUnits; + wxStaticText* m_clearanceLabel; + wxTextCtrl* m_clearanceCtrl; + wxStaticText* m_clearanceUnits; + wxStaticText* m_minWidthLabel; + wxTextCtrl* m_minWidthCtrl; + wxStaticText* m_minWidthUnits; + wxStaticLine* m_staticline2; + wxStaticText* m_connectionLabel; + wxChoice* m_PadInZoneOpt; + wxStaticText* m_antipadLabel; + wxTextCtrl* m_antipadCtrl; + wxStaticText* m_antipadUnits; + wxStaticText* m_spokeWidthLabel; + wxTextCtrl* m_spokeWidthCtrl; + wxStaticText* m_spokeWidthUnits; + wxStaticText* m_staticTextGridFillType; + wxChoice* m_GridStyleCtrl; + wxStaticText* m_staticTextGrindOrient; + wxTextCtrl* m_tcGridStyleOrientation; + wxStaticText* m_staticTextRotUnits; + wxStaticText* m_staticTextStyleThickness; + wxTextCtrl* m_tcGridStyleThickness; + wxStaticText* m_GridStyleThicknessUnits; + wxStaticText* m_staticTextGridGap; + wxTextCtrl* m_tcGridStyleGap; + wxStaticText* m_GridStyleGapUnits; + wxStaticText* m_staticTextGridSmoothingLevel; + wxSpinCtrl* m_spinCtrlSmoothLevel; + wxStaticText* m_staticTextGridSmootingVal; + wxSpinCtrlDouble* m_spinCtrlSmoothValue; + wxStaticLine* m_staticline5; + wxStaticText* m_staticText40; + wxChoice* m_cbRemoveIslands; + wxStaticText* m_islandThresholdLabel; + wxTextCtrl* m_tcIslandThreshold; + wxStaticText* m_islandThresholdUnits; + + // Virtual event handlers, override them in your derived class + virtual void OnUpdateUI( wxUpdateUIEvent& event ) { event.Skip(); } + virtual void OnZoneNameChanged( wxCommandEvent& event ) { event.Skip(); } + virtual void OnStyleSelection( wxCommandEvent& event ) { event.Skip(); } + virtual void OnRemoveIslandsSelection( 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 ); + 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(); - ~PANEL_ZONE_PROPERTIES_BASE(); }; +