Minor DRAWING_TOOL refactor
Automatically switch to a drawing layer, if a copper layer was preselected. No annoying message boxes. Do not deactivate the tool on layer switch. Replaced setting updatePreview with direct calls to VIEW::update Line width is kept in m_lineWidth for all shapes.
This commit is contained in:
parent
6c5e5c27e2
commit
2a9c6a6283
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2014 CERN
|
* Copyright (C) 2014-2017 CERN
|
||||||
* Copyright (C) 2016 KiCad Developers, see AUTHORS.txt for contributors.
|
* Copyright (C) 2016 KiCad Developers, see AUTHORS.txt for contributors.
|
||||||
* @author Maciej Suminski <maciej.suminski@cern.ch>
|
* @author Maciej Suminski <maciej.suminski@cern.ch>
|
||||||
*
|
*
|
||||||
|
@ -108,6 +108,7 @@ int DRAWING_TOOL::DrawLine( const TOOL_EVENT& aEvent )
|
||||||
|
|
||||||
m_frame->SetToolID( m_editModules ? ID_MODEDIT_LINE_TOOL : ID_PCB_ADD_LINE_BUTT,
|
m_frame->SetToolID( m_editModules ? ID_MODEDIT_LINE_TOOL : ID_PCB_ADD_LINE_BUTT,
|
||||||
wxCURSOR_PENCIL, _( "Add graphic line" ) );
|
wxCURSOR_PENCIL, _( "Add graphic line" ) );
|
||||||
|
m_lineWidth = getSegmentWidth( getDrawingLayer() );
|
||||||
|
|
||||||
while( drawSegment( S_SEGMENT, line, startingPoint ) )
|
while( drawSegment( S_SEGMENT, line, startingPoint ) )
|
||||||
{
|
{
|
||||||
|
@ -141,6 +142,7 @@ int DRAWING_TOOL::DrawCircle( const TOOL_EVENT& aEvent )
|
||||||
|
|
||||||
m_frame->SetToolID( m_editModules ? ID_MODEDIT_CIRCLE_TOOL : ID_PCB_CIRCLE_BUTT,
|
m_frame->SetToolID( m_editModules ? ID_MODEDIT_CIRCLE_TOOL : ID_PCB_CIRCLE_BUTT,
|
||||||
wxCURSOR_PENCIL, _( "Add graphic circle" ) );
|
wxCURSOR_PENCIL, _( "Add graphic circle" ) );
|
||||||
|
m_lineWidth = getSegmentWidth( getDrawingLayer() );
|
||||||
|
|
||||||
while( drawSegment( S_CIRCLE, circle ) )
|
while( drawSegment( S_CIRCLE, circle ) )
|
||||||
{
|
{
|
||||||
|
@ -169,6 +171,7 @@ int DRAWING_TOOL::DrawArc( const TOOL_EVENT& aEvent )
|
||||||
|
|
||||||
m_frame->SetToolID( m_editModules ? ID_MODEDIT_ARC_TOOL : ID_PCB_ARC_BUTT,
|
m_frame->SetToolID( m_editModules ? ID_MODEDIT_ARC_TOOL : ID_PCB_ARC_BUTT,
|
||||||
wxCURSOR_PENCIL, _( "Add graphic arc" ) );
|
wxCURSOR_PENCIL, _( "Add graphic arc" ) );
|
||||||
|
m_lineWidth = getSegmentWidth( getDrawingLayer() );
|
||||||
|
|
||||||
while( drawArc( arc ) )
|
while( drawArc( arc ) )
|
||||||
{
|
{
|
||||||
|
@ -375,6 +378,7 @@ int DRAWING_TOOL::DrawDimension( const TOOL_EVENT& aEvent )
|
||||||
|
|
||||||
Activate();
|
Activate();
|
||||||
m_frame->SetToolID( ID_PCB_DIMENSION_BUTT, wxCURSOR_PENCIL, _( "Add dimension" ) );
|
m_frame->SetToolID( ID_PCB_DIMENSION_BUTT, wxCURSOR_PENCIL, _( "Add dimension" ) );
|
||||||
|
m_lineWidth = getSegmentWidth( getDrawingLayer() );
|
||||||
|
|
||||||
enum DIMENSION_STEPS
|
enum DIMENSION_STEPS
|
||||||
{
|
{
|
||||||
|
@ -408,17 +412,17 @@ int DRAWING_TOOL::DrawDimension( const TOOL_EVENT& aEvent )
|
||||||
|
|
||||||
else if( evt->IsAction( &COMMON_ACTIONS::incWidth ) && step != SET_ORIGIN )
|
else if( evt->IsAction( &COMMON_ACTIONS::incWidth ) && step != SET_ORIGIN )
|
||||||
{
|
{
|
||||||
dimension->SetWidth( dimension->GetWidth() + WIDTH_STEP );
|
m_lineWidth += WIDTH_STEP;
|
||||||
|
dimension->SetWidth( m_lineWidth );
|
||||||
m_view->Update( &preview );
|
m_view->Update( &preview );
|
||||||
}
|
}
|
||||||
|
|
||||||
else if( evt->IsAction( &COMMON_ACTIONS::decWidth ) && step != SET_ORIGIN )
|
else if( evt->IsAction( &COMMON_ACTIONS::decWidth ) && step != SET_ORIGIN )
|
||||||
{
|
{
|
||||||
int width = dimension->GetWidth();
|
if( m_lineWidth > WIDTH_STEP )
|
||||||
|
|
||||||
if( width > WIDTH_STEP )
|
|
||||||
{
|
{
|
||||||
dimension->SetWidth( width - WIDTH_STEP );
|
m_lineWidth -= WIDTH_STEP;
|
||||||
|
dimension->SetWidth( m_lineWidth );
|
||||||
m_view->Update( &preview );
|
m_view->Update( &preview );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -434,37 +438,29 @@ int DRAWING_TOOL::DrawDimension( const TOOL_EVENT& aEvent )
|
||||||
{
|
{
|
||||||
case SET_ORIGIN:
|
case SET_ORIGIN:
|
||||||
{
|
{
|
||||||
LAYER_ID layer = m_frame->GetScreen()->m_Active_Layer;
|
LAYER_ID layer = getDrawingLayer();
|
||||||
|
|
||||||
if( IsCopperLayer( layer ) || layer == Edge_Cuts )
|
// Init the new item attributes
|
||||||
{
|
dimension = new DIMENSION( m_board );
|
||||||
DisplayInfoMessage( NULL, _( "Dimension not allowed on Copper or Edge Cut layers" ) );
|
dimension->SetLayer( layer );
|
||||||
--step;
|
dimension->SetOrigin( wxPoint( cursorPos.x, cursorPos.y ) );
|
||||||
}
|
dimension->SetEnd( wxPoint( cursorPos.x, cursorPos.y ) );
|
||||||
else
|
dimension->Text().SetTextSize( m_board->GetDesignSettings().m_PcbTextSize );
|
||||||
{
|
|
||||||
// Init the new item attributes
|
|
||||||
dimension = new DIMENSION( m_board );
|
|
||||||
dimension->SetLayer( layer );
|
|
||||||
dimension->SetOrigin( wxPoint( cursorPos.x, cursorPos.y ) );
|
|
||||||
dimension->SetEnd( wxPoint( cursorPos.x, cursorPos.y ) );
|
|
||||||
dimension->Text().SetTextSize( m_board->GetDesignSettings().m_PcbTextSize );
|
|
||||||
|
|
||||||
int width = m_board->GetDesignSettings().m_PcbTextWidth;
|
int width = m_board->GetDesignSettings().m_PcbTextWidth;
|
||||||
maxThickness = Clamp_Text_PenSize( width, dimension->Text().GetTextSize() );
|
maxThickness = Clamp_Text_PenSize( width, dimension->Text().GetTextSize() );
|
||||||
|
|
||||||
if( width > maxThickness )
|
if( width > maxThickness )
|
||||||
width = maxThickness;
|
width = maxThickness;
|
||||||
|
|
||||||
dimension->Text().SetThickness( width );
|
dimension->Text().SetThickness( width );
|
||||||
dimension->SetWidth( width );
|
dimension->SetWidth( width );
|
||||||
dimension->AdjustDimensionDetails();
|
dimension->AdjustDimensionDetails();
|
||||||
|
|
||||||
preview.Add( dimension );
|
preview.Add( dimension );
|
||||||
|
|
||||||
m_controls->SetAutoPan( true );
|
m_controls->SetAutoPan( true );
|
||||||
m_controls->CaptureCursor( true );
|
m_controls->CaptureCursor( true );
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -584,7 +580,6 @@ int DRAWING_TOOL::PlaceDXF( const TOOL_EVENT& aEvent )
|
||||||
for( auto item : list )
|
for( auto item : list )
|
||||||
{
|
{
|
||||||
assert( item->Type() == PCB_LINE_T || item->Type() == PCB_TEXT_T );
|
assert( item->Type() == PCB_LINE_T || item->Type() == PCB_TEXT_T );
|
||||||
|
|
||||||
preview.Add( item );
|
preview.Add( item );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -819,14 +814,12 @@ bool DRAWING_TOOL::drawSegment( int aShape, DRAWSEGMENT*& aGraphic,
|
||||||
|
|
||||||
if( aStartingPoint )
|
if( aStartingPoint )
|
||||||
{
|
{
|
||||||
LAYER_ID layer = m_frame->GetScreen()->m_Active_Layer;
|
|
||||||
|
|
||||||
// Init the new item attributes
|
// Init the new item attributes
|
||||||
aGraphic->SetShape( (STROKE_T) aShape );
|
aGraphic->SetShape( (STROKE_T) aShape );
|
||||||
aGraphic->SetWidth( m_lineWidth );
|
aGraphic->SetWidth( m_lineWidth );
|
||||||
aGraphic->SetStart( wxPoint( aStartingPoint->x, aStartingPoint->y ) );
|
aGraphic->SetStart( wxPoint( aStartingPoint->x, aStartingPoint->y ) );
|
||||||
aGraphic->SetEnd( wxPoint( cursorPos.x, cursorPos.y ) );
|
aGraphic->SetEnd( wxPoint( cursorPos.x, cursorPos.y ) );
|
||||||
aGraphic->SetLayer( layer );
|
aGraphic->SetLayer( getDrawingLayer() );
|
||||||
|
|
||||||
if( aShape == S_SEGMENT )
|
if( aShape == S_SEGMENT )
|
||||||
line45 = *aGraphic; // used only for direction 45 mode with lines
|
line45 = *aGraphic; // used only for direction 45 mode with lines
|
||||||
|
@ -841,7 +834,6 @@ bool DRAWING_TOOL::drawSegment( int aShape, DRAWSEGMENT*& aGraphic,
|
||||||
// Main loop: keep receiving events
|
// Main loop: keep receiving events
|
||||||
while( OPT_TOOL_EVENT evt = Wait() )
|
while( OPT_TOOL_EVENT evt = Wait() )
|
||||||
{
|
{
|
||||||
bool updatePreview = false; // should preview be updated
|
|
||||||
cursorPos = m_controls->GetCursorPosition();
|
cursorPos = m_controls->GetCursorPosition();
|
||||||
|
|
||||||
// 45 degree angle constraint enabled with an option and toggled with Ctrl
|
// 45 degree angle constraint enabled with an option and toggled with Ctrl
|
||||||
|
@ -862,17 +854,22 @@ bool DRAWING_TOOL::drawSegment( int aShape, DRAWSEGMENT*& aGraphic,
|
||||||
aGraphic->SetEnd( wxPoint( cursorPos.x, cursorPos.y ) );
|
aGraphic->SetEnd( wxPoint( cursorPos.x, cursorPos.y ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
updatePreview = true;
|
m_view->Update( &preview );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( evt->IsCancel() || evt->IsActivate() || evt->IsAction( &COMMON_ACTIONS::layerChanged ) )
|
if( evt->IsCancel() || evt->IsActivate() )
|
||||||
{
|
{
|
||||||
preview.Clear();
|
preview.Clear();
|
||||||
updatePreview = true;
|
m_view->Update( &preview );
|
||||||
delete aGraphic;
|
delete aGraphic;
|
||||||
aGraphic = NULL;
|
aGraphic = NULL;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
else if( evt->IsAction( &COMMON_ACTIONS::layerChanged ) )
|
||||||
|
{
|
||||||
|
aGraphic->SetLayer( getDrawingLayer() );
|
||||||
|
m_view->Update( &preview );
|
||||||
|
}
|
||||||
else if( evt->IsClick( BUT_RIGHT ) )
|
else if( evt->IsClick( BUT_RIGHT ) )
|
||||||
{
|
{
|
||||||
m_menu.ShowContextMenu();
|
m_menu.ShowContextMenu();
|
||||||
|
@ -881,38 +878,28 @@ bool DRAWING_TOOL::drawSegment( int aShape, DRAWSEGMENT*& aGraphic,
|
||||||
{
|
{
|
||||||
if( !started )
|
if( !started )
|
||||||
{
|
{
|
||||||
LAYER_ID layer = m_frame->GetScreen()->m_Active_Layer;
|
// Init the new item attributes
|
||||||
|
aGraphic->SetShape( (STROKE_T) aShape );
|
||||||
|
aGraphic->SetWidth( m_lineWidth );
|
||||||
|
aGraphic->SetStart( wxPoint( cursorPos.x, cursorPos.y ) );
|
||||||
|
aGraphic->SetEnd( wxPoint( cursorPos.x, cursorPos.y ) );
|
||||||
|
aGraphic->SetLayer( getDrawingLayer() );
|
||||||
|
|
||||||
if( IsCopperLayer( layer ) )
|
if( aShape == S_SEGMENT )
|
||||||
{
|
line45 = *aGraphic; // used only for direction 45 mode with lines
|
||||||
DisplayInfoMessage( NULL, _( "Graphic not allowed on Copper layers" ) );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Init the new item attributes
|
|
||||||
aGraphic->SetShape( (STROKE_T) aShape );
|
|
||||||
m_lineWidth = getSegmentWidth( layer );
|
|
||||||
aGraphic->SetWidth( m_lineWidth );
|
|
||||||
aGraphic->SetStart( wxPoint( cursorPos.x, cursorPos.y ) );
|
|
||||||
aGraphic->SetEnd( wxPoint( cursorPos.x, cursorPos.y ) );
|
|
||||||
aGraphic->SetLayer( layer );
|
|
||||||
|
|
||||||
if( aShape == S_SEGMENT )
|
preview.Add( aGraphic );
|
||||||
line45 = *aGraphic; // used only for direction 45 mode with lines
|
m_controls->SetAutoPan( true );
|
||||||
|
m_controls->CaptureCursor( true );
|
||||||
|
|
||||||
preview.Add( aGraphic );
|
started = true;
|
||||||
m_controls->SetAutoPan( true );
|
|
||||||
m_controls->CaptureCursor( true );
|
|
||||||
|
|
||||||
started = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if( aGraphic->GetEnd() == aGraphic->GetStart() ||
|
if( aGraphic->GetEnd() == aGraphic->GetStart() ||
|
||||||
( evt->IsDblClick( BUT_LEFT ) && aShape == S_SEGMENT ) )
|
( evt->IsDblClick( BUT_LEFT ) && aShape == S_SEGMENT ) )
|
||||||
// User has clicked twice in the same spot
|
// User has clicked twice in the same spot
|
||||||
{ // a clear sign that the current drawing is finished
|
{ // a clear sign that the current drawing is finished
|
||||||
// Now we have to add the helper line as well
|
// Now we have to add the helper line as well
|
||||||
if( direction45 )
|
if( direction45 )
|
||||||
{
|
{
|
||||||
|
@ -946,28 +933,24 @@ bool DRAWING_TOOL::drawSegment( int aShape, DRAWSEGMENT*& aGraphic,
|
||||||
else
|
else
|
||||||
aGraphic->SetEnd( wxPoint( cursorPos.x, cursorPos.y ) );
|
aGraphic->SetEnd( wxPoint( cursorPos.x, cursorPos.y ) );
|
||||||
|
|
||||||
updatePreview = true;
|
m_view->Update( &preview );
|
||||||
}
|
}
|
||||||
|
|
||||||
else if( evt->IsAction( &COMMON_ACTIONS::incWidth ) )
|
else if( evt->IsAction( &COMMON_ACTIONS::incWidth ) )
|
||||||
{
|
{
|
||||||
m_lineWidth += WIDTH_STEP;
|
m_lineWidth += WIDTH_STEP;
|
||||||
aGraphic->SetWidth( m_lineWidth );
|
aGraphic->SetWidth( m_lineWidth );
|
||||||
updatePreview = true;
|
line45.SetWidth( m_lineWidth );
|
||||||
}
|
|
||||||
|
|
||||||
else if( evt->IsAction( &COMMON_ACTIONS::decWidth ) )
|
|
||||||
{
|
|
||||||
if( m_lineWidth > (unsigned) WIDTH_STEP )
|
|
||||||
{
|
|
||||||
m_lineWidth -= WIDTH_STEP;
|
|
||||||
aGraphic->SetWidth( m_lineWidth );
|
|
||||||
updatePreview = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if( updatePreview )
|
|
||||||
m_view->Update( &preview );
|
m_view->Update( &preview );
|
||||||
|
}
|
||||||
|
|
||||||
|
else if( evt->IsAction( &COMMON_ACTIONS::decWidth ) && ( m_lineWidth > WIDTH_STEP ) )
|
||||||
|
{
|
||||||
|
m_lineWidth -= WIDTH_STEP;
|
||||||
|
aGraphic->SetWidth( m_lineWidth );
|
||||||
|
line45.SetWidth( m_lineWidth );
|
||||||
|
m_view->Update( &preview );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_controls->ShowCursor( false );
|
m_controls->ShowCursor( false );
|
||||||
|
@ -986,6 +969,7 @@ bool DRAWING_TOOL::drawArc( DRAWSEGMENT*& aGraphic )
|
||||||
double startAngle = 0.0f; // angle of the first arc line
|
double startAngle = 0.0f; // angle of the first arc line
|
||||||
VECTOR2I cursorPos = m_controls->GetCursorPosition();
|
VECTOR2I cursorPos = m_controls->GetCursorPosition();
|
||||||
|
|
||||||
|
// Line from the arc center to its origin, to visualize its radius
|
||||||
DRAWSEGMENT helperLine;
|
DRAWSEGMENT helperLine;
|
||||||
helperLine.SetShape( S_SEGMENT );
|
helperLine.SetShape( S_SEGMENT );
|
||||||
helperLine.SetLayer( Dwgs_User );
|
helperLine.SetLayer( Dwgs_User );
|
||||||
|
@ -1032,31 +1016,26 @@ bool DRAWING_TOOL::drawArc( DRAWSEGMENT*& aGraphic )
|
||||||
{
|
{
|
||||||
case SET_ORIGIN:
|
case SET_ORIGIN:
|
||||||
{
|
{
|
||||||
LAYER_ID layer = m_frame->GetScreen()->m_Active_Layer;
|
LAYER_ID layer = getDrawingLayer();
|
||||||
|
|
||||||
if( IsCopperLayer( layer ) )
|
if( layer == Edge_Cuts ) // dimensions are not allowed on EdgeCuts
|
||||||
{
|
layer = Dwgs_User;
|
||||||
DisplayInfoMessage( NULL, _( "Graphic not allowed on Copper layers" ) );
|
|
||||||
--step;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Init the new item attributes
|
|
||||||
aGraphic->SetShape( S_ARC );
|
|
||||||
aGraphic->SetAngle( 0.0 );
|
|
||||||
aGraphic->SetWidth( getSegmentWidth( layer ) );
|
|
||||||
aGraphic->SetCenter( wxPoint( cursorPos.x, cursorPos.y ) );
|
|
||||||
aGraphic->SetLayer( layer );
|
|
||||||
|
|
||||||
helperLine.SetStart( aGraphic->GetCenter() );
|
// Init the new item attributes
|
||||||
helperLine.SetEnd( aGraphic->GetCenter() );
|
aGraphic->SetShape( S_ARC );
|
||||||
|
aGraphic->SetAngle( 0.0 );
|
||||||
|
aGraphic->SetWidth( m_lineWidth );
|
||||||
|
aGraphic->SetCenter( wxPoint( cursorPos.x, cursorPos.y ) );
|
||||||
|
aGraphic->SetLayer( layer );
|
||||||
|
|
||||||
preview.Add( aGraphic );
|
helperLine.SetStart( aGraphic->GetCenter() );
|
||||||
preview.Add( &helperLine );
|
helperLine.SetEnd( aGraphic->GetCenter() );
|
||||||
|
|
||||||
m_controls->SetAutoPan( true );
|
preview.Add( aGraphic );
|
||||||
m_controls->CaptureCursor( true );
|
preview.Add( &helperLine );
|
||||||
}
|
|
||||||
|
m_controls->SetAutoPan( true );
|
||||||
|
m_controls->CaptureCursor( true );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1120,25 +1099,21 @@ bool DRAWING_TOOL::drawArc( DRAWSEGMENT*& aGraphic )
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Show a preview of the item
|
|
||||||
m_view->Update( &preview );
|
m_view->Update( &preview );
|
||||||
}
|
}
|
||||||
|
|
||||||
else if( evt->IsAction( &COMMON_ACTIONS::incWidth ) )
|
else if( evt->IsAction( &COMMON_ACTIONS::incWidth ) )
|
||||||
{
|
{
|
||||||
aGraphic->SetWidth( aGraphic->GetWidth() + WIDTH_STEP );
|
m_lineWidth += WIDTH_STEP;
|
||||||
|
aGraphic->SetWidth( m_lineWidth );
|
||||||
m_view->Update( &preview );
|
m_view->Update( &preview );
|
||||||
}
|
}
|
||||||
|
|
||||||
else if( evt->IsAction( &COMMON_ACTIONS::decWidth ) )
|
else if( evt->IsAction( &COMMON_ACTIONS::decWidth ) && m_lineWidth > WIDTH_STEP )
|
||||||
{
|
{
|
||||||
int width = aGraphic->GetWidth();
|
m_lineWidth -= WIDTH_STEP;
|
||||||
|
aGraphic->SetWidth( m_lineWidth );
|
||||||
if( width > WIDTH_STEP )
|
m_view->Update( &preview );
|
||||||
{
|
|
||||||
aGraphic->SetWidth( width - WIDTH_STEP );
|
|
||||||
m_view->Update( &preview );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
else if( evt->IsAction( &COMMON_ACTIONS::arcPosture ) )
|
else if( evt->IsAction( &COMMON_ACTIONS::arcPosture ) )
|
||||||
|
@ -1187,7 +1162,6 @@ int DRAWING_TOOL::drawZone( bool aKeepout )
|
||||||
// Main loop: keep receiving events
|
// Main loop: keep receiving events
|
||||||
while( OPT_TOOL_EVENT evt = Wait() )
|
while( OPT_TOOL_EVENT evt = Wait() )
|
||||||
{
|
{
|
||||||
bool updatePreview = false; // should preview be updated
|
|
||||||
VECTOR2I cursorPos = m_controls->GetCursorPosition();
|
VECTOR2I cursorPos = m_controls->GetCursorPosition();
|
||||||
|
|
||||||
// Enable 45 degrees lines only mode by holding control
|
// Enable 45 degrees lines only mode by holding control
|
||||||
|
@ -1206,7 +1180,7 @@ int DRAWING_TOOL::drawZone( bool aKeepout )
|
||||||
helperLine->SetEnd( wxPoint( cursorPos.x, cursorPos.y ) );
|
helperLine->SetEnd( wxPoint( cursorPos.x, cursorPos.y ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
updatePreview = true;
|
m_view->Update( &preview );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( evt->IsCancel() || evt->IsActivate() )
|
if( evt->IsCancel() || evt->IsActivate() )
|
||||||
|
@ -1225,7 +1199,7 @@ int DRAWING_TOOL::drawZone( bool aKeepout )
|
||||||
}
|
}
|
||||||
|
|
||||||
preview.FreeItems();
|
preview.FreeItems();
|
||||||
updatePreview = true;
|
m_view->Update( &preview );
|
||||||
|
|
||||||
numPoints = 0;
|
numPoints = 0;
|
||||||
}
|
}
|
||||||
|
@ -1280,7 +1254,7 @@ int DRAWING_TOOL::drawZone( bool aKeepout )
|
||||||
}
|
}
|
||||||
|
|
||||||
preview.FreeItems();
|
preview.FreeItems();
|
||||||
updatePreview = true;
|
m_view->Update( &preview );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1348,7 +1322,7 @@ int DRAWING_TOOL::drawZone( bool aKeepout )
|
||||||
}
|
}
|
||||||
|
|
||||||
++numPoints;
|
++numPoints;
|
||||||
updatePreview = true;
|
m_view->Update( &preview );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1360,12 +1334,8 @@ int DRAWING_TOOL::drawZone( bool aKeepout )
|
||||||
else
|
else
|
||||||
helperLine->SetEnd( wxPoint( cursorPos.x, cursorPos.y ) );
|
helperLine->SetEnd( wxPoint( cursorPos.x, cursorPos.y ) );
|
||||||
|
|
||||||
// Show a preview of the item
|
|
||||||
updatePreview = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( updatePreview )
|
|
||||||
m_view->Update( &preview );
|
m_view->Update( &preview );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_controls->ShowCursor( false );
|
m_controls->ShowCursor( false );
|
||||||
|
@ -1429,4 +1399,23 @@ int DRAWING_TOOL::getSegmentWidth( unsigned int aLayer ) const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const int DRAWING_TOOL::WIDTH_STEP = 100000;
|
LAYER_ID DRAWING_TOOL::getDrawingLayer() const
|
||||||
|
{
|
||||||
|
LAYER_ID layer = m_frame->GetActiveLayer();
|
||||||
|
|
||||||
|
if( IsCopperLayer( layer ) )
|
||||||
|
{
|
||||||
|
if( layer == F_Cu )
|
||||||
|
layer = F_SilkS;
|
||||||
|
else if( layer == B_Cu )
|
||||||
|
layer = B_SilkS;
|
||||||
|
else
|
||||||
|
layer = Dwgs_User;
|
||||||
|
|
||||||
|
m_frame->SetActiveLayer( layer );
|
||||||
|
}
|
||||||
|
|
||||||
|
return layer;
|
||||||
|
}
|
||||||
|
|
||||||
|
const unsigned int DRAWING_TOOL::WIDTH_STEP = 100000;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2014 CERN
|
* Copyright (C) 2014-2017 CERN
|
||||||
* @author Maciej Suminski <maciej.suminski@cern.ch>
|
* @author Maciej Suminski <maciej.suminski@cern.ch>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
|
@ -196,6 +196,9 @@ private:
|
||||||
///> Returns the appropriate width for a segment depending on the settings.
|
///> Returns the appropriate width for a segment depending on the settings.
|
||||||
int getSegmentWidth( unsigned int aLayer ) const;
|
int getSegmentWidth( unsigned int aLayer ) const;
|
||||||
|
|
||||||
|
///> Selects a non-copper layer for drawing
|
||||||
|
LAYER_ID getDrawingLayer() const;
|
||||||
|
|
||||||
KIGFX::VIEW* m_view;
|
KIGFX::VIEW* m_view;
|
||||||
KIGFX::VIEW_CONTROLS* m_controls;
|
KIGFX::VIEW_CONTROLS* m_controls;
|
||||||
BOARD* m_board;
|
BOARD* m_board;
|
||||||
|
@ -209,7 +212,7 @@ private:
|
||||||
TOOL_MENU m_menu;
|
TOOL_MENU m_menu;
|
||||||
|
|
||||||
// How does line width change after one -/+ key press.
|
// How does line width change after one -/+ key press.
|
||||||
static const int WIDTH_STEP;
|
static const unsigned int WIDTH_STEP;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* __DRAWING_TOOL_H */
|
#endif /* __DRAWING_TOOL_H */
|
||||||
|
|
Loading…
Reference in New Issue