Currently selected layer is displayed on the top.
This commit is contained in:
parent
82fe1a4972
commit
d9ff4b851a
|
@ -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 )
|
||||
{
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
using namespace KiGfx;
|
||||
|
||||
VIEW::VIEW( bool aIsDynamic ) :
|
||||
m_enableOrderModifier( false ),
|
||||
m_enableOrderModifier( true ),
|
||||
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();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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 getActiveLayer()
|
||||
LAYER_NUM getCurrentLayer()
|
||||
{
|
||||
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.
|
||||
|
|
|
@ -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->getActiveLayer() ) )
|
||||
if( force_active_layer_visible && (layer == myframe->getCurrentLayer() ) )
|
||||
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->setActiveLayer( aLayer, false );
|
||||
myframe->setCurrentLayer( aLayer, false );
|
||||
|
||||
if( m_alwaysShowActiveCopperLayer )
|
||||
OnLayerSelected();
|
||||
|
|
|
@ -53,7 +53,7 @@ TRACK* PCB_EDIT_FRAME::Delete_Segment( wxDC* DC, TRACK* aTrack )
|
|||
{
|
||||
if( g_CurrentTrackList.GetCount() > 0 )
|
||||
{
|
||||
LAYER_NUM previous_layer = getActiveLayer();
|
||||
LAYER_NUM previous_layer = getCurrentLayer();
|
||||
|
||||
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
|
||||
setActiveLayer( previous_layer );
|
||||
setCurrentLayer( previous_layer );
|
||||
|
||||
UpdateStatusBar();
|
||||
|
||||
|
|
|
@ -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( getActiveLayer() );
|
||||
m_galCanvas->GetView()->EnableTopLayer( state );
|
||||
setHighContrastLayer( getCurrentLayer() );
|
||||
// m_galCanvas->GetView()->EnableTopLayer( state );
|
||||
|
||||
if( m_galCanvasActive )
|
||||
m_galCanvas->Refresh();
|
||||
|
|
|
@ -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( getActiveLayer() );
|
||||
dlg.SetCurrentLayer( getCurrentLayer() );
|
||||
|
||||
dlg.ShowModal();
|
||||
}
|
||||
|
|
|
@ -669,11 +669,11 @@ void PCB_EDIT_FRAME::InstallDialogLayerSetup()
|
|||
if( dlg.ShowModal() == wxID_CANCEL )
|
||||
return;
|
||||
|
||||
wxLogDebug( wxT( "Current layer selected %d." ), getActiveLayer() );
|
||||
wxLogDebug( wxT( "Current layer selected %d." ), getCurrentLayer() );
|
||||
|
||||
// If the current active layer was removed, find the next avaiable layer to set as the
|
||||
// active layer.
|
||||
if( !( GetLayerMask( getActiveLayer() ) & GetBoard()->GetEnabledLayers() ) )
|
||||
if( !( GetLayerMask( getCurrentLayer() ) & 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." ), getActiveLayer() );
|
||||
setActiveLayer( tmp, true );
|
||||
wxLogDebug( wxT( "Setting current layer to %d." ), getCurrentLayer() );
|
||||
setCurrentLayer( tmp, true );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
setActiveLayer( getActiveLayer(), true );
|
||||
setCurrentLayer( getCurrentLayer(), true );
|
||||
}
|
||||
}
|
||||
|
|
|
@ -245,7 +245,7 @@ DIMENSION* PCB_EDIT_FRAME::EditDimension( DIMENSION* aDimension, wxDC* aDC )
|
|||
aDimension = new DIMENSION( GetBoard() );
|
||||
aDimension->SetFlags( IS_NEW );
|
||||
|
||||
aDimension->SetLayer( getActiveLayer() );
|
||||
aDimension->SetLayer( getCurrentLayer() );
|
||||
|
||||
aDimension->m_crossBarO = aDimension->m_crossBarF = pos;
|
||||
aDimension->m_featureLineDO = aDimension->m_featureLineDF = pos;
|
||||
|
|
|
@ -917,10 +917,10 @@ void PCB_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event )
|
|||
break;
|
||||
|
||||
case ID_POPUP_PCB_SELECT_LAYER:
|
||||
itmp = SelectLayer( getActiveLayer(), UNDEFINED_LAYER, UNDEFINED_LAYER );
|
||||
itmp = SelectLayer( getCurrentLayer(), UNDEFINED_LAYER, UNDEFINED_LAYER );
|
||||
|
||||
if( itmp >= 0 )
|
||||
setActiveLayer( itmp );
|
||||
setCurrentLayer( 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( getActiveLayer(), FIRST_NON_COPPER_LAYER, UNDEFINED_LAYER );
|
||||
itmp = SelectLayer( getCurrentLayer(), FIRST_NON_COPPER_LAYER, UNDEFINED_LAYER );
|
||||
|
||||
if( itmp >= 0 )
|
||||
setActiveLayer( itmp );
|
||||
setCurrentLayer( itmp );
|
||||
|
||||
m_canvas->MoveCursorToCrossHair();
|
||||
break;
|
||||
|
||||
case ID_POPUP_PCB_SELECT_CU_LAYER:
|
||||
itmp = SelectLayer( getActiveLayer(), UNDEFINED_LAYER, LAST_COPPER_LAYER );
|
||||
itmp = SelectLayer( getCurrentLayer(), UNDEFINED_LAYER, LAST_COPPER_LAYER );
|
||||
|
||||
if( itmp >= 0 )
|
||||
setActiveLayer( itmp );
|
||||
setCurrentLayer( itmp );
|
||||
|
||||
break;
|
||||
|
||||
|
@ -952,7 +952,7 @@ void PCB_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event )
|
|||
break;
|
||||
|
||||
case ID_TOOLBARH_PCB_SELECT_LAYER:
|
||||
setActiveLayer( m_SelLayerBox->GetLayerSelection() );
|
||||
setCurrentLayer( 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 = getActiveLayer();
|
||||
LAYER_NUM curLayer = getCurrentLayer();
|
||||
|
||||
// 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;
|
||||
|
||||
setActiveLayer( curLayer );
|
||||
setCurrentLayer( 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?
|
||||
// ...
|
||||
|
||||
setActiveLayer( layer );
|
||||
setCurrentLayer( layer );
|
||||
|
||||
if( DisplayOpt.ContrastModeDisplay )
|
||||
RefreshCanvas();
|
||||
|
|
|
@ -246,7 +246,7 @@ DRAWSEGMENT* PCB_EDIT_FRAME::Begin_DrawSegment( DRAWSEGMENT* Segment, STROKE_T s
|
|||
|
||||
s_large = GetDesignSettings().m_DrawSegmentWidth;
|
||||
|
||||
if( getActiveLayer() == EDGE_N )
|
||||
if( getCurrentLayer() == 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( getActiveLayer() );
|
||||
Segment->SetLayer( getCurrentLayer() );
|
||||
Segment->SetWidth( s_large );
|
||||
Segment->SetShape( shape );
|
||||
Segment->SetAngle( 900 );
|
||||
|
|
|
@ -52,10 +52,10 @@ bool PCB_EDIT_FRAME::Other_Layer_Route( TRACK* aTrack, wxDC* DC )
|
|||
|
||||
if( aTrack == NULL )
|
||||
{
|
||||
if( getActiveLayer() != ((PCB_SCREEN*)GetScreen())->m_Route_Layer_TOP )
|
||||
setActiveLayer( ((PCB_SCREEN*)GetScreen())->m_Route_Layer_TOP );
|
||||
if( getCurrentLayer() != ((PCB_SCREEN*)GetScreen())->m_Route_Layer_TOP )
|
||||
setCurrentLayer( ((PCB_SCREEN*)GetScreen())->m_Route_Layer_TOP );
|
||||
else
|
||||
setActiveLayer(((PCB_SCREEN*)GetScreen())->m_Route_Layer_BOTTOM );
|
||||
setCurrentLayer(((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 = getActiveLayer();
|
||||
LAYER_NUM first_layer = getCurrentLayer();
|
||||
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;
|
||||
}
|
||||
|
||||
setActiveLayer( last_layer );
|
||||
setCurrentLayer( 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( getActiveLayer() );
|
||||
track->SetLayer( getCurrentLayer() );
|
||||
|
||||
/* 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)
|
||||
|
|
|
@ -243,7 +243,7 @@ void PCB_EDIT_FRAME::OnHotKey( wxDC* aDC, int aHotkeyCode, const wxPoint& aPosit
|
|||
break;
|
||||
|
||||
case HK_SWITCH_LAYER_TO_PREVIOUS:
|
||||
ll = getActiveLayer();
|
||||
ll = getCurrentLayer();
|
||||
|
||||
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 = getActiveLayer();
|
||||
ll = getCurrentLayer();
|
||||
|
||||
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 &&*/ (getActiveLayer() <= LAYER_N_FRONT) )
|
||||
if( /*m_ID_current_state == ID_TRACK_BUTT &&*/ (getCurrentLayer() <= LAYER_N_FRONT) )
|
||||
{
|
||||
if( !itemCurrentlyEdited )
|
||||
{
|
||||
|
@ -572,7 +572,7 @@ bool PCB_EDIT_FRAME::OnHotkeyDeleteItem( wxDC* aDC )
|
|||
switch( GetToolId() )
|
||||
{
|
||||
case ID_TRACK_BUTT:
|
||||
if( getActiveLayer() > LAYER_N_FRONT )
|
||||
if( getCurrentLayer() > 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( getActiveLayer() > LAYER_N_FRONT )
|
||||
if( getCurrentLayer() > LAYER_N_FRONT )
|
||||
return NULL;
|
||||
|
||||
bool itemCurrentlyEdited = (GetCurItem() && GetCurItem()->GetFlags());
|
||||
|
|
|
@ -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( getActiveLayer() ) )
|
||||
if( IsCopperLayer( getCurrentLayer() ) )
|
||||
{
|
||||
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( getActiveLayer() ) )
|
||||
if( !IsCopperLayer( getCurrentLayer() ) )
|
||||
{
|
||||
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( getActiveLayer() ) )
|
||||
if( IsCopperLayer( getCurrentLayer() ) )
|
||||
{
|
||||
DisplayError( this, _( "Dimension not allowed on Copper layers" ) );
|
||||
break;
|
||||
|
|
|
@ -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 = getActiveLayer();
|
||||
LAYER_NUM currLayer = getCurrentLayer();
|
||||
|
||||
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 )
|
||||
};
|
||||
|
||||
rSettings->ClearActiveLayers();
|
||||
rSettings->SetActiveLayer( aLayer );
|
||||
for( unsigned int i = 0; i < sizeof( layers ) / sizeof( LAYER_NUM ); ++i )
|
||||
rSettings->SetActiveLayer( layers[i] );
|
||||
|
||||
if( IsCopperLayer( aLayer ) )
|
||||
// Pads should be shown too
|
||||
if( aLayer == FIRST_COPPER_LAYER )
|
||||
{
|
||||
// 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 )
|
||||
};
|
||||
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 ) );
|
||||
}
|
||||
}
|
||||
|
||||
for( unsigned int i = 0; i < sizeof( layers ) / sizeof( LAYER_NUM ); ++i )
|
||||
{
|
||||
view->SetTopLayer( layers[i] );
|
||||
rSettings->SetActiveLayer( layers[i] );
|
||||
}
|
||||
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 ) );
|
||||
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 ) );
|
||||
}
|
||||
|
||||
void PCB_EDIT_FRAME::setTopLayer( LAYER_NUM aLayer )
|
||||
{
|
||||
// Set display settings for high contrast mode
|
||||
KiGfx::VIEW* view = m_galCanvas->GetView();
|
||||
|
||||
view->ClearTopLayers();
|
||||
view->SetTopLayer( 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 )
|
||||
{
|
||||
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( getActiveLayer() );
|
||||
m_Layers->SelectLayer( getCurrentLayer() );
|
||||
m_Layers->OnLayerSelected();
|
||||
}
|
||||
|
||||
|
|
|
@ -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(getActiveLayer());
|
||||
active_layer_color = GetBoard()->GetLayerColor(getCurrentLayer());
|
||||
|
||||
if( previous_active_layer_color != active_layer_color )
|
||||
{
|
||||
|
|
|
@ -96,7 +96,7 @@ void PCB_EDIT_FRAME::OnUpdateSelectViaSize( wxUpdateUIEvent& aEvent )
|
|||
|
||||
void PCB_EDIT_FRAME::OnUpdateLayerSelectBox( wxUpdateUIEvent& aEvent )
|
||||
{
|
||||
m_SelLayerBox->SetLayerSelection( getActiveLayer() );
|
||||
m_SelLayerBox->SetLayerSelection( getCurrentLayer() );
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -518,7 +518,7 @@ int PCB_EDIT_FRAME::Begin_Zone( wxDC* DC )
|
|||
if( !GetBoard()->m_CurrentZoneContour )
|
||||
{
|
||||
if( GetToolId() == ID_PCB_KEEPOUT_AREA_BUTT &&
|
||||
getActiveLayer() >= FIRST_NON_COPPER_LAYER )
|
||||
getCurrentLayer() >= 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( getActiveLayer() );
|
||||
zone->SetLayer( getCurrentLayer() );
|
||||
|
||||
// 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
|
||||
setActiveLayer( zoneInfo.m_CurrentZone_Layer );
|
||||
setCurrentLayer( 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();
|
||||
setActiveLayer( s_CurrentZone->GetLayer() );
|
||||
setCurrentLayer( s_CurrentZone->GetLayer() );
|
||||
|
||||
zoneInfo << *s_CurrentZone;
|
||||
|
||||
|
|
Loading…
Reference in New Issue