Commit 435ca8a7 authored by Tomasz Wlostowski's avatar Tomasz Wlostowski Committed by Maciej Suminski
Browse files

router: fix tuning status popup & incorrect length display

parent 504c8bf2
Loading
Loading
Loading
Loading
+21 −12
Original line number Diff line number Diff line
@@ -147,6 +147,16 @@ void LENGTH_TUNER_TOOL::handleCommonEvents( const TOOL_EVENT& aEvent )
    }
}

void LENGTH_TUNER_TOOL::updateStatusPopup( PNS_TUNE_STATUS_POPUP& aPopup )
{
    wxPoint p = wxGetMousePosition(); 

    p.x += 20;
    p.y += 20;

    aPopup.Update( m_router );
    aPopup.Move( p );
}

void LENGTH_TUNER_TOOL::performTuning()
{
@@ -170,13 +180,18 @@ void LENGTH_TUNER_TOOL::performTuning()
        return;
    }

    PNS_MEANDER_PLACER_BASE* placer = static_cast<PNS_MEANDER_PLACER_BASE*>( m_router->Placer() );
    
    placer->UpdateSettings( m_savedMeanderSettings );

    VECTOR2I end( m_startSnapPoint );

    PNS_TUNE_STATUS_POPUP statusPopup( m_frame );
    statusPopup.Popup();

    PNS_MEANDER_PLACER* placer = static_cast<PNS_MEANDER_PLACER*>( m_router->Placer() );
    VECTOR2I end;
    m_router->Move( end, NULL );
    updateStatusPopup( statusPopup );

    placer->UpdateSettings( m_savedMeanderSettings );
    
    while( OPT_TOOL_EVENT evt = Wait() )
    {
@@ -191,14 +206,8 @@ void LENGTH_TUNER_TOOL::performTuning()
        {
            end = evt->Position();
            m_router->Move( end, NULL );
            updateStatusPopup( statusPopup );
            
            wxPoint p = wxGetMousePosition();

            p.x += 20;
            p.y += 20;

            statusPopup.Update( m_router );
            statusPopup.Move( p );
        }
        else if( evt->IsClick( BUT_LEFT ) )
        {
+3 −0
Original line number Diff line number Diff line
@@ -44,6 +44,9 @@ private:
    void performTuning( );
    int mainLoop( PNS_ROUTER_MODE aMode );
    void handleCommonEvents( const TOOL_EVENT& aEvent );
    void updateStatusPopup ( PNS_TUNE_STATUS_POPUP& aPopup );



    PNS_MEANDER_SETTINGS m_savedMeanderSettings;
};
+15 −1
Original line number Diff line number Diff line
@@ -64,7 +64,20 @@ void PNS_MEANDER_PLACER_BASE::cutTunedLine( const SHAPE_LINE_CHAIN& aOrigin,
                                            SHAPE_LINE_CHAIN& aTuned,
                                            SHAPE_LINE_CHAIN& aPost )
{
    VECTOR2I n = aOrigin.NearestPoint( aCursorPos );
    VECTOR2I cp ( aCursorPos );

    if ( cp == aTuneStart ) // we don't like tuning segments with 0 length
    {
        int idx = aOrigin.FindSegment( cp );
        if( idx >= 0 ) 
        {
            const SEG& s = aOrigin.CSegment( idx );
            cp += (s.B - s.A).Resize(2);
        } else
            cp += VECTOR2I (2, 5); // some arbitrary value that is not 45 degrees oriented
    }

    VECTOR2I n = aOrigin.NearestPoint( cp );
    VECTOR2I m = aOrigin.NearestPoint( aTuneStart );

    SHAPE_LINE_CHAIN l( aOrigin );
@@ -84,6 +97,7 @@ void PNS_MEANDER_PLACER_BASE::cutTunedLine( const SHAPE_LINE_CHAIN& aOrigin,
    aPre = l.Slice( 0, i_start );
    aPost = l.Slice( i_end, -1 );
    aTuned = l.Slice( i_start, i_end );

    aTuned.Simplify();
}