Commit a24576f3 authored by Maciej Suminski's avatar Maciej Suminski
Browse files

Initial version of the GAL-based Module Editor.

parent 8a5fedb7
Loading
Loading
Loading
Loading
+10 −0
Original line number Original line Diff line number Diff line
@@ -30,6 +30,7 @@


#include <fctsys.h>
#include <fctsys.h>
#include <class_drawpanel.h>
#include <class_drawpanel.h>
#include <pcb_draw_panel_gal.h>
#include <confirm.h>
#include <confirm.h>
#include <eda_doc.h>
#include <eda_doc.h>
#include <kicad_string.h>
#include <kicad_string.h>
@@ -117,6 +118,15 @@ bool FOOTPRINT_EDIT_FRAME::Load_Module_From_BOARD( MODULE* aModule )
    GetScreen()->ClrModify();
    GetScreen()->ClrModify();
    Zoom_Automatique( false );
    Zoom_Automatique( false );


    if( IsGalCanvasActive() )
    {
        static_cast<PCB_DRAW_PANEL_GAL*>( GetGalCanvas() )->DisplayBoard( GetBoard() );

        m_Pcb->ComputeBoundingBox( false );
        EDA_RECT boardBbox = m_Pcb->GetBoundingBox();
        GetGalCanvas()->GetView()->SetViewport( BOX2D( boardBbox.GetOrigin(), boardBbox.GetSize() ) );
    }

    return true;
    return true;
}
}


+13 −0
Original line number Original line Diff line number Diff line
@@ -29,6 +29,7 @@
#include <kiface_i.h>
#include <kiface_i.h>
#include <kiway.h>
#include <kiway.h>
#include <class_drawpanel.h>
#include <class_drawpanel.h>
#include <pcb_draw_panel_gal.h>
#include <confirm.h>
#include <confirm.h>
#include <gestfich.h>
#include <gestfich.h>
#include <pgm_base.h>
#include <pgm_base.h>
@@ -914,3 +915,15 @@ EDA_COLOR_T FOOTPRINT_EDIT_FRAME::GetGridColor() const
    return g_ColorsSettings.GetItemColor( GRID_VISIBLE );
    return g_ColorsSettings.GetItemColor( GRID_VISIBLE );
}
}



void FOOTPRINT_EDIT_FRAME::UseGalCanvas( bool aEnable )
{
    EDA_DRAW_FRAME::UseGalCanvas( aEnable );

    if( aEnable )
    {
        SetBoard( m_Pcb );

        GetGalCanvas()->StartDrawing();
    }
}
+3 −0
Original line number Original line Diff line number Diff line
@@ -399,6 +399,9 @@ public:


    virtual EDA_COLOR_T GetGridColor() const;
    virtual EDA_COLOR_T GetGridColor() const;


    ///> @copydoc EDA_DRAW_FRAME::UseGalCanvas()
    virtual void UseGalCanvas( bool aEnable );

    DECLARE_EVENT_TABLE()
    DECLARE_EVENT_TABLE()


protected:
protected:
+42 −0
Original line number Original line Diff line number Diff line
@@ -35,6 +35,7 @@
#include <project.h>
#include <project.h>
#include <kicad_plugin.h>
#include <kicad_plugin.h>
#include <class_drawpanel.h>
#include <class_drawpanel.h>
#include <pcb_draw_panel_gal.h>
#include <confirm.h>
#include <confirm.h>
#include <wxPcbStruct.h>
#include <wxPcbStruct.h>
#include <dialog_helpers.h>
#include <dialog_helpers.h>
@@ -52,6 +53,15 @@
#include <module_editor_frame.h>
#include <module_editor_frame.h>
#include <wildcards_and_files_ext.h>
#include <wildcards_and_files_ext.h>


#include <tool/tool_manager.h>
#include <tool/tool_dispatcher.h>
#include "tools/selection_tool.h"
#include "tools/edit_tool.h"
#include "tools/drawing_tool.h"
#include "tools/point_editor.h"
#include "tools/pcbnew_control.h"
#include "tools/common_actions.h"



BEGIN_EVENT_TABLE( FOOTPRINT_EDIT_FRAME, PCB_BASE_FRAME )
BEGIN_EVENT_TABLE( FOOTPRINT_EDIT_FRAME, PCB_BASE_FRAME )
    EVT_MENU_RANGE( ID_POPUP_PCB_ITEM_SELECTION_START, ID_POPUP_PCB_ITEM_SELECTION_END,
    EVT_MENU_RANGE( ID_POPUP_PCB_ITEM_SELECTION_START, ID_POPUP_PCB_ITEM_SELECTION_END,
@@ -167,6 +177,12 @@ FOOTPRINT_EDIT_FRAME::FOOTPRINT_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
    // Show a title (frame title + footprint name):
    // Show a title (frame title + footprint name):
    updateTitle();
    updateTitle();


    // Create GAL canvas
    EDA_DRAW_FRAME* drawFrame = static_cast<EDA_DRAW_FRAME*>( aParent );
    PCB_DRAW_PANEL_GAL* drawPanel = new PCB_DRAW_PANEL_GAL( this, -1, wxPoint( 0, 0 ), m_FrameSize,
                                                            drawFrame->GetGalCanvas()->GetBackend() );
    SetGalCanvas( drawPanel );

    SetBoard( new BOARD() );
    SetBoard( new BOARD() );


    // restore the last footprint from the project, if any
    // restore the last footprint from the project, if any
@@ -224,11 +240,37 @@ FOOTPRINT_EDIT_FRAME::FOOTPRINT_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) :


    m_auimgr.AddPane( m_canvas,
    m_auimgr.AddPane( m_canvas,
                      wxAuiPaneInfo().Name( wxT( "DrawFrame" ) ).CentrePane() );
                      wxAuiPaneInfo().Name( wxT( "DrawFrame" ) ).CentrePane() );
    m_auimgr.AddPane( (wxWindow*) GetGalCanvas(),
                      wxAuiPaneInfo().Name( wxT( "DrawFrameGal" ) ).CentrePane().Hide() );


    m_auimgr.AddPane( m_messagePanel,
    m_auimgr.AddPane( m_messagePanel,
                      wxAuiPaneInfo( mesg_pane ).Name( wxT( "MsgPanel" ) ).Bottom().Layer(10) );
                      wxAuiPaneInfo( mesg_pane ).Name( wxT( "MsgPanel" ) ).Bottom().Layer(10) );


    m_auimgr.Update();
    m_auimgr.Update();

    if( drawFrame->IsGalCanvasActive() )
    {
        drawPanel->DisplayBoard( GetBoard() );

        // Create the manager and dispatcher & route draw panel events to the dispatcher
        m_toolManager = new TOOL_MANAGER;
        m_toolManager->SetEnvironment( GetBoard(), drawPanel->GetView(),
                                       drawPanel->GetViewControls(), this );
        m_toolDispatcher = new TOOL_DISPATCHER( m_toolManager );
        drawPanel->SetEventDispatcher( m_toolDispatcher );

        m_toolManager->RegisterTool( new SELECTION_TOOL );
        m_toolManager->RegisterTool( new EDIT_TOOL );
        m_toolManager->RegisterTool( new DRAWING_TOOL );
        m_toolManager->RegisterTool( new POINT_EDITOR );
        m_toolManager->RegisterTool( new PCBNEW_CONTROL );
        m_toolManager->ResetTools( TOOL_BASE::RUN );

        // Run the selection tool, it is supposed to be always active
        m_toolManager->InvokeTool( "pcbnew.InteractiveSelection" );

        UseGalCanvas( true );
    }
}
}




+1 −0
Original line number Original line Diff line number Diff line
@@ -545,6 +545,7 @@ void EDIT_TOOL::processChanges( const PICKED_ITEMS_LIST* aList )
        switch( operation )
        switch( operation )
        {
        {
        case UR_CHANGED:
        case UR_CHANGED:
        case UR_MODEDIT:
            updItem->ViewUpdate( KIGFX::VIEW_ITEM::GEOMETRY );
            updItem->ViewUpdate( KIGFX::VIEW_ITEM::GEOMETRY );
            break;
            break;