KiCad PCB EDA Suite
Loading...
Searching...
No Matches
SYMBOL_EDITOR_MOVE_TOOL Class Reference

#include <symbol_editor_move_tool.h>

Inheritance diagram for SYMBOL_EDITOR_MOVE_TOOL:
SCH_TOOL_BASE< SYMBOL_EDIT_FRAME > TOOL_INTERACTIVE TOOL_BASE

Public Types

enum  RESET_REASON
 Determine the reason of reset for a tool. More...
 

Public Member Functions

 SYMBOL_EDITOR_MOVE_TOOL ()
 
 ~SYMBOL_EDITOR_MOVE_TOOL () override
 
bool Init () override
 Init() is called once upon a registration of the tool.
 
void Reset (RESET_REASON aReason) override
 Bring the tool to a known, initial state.
 
int Main (const TOOL_EVENT &aEvent)
 Run an interactive move of the selected items, or the item under the cursor.
 
int AlignElements (const TOOL_EVENT &aEvent)
 Align selected elements to the grid.
 
bool IsSymbolEditor () const
 Returns true if the tool is running in the symbol editor.
 
int Increment (const TOOL_EVENT &aEvent)
 
int InteractiveDelete (const TOOL_EVENT &aEvent)
 
void Activate ()
 Run the tool.
 
TOOL_MENUGetToolMenu ()
 
void SetContextMenu (ACTION_MENU *aMenu, CONTEXT_MENU_TRIGGER aTrigger=CMENU_BUTTON)
 Assign a context menu and tells when it should be activated.
 
void RunMainStack (std::function< void()> aFunc)
 Call a function using the main stack.
 
void Go (int(SYMBOL_EDIT_FRAME::*aStateFunc)(const TOOL_EVENT &), const TOOL_EVENT_LIST &aConditions=TOOL_EVENT(TC_ANY, TA_ANY))
 Define which state (aStateFunc) to go when a certain event arrives (aConditions).
 
TOOL_EVENTWait (const TOOL_EVENT_LIST &aEventList=TOOL_EVENT(TC_ANY, TA_ANY))
 Suspend execution of the tool until an event specified in aEventList arrives.
 
TOOL_TYPE GetType () const
 Return the type of the tool.
 
TOOL_ID GetId () const
 Return the unique identifier of the tool.
 
const std::string & GetName () const
 Return the name of the tool.
 
TOOL_MANAGERGetManager () const
 Return the instance of TOOL_MANAGER that takes care of the tool.
 
bool IsToolActive () const
 

Protected Member Functions

void updateItem (EDA_ITEM *aItem, bool aUpdateRTree) const
 Similar to getView()->Update(), but also updates the SCH_SCREEN's RTree.
 
void saveCopyInUndoList (EDA_ITEM *aItem, UNDO_REDO aType, bool aAppend=false, bool aDirtyConnectivity=true)
 
void attachManager (TOOL_MANAGER *aManager)
 Set the TOOL_MANAGER the tool will belong to.
 
KIGFX::VIEWgetView () const
 Returns the instance of #VIEW object used in the application.
 
KIGFX::VIEW_CONTROLSgetViewControls () const
 Return the instance of VIEW_CONTROLS object used in the application.
 
SYMBOL_EDIT_FRAMEgetEditFrame () const
 Return the application window object, casted to requested user type.
 
SYMBOL_EDIT_FRAMEgetModel () const
 Return the model object if it matches the requested type.
 

Protected Attributes

SYMBOL_EDIT_FRAMEm_frame
 
KIGFX::SCH_VIEWm_view
 
SCH_SELECTION_TOOLm_selectionTool
 
bool m_isSymbolEditor
 
EDA_ITEMm_pickerItem
 
std::unique_ptr< TOOL_MENUm_menu
 The functions below are not yet implemented - their interface may change.
 
TOOL_TYPE m_type
 
TOOL_ID m_toolId
 Unique id, assigned by a TOOL_MANAGER instance.
 
std::string m_toolName
 Names are expected to obey the format application.ToolName (eg.
 
TOOL_MANAGERm_toolMgr
 

Private Member Functions

bool doMoveSelection (const TOOL_EVENT &aEvent, SCH_COMMIT *aCommit)
 
void moveItem (EDA_ITEM *aItem, const VECTOR2I &aDelta)
 Set up handlers for various events.
 
void setTransitions () override
 This method is meant to be overridden in order to specify handlers for events.
 
void resetTransitions ()
 Clear the current transition map and restores the default one created by setTransitions().
 
void goInternal (TOOL_STATE_FUNC &aState, const TOOL_EVENT_LIST &aConditions)
 
EDA_ITEMgetModelInternal () const
 
TOOLS_HOLDERgetToolHolderInternal () const
 

Private Attributes

bool m_moveInProgress
 Last cursor position (needed for getModificationPoint() to avoid changes of edit reference point).
 
VECTOR2I m_cursor
 
VECTOR2I m_anchorPos
 

Detailed Description

Definition at line 35 of file symbol_editor_move_tool.h.

Member Enumeration Documentation

◆ RESET_REASON

enum TOOL_BASE::RESET_REASON
inherited

Determine the reason of reset for a tool.

Definition at line 77 of file tool_base.h.

Constructor & Destructor Documentation

◆ SYMBOL_EDITOR_MOVE_TOOL()

SYMBOL_EDITOR_MOVE_TOOL::SYMBOL_EDITOR_MOVE_TOOL ( )

◆ ~SYMBOL_EDITOR_MOVE_TOOL()

SYMBOL_EDITOR_MOVE_TOOL::~SYMBOL_EDITOR_MOVE_TOOL ( )
inlineoverride

Definition at line 39 of file symbol_editor_move_tool.h.

Member Function Documentation

◆ Activate()

void TOOL_INTERACTIVE::Activate ( )
inherited

◆ AlignElements()

int SYMBOL_EDITOR_MOVE_TOOL::AlignElements ( const TOOL_EVENT & aEvent)

◆ attachManager()

void TOOL_BASE::attachManager ( TOOL_MANAGER * aManager)
protectedinherited

Set the TOOL_MANAGER the tool will belong to.

Called by TOOL_MANAGER::RegisterTool()

Definition at line 163 of file tool_base.cpp.

◆ doMoveSelection()

bool SYMBOL_EDITOR_MOVE_TOOL::doMoveSelection ( const TOOL_EVENT & aEvent,
SCH_COMMIT * aCommit )
private

Definition at line 119 of file symbol_editor_move_tool.cpp.

References TOOL_EVENT::Action(), SCH_TOOL_BASE< SYMBOL_EDIT_FRAME >::Activate(), BUT_LEFT, BUT_RIGHT, copy, ACTIONS::cursorClick, delta, TOOL_EVENT::DisableGridSnapping(), ACTIONS::doDelete, ACTIONS::duplicate, SELECTION::Empty(), KIGFX::VIEW_CONTROLS::ForceCursorPosition(), SELECTION::Front(), SCH_ITEM::GetBodyStyle(), KIGFX::VIEW_CONTROLS::GetCursorPosition(), EDA_ITEM::GetEditFlags(), SCH_PIN::GetName(), SCH_PIN::GetOrientation(), LIB_SYMBOL::GetPins(), SCH_PIN::GetPosition(), SELECTION::GetSize(), SCH_PIN::GetType(), SCH_ITEM::GetUnit(), LIB_SYMBOL::GetUnitCount(), SCH_TOOL_BASE< SYMBOL_EDIT_FRAME >::getView(), SCH_TOOL_BASE< SYMBOL_EDIT_FRAME >::getViewControls(), grid, IS_PASTED, TOOL_EVENT::IsAction(), TOOL_EVENT::IsActivate(), TOOL_EVENT::IsCancelInteractive(), TOOL_EVENT::IsClick(), TOOL_EVENT::IsDblClick(), TOOL_EVENT::IsDrag(), SCH_ITEM::IsGroupableType(), SELECTION::IsHover(), TOOL_EVENT::IsMotion(), TOOL_EVENT::IsMouseUp(), EDA_ITEM::IsNew(), m_anchorPos, m_cursor, SCH_TOOL_BASE< SYMBOL_EDIT_FRAME >::m_frame, SCH_TOOL_BASE< SYMBOL_EDIT_FRAME >::m_menu, m_moveInProgress, SCH_TOOL_BASE< SYMBOL_EDIT_FRAME >::m_selectionTool, SCH_TOOL_BASE< SYMBOL_EDIT_FRAME >::m_toolMgr, MD_SHIFT, TOOL_EVENT::Modifier(), COMMIT::Modify(), SCH_ACTIONS::move, moveItem(), MOVING, NO_RECURSE, pin, SYMBOL_EDITOR_PIN_TOOL::PlacePin(), ACTIONS::refreshPreview, SCH_FIELD_T, SCH_PIN_T, EVENTS::SelectedItemsMoved, ACTIONS::selectionClear, KIGFX::VIEW_CONTROLS::SetAutoPan(), KIGFX::VIEW_CONTROLS::SetCursorPosition(), TOOL_EVENT::SetPassEvent(), KIGFX::VIEW_CONTROLS::ShowCursor(), TA_UNDO_REDO_PRE, EDA_ITEM::Type(), SCH_TOOL_BASE< SYMBOL_EDIT_FRAME >::updateItem(), and SCH_TOOL_BASE< SYMBOL_EDIT_FRAME >::Wait().

Referenced by Main().

◆ getEditFrame()

SYMBOL_EDIT_FRAME * TOOL_BASE::getEditFrame ( ) const
inlineprotectedinherited

Return the application window object, casted to requested user type.

Definition at line 186 of file tool_base.h.

◆ GetId()

TOOL_ID TOOL_BASE::GetId ( ) const
inlineinherited

Return the unique identifier of the tool.

The identifier is set by an instance of TOOL_MANAGER.

Returns
Identifier of the tool.

Definition at line 123 of file tool_base.h.

◆ GetManager()

TOOL_MANAGER * TOOL_BASE::GetManager ( ) const
inlineinherited

Return the instance of TOOL_MANAGER that takes care of the tool.

Returns
Instance of the TOOL_MANAGER or NULL if there is no associated tool manager.

Definition at line 146 of file tool_base.h.

◆ getModel()

SYMBOL_EDIT_FRAME * TOOL_BASE::getModel ( ) const
inlineprotectedinherited

Return the model object if it matches the requested type.

Definition at line 198 of file tool_base.h.

◆ getModelInternal()

EDA_ITEM * TOOL_BASE::getModelInternal ( ) const
privateinherited

Definition at line 210 of file tool_base.cpp.

◆ GetName()

const std::string & TOOL_BASE::GetName ( ) const
inlineinherited

Return the name of the tool.

Tool names are expected to obey the format: application.ToolName (eg. pcbnew.InteractiveSelection).

Returns
The name of the tool.

Definition at line 136 of file tool_base.h.

◆ getToolHolderInternal()

TOOLS_HOLDER * TOOL_BASE::getToolHolderInternal ( ) const
privateinherited

Definition at line 211 of file tool_base.cpp.

◆ GetToolMenu()

TOOL_MENU & TOOL_INTERACTIVE::GetToolMenu ( )
inherited

Definition at line 77 of file tool_interactive.cpp.

◆ GetType()

TOOL_TYPE TOOL_BASE::GetType ( ) const
inlineinherited

Return the type of the tool.

Returns
The type of the tool.

Definition at line 111 of file tool_base.h.

◆ getView()

KIGFX::VIEW * TOOL_BASE::getView ( ) const
protectedinherited

Returns the instance of #VIEW object used in the application.

It allows tools to draw.

Returns
The instance of VIEW.

Definition at line 170 of file tool_base.cpp.

Referenced by SYMBOL_EDITOR_DRAWING_TOOLS::doDrawShape(), SYMBOL_EDITOR_MOVE_TOOL::doMoveSelection(), SYMBOL_EDITOR_DRAWING_TOOLS::ImportGraphics(), SYMBOL_EDITOR_EDIT_TOOL::Paste(), and SYMBOL_EDITOR_DRAWING_TOOLS::TwoClickPlace().

◆ getViewControls()

KIGFX::VIEW_CONTROLS * TOOL_BASE::getViewControls ( ) const
protectedinherited

Return the instance of VIEW_CONTROLS object used in the application.

It allows tools to read & modify user input and its settings (eg. show cursor, enable snapping to grid, etc.).

Returns
The instance of VIEW_CONTROLS.

Definition at line 180 of file tool_base.cpp.

Referenced by SYMBOL_EDITOR_DRAWING_TOOLS::doDrawShape(), SYMBOL_EDITOR_MOVE_TOOL::doMoveSelection(), SYMBOL_EDITOR_DRAWING_TOOLS::ImportGraphics(), SYMBOL_EDITOR_EDIT_TOOL::Paste(), SYMBOL_EDITOR_DRAWING_TOOLS::PlaceAnchor(), and SYMBOL_EDITOR_DRAWING_TOOLS::TwoClickPlace().

◆ Go()

void TOOL_INTERACTIVE::Go ( int(SYMBOL_EDIT_FRAME::* aStateFunc )(const TOOL_EVENT &),
const TOOL_EVENT_LIST & aConditions = TOOL_EVENTTC_ANYTA_ANY ) )
inherited

Define which state (aStateFunc) to go when a certain event arrives (aConditions).

No conditions means any event.

Definition at line 100 of file tool_interactive.h.

Referenced by SYMBOL_EDITOR_DRAWING_TOOLS::setTransitions(), SYMBOL_EDITOR_EDIT_TOOL::setTransitions(), SYMBOL_EDITOR_MOVE_TOOL::setTransitions(), and SYMBOL_EDITOR_PIN_TOOL::setTransitions().

◆ goInternal()

void TOOL_INTERACTIVE::goInternal ( TOOL_STATE_FUNC & aState,
const TOOL_EVENT_LIST & aConditions )
privateinherited

Definition at line 140 of file tool_interactive.cpp.

◆ Increment()

int SCH_TOOL_BASE< SYMBOL_EDIT_FRAME >::Increment ( const TOOL_EVENT & aEvent)
inlineinherited

Definition at line 110 of file sch_tool_base.h.

Referenced by SYMBOL_EDITOR_EDIT_TOOL::setTransitions().

◆ Init()

bool SYMBOL_EDITOR_MOVE_TOOL::Init ( )
overridevirtual

◆ InteractiveDelete()

int SCH_TOOL_BASE< SYMBOL_EDIT_FRAME >::InteractiveDelete ( const TOOL_EVENT & aEvent)
inlineinherited

Definition at line 247 of file sch_tool_base.h.

Referenced by SYMBOL_EDITOR_EDIT_TOOL::setTransitions().

◆ IsSymbolEditor()

bool SCH_TOOL_BASE< SYMBOL_EDIT_FRAME >::IsSymbolEditor ( ) const
inlineinherited

Returns true if the tool is running in the symbol editor.

Definition at line 105 of file sch_tool_base.h.

◆ IsToolActive()

bool TOOL_BASE::IsToolActive ( ) const
inherited

Definition at line 153 of file tool_base.cpp.

◆ Main()

int SYMBOL_EDITOR_MOVE_TOOL::Main ( const TOOL_EVENT & aEvent)

Run an interactive move of the selected items, or the item under the cursor.

Definition at line 93 of file symbol_editor_move_tool.cpp.

References _, TOOL_EVENT::Commit(), doMoveSelection(), SCH_TOOL_BASE< SYMBOL_EDIT_FRAME >::m_toolMgr, SCH_COMMIT::Push(), SCH_COMMIT::Revert(), STS_CANCELLED, STS_FINISHED, STS_RUNNING, and TOOL_EVENT::SynchronousState().

Referenced by setTransitions().

◆ moveItem()

void SYMBOL_EDITOR_MOVE_TOOL::moveItem ( EDA_ITEM * aItem,
const VECTOR2I & aDelta )
private

Set up handlers for various events.

Definition at line 440 of file symbol_editor_move_tool.cpp.

References IS_MOVING, and EDA_ITEM::SetFlags().

Referenced by doMoveSelection().

◆ Reset()

void SYMBOL_EDITOR_MOVE_TOOL::Reset ( RESET_REASON aReason)
overridevirtual

Bring the tool to a known, initial state.

If the tool claimed anything from the model or the view, it must release it when its reset.

Parameters
aReasoncontains information about the reason of tool reset.

Reimplemented from SCH_TOOL_BASE< SYMBOL_EDIT_FRAME >.

Definition at line 84 of file symbol_editor_move_tool.cpp.

References m_moveInProgress, SCH_TOOL_BASE< SYMBOL_EDIT_FRAME >::MODEL_RELOAD, and SCH_TOOL_BASE< T >::Reset().

◆ resetTransitions()

void TOOL_INTERACTIVE::resetTransitions ( )
privateinherited

Clear the current transition map and restores the default one created by setTransitions().

Definition at line 138 of file tool_interactive.cpp.

◆ RunMainStack()

void TOOL_INTERACTIVE::RunMainStack ( std::function< void()> aFunc)
inherited

Call a function using the main stack.

Parameters
aFuncis the function to be calls.

Definition at line 92 of file tool_interactive.cpp.

◆ saveCopyInUndoList()

void SCH_TOOL_BASE< SYMBOL_EDIT_FRAME >::saveCopyInUndoList ( EDA_ITEM * aItem,
UNDO_REDO aType,
bool aAppend = false,
bool aDirtyConnectivity = true )
inlineprotectedinherited

◆ SetContextMenu()

void TOOL_INTERACTIVE::SetContextMenu ( ACTION_MENU * aMenu,
CONTEXT_MENU_TRIGGER aTrigger = CMENU_BUTTON )
inherited

Assign a context menu and tells when it should be activated.

Parameters
aMenuis the menu to be assigned.
aTriggerdetermines conditions upon which the context menu is activated.

Definition at line 85 of file tool_interactive.cpp.

◆ setTransitions()

void SYMBOL_EDITOR_MOVE_TOOL::setTransitions ( )
overrideprivatevirtual

This method is meant to be overridden in order to specify handlers for events.

It is called every time tool is reset or finished.

Implements TOOL_INTERACTIVE.

Definition at line 447 of file symbol_editor_move_tool.cpp.

References AlignElements(), SCH_ACTIONS::alignToGrid, SCH_TOOL_BASE< SYMBOL_EDIT_FRAME >::Go(), Main(), and SCH_ACTIONS::move.

◆ updateItem()

void SCH_TOOL_BASE< SYMBOL_EDIT_FRAME >::updateItem ( EDA_ITEM * aItem,
bool aUpdateRTree ) const
inlineprotectedinherited

◆ Wait()

TOOL_EVENT * TOOL_INTERACTIVE::Wait ( const TOOL_EVENT_LIST & aEventList = TOOL_EVENTTC_ANYTA_ANY ))
inherited

Suspend execution of the tool until an event specified in aEventList arrives.

No parameters means waiting for any event.

Definition at line 108 of file tool_interactive.cpp.

Referenced by SYMBOL_EDITOR_DRAWING_TOOLS::doDrawShape(), SYMBOL_EDITOR_MOVE_TOOL::doMoveSelection(), SYMBOL_EDITOR_DRAWING_TOOLS::ImportGraphics(), SYMBOL_EDITOR_DRAWING_TOOLS::PlaceAnchor(), and SYMBOL_EDITOR_DRAWING_TOOLS::TwoClickPlace().

Member Data Documentation

◆ m_anchorPos

VECTOR2I SYMBOL_EDITOR_MOVE_TOOL::m_anchorPos
private

Definition at line 74 of file symbol_editor_move_tool.h.

Referenced by doMoveSelection().

◆ m_cursor

VECTOR2I SYMBOL_EDITOR_MOVE_TOOL::m_cursor
private

Definition at line 73 of file symbol_editor_move_tool.h.

Referenced by doMoveSelection().

◆ m_frame

SYMBOL_EDIT_FRAME* SCH_TOOL_BASE< SYMBOL_EDIT_FRAME >::m_frame
protectedinherited

◆ m_isSymbolEditor

bool SCH_TOOL_BASE< SYMBOL_EDIT_FRAME >::m_isSymbolEditor
protectedinherited

Definition at line 376 of file sch_tool_base.h.

Referenced by SYMBOL_EDITOR_EDIT_TOOL::Init().

◆ m_menu

std::unique_ptr<TOOL_MENU> TOOL_INTERACTIVE::m_menu
protectedinherited

◆ m_moveInProgress

bool SYMBOL_EDITOR_MOVE_TOOL::m_moveInProgress
private

Last cursor position (needed for getModificationPoint() to avoid changes of edit reference point).

Definition at line 69 of file symbol_editor_move_tool.h.

Referenced by doMoveSelection(), Reset(), and SYMBOL_EDITOR_MOVE_TOOL().

◆ m_pickerItem

EDA_ITEM* SCH_TOOL_BASE< SYMBOL_EDIT_FRAME >::m_pickerItem
protectedinherited

Definition at line 377 of file sch_tool_base.h.

◆ m_selectionTool

◆ m_toolId

TOOL_ID TOOL_BASE::m_toolId
protectedinherited

Unique id, assigned by a TOOL_MANAGER instance.

Definition at line 215 of file tool_base.h.

◆ m_toolMgr

◆ m_toolName

std::string TOOL_BASE::m_toolName
protectedinherited

Names are expected to obey the format application.ToolName (eg.

pcbnew.InteractiveSelection).

Definition at line 219 of file tool_base.h.

◆ m_type

TOOL_TYPE TOOL_BASE::m_type
protectedinherited

Definition at line 214 of file tool_base.h.

◆ m_view


The documentation for this class was generated from the following files: