diff --git a/pcbnew/block.cpp b/pcbnew/block.cpp
index 42b1ded3b2..0f6c5c9889 100644
--- a/pcbnew/block.cpp
+++ b/pcbnew/block.cpp
@@ -49,6 +49,7 @@ static bool blockIncludeItemsOnTechLayers = true;
static bool blockIncludeBoardOutlineLayer = true;
static bool blockIncludePcbTexts = true;
static bool blockDrawItems = true;
+static bool blockIncludeItemsOnInvisibleLayers = false;
/************************************/
/* class DIALOG_BLOCK_OPTIONS */
@@ -118,6 +119,7 @@ DIALOG_BLOCK_OPTIONS::DIALOG_BLOCK_OPTIONS( PCB_BASE_FRAME* aParent, const wxStr
m_Include_Edges_Items->SetValue( blockIncludeBoardOutlineLayer );
m_Include_PcbTextes->SetValue( blockIncludePcbTexts );
m_DrawBlockItems->SetValue( blockDrawItems );
+ m_checkBoxIncludeInvisible->SetValue( blockIncludeItemsOnInvisibleLayers );
m_sdbSizer1OK->SetDefault();
SetFocus();
GetSizer()->SetSizeHints( this );
@@ -135,6 +137,7 @@ void DIALOG_BLOCK_OPTIONS::ExecuteCommand( wxCommandEvent& event )
blockIncludeBoardOutlineLayer = m_Include_Edges_Items->GetValue();
blockIncludePcbTexts = m_Include_PcbTextes->GetValue();
blockDrawItems = m_DrawBlockItems->GetValue();
+ blockIncludeItemsOnInvisibleLayers = m_checkBoxIncludeInvisible->GetValue();
EndModal( 0 );
}
@@ -297,8 +300,6 @@ bool PCB_EDIT_FRAME::HandleBlockEnd( wxDC* DC )
// Exit if no items found
if( !GetScreen()->m_BlockLocate.GetCount() )
cancelCmd = true;
-// else
-// nextcmd = true;
}
}
@@ -399,12 +400,14 @@ void PCB_EDIT_FRAME::Block_SelectItems()
int layer = module->GetLayer();
if( module->HitTest( GetScreen()->m_BlockLocate )
- && ( !module->IsLocked() || blockIncludeLockedModules )
- && m_Pcb->IsModuleLayerVisible( layer ) )
+ && ( !module->IsLocked() || blockIncludeLockedModules ) )
{
- picker.m_PickedItem = module;
- picker.m_PickedItemType = module->Type();
- itemsList->PushItem( picker );
+ if( blockIncludeItemsOnInvisibleLayers || m_Pcb->IsModuleLayerVisible( layer ) )
+ {
+ picker.m_PickedItem = module;
+ picker.m_PickedItemType = module->Type();
+ itemsList->PushItem( picker );
+ }
}
}
}
@@ -415,12 +418,14 @@ void PCB_EDIT_FRAME::Block_SelectItems()
for( TRACK* pt_segm = m_Pcb->m_Track; pt_segm != NULL;
pt_segm = pt_segm->Next() )
{
- if( pt_segm->HitTest( GetScreen()->m_BlockLocate )
- && m_Pcb->IsLayerVisible( pt_segm->GetLayer() ) )
+ if( pt_segm->HitTest( GetScreen()->m_BlockLocate ) )
{
- picker.m_PickedItem = pt_segm;
- picker.m_PickedItemType = pt_segm->Type();
- itemsList->PushItem( picker );
+ if( blockIncludeItemsOnInvisibleLayers || m_Pcb->IsLayerVisible( pt_segm->GetLayer() ) )
+ {
+ picker.m_PickedItem = pt_segm;
+ picker.m_PickedItemType = pt_segm->Type();
+ itemsList->PushItem( picker );
+ }
}
}
}
@@ -437,13 +442,13 @@ void PCB_EDIT_FRAME::Block_SelectItems()
for( BOARD_ITEM* PtStruct = m_Pcb->m_Drawings; PtStruct != NULL;
PtStruct = PtStruct->Next() )
{
- if( !m_Pcb->IsLayerVisible( PtStruct->GetLayer() ) )
+ if( !m_Pcb->IsLayerVisible( PtStruct->GetLayer() ) && ! blockIncludeItemsOnInvisibleLayers)
continue;
bool select_me = false;
switch( PtStruct->Type() )
{
case TYPE_DRAWSEGMENT:
- if( (g_TabOneLayerMask[PtStruct->GetLayer()] & masque_layer) == 0 )
+ if( (g_TabOneLayerMask[PtStruct->GetLayer()] & masque_layer) == 0 )
break;
if( !PtStruct->HitTest( GetScreen()->m_BlockLocate ) )
@@ -461,7 +466,7 @@ void PCB_EDIT_FRAME::Block_SelectItems()
break;
case TYPE_MIRE:
- if( ( g_TabOneLayerMask[PtStruct->GetLayer()] & masque_layer ) == 0 )
+ if( ( g_TabOneLayerMask[PtStruct->GetLayer()] & masque_layer ) == 0 )
break;
if( !PtStruct->HitTest( GetScreen()->m_BlockLocate ) )
@@ -493,38 +498,19 @@ void PCB_EDIT_FRAME::Block_SelectItems()
// Add zones
if( blockIncludeZones )
{
-#if 0
-
- /* This section can creates problems if selected:
- * m_Pcb->m_Zone can have a *lot* of items (100 000 is easily possible)
- * so it is not selected (and TODO: will be removed, one day)
- */
- for( SEGZONE* pt_segm = m_Pcb->m_Zone; pt_segm != NULL;
- pt_segm = pt_segm->Next() )
- {
- /* Segments used in Zone filling selection */
-
- if( pt_segm->HitTest( GetScreen()->m_BlockLocate )
- && m_Pcb->IsLayerVisible( pt_segm->GetLayer() ) )
- {
- picker.m_PickedItem = pt_segm;
- picker.m_PickedItemType = pt_segm->Type();
- itemsList->PushItem( picker );
- }
- }
-
-#endif
for( int ii = 0; ii < m_Pcb->GetAreaCount(); ii++ )
{
ZONE_CONTAINER* area = m_Pcb->GetArea( ii );
- if( area->HitTest( GetScreen()->m_BlockLocate )
- && m_Pcb->IsLayerVisible( area->GetLayer() ) )
+ if( area->HitTest( GetScreen()->m_BlockLocate ) )
{
- BOARD_ITEM* zone_c = (BOARD_ITEM*) area;
- picker.m_PickedItem = zone_c;
- picker.m_PickedItemType = zone_c->Type();
- itemsList->PushItem( picker );
+ if( blockIncludeItemsOnInvisibleLayers || m_Pcb->IsLayerVisible( area->GetLayer() ) )
+ {
+ BOARD_ITEM* zone_c = (BOARD_ITEM*) area;
+ picker.m_PickedItem = zone_c;
+ picker.m_PickedItemType = zone_c->Type();
+ itemsList->PushItem( picker );
+ }
}
}
}
diff --git a/pcbnew/dialogs/dialog_block_options_base.cpp b/pcbnew/dialogs/dialog_block_options_base.cpp
index 737ae273db..ff5d1afd49 100644
--- a/pcbnew/dialogs/dialog_block_options_base.cpp
+++ b/pcbnew/dialogs/dialog_block_options_base.cpp
@@ -1,93 +1,102 @@
-///////////////////////////////////////////////////////////////////////////
-// C++ code generated with wxFormBuilder (version Nov 18 2010)
-// http://www.wxformbuilder.org/
-//
-// PLEASE DO "NOT" EDIT THIS FILE!
-///////////////////////////////////////////////////////////////////////////
-
-#include "dialog_block_options_base.h"
-
-///////////////////////////////////////////////////////////////////////////
-
-DIALOG_BLOCK_OPTIONS_BASE::DIALOG_BLOCK_OPTIONS_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
-{
- this->SetSizeHints( wxDefaultSize, wxDefaultSize );
-
- wxBoxSizer* bSizerMain;
- bSizerMain = new wxBoxSizer( wxVERTICAL );
-
- wxStaticBoxSizer* sbSizer1;
- sbSizer1 = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Options") ), wxVERTICAL );
-
- wxGridSizer* gSizer1;
- gSizer1 = new wxGridSizer( 4, 2, 0, 0 );
-
- m_Include_Modules = new wxCheckBox( this, wxID_ANY, _("Include modules"), wxDefaultPosition, wxDefaultSize, 0 );
- gSizer1->Add( m_Include_Modules, 0, wxALL, 5 );
-
- m_Include_PcbTextes = new wxCheckBox( this, wxID_ANY, _("Include text items"), wxDefaultPosition, wxDefaultSize, 0 );
- gSizer1->Add( m_Include_PcbTextes, 0, wxALL, 5 );
-
- m_IncludeLockedModules = new wxCheckBox( this, wxID_ANY, _("Include locked modules"), wxDefaultPosition, wxDefaultSize, 0 );
- gSizer1->Add( m_IncludeLockedModules, 0, wxALL, 5 );
-
- m_Include_Draw_Items = new wxCheckBox( this, wxID_ANY, _("Include drawings"), wxDefaultPosition, wxDefaultSize, 0 );
- gSizer1->Add( m_Include_Draw_Items, 0, wxALL, 5 );
-
- m_Include_Tracks = new wxCheckBox( this, wxID_ANY, _("Include tracks"), wxDefaultPosition, wxDefaultSize, 0 );
- gSizer1->Add( m_Include_Tracks, 0, wxALL, 5 );
-
- m_Include_Edges_Items = new wxCheckBox( this, wxID_ANY, _("Include board outline layer"), wxDefaultPosition, wxDefaultSize, 0 );
- gSizer1->Add( m_Include_Edges_Items, 0, wxALL, 5 );
-
- m_Include_Zones = new wxCheckBox( this, wxID_ANY, _("Include zones"), wxDefaultPosition, wxDefaultSize, 0 );
- gSizer1->Add( m_Include_Zones, 0, wxALL, 5 );
-
- m_DrawBlockItems = new wxCheckBox( this, wxID_ANY, _("Draw selected items while moving"), wxDefaultPosition, wxDefaultSize, 0 );
- gSizer1->Add( m_DrawBlockItems, 0, wxALL, 5 );
-
- sbSizer1->Add( gSizer1, 0, wxEXPAND, 5 );
-
- bSizerMain->Add( sbSizer1, 1, wxALL|wxEXPAND, 5 );
-
- m_sdbSizer1 = new wxStdDialogButtonSizer();
- m_sdbSizer1OK = new wxButton( this, wxID_OK );
- m_sdbSizer1->AddButton( m_sdbSizer1OK );
- m_sdbSizer1Cancel = new wxButton( this, wxID_CANCEL );
- m_sdbSizer1->AddButton( m_sdbSizer1Cancel );
- m_sdbSizer1->Realize();
- bSizerMain->Add( m_sdbSizer1, 0, wxALIGN_RIGHT|wxALL, 5 );
-
- this->SetSizer( bSizerMain );
- this->Layout();
-
- this->Centre( wxBOTH );
-
- // Connect Events
- m_Include_Modules->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::checkBoxClicked ), NULL, this );
- m_Include_PcbTextes->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::checkBoxClicked ), NULL, this );
- m_IncludeLockedModules->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::checkBoxClicked ), NULL, this );
- m_Include_Draw_Items->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::checkBoxClicked ), NULL, this );
- m_Include_Tracks->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::checkBoxClicked ), NULL, this );
- m_Include_Edges_Items->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::checkBoxClicked ), NULL, this );
- m_Include_Zones->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::checkBoxClicked ), NULL, this );
- m_DrawBlockItems->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::checkBoxClicked ), NULL, this );
- m_sdbSizer1Cancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::OnCancel ), NULL, this );
- m_sdbSizer1OK->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::ExecuteCommand ), NULL, this );
-}
-
-DIALOG_BLOCK_OPTIONS_BASE::~DIALOG_BLOCK_OPTIONS_BASE()
-{
- // Disconnect Events
- m_Include_Modules->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::checkBoxClicked ), NULL, this );
- m_Include_PcbTextes->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::checkBoxClicked ), NULL, this );
- m_IncludeLockedModules->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::checkBoxClicked ), NULL, this );
- m_Include_Draw_Items->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::checkBoxClicked ), NULL, this );
- m_Include_Tracks->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::checkBoxClicked ), NULL, this );
- m_Include_Edges_Items->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::checkBoxClicked ), NULL, this );
- m_Include_Zones->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::checkBoxClicked ), NULL, this );
- m_DrawBlockItems->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::checkBoxClicked ), NULL, this );
- m_sdbSizer1Cancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::OnCancel ), NULL, this );
- m_sdbSizer1OK->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::ExecuteCommand ), NULL, this );
-
-}
+///////////////////////////////////////////////////////////////////////////
+// C++ code generated with wxFormBuilder (version Nov 17 2010)
+// http://www.wxformbuilder.org/
+//
+// PLEASE DO "NOT" EDIT THIS FILE!
+///////////////////////////////////////////////////////////////////////////
+
+#include "dialog_block_options_base.h"
+
+///////////////////////////////////////////////////////////////////////////
+
+DIALOG_BLOCK_OPTIONS_BASE::DIALOG_BLOCK_OPTIONS_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
+{
+ this->SetSizeHints( wxDefaultSize, wxDefaultSize );
+
+ wxBoxSizer* bSizerMain;
+ bSizerMain = new wxBoxSizer( wxVERTICAL );
+
+ wxStaticBoxSizer* sbSizer1;
+ sbSizer1 = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Options") ), wxVERTICAL );
+
+ wxGridSizer* gSizer1;
+ gSizer1 = new wxGridSizer( 4, 2, 0, 0 );
+
+ m_Include_Modules = new wxCheckBox( this, wxID_ANY, _("Include modules"), wxDefaultPosition, wxDefaultSize, 0 );
+ gSizer1->Add( m_Include_Modules, 0, wxALL, 5 );
+
+ m_Include_PcbTextes = new wxCheckBox( this, wxID_ANY, _("Include text items"), wxDefaultPosition, wxDefaultSize, 0 );
+ m_Include_PcbTextes->SetValue(true);
+ gSizer1->Add( m_Include_PcbTextes, 0, wxALL, 5 );
+
+ m_IncludeLockedModules = new wxCheckBox( this, wxID_ANY, _("Include locked modules"), wxDefaultPosition, wxDefaultSize, 0 );
+ gSizer1->Add( m_IncludeLockedModules, 0, wxALL, 5 );
+
+ m_Include_Draw_Items = new wxCheckBox( this, wxID_ANY, _("Include drawings"), wxDefaultPosition, wxDefaultSize, 0 );
+ gSizer1->Add( m_Include_Draw_Items, 0, wxALL, 5 );
+
+ m_Include_Tracks = new wxCheckBox( this, wxID_ANY, _("Include tracks"), wxDefaultPosition, wxDefaultSize, 0 );
+ gSizer1->Add( m_Include_Tracks, 0, wxALL, 5 );
+
+ m_Include_Edges_Items = new wxCheckBox( this, wxID_ANY, _("Include board outline layer"), wxDefaultPosition, wxDefaultSize, 0 );
+ gSizer1->Add( m_Include_Edges_Items, 0, wxALL, 5 );
+
+ m_Include_Zones = new wxCheckBox( this, wxID_ANY, _("Include zones"), wxDefaultPosition, wxDefaultSize, 0 );
+ gSizer1->Add( m_Include_Zones, 0, wxALL, 5 );
+
+ m_DrawBlockItems = new wxCheckBox( this, wxID_ANY, _("Draw selected items while moving"), wxDefaultPosition, wxDefaultSize, 0 );
+ gSizer1->Add( m_DrawBlockItems, 0, wxALL, 5 );
+
+ sbSizer1->Add( gSizer1, 0, wxEXPAND, 5 );
+
+ m_staticline1 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
+ sbSizer1->Add( m_staticline1, 0, wxEXPAND | wxALL, 5 );
+
+ m_checkBoxIncludeInvisible = new wxCheckBox( this, wxID_ANY, _("Include items on invisible layers"), wxDefaultPosition, wxDefaultSize, 0 );
+ sbSizer1->Add( m_checkBoxIncludeInvisible, 0, wxALL, 5 );
+
+ bSizerMain->Add( sbSizer1, 1, wxALL|wxEXPAND, 5 );
+
+ m_sdbSizer1 = new wxStdDialogButtonSizer();
+ m_sdbSizer1OK = new wxButton( this, wxID_OK );
+ m_sdbSizer1->AddButton( m_sdbSizer1OK );
+ m_sdbSizer1Cancel = new wxButton( this, wxID_CANCEL );
+ m_sdbSizer1->AddButton( m_sdbSizer1Cancel );
+ m_sdbSizer1->Realize();
+ bSizerMain->Add( m_sdbSizer1, 0, wxALIGN_RIGHT|wxALL, 5 );
+
+ this->SetSizer( bSizerMain );
+ this->Layout();
+
+ this->Centre( wxBOTH );
+
+ // Connect Events
+ m_Include_Modules->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::checkBoxClicked ), NULL, this );
+ m_Include_PcbTextes->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::checkBoxClicked ), NULL, this );
+ m_IncludeLockedModules->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::checkBoxClicked ), NULL, this );
+ m_Include_Draw_Items->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::checkBoxClicked ), NULL, this );
+ m_Include_Tracks->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::checkBoxClicked ), NULL, this );
+ m_Include_Edges_Items->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::checkBoxClicked ), NULL, this );
+ m_Include_Zones->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::checkBoxClicked ), NULL, this );
+ m_DrawBlockItems->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::checkBoxClicked ), NULL, this );
+ m_checkBoxIncludeInvisible->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::checkBoxClicked ), NULL, this );
+ m_sdbSizer1Cancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::OnCancel ), NULL, this );
+ m_sdbSizer1OK->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::ExecuteCommand ), NULL, this );
+}
+
+DIALOG_BLOCK_OPTIONS_BASE::~DIALOG_BLOCK_OPTIONS_BASE()
+{
+ // Disconnect Events
+ m_Include_Modules->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::checkBoxClicked ), NULL, this );
+ m_Include_PcbTextes->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::checkBoxClicked ), NULL, this );
+ m_IncludeLockedModules->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::checkBoxClicked ), NULL, this );
+ m_Include_Draw_Items->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::checkBoxClicked ), NULL, this );
+ m_Include_Tracks->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::checkBoxClicked ), NULL, this );
+ m_Include_Edges_Items->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::checkBoxClicked ), NULL, this );
+ m_Include_Zones->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::checkBoxClicked ), NULL, this );
+ m_DrawBlockItems->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::checkBoxClicked ), NULL, this );
+ m_checkBoxIncludeInvisible->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::checkBoxClicked ), NULL, this );
+ m_sdbSizer1Cancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::OnCancel ), NULL, this );
+ m_sdbSizer1OK->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_BLOCK_OPTIONS_BASE::ExecuteCommand ), NULL, this );
+
+}
diff --git a/pcbnew/dialogs/dialog_block_options_base.fbp b/pcbnew/dialogs/dialog_block_options_base.fbp
index 232453c3c2..afad8ab928 100644
--- a/pcbnew/dialogs/dialog_block_options_base.fbp
+++ b/pcbnew/dialogs/dialog_block_options_base.fbp
@@ -1,853 +1,1020 @@
-
-
-
-
-
+
+
+
+
+
+ C++
+ 1
+ source_name
+ 0
+ UTF-8
+ connect
+ dialog_block_options_base
+ 1000
+ none
+ 1
+ dialog_block_options_base
+
+ .
+
+ 1
+ 1
+ 0
+ 0
+
+ 1
+ 1
+ 1
+ 1
+ 0
+
+
+
+ 1
+ wxBOTH
+ 0
+ 1
+
+ 1
+ 0
+ Dock
+ 0
+ Left
+ 1
+ impl_virtual
+
+
+ 1
+
+ 0
+ 0
+ wxID_ANY
+
+ 0
+
+ 0
+
+ 1
+ DIALOG_BLOCK_OPTIONS_BASE
+ 1
+
+
+ 1
+
+
+ Resizable
+
+ 1
+ 397,226
+ wxDEFAULT_DIALOG_STYLE
+
+
+ 0
+
+
+ wxFILTER_NONE
+ wxDefaultValidator
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ bSizerMain
+ wxVERTICAL
+ none
+
+ 5
+ wxALL|wxEXPAND
+ 1
+
+ wxID_ANY
+ Options
+
+ sbSizer1
+ wxVERTICAL
+ none
+
+
+ 5
+ wxEXPAND
+ 0
+
+ 2
+ 0
+
+ gSizer1
+ none
+ 4
+ 0
+
+ 5
+ wxALL
+ 0
+
+ 1
+ 1
+ 1
+ 1
+
+
+
+ 1
+ 0
+ 0
+ 1
+
+ 1
+ 0
+ Dock
+ 0
+ Left
+ 1
+
+ 1
+
+ 0
+ 0
+ wxID_ANY
+ Include modules
+
+ 0
+
+ 0
+
+ 1
+ m_Include_Modules
+ 1
+
+
+ protected
+ 1
+
+
+ Resizable
+
+ 1
+
+
+
+ 0
+
+
+ wxFILTER_NONE
+ wxDefaultValidator
+
+
+
+
+
+ checkBoxClicked
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 5
+ wxALL
+ 0
+
+ 1
+ 1
+ 1
+ 1
+
+
+
+ 1
+ 0
+ 1
+ 1
+
+ 1
+ 0
+ Dock
+ 0
+ Left
+ 1
+
+ 1
+
+ 0
+ 0
+ wxID_ANY
+ Include text items
+
+ 0
+
+ 0
+
+ 1
+ m_Include_PcbTextes
+ 1
+
+
+ protected
+ 1
+
+
+ Resizable
+
+ 1
+
+
+
+ 0
+
+
+ wxFILTER_NONE
+ wxDefaultValidator
+
+
+
+
+
+ checkBoxClicked
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 5
+ wxALL
+ 0
+
+ 1
+ 1
+ 1
+ 1
+
+
+
+ 1
+ 0
+ 0
+ 1
+
+ 1
+ 0
+ Dock
+ 0
+ Left
+ 1
+
+ 1
+
+ 0
+ 0
+ wxID_ANY
+ Include locked modules
+
+ 0
+
+ 0
+
+ 1
+ m_IncludeLockedModules
+ 1
+
+
+ protected
+ 1
+
+
+ Resizable
+
+ 1
+
+
+
+ 0
+
+
+ wxFILTER_NONE
+ wxDefaultValidator
+
+
+
+
+
+ checkBoxClicked
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 5
+ wxALL
+ 0
+
+ 1
+ 1
+ 1
+ 1
+
+
+
+ 1
+ 0
+ 0
+ 1
+
+ 1
+ 0
+ Dock
+ 0
+ Left
+ 1
+
+ 1
+
+ 0
+ 0
+ wxID_ANY
+ Include drawings
+
+ 0
+
+ 0
+
+ 1
+ m_Include_Draw_Items
+ 1
+
+
+ protected
+ 1
+
+
+ Resizable
+
+ 1
+
+
+
+ 0
+
+
+ wxFILTER_NONE
+ wxDefaultValidator
+
+
+
+
+
+ checkBoxClicked
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 5
+ wxALL
+ 0
+
+ 1
+ 1
+ 1
+ 1
+
+
+
+ 1
+ 0
+ 0
+ 1
+
+ 1
+ 0
+ Dock
+ 0
+ Left
+ 1
+
+ 1
+
+ 0
+ 0
+ wxID_ANY
+ Include tracks
+
+ 0
+
+ 0
+
+ 1
+ m_Include_Tracks
+ 1
+
+
+ protected
+ 1
+
+
+ Resizable
+
+ 1
+
+
+
+ 0
+
+
+ wxFILTER_NONE
+ wxDefaultValidator
+
+
+
+
+
+ checkBoxClicked
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 5
+ wxALL
+ 0
+
+ 1
+ 1
+ 1
+ 1
+
+
+
+ 1
+ 0
+ 0
+ 1
+
+ 1
+ 0
+ Dock
+ 0
+ Left
+ 1
+
+ 1
+
+ 0
+ 0
+ wxID_ANY
+ Include board outline layer
+
+ 0
+
+ 0
+
+ 1
+ m_Include_Edges_Items
+ 1
+
+
+ protected
+ 1
+
+
+ Resizable
+
+ 1
+
+
+
+ 0
+
+
+ wxFILTER_NONE
+ wxDefaultValidator
+
+
+
+
+
+ checkBoxClicked
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 5
+ wxALL
+ 0
+
+ 1
+ 1
+ 1
+ 1
+
+
+
+ 1
+ 0
+ 0
+ 1
+
+ 1
+ 0
+ Dock
+ 0
+ Left
+ 1
+
+ 1
+
+ 0
+ 0
+ wxID_ANY
+ Include zones
+
+ 0
+
+ 0
+
+ 1
+ m_Include_Zones
+ 1
+
+
+ protected
+ 1
+
+
+ Resizable
+
+ 1
+
+
+
+ 0
+
+
+ wxFILTER_NONE
+ wxDefaultValidator
+
+
+
+
+
+ checkBoxClicked
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 5
+ wxALL
+ 0
+
+ 1
+ 1
+ 1
+ 1
+
+
+
+ 1
+ 0
+ 0
+ 1
+
+ 1
+ 0
+ Dock
+ 0
+ Left
+ 1
+
+ 1
+
+ 0
+ 0
+ wxID_ANY
+ Draw selected items while moving
+
+ 0
+
+ 0
+
+ 1
+ m_DrawBlockItems
+ 1
+
+
+ protected
+ 1
+
+
+ Resizable
+
+ 1
+
+
+
+ 0
+
+
+ wxFILTER_NONE
+ wxDefaultValidator
+
+
+
+
+
+ checkBoxClicked
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 5
+ wxEXPAND | wxALL
+ 0
+
+ 1
+ 1
+ 1
+ 1
+
+
+
+ 1
+ 0
+ 1
+
+ 1
+ 0
+ Dock
+ 0
+ Left
+ 1
+
+ 1
+
+ 0
+ 0
+ wxID_ANY
+
+ 0
+
+ 0
+
+ 1
+ m_staticline1
+ 1
+
+
+ protected
+ 1
+
+
+ Resizable
+
+ 1
+
+ wxLI_HORIZONTAL
+
+ 0
+
+
+ wxFILTER_NONE
+ wxDefaultValidator
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 5
+ wxALL
+ 0
+
+ 1
+ 1
+ 1
+ 1
+
+
+
+ 1
+ 0
+ 0
+ 1
+
+ 1
+ 0
+ Dock
+ 0
+ Left
+ 1
+
+ 1
+
+ 0
+ 0
+ wxID_ANY
+ Include items on invisible layers
+
+ 0
+
+ 0
+
+ 1
+ m_checkBoxIncludeInvisible
+ 1
+
+
+ protected
+ 1
+
+
+ Resizable
+
+ 1
+
+
+
+ 0
+
+
+ wxFILTER_NONE
+ wxDefaultValidator
+
+
+
+
+
+ checkBoxClicked
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 5
+ wxALIGN_RIGHT|wxALL
+ 0
+
+ 0
+ 1
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+
+ m_sdbSizer1
+ protected
+
+ OnCancel
+
+
+
+ ExecuteCommand
+
+
+
+
+
+
+
+
diff --git a/pcbnew/dialogs/dialog_block_options_base.h b/pcbnew/dialogs/dialog_block_options_base.h
index 59134578d4..2d2dff2abc 100644
--- a/pcbnew/dialogs/dialog_block_options_base.h
+++ b/pcbnew/dialogs/dialog_block_options_base.h
@@ -1,60 +1,63 @@
-///////////////////////////////////////////////////////////////////////////
-// C++ code generated with wxFormBuilder (version Nov 18 2010)
-// http://www.wxformbuilder.org/
-//
-// PLEASE DO "NOT" EDIT THIS FILE!
-///////////////////////////////////////////////////////////////////////////
-
-#ifndef __dialog_block_options_base__
-#define __dialog_block_options_base__
-
-#include
-
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-///////////////////////////////////////////////////////////////////////////
-
-
-///////////////////////////////////////////////////////////////////////////////
-/// Class DIALOG_BLOCK_OPTIONS_BASE
-///////////////////////////////////////////////////////////////////////////////
-class DIALOG_BLOCK_OPTIONS_BASE : public wxDialog
-{
- private:
-
- protected:
- wxCheckBox* m_Include_Modules;
- wxCheckBox* m_Include_PcbTextes;
- wxCheckBox* m_IncludeLockedModules;
- wxCheckBox* m_Include_Draw_Items;
- wxCheckBox* m_Include_Tracks;
- wxCheckBox* m_Include_Edges_Items;
- wxCheckBox* m_Include_Zones;
- wxCheckBox* m_DrawBlockItems;
- wxStdDialogButtonSizer* m_sdbSizer1;
- wxButton* m_sdbSizer1OK;
- wxButton* m_sdbSizer1Cancel;
-
- // Virtual event handlers, overide them in your derived class
- virtual void checkBoxClicked( wxCommandEvent& event ) { event.Skip(); }
- virtual void OnCancel( wxCommandEvent& event ) { event.Skip(); }
- virtual void ExecuteCommand( wxCommandEvent& event ) { event.Skip(); }
-
-
- public:
-
- DIALOG_BLOCK_OPTIONS_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 397,171 ), long style = wxDEFAULT_DIALOG_STYLE );
- ~DIALOG_BLOCK_OPTIONS_BASE();
-
-};
-
-#endif //__dialog_block_options_base__
+///////////////////////////////////////////////////////////////////////////
+// C++ code generated with wxFormBuilder (version Nov 17 2010)
+// http://www.wxformbuilder.org/
+//
+// PLEASE DO "NOT" EDIT THIS FILE!
+///////////////////////////////////////////////////////////////////////////
+
+#ifndef __dialog_block_options_base__
+#define __dialog_block_options_base__
+
+#include
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+///////////////////////////////////////////////////////////////////////////
+
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class DIALOG_BLOCK_OPTIONS_BASE
+///////////////////////////////////////////////////////////////////////////////
+class DIALOG_BLOCK_OPTIONS_BASE : public wxDialog
+{
+ private:
+
+ protected:
+ wxCheckBox* m_Include_Modules;
+ wxCheckBox* m_Include_PcbTextes;
+ wxCheckBox* m_IncludeLockedModules;
+ wxCheckBox* m_Include_Draw_Items;
+ wxCheckBox* m_Include_Tracks;
+ wxCheckBox* m_Include_Edges_Items;
+ wxCheckBox* m_Include_Zones;
+ wxCheckBox* m_DrawBlockItems;
+ wxStaticLine* m_staticline1;
+ wxCheckBox* m_checkBoxIncludeInvisible;
+ wxStdDialogButtonSizer* m_sdbSizer1;
+ wxButton* m_sdbSizer1OK;
+ wxButton* m_sdbSizer1Cancel;
+
+ // Virtual event handlers, overide them in your derived class
+ virtual void checkBoxClicked( wxCommandEvent& event ) { event.Skip(); }
+ virtual void OnCancel( wxCommandEvent& event ) { event.Skip(); }
+ virtual void ExecuteCommand( wxCommandEvent& event ) { event.Skip(); }
+
+
+ public:
+
+ DIALOG_BLOCK_OPTIONS_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 397,226 ), long style = wxDEFAULT_DIALOG_STYLE );
+ ~DIALOG_BLOCK_OPTIONS_BASE();
+
+};
+
+#endif //__dialog_block_options_base__
diff --git a/pcbnew/pcbframe.cpp b/pcbnew/pcbframe.cpp
index 7d2dd2a4d4..5a04af4c74 100644
--- a/pcbnew/pcbframe.cpp
+++ b/pcbnew/pcbframe.cpp
@@ -228,6 +228,7 @@ BEGIN_EVENT_TABLE( PCB_EDIT_FRAME, PCB_BASE_FRAME )
EVT_UPDATE_UI( ID_TOOLBARH_PCB_SELECT_LAYER, PCB_EDIT_FRAME::OnUpdateLayerSelectBox )
EVT_UPDATE_UI( ID_TB_OPTIONS_DRC_OFF, PCB_EDIT_FRAME::OnUpdateDrcEnable )
EVT_UPDATE_UI( ID_TB_OPTIONS_SHOW_RATSNEST, PCB_EDIT_FRAME::OnUpdateShowBoardRatsnest )
+ EVT_UPDATE_UI( ID_TB_OPTIONS_SHOW_MODULE_RATSNEST, PCB_EDIT_FRAME::OnUpdateShowModuleRatsnest )
EVT_UPDATE_UI( ID_TB_OPTIONS_AUTO_DEL_TRACK, PCB_EDIT_FRAME::OnUpdateAutoDeleteTrack )
EVT_UPDATE_UI( ID_TB_OPTIONS_SHOW_VIAS_SKETCH, PCB_EDIT_FRAME::OnUpdateViaDrawMode )
EVT_UPDATE_UI( ID_TB_OPTIONS_SHOW_TRACKS_SKETCH, PCB_EDIT_FRAME::OnUpdateTraceDrawMode )