Move some functions out of SELECTION_TOOL that don't really belong there.
This commit is contained in:
parent
dd938b02df
commit
045f5f6a61
|
@ -37,6 +37,12 @@
|
||||||
#include <pcbnew_id.h>
|
#include <pcbnew_id.h>
|
||||||
#include <status_popup.h>
|
#include <status_popup.h>
|
||||||
#include <tool/tool_manager.h>
|
#include <tool/tool_manager.h>
|
||||||
|
#include <tools/pcb_actions.h>
|
||||||
|
#include <tools/selection_tool.h>
|
||||||
|
#include <tools/edit_tool.h>
|
||||||
|
#include <tools/pcbnew_picker_tool.h>
|
||||||
|
#include <tools/tool_event_utils.h>
|
||||||
|
#include <tools/grid_helper.h>
|
||||||
#include <view/view_controls.h>
|
#include <view/view_controls.h>
|
||||||
#include <connectivity/connectivity_data.h>
|
#include <connectivity/connectivity_data.h>
|
||||||
#include <confirm.h>
|
#include <confirm.h>
|
||||||
|
@ -44,16 +50,10 @@
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
using namespace std::placeholders;
|
using namespace std::placeholders;
|
||||||
#include "pcb_actions.h"
|
|
||||||
#include "selection_tool.h"
|
|
||||||
#include "edit_tool.h"
|
|
||||||
#include "pcbnew_picker_tool.h"
|
|
||||||
#include "grid_helper.h"
|
|
||||||
#include "kicad_clipboard.h"
|
#include "kicad_clipboard.h"
|
||||||
#include <router/router_tool.h>
|
#include <router/router_tool.h>
|
||||||
#include <dialogs/dialog_move_exact.h>
|
#include <dialogs/dialog_move_exact.h>
|
||||||
#include <dialogs/dialog_track_via_properties.h>
|
#include <dialogs/dialog_track_via_properties.h>
|
||||||
#include <tools/tool_event_utils.h>
|
|
||||||
#include <preview_items/ruler_item.h>
|
#include <preview_items/ruler_item.h>
|
||||||
#include <board_commit.h>
|
#include <board_commit.h>
|
||||||
|
|
||||||
|
@ -192,9 +192,27 @@ bool EDIT_TOOL::Init()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int EDIT_TOOL::GetAndPlace( const TOOL_EVENT& aEvent )
|
||||||
|
{
|
||||||
|
SELECTION_TOOL* selectionTool = m_toolMgr->GetTool<SELECTION_TOOL>();
|
||||||
|
MODULE* module = getEditFrame<PCB_BASE_FRAME>()->GetFootprintFromBoardByReference();
|
||||||
|
|
||||||
|
if( module )
|
||||||
|
{
|
||||||
|
m_toolMgr->RunAction( PCB_ACTIONS::selectionClear, true );
|
||||||
|
m_toolMgr->RunAction( PCB_ACTIONS::selectItem, true, (void*) module );
|
||||||
|
|
||||||
|
selectionTool->GetSelection().SetReferencePoint( module->GetPosition() );
|
||||||
|
m_toolMgr->RunAction( PCB_ACTIONS::move, true );
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool EDIT_TOOL::invokeInlineRouter( int aDragMode )
|
bool EDIT_TOOL::invokeInlineRouter( int aDragMode )
|
||||||
{
|
{
|
||||||
auto theRouter = static_cast<ROUTER_TOOL*>( m_toolMgr->FindTool( "pcbnew.InteractiveRouter" ) );
|
ROUTER_TOOL* theRouter = m_toolMgr->GetTool<ROUTER_TOOL>();
|
||||||
|
|
||||||
if( !theRouter )
|
if( !theRouter )
|
||||||
return false;
|
return false;
|
||||||
|
@ -1393,6 +1411,7 @@ int EDIT_TOOL::cutToClipboard( const TOOL_EVENT& aEvent )
|
||||||
|
|
||||||
void EDIT_TOOL::setTransitions()
|
void EDIT_TOOL::setTransitions()
|
||||||
{
|
{
|
||||||
|
Go( &EDIT_TOOL::GetAndPlace, PCB_ACTIONS::getAndPlace.MakeEvent() );
|
||||||
Go( &EDIT_TOOL::Move, PCB_ACTIONS::move.MakeEvent() );
|
Go( &EDIT_TOOL::Move, PCB_ACTIONS::move.MakeEvent() );
|
||||||
Go( &EDIT_TOOL::Drag, PCB_ACTIONS::drag45Degree.MakeEvent() );
|
Go( &EDIT_TOOL::Drag, PCB_ACTIONS::drag45Degree.MakeEvent() );
|
||||||
Go( &EDIT_TOOL::Drag, PCB_ACTIONS::dragFreeAngle.MakeEvent() );
|
Go( &EDIT_TOOL::Drag, PCB_ACTIONS::dragFreeAngle.MakeEvent() );
|
||||||
|
|
|
@ -74,8 +74,11 @@ public:
|
||||||
/// @copydoc TOOL_INTERACTIVE::Init()
|
/// @copydoc TOOL_INTERACTIVE::Init()
|
||||||
bool Init() override;
|
bool Init() override;
|
||||||
|
|
||||||
|
///> Find an item and start moving.
|
||||||
|
int GetAndPlace( const TOOL_EVENT& aEvent );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function Main()
|
* Function Move()
|
||||||
* Main loop in which events are handled.
|
* Main loop in which events are handled.
|
||||||
*/
|
*/
|
||||||
int Move( const TOOL_EVENT& aEvent );
|
int Move( const TOOL_EVENT& aEvent );
|
||||||
|
|
|
@ -28,7 +28,6 @@
|
||||||
#include <bitmaps.h>
|
#include <bitmaps.h>
|
||||||
#include <layers_id_colors_and_visibility.h>
|
#include <layers_id_colors_and_visibility.h>
|
||||||
#include <tool/tool_manager.h>
|
#include <tool/tool_manager.h>
|
||||||
#include <tools/pcb_actions.h>
|
|
||||||
#include <router/pns_router.h>
|
#include <router/pns_router.h>
|
||||||
|
|
||||||
OPT<TOOL_EVENT> PCB_ACTIONS::TranslateLegacyId( int aId )
|
OPT<TOOL_EVENT> PCB_ACTIONS::TranslateLegacyId( int aId )
|
||||||
|
@ -180,6 +179,13 @@ TOOL_ACTION PCB_ACTIONS::editFootprintInFpEditor( "pcbnew.InteractiveEdit.EditFp
|
||||||
_( "Opens the selected footprint in the Footprint Editor" ),
|
_( "Opens the selected footprint in the Footprint Editor" ),
|
||||||
module_editor_xpm );
|
module_editor_xpm );
|
||||||
|
|
||||||
|
TOOL_ACTION PCB_ACTIONS::getAndPlace( "pcbnew.InteractiveEdit.FindMove",
|
||||||
|
AS_GLOBAL,
|
||||||
|
'T', LEGACY_HK_NAME( "Get and Move Footprint" ),
|
||||||
|
_( "Get and Move Footprint" ),
|
||||||
|
_( "Selects a footprint by reference and places it under the cursor for moving"),
|
||||||
|
move_xpm );
|
||||||
|
|
||||||
TOOL_ACTION PCB_ACTIONS::move( "pcbnew.InteractiveMove.move",
|
TOOL_ACTION PCB_ACTIONS::move( "pcbnew.InteractiveMove.move",
|
||||||
AS_GLOBAL,
|
AS_GLOBAL,
|
||||||
'M', LEGACY_HK_NAME( "Move Item" ),
|
'M', LEGACY_HK_NAME( "Move Item" ),
|
||||||
|
@ -1035,13 +1041,6 @@ TOOL_ACTION PCB_ACTIONS::selectSameSheet( "pcbnew.InteractiveSelection.SelectSam
|
||||||
_( "Selects all modules and tracks in the same schematic sheet" ),
|
_( "Selects all modules and tracks in the same schematic sheet" ),
|
||||||
select_same_sheet_xpm );
|
select_same_sheet_xpm );
|
||||||
|
|
||||||
TOOL_ACTION PCB_ACTIONS::getAndPlace( "pcbnew.InteractiveSelection.FindMove",
|
|
||||||
AS_GLOBAL,
|
|
||||||
'T', LEGACY_HK_NAME( "Get and Move Footprint" ),
|
|
||||||
_( "Get and Move Footprint" ),
|
|
||||||
_( "Selects a footprint by reference and places it under the cursor for moving"),
|
|
||||||
move_xpm );
|
|
||||||
|
|
||||||
TOOL_ACTION PCB_ACTIONS::filterSelection( "pcbnew.InteractiveSelection.FilterSelection",
|
TOOL_ACTION PCB_ACTIONS::filterSelection( "pcbnew.InteractiveSelection.FilterSelection",
|
||||||
AS_GLOBAL, 0, "",
|
AS_GLOBAL, 0, "",
|
||||||
_( "Filter Selection..." ), _( "Filter the types of items in the selection" ),
|
_( "Filter Selection..." ), _( "Filter the types of items in the selection" ),
|
||||||
|
|
|
@ -1107,31 +1107,6 @@ int SELECTION_TOOL::find( const TOOL_EVENT& aEvent )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int SELECTION_TOOL::GetAndPlace( const TOOL_EVENT& aEvent )
|
|
||||||
{
|
|
||||||
MODULE* module = m_frame->GetFootprintFromBoardByReference();
|
|
||||||
|
|
||||||
if( module )
|
|
||||||
{
|
|
||||||
KIGFX::VIEW_CONTROLS* viewCtrls = getViewControls();
|
|
||||||
clearSelection();
|
|
||||||
select( module );
|
|
||||||
m_toolMgr->ProcessEvent( EVENTS::SelectedEvent );
|
|
||||||
|
|
||||||
auto cursorPosition = viewCtrls->GetCursorPosition( false );
|
|
||||||
|
|
||||||
// Set a reference point so InteractiveEdit will move it to the
|
|
||||||
// cursor before waiting for mouse move events
|
|
||||||
m_selection.SetReferencePoint( module->GetPosition() );
|
|
||||||
|
|
||||||
// pick the component up and start moving
|
|
||||||
m_toolMgr->RunAction( PCB_ACTIONS::move, true );
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function itemIsIncludedByFilter()
|
* Function itemIsIncludedByFilter()
|
||||||
*
|
*
|
||||||
|
@ -2202,7 +2177,6 @@ void SELECTION_TOOL::setTransitions()
|
||||||
Go( &SELECTION_TOOL::SelectionMenu, PCB_ACTIONS::selectionMenu.MakeEvent() );
|
Go( &SELECTION_TOOL::SelectionMenu, PCB_ACTIONS::selectionMenu.MakeEvent() );
|
||||||
|
|
||||||
Go( &SELECTION_TOOL::find, ACTIONS::find.MakeEvent() );
|
Go( &SELECTION_TOOL::find, ACTIONS::find.MakeEvent() );
|
||||||
Go( &SELECTION_TOOL::GetAndPlace, PCB_ACTIONS::getAndPlace.MakeEvent() );
|
|
||||||
|
|
||||||
Go( &SELECTION_TOOL::filterSelection, PCB_ACTIONS::filterSelection.MakeEvent() );
|
Go( &SELECTION_TOOL::filterSelection, PCB_ACTIONS::filterSelection.MakeEvent() );
|
||||||
Go( &SELECTION_TOOL::selectConnection, PCB_ACTIONS::selectConnection.MakeEvent() );
|
Go( &SELECTION_TOOL::selectConnection, PCB_ACTIONS::selectConnection.MakeEvent() );
|
||||||
|
|
|
@ -258,9 +258,6 @@ private:
|
||||||
///> Find an item.
|
///> Find an item.
|
||||||
int find( const TOOL_EVENT& aEvent );
|
int find( const TOOL_EVENT& aEvent );
|
||||||
|
|
||||||
///> Find an item and start moving.
|
|
||||||
int GetAndPlace( const TOOL_EVENT& aEvent );
|
|
||||||
|
|
||||||
///> Invoke filter dialog and modify current selection
|
///> Invoke filter dialog and modify current selection
|
||||||
int filterSelection( const TOOL_EVENT& aEvent );
|
int filterSelection( const TOOL_EVENT& aEvent );
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue