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
d9ff4b85
Commit
d9ff4b85
authored
Sep 12, 2013
by
Maciej Suminski
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Currently selected layer is displayed on the top.
parent
82fe1a49
Changes
18
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
141 additions
and
96 deletions
+141
-96
tool_dispatcher.cpp
common/tool/tool_dispatcher.cpp
+0
-2
view.cpp
common/view/view.cpp
+5
-1
wxPcbStruct.h
include/wxPcbStruct.h
+8
-10
class_pcb_layer_widget.cpp
pcbnew/class_pcb_layer_widget.cpp
+2
-2
deltrack.cpp
pcbnew/deltrack.cpp
+2
-2
dialog_general_options.cpp
pcbnew/dialogs/dialog_general_options.cpp
+2
-2
dialog_global_deletion.cpp
pcbnew/dialogs/dialog_global_deletion.cpp
+1
-1
dialog_layers_setup.cpp
pcbnew/dialogs/dialog_layers_setup.cpp
+5
-5
dimension.cpp
pcbnew/dimension.cpp
+1
-1
edit.cpp
pcbnew/edit.cpp
+10
-10
editedge.cpp
pcbnew/editedge.cpp
+2
-2
editrack-part2.cpp
pcbnew/editrack-part2.cpp
+6
-6
hotkeys_board_editor.cpp
pcbnew/hotkeys_board_editor.cpp
+5
-5
onleftclick.cpp
pcbnew/onleftclick.cpp
+3
-3
pcbframe.cpp
pcbnew/pcbframe.cpp
+83
-38
tool_pcb.cpp
pcbnew/tool_pcb.cpp
+1
-1
toolbars_update_user_interface.cpp
pcbnew/toolbars_update_user_interface.cpp
+1
-1
zones_by_polygon.cpp
pcbnew/zones_by_polygon.cpp
+4
-4
No files found.
common/tool/tool_dispatcher.cpp
View file @
d9ff4b85
...
...
@@ -217,8 +217,6 @@ void TOOL_DISPATCHER::DispatchWxEvent( wxEvent& aEvent )
type
==
wxEVT_MIDDLE_DOWN
||
type
==
wxEVT_MIDDLE_UP
||
type
==
wxEVT_RIGHT_DOWN
||
type
==
wxEVT_RIGHT_UP
)
{
wxMouseEvent
*
me
=
static_cast
<
wxMouseEvent
*>
(
&
aEvent
);
pos
=
getView
()
->
ToWorld
(
getCurrentMousePos
()
);
if
(
pos
!=
m_lastMousePos
)
{
...
...
common/view/view.cpp
View file @
d9ff4b85
...
...
@@ -41,7 +41,7 @@
using
namespace
KiGfx
;
VIEW
::
VIEW
(
bool
aIsDynamic
)
:
m_enableOrderModifier
(
fals
e
),
m_enableOrderModifier
(
tru
e
),
m_scale
(
1.0
),
m_painter
(
NULL
),
m_gal
(
NULL
),
...
...
@@ -415,6 +415,8 @@ void VIEW::UpdateAllLayersColor()
updateItemsColor
visitor
(
l
->
id
,
m_painter
,
m_gal
);
l
->
items
->
Query
(
r
,
visitor
);
}
MarkDirty
();
}
...
...
@@ -525,6 +527,8 @@ void VIEW::UpdateAllLayersOrder()
{
ChangeLayerDepth
(
l
.
first
,
l
.
second
.
renderingOrder
);
}
MarkDirty
();
}
...
...
include/wxPcbStruct.h
View file @
d9ff4b85
...
...
@@ -136,21 +136,13 @@ protected:
* will change the currently active layer to \a aLayer and also
* update the PCB_LAYER_WIDGET.
*/
void
setActiveLayer
(
LAYER_NUM
aLayer
,
bool
doLayerWidgetUpdate
=
true
)
{
(
(
PCB_SCREEN
*
)
GetScreen
()
)
->
m_Active_Layer
=
aLayer
;
setHighContrastLayer
(
aLayer
);
if
(
doLayerWidgetUpdate
)
syncLayerWidgetLayer
();
}
void
setCurrentLayer
(
LAYER_NUM
aLayer
,
bool
doLayerWidgetUpdate
=
true
);
/**
* Function getActiveLayer
* returns the active layer
*/
LAYER_NUM
get
Active
Layer
()
LAYER_NUM
get
Current
Layer
()
{
return
(
(
PCB_SCREEN
*
)
GetScreen
()
)
->
m_Active_Layer
;
}
...
...
@@ -161,6 +153,12 @@ protected:
*/
void
setHighContrastLayer
(
LAYER_NUM
aLayer
);
/**
* Function setTopLayer
* moves the selected layer to the top, so it is displayed above all others.
*/
void
setTopLayer
(
LAYER_NUM
aLayer
);
/**
* Function syncLayerWidgetLayer
* updates the currently layer "selection" within the PCB_LAYER_WIDGET.
...
...
pcbnew/class_pcb_layer_widget.cpp
View file @
d9ff4b85
...
...
@@ -183,7 +183,7 @@ void PCB_LAYER_WIDGET::onPopupSelection( wxCommandEvent& event )
if
(
IsCopperLayer
(
layer
)
)
{
bool
loc_visible
=
visible
;
if
(
force_active_layer_visible
&&
(
layer
==
myframe
->
get
Active
Layer
()
)
)
if
(
force_active_layer_visible
&&
(
layer
==
myframe
->
get
Current
Layer
()
)
)
loc_visible
=
true
;
cb
->
SetValue
(
loc_visible
);
...
...
@@ -354,7 +354,7 @@ bool PCB_LAYER_WIDGET::OnLayerSelect( LAYER_NUM aLayer )
{
// the layer change from the PCB_LAYER_WIDGET can be denied by returning
// false from this function.
myframe
->
set
Active
Layer
(
aLayer
,
false
);
myframe
->
set
Current
Layer
(
aLayer
,
false
);
if
(
m_alwaysShowActiveCopperLayer
)
OnLayerSelected
();
...
...
pcbnew/deltrack.cpp
View file @
d9ff4b85
...
...
@@ -53,7 +53,7 @@ TRACK* PCB_EDIT_FRAME::Delete_Segment( wxDC* DC, TRACK* aTrack )
{
if
(
g_CurrentTrackList
.
GetCount
()
>
0
)
{
LAYER_NUM
previous_layer
=
get
Active
Layer
();
LAYER_NUM
previous_layer
=
get
Current
Layer
();
DBG
(
g_CurrentTrackList
.
VerifyListIntegrity
();
)
...
...
@@ -86,7 +86,7 @@ TRACK* PCB_EDIT_FRAME::Delete_Segment( wxDC* DC, TRACK* aTrack )
// Correct active layer which could change if a via
// has been erased
set
Active
Layer
(
previous_layer
);
set
Current
Layer
(
previous_layer
);
UpdateStatusBar
();
...
...
pcbnew/dialogs/dialog_general_options.cpp
View file @
d9ff4b85
...
...
@@ -238,8 +238,8 @@ void PCB_EDIT_FRAME::OnSelectOptionToolbar( wxCommandEvent& event )
// Apply new display options to the GAL canvas (this is faster than recaching)
settings
->
LoadDisplayOptions
(
DisplayOpt
);
setHighContrastLayer
(
get
Active
Layer
()
);
m_galCanvas
->
GetView
()
->
EnableTopLayer
(
state
);
setHighContrastLayer
(
get
Current
Layer
()
);
//
m_galCanvas->GetView()->EnableTopLayer( state );
if
(
m_galCanvasActive
)
m_galCanvas
->
Refresh
();
...
...
pcbnew/dialogs/dialog_global_deletion.cpp
View file @
d9ff4b85
...
...
@@ -37,7 +37,7 @@ DIALOG_GLOBAL_DELETION::DIALOG_GLOBAL_DELETION( PCB_EDIT_FRAME* parent )
void
PCB_EDIT_FRAME
::
InstallPcbGlobalDeleteFrame
(
const
wxPoint
&
pos
)
{
DIALOG_GLOBAL_DELETION
dlg
(
this
);
dlg
.
SetCurrentLayer
(
get
Active
Layer
()
);
dlg
.
SetCurrentLayer
(
get
Current
Layer
()
);
dlg
.
ShowModal
();
}
...
...
pcbnew/dialogs/dialog_layers_setup.cpp
View file @
d9ff4b85
...
...
@@ -669,11 +669,11 @@ void PCB_EDIT_FRAME::InstallDialogLayerSetup()
if
(
dlg
.
ShowModal
()
==
wxID_CANCEL
)
return
;
wxLogDebug
(
wxT
(
"Current layer selected %d."
),
get
Active
Layer
()
);
wxLogDebug
(
wxT
(
"Current layer selected %d."
),
get
Current
Layer
()
);
// If the current active layer was removed, find the next avaiable layer to set as the
// active layer.
if
(
!
(
GetLayerMask
(
get
Active
Layer
()
)
&
GetBoard
()
->
GetEnabledLayers
()
)
)
if
(
!
(
GetLayerMask
(
get
Current
Layer
()
)
&
GetBoard
()
->
GetEnabledLayers
()
)
)
{
for
(
LAYER_NUM
i
=
FIRST_LAYER
;
i
<
NB_LAYERS
;
++
i
)
{
...
...
@@ -684,14 +684,14 @@ void PCB_EDIT_FRAME::InstallDialogLayerSetup()
if
(
GetLayerMask
(
tmp
)
&
GetBoard
()
->
GetEnabledLayers
()
)
{
wxLogDebug
(
wxT
(
"Setting current layer to %d."
),
get
Active
Layer
()
);
set
Active
Layer
(
tmp
,
true
);
wxLogDebug
(
wxT
(
"Setting current layer to %d."
),
get
Current
Layer
()
);
set
Current
Layer
(
tmp
,
true
);
break
;
}
}
}
else
{
set
ActiveLayer
(
getActive
Layer
(),
true
);
set
CurrentLayer
(
getCurrent
Layer
(),
true
);
}
}
pcbnew/dimension.cpp
View file @
d9ff4b85
...
...
@@ -245,7 +245,7 @@ DIMENSION* PCB_EDIT_FRAME::EditDimension( DIMENSION* aDimension, wxDC* aDC )
aDimension
=
new
DIMENSION
(
GetBoard
()
);
aDimension
->
SetFlags
(
IS_NEW
);
aDimension
->
SetLayer
(
get
Active
Layer
()
);
aDimension
->
SetLayer
(
get
Current
Layer
()
);
aDimension
->
m_crossBarO
=
aDimension
->
m_crossBarF
=
pos
;
aDimension
->
m_featureLineDO
=
aDimension
->
m_featureLineDF
=
pos
;
...
...
pcbnew/edit.cpp
View file @
d9ff4b85
...
...
@@ -917,10 +917,10 @@ void PCB_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event )
break
;
case
ID_POPUP_PCB_SELECT_LAYER
:
itmp
=
SelectLayer
(
get
Active
Layer
(),
UNDEFINED_LAYER
,
UNDEFINED_LAYER
);
itmp
=
SelectLayer
(
get
Current
Layer
(),
UNDEFINED_LAYER
,
UNDEFINED_LAYER
);
if
(
itmp
>=
0
)
set
Active
Layer
(
itmp
);
set
Current
Layer
(
itmp
);
m_canvas
->
MoveCursorToCrossHair
();
break
;
...
...
@@ -930,19 +930,19 @@ void PCB_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event )
break
;
case
ID_POPUP_PCB_SELECT_NO_CU_LAYER
:
itmp
=
SelectLayer
(
get
Active
Layer
(),
FIRST_NON_COPPER_LAYER
,
UNDEFINED_LAYER
);
itmp
=
SelectLayer
(
get
Current
Layer
(),
FIRST_NON_COPPER_LAYER
,
UNDEFINED_LAYER
);
if
(
itmp
>=
0
)
set
Active
Layer
(
itmp
);
set
Current
Layer
(
itmp
);
m_canvas
->
MoveCursorToCrossHair
();
break
;
case
ID_POPUP_PCB_SELECT_CU_LAYER
:
itmp
=
SelectLayer
(
get
Active
Layer
(),
UNDEFINED_LAYER
,
LAST_COPPER_LAYER
);
itmp
=
SelectLayer
(
get
Current
Layer
(),
UNDEFINED_LAYER
,
LAST_COPPER_LAYER
);
if
(
itmp
>=
0
)
set
Active
Layer
(
itmp
);
set
Current
Layer
(
itmp
);
break
;
...
...
@@ -952,7 +952,7 @@ void PCB_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event )
break
;
case
ID_TOOLBARH_PCB_SELECT_LAYER
:
set
Active
Layer
(
m_SelLayerBox
->
GetLayerSelection
()
);
set
Current
Layer
(
m_SelLayerBox
->
GetLayerSelection
()
);
if
(
DisplayOpt
.
ContrastModeDisplay
)
m_canvas
->
Refresh
(
true
);
...
...
@@ -1240,7 +1240,7 @@ void PCB_EDIT_FRAME::RemoveStruct( BOARD_ITEM* Item, wxDC* DC )
void
PCB_EDIT_FRAME
::
SwitchLayer
(
wxDC
*
DC
,
LAYER_NUM
layer
)
{
LAYER_NUM
curLayer
=
get
Active
Layer
();
LAYER_NUM
curLayer
=
get
Current
Layer
();
// Check if the specified layer matches the present layer
if
(
layer
==
curLayer
)
...
...
@@ -1282,7 +1282,7 @@ void PCB_EDIT_FRAME::SwitchLayer( wxDC* DC, LAYER_NUM layer )
GetScreen
()
->
m_Route_Layer_TOP
=
curLayer
;
GetScreen
()
->
m_Route_Layer_BOTTOM
=
layer
;
set
Active
Layer
(
curLayer
);
set
Current
Layer
(
curLayer
);
if
(
Other_Layer_Route
(
(
TRACK
*
)
GetScreen
()
->
GetCurItem
(),
DC
)
)
{
...
...
@@ -1303,7 +1303,7 @@ void PCB_EDIT_FRAME::SwitchLayer( wxDC* DC, LAYER_NUM layer )
// and a non-copper layer, or vice-versa?
// ...
set
Active
Layer
(
layer
);
set
Current
Layer
(
layer
);
if
(
DisplayOpt
.
ContrastModeDisplay
)
RefreshCanvas
();
...
...
pcbnew/editedge.cpp
View file @
d9ff4b85
...
...
@@ -246,7 +246,7 @@ DRAWSEGMENT* PCB_EDIT_FRAME::Begin_DrawSegment( DRAWSEGMENT* Segment, STROKE_T s
s_large
=
GetDesignSettings
().
m_DrawSegmentWidth
;
if
(
get
Active
Layer
()
==
EDGE_N
)
if
(
get
Current
Layer
()
==
EDGE_N
)
{
s_large
=
GetDesignSettings
().
m_EdgeSegmentWidth
;
}
...
...
@@ -255,7 +255,7 @@ DRAWSEGMENT* PCB_EDIT_FRAME::Begin_DrawSegment( DRAWSEGMENT* Segment, STROKE_T s
{
SetCurItem
(
Segment
=
new
DRAWSEGMENT
(
GetBoard
()
)
);
Segment
->
SetFlags
(
IS_NEW
);
Segment
->
SetLayer
(
get
Active
Layer
()
);
Segment
->
SetLayer
(
get
Current
Layer
()
);
Segment
->
SetWidth
(
s_large
);
Segment
->
SetShape
(
shape
);
Segment
->
SetAngle
(
900
);
...
...
pcbnew/editrack-part2.cpp
View file @
d9ff4b85
...
...
@@ -52,10 +52,10 @@ bool PCB_EDIT_FRAME::Other_Layer_Route( TRACK* aTrack, wxDC* DC )
if
(
aTrack
==
NULL
)
{
if
(
get
Active
Layer
()
!=
((
PCB_SCREEN
*
)
GetScreen
())
->
m_Route_Layer_TOP
)
set
Active
Layer
(
((
PCB_SCREEN
*
)
GetScreen
())
->
m_Route_Layer_TOP
);
if
(
get
Current
Layer
()
!=
((
PCB_SCREEN
*
)
GetScreen
())
->
m_Route_Layer_TOP
)
set
Current
Layer
(
((
PCB_SCREEN
*
)
GetScreen
())
->
m_Route_Layer_TOP
);
else
set
Active
Layer
(((
PCB_SCREEN
*
)
GetScreen
())
->
m_Route_Layer_BOTTOM
);
set
Current
Layer
(((
PCB_SCREEN
*
)
GetScreen
())
->
m_Route_Layer_BOTTOM
);
UpdateStatusBar
();
return
true
;
...
...
@@ -109,7 +109,7 @@ bool PCB_EDIT_FRAME::Other_Layer_Route( TRACK* aTrack, wxDC* DC )
via
->
SetLayerPair
(
LAYER_N_BACK
,
LAYER_N_FRONT
);
via
->
SetDrill
(
GetBoard
()
->
GetCurrentViaDrill
()
);
LAYER_NUM
first_layer
=
get
Active
Layer
();
LAYER_NUM
first_layer
=
get
Current
Layer
();
LAYER_NUM
last_layer
;
// prepare switch to new active layer:
...
...
@@ -172,7 +172,7 @@ bool PCB_EDIT_FRAME::Other_Layer_Route( TRACK* aTrack, wxDC* DC )
return
false
;
}
set
Active
Layer
(
last_layer
);
set
Current
Layer
(
last_layer
);
TRACK
*
lastNonVia
=
g_CurrentTrackSegment
;
...
...
@@ -194,7 +194,7 @@ bool PCB_EDIT_FRAME::Other_Layer_Route( TRACK* aTrack, wxDC* DC )
*/
// set the layer to the new value
track
->
SetLayer
(
get
Active
Layer
()
);
track
->
SetLayer
(
get
Current
Layer
()
);
/* the start point is the via position and the end point is the cursor
* which also is on the via (will change when moving mouse)
...
...
pcbnew/hotkeys_board_editor.cpp
View file @
d9ff4b85
...
...
@@ -243,7 +243,7 @@ void PCB_EDIT_FRAME::OnHotKey( wxDC* aDC, int aHotkeyCode, const wxPoint& aPosit
break
;
case
HK_SWITCH_LAYER_TO_PREVIOUS
:
ll
=
get
Active
Layer
();
ll
=
get
Current
Layer
();
if
(
(
ll
<=
LAYER_N_BACK
)
||
(
ll
>
LAYER_N_FRONT
)
)
break
;
...
...
@@ -259,7 +259,7 @@ void PCB_EDIT_FRAME::OnHotKey( wxDC* aDC, int aHotkeyCode, const wxPoint& aPosit
break
;
case
HK_SWITCH_LAYER_TO_NEXT
:
ll
=
get
Active
Layer
();
ll
=
get
Current
Layer
();
if
(
(
ll
<
LAYER_N_BACK
)
||
(
ll
>=
LAYER_N_FRONT
)
)
break
;
...
...
@@ -365,7 +365,7 @@ void PCB_EDIT_FRAME::OnHotKey( wxDC* aDC, int aHotkeyCode, const wxPoint& aPosit
break
;
case
HK_BACK_SPACE
:
if
(
/*m_ID_current_state == ID_TRACK_BUTT &&*/
(
get
Active
Layer
()
<=
LAYER_N_FRONT
)
)
if
(
/*m_ID_current_state == ID_TRACK_BUTT &&*/
(
get
Current
Layer
()
<=
LAYER_N_FRONT
)
)
{
if
(
!
itemCurrentlyEdited
)
{
...
...
@@ -572,7 +572,7 @@ bool PCB_EDIT_FRAME::OnHotkeyDeleteItem( wxDC* aDC )
switch
(
GetToolId
()
)
{
case
ID_TRACK_BUTT
:
if
(
get
Active
Layer
()
>
LAYER_N_FRONT
)
if
(
get
Current
Layer
()
>
LAYER_N_FRONT
)
return
false
;
if
(
ItemFree
)
...
...
@@ -941,7 +941,7 @@ bool PCB_EDIT_FRAME::OnHotkeyPlaceItem( wxDC* aDC )
*/
TRACK
*
PCB_EDIT_FRAME
::
OnHotkeyBeginRoute
(
wxDC
*
aDC
)
{
if
(
get
Active
Layer
()
>
LAYER_N_FRONT
)
if
(
get
Current
Layer
()
>
LAYER_N_FRONT
)
return
NULL
;
bool
itemCurrentlyEdited
=
(
GetCurItem
()
&&
GetCurItem
()
->
GetFlags
());
...
...
pcbnew/onleftclick.cpp
View file @
d9ff4b85
...
...
@@ -243,7 +243,7 @@ void PCB_EDIT_FRAME::OnLeftClick( wxDC* aDC, const wxPoint& aPosition )
if
(
GetToolId
()
==
ID_PCB_ARC_BUTT
)
shape
=
S_ARC
;
if
(
IsCopperLayer
(
get
Active
Layer
()
)
)
if
(
IsCopperLayer
(
get
Current
Layer
()
)
)
{
DisplayError
(
this
,
_
(
"Graphic not allowed on Copper layers"
)
);
break
;
...
...
@@ -267,7 +267,7 @@ void PCB_EDIT_FRAME::OnLeftClick( wxDC* aDC, const wxPoint& aPosition )
break
;
case
ID_TRACK_BUTT
:
if
(
!
IsCopperLayer
(
get
Active
Layer
()
)
)
if
(
!
IsCopperLayer
(
get
Current
Layer
()
)
)
{
DisplayError
(
this
,
_
(
"Tracks on Copper layers only "
)
);
break
;
...
...
@@ -367,7 +367,7 @@ void PCB_EDIT_FRAME::OnLeftClick( wxDC* aDC, const wxPoint& aPosition )
break
;
case
ID_PCB_DIMENSION_BUTT
:
if
(
IsCopperLayer
(
get
Active
Layer
()
)
)
if
(
IsCopperLayer
(
get
Current
Layer
()
)
)
{
DisplayError
(
this
,
_
(
"Dimension not allowed on Copper layers"
)
);
break
;
...
...
pcbnew/pcbframe.cpp
View file @
d9ff4b85
...
...
@@ -730,7 +730,7 @@ void PCB_EDIT_FRAME::SetGridColor(EDA_COLOR_T aColor)
bool
PCB_EDIT_FRAME
::
IsMicroViaAcceptable
(
void
)
{
int
copperlayercnt
=
GetBoard
()
->
GetCopperLayerCount
(
);
LAYER_NUM
currLayer
=
get
Active
Layer
();
LAYER_NUM
currLayer
=
get
Current
Layer
();
if
(
!
GetDesignSettings
().
m_MicroViasAllowed
)
return
false
;
// Obvious..
...
...
@@ -754,55 +754,100 @@ void PCB_EDIT_FRAME::setHighContrastLayer( LAYER_NUM aLayer )
KiGfx
::
VIEW
*
view
=
m_galCanvas
->
GetView
();
KiGfx
::
RENDER_SETTINGS
*
rSettings
=
view
->
GetPainter
()
->
GetSettings
();
// if( DisplayOpt.ContrastModeDisplay )
setTopLayer
(
aLayer
);
rSettings
->
ClearActiveLayers
();
rSettings
->
SetActiveLayer
(
aLayer
);
if
(
IsCopperLayer
(
aLayer
)
)
{
view
->
ClearTopLayers
();
view
->
SetTopLayer
(
aLayer
);
// Bring some other layers to the front in case of copper layers and make them colored
// fixme do not like the idea of storing the list of layers here,
// should be done in some other way I guess..
LAYER_NUM
layers
[]
=
{
GetNetnameLayer
(
aLayer
),
ITEM_GAL_LAYER
(
VIAS_VISIBLE
),
ITEM_GAL_LAYER
(
VIAS_HOLES_VISIBLE
),
ITEM_GAL_LAYER
(
PADS_VISIBLE
),
ITEM_GAL_LAYER
(
PADS_HOLES_VISIBLE
),
ITEM_GAL_LAYER
(
PADS_NETNAMES_VISIBLE
)
};
for
(
unsigned
int
i
=
0
;
i
<
sizeof
(
layers
)
/
sizeof
(
LAYER_NUM
);
++
i
)
rSettings
->
SetActiveLayer
(
layers
[
i
]
);
// Pads should be shown too
if
(
aLayer
==
FIRST_COPPER_LAYER
)
{
rSettings
->
SetActiveLayer
(
ITEM_GAL_LAYER
(
PAD_BK_VISIBLE
)
);
rSettings
->
SetActiveLayer
(
ITEM_GAL_LAYER
(
PAD_BK_NETNAMES_VISIBLE
)
);
}
else
if
(
aLayer
==
LAST_COPPER_LAYER
)
{
rSettings
->
SetActiveLayer
(
ITEM_GAL_LAYER
(
PAD_FR_VISIBLE
)
);
rSettings
->
SetActiveLayer
(
ITEM_GAL_LAYER
(
PAD_FR_NETNAMES_VISIBLE
)
);
}
}
view
->
UpdateAllLayersColor
();
}
void
PCB_EDIT_FRAME
::
setTopLayer
(
LAYER_NUM
aLayer
)
{
// Set display settings for high contrast mode
KiGfx
::
VIEW
*
view
=
m_galCanvas
->
GetView
();
rSettings
->
ClearActive
Layers
();
rSettings
->
SetActive
Layer
(
aLayer
);
view
->
ClearTop
Layers
();
view
->
SetTop
Layer
(
aLayer
);
if
(
IsCopperLayer
(
aLayer
)
)
if
(
IsCopperLayer
(
aLayer
)
)
{
// Bring some other layers to the front in case of copper layers and make them colored
// fixme do not like the idea of storing the list of layers here,
// should be done in some other way I guess..
LAYER_NUM
layers
[]
=
{
GetNetnameLayer
(
aLayer
),
ITEM_GAL_LAYER
(
VIAS_VISIBLE
),
ITEM_GAL_LAYER
(
VIAS_HOLES_VISIBLE
),
ITEM_GAL_LAYER
(
PADS_VISIBLE
),
ITEM_GAL_LAYER
(
PADS_HOLES_VISIBLE
),
ITEM_GAL_LAYER
(
PADS_NETNAMES_VISIBLE
)
};
for
(
unsigned
int
i
=
0
;
i
<
sizeof
(
layers
)
/
sizeof
(
LAYER_NUM
);
++
i
)
{
// Bring some other layers to the front in case of copper layers and make them colored
LAYER_NUM
layers
[]
=
{
GetNetnameLayer
(
aLayer
),
ITEM_GAL_LAYER
(
VIAS_VISIBLE
),
ITEM_GAL_LAYER
(
VIAS_HOLES_VISIBLE
),
ITEM_GAL_LAYER
(
PADS_VISIBLE
),
ITEM_GAL_LAYER
(
PADS_HOLES_VISIBLE
),
ITEM_GAL_LAYER
(
PADS_NETNAMES_VISIBLE
)
};
for
(
unsigned
int
i
=
0
;
i
<
sizeof
(
layers
)
/
sizeof
(
LAYER_NUM
);
++
i
)
{
view
->
SetTopLayer
(
layers
[
i
]
);
rSettings
->
SetActiveLayer
(
layers
[
i
]
);
}
// Pads should be shown too
if
(
aLayer
==
FIRST_COPPER_LAYER
)
{
view
->
SetTopLayer
(
ITEM_GAL_LAYER
(
PAD_BK_VISIBLE
)
);
view
->
SetTopLayer
(
ITEM_GAL_LAYER
(
PAD_BK_NETNAMES_VISIBLE
)
);
rSettings
->
SetActiveLayer
(
ITEM_GAL_LAYER
(
PAD_BK_VISIBLE
)
);
rSettings
->
SetActiveLayer
(
ITEM_GAL_LAYER
(
PAD_BK_NETNAMES_VISIBLE
)
);
}
else
if
(
aLayer
==
LAST_COPPER_LAYER
)
{
view
->
SetTopLayer
(
ITEM_GAL_LAYER
(
PAD_FR_VISIBLE
)
);
view
->
SetTopLayer
(
ITEM_GAL_LAYER
(
PAD_FR_NETNAMES_VISIBLE
)
);
rSettings
->
SetActiveLayer
(
ITEM_GAL_LAYER
(
PAD_FR_VISIBLE
)
);
rSettings
->
SetActiveLayer
(
ITEM_GAL_LAYER
(
PAD_FR_NETNAMES_VISIBLE
)
);
}
view
->
SetTopLayer
(
layers
[
i
]
);
}
view
->
UpdateAllLayersOrder
();
view
->
UpdateAllLayersColor
();
// Pads should be shown too
if
(
aLayer
==
FIRST_COPPER_LAYER
)
{
view
->
SetTopLayer
(
ITEM_GAL_LAYER
(
PAD_BK_VISIBLE
)
);
view
->
SetTopLayer
(
ITEM_GAL_LAYER
(
PAD_BK_NETNAMES_VISIBLE
)
);
}
else
if
(
aLayer
==
LAST_COPPER_LAYER
)
{
view
->
SetTopLayer
(
ITEM_GAL_LAYER
(
PAD_FR_VISIBLE
)
);
view
->
SetTopLayer
(
ITEM_GAL_LAYER
(
PAD_FR_NETNAMES_VISIBLE
)
);
}
}
view
->
UpdateAllLayersOrder
();
}
void
PCB_EDIT_FRAME
::
setCurrentLayer
(
LAYER_NUM
aLayer
,
bool
doLayerWidgetUpdate
)
{
(
(
PCB_SCREEN
*
)
GetScreen
()
)
->
m_Active_Layer
=
aLayer
;
setHighContrastLayer
(
aLayer
);
if
(
doLayerWidgetUpdate
)
syncLayerWidgetLayer
();
if
(
m_galCanvasActive
)
m_galCanvas
->
Refresh
();
}
void
PCB_EDIT_FRAME
::
syncLayerWidgetLayer
()
{
m_Layers
->
SelectLayer
(
get
Active
Layer
()
);
m_Layers
->
SelectLayer
(
get
Current
Layer
()
);
m_Layers
->
OnLayerSelected
();
}
...
...
pcbnew/tool_pcb.cpp
View file @
d9ff4b85
...
...
@@ -105,7 +105,7 @@ void PCB_EDIT_FRAME::PrepareLayerIndicator()
previous_Route_Layer_BOTTOM_color
,
previous_via_color
;
/* get colors, and redraw bitmap button only on changes */
active_layer_color
=
GetBoard
()
->
GetLayerColor
(
get
Active
Layer
());
active_layer_color
=
GetBoard
()
->
GetLayerColor
(
get
Current
Layer
());
if
(
previous_active_layer_color
!=
active_layer_color
)
{
...
...
pcbnew/toolbars_update_user_interface.cpp
View file @
d9ff4b85
...
...
@@ -96,7 +96,7 @@ void PCB_EDIT_FRAME::OnUpdateSelectViaSize( wxUpdateUIEvent& aEvent )
void
PCB_EDIT_FRAME
::
OnUpdateLayerSelectBox
(
wxUpdateUIEvent
&
aEvent
)
{
m_SelLayerBox
->
SetLayerSelection
(
get
Active
Layer
()
);
m_SelLayerBox
->
SetLayerSelection
(
get
Current
Layer
()
);
}
...
...
pcbnew/zones_by_polygon.cpp
View file @
d9ff4b85
...
...
@@ -518,7 +518,7 @@ int PCB_EDIT_FRAME::Begin_Zone( wxDC* DC )
if
(
!
GetBoard
()
->
m_CurrentZoneContour
)
{
if
(
GetToolId
()
==
ID_PCB_KEEPOUT_AREA_BUTT
&&
get
Active
Layer
()
>=
FIRST_NON_COPPER_LAYER
)
get
Current
Layer
()
>=
FIRST_NON_COPPER_LAYER
)
{
DisplayError
(
this
,
_
(
"Error: a keepout area is allowed only on copper layers"
)
);
...
...
@@ -537,7 +537,7 @@ int PCB_EDIT_FRAME::Begin_Zone( wxDC* DC )
ZONE_EDIT_T
edited
;
// Init zone params to reasonable values
zone
->
SetLayer
(
get
Active
Layer
()
);
zone
->
SetLayer
(
get
Current
Layer
()
);
// Prompt user for parameters:
m_canvas
->
SetIgnoreMouseEvents
(
true
);
...
...
@@ -602,7 +602,7 @@ int PCB_EDIT_FRAME::Begin_Zone( wxDC* DC )
return
0
;
// Switch active layer to the selected zone layer
set
Active
Layer
(
zoneInfo
.
m_CurrentZone_Layer
);
set
Current
Layer
(
zoneInfo
.
m_CurrentZone_Layer
);
SetZoneSettings
(
zoneInfo
);
}
...
...
@@ -612,7 +612,7 @@ int PCB_EDIT_FRAME::Begin_Zone( wxDC* DC )
// zone (add cutout or similar zone)
zoneInfo
.
m_CurrentZone_Layer
=
s_CurrentZone
->
GetLayer
();
set
Active
Layer
(
s_CurrentZone
->
GetLayer
()
);
set
Current
Layer
(
s_CurrentZone
->
GetLayer
()
);
zoneInfo
<<
*
s_CurrentZone
;
...
...
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