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

Initial version of the Placement Tool.

parent e3c4f425
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -265,6 +265,7 @@ set( PCBNEW_CLASS_SRCS
    tools/pcbnew_control.cpp
    tools/pcb_editor_control.cpp
    tools/pcb_tools.cpp
    tools/placement_tool.cpp
    tools/common_actions.cpp
    )

+2 −0
Original line number Diff line number Diff line
@@ -61,6 +61,7 @@
#include "tools/drawing_tool.h"
#include "tools/point_editor.h"
#include "tools/pcbnew_control.h"
#include "tools/placement_tool.h"
#include "tools/common_actions.h"


@@ -278,6 +279,7 @@ FOOTPRINT_EDIT_FRAME::FOOTPRINT_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
        m_toolManager->RegisterTool( new DRAWING_TOOL );
        m_toolManager->RegisterTool( new POINT_EDITOR );
        m_toolManager->RegisterTool( new PCBNEW_CONTROL );
        m_toolManager->RegisterTool( new PLACEMENT_TOOL );

        m_toolManager->GetTool<SELECTION_TOOL>()->EditModules( true );
        m_toolManager->GetTool<EDIT_TOOL>()->EditModules( true );
+32 −0
Original line number Diff line number Diff line
@@ -285,6 +285,38 @@ TOOL_ACTION COMMON_ACTIONS::pointEditorUpdate( "pcbnew.PointEditor.update",
        AS_GLOBAL, 0, "", "" );    // No description, it is not supposed to be shown anywhere


// Placement tool
TOOL_ACTION COMMON_ACTIONS::alignTop( "pcbnew.Place.alignTop",
        AS_GLOBAL, 0,
        "Align items to the top",
        "Aligns selected items to the top edge" );

TOOL_ACTION COMMON_ACTIONS::alignBottom( "pcbnew.Place.alignBottom",
        AS_GLOBAL, 0,
        "Align items to the bottom",
        "Aligns selected items to the bottom edge" );

TOOL_ACTION COMMON_ACTIONS::alignLeft( "pcbnew.Place.alignLeft",
        AS_GLOBAL, 0,
        "Align items to the left",
        "Aligns selected items to the top left" );

TOOL_ACTION COMMON_ACTIONS::alignRight( "pcbnew.Place.alignRight",
        AS_GLOBAL, 0,
        "Align items to the right",
        "Aligns selected items to the right edge" );

TOOL_ACTION COMMON_ACTIONS::distributeHorizontally( "pcbnew.Place.distributeHorizontally",
        AS_GLOBAL, 0,
        "Distribute horizontally",
        "Distributes selected items along the horizontal axis" );

TOOL_ACTION COMMON_ACTIONS::distributeVertically( "pcbnew.Place.distributeVertically",
        AS_GLOBAL, 0,
        "Distribure vertically",
        "Distributes selected items along the vertical axis" );


boost::optional<TOOL_EVENT> COMMON_ACTIONS::TranslateLegacyId( int aId )
{
    switch( aId )
+19 −0
Original line number Diff line number Diff line
@@ -110,6 +110,25 @@ public:
    /// Update edit points
    static TOOL_ACTION pointEditorUpdate;

    // Placement tool
    /// Align items to the top edge of selection bounding box
    static TOOL_ACTION alignTop;

    /// Align items to the bottom edge of selection bounding box
    static TOOL_ACTION alignBottom;

    /// Align items to the left edge of selection bounding box
    static TOOL_ACTION alignLeft;

    /// Align items to the right edge of selection bounding box
    static TOOL_ACTION alignRight;

    /// Distributes items evenly along the horizontal axis
    static TOOL_ACTION distributeHorizontally;

    /// Distributes items evenly along the vertical axis
    static TOOL_ACTION distributeVertically;

    // View controls
    static TOOL_ACTION zoomIn;
    static TOOL_ACTION zoomOut;
+2 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@
#include "point_editor.h"
#include "pcbnew_control.h"
#include "pcb_editor_control.h"
#include "placement_tool.h"
#include "common_actions.h"
#include <router/router_tool.h>

@@ -55,6 +56,7 @@ void PCB_EDIT_FRAME::setupTools()
    m_toolManager->RegisterTool( new POINT_EDITOR );
    m_toolManager->RegisterTool( new PCBNEW_CONTROL );
    m_toolManager->RegisterTool( new PCB_EDITOR_CONTROL );
    m_toolManager->RegisterTool( new PLACEMENT_TOOL );
    m_toolManager->ResetTools( TOOL_BASE::RUN );

    // Run the selection tool, it is supposed to be always active
Loading