Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
K
kicad-source-mirror
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Elphel
kicad-source-mirror
Commits
0785ca80
Commit
0785ca80
authored
Mar 05, 2011
by
Marco Mattila
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add visibility checking to pcbnew block operations.
parent
c2cf793f
Changes
4
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
1033 additions
and
805 deletions
+1033
-805
block.cpp
pcbnew/block.cpp
+27
-13
dialog_block_options_base.cpp
pcbnew/dialogs/dialog_block_options_base.cpp
+93
-91
dialog_block_options_base.fbp
pcbnew/dialogs/dialog_block_options_base.fbp
+853
-640
dialog_block_options_base.h
pcbnew/dialogs/dialog_block_options_base.h
+60
-61
No files found.
pcbnew/block.cpp
View file @
0785ca80
...
@@ -12,7 +12,6 @@
...
@@ -12,7 +12,6 @@
#include "pcbnew.h"
#include "pcbnew.h"
#include "wxPcbStruct.h"
#include "wxPcbStruct.h"
#include "pcbplot.h"
#include "trigo.h"
#include "trigo.h"
#include "dialog_block_options_base.h"
#include "dialog_block_options_base.h"
...
@@ -391,13 +390,17 @@ void PCB_EDIT_FRAME::Block_SelectItems()
...
@@ -391,13 +390,17 @@ void PCB_EDIT_FRAME::Block_SelectItems()
PICKED_ITEMS_LIST
*
itemsList
=
&
GetScreen
()
->
m_BlockLocate
.
m_ItemsSelection
;
PICKED_ITEMS_LIST
*
itemsList
=
&
GetScreen
()
->
m_BlockLocate
.
m_ItemsSelection
;
ITEM_PICKER
picker
(
NULL
,
UR_UNSPECIFIED
);
ITEM_PICKER
picker
(
NULL
,
UR_UNSPECIFIED
);
// Add modules
if
(
blockIncludeModules
)
if
(
blockIncludeModules
)
{
{
for
(
MODULE
*
module
=
m_Pcb
->
m_Modules
;
module
!=
NULL
;
for
(
MODULE
*
module
=
m_Pcb
->
m_Modules
;
module
!=
NULL
;
module
=
module
->
Next
()
)
module
=
module
->
Next
()
)
{
{
int
layer
=
module
->
GetLayer
();
if
(
module
->
HitTest
(
GetScreen
()
->
m_BlockLocate
)
if
(
module
->
HitTest
(
GetScreen
()
->
m_BlockLocate
)
&&
(
!
module
->
IsLocked
()
||
blockIncludeLockedModules
)
)
&&
(
!
module
->
IsLocked
()
||
blockIncludeLockedModules
)
&&
m_Pcb
->
IsModuleLayerVisible
(
layer
)
)
{
{
picker
.
m_PickedItem
=
module
;
picker
.
m_PickedItem
=
module
;
picker
.
m_PickedItemType
=
module
->
Type
();
picker
.
m_PickedItemType
=
module
->
Type
();
...
@@ -406,15 +409,15 @@ void PCB_EDIT_FRAME::Block_SelectItems()
...
@@ -406,15 +409,15 @@ void PCB_EDIT_FRAME::Block_SelectItems()
}
}
}
}
/
* Remove tracks and vias */
/
/ Add tracks and vias
if
(
blockIncludeTracks
)
if
(
blockIncludeTracks
)
{
{
for
(
TRACK
*
pt_segm
=
m_Pcb
->
m_Track
;
pt_segm
!=
NULL
;
for
(
TRACK
*
pt_segm
=
m_Pcb
->
m_Track
;
pt_segm
!=
NULL
;
pt_segm
=
pt_segm
->
Next
()
)
pt_segm
=
pt_segm
->
Next
()
)
{
{
if
(
pt_segm
->
HitTest
(
GetScreen
()
->
m_BlockLocate
)
)
if
(
pt_segm
->
HitTest
(
GetScreen
()
->
m_BlockLocate
)
&&
m_Pcb
->
IsLayerVisible
(
pt_segm
->
GetLayer
()
)
)
{
{
/* This track is in bloc: select it */
picker
.
m_PickedItem
=
pt_segm
;
picker
.
m_PickedItem
=
pt_segm
;
picker
.
m_PickedItemType
=
pt_segm
->
Type
();
picker
.
m_PickedItemType
=
pt_segm
->
Type
();
itemsList
->
PushItem
(
picker
);
itemsList
->
PushItem
(
picker
);
...
@@ -422,8 +425,9 @@ void PCB_EDIT_FRAME::Block_SelectItems()
...
@@ -422,8 +425,9 @@ void PCB_EDIT_FRAME::Block_SelectItems()
}
}
}
}
/
* Select graphic items */
/
/ Add graphic items
masque_layer
=
EDGE_LAYER
;
masque_layer
=
EDGE_LAYER
;
if
(
blockIncludeItemsOnTechLayers
)
if
(
blockIncludeItemsOnTechLayers
)
masque_layer
=
ALL_LAYERS
;
masque_layer
=
ALL_LAYERS
;
...
@@ -433,12 +437,15 @@ void PCB_EDIT_FRAME::Block_SelectItems()
...
@@ -433,12 +437,15 @@ void PCB_EDIT_FRAME::Block_SelectItems()
for
(
BOARD_ITEM
*
PtStruct
=
m_Pcb
->
m_Drawings
;
PtStruct
!=
NULL
;
for
(
BOARD_ITEM
*
PtStruct
=
m_Pcb
->
m_Drawings
;
PtStruct
!=
NULL
;
PtStruct
=
PtStruct
->
Next
()
)
PtStruct
=
PtStruct
->
Next
()
)
{
{
if
(
!
m_Pcb
->
IsLayerVisible
(
PtStruct
->
GetLayer
()
)
)
continue
;
bool
select_me
=
false
;
bool
select_me
=
false
;
switch
(
PtStruct
->
Type
()
)
switch
(
PtStruct
->
Type
()
)
{
{
case
TYPE_DRAWSEGMENT
:
case
TYPE_DRAWSEGMENT
:
if
(
(
g_TabOneLayerMask
[
PtStruct
->
GetLayer
()]
&
masque_layer
)
==
0
)
if
(
(
g_TabOneLayerMask
[
PtStruct
->
GetLayer
()]
&
masque_layer
)
==
0
)
break
;
break
;
if
(
!
PtStruct
->
HitTest
(
GetScreen
()
->
m_BlockLocate
)
)
if
(
!
PtStruct
->
HitTest
(
GetScreen
()
->
m_BlockLocate
)
)
break
;
break
;
select_me
=
true
;
// This item is in bloc: select it
select_me
=
true
;
// This item is in bloc: select it
...
@@ -447,6 +454,7 @@ void PCB_EDIT_FRAME::Block_SelectItems()
...
@@ -447,6 +454,7 @@ void PCB_EDIT_FRAME::Block_SelectItems()
case
TYPE_TEXTE
:
case
TYPE_TEXTE
:
if
(
!
blockIncludePcbTexts
)
if
(
!
blockIncludePcbTexts
)
break
;
break
;
if
(
!
PtStruct
->
HitTest
(
GetScreen
()
->
m_BlockLocate
)
)
if
(
!
PtStruct
->
HitTest
(
GetScreen
()
->
m_BlockLocate
)
)
break
;
break
;
select_me
=
true
;
// This item is in bloc: select it
select_me
=
true
;
// This item is in bloc: select it
...
@@ -455,6 +463,7 @@ void PCB_EDIT_FRAME::Block_SelectItems()
...
@@ -455,6 +463,7 @@ void PCB_EDIT_FRAME::Block_SelectItems()
case
TYPE_MIRE
:
case
TYPE_MIRE
:
if
(
(
g_TabOneLayerMask
[
PtStruct
->
GetLayer
()]
&
masque_layer
)
==
0
)
if
(
(
g_TabOneLayerMask
[
PtStruct
->
GetLayer
()]
&
masque_layer
)
==
0
)
break
;
break
;
if
(
!
PtStruct
->
HitTest
(
GetScreen
()
->
m_BlockLocate
)
)
if
(
!
PtStruct
->
HitTest
(
GetScreen
()
->
m_BlockLocate
)
)
break
;
break
;
select_me
=
true
;
// This item is in bloc: select it
select_me
=
true
;
// This item is in bloc: select it
...
@@ -463,6 +472,7 @@ void PCB_EDIT_FRAME::Block_SelectItems()
...
@@ -463,6 +472,7 @@ void PCB_EDIT_FRAME::Block_SelectItems()
case
TYPE_DIMENSION
:
case
TYPE_DIMENSION
:
if
(
(
g_TabOneLayerMask
[
PtStruct
->
GetLayer
()]
&
masque_layer
)
==
0
)
if
(
(
g_TabOneLayerMask
[
PtStruct
->
GetLayer
()]
&
masque_layer
)
==
0
)
break
;
break
;
if
(
!
PtStruct
->
HitTest
(
GetScreen
()
->
m_BlockLocate
)
)
if
(
!
PtStruct
->
HitTest
(
GetScreen
()
->
m_BlockLocate
)
)
break
;
break
;
select_me
=
true
;
// This item is in bloc: select it
select_me
=
true
;
// This item is in bloc: select it
...
@@ -480,7 +490,7 @@ void PCB_EDIT_FRAME::Block_SelectItems()
...
@@ -480,7 +490,7 @@ void PCB_EDIT_FRAME::Block_SelectItems()
}
}
}
}
/
* Zone selection */
/
/ Add zones
if
(
blockIncludeZones
)
if
(
blockIncludeZones
)
{
{
#if 0
#if 0
...
@@ -494,7 +504,8 @@ void PCB_EDIT_FRAME::Block_SelectItems()
...
@@ -494,7 +504,8 @@ void PCB_EDIT_FRAME::Block_SelectItems()
{
{
/* Segments used in Zone filling selection */
/* Segments used in Zone filling selection */
if( pt_segm->HitTest( GetScreen()->m_BlockLocate ) )
if( pt_segm->HitTest( GetScreen()->m_BlockLocate )
&& m_Pcb->IsLayerVisible( pt_segm->GetLayer() ) )
{
{
picker.m_PickedItem = pt_segm;
picker.m_PickedItem = pt_segm;
picker.m_PickedItemType = pt_segm->Type();
picker.m_PickedItemType = pt_segm->Type();
...
@@ -505,9 +516,12 @@ void PCB_EDIT_FRAME::Block_SelectItems()
...
@@ -505,9 +516,12 @@ void PCB_EDIT_FRAME::Block_SelectItems()
#endif
#endif
for
(
int
ii
=
0
;
ii
<
m_Pcb
->
GetAreaCount
();
ii
++
)
for
(
int
ii
=
0
;
ii
<
m_Pcb
->
GetAreaCount
();
ii
++
)
{
{
if
(
m_Pcb
->
GetArea
(
ii
)
->
HitTest
(
GetScreen
()
->
m_BlockLocate
)
)
ZONE_CONTAINER
*
area
=
m_Pcb
->
GetArea
(
ii
);
if
(
area
->
HitTest
(
GetScreen
()
->
m_BlockLocate
)
&&
m_Pcb
->
IsLayerVisible
(
area
->
GetLayer
()
)
)
{
{
BOARD_ITEM
*
zone_c
=
m_Pcb
->
GetArea
(
ii
)
;
BOARD_ITEM
*
zone_c
=
(
BOARD_ITEM
*
)
area
;
picker
.
m_PickedItem
=
zone_c
;
picker
.
m_PickedItem
=
zone_c
;
picker
.
m_PickedItemType
=
zone_c
->
Type
();
picker
.
m_PickedItemType
=
zone_c
->
Type
();
itemsList
->
PushItem
(
picker
);
itemsList
->
PushItem
(
picker
);
...
...
pcbnew/dialogs/dialog_block_options_base.cpp
View file @
0785ca80
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version
Sep 8 2010)
// C++ code generated with wxFormBuilder (version
Nov 18 2010)
// http://www.wxformbuilder.org/
// http://www.wxformbuilder.org/
//
//
// PLEASE DO "NOT" EDIT THIS FILE!
// PLEASE DO "NOT" EDIT THIS FILE!
...
@@ -16,37 +16,39 @@ DIALOG_BLOCK_OPTIONS_BASE::DIALOG_BLOCK_OPTIONS_BASE( wxWindow* parent, wxWindow
...
@@ -16,37 +16,39 @@ DIALOG_BLOCK_OPTIONS_BASE::DIALOG_BLOCK_OPTIONS_BASE( wxWindow* parent, wxWindow
wxBoxSizer
*
bSizerMain
;
wxBoxSizer
*
bSizerMain
;
bSizerMain
=
new
wxBoxSizer
(
wxVERTICAL
);
bSizerMain
=
new
wxBoxSizer
(
wxVERTICAL
);
wxStaticBoxSizer
*
sbSizer1
;
sbSizer1
=
new
wxStaticBoxSizer
(
new
wxStaticBox
(
this
,
wxID_ANY
,
_
(
"Options"
)
),
wxVERTICAL
);
wxGridSizer
*
gSizer1
;
wxGridSizer
*
gSizer1
;
gSizer1
=
new
wxGridSizer
(
4
,
2
,
0
,
0
);
gSizer1
=
new
wxGridSizer
(
4
,
2
,
0
,
0
);
m_Include_Modules
=
new
wxCheckBox
(
this
,
wxID_ANY
,
_
(
"Include
Modules"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_Include_Modules
=
new
wxCheckBox
(
this
,
wxID_ANY
,
_
(
"Include
modules"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
gSizer1
->
Add
(
m_Include_Modules
,
0
,
wxALL
,
5
);
gSizer1
->
Add
(
m_Include_Modules
,
0
,
wxALL
,
5
);
m_Include_PcbTextes
=
new
wxCheckBox
(
this
,
wxID_ANY
,
_
(
"Include
Texts on Copper Layers"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_Include_PcbTextes
=
new
wxCheckBox
(
this
,
wxID_ANY
,
_
(
"Include
text items"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
gSizer1
->
Add
(
m_Include_PcbTextes
,
0
,
wxALL
,
5
);
gSizer1
->
Add
(
m_Include_PcbTextes
,
0
,
wxALL
,
5
);
m_IncludeLockedModules
=
new
wxCheckBox
(
this
,
wxID_ANY
,
_
(
"Include
Locked Modules"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_IncludeLockedModules
=
new
wxCheckBox
(
this
,
wxID_ANY
,
_
(
"Include
locked modules"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
gSizer1
->
Add
(
m_IncludeLockedModules
,
0
,
wxALL
,
5
);
gSizer1
->
Add
(
m_IncludeLockedModules
,
0
,
wxALL
,
5
);
m_Include_Draw_Items
=
new
wxCheckBox
(
this
,
wxID_ANY
,
_
(
"Include
Drawings"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_Include_Draw_Items
=
new
wxCheckBox
(
this
,
wxID_ANY
,
_
(
"Include
drawings"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
gSizer1
->
Add
(
m_Include_Draw_Items
,
0
,
wxALL
,
5
);
gSizer1
->
Add
(
m_Include_Draw_Items
,
0
,
wxALL
,
5
);
m_Include_Tracks
=
new
wxCheckBox
(
this
,
wxID_ANY
,
_
(
"Include
Tracks"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_Include_Tracks
=
new
wxCheckBox
(
this
,
wxID_ANY
,
_
(
"Include
tracks"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
gSizer1
->
Add
(
m_Include_Tracks
,
0
,
wxALL
,
5
);
gSizer1
->
Add
(
m_Include_Tracks
,
0
,
wxALL
,
5
);
m_Include_Edges_Items
=
new
wxCheckBox
(
this
,
wxID_ANY
,
_
(
"Include
Board Outline Layer"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
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
);
gSizer1
->
Add
(
m_Include_Edges_Items
,
0
,
wxALL
,
5
);
m_Include_Zones
=
new
wxCheckBox
(
this
,
wxID_ANY
,
_
(
"Include
Zones"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_Include_Zones
=
new
wxCheckBox
(
this
,
wxID_ANY
,
_
(
"Include
zones"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
gSizer1
->
Add
(
m_Include_Zones
,
0
,
wxALL
,
5
);
gSizer1
->
Add
(
m_Include_Zones
,
0
,
wxALL
,
5
);
m_DrawBlockItems
=
new
wxCheckBox
(
this
,
wxID_ANY
,
_
(
"Draw
Block Items while Moving"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_DrawBlockItems
=
new
wxCheckBox
(
this
,
wxID_ANY
,
_
(
"Draw
selected items while moving"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
gSizer1
->
Add
(
m_DrawBlockItems
,
0
,
wxALL
,
5
);
gSizer1
->
Add
(
m_DrawBlockItems
,
0
,
wxALL
,
5
);
bSizerMain
->
Add
(
gSizer1
,
0
,
wxEXPAND
,
5
);
sbSizer1
->
Add
(
gSizer1
,
0
,
wxEXPAND
,
5
);
m_staticline1
=
new
wxStaticLine
(
this
,
wxID_ANY
,
wxDefaultPosition
,
wxDefaultSize
,
wxLI_HORIZONTAL
);
bSizerMain
->
Add
(
sbSizer1
,
1
,
wxALL
|
wxEXPAND
,
5
);
bSizerMain
->
Add
(
m_staticline1
,
0
,
wxEXPAND
|
wxALL
,
5
);
m_sdbSizer1
=
new
wxStdDialogButtonSizer
();
m_sdbSizer1
=
new
wxStdDialogButtonSizer
();
m_sdbSizer1OK
=
new
wxButton
(
this
,
wxID_OK
);
m_sdbSizer1OK
=
new
wxButton
(
this
,
wxID_OK
);
...
...
pcbnew/dialogs/dialog_block_options_base.fbp
View file @
0785ca80
This diff is collapsed.
Click to expand it.
pcbnew/dialogs/dialog_block_options_base.h
View file @
0785ca80
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version
Sep 8 2010)
// C++ code generated with wxFormBuilder (version
Nov 18 2010)
// http://www.wxformbuilder.org/
// http://www.wxformbuilder.org/
//
//
// PLEASE DO "NOT" EDIT THIS FILE!
// PLEASE DO "NOT" EDIT THIS FILE!
...
@@ -17,7 +17,7 @@
...
@@ -17,7 +17,7 @@
#include <wx/colour.h>
#include <wx/colour.h>
#include <wx/settings.h>
#include <wx/settings.h>
#include <wx/sizer.h>
#include <wx/sizer.h>
#include <wx/stat
line.h>
#include <wx/stat
box.h>
#include <wx/button.h>
#include <wx/button.h>
#include <wx/dialog.h>
#include <wx/dialog.h>
...
@@ -40,7 +40,6 @@ class DIALOG_BLOCK_OPTIONS_BASE : public wxDialog
...
@@ -40,7 +40,6 @@ class DIALOG_BLOCK_OPTIONS_BASE : public wxDialog
wxCheckBox
*
m_Include_Edges_Items
;
wxCheckBox
*
m_Include_Edges_Items
;
wxCheckBox
*
m_Include_Zones
;
wxCheckBox
*
m_Include_Zones
;
wxCheckBox
*
m_DrawBlockItems
;
wxCheckBox
*
m_DrawBlockItems
;
wxStaticLine
*
m_staticline1
;
wxStdDialogButtonSizer
*
m_sdbSizer1
;
wxStdDialogButtonSizer
*
m_sdbSizer1
;
wxButton
*
m_sdbSizer1OK
;
wxButton
*
m_sdbSizer1OK
;
wxButton
*
m_sdbSizer1Cancel
;
wxButton
*
m_sdbSizer1Cancel
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment