Commit 9195409f authored by Maciej Suminski's avatar Maciej Suminski
Browse files

pcbnew: GAL updates the worksheet layout when it is reloaded.

parent 2c1cef33
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -135,7 +135,7 @@ public:
     */
     */
    EDA_RECT    GetBoardBoundingBox( bool aBoardEdgesOnly = false ) const;
    EDA_RECT    GetBoardBoundingBox( bool aBoardEdgesOnly = false ) const;


    void SetPageSettings( const PAGE_INFO& aPageSettings );     // overload
    virtual void SetPageSettings( const PAGE_INFO& aPageSettings ); // overload
    const PAGE_INFO& GetPageSettings() const;                   // overload
    const PAGE_INFO& GetPageSettings() const;                   // overload
    const wxSize GetPageSizeIU() const;                         // overload
    const wxSize GetPageSizeIU() const;                         // overload


+4 −1
Original line number Original line Diff line number Diff line
@@ -855,9 +855,12 @@ public:
     */
     */
    bool Clear_Pcb( bool aQuery );
    bool Clear_Pcb( bool aQuery );


    /// @copydoc PCB_BASE_FRAME::SetBoard()
    ///> @copydoc PCB_BASE_FRAME::SetBoard()
    void SetBoard( BOARD* aBoard );
    void SetBoard( BOARD* aBoard );


    ///> @copydoc PCB_BASE_FRAME::SetPageSettings()
    void SetPageSettings( const PAGE_INFO& aPageSettings ); // overload

    // Drc control
    // Drc control


    /* function GetDrcController
    /* function GetDrcController
+24 −10
Original line number Original line Diff line number Diff line
@@ -500,10 +500,32 @@ void PCB_EDIT_FRAME::SetBoard( BOARD* aBoard )
        drawPanel->DisplayBoard( aBoard );
        drawPanel->DisplayBoard( aBoard );
        aBoard->GetRatsnest()->Recalculate();
        aBoard->GetRatsnest()->Recalculate();


        // reload the worksheet
        SetPageSettings( aBoard->GetPageSettings() );

        // update the tool manager with the new board and its view.
        if( m_toolManager )
        {
            m_toolManager->SetEnvironment( aBoard, drawPanel->GetView(),
                                           drawPanel->GetViewControls(), this );
            m_toolManager->ResetTools( TOOL_BASE::MODEL_RELOAD );
        }
    }
}


void PCB_EDIT_FRAME::SetPageSettings( const PAGE_INFO& aPageSettings )
{
    PCB_BASE_FRAME::SetPageSettings( aPageSettings );

    if( IsGalCanvasActive() )
    {
        PCB_DRAW_PANEL_GAL* drawPanel = static_cast<PCB_DRAW_PANEL_GAL*>( GetGalCanvas() );

        // Prepare worksheet template
        // Prepare worksheet template
        KIGFX::WORKSHEET_VIEWITEM* worksheet;
        KIGFX::WORKSHEET_VIEWITEM* worksheet;
        worksheet = new KIGFX::WORKSHEET_VIEWITEM( &aBoard->GetPageSettings(),
        worksheet = new KIGFX::WORKSHEET_VIEWITEM( &m_Pcb->GetPageSettings(),
                                                   &aBoard->GetTitleBlock() );
                                                   &m_Pcb->GetTitleBlock() );
        worksheet->SetSheetName( std::string( GetScreenDesc().mb_str() ) );
        worksheet->SetSheetName( std::string( GetScreenDesc().mb_str() ) );


        BASE_SCREEN* screen = GetScreen();
        BASE_SCREEN* screen = GetScreen();
@@ -516,14 +538,6 @@ void PCB_EDIT_FRAME::SetBoard( BOARD* aBoard )


        // PCB_DRAW_PANEL_GAL takes ownership of the worksheet
        // PCB_DRAW_PANEL_GAL takes ownership of the worksheet
        drawPanel->SetWorksheet( worksheet );
        drawPanel->SetWorksheet( worksheet );

        // update the tool manager with the new board and its view.
        if( m_toolManager )
        {
            m_toolManager->SetEnvironment( aBoard, drawPanel->GetView(),
                                           drawPanel->GetViewControls(), this );
            m_toolManager->ResetTools( TOOL_BASE::MODEL_RELOAD );
        }
    }
    }
}
}