KiCad PCB EDA Suite
SCH_EDIT_TOOL Class Reference

#include <sch_edit_tool.h>

Inheritance diagram for SCH_EDIT_TOOL:
EE_TOOL_BASE< SCH_EDIT_FRAME > TOOL_INTERACTIVE TOOL_BASE

Public Types

enum  RESET_REASON { RUN, MODEL_RELOAD, GAL_SWITCH }
 

Determines the reason of reset for a tool

More...
 

Public Member Functions

 SCH_EDIT_TOOL ()
 
 ~SCH_EDIT_TOOL () override
 
bool Init () override
 Function Init() Init() is called once upon a registration of the tool. More...
 
int Rotate (const TOOL_EVENT &aEvent)
 
int Mirror (const TOOL_EVENT &aEvent)
 
int Duplicate (const TOOL_EVENT &aEvent)
 
int RepeatDrawItem (const TOOL_EVENT &aEvent)
 
int Properties (const TOOL_EVENT &aEvent)
 
int EditField (const TOOL_EVENT &aEvent)
 
int AutoplaceFields (const TOOL_EVENT &aEvent)
 
int UpdateFields (const TOOL_EVENT &aEvent)
 
int ConvertDeMorgan (const TOOL_EVENT &aEvent)
 
int ChangeShape (const TOOL_EVENT &aEvent)
 
int ChangeTextType (const TOOL_EVENT &aEvent)
 
int BreakWire (const TOOL_EVENT &aEvent)
 
int CleanupSheetPins (const TOOL_EVENT &aEvent)
 
int GlobalEdit (const TOOL_EVENT &aEvent)
 
int DoDelete (const TOOL_EVENT &aEvent)
 

Deletes the selected items, or the item under the cursor.

More...
 
int DeleteItemCursor (const TOOL_EVENT &aEvent)
 

Runs the deletion tool.

More...
 
void Reset (RESET_REASON aReason) override
 Function Reset() Brings the tool to a known, initial state. More...
 
void Activate ()
 Function Activate() Runs the tool. More...
 
TOOL_MENUGetToolMenu ()
 
void SetContextMenu (ACTION_MENU *aMenu, CONTEXT_MENU_TRIGGER aTrigger=CMENU_BUTTON)
 Function SetContextMenu() More...
 
void RunMainStack (std::function< void()> aFunc)
 Function RunMainStack() More...
 
template<class T >
void Go (int(T::*aStateFunc)(const TOOL_EVENT &), const TOOL_EVENT_LIST &aConditions=TOOL_EVENT(TC_ANY, TA_ANY))
 Function Go() More...
 
TOOL_EVENTWait (const TOOL_EVENT_LIST &aEventList=TOOL_EVENT(TC_ANY, TA_ANY))
 Function Wait() More...
 
TOOL_TYPE GetType () const
 Function GetType() Returns the type of the tool. More...
 
TOOL_ID GetId () const
 Function GetId() Returns the unique identifier of the tool. More...
 
const std::string & GetName () const
 Function GetName() Returns the name of the tool. More...
 
TOOL_MANAGERGetManager () const
 Function GetManager() Returns the instance of TOOL_MANAGER that takes care of the tool. More...
 
TOOL_SETTINGSGetSettings ()
 
bool IsToolActive () const
 

Protected Member Functions

void updateView (EDA_ITEM *aItem) const
 

Similar to getView()->Update(), but handles items that are redrawn by their parents.

More...
 
void saveCopyInUndoList (EDA_ITEM *aItem, UNDO_REDO_T aType, bool aAppend=false)
 

Similar to m_frame->SaveCopyInUndoList(), but handles items that are owned by their parents.

More...
 
void attachManager (TOOL_MANAGER *aManager)
 Function attachManager() More...
 
KIGFX::VIEWgetView () const
 Function getView() More...
 
KIGFX::VIEW_CONTROLSgetViewControls () const
 Function getViewControls() More...
 
template<typename T >
T * getEditFrame () const
 Function getEditFrame() More...
 
template<typename T >
T * getModel () const
 Function getModel() More...
 

Protected Attributes

SCH_EDIT_FRAMEm_frame
 
KIGFX::SCH_VIEWm_view
 
EE_SELECTION_TOOLm_selectionTool
 
bool m_isLibEdit
 
TOOL_MENU m_menu
 functions below are not yet implemented - their interface may change More...
 
TOOL_TYPE m_type
 

Stores the type of the tool.

More...
 
TOOL_ID m_toolId
 

Unique identifier for the tool, assigned by a TOOL_MANAGER instance.

More...
 
std::string m_toolName
 

Name of the tool.

More...
 
TOOL_MANAGERm_toolMgr
 
TOOL_SETTINGS m_toolSettings
 

Private Member Functions

void editComponentFieldText (SCH_FIELD *aField)
 
void setTransitions () override
 

Sets up handlers for various events.

More...
 

Private Attributes

EDA_ITEMm_pickerItem
 

Detailed Description

Definition at line 36 of file sch_edit_tool.h.

Member Enumeration Documentation

◆ RESET_REASON

enum TOOL_BASE::RESET_REASON
inherited

Determines the reason of reset for a tool

Enumerator
RUN 

Tool is invoked after being inactive.

MODEL_RELOAD 

Model changes (required full reload)

GAL_SWITCH 

Rendering engine changes.

Definition at line 79 of file tool_base.h.

80  {
81  RUN,
82  MODEL_RELOAD,
83  GAL_SWITCH
84  };
Model changes (required full reload)
Definition: tool_base.h:82
Tool is invoked after being inactive.
Definition: tool_base.h:81
Rendering engine changes.
Definition: tool_base.h:83

Constructor & Destructor Documentation

◆ SCH_EDIT_TOOL()

SCH_EDIT_TOOL::SCH_EDIT_TOOL ( )

Definition at line 119 of file sch_edit_tool.cpp.

119  :
120  EE_TOOL_BASE<SCH_EDIT_FRAME>( "eeschema.InteractiveEdit" )
121 {
122 }

◆ ~SCH_EDIT_TOOL()

SCH_EDIT_TOOL::~SCH_EDIT_TOOL ( )
inlineoverride

Definition at line 40 of file sch_edit_tool.h.

40 { }

Member Function Documentation

◆ Activate()

void TOOL_INTERACTIVE::Activate ( )
inherited

Function Activate() Runs the tool.

After activation, the tool starts receiving events until it is finished.

Definition at line 51 of file tool_interactive.cpp.

52 {
54 }
TOOL_MANAGER * m_toolMgr
Definition: tool_base.h:219
TOOL_ID m_toolId
Unique identifier for the tool, assigned by a TOOL_MANAGER instance.
Definition: tool_base.h:214
bool InvokeTool(TOOL_ID aToolId)
Function InvokeTool() Calls a tool by sending a tool activation event to tool of given ID.

References TOOL_MANAGER::InvokeTool(), TOOL_BASE::m_toolId, and TOOL_BASE::m_toolMgr.

Referenced by AUTOPLACE_TOOL::autoplace(), EDIT_TOOL::copyToClipboard(), LIB_EDIT_TOOL::DeleteItemCursor(), PL_EDIT_TOOL::DeleteItemCursor(), DeleteItemCursor(), PCBNEW_CONTROL::DeleteItemCursor(), SCH_LINE_WIRE_BUS_TOOL::doDrawSegments(), PCB_TOOL_BASE::doInteractiveItemPlacement(), DRAWING_TOOL::DrawArc(), DRAWING_TOOL::DrawCircle(), DRAWING_TOOL::DrawDimension(), DRAWING_TOOL::DrawLine(), MICROWAVE_TOOL::drawMicrowaveInductor(), LIB_DRAWING_TOOLS::DrawShape(), PL_DRAWING_TOOLS::DrawShape(), SCH_DRAWING_TOOLS::DrawSheet(), DRAWING_TOOL::DrawZone(), PCB_EDITOR_CONTROL::DrillOrigin(), PAD_TOOL::EnumeratePads(), PCBNEW_CONTROL::GridSetOrigin(), SCH_EDITOR_CONTROL::HighlightNetCursor(), PCB_INSPECTION_TOOL::HighlightNetTool(), ROUTER_TOOL::InlineBreakTrack(), ROUTER_TOOL::InlineDrag(), PCB_INSPECTION_TOOL::LocalRatsnestTool(), PL_EDIT_TOOL::Main(), SCH_MOVE_TOOL::Main(), EE_POINT_EDITOR::Main(), PL_POINT_EDITOR::Main(), LIB_MOVE_TOOL::Main(), PCBNEW_PICKER_TOOL::Main(), PICKER_TOOL::Main(), ROUTER_TOOL::MainLoop(), LENGTH_TUNER_TOOL::MainLoop(), CVPCB_FOOTPRINT_VIEWER_SELECTION_TOOL::MeasureTool(), GERBVIEW_SELECTION_TOOL::MeasureTool(), EDIT_TOOL::MeasureTool(), EDIT_TOOL::Move(), LIB_TREE::onContextMenu(), POINT_EDITOR::OnSelectionChange(), LIB_DRAWING_TOOLS::PlaceAnchor(), SCH_DRAWING_TOOLS::PlaceComponent(), SCH_DRAWING_TOOLS::PlaceImage(), DRAWING_TOOL::PlaceImportedGraphics(), PL_DRAWING_TOOLS::PlaceItem(), PCB_EDITOR_CONTROL::PlaceModule(), PCB_EDITOR_CONTROL::PlaceTarget(), DRAWING_TOOL::PlaceText(), EDIT_TOOL::Remove(), POSITION_RELATIVE_TOOL::SelectPositionRelativeItem(), DRAWING_TOOL::SetAnchor(), DRC::ShowDRCDialog(), SCH_DRAWING_TOOLS::SingleClickPlace(), LIB_DRAWING_TOOLS::TwoClickPlace(), SCH_DRAWING_TOOLS::TwoClickPlace(), and SCH_LINE_WIRE_BUS_TOOL::UnfoldBus().

◆ attachManager()

void TOOL_BASE::attachManager ( TOOL_MANAGER aManager)
protectedinherited

Function attachManager()

Sets the TOOL_MANAGER the tool will belong to. Called by TOOL_MANAGER::RegisterTool()

Definition at line 60 of file tool_base.cpp.

61 {
62  m_toolMgr = aManager;
63  m_toolSettings = TOOL_SETTINGS( this );
64 }
TOOL_MANAGER * m_toolMgr
Definition: tool_base.h:219
TOOL_SETTINGS m_toolSettings
Definition: tool_base.h:220
friend class TOOL_SETTINGS
Definition: tool_base.h:154

References TOOL_BASE::m_toolMgr, TOOL_BASE::m_toolSettings, and TOOL_BASE::TOOL_SETTINGS.

Referenced by TOOL_MANAGER::RegisterTool().

◆ AutoplaceFields()

int SCH_EDIT_TOOL::AutoplaceFields ( const TOOL_EVENT aEvent)

Definition at line 1104 of file sch_edit_tool.cpp.

1105 {
1107 
1108  if( selection.Empty() )
1109  return 0;
1110 
1111  SCH_COMPONENT* component = (SCH_COMPONENT*) selection.Front();
1112 
1113  if( !component->IsNew() )
1114  m_frame->SaveCopyInUndoList( component, UR_CHANGED );
1115 
1116  component->AutoplaceFields( m_frame->GetScreen(), /* aManual */ true );
1117 
1118  updateView( component );
1119  m_frame->OnModify();
1120 
1121  return 0;
1122 }
static const KICAD_T ComponentsOnly[]
Definition: ee_collectors.h:44
bool IsNew() const
Definition: base_struct.h:228
EE_SELECTION & RequestSelection(const KICAD_T *aFilterList=EE_COLLECTOR::AllItems)
Function RequestSelection()
SCH_SCREEN * GetScreen() const override
Return a pointer to a BASE_SCREEN or one of its derivatives.
void SaveCopyInUndoList(SCH_ITEM *aItemToCopy, UNDO_REDO_T aTypeCommand, bool aAppend=false, const wxPoint &aTransformPoint=wxPoint(0, 0))
Create a copy of the current schematic item, and put it in the undo list.
EE_SELECTION_TOOL * m_selectionTool
Definition: ee_tool_base.h:140
bool Empty() const
Checks if there is anything selected.
Definition: selection.h:119
void updateView(EDA_ITEM *aItem) const
Similar to getView()->Update(), but handles items that are redrawn by their parents.
Definition: ee_tool_base.h:104
void AutoplaceFields(SCH_SCREEN *aScreen, bool aManual)
Automatically orient all the fields in the component.
Class SCH_COMPONENT describes a real schematic component.
Definition: sch_component.h:73
void OnModify() override
Must be called after a schematic change in order to set the "modify" flag of the current screen and u...
EDA_ITEM * Front() const
Definition: selection.h:182

References SCH_COMPONENT::AutoplaceFields(), EE_COLLECTOR::ComponentsOnly, SELECTION::Empty(), SELECTION::Front(), SCH_EDIT_FRAME::GetScreen(), EDA_ITEM::IsNew(), EE_TOOL_BASE< SCH_EDIT_FRAME >::m_frame, EE_TOOL_BASE< SCH_EDIT_FRAME >::m_selectionTool, SCH_EDIT_FRAME::OnModify(), EE_SELECTION_TOOL::RequestSelection(), SCH_EDIT_FRAME::SaveCopyInUndoList(), EE_TOOL_BASE< SCH_EDIT_FRAME >::updateView(), and UR_CHANGED.

Referenced by setTransitions().

◆ BreakWire()

int SCH_EDIT_TOOL::BreakWire ( const TOOL_EVENT aEvent)

Definition at line 1365 of file sch_edit_tool.cpp.

1366 {
1367  VECTOR2I cursorPos = getViewControls()->GetCursorPosition( !aEvent.Modifier( MD_ALT ) );
1368 
1369  if( m_frame->BreakSegments( (wxPoint) cursorPos ) )
1370  {
1372 
1373  m_frame->OnModify();
1374  m_frame->GetCanvas()->Refresh();
1375  }
1376 
1377  return 0;
1378 }
bool BreakSegments(const wxPoint &aPoint, SCH_SCREEN *aScreen=nullptr)
Checks every wire and bus for a intersection at aPoint and break into two segments at aPoint if an in...
bool TestDanglingEnds()
Test all of the connectable objects in the schematic for unused connection points.
SCH_DRAW_PANEL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.
virtual void Refresh(bool aEraseBackground=true, const wxRect *aRect=NULL) override
Update the board display after modifying it by a python script (note: it is automatically called by a...
int Modifier(int aMask=MD_MODIFIER_MASK) const
Returns information about key modifiers state (Ctrl, Alt, etc.)
Definition: tool_event.h:334
void OnModify() override
Must be called after a schematic change in order to set the "modify" flag of the current screen and u...
KIGFX::VIEW_CONTROLS * getViewControls() const
Function getViewControls()
Definition: tool_base.cpp:42
VECTOR2D GetCursorPosition() const
Returns the current cursor position in world coordinates.

References SCH_EDIT_FRAME::BreakSegments(), SCH_BASE_FRAME::GetCanvas(), KIGFX::VIEW_CONTROLS::GetCursorPosition(), TOOL_BASE::getViewControls(), EE_TOOL_BASE< SCH_EDIT_FRAME >::m_frame, MD_ALT, TOOL_EVENT::Modifier(), SCH_EDIT_FRAME::OnModify(), EDA_DRAW_PANEL_GAL::Refresh(), and SCH_EDIT_FRAME::TestDanglingEnds().

Referenced by setTransitions().

◆ ChangeShape()

int SCH_EDIT_TOOL::ChangeShape ( const TOOL_EVENT aEvent)

Definition at line 1319 of file sch_edit_tool.cpp.

1320 {
1321  EE_SELECTION& selection = m_selectionTool->GetSelection();
1322  char shape = aEvent.Parameter<char>();
1323 
1324  for( unsigned int i = 0; i < selection.GetSize(); ++i )
1325  {
1326  SCH_BUS_ENTRY_BASE* entry = dynamic_cast<SCH_BUS_ENTRY_BASE*>( selection.GetItem( i ) );
1327 
1328  if( entry )
1329  {
1330  if( entry->GetEditFlags() == 0 )
1332 
1333  entry->SetBusEntryShape( shape );
1335 
1336  updateView( entry );
1337  m_frame->OnModify( );
1338  }
1339  }
1340 
1341  g_lastBusEntryShape = shape;
1342 
1343  return 0;
1344 }
char g_lastBusEntryShape
bool TestDanglingEnds()
Test all of the connectable objects in the schematic for unused connection points.
Base class for a bus or wire entry.
Definition: sch_bus_entry.h:41
EE_SELECTION & GetSelection()
Function GetSelection()
STATUS_FLAGS GetEditFlags() const
Definition: base_struct.h:270
T Parameter() const
Function Parameter() Returns a non-standard parameter assigned to the event.
Definition: tool_event.h:427
void SaveCopyInUndoList(SCH_ITEM *aItemToCopy, UNDO_REDO_T aTypeCommand, bool aAppend=false, const wxPoint &aTransformPoint=wxPoint(0, 0))
Create a copy of the current schematic item, and put it in the undo list.
EE_SELECTION_TOOL * m_selectionTool
Definition: ee_tool_base.h:140
void SetBusEntryShape(char aShape)
function SetBusEntryShape
virtual KIGFX::VIEW_ITEM * GetItem(unsigned int aIdx) const override
Definition: selection.h:103
virtual unsigned int GetSize() const override
Function GetSize() Returns the number of stored items.
Definition: selection.h:98
void updateView(EDA_ITEM *aItem) const
Similar to getView()->Update(), but handles items that are redrawn by their parents.
Definition: ee_tool_base.h:104
size_t i
Definition: json11.cpp:597
void OnModify() override
Must be called after a schematic change in order to set the "modify" flag of the current screen and u...

References g_lastBusEntryShape, EDA_ITEM::GetEditFlags(), SELECTION::GetItem(), EE_SELECTION_TOOL::GetSelection(), SELECTION::GetSize(), i, EE_TOOL_BASE< SCH_EDIT_FRAME >::m_frame, EE_TOOL_BASE< SCH_EDIT_FRAME >::m_selectionTool, SCH_EDIT_FRAME::OnModify(), TOOL_EVENT::Parameter(), SCH_EDIT_FRAME::SaveCopyInUndoList(), SCH_BUS_ENTRY_BASE::SetBusEntryShape(), SCH_EDIT_FRAME::TestDanglingEnds(), EE_TOOL_BASE< SCH_EDIT_FRAME >::updateView(), and UR_CHANGED.

Referenced by setTransitions().

◆ ChangeTextType()

int SCH_EDIT_TOOL::ChangeTextType ( const TOOL_EVENT aEvent)

Definition at line 1347 of file sch_edit_tool.cpp.

1348 {
1349  KICAD_T convertTo = aEvent.Parameter<KICAD_T>();
1351  EE_SELECTION& selection = m_selectionTool->RequestSelection( allTextTypes );
1352 
1353  for( unsigned int i = 0; i < selection.GetSize(); ++i )
1354  {
1355  SCH_TEXT* text = dynamic_cast<SCH_TEXT*>( selection.GetItem( i ) );
1356 
1357  if( text )
1358  m_frame->ConvertTextType( text, convertTo );
1359  }
1360 
1361  return 0;
1362 }
search types array terminator (End Of Types)
Definition: typeinfo.h:82
KICAD_T
Enum KICAD_T is the set of class identification values, stored in EDA_ITEM::m_StructType.
Definition: typeinfo.h:78
EE_SELECTION & RequestSelection(const KICAD_T *aFilterList=EE_COLLECTOR::AllItems)
Function RequestSelection()
T Parameter() const
Function Parameter() Returns a non-standard parameter assigned to the event.
Definition: tool_event.h:427
EE_SELECTION_TOOL * m_selectionTool
Definition: ee_tool_base.h:140
virtual KIGFX::VIEW_ITEM * GetItem(unsigned int aIdx) const override
Definition: selection.h:103
virtual unsigned int GetSize() const override
Function GetSize() Returns the number of stored items.
Definition: selection.h:98
void ConvertTextType(SCH_TEXT *aText, KICAD_T aNewType)
Change a text type to another one.
Definition: edit_label.cpp:164
size_t i
Definition: json11.cpp:597

References SCH_EDIT_FRAME::ConvertTextType(), EOT, SELECTION::GetItem(), SELECTION::GetSize(), i, EE_TOOL_BASE< SCH_EDIT_FRAME >::m_frame, EE_TOOL_BASE< SCH_EDIT_FRAME >::m_selectionTool, TOOL_EVENT::Parameter(), EE_SELECTION_TOOL::RequestSelection(), SCH_GLOBAL_LABEL_T, SCH_HIER_LABEL_T, SCH_LABEL_T, and SCH_TEXT_T.

Referenced by setTransitions().

◆ CleanupSheetPins()

int SCH_EDIT_TOOL::CleanupSheetPins ( const TOOL_EVENT aEvent)

Definition at line 1381 of file sch_edit_tool.cpp.

1382 {
1384  SCH_SHEET* sheet = (SCH_SHEET*) selection.Front();
1385 
1386  if( !sheet )
1387  return 0;
1388 
1389  if( !sheet->HasUndefinedPins() )
1390  {
1391  DisplayInfoMessage( m_frame, _( "There are no unreferenced pins in this sheet to remove." ) );
1392  return 0;
1393  }
1394 
1395  if( !IsOK( m_frame, _( "Do you wish to delete the unreferenced pins from this sheet?" ) ) )
1396  return 0;
1397 
1399 
1400  sheet->CleanupSheet();
1401 
1402  updateView( sheet );
1403  m_frame->OnModify();
1404 
1405  return 0;
1406 }
static const KICAD_T SheetsOnly[]
Definition: ee_collectors.h:45
EE_SELECTION & RequestSelection(const KICAD_T *aFilterList=EE_COLLECTOR::AllItems)
Function RequestSelection()
void SaveCopyInUndoList(SCH_ITEM *aItemToCopy, UNDO_REDO_T aTypeCommand, bool aAppend=false, const wxPoint &aTransformPoint=wxPoint(0, 0))
Create a copy of the current schematic item, and put it in the undo list.
EE_SELECTION_TOOL * m_selectionTool
Definition: ee_tool_base.h:140
void CleanupSheet()
Delete sheet label which do not have a corresponding hierarchical label.
Definition: sch_sheet.cpp:350
#define _(s)
Sheet symbol placed in a schematic, and is the entry point for a sub schematic.
Definition: sch_sheet.h:209
bool HasUndefinedPins()
Check all sheet labels against schematic for undefined hierarchical labels.
Definition: sch_sheet.cpp:242
void updateView(EDA_ITEM *aItem) const
Similar to getView()->Update(), but handles items that are redrawn by their parents.
Definition: ee_tool_base.h:104
void OnModify() override
Must be called after a schematic change in order to set the "modify" flag of the current screen and u...
void DisplayInfoMessage(wxWindow *aParent, const wxString &aMessage, const wxString &aExtraInfo)
Display an informational message box with aMessage.
Definition: confirm.cpp:265
bool IsOK(wxWindow *aParent, const wxString &aMessage)
Display a yes/no dialog with aMessage and returns the user response.
Definition: confirm.cpp:281
EDA_ITEM * Front() const
Definition: selection.h:182

References _, SCH_SHEET::CleanupSheet(), DisplayInfoMessage(), SELECTION::Front(), SCH_SHEET::HasUndefinedPins(), IsOK(), EE_TOOL_BASE< SCH_EDIT_FRAME >::m_frame, EE_TOOL_BASE< SCH_EDIT_FRAME >::m_selectionTool, SCH_EDIT_FRAME::OnModify(), EE_SELECTION_TOOL::RequestSelection(), SCH_EDIT_FRAME::SaveCopyInUndoList(), EE_COLLECTOR::SheetsOnly, EE_TOOL_BASE< SCH_EDIT_FRAME >::updateView(), and UR_CHANGED.

Referenced by setTransitions().

◆ ConvertDeMorgan()

int SCH_EDIT_TOOL::ConvertDeMorgan ( const TOOL_EVENT aEvent)

Definition at line 1142 of file sch_edit_tool.cpp.

1143 {
1145 
1146  if( selection.Empty() )
1147  return 0;
1148 
1149  SCH_COMPONENT* component = (SCH_COMPONENT*) selection.Front();
1150 
1152  && component->GetConvert() == LIB_ITEM::LIB_CONVERT::BASE )
1153  return 0;
1154 
1156  && component->GetConvert() != LIB_ITEM::LIB_CONVERT::DEMORGAN )
1157  return 0;
1158 
1159  if( !component->IsNew() )
1160  m_frame->SaveCopyInUndoList( component, UR_CHANGED );
1161 
1162  m_frame->ConvertPart( component );
1163 
1164  if( component->IsNew() )
1166 
1167  return 0;
1168 }
TOOL_MANAGER * m_toolMgr
Definition: tool_base.h:219
bool RunAction(const std::string &aActionName, bool aNow=false, T aParam=NULL)
Function RunAction() Runs the specified action.
Definition: tool_manager.h:109
static const KICAD_T ComponentsOnly[]
Definition: ee_collectors.h:44
static TOOL_ACTION showDeMorganAlternate
Definition: ee_actions.h:129
bool IsNew() const
Definition: base_struct.h:228
bool IsAction(const TOOL_ACTION *aAction) const
Function IsAction() Tests if the event contains an action issued upon activation of the given TOOL_AC...
Definition: tool_event.cpp:63
EE_SELECTION & RequestSelection(const KICAD_T *aFilterList=EE_COLLECTOR::AllItems)
Function RequestSelection()
void SaveCopyInUndoList(SCH_ITEM *aItemToCopy, UNDO_REDO_T aTypeCommand, bool aAppend=false, const wxPoint &aTransformPoint=wxPoint(0, 0))
Create a copy of the current schematic item, and put it in the undo list.
EE_SELECTION_TOOL * m_selectionTool
Definition: ee_tool_base.h:140
static TOOL_ACTION showDeMorganStandard
Definition: ee_actions.h:128
bool Empty() const
Checks if there is anything selected.
Definition: selection.h:119
Class SCH_COMPONENT describes a real schematic component.
Definition: sch_component.h:73
int GetConvert() const
void ConvertPart(SCH_COMPONENT *aComponent)
Definition: getpart.cpp:245
static TOOL_ACTION refreshPreview
Definition: actions.h:101
EDA_ITEM * Front() const
Definition: selection.h:182

References EE_COLLECTOR::ComponentsOnly, SCH_EDIT_FRAME::ConvertPart(), SELECTION::Empty(), SELECTION::Front(), SCH_COMPONENT::GetConvert(), TOOL_EVENT::IsAction(), EDA_ITEM::IsNew(), EE_TOOL_BASE< SCH_EDIT_FRAME >::m_frame, EE_TOOL_BASE< SCH_EDIT_FRAME >::m_selectionTool, TOOL_BASE::m_toolMgr, ACTIONS::refreshPreview, EE_SELECTION_TOOL::RequestSelection(), TOOL_MANAGER::RunAction(), SCH_EDIT_FRAME::SaveCopyInUndoList(), EE_ACTIONS::showDeMorganAlternate, EE_ACTIONS::showDeMorganStandard, and UR_CHANGED.

Referenced by setTransitions().

◆ DeleteItemCursor()

int SCH_EDIT_TOOL::DeleteItemCursor ( const TOOL_EVENT aEvent)

Runs the deletion tool.

Definition at line 958 of file sch_edit_tool.cpp.

959 {
960  std::string tool = aEvent.GetCommandStr().get();
962 
964  m_pickerItem = nullptr;
965 
966  // Deactivate other tools; particularly important if another PICKER is currently running
967  Activate();
968 
969  picker->SetCursor( wxStockCursor( wxCURSOR_BULLSEYE ) );
970 
971  picker->SetClickHandler(
972  [this] ( const VECTOR2D& aPosition ) -> bool
973  {
974  if( m_pickerItem )
975  {
976  SCH_ITEM* sch_item = dynamic_cast<SCH_ITEM*>( m_pickerItem );
977 
978  if( sch_item && sch_item->IsLocked() )
979  {
980  STATUS_TEXT_POPUP statusPopup( m_frame );
981  statusPopup.SetText( _( "Item locked." ) );
982  statusPopup.PopupFor( 2000 );
983  statusPopup.Move( wxGetMousePosition() + wxPoint( 20, 20 ) );
984  return true;
985  }
986 
988  selectionTool->UnbrightenItem( m_pickerItem );
989  selectionTool->AddItemToSel( m_pickerItem, true /*quiet mode*/ );
991  m_pickerItem = nullptr;
992  }
993 
994  return true;
995  } );
996 
997  picker->SetMotionHandler(
998  [this] ( const VECTOR2D& aPos )
999  {
1000  EE_COLLECTOR collector;
1001  collector.m_Threshold = KiROUND( getView()->ToWorld( HITTEST_THRESHOLD_PIXELS ) );
1002  collector.Collect( m_frame->GetScreen()->GetDrawItems(), deletableItems, (wxPoint) aPos );
1003 
1005  selectionTool->GuessSelectionCandidates( collector, aPos );
1006 
1007  EDA_ITEM* item = collector.GetCount() == 1 ? collector[ 0 ] : nullptr;
1008 
1009  if( m_pickerItem != item )
1010  {
1011  if( m_pickerItem )
1012  selectionTool->UnbrightenItem( m_pickerItem );
1013 
1014  m_pickerItem = item;
1015 
1016  if( m_pickerItem )
1017  selectionTool->BrightenItem( m_pickerItem );
1018  }
1019  } );
1020 
1021  picker->SetFinalizeHandler(
1022  [this] ( const int& aFinalState )
1023  {
1024  if( m_pickerItem )
1026  } );
1027 
1028  m_toolMgr->RunAction( ACTIONS::pickerTool, true, &tool );
1029 
1030  return 0;
1031 }
void SetCursor(const wxCursor &aCursor)
Definition: picker_tool.h:65
#define HITTEST_THRESHOLD_PIXELS
int m_Threshold
Definition: collector.h:68
void SetMotionHandler(MOTION_HANDLER aHandler)
Function SetMotionHandler() Sets a handler for mouse motion.
Definition: picker_tool.h:82
static TOOL_ACTION doDelete
Definition: actions.h:74
void SetClickHandler(CLICK_HANDLER aHandler)
Function SetClickHandler() Sets a handler for mouse click event.
Definition: picker_tool.h:72
Class STATUS_TEXT_POPUP.
Definition: status_popup.h:79
TOOL_MANAGER * m_toolMgr
Definition: tool_base.h:219
bool RunAction(const std::string &aActionName, bool aNow=false, T aParam=NULL)
Function RunAction() Runs the specified action.
Definition: tool_manager.h:109
Class EE_COLLECTOR.
Definition: ee_collectors.h:39
void GuessSelectionCandidates(EE_COLLECTOR &collector, const VECTOR2I &aPos)
Apply heuristics to try and determine a single object when multiple are found under the cursor.
static TOOL_ACTION pickerTool
Definition: actions.h:145
void SetFinalizeHandler(FINALIZE_HANDLER aHandler)
Function SetFinalizeHandler() Sets a handler for the finalize event.
Definition: picker_tool.h:102
SCH_SCREEN * GetScreen() const override
Return a pointer to a BASE_SCREEN or one of its derivatives.
int GetCount() const
Function GetCount returns the number of objects in the list.
Definition: collector.h:113
void BrightenItem(EDA_ITEM *aItem)
void Collect(EDA_ITEM *aItem, const KICAD_T aFilterList[], const wxPoint &aPos, int aUnit=0, int aConvert=0)
Function Collect scans a EDA_ITEM using this class's Inspector method, which does the collection.
static TOOL_ACTION clearSelection
Clears the current selection.
Definition: ee_actions.h:58
#define _(s)
void UnbrightenItem(EDA_ITEM *aItem)
KIGFX::VIEW * getView() const
Function getView()
Definition: tool_base.cpp:36
EDA_ITEM * m_pickerItem
Definition: sch_edit_tool.h:78
virtual bool IsLocked() const
Function IsLocked.
Definition: sch_item.h:181
OPT< std::string > GetCommandStr() const
Definition: tool_event.h:455
static KICAD_T deletableItems[]
int AddItemToSel(const TOOL_EVENT &aEvent)
Class EDA_ITEM is a base class for most all the KiCad significant classes, used in schematics and boa...
Definition: base_struct.h:163
void Activate()
Function Activate() Runs the tool.
Class SCH_ITEM is a base class for any item which can be embedded within the SCHEMATIC container clas...
Definition: sch_item.h:114
constexpr ret_type KiROUND(fp_type v)
Round a floating point number to an integer using "round halfway cases away from zero".
Definition: common.h:114
SCH_ITEM * GetDrawItems() const
Definition: sch_screen.h:152

References _, TOOL_INTERACTIVE::Activate(), EE_SELECTION_TOOL::AddItemToSel(), EE_SELECTION_TOOL::BrightenItem(), EE_ACTIONS::clearSelection, EE_COLLECTOR::Collect(), deletableItems, ACTIONS::doDelete, TOOL_EVENT::GetCommandStr(), COLLECTOR::GetCount(), SCH_SCREEN::GetDrawItems(), SCH_EDIT_FRAME::GetScreen(), TOOL_MANAGER::GetTool(), TOOL_BASE::getView(), EE_SELECTION_TOOL::GuessSelectionCandidates(), HITTEST_THRESHOLD_PIXELS, SCH_ITEM::IsLocked(), KiROUND(), EE_TOOL_BASE< SCH_EDIT_FRAME >::m_frame, m_pickerItem, COLLECTOR::m_Threshold, TOOL_BASE::m_toolMgr, STATUS_POPUP::Move(), ACTIONS::pickerTool, STATUS_POPUP::PopupFor(), TOOL_MANAGER::RunAction(), PICKER_TOOL::SetClickHandler(), PICKER_TOOL::SetCursor(), PICKER_TOOL::SetFinalizeHandler(), PICKER_TOOL::SetMotionHandler(), STATUS_TEXT_POPUP::SetText(), and EE_SELECTION_TOOL::UnbrightenItem().

Referenced by setTransitions().

◆ DoDelete()

int SCH_EDIT_TOOL::DoDelete ( const TOOL_EVENT aEvent)

Deletes the selected items, or the item under the cursor.

Definition at line 885 of file sch_edit_tool.cpp.

886 {
887  SCH_SCREEN* screen = m_frame->GetScreen();
889  bool appendToUndo = false;
890  std::vector<wxPoint> pts;
891 
892  if( items.empty() )
893  return 0;
894 
895  // Don't leave a freed pointer in the selection
897 
898  for( EDA_ITEM* item : items )
899  item->ClearFlags( STRUCT_DELETED );
900 
901  for( EDA_ITEM* item : items )
902  {
903  SCH_ITEM* sch_item = dynamic_cast<SCH_ITEM*>( item );
904 
905  if( sch_item->Type() == SCH_JUNCTION_T )
906  {
907  sch_item->SetFlags( STRUCT_DELETED );
908  sch_item->GetConnectionPoints( pts );
909 
910  // clean up junctions at the end
911  }
912  else
913  {
914  sch_item->SetFlags( STRUCT_DELETED );
915  saveCopyInUndoList( item, UR_DELETED, appendToUndo );
916  appendToUndo = true;
917 
918  if( sch_item && sch_item->IsConnectable() )
919  sch_item->GetConnectionPoints( pts );
920 
921  updateView( sch_item );
922 
923  if( sch_item->Type() == SCH_SHEET_PIN_T )
924  {
925  SCH_SHEET_PIN* pin = (SCH_SHEET_PIN*) sch_item;
926  SCH_SHEET* sheet = pin->GetParent();
927 
928  sheet->RemovePin( pin );
929  }
930  else
931  m_frame->RemoveFromScreen( sch_item );
932  }
933  }
934 
935  for( auto point : pts )
936  {
937  SCH_ITEM* junction = screen->GetItem( point, 0, SCH_JUNCTION_T );
938 
939  if( !junction )
940  continue;
941 
942  if( junction->HasFlag( STRUCT_DELETED ) || !screen->IsJunctionNeeded( point ) )
943  m_frame->DeleteJunction( junction, appendToUndo );
944  }
945 
947 
948  m_frame->GetCanvas()->Refresh();
949  m_frame->OnModify();
950 
951  return 0;
952 }
virtual bool IsConnectable() const
Function IsConnectable returns true if the schematic item can connect to another schematic item.
Definition: sch_item.h:298
SCH_SHEET * GetParent() const
Get the parent sheet object of this sheet pin.
Definition: sch_sheet.h:158
bool IsJunctionNeeded(const wxPoint &aPosition, bool aNew=false)
Test if a junction is required for the items at aPosition on the screen.
Definition: sch_screen.cpp:347
TOOL_MANAGER * m_toolMgr
Definition: tool_base.h:219
virtual void GetConnectionPoints(std::vector< wxPoint > &aPoints) const
Function GetConnectionPoints add all the connection points for this item to aPoints.
Definition: sch_item.h:308
bool RunAction(const std::string &aActionName, bool aNow=false, T aParam=NULL)
Function RunAction() Runs the specified action.
Definition: tool_manager.h:109
bool TestDanglingEnds()
Test all of the connectable objects in the schematic for unused connection points.
void RemoveFromScreen(EDA_ITEM *aItem, SCH_SCREEN *aScreen=nullptr)
Remove an item from the screen (and view) aScreen is the screen the item is located on,...
EE_SELECTION & RequestSelection(const KICAD_T *aFilterList=EE_COLLECTOR::AllItems)
Function RequestSelection()
SCH_SCREEN * GetScreen() const override
Return a pointer to a BASE_SCREEN or one of its derivatives.
void RemovePin(SCH_SHEET_PIN *aSheetPin)
Remove aSheetPin from the sheet.
Definition: sch_sheet.cpp:187
void SetFlags(STATUS_FLAGS aMask)
Definition: base_struct.h:265
SCH_DRAW_PANEL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.
SCH_ITEM * GetItem(const wxPoint &aPosition, int aAccuracy=0, KICAD_T aType=SCH_LOCATE_ANY_T) const
Check aPosition within a distance of aAccuracy for items of type aFilter.
Definition: sch_screen.cpp:234
const std::deque< EDA_ITEM * > GetItems() const
Definition: selection.h:130
#define STRUCT_DELETED
flag indication structures to be erased
Definition: base_struct.h:129
EE_SELECTION_TOOL * m_selectionTool
Definition: ee_tool_base.h:140
Define a sheet pin (label) used in sheets to create hierarchical schematics.
Definition: sch_sheet.h:75
static TOOL_ACTION clearSelection
Clears the current selection.
Definition: ee_actions.h:58
virtual void Refresh(bool aEraseBackground=true, const wxRect *aRect=NULL) override
Update the board display after modifying it by a python script (note: it is automatically called by a...
Sheet symbol placed in a schematic, and is the entry point for a sub schematic.
Definition: sch_sheet.h:209
static KICAD_T deletableItems[]
void updateView(EDA_ITEM *aItem) const
Similar to getView()->Update(), but handles items that are redrawn by their parents.
Definition: ee_tool_base.h:104
void DeleteJunction(SCH_ITEM *aItem, bool aAppend=false)
Removes a given junction and heals any wire segments under the junction.
void saveCopyInUndoList(EDA_ITEM *aItem, UNDO_REDO_T aType, bool aAppend=false)
Similar to m_frame->SaveCopyInUndoList(), but handles items that are owned by their parents.
Definition: ee_tool_base.h:117
Class EDA_ITEM is a base class for most all the KiCad significant classes, used in schematics and boa...
Definition: base_struct.h:163
void OnModify() override
Must be called after a schematic change in order to set the "modify" flag of the current screen and u...
bool HasFlag(STATUS_FLAGS aFlag)
Definition: base_struct.h:268
Class SCH_ITEM is a base class for any item which can be embedded within the SCHEMATIC container clas...
Definition: sch_item.h:114
KICAD_T Type() const
Function Type()
Definition: base_struct.h:210

References EE_ACTIONS::clearSelection, deletableItems, SCH_EDIT_FRAME::DeleteJunction(), SCH_BASE_FRAME::GetCanvas(), SCH_ITEM::GetConnectionPoints(), SCH_SCREEN::GetItem(), SELECTION::GetItems(), SCH_SHEET_PIN::GetParent(), SCH_EDIT_FRAME::GetScreen(), EDA_ITEM::HasFlag(), SCH_ITEM::IsConnectable(), SCH_SCREEN::IsJunctionNeeded(), EE_TOOL_BASE< SCH_EDIT_FRAME >::m_frame, EE_TOOL_BASE< SCH_EDIT_FRAME >::m_selectionTool, TOOL_BASE::m_toolMgr, SCH_EDIT_FRAME::OnModify(), EDA_DRAW_PANEL_GAL::Refresh(), SCH_BASE_FRAME::RemoveFromScreen(), SCH_SHEET::RemovePin(), EE_SELECTION_TOOL::RequestSelection(), TOOL_MANAGER::RunAction(), EE_TOOL_BASE< SCH_EDIT_FRAME >::saveCopyInUndoList(), SCH_JUNCTION_T, SCH_SHEET_PIN_T, EDA_ITEM::SetFlags(), STRUCT_DELETED, SCH_EDIT_FRAME::TestDanglingEnds(), EDA_ITEM::Type(), EE_TOOL_BASE< SCH_EDIT_FRAME >::updateView(), and UR_DELETED.

Referenced by setTransitions().

◆ Duplicate()

int SCH_EDIT_TOOL::Duplicate ( const TOOL_EVENT aEvent)

Definition at line 717 of file sch_edit_tool.cpp.

718 {
720 
721  if( selection.GetSize() == 0 )
722  return 0;
723 
724  // Doing a duplicate of a new object doesn't really make any sense; we'd just end
725  // up dragging around a stack of objects...
726  if( selection.Front()->IsNew() )
727  return 0;
728 
729  EDA_ITEMS newItems;
730 
731  // Keep track of existing sheet paths. Duplicating a selection can modify this list
732  bool copiedSheets = false;
733  SCH_SHEET_LIST initial_sheetpathList( g_RootSheet );
734 
735  for( unsigned ii = 0; ii < selection.GetSize(); ++ii )
736  {
737  SCH_ITEM* oldItem = static_cast<SCH_ITEM*>( selection.GetItem( ii ) );
738  SCH_ITEM* newItem = oldItem->Duplicate();
739  newItem->SetFlags( IS_NEW );
740  newItems.push_back( newItem );
741  saveCopyInUndoList( newItem, UR_NEW, ii > 0 );
742 
743  switch( newItem->Type() )
744  {
745  case SCH_JUNCTION_T:
746  case SCH_LINE_T:
747  case SCH_BUS_BUS_ENTRY_T:
749  case SCH_TEXT_T:
750  case SCH_LABEL_T:
751  case SCH_GLOBAL_LABEL_T:
752  case SCH_HIER_LABEL_T:
753  case SCH_NO_CONNECT_T:
754  newItem->SetParent( m_frame->GetScreen() );
755  m_frame->AddToScreen( newItem );
756  break;
757 
758  case SCH_SHEET_T:
759  {
760  SCH_SHEET* sheet = (SCH_SHEET*) newItem;
761  // Duplicate sheet names and sheet time stamps are not valid. Use a time stamp
762  // based sheet name and update the time stamp for each sheet in the block.
763  timestamp_t timeStamp = GetNewTimeStamp();
764 
765  sheet->SetName( wxString::Format( wxT( "sheet%8.8lX" ), (unsigned long)timeStamp ) );
766  sheet->SetTimeStamp( timeStamp );
767 
768  sheet->SetParent( m_frame->GetScreen() );
769  m_frame->AddToScreen( sheet );
770 
771  copiedSheets = true;
772  break;
773  }
774 
775  case SCH_COMPONENT_T:
776  {
777  SCH_COMPONENT* component = (SCH_COMPONENT*) newItem;
778 
779  component->SetTimeStamp( GetNewTimeStamp() );
780  component->ClearAnnotation( NULL );
781 
782  component->SetParent( m_frame->GetScreen() );
783  m_frame->AddToScreen( component );
784  break;
785  }
786 
787  default:
788  break;
789  }
790  }
791 
792  if( copiedSheets )
793  {
794  // We clear annotation of new sheet paths.
795  // Annotation of new components added in current sheet is already cleared.
796  SCH_SCREENS screensList( g_RootSheet );
797  screensList.ClearAnnotationOfNewSheetPaths( initial_sheetpathList );
799  }
800 
802  m_toolMgr->RunAction( EE_ACTIONS::addItemsToSel, true, &newItems );
804 
805  return 0;
806 }
Class SCH_SHEET_LIST.
void SetTimeStamp(timestamp_t aNewTimeStamp)
Change the time stamp to aNewTimeStamp and updates the reference path.
SCH_ITEM * Duplicate(bool doClone=false)
Routine to create a new copy of given item.
Definition: sch_item.cpp:75
static KICAD_T duplicatableItems[]
void AddToScreen(EDA_ITEM *aItem, SCH_SCREEN *aScreen=nullptr)
Add an item to the screen (and view) aScreen is the screen the item is located on,...
static TOOL_ACTION addItemsToSel
Selects a list of items (specified as the event parameter)
Definition: ee_actions.h:65
TOOL_MANAGER * m_toolMgr
Definition: tool_base.h:219
bool RunAction(const std::string &aActionName, bool aNow=false, T aParam=NULL)
Function RunAction() Runs the specified action.
Definition: tool_manager.h:109
bool IsNew() const
Definition: base_struct.h:228
#define IS_NEW
New item, just created.
Definition: base_struct.h:120
EE_SELECTION & RequestSelection(const KICAD_T *aFilterList=EE_COLLECTOR::AllItems)
Function RequestSelection()
SCH_SCREEN * GetScreen() const override
Return a pointer to a BASE_SCREEN or one of its derivatives.
timestamp_t GetNewTimeStamp()
Definition: common.cpp:217
void SetFlags(STATUS_FLAGS aMask)
Definition: base_struct.h:265
SCH_SHEET * g_RootSheet
Definition: eeschema.cpp:47
void SetName(const wxString &aName)
Definition: sch_sheet.h:273
void SetParent(EDA_ITEM *aParent)
Definition: base_struct.h:225
std::vector< EDA_ITEM * > EDA_ITEMS
Define list of drawing items for screens.
Definition: base_struct.h:623
EE_SELECTION_TOOL * m_selectionTool
Definition: ee_tool_base.h:140
static TOOL_ACTION clearSelection
Clears the current selection.
Definition: ee_actions.h:58
void ClearAnnotation(SCH_SHEET_PATH *aSheetPath)
Clear exiting component annotation.
virtual KIGFX::VIEW_ITEM * GetItem(unsigned int aIdx) const override
Definition: selection.h:103
Sheet symbol placed in a schematic, and is the entry point for a sub schematic.
Definition: sch_sheet.h:209
virtual unsigned int GetSize() const override
Function GetSize() Returns the number of stored items.
Definition: selection.h:98
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, CPTREE &aTree)
Function Format outputs a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:205
void SetSheetNumberAndCount()
Set the m_ScreenNumber and m_NumberOfScreens members for screens.
Class SCH_COMPONENT describes a real schematic component.
Definition: sch_component.h:73
void saveCopyInUndoList(EDA_ITEM *aItem, UNDO_REDO_T aType, bool aAppend=false)
Similar to m_frame->SaveCopyInUndoList(), but handles items that are owned by their parents.
Definition: ee_tool_base.h:117
static TOOL_ACTION move
Definition: ee_actions.h:115
uint32_t timestamp_t
timestamp_t is our type to represent unique IDs for all kinds of elements; historically simply the ti...
Definition: common.h:53
Class SCH_ITEM is a base class for any item which can be embedded within the SCHEMATIC container clas...
Definition: sch_item.h:114
Container class that holds multiple SCH_SCREEN objects in a hierarchy.
Definition: sch_screen.h:491
EDA_ITEM * Front() const
Definition: selection.h:182
void SetTimeStamp(timestamp_t aNewTimeStamp)
Definition: base_struct.h:215

References EE_ACTIONS::addItemsToSel, SCH_BASE_FRAME::AddToScreen(), SCH_COMPONENT::ClearAnnotation(), SCH_SCREENS::ClearAnnotationOfNewSheetPaths(), EE_ACTIONS::clearSelection, duplicatableItems, SCH_ITEM::Duplicate(), Format(), SELECTION::Front(), g_RootSheet, SELECTION::GetItem(), GetNewTimeStamp(), SCH_EDIT_FRAME::GetScreen(), SELECTION::GetSize(), IS_NEW, EDA_ITEM::IsNew(), EE_TOOL_BASE< SCH_EDIT_FRAME >::m_frame, EE_TOOL_BASE< SCH_EDIT_FRAME >::m_selectionTool, TOOL_BASE::m_toolMgr, EE_ACTIONS::move, EE_SELECTION_TOOL::RequestSelection(), TOOL_MANAGER::RunAction(), EE_TOOL_BASE< SCH_EDIT_FRAME >::saveCopyInUndoList(), SCH_BUS_BUS_ENTRY_T, SCH_BUS_WIRE_ENTRY_T, SCH_COMPONENT_T, SCH_GLOBAL_LABEL_T, SCH_HIER_LABEL_T, SCH_JUNCTION_T, SCH_LABEL_T, SCH_LINE_T, SCH_NO_CONNECT_T, SCH_SHEET_T, SCH_TEXT_T, EDA_ITEM::SetFlags(), SCH_SHEET::SetName(), EDA_ITEM::SetParent(), SCH_EDIT_FRAME::SetSheetNumberAndCount(), EDA_ITEM::SetTimeStamp(), SCH_COMPONENT::SetTimeStamp(), and UR_NEW.

Referenced by setTransitions().

◆ editComponentFieldText()

void SCH_EDIT_TOOL::editComponentFieldText ( SCH_FIELD aField)
private

Definition at line 1034 of file sch_edit_tool.cpp.

1035 {
1036  SCH_COMPONENT* component = (SCH_COMPONENT*) aField->GetParent();
1037 
1038  // Save old component in undo list if not already in edit, or moving.
1039  if( aField->GetEditFlags() == 0 ) // i.e. not edited, or moved
1040  m_frame->SaveCopyInUndoList( component, UR_CHANGED );
1041 
1042  wxString title = wxString::Format( _( "Edit %s Field" ), aField->GetName() );
1043 
1044  DIALOG_SCH_EDIT_ONE_FIELD dlg( m_frame, title, aField );
1045 
1046  // The footprint field dialog can invoke a KIWAY_PLAYER so we must use a quasi-modal
1047  if( dlg.ShowQuasiModal() != wxID_OK )
1048  return;
1049 
1050  dlg.UpdateField( aField, g_CurrentSheet );
1051 
1052  if( m_frame->GetAutoplaceFields() )
1053  component->AutoAutoplaceFields( m_frame->GetScreen() );
1054 
1056  m_frame->RefreshItem( aField );
1057  m_frame->OnModify();
1058 }
void AutoAutoplaceFields(SCH_SCREEN *aScreen)
Autoplace fields only if correct to do so automatically.
TOOL_MANAGER * m_toolMgr
Definition: tool_base.h:219
bool GetAutoplaceFields() const
static const TOOL_EVENT SelectedItemsModified
Definition: actions.h:201
SCH_SCREEN * GetScreen() const override
Return a pointer to a BASE_SCREEN or one of its derivatives.
SCH_SHEET_PATH * g_CurrentSheet
With the new connectivity algorithm, many more places than before want to know what the current sheet...
STATUS_FLAGS GetEditFlags() const
Definition: base_struct.h:270
void SaveCopyInUndoList(SCH_ITEM *aItemToCopy, UNDO_REDO_T aTypeCommand, bool aAppend=false, const wxPoint &aTransformPoint=wxPoint(0, 0))
Create a copy of the current schematic item, and put it in the undo list.
EDA_ITEM * GetParent() const
Definition: base_struct.h:220
#define _(s)
Class DIALOG_SCH_EDIT_ONE_FIELD is a the class to handle editing a single component field in the sche...
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, CPTREE &aTree)
Function Format outputs a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:205
void RefreshItem(EDA_ITEM *aItem, bool isAddOrDelete=false)
Mark an item for refresh.
wxString GetName(bool aUseDefaultName=true) const
Function GetName returns the field name.
Definition: sch_field.cpp:370
Class SCH_COMPONENT describes a real schematic component.
Definition: sch_component.h:73
void OnModify() override
Must be called after a schematic change in order to set the "modify" flag of the current screen and u...
void PostEvent(const TOOL_EVENT &aEvent)
Puts an event to the event queue to be processed at the end of event processing cycle.
Definition: tool_manager.h:228

References _, SCH_COMPONENT::AutoAutoplaceFields(), Format(), g_CurrentSheet, SCH_EDIT_FRAME::GetAutoplaceFields(), EDA_ITEM::GetEditFlags(), SCH_FIELD::GetName(), EDA_ITEM::GetParent(), SCH_EDIT_FRAME::GetScreen(), EE_TOOL_BASE< SCH_EDIT_FRAME >::m_frame, TOOL_BASE::m_toolMgr, SCH_EDIT_FRAME::OnModify(), TOOL_MANAGER::PostEvent(), SCH_BASE_FRAME::RefreshItem(), SCH_EDIT_FRAME::SaveCopyInUndoList(), EVENTS::SelectedItemsModified, and UR_CHANGED.

Referenced by EditField(), and Properties().

◆ EditField()

int SCH_EDIT_TOOL::EditField ( const TOOL_EVENT aEvent)

Definition at line 1061 of file sch_edit_tool.cpp.

1062 {
1063  static KICAD_T Nothing[] = { EOT };
1064  static KICAD_T CmpOrReference[] = { SCH_FIELD_LOCATE_REFERENCE_T, SCH_COMPONENT_T, EOT };
1065  static KICAD_T CmpOrValue[] = { SCH_FIELD_LOCATE_VALUE_T, SCH_COMPONENT_T, EOT };
1066  static KICAD_T CmpOrFootprint[] = { SCH_FIELD_LOCATE_FOOTPRINT_T, SCH_COMPONENT_T, EOT };
1067 
1068  KICAD_T* filter = Nothing;
1069 
1070  if( aEvent.IsAction( &EE_ACTIONS::editReference ) )
1071  filter = CmpOrReference;
1072  else if( aEvent.IsAction( &EE_ACTIONS::editValue ) )
1073  filter = CmpOrValue;
1074  else if( aEvent.IsAction( &EE_ACTIONS::editFootprint ) )
1075  filter = CmpOrFootprint;
1076 
1077  EE_SELECTION& selection = m_selectionTool->RequestSelection( filter );
1078 
1079  if( selection.Empty() )
1080  return 0;
1081 
1082  SCH_ITEM* item = (SCH_ITEM*) selection.Front();
1083 
1084  if( item->Type() == SCH_COMPONENT_T )
1085  {
1086  SCH_COMPONENT* component = (SCH_COMPONENT*) item;
1087 
1088  if( aEvent.IsAction( &EE_ACTIONS::editReference ) )
1089  editComponentFieldText( component->GetField( REFERENCE ) );
1090  else if( aEvent.IsAction( &EE_ACTIONS::editValue ) )
1091  editComponentFieldText( component->GetField( VALUE ) );
1092  else if( aEvent.IsAction( &EE_ACTIONS::editFootprint ) )
1093  editComponentFieldText( component->GetField( FOOTPRINT ) );
1094  }
1095  else if( item->Type() == SCH_FIELD_T )
1096  {
1097  editComponentFieldText( (SCH_FIELD*) item );
1098  }
1099 
1100  return 0;
1101 }
Class SCH_FIELD instances are attached to a component and provide a place for the component's value,...
Definition: sch_field.h:52
void editComponentFieldText(SCH_FIELD *aField)
Field Name Module PCB, i.e. "16DIP300".
Field Reference of part, i.e. "IC21".
search types array terminator (End Of Types)
Definition: typeinfo.h:82
KICAD_T
Enum KICAD_T is the set of class identification values, stored in EDA_ITEM::m_StructType.
Definition: typeinfo.h:78
bool IsAction(const TOOL_ACTION *aAction) const
Function IsAction() Tests if the event contains an action issued upon activation of the given TOOL_AC...
Definition: tool_event.cpp:63
SCH_FIELD * GetField(int aFieldNdx) const
Returns a field in this symbol.
EE_SELECTION & RequestSelection(const KICAD_T *aFilterList=EE_COLLECTOR::AllItems)
Function RequestSelection()
#define VALUE
static TOOL_ACTION editFootprint
Definition: ee_actions.h:125
EE_SELECTION_TOOL * m_selectionTool
Definition: ee_tool_base.h:140
bool Empty() const
Checks if there is anything selected.
Definition: selection.h:119
static TOOL_ACTION editValue
Definition: ee_actions.h:124
Class SCH_COMPONENT describes a real schematic component.
Definition: sch_component.h:73
static TOOL_ACTION editReference
Definition: ee_actions.h:123
Class SCH_ITEM is a base class for any item which can be embedded within the SCHEMATIC container clas...
Definition: sch_item.h:114
EDA_ITEM * Front() const
Definition: selection.h:182
KICAD_T Type() const
Function Type()
Definition: base_struct.h:210

References editComponentFieldText(), EE_ACTIONS::editFootprint, EE_ACTIONS::editReference, EE_ACTIONS::editValue, SELECTION::Empty(), EOT, FOOTPRINT, SELECTION::Front(), SCH_COMPONENT::GetField(), TOOL_EVENT::IsAction(), EE_TOOL_BASE< SCH_EDIT_FRAME >::m_selectionTool, REFERENCE, EE_SELECTION_TOOL::RequestSelection(), SCH_COMPONENT_T, SCH_FIELD_LOCATE_FOOTPRINT_T, SCH_FIELD_LOCATE_REFERENCE_T, SCH_FIELD_LOCATE_VALUE_T, SCH_FIELD_T, EDA_ITEM::Type(), and VALUE.

Referenced by setTransitions().

◆ getEditFrame()

template<typename T >
T* TOOL_BASE::getEditFrame ( ) const
inlineprotectedinherited

Function getEditFrame()

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

Definition at line 187 of file tool_base.h.

188  {
189 #if !defined( QA_TEST ) // Dynamic casts give the linker a siezure in the test framework
190  wxASSERT( dynamic_cast<T*>( getEditFrameInt() ) );
191 #endif
192  return static_cast<T*>( getEditFrameInt() );
193  }
EDA_BASE_FRAME * getEditFrameInt() const
Definition: tool_base.cpp:48

References TOOL_BASE::getEditFrameInt().

Referenced by ZONE_CREATE_HELPER::createNewZone(), and TOOL_SETTINGS::getConfigBase().

◆ GetId()

TOOL_ID TOOL_BASE::GetId ( ) const
inlineinherited

Function GetId() Returns the unique identifier of the tool.

The identifier is set by an instance of TOOL_MANAGER.

Returns
Identifier of the tool.

Definition at line 121 of file tool_base.h.

122  {
123  return m_toolId;
124  }
TOOL_ID m_toolId
Unique identifier for the tool, assigned by a TOOL_MANAGER instance.
Definition: tool_base.h:214

References TOOL_BASE::m_toolId.

Referenced by TOOL_MANAGER::finishTool(), TOOL_MANAGER::InitTools(), TOOL_MANAGER::isActive(), TOOL_MANAGER::RegisterTool(), ACTION_MANAGER::RunHotKey(), TOOL_MANAGER::runTool(), and TOOL_MANAGER::saveViewControls().

◆ GetManager()

TOOL_MANAGER* TOOL_BASE::GetManager ( ) const
inlineinherited

Function GetManager() Returns the instance of TOOL_MANAGER that takes care of the tool.

Returns
Instance of the TOOL_MANAGER. If there is no TOOL_MANAGER associated, it returns NULL.

Definition at line 143 of file tool_base.h.

144  {
145  return m_toolMgr;
146  }
TOOL_MANAGER * m_toolMgr
Definition: tool_base.h:219

References TOOL_BASE::m_toolMgr.

Referenced by BOARD_COMMIT::BOARD_COMMIT(), ZONE_CREATE_HELPER::commitZone(), ZONE_CREATE_HELPER::createNewZone(), PCB_TOOL_BASE::doInteractiveItemPlacement(), ACTION_MENU::getToolManager(), LIB_TREE::onContextMenu(), ZONE_CREATE_HELPER::OnFirstPoint(), ACTION_MENU::OnMenuEvent(), and ZONE_CREATE_HELPER::performZoneCutout().

◆ getModel()

template<typename T >
T* TOOL_BASE::getModel ( ) const
inlineprotectedinherited

Function getModel()

Returns the model object if it matches the requested type.

Definition at line 201 of file tool_base.h.

202  {
203  EDA_ITEM* m = getModelInt();
204 #if !defined( QA_TEST ) // Dynamic casts give the linker a siezure in the test framework
205  wxASSERT( dynamic_cast<T*>( m ) );
206 #endif
207  return static_cast<T*>( m );
208  }
EDA_ITEM * getModelInt() const
Definition: tool_base.cpp:54
Class EDA_ITEM is a base class for most all the KiCad significant classes, used in schematics and boa...
Definition: base_struct.h:163

References TOOL_BASE::getModelInt().

Referenced by ZONE_CREATE_HELPER::commitZone(), ZONE_CREATE_HELPER::createNewZone(), ZONE_CREATE_HELPER::createZoneFromExisting(), and ZONE_CREATE_HELPER::performZoneCutout().

◆ GetName()

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

Function GetName() Returns 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 132 of file tool_base.h.

133  {
134  return m_toolName;
135  }
std::string m_toolName
Name of the tool.
Definition: tool_base.h:218

References TOOL_BASE::m_toolName.

Referenced by TOOL_MANAGER::dispatchInternal(), TOOL_SETTINGS::getKeyName(), TOOL_MANAGER::InitTools(), TOOL_MANAGER::invokeTool(), and TOOL_MANAGER::RegisterTool().

◆ GetSettings()

TOOL_SETTINGS & TOOL_BASE::GetSettings ( )
inherited

Definition at line 78 of file tool_base.cpp.

79 {
80  return m_toolSettings;
81 }
TOOL_SETTINGS m_toolSettings
Definition: tool_base.h:220

References TOOL_BASE::m_toolSettings.

Referenced by ROUTER_TOOL::Init(), GERBVIEW_SELECTION_TOOL::selectable(), and ROUTER_TOOL::~ROUTER_TOOL().

◆ GetToolMenu()

◆ GetType()

TOOL_TYPE TOOL_BASE::GetType ( ) const
inlineinherited

Function GetType() Returns the type of the tool.

Returns
The type of the tool.

Definition at line 110 of file tool_base.h.

111  {
112  return m_type;
113  }
TOOL_TYPE m_type
Stores the type of the tool.
Definition: tool_base.h:211

References TOOL_BASE::m_type.

Referenced by TOOL_MANAGER::finishTool(), TOOL_MANAGER::InvokeTool(), TOOL_MANAGER::ResetTools(), and TOOL_MANAGER::runTool().

◆ getView()

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

Function getView()

Returns the instance of VIEW object used in the application. It allows tools to draw.

Returns
The instance of VIEW.

Definition at line 36 of file tool_base.cpp.

37 {
38  return m_toolMgr->GetView();
39 }
KIGFX::VIEW * GetView() const
Definition: tool_manager.h:241
TOOL_MANAGER * m_toolMgr
Definition: tool_base.h:219

References TOOL_MANAGER::GetView(), and TOOL_BASE::m_toolMgr.

Referenced by EE_POINT_EDITOR::addCornerCondition(), ALIGN_DISTRIBUTE_TOOL::AlignLeft(), ALIGN_DISTRIBUTE_TOOL::AlignRight(), COMMON_TOOLS::CenterContents(), PL_SELECTION_TOOL::ClearSelection(), EE_SELECTION_TOOL::ClearSelection(), COMMON_TOOLS::CursorControl(), LIB_EDIT_TOOL::DeleteItemCursor(), PL_EDIT_TOOL::DeleteItemCursor(), DeleteItemCursor(), PCBNEW_CONTROL::DeleteItemCursor(), GERBVIEW_SELECTION_TOOL::disambiguationMenu(), PL_EDIT_TOOL::DoDelete(), PL_SELECTION_TOOL::doSelectionMenu(), EE_SELECTION_TOOL::doSelectionMenu(), SELECTION_TOOL::doSelectionMenu(), MICROWAVE_TOOL::drawMicrowaveInductor(), PL_DRAWING_TOOLS::DrawShape(), PCB_EDITOR_CONTROL::DrillOrigin(), LIB_EDIT_TOOL::Duplicate(), PAD_TOOL::EnumeratePads(), EE_SELECTION_TOOL::GetNode(), ROUTER_TOOL::getStartLayer(), COMMON_TOOLS::GridPreset(), PCBNEW_CONTROL::GridResetOrigin(), PCBNEW_CONTROL::GridSetOrigin(), SELECTION_TOOL::GuessSelectionCandidates(), PL_SELECTION_TOOL::highlight(), EE_SELECTION_TOOL::highlight(), SELECTION_TOOL::highlight(), GERBVIEW_CONTROL::HighlightControl(), PNS::TOOL_BASE::highlightNet(), PCB_INSPECTION_TOOL::highlightNet(), EE_POINT_EDITOR::Main(), PL_POINT_EDITOR::Main(), CVPCB_FOOTPRINT_VIEWER_SELECTION_TOOL::MeasureTool(), GERBVIEW_SELECTION_TOOL::MeasureTool(), EDIT_TOOL::MeasureTool(), Mirror(), EDIT_TOOL::MoveExact(), SCH_MOVE_TOOL::moveItem(), PL_EDIT_TOOL::moveItem(), POINT_EDITOR::OnSelectionChange(), COMMON_TOOLS::PanControl(), LIB_EDIT_TOOL::Paste(), PL_EDIT_TOOL::Paste(), SCH_EDITOR_CONTROL::Paste(), PNS::TOOL_BASE::pickSingleItem(), PL_DRAWING_TOOLS::PlaceItem(), PCB_EDITOR_CONTROL::PlaceModule(), PCB_EDITOR_CONTROL::PlaceTarget(), Properties(), EDIT_TOOL::Remove(), PCB_EDITOR_CONTROL::Reset(), PNS::TOOL_BASE::Reset(), PCBNEW_CONTROL::Reset(), GERBVIEW_SELECTION_TOOL::Reset(), DRAWING_TOOL::Reset(), EE_SELECTION_TOOL::Reset(), SELECTION_TOOL::Reset(), EE_TOOL_BASE< SCH_BASE_FRAME >::Reset(), Rotate(), GERBVIEW_SELECTION_TOOL::select(), SELECTION_TOOL::Selectable(), GERBVIEW_SELECTION_TOOL::selectable(), PL_SELECTION_TOOL::selectionContains(), EE_SELECTION_TOOL::selectionContains(), SELECTION_TOOL::selectionContains(), PL_SELECTION_TOOL::selectMultiple(), EE_SELECTION_TOOL::selectMultiple(), SELECTION_TOOL::selectMultiple(), PL_SELECTION_TOOL::SelectPoint(), EE_SELECTION_TOOL::SelectPoint(), ZOOM_TOOL::selectRegion(), GERBVIEW_SELECTION_TOOL::selectVisually(), PL_EDITOR_CONTROL::ToggleBackgroundColor(), COMMON_TOOLS::ToggleGrid(), SCH_EDITOR_CONTROL::ToggleHiddenPins(), PL_SELECTION_TOOL::unhighlight(), EE_SELECTION_TOOL::unhighlight(), SELECTION_TOOL::unhighlight(), GERBVIEW_SELECTION_TOOL::unselect(), GERBVIEW_SELECTION_TOOL::unselectVisually(), EE_POINT_EDITOR::updateEditedPoint(), PL_POINT_EDITOR::updateEditedPoint(), POINT_EDITOR::updateEditedPoint(), SCH_EDITOR_CONTROL::UpdateFind(), PCBNEW_CONTROL::updateGrid(), EE_POINT_EDITOR::updateItem(), PL_POINT_EDITOR::updateItem(), SCH_EDITOR_CONTROL::UpdateNetHighlighting(), EE_POINT_EDITOR::updatePoints(), PL_POINT_EDITOR::updatePoints(), POINT_EDITOR::updatePoints(), SELECTION_TOOL::updateSelection(), PNS::TOOL_BASE::updateStartItem(), EE_TOOL_BASE< SCH_BASE_FRAME >::updateView(), PCB_TOOL_BASE::view(), COMMON_TOOLS::ZoomFitScreen(), SELECTION_TOOL::zoomFitSelection(), EE_SELECTION_TOOL::~EE_SELECTION_TOOL(), GERBVIEW_SELECTION_TOOL::~GERBVIEW_SELECTION_TOOL(), and SELECTION_TOOL::~SELECTION_TOOL().

◆ getViewControls()

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

Function getViewControls()

Returns 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 42 of file tool_base.cpp.

43 {
44  return m_toolMgr->GetViewControls();
45 }
TOOL_MANAGER * m_toolMgr
Definition: tool_base.h:219
KIGFX::VIEW_CONTROLS * GetViewControls() const
Definition: tool_manager.h:246

References TOOL_MANAGER::GetViewControls(), and TOOL_BASE::m_toolMgr.

Referenced by EE_POINT_EDITOR::addCorner(), POINT_EDITOR::addCorner(), EE_POINT_EDITOR::addCornerCondition(), BreakWire(), PCB_TOOL_BASE::controls(), COMMON_TOOLS::CursorControl(), SCH_LINE_WIRE_BUS_TOOL::doDrawSegments(), SCH_LINE_WIRE_BUS_TOOL::doUnfoldBus(), COMMON_TOOLS::doZoomToPreset(), DRAWING_TOOL::DrawCircle(), DRAWING_TOOL::DrawLine(), MICROWAVE_TOOL::drawMicrowaveInductor(), SCH_LINE_WIRE_BUS_TOOL::DrawSegments(), LIB_DRAWING_TOOLS::DrawShape(), PL_DRAWING_TOOLS::DrawShape(), SCH_DRAWING_TOOLS::DrawSheet(), LIB_EDIT_TOOL::Duplicate(), PAD_TOOL::EnumeratePads(), SCH_LINE_WIRE_BUS_TOOL::finishSegments(), COMMON_TOOLS::GridPreset(), PCB_INSPECTION_TOOL::HighlightNet(), SCH_EDITOR_CONTROL::HighlightNet(), PCB_INSPECTION_TOOL::HighlightNetTool(), MODULE_EDITOR_TOOLS::ImportFootprint(), PL_EDIT_TOOL::Main(), SCH_MOVE_TOOL::Main(), EE_POINT_EDITOR::Main(), PL_POINT_EDITOR::Main(), LIB_MOVE_TOOL::Main(), CVPCB_FOOTPRINT_VIEWER_SELECTION_TOOL::Main(), PCBNEW_PICKER_TOOL::Main(), PICKER_TOOL::Main(), GERBVIEW_SELECTION_TOOL::Main(), ROUTER_TOOL::MainLoop(), CVPCB_FOOTPRINT_VIEWER_SELECTION_TOOL::MeasureTool(), GERBVIEW_SELECTION_TOOL::MeasureTool(), EDIT_TOOL::MeasureTool(), EDIT_TOOL::Move(), POINT_EDITOR::OnSelectionChange(), LIB_EDIT_TOOL::Paste(), ROUTER_TOOL::performDragging(), LIB_DRAWING_TOOLS::PlaceAnchor(), PCBNEW_CONTROL::placeBoardItems(), SCH_DRAWING_TOOLS::PlaceComponent(), SCH_DRAWING_TOOLS::PlaceImage(), PL_DRAWING_TOOLS::PlaceItem(), PCB_EDITOR_CONTROL::PlaceModule(), PCB_EDITOR_CONTROL::PlaceTarget(), RepeatDrawItem(), PL_SELECTION_TOOL::RequestSelection(), EE_SELECTION_TOOL::RequestSelection(), POINT_EDITOR::Reset(), DRAWING_TOOL::Reset(), COMMON_TOOLS::ResetLocalCoords(), GERBVIEW_SELECTION_TOOL::selectCursor(), SELECTION_TOOL::selectCursor(), PL_SELECTION_TOOL::selectMultiple(), EE_SELECTION_TOOL::selectMultiple(), SELECTION_TOOL::selectMultiple(), EE_SELECTION_TOOL::SelectNode(), ZOOM_TOOL::selectRegion(), ALIGN_DISTRIBUTE_TOOL::selectTarget(), PICKER_TOOL::setControls(), PCBNEW_PICKER_TOOL::setControls(), EE_POINT_EDITOR::setEditedPoint(), PL_POINT_EDITOR::setEditedPoint(), POINT_EDITOR::setEditedPoint(), SCH_DRAWING_TOOLS::SingleClickPlace(), LIB_DRAWING_TOOLS::TwoClickPlace(), SCH_DRAWING_TOOLS::TwoClickPlace(), EE_POINT_EDITOR::updateEditedPoint(), PL_POINT_EDITOR::updateEditedPoint(), POINT_EDITOR::updateEditedPoint(), LIB_MOVE_TOOL::updateModificationPoint(), PL_EDIT_TOOL::updateModificationPoint(), EDIT_TOOL::updateModificationPoint(), and COMMON_TOOLS::ZoomCenter().

◆ GlobalEdit()

int SCH_EDIT_TOOL::GlobalEdit ( const TOOL_EVENT aEvent)

◆ Go()

template<class T >
void TOOL_INTERACTIVE::Go ( int(T::*)(const TOOL_EVENT &)  aStateFunc,
const TOOL_EVENT_LIST aConditions = TOOL_EVENTTC_ANYTA_ANY ) 
)
inherited

Function Go()

Defines which state (aStateFunc) to go when a certain event arrives (aConditions). No conditions means any event.

Definition at line 129 of file tool_interactive.h.

131 {
132  TOOL_STATE_FUNC sptr = std::bind( aStateFunc, static_cast<T*>( this ), std::placeholders::_1 );
133 
134  goInternal( sptr, aConditions );
135 }
std::function< int(const TOOL_EVENT &)> TOOL_STATE_FUNC
Definition: tool_base.h:58
void goInternal(TOOL_STATE_FUNC &aState, const TOOL_EVENT_LIST &aConditions)

References TOOL_INTERACTIVE::goInternal().

Referenced by LENGTH_TUNER_TOOL::setTransitions(), ZOOM_TOOL::setTransitions(), AUTOPLACE_TOOL::setTransitions(), MICROWAVE_TOOL::setTransitions(), ROUTER_TOOL::setTransitions(), CVPCB_FOOTPRINT_VIEWER_CONTROL::setTransitions(), LIB_PIN_TOOL::setTransitions(), PAD_TOOL::setTransitions(), EE_INSPECTION_TOOL::setTransitions(), PL_DRAWING_TOOLS::setTransitions(), KICAD_MANAGER_CONTROL::setTransitions(), COMMON_CONTROL::setTransitions(), LIB_DRAWING_TOOLS::setTransitions(), ZONE_FILLER_TOOL::setTransitions(), EE_POINT_EDITOR::setTransitions(), PL_POINT_EDITOR::setTransitions(), SCH_MOVE_TOOL::setTransitions(), LIB_MOVE_TOOL::setTransitions(), GERBVIEW_CONTROL::setTransitions(), SCH_DRAWING_TOOLS::setTransitions(), GLOBAL_EDIT_TOOL::setTransitions(), POINT_EDITOR::setTransitions(), CVPCB_FOOTPRINT_VIEWER_SELECTION_TOOL::setTransitions(), LIB_CONTROL::setTransitions(), PL_EDITOR_CONTROL::setTransitions(), LIB_EDIT_TOOL::setTransitions(), setTransitions(), PL_EDIT_TOOL::setTransitions(), POSITION_RELATIVE_TOOL::setTransitions(), GERBVIEW_SELECTION_TOOL::setTransitions(), COMMON_TOOLS::setTransitions(), SCH_LINE_WIRE_BUS_TOOL::setTransitions(), PCB_INSPECTION_TOOL::setTransitions(), PCBNEW_CONTROL::setTransitions(), ALIGN_DISTRIBUTE_TOOL::setTransitions(), MODULE_EDITOR_TOOLS::setTransitions(), CVPCB_CONTROL::setTransitions(), CVPCB_ASSOCIATION_TOOL::setTransitions(), PCBNEW_PICKER_TOOL::setTransitions(), PICKER_TOOL::setTransitions(), PCB_EDITOR_CONTROL::setTransitions(), DRAWING_TOOL::setTransitions(), EDIT_TOOL::setTransitions(), SELECTION_TOOL::setTransitions(), SCH_EDITOR_CONTROL::setTransitions(), PL_SELECTION_TOOL::setTransitions(), EE_SELECTION_TOOL::setTransitions(), and DRC::setTransitions().

◆ Init()

bool SCH_EDIT_TOOL::Init ( )
overridevirtual

Function Init() Init() is called once upon a registration of the tool.

Returns
True if the initialization went fine, false - otherwise.

Reimplemented from TOOL_BASE.

Definition at line 127 of file sch_edit_tool.cpp.

128 {
130 
133 
134  wxASSERT_MSG( drawingTools, "eeshema.InteractiveDrawing tool is not available" );
135 
136  auto sheetTool = [ this ] ( const SELECTION& aSel ) {
138  };
139 
140  auto anyTextTool = [ this ] ( const SELECTION& aSel ) {
145  };
146 
147  auto duplicateCondition = [] ( const SELECTION& aSel ) {
149  return false;
150 
151  return true;
152  };
153 
154  auto orientCondition = [] ( const SELECTION& aSel ) {
155  if( aSel.Empty() )
156  return false;
157 
159  return false;
160 
161  SCH_ITEM* item = (SCH_ITEM*) aSel.Front();
162 
163  if( aSel.GetSize() > 1 )
164  return true;
165 
166  switch( item->Type() )
167  {
168  case SCH_MARKER_T:
169  case SCH_JUNCTION_T:
170  case SCH_NO_CONNECT_T:
171  case SCH_LINE_T:
172  case SCH_PIN_T:
173  return false;
174  default:
175  return true;
176  }
177  };
178 
179  auto propertiesCondition = [] ( const SELECTION& aSel ) {
180  if( aSel.GetSize() != 1 )
181  return false;
182 
183  switch( static_cast<EDA_ITEM*>( aSel.Front() )->Type() )
184  {
185  case SCH_MARKER_T:
186  case SCH_JUNCTION_T:
187  case SCH_NO_CONNECT_T:
189  case SCH_BUS_BUS_ENTRY_T:
190  case SCH_LINE_T:
191  case SCH_SHEET_PIN_T:
192  case SCH_PIN_T:
193  return false;
194  default:
195  return true;
196  }
197  };
198 
199  static KICAD_T toLabelTypes[] = { SCH_GLOBAL_LABEL_T, SCH_HIER_LABEL_T, SCH_TEXT_T, EOT };
200  auto toLabelCondition = E_C::Count( 1 ) && E_C::OnlyTypes( toLabelTypes );
201 
202  static KICAD_T toHLableTypes[] = { SCH_LABEL_T, SCH_GLOBAL_LABEL_T, SCH_TEXT_T, EOT };
203  auto toHLabelCondition = E_C::Count( 1 ) && E_C::OnlyTypes( toHLableTypes );
204 
205  static KICAD_T toGLableTypes[] = { SCH_LABEL_T, SCH_HIER_LABEL_T, SCH_TEXT_T, EOT };
206  auto toGLabelCondition = E_C::Count( 1 ) && E_C::OnlyTypes( toGLableTypes );
207 
208  static KICAD_T toTextTypes[] = { SCH_LABEL_T, SCH_GLOBAL_LABEL_T, SCH_HIER_LABEL_T, EOT };
209  auto toTextlCondition = E_C::Count( 1 ) && E_C::OnlyTypes( toTextTypes );
210 
211  static KICAD_T entryTypes[] = { SCH_BUS_WIRE_ENTRY_T, SCH_BUS_BUS_ENTRY_T, EOT };
212  auto entryCondition = E_C::MoreThan( 0 ) && E_C::OnlyTypes( entryTypes );
213 
214  auto singleComponentCondition = E_C::Count( 1 ) && E_C::OnlyType( SCH_COMPONENT_T );
215  auto wireSelectionCondition = E_C::MoreThan( 0 ) && E_C::OnlyType( SCH_LINE_LOCATE_WIRE_T );
216  auto busSelectionCondition = E_C::MoreThan( 0 ) && E_C::OnlyType( SCH_LINE_LOCATE_BUS_T );
217  auto singleSheetCondition = E_C::Count( 1 ) && E_C::OnlyType( SCH_SHEET_T );
218 
219  //
220  // Add edit actions to the move tool menu
221  //
222  if( moveTool )
223  {
224  CONDITIONAL_MENU& moveMenu = moveTool->GetToolMenu().GetMenu();
225 
226  moveMenu.AddSeparator();
227  moveMenu.AddItem( EE_ACTIONS::rotateCCW, orientCondition );
228  moveMenu.AddItem( EE_ACTIONS::rotateCW, orientCondition );
229  moveMenu.AddItem( EE_ACTIONS::mirrorX, orientCondition );
230  moveMenu.AddItem( EE_ACTIONS::mirrorY, orientCondition );
232 
233  moveMenu.AddItem( EE_ACTIONS::properties, propertiesCondition );
234  moveMenu.AddItem( EE_ACTIONS::editReference, singleComponentCondition );
235  moveMenu.AddItem( EE_ACTIONS::editValue, singleComponentCondition );
236  moveMenu.AddItem( EE_ACTIONS::editFootprint, singleComponentCondition );
238 
239  std::shared_ptr<SYMBOL_UNIT_MENU> symUnitMenu = std::make_shared<SYMBOL_UNIT_MENU>();
240  symUnitMenu->SetTool( this );
241  m_menu.AddSubMenu( symUnitMenu );
242  moveMenu.AddMenu( symUnitMenu.get(), E_C::SingleMultiUnitSymbol, 1 );
243 
244  moveMenu.AddSeparator();
247  moveMenu.AddItem( ACTIONS::duplicate, duplicateCondition );
248  }
249 
250  //
251  // Add editing actions to the drawing tool menu
252  //
253  CONDITIONAL_MENU& drawMenu = drawingTools->GetToolMenu().GetMenu();
254 
255  drawMenu.AddItem( EE_ACTIONS::rotateCCW, orientCondition, 200 );
256  drawMenu.AddItem( EE_ACTIONS::rotateCW, orientCondition, 200 );
257  drawMenu.AddItem( EE_ACTIONS::mirrorX, orientCondition, 200 );
258  drawMenu.AddItem( EE_ACTIONS::mirrorY, orientCondition, 200 );
259 
260  drawMenu.AddItem( EE_ACTIONS::properties, propertiesCondition, 200 );
261  drawMenu.AddItem( EE_ACTIONS::editReference, singleComponentCondition, 200 );
262  drawMenu.AddItem( EE_ACTIONS::editValue, singleComponentCondition, 200 );
263  drawMenu.AddItem( EE_ACTIONS::editFootprint, singleComponentCondition, 200 );
264  drawMenu.AddItem( EE_ACTIONS::autoplaceFields, singleComponentCondition, 200 );
266 
267  std::shared_ptr<SYMBOL_UNIT_MENU> symUnitMenu2 = std::make_shared<SYMBOL_UNIT_MENU>();
268  symUnitMenu2->SetTool( drawingTools );
269  drawingTools->GetToolMenu().AddSubMenu( symUnitMenu2 );
270  drawMenu.AddMenu( symUnitMenu2.get(), E_C::SingleMultiUnitSymbol, 1 );
271 
272  drawMenu.AddItem( EE_ACTIONS::editWithLibEdit, singleComponentCondition && E_C::Idle, 200 );
273 
274  drawMenu.AddItem( EE_ACTIONS::toShapeSlash, entryCondition, 200 );
275  drawMenu.AddItem( EE_ACTIONS::toShapeBackslash, entryCondition, 200 );
276  drawMenu.AddItem( EE_ACTIONS::toLabel, anyTextTool && E_C::Idle, 200 );
277  drawMenu.AddItem( EE_ACTIONS::toHLabel, anyTextTool && E_C::Idle, 200 );
278  drawMenu.AddItem( EE_ACTIONS::toGLabel, anyTextTool && E_C::Idle, 200 );
279  drawMenu.AddItem( EE_ACTIONS::toText, anyTextTool && E_C::Idle, 200 );
280  drawMenu.AddItem( EE_ACTIONS::cleanupSheetPins, sheetTool && E_C::Idle, 250 );
281 
282  //
283  // Add editing actions to the selection tool menu
284  //
286 
287  selToolMenu.AddItem( EE_ACTIONS::rotateCCW, orientCondition, 200 );
288  selToolMenu.AddItem( EE_ACTIONS::rotateCW, orientCondition, 200 );
289  selToolMenu.AddItem( EE_ACTIONS::mirrorX, orientCondition, 200 );
290  selToolMenu.AddItem( EE_ACTIONS::mirrorY, orientCondition, 200 );
291  selToolMenu.AddItem( ACTIONS::doDelete, E_C::NotEmpty, 200 );
292 
293  selToolMenu.AddItem( EE_ACTIONS::properties, propertiesCondition, 200 );
295  selToolMenu.AddItem( EE_ACTIONS::editValue, E_C::SingleSymbol, 200 );
297  selToolMenu.AddItem( EE_ACTIONS::autoplaceFields, singleComponentCondition, 200 );
299 
300  std::shared_ptr<SYMBOL_UNIT_MENU> symUnitMenu3 = std::make_shared<SYMBOL_UNIT_MENU>();
301  symUnitMenu3->SetTool( m_selectionTool );
302  m_selectionTool->GetToolMenu().AddSubMenu( symUnitMenu3 );
303  selToolMenu.AddMenu( symUnitMenu3.get(), E_C::SingleMultiUnitSymbol, 1 );
304 
305  selToolMenu.AddItem( EE_ACTIONS::editWithLibEdit, singleComponentCondition && E_C::Idle, 200 );
306 
307  selToolMenu.AddItem( EE_ACTIONS::toShapeSlash, entryCondition, 200 );
308  selToolMenu.AddItem( EE_ACTIONS::toShapeBackslash, entryCondition, 200 );
309  selToolMenu.AddItem( EE_ACTIONS::toLabel, toLabelCondition, 200 );
310  selToolMenu.AddItem( EE_ACTIONS::toHLabel, toHLabelCondition, 200 );
311  selToolMenu.AddItem( EE_ACTIONS::toGLabel, toGLabelCondition, 200 );
312  selToolMenu.AddItem( EE_ACTIONS::toText, toTextlCondition, 200 );
313  selToolMenu.AddItem( EE_ACTIONS::cleanupSheetPins, singleSheetCondition, 250 );
314 
315  selToolMenu.AddSeparator( 300 );
316  selToolMenu.AddItem( ACTIONS::cut, E_C::IdleSelection, 300 );
317  selToolMenu.AddItem( ACTIONS::copy, E_C::IdleSelection, 300 );
318  selToolMenu.AddItem( ACTIONS::paste, E_C::Idle, 300 );
319  selToolMenu.AddItem( ACTIONS::pasteSpecial, E_C::Idle, 300 );
320  selToolMenu.AddItem( ACTIONS::duplicate, duplicateCondition, 300 );
321 
322  return true;
323 }
void AddMenu(ACTION_MENU *aMenu, const SELECTION_CONDITION &aCondition=SELECTION_CONDITIONS::ShowAlways, int aOrder=ANY_ORDER)
Function AddMenu()
static TOOL_ACTION properties
Definition: ee_actions.h:122
TOOL_MENU m_menu
functions below are not yet implemented - their interface may change
static TOOL_ACTION toggleDeMorgan
Definition: ee_actions.h:127
static SELECTION_CONDITION SingleSymbol
static TOOL_ACTION doDelete
Definition: actions.h:74
Class SCH_DRAWING_TOOLS.
static TOOL_ACTION toShapeBackslash
Definition: ee_actions.h:132
static SELECTION_CONDITION MoreThan(int aNumber)
Function MoreThan Creates a functor that tests if the number of selected items is greater than the va...
static SELECTION_CONDITION OnlyTypes(const KICAD_T aTypes[])
Function OnlyTypes Creates a functor that tests if the selected items are only of given types.
CONDITIONAL_MENU & GetMenu()
Function GetMenu.
Definition: tool_menu.cpp:46
static TOOL_ACTION mirrorY
Definition: ee_actions.h:121
static TOOL_ACTION placeHierLabel
Definition: ee_actions.h:90
TOOL_MANAGER * m_toolMgr
Definition: tool_base.h:219
static SELECTION_CONDITION IdleSelection
TOOL_MENU & GetToolMenu()
static TOOL_ACTION toText
Definition: ee_actions.h:136
static TOOL_ACTION autoplaceFields
Definition: ee_actions.h:126
static SELECTION_CONDITION Idle
static SELECTION_CONDITION Count(int aNumber)
Function Count Creates a functor that tests if the number of selected items is equal to the value giv...
static bool NotEmpty(const SELECTION &aSelection)
Function NotEmpty Tests if there are any items selected.
search types array terminator (End Of Types)
Definition: typeinfo.h:82
KICAD_T
Enum KICAD_T is the set of class identification values, stored in EDA_ITEM::m_StructType.
Definition: typeinfo.h:78
static TOOL_ACTION rotateCW
Definition: ee_actions.h:118
bool Init() override
Function Init() Init() is called once upon a registration of the tool.
Definition: ee_tool_base.h:69
static TOOL_ACTION drawSheet
Definition: ee_actions.h:91
static SELECTION_CONDITION SingleDeMorganSymbol
static TOOL_ACTION copy
Definition: actions.h:70
static TOOL_ACTION cleanupSheetPins
Definition: ee_actions.h:181
static TOOL_ACTION rotateCCW
Definition: ee_actions.h:119
static TOOL_ACTION editFootprint
Definition: ee_actions.h:125
static TOOL_ACTION placeSchematicText
Definition: ee_actions.h:94
static TOOL_ACTION cut
Definition: actions.h:69
static TOOL_ACTION mirrorX
Definition: ee_actions.h:120
EE_SELECTION_TOOL * m_selectionTool
Definition: ee_tool_base.h:140
static SELECTION_CONDITION SingleMultiUnitSymbol
void AddSeparator(int aOrder=ANY_ORDER)
Function AddSeparator()
static TOOL_ACTION pasteSpecial
Definition: actions.h:72
static TOOL_ACTION placeLabel
Definition: ee_actions.h:88
static bool IsDrawingLineWireOrBus(const SELECTION &aSelection)
static TOOL_ACTION editValue
Definition: ee_actions.h:124
void AddSubMenu(std::shared_ptr< ACTION_MENU > aSubMenu)
Function CreateSubMenu.
Definition: tool_menu.cpp:52
static SELECTION_CONDITION OnlyType(KICAD_T aType)
Function OnlyType Creates a functor that tests if the selected items are only of given type.
static TOOL_ACTION editWithLibEdit
Definition: ee_actions.h:156
static TOOL_ACTION toLabel
Definition: ee_actions.h:133
static TOOL_ACTION toHLabel
Definition: ee_actions.h:134
static TOOL_ACTION editReference
Definition: ee_actions.h:123
static TOOL_ACTION placeGlobalLabel
Definition: ee_actions.h:89
void AddItem(const TOOL_ACTION &aAction, const SELECTION_CONDITION &aCondition, int aOrder=ANY_ORDER)
Function AddItem()
bool IsCurrentTool(const TOOL_ACTION &aAction) const
Class SCH_ITEM is a base class for any item which can be embedded within the SCHEMATIC container clas...
Definition: sch_item.h:114
static TOOL_ACTION toGLabel
Definition: ee_actions.h:135
static TOOL_ACTION paste
Definition: actions.h:71
static TOOL_ACTION duplicate
Definition: actions.h:73
static TOOL_ACTION toShapeSlash
Definition: ee_actions.h:131
KICAD_T Type() const
Function Type()
Definition: base_struct.h:210

References CONDITIONAL_MENU::AddItem(), CONDITIONAL_MENU::AddMenu(), CONDITIONAL_MENU::AddSeparator(), TOOL_MENU::AddSubMenu(), EE_ACTIONS::autoplaceFields, EE_ACTIONS::cleanupSheetPins, ACTIONS::copy, SELECTION_CONDITIONS::Count(), ACTIONS::cut, ACTIONS::doDelete, EE_ACTIONS::drawSheet, ACTIONS::duplicate, EE_ACTIONS::editFootprint, EE_ACTIONS::editReference, EE_ACTIONS::editValue, EE_ACTIONS::editWithLibEdit, EOT, TOOL_MENU::GetMenu(), TOOL_MANAGER::GetTool(), TOOL_INTERACTIVE::GetToolMenu(), EE_CONDITIONS::Idle, EE_CONDITIONS::IdleSelection, EE_TOOL_BASE< T >::Init(), EDA_BASE_FRAME::IsCurrentTool(), SCH_LINE_WIRE_BUS_TOOL::IsDrawingLineWireOrBus(), EE_TOOL_BASE< SCH_EDIT_FRAME >::m_frame, TOOL_INTERACTIVE::m_menu, EE_TOOL_BASE< SCH_EDIT_FRAME >::m_selectionTool, TOOL_BASE::m_toolMgr, EE_ACTIONS::mirrorX, EE_ACTIONS::mirrorY, SELECTION_CONDITIONS::MoreThan(), SELECTION_CONDITIONS::NotEmpty(), SELECTION_CONDITIONS::OnlyType(), SELECTION_CONDITIONS::OnlyTypes(), ACTIONS::paste, ACTIONS::pasteSpecial, EE_ACTIONS::placeGlobalLabel, EE_ACTIONS::placeHierLabel, EE_ACTIONS::placeLabel, EE_ACTIONS::placeSchematicText, EE_ACTIONS::properties, EE_ACTIONS::rotateCCW, EE_ACTIONS::rotateCW, SCH_BUS_BUS_ENTRY_T, SCH_BUS_WIRE_ENTRY_T, SCH_COMPONENT_T, SCH_GLOBAL_LABEL_T, SCH_HIER_LABEL_T, SCH_JUNCTION_T, SCH_LABEL_T, SCH_LINE_LOCATE_BUS_T, SCH_LINE_LOCATE_WIRE_T, SCH_LINE_T, SCH_MARKER_T, SCH_NO_CONNECT_T, SCH_PIN_T, SCH_SHEET_PIN_T, SCH_SHEET_T, SCH_TEXT_T, EE_CONDITIONS::SingleDeMorganSymbol, EE_CONDITIONS::SingleMultiUnitSymbol, EE_CONDITIONS::SingleSymbol, EE_ACTIONS::toggleDeMorgan, EE_ACTIONS::toGLabel, EE_ACTIONS::toHLabel, EE_ACTIONS::toLabel, EE_ACTIONS::toShapeBackslash, EE_ACTIONS::toShapeSlash, EE_ACTIONS::toText, and EDA_ITEM::Type().

◆ IsToolActive()

bool TOOL_BASE::IsToolActive ( ) const
inherited

Definition at line 31 of file tool_base.cpp.

32 {
33  return m_toolMgr->IsToolActive( m_toolId );
34 }
TOOL_MANAGER * m_toolMgr
Definition: tool_base.h:219
TOOL_ID m_toolId
Unique identifier for the tool, assigned by a TOOL_MANAGER instance.
Definition: tool_base.h:214
bool IsToolActive(TOOL_ID aId) const
Function IsToolActive() Returns true if a tool with given id is active (executing)

References TOOL_MANAGER::IsToolActive(), TOOL_BASE::m_toolId, and TOOL_BASE::m_toolMgr.

◆ Mirror()

int SCH_EDIT_TOOL::Mirror ( const TOOL_EVENT aEvent)

Definition at line 518 of file sch_edit_tool.cpp.

519 {
521 
522  if( selection.GetSize() == 0 )
523  return 0;
524 
525  wxPoint mirrorPoint;
526  bool xAxis = ( aEvent.Matches( EE_ACTIONS::mirrorX.MakeEvent() ) );
527  SCH_ITEM* item = static_cast<SCH_ITEM*>( selection.Front() );
528  bool connections = false;
529  bool moving = item->IsMoving();
530 
531  if( selection.GetSize() == 1 )
532  {
533  if( !moving )
535 
536  switch( item->Type() )
537  {
538  case SCH_COMPONENT_T:
539  {
540  SCH_COMPONENT* component = static_cast<SCH_COMPONENT*>( item );
541 
542  if( xAxis )
543  component->SetOrientation( CMP_MIRROR_X );
544  else
545  component->SetOrientation( CMP_MIRROR_Y );
546 
547  if( m_frame->GetAutoplaceFields() )
548  component->AutoAutoplaceFields( m_frame->GetScreen() );
549 
550  break;
551  }
552 
553  case SCH_TEXT_T:
554  case SCH_LABEL_T:
555  case SCH_GLOBAL_LABEL_T:
556  case SCH_HIER_LABEL_T:
557  {
558  SCH_TEXT* textItem = static_cast<SCH_TEXT*>( item );
559  int spin = textItem->GetLabelSpinStyle();
560 
561  if( xAxis && spin % 2 )
562  textItem->SetLabelSpinStyle( ( spin + 2 ) % 4 );
563  else if ( !xAxis && !( spin % 2 ) )
564  textItem->SetLabelSpinStyle( ( spin + 2 ) % 4 );
565  break;
566  }
567 
568  case SCH_SHEET_PIN_T:
569  {
570  // mirror within parent sheet
571  SCH_SHEET_PIN* pin = static_cast<SCH_SHEET_PIN*>( item );
572  SCH_SHEET* sheet = pin->GetParent();
573 
574  if( xAxis )
575  pin->MirrorX( sheet->GetBoundingBox().GetCenter().y );
576  else
577  pin->MirrorY( sheet->GetBoundingBox().GetCenter().x );
578 
579  break;
580  }
581 
582  case SCH_BUS_BUS_ENTRY_T:
584  if( xAxis )
585  item->MirrorX( item->GetPosition().y );
586  else
587  item->MirrorY( item->GetPosition().x );
588  break;
589 
590  case SCH_FIELD_T:
591  {
592  SCH_FIELD* field = static_cast<SCH_FIELD*>( item );
593 
594  if( xAxis )
596  else
598 
599  // Now that we're re-justifying a field, they're no longer autoplaced.
600  if( item->GetParent()->Type() == SCH_COMPONENT_T )
601  {
602  SCH_COMPONENT *parent = static_cast<SCH_COMPONENT*>( item->GetParent() );
603  parent->ClearFieldsAutoplaced();
604  }
605 
606  break;
607  }
608 
609  case SCH_BITMAP_T:
610  if( xAxis )
611  item->MirrorX( item->GetPosition().y );
612  else
613  item->MirrorY( item->GetPosition().x );
614 
615  // The bitmap is cached in Opengl: clear the cache to redraw
617  break;
618 
619  case SCH_SHEET_T:
620  // Mirror the sheet on itself. Sheets do not have a anchor point.
621  mirrorPoint = m_frame->GetNearestGridPosition( item->GetBoundingBox().Centre() );
622 
623  if( xAxis )
624  item->MirrorX( mirrorPoint.y );
625  else
626  item->MirrorY( mirrorPoint.x );
627 
628  break;
629 
630  default:
631  break;
632  }
633 
634  connections = item->IsConnectable();
635  m_frame->RefreshItem( item );
636  }
637  else if( selection.GetSize() > 1 )
638  {
639  mirrorPoint = (wxPoint)selection.GetReferencePoint();
640 
641  for( unsigned ii = 0; ii < selection.GetSize(); ii++ )
642  {
643  item = static_cast<SCH_ITEM*>( selection.GetItem( ii ) );
644 
645  if( !moving )
646  saveCopyInUndoList( item, UR_CHANGED, ii > 0 );
647 
648  if( item->Type() == SCH_SHEET_PIN_T )
649  {
650  if( item->GetParent()->IsSelected() )
651  {
652  // parent will mirror us
653  }
654  else
655  {
656  // mirror within parent sheet
657  SCH_SHEET_PIN* pin = static_cast<SCH_SHEET_PIN*>( item );
658  SCH_SHEET* sheet = pin->GetParent();
659 
660  if( xAxis )
661  pin->MirrorX( sheet->GetBoundingBox().GetCenter().y );
662  else
663  pin->MirrorY( sheet->GetBoundingBox().GetCenter().x );
664  }
665  }
666  else
667  {
668  if( xAxis )
669  item->MirrorX( mirrorPoint.y );
670  else
671  item->MirrorY( mirrorPoint.x );
672  }
673 
674  connections |= item->IsConnectable();
675  m_frame->RefreshItem( item );
676  }
677  }
678 
680 
681  if( item->IsMoving() )
682  {
684  }
685  else
686  {
687  if( selection.IsHover() )
689 
690  if( connections )
692 
693  m_frame->OnModify();
694  }
695 
696  return 0;
697 }
VECTOR2I GetReferencePoint() const
Definition: selection.h:238
Class SCH_FIELD instances are attached to a component and provide a place for the component's value,...
Definition: sch_field.h:52
void AutoAutoplaceFields(SCH_SCREEN *aScreen)
Autoplace fields only if correct to do so automatically.
virtual bool IsConnectable() const
Function IsConnectable returns true if the schematic item can connect to another schematic item.
Definition: sch_item.h:298
EDA_TEXT_HJUSTIFY_T
Definition: eda_text.h:44
EDA_TEXT_VJUSTIFY_T GetVertJustify() const
Definition: eda_text.h:185
bool IsHover() const
Definition: selection.h:69
SCH_SHEET * GetParent() const
Get the parent sheet object of this sheet pin.
Definition: sch_sheet.h:158
bool IsSelected() const
Definition: base_struct.h:233
void MirrorY(int aYaxis_position) override
Function MirrorY mirrors item relative to the Y axis about aYaxis_position.
virtual void SetLabelSpinStyle(int aSpinStyle)
Set a spin or rotation angle, along with specific horizontal and vertical justification styles with e...
Definition: sch_text.cpp:234
bool IsMoving() const
Definition: base_struct.h:230
TOOL_MANAGER * m_toolMgr
Definition: tool_base.h:219
void RecacheAllItems()
Function RecacheAllItems() Rebuilds GAL display lists.
Definition: view.cpp:1402
bool RunAction(const std::string &aActionName, bool aNow=false, T aParam=NULL)
Function RunAction() Runs the specified action.
Definition: tool_manager.h:109
bool TestDanglingEnds()
Test all of the connectable objects in the schematic for unused connection points.
wxPoint GetNearestGridPosition(const wxPoint &aPosition) const
Return the nearest aGridSize location to aPosition.
void MirrorX(int aXaxis_position) override
Function MirrorX mirrors item relative to the X axis about aXaxis_position.
bool GetAutoplaceFields() const
static const TOOL_EVENT SelectedItemsModified
Definition: actions.h:201
void ClearFieldsAutoplaced()
Set fields automatically placed flag false.
EE_SELECTION & RequestSelection(const KICAD_T *aFilterList=EE_COLLECTOR::AllItems)
Function RequestSelection()
SCH_SCREEN * GetScreen() const override
Return a pointer to a BASE_SCREEN or one of its derivatives.
int GetLabelSpinStyle() const
Definition: sch_text.h:124
virtual wxPoint GetPosition() const =0
Function GetPosition.
EDA_TEXT_HJUSTIFY_T GetHorizJustify() const
Definition: eda_text.h:184
EDA_RECT const GetBoundingBox() const override
Function GetBoundingBox returns the orthogonal, bounding box of this object for display purposes.
Definition: sch_sheet.cpp:488
void SetVertJustify(EDA_TEXT_VJUSTIFY_T aType)
Definition: eda_text.h:188
EDA_ITEM * GetParent() const
Definition: base_struct.h:220
const KICAD_T rotatableItems[]
static TOOL_ACTION mirrorX
Definition: ee_actions.h:120
EE_SELECTION_TOOL * m_selectionTool
Definition: ee_tool_base.h:140
bool Matches(const TOOL_EVENT &aEvent) const
Function Matches() Tests whether two events match in terms of category & action or command.
Definition: tool_event.h:356
Define a sheet pin (label) used in sheets to create hierarchical schematics.
Definition: sch_sheet.h:75
virtual void MirrorX(int aXaxis_position)=0
Function MirrorX mirrors item relative to the X axis about aXaxis_position.
static TOOL_ACTION clearSelection
Clears the current selection.
Definition: ee_actions.h:58
virtual void MirrorY(int aYaxis_position)=0
Function MirrorY mirrors item relative to the Y axis about aYaxis_position.
virtual KIGFX::VIEW_ITEM * GetItem(unsigned int aIdx) const override
Definition: selection.h:103
KIGFX::VIEW * getView() const
Function getView()
Definition: tool_base.cpp:36
Sheet symbol placed in a schematic, and is the entry point for a sub schematic.
Definition: sch_sheet.h:209
EDA_TEXT_VJUSTIFY_T
Definition: eda_text.h:51
virtual unsigned int GetSize() const override
Function GetSize() Returns the number of stored items.
Definition: selection.h:98
void RefreshItem(EDA_ITEM *aItem, bool isAddOrDelete=false)
Mark an item for refresh.
void SetHorizJustify(EDA_TEXT_HJUSTIFY_T aType)
Definition: eda_text.h:187
Class SCH_COMPONENT describes a real schematic component.
Definition: sch_component.h:73
void saveCopyInUndoList(EDA_ITEM *aItem, UNDO_REDO_T aType, bool aAppend=false)
Similar to m_frame->SaveCopyInUndoList(), but handles items that are owned by their parents.
Definition: ee_tool_base.h:117
wxPoint Centre() const
Definition: eda_rect.h:62
void OnModify() override
Must be called after a schematic change in order to set the "modify" flag of the current screen and u...
virtual const EDA_RECT GetBoundingBox() const
Function GetBoundingBox returns the orthogonal, bounding box of this object for display purposes.
const wxPoint GetCenter() const
Definition: eda_rect.h:117
void PostEvent(const TOOL_EVENT &aEvent)
Puts an event to the event queue to be processed at the end of event processing cycle.
Definition: tool_manager.h:228
Class SCH_ITEM is a base class for any item which can be embedded within the SCHEMATIC container clas...
Definition: sch_item.h:114
static TOOL_ACTION refreshPreview
Definition: actions.h:101
EDA_ITEM * Front() const
Definition: selection.h:182
KICAD_T Type() const
Function Type()
Definition: base_struct.h:210
void SetOrientation(int aOrientation)
Compute the new transform matrix based on aOrientation for the symbol which is applied to the current...

References SCH_COMPONENT::AutoAutoplaceFields(), EDA_RECT::Centre(), SCH_COMPONENT::ClearFieldsAutoplaced(), EE_ACTIONS::clearSelection, CMP_MIRROR_X, CMP_MIRROR_Y, SELECTION::Front(), SCH_EDIT_FRAME::GetAutoplaceFields(), EDA_ITEM::GetBoundingBox(), SCH_SHEET::GetBoundingBox(), EDA_RECT::GetCenter(), EDA_TEXT::GetHorizJustify(), SELECTION::GetItem(), SCH_TEXT::GetLabelSpinStyle(), EDA_DRAW_FRAME::GetNearestGridPosition(), SCH_SHEET_PIN::GetParent(), EDA_ITEM::GetParent(), SCH_ITEM::GetPosition(), SELECTION::GetReferencePoint(), SCH_EDIT_FRAME::GetScreen(), SELECTION::GetSize(), EDA_TEXT::GetVertJustify(), TOOL_BASE::getView(), SCH_ITEM::IsConnectable(), SELECTION::IsHover(), EDA_ITEM::IsMoving(), EDA_ITEM::IsSelected(), EE_TOOL_BASE< SCH_EDIT_FRAME >::m_frame, EE_TOOL_BASE< SCH_EDIT_FRAME >::m_selectionTool, TOOL_BASE::m_toolMgr, TOOL_EVENT::Matches(), EE_ACTIONS::mirrorX, SCH_SHEET_PIN::MirrorX(), SCH_ITEM::MirrorX(), SCH_SHEET_PIN::MirrorY(), SCH_ITEM::MirrorY(), SCH_EDIT_FRAME::OnModify(), TOOL_MANAGER::PostEvent(), KIGFX::VIEW::RecacheAllItems(), SCH_BASE_FRAME::RefreshItem(), ACTIONS::refreshPreview, EE_SELECTION_TOOL::RequestSelection(), rotatableItems, TOOL_MANAGER::RunAction(), EE_TOOL_BASE< SCH_EDIT_FRAME >::saveCopyInUndoList(), SCH_BITMAP_T, SCH_BUS_BUS_ENTRY_T, SCH_BUS_WIRE_ENTRY_T, SCH_COMPONENT_T, SCH_FIELD_T, SCH_GLOBAL_LABEL_T, SCH_HIER_LABEL_T, SCH_LABEL_T, SCH_SHEET_PIN_T, SCH_SHEET_T, SCH_TEXT_T, EVENTS::SelectedItemsModified, EDA_TEXT::SetHorizJustify(), SCH_TEXT::SetLabelSpinStyle(), SCH_COMPONENT::SetOrientation(), EDA_TEXT::SetVertJustify(), SCH_EDIT_FRAME::TestDanglingEnds(), EDA_ITEM::Type(), and UR_CHANGED.

Referenced by setTransitions().

◆ Properties()

int SCH_EDIT_TOOL::Properties ( const TOOL_EVENT aEvent)

Definition at line 1171 of file sch_edit_tool.cpp.

1172 {
1174 
1175  if( selection.Empty() )
1176  return 0;
1177 
1178  SCH_ITEM* item = (SCH_ITEM*) selection.Front();
1179 
1180  switch( item->Type() )
1181  {
1182  case SCH_COMPONENT_T:
1183  {
1184  SCH_COMPONENT* component = (SCH_COMPONENT*) item;
1185  DIALOG_EDIT_COMPONENT_IN_SCHEMATIC dlg( m_frame, component );
1186 
1187  // This dialog itself subsequently can invoke a KIWAY_PLAYER as a quasimodal
1188  // frame. Therefore this dialog as a modal frame parent, MUST be run under
1189  // quasimodal mode for the quasimodal frame support to work. So don't use
1190  // the QUASIMODAL macros here.
1191  if( dlg.ShowQuasiModal() == wxID_OK )
1192  {
1193  if( m_frame->GetAutoplaceFields() )
1194  component->AutoAutoplaceFields( m_frame->GetScreen() );
1195 
1197  m_frame->OnModify();
1198  }
1199  }
1200  break;
1201 
1202  case SCH_SHEET_T:
1203  {
1204  bool doClearAnnotation;
1205  bool doRefresh = false;
1206  // Keep track of existing sheet paths. EditSheet() can modify this list
1207  SCH_SHEET_LIST initial_sheetpathList( g_RootSheet );
1208 
1209  doRefresh = m_frame->EditSheet( (SCH_SHEET*) item, g_CurrentSheet, &doClearAnnotation );
1210 
1211  if( doClearAnnotation ) // happens when the current sheet load a existing file
1212  { // we must clear "new" components annotation
1213  SCH_SCREENS screensList( g_RootSheet );
1214  // We clear annotation of new sheet paths here:
1215  screensList.ClearAnnotationOfNewSheetPaths( initial_sheetpathList );
1216  // Clear annotation of g_CurrentSheet itself, because its sheetpath
1217  // is not a new path, but components managed by its sheet path must have
1218  // their annotation cleared, because they are new:
1219  ((SCH_SHEET*) item)->GetScreen()->ClearAnnotation( g_CurrentSheet );
1220  }
1221 
1222  if( doRefresh )
1223  {
1225  m_frame->GetCanvas()->Refresh();
1226  }
1227 
1228  break;
1229  }
1230 
1231  case SCH_SHEET_PIN_T:
1232  {
1233  SCH_SHEET_PIN* pin = (SCH_SHEET_PIN*) item;
1234  DIALOG_EDIT_SHEET_PIN dlg( m_frame, pin );
1235 
1236  if( dlg.ShowModal() == wxID_OK )
1237  {
1239  m_frame->OnModify();
1240  }
1241  }
1242  break;
1243 
1244  case SCH_TEXT_T:
1245  case SCH_LABEL_T:
1246  case SCH_GLOBAL_LABEL_T:
1247  case SCH_HIER_LABEL_T:
1248  if( InvokeDialogLabelEditor( m_frame, (SCH_TEXT*) item ) == wxID_OK )
1249  {
1251  m_frame->OnModify();
1252  }
1253 
1254  break;
1255 
1256  case SCH_FIELD_T:
1257  editComponentFieldText( (SCH_FIELD*) item );
1258  break;
1259 
1260  case SCH_BITMAP_T:
1261  {
1262  SCH_BITMAP* bitmap = (SCH_BITMAP*) item;
1263  DIALOG_IMAGE_EDITOR dlg( m_frame, bitmap->GetImage() );
1264 
1265  if( dlg.ShowModal() == wxID_OK )
1266  {
1267  // save old image in undo list if not already in edit
1268  if( bitmap->GetEditFlags() == 0 )
1270 
1271  dlg.TransferToImage( bitmap->GetImage() );
1272 
1273  // The bitmap is cached in Opengl: clear the cache in case it has become invalid
1274  getView()->RecacheAllItems();
1276  m_frame->OnModify();
1277  }
1278  }
1279  break;
1280 
1281  case SCH_LINE_T:
1282  {
1283  SCH_LINE* line = (SCH_LINE*) item;
1284 
1285  // We purposely disallow editing everything except graphic lines
1286  if( line->GetLayer() != LAYER_NOTES )
1287  break;
1288 
1289  DIALOG_EDIT_LINE_STYLE dlg( m_frame, line );
1290 
1291  if( dlg.ShowModal() == wxID_OK )
1292  {
1294  m_frame->OnModify();
1295  }
1296  }
1297  break;
1298 
1299  case SCH_MARKER_T: // These items have no properties to edit
1300  case SCH_JUNCTION_T:
1301  case SCH_NO_CONNECT_T:
1302  break;
1303 
1304  default: // Unexpected item
1305  wxFAIL_MSG( wxString( "Cannot edit schematic item type " ) + item->GetClass() );
1306  }
1307 
1308  updateView( item );
1309 
1310  if( selection.IsHover() )
1311  {
1313  }
1314 
1315  return 0;
1316 }
Class SCH_SHEET_LIST.
Class SCH_FIELD instances are attached to a component and provide a place for the component's value,...
Definition: sch_field.h:52
void AutoAutoplaceFields(SCH_SCREEN *aScreen)
Autoplace fields only if correct to do so automatically.
bool IsHover() const
Definition: selection.h:69
TOOL_MANAGER * m_toolMgr
Definition: tool_base.h:219
void RecacheAllItems()
Function RecacheAllItems() Rebuilds GAL display lists.
Definition: view.cpp:1402
bool RunAction(const std::string &aActionName, bool aNow=false, T aParam=NULL)
Function RunAction() Runs the specified action.
Definition: tool_manager.h:109
bool GetAutoplaceFields() const
void editComponentFieldText(SCH_FIELD *aField)
bool EditSheet(SCH_SHEET *aSheet, SCH_SHEET_PATH *aHierarchy, bool *aClearAnnotationNewItems)
Edit an existing sheet or add a new sheet to the schematic.
Definition: sheet.cpp:518
static const TOOL_EVENT SelectedItemsModified
Definition: actions.h:201
int InvokeDialogLabelEditor(SCH_EDIT_FRAME *aCaller, SCH_TEXT *aTextItem)
Launches the "Edit Text/Label" dialog.
EE_SELECTION & RequestSelection(const KICAD_T *aFilterList=EE_COLLECTOR::AllItems)
Function RequestSelection()
SCH_SCREEN * GetScreen() const override
Return a pointer to a BASE_SCREEN or one of its derivatives.
SCH_SHEET * g_RootSheet
Definition: eeschema.cpp:47
SCH_SHEET_PATH * g_CurrentSheet
With the new connectivity algorithm, many more places than before want to know what the current sheet...
BITMAP_BASE * GetImage()
Definition: sch_bitmap.h:59
STATUS_FLAGS GetEditFlags() const
Definition: base_struct.h:270
SCH_DRAW_PANEL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.
void SaveCopyInUndoList(SCH_ITEM *aItemToCopy, UNDO_REDO_T aTypeCommand, bool aAppend=false, const wxPoint &aTransformPoint=wxPoint(0, 0))
Create a copy of the current schematic item, and put it in the undo list.
EE_SELECTION_TOOL * m_selectionTool
Definition: ee_tool_base.h:140
Define a sheet pin (label) used in sheets to create hierarchical schematics.
Definition: sch_sheet.h:75
static TOOL_ACTION clearSelection
Clears the current selection.
Definition: ee_actions.h:58
Object to handle a bitmap image that can be inserted in a schematic.
Definition: sch_bitmap.h:42
KIGFX::VIEW * getView() const
Function getView()
Definition: tool_base.cpp:36
virtual void Refresh(bool aEraseBackground=true, const wxRect *aRect=NULL) override
Update the board display after modifying it by a python script (note: it is automatically called by a...
bool Empty() const
Checks if there is anything selected.
Definition: selection.h:119
Sheet symbol placed in a schematic, and is the entry point for a sub schematic.
Definition: sch_sheet.h:209
SCH_LAYER_ID GetLayer() const
Function GetLayer returns the layer this item is on.
Definition: sch_item.h:193
void updateView(EDA_ITEM *aItem) const
Similar to getView()->Update(), but handles items that are redrawn by their parents.
Definition: ee_tool_base.h:104
Segment description base class to describe items which have 2 end points (track, wire,...
Definition: sch_line.h:37
virtual wxString GetClass() const override
Function GetClass returns the class name.
Definition: sch_text.h:101
Dialog used to edit SCH_COMPONENT objects in a schematic.
Class SCH_COMPONENT describes a real schematic component.
Definition: sch_component.h:73
void OnModify() override
Must be called after a schematic change in order to set the "modify" flag of the current screen and u...
void PostEvent(const TOOL_EVENT &aEvent)
Puts an event to the event queue to be processed at the end of event processing cycle.
Definition: tool_manager.h:228
Class SCH_ITEM is a base class for any item which can be embedded within the SCHEMATIC container clas...
Definition: sch_item.h:114
static const KICAD_T EditableItems[]
Definition: ee_collectors.h:43
Container class that holds multiple SCH_SCREEN objects in a hierarchy.
Definition: sch_screen.h:491
EDA_ITEM * Front() const
Definition: selection.h:182
KICAD_T Type() const
Function Type()
Definition: base_struct.h:210

References SCH_COMPONENT::AutoAutoplaceFields(), SCH_SCREENS::ClearAnnotationOfNewSheetPaths(), EE_ACTIONS::clearSelection, EE_COLLECTOR::EditableItems, editComponentFieldText(), SCH_EDIT_FRAME::EditSheet(), SELECTION::Empty(), SELECTION::Front(), g_CurrentSheet, g_RootSheet, SCH_EDIT_FRAME::GetAutoplaceFields(), SCH_BASE_FRAME::GetCanvas(), SCH_FIELD::GetClass(), EDA_ITEM::GetEditFlags(), SCH_BITMAP::GetImage(), SCH_ITEM::GetLayer(), SCH_EDIT_FRAME::GetScreen(), TOOL_BASE::getView(), InvokeDialogLabelEditor(), SELECTION::IsHover(), LAYER_NOTES, EE_TOOL_BASE< SCH_EDIT_FRAME >::m_frame, EE_TOOL_BASE< SCH_EDIT_FRAME >::m_selectionTool, TOOL_BASE::m_toolMgr, SCH_EDIT_FRAME::OnModify(), TOOL_MANAGER::PostEvent(), KIGFX::VIEW::RecacheAllItems(), EDA_DRAW_PANEL_GAL::Refresh(), EE_SELECTION_TOOL::RequestSelection(), TOOL_MANAGER::RunAction(), SCH_EDIT_FRAME::SaveCopyInUndoList(), SCH_BITMAP_T, SCH_COMPONENT_T, SCH_FIELD_T, SCH_GLOBAL_LABEL_T, SCH_HIER_LABEL_T, SCH_JUNCTION_T, SCH_LABEL_T, SCH_LINE_T, SCH_MARKER_T, SCH_NO_CONNECT_T, SCH_SHEET_PIN_T, SCH_SHEET_T, SCH_TEXT_T, EVENTS::SelectedItemsModified, DIALOG_SHIM::ShowQuasiModal(), EDA_ITEM::Type(), EE_TOOL_BASE< SCH_EDIT_FRAME >::updateView(), and UR_CHANGED.

Referenced by setTransitions().

◆ RepeatDrawItem()

int SCH_EDIT_TOOL::RepeatDrawItem ( const TOOL_EVENT aEvent)

Definition at line 809 of file sch_edit_tool.cpp.

810 {
811  SCH_ITEM* sourceItem = m_frame->GetRepeatItem();
812 
813  if( !sourceItem )
814  return 0;
815 
817 
818  SCH_ITEM* newItem = (SCH_ITEM*) sourceItem->Clone();
819  bool performDrag = false;
820 
821  // If cloning a component then put into 'move' mode.
822  if( newItem->Type() == SCH_COMPONENT_T )
823  {
824  ( (SCH_COMPONENT*) newItem )->SetTimeStamp( GetNewTimeStamp() );
825 
826  wxPoint cursorPos = (wxPoint) getViewControls()->GetCursorPosition( true );
827  newItem->Move( cursorPos - newItem->GetPosition() );
828  performDrag = true;
829  }
830  else
831  {
832  if( newItem->CanIncrementLabel() )
833  ( (SCH_TEXT*) newItem )->IncrementLabel( m_frame->GetRepeatDeltaLabel() );
834 
835  newItem->Move( m_frame->GetRepeatStep() );
836  }
837 
838  newItem->SetFlags( IS_NEW );
839  m_frame->AddToScreen( newItem );
840  m_frame->SaveCopyInUndoList( newItem, UR_NEW );
841 
842  m_selectionTool->AddItemToSel( newItem );
843 
844  if( performDrag )
846 
847  newItem->ClearFlags();
848 
849  if( newItem->IsConnectable() )
850  {
851  auto selection = m_selectionTool->GetSelection();
852 
853  m_toolMgr->RunAction( EE_ACTIONS::addNeededJunctions, true, &selection );
856  }
857 
858  // newItem newItem, now that it has been moved, thus saving new position.
859  m_frame->SaveCopyForRepeatItem( newItem );
860 
861  return 0;
862 }
bool SchematicCleanUp(SCH_SCREEN *aScreen=nullptr)
Performs routine schematic cleaning including breaking wire and buses and deleting identical objects ...
virtual bool IsConnectable() const
Function IsConnectable returns true if the schematic item can connect to another schematic item.
Definition: sch_item.h:298
void AddToScreen(EDA_ITEM *aItem, SCH_SCREEN *aScreen=nullptr)
Add an item to the screen (and view) aScreen is the screen the item is located on,...
TOOL_MANAGER * m_toolMgr
Definition: tool_base.h:219
virtual bool CanIncrementLabel() const
Definition: sch_item.h:359
bool RunAction(const std::string &aActionName, bool aNow=false, T aParam=NULL)
Function RunAction() Runs the specified action.
Definition: tool_manager.h:109
bool TestDanglingEnds()
Test all of the connectable objects in the schematic for unused connection points.
virtual EDA_ITEM * Clone() const
Function Clone creates a duplicate of this item with linked list members set to NULL.
EE_SELECTION & GetSelection()
Function GetSelection()
#define IS_NEW
New item, just created.
Definition: base_struct.h:120
timestamp_t GetNewTimeStamp()
Definition: common.cpp:217
virtual wxPoint GetPosition() const =0
Function GetPosition.
void SetFlags(STATUS_FLAGS aMask)
Definition: base_struct.h:265
void SaveCopyInUndoList(SCH_ITEM *aItemToCopy, UNDO_REDO_T aTypeCommand, bool aAppend=false, const wxPoint &aTransformPoint=wxPoint(0, 0))
Create a copy of the current schematic item, and put it in the undo list.
void SaveCopyForRepeatItem(SCH_ITEM *aItem)
Clone aItem and owns that clone in this container.
const wxPoint GetRepeatStep() const
EE_SELECTION_TOOL * m_selectionTool
Definition: ee_tool_base.h:140
static TOOL_ACTION clearSelection
Clears the current selection.
Definition: ee_actions.h:58
static TOOL_ACTION addNeededJunctions
Definition: ee_actions.h:77
SCH_ITEM * GetRepeatItem() const
Return the item which is to be repeated with the insert key.
int AddItemToSel(const TOOL_EVENT &aEvent)
Class SCH_COMPONENT describes a real schematic component.
Definition: sch_component.h:73
int GetRepeatDeltaLabel() const
void ClearFlags(STATUS_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
Definition: base_struct.h:266
static TOOL_ACTION move
Definition: ee_actions.h:115
KIGFX::VIEW_CONTROLS * getViewControls() const
Function getViewControls()
Definition: tool_base.cpp:42
Class SCH_ITEM is a base class for any item which can be embedded within the SCHEMATIC container clas...
Definition: sch_item.h:114
VECTOR2D GetCursorPosition() const
Returns the current cursor position in world coordinates.
KICAD_T Type() const
Function Type()
Definition: base_struct.h:210
void SetTimeStamp(timestamp_t aNewTimeStamp)
Definition: base_struct.h:215
virtual void Move(const wxPoint &aMoveVector)=0
Function Move moves the item by aMoveVector to a new position.

References EE_SELECTION_TOOL::AddItemToSel(), EE_ACTIONS::addNeededJunctions, SCH_BASE_FRAME::AddToScreen(), SCH_ITEM::CanIncrementLabel(), EDA_ITEM::ClearFlags(), EE_ACTIONS::clearSelection, EDA_ITEM::Clone(), KIGFX::VIEW_CONTROLS::GetCursorPosition(), GetNewTimeStamp(), SCH_ITEM::GetPosition(), SCH_BASE_FRAME::GetRepeatDeltaLabel(), SCH_EDIT_FRAME::GetRepeatItem(), SCH_BASE_FRAME::GetRepeatStep(), EE_SELECTION_TOOL::GetSelection(), TOOL_BASE::getViewControls(), IS_NEW, SCH_ITEM::IsConnectable(), EE_TOOL_BASE< SCH_EDIT_FRAME >::m_frame, EE_TOOL_BASE< SCH_EDIT_FRAME >::m_selectionTool, TOOL_BASE::m_toolMgr, EE_ACTIONS::move, SCH_ITEM::Move(), TOOL_MANAGER::RunAction(), SCH_EDIT_FRAME::SaveCopyForRepeatItem(), SCH_EDIT_FRAME::SaveCopyInUndoList(), SCH_COMPONENT_T, SCH_EDIT_FRAME::SchematicCleanUp(), EDA_ITEM::SetFlags(), EDA_ITEM::SetTimeStamp(), SCH_EDIT_FRAME::TestDanglingEnds(), EDA_ITEM::Type(), and UR_NEW.

Referenced by setTransitions().

◆ Reset()

void EE_TOOL_BASE< SCH_EDIT_FRAME >::Reset ( RESET_REASON  aReason)
inlineoverridevirtualinherited

Function Reset() Brings 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.

Implements TOOL_BASE.

Definition at line 90 of file ee_tool_base.h.

91  {
92  if( aReason == MODEL_RELOAD )
93  {
94  // Init variables used by every drawing tool
95  m_frame = getEditFrame<T>();
96  m_isLibEdit = dynamic_cast<LIB_EDIT_FRAME*>( m_frame ) != nullptr;
97  }
98 
99  m_view = static_cast<KIGFX::SCH_VIEW*>( getView() );
100  }
Model changes (required full reload)
Definition: tool_base.h:82
KIGFX::VIEW * getView() const
Function getView()
Definition: tool_base.cpp:36

◆ Rotate()

int SCH_EDIT_TOOL::Rotate ( const TOOL_EVENT aEvent)

Definition at line 344 of file sch_edit_tool.cpp.

345 {
347 
348  if( selection.GetSize() == 0 )
349  return 0;
350 
351  wxPoint rotPoint;
352  bool clockwise = ( aEvent.Matches( EE_ACTIONS::rotateCW.MakeEvent() ) );
353  SCH_ITEM* item = static_cast<SCH_ITEM*>( selection.Front() );
354  bool connections = false;
355  bool moving = item->IsMoving();
356 
357  if( selection.GetSize() == 1 )
358  {
359  if( !moving )
361 
362  for( int i = 0; clockwise ? i < 1 : i < 3; ++i )
363  {
364  switch( item->Type() )
365  {
366  case SCH_COMPONENT_T:
367  {
368  SCH_COMPONENT* component = static_cast<SCH_COMPONENT*>( item );
369 
370  if( clockwise )
371  component->SetOrientation( CMP_ROTATE_CLOCKWISE );
372  else
374 
375  if( m_frame->GetAutoplaceFields() )
376  component->AutoAutoplaceFields( m_frame->GetScreen() );
377 
378  break;
379  }
380 
381  case SCH_TEXT_T:
382  case SCH_LABEL_T:
383  case SCH_GLOBAL_LABEL_T:
384  case SCH_HIER_LABEL_T:
385  {
386  SCH_TEXT* textItem = static_cast<SCH_TEXT*>( item );
387  textItem->SetLabelSpinStyle( ( textItem->GetLabelSpinStyle() + 1 ) & 3 );
388  break;
389  }
390 
391  case SCH_SHEET_PIN_T:
392  {
393  // Rotate pin within parent sheet
394  SCH_SHEET_PIN* pin = static_cast<SCH_SHEET_PIN*>( item );
395  SCH_SHEET* sheet = pin->GetParent();
396  pin->Rotate( sheet->GetBoundingBox().GetCenter() );
397  break;
398  }
399 
400  case SCH_BUS_BUS_ENTRY_T:
402  item->Rotate( item->GetPosition() );
403  break;
404 
405  case SCH_FIELD_T:
406  {
407  SCH_FIELD* field = static_cast<SCH_FIELD*>( item );
408 
409  if( field->GetTextAngle() == TEXT_ANGLE_HORIZ )
410  field->SetTextAngle( TEXT_ANGLE_VERT );
411  else
412  field->SetTextAngle( TEXT_ANGLE_HORIZ );
413 
414  // Now that we're moving a field, they're no longer autoplaced.
415  if( item->GetParent()->Type() == SCH_COMPONENT_T )
416  {
417  SCH_COMPONENT *parent = static_cast<SCH_COMPONENT*>( item->GetParent() );
418  parent->ClearFieldsAutoplaced();
419  }
420 
421  break;
422  }
423 
424  case SCH_BITMAP_T:
425  item->Rotate( item->GetPosition() );
426  // The bitmap is cached in Opengl: clear the cache to redraw
428  break;
429 
430  case SCH_SHEET_T:
431  {
432  SCH_SHEET* sheet = static_cast<SCH_SHEET*>( item );
433 
434  // Rotate the sheet on itself. Sheets do not have an anchor point.
435  rotPoint = m_frame->GetNearestGridPosition( sheet->GetRotationCenter() );
436  sheet->Rotate( rotPoint );
437  break;
438  }
439 
440  default:
441  break;
442  }
443  }
444 
445  connections = item->IsConnectable();
446  m_frame->RefreshItem( item );
447  }
448  else if( selection.GetSize() > 1 )
449  {
450  rotPoint = m_frame->GetNearestGridPosition( (wxPoint)selection.GetCenter() );
451 
452  for( unsigned ii = 0; ii < selection.GetSize(); ii++ )
453  {
454  item = static_cast<SCH_ITEM*>( selection.GetItem( ii ) );
455 
456  if( !moving )
457  saveCopyInUndoList( item, UR_CHANGED, ii > 0 );
458 
459  for( int i = 0; clockwise ? i < 1 : i < 3; ++i )
460  {
461  if( item->Type() == SCH_LINE_T )
462  {
463  SCH_LINE* line = (SCH_LINE*) item;
464 
465  if( item->HasFlag( STARTPOINT ) )
466  line->RotateStart( rotPoint );
467 
468  if( item->HasFlag( ENDPOINT ) )
469  line->RotateEnd( rotPoint );
470  }
471  else if( item->Type() == SCH_SHEET_PIN_T )
472  {
473  if( item->GetParent()->IsSelected() )
474  {
475  // parent will rotate us
476  }
477  else
478  {
479  // rotate within parent
480  SCH_SHEET_PIN* pin = static_cast<SCH_SHEET_PIN*>( item );
481  SCH_SHEET* sheet = pin->GetParent();
482 
483  pin->Rotate( sheet->GetBoundingBox().GetCenter() );
484  }
485  }
486  else
487  {
488  item->Rotate( rotPoint );
489  }
490  }
491 
492  connections |= item->IsConnectable();
493  m_frame->RefreshItem( item );
494  }
495  }
496 
498 
499  if( item->IsMoving() )
500  {
502  }
503  else
504  {
505  if( selection.IsHover() )
507 
508  if( connections )
510 
511  m_frame->OnModify();
512  }
513 
514  return 0;
515 }
void SetTextAngle(double aAngle)
Definition: eda_text.h:150
#define TEXT_ANGLE_HORIZ
Class SCH_FIELD instances are attached to a component and provide a place for the component's value,...
Definition: sch_field.h:52
void AutoAutoplaceFields(SCH_SCREEN *aScreen)
Autoplace fields only if correct to do so automatically.
virtual bool IsConnectable() const
Function IsConnectable returns true if the schematic item can connect to another schematic item.
Definition: sch_item.h:298
bool IsHover() const
Definition: selection.h:69
SCH_SHEET * GetParent() const
Get the parent sheet object of this sheet pin.
Definition: sch_sheet.h:158
bool IsSelected() const
Definition: base_struct.h:233
#define TEXT_ANGLE_VERT
void RotateEnd(wxPoint aPosition)
Definition: sch_line.cpp:366
virtual VECTOR2I GetCenter() const
Returns the center point of the selection area bounding box.
Definition: selection.h:136
virtual void SetLabelSpinStyle(int aSpinStyle)
Set a spin or rotation angle, along with specific horizontal and vertical justification styles with e...
Definition: sch_text.cpp:234
bool IsMoving() const
Definition: base_struct.h:230
TOOL_MANAGER * m_toolMgr
Definition: tool_base.h:219
void RecacheAllItems()
Function RecacheAllItems() Rebuilds GAL display lists.
Definition: view.cpp:1402
double GetTextAngle() const
Definition: eda_text.h:158
bool RunAction(const std::string &aActionName, bool aNow=false, T aParam=NULL)
Function RunAction() Runs the specified action.
Definition: tool_manager.h:109
bool TestDanglingEnds()
Test all of the connectable objects in the schematic for unused connection points.
wxPoint GetNearestGridPosition(const wxPoint &aPosition) const
Return the nearest aGridSize location to aPosition.
bool GetAutoplaceFields() const
static const TOOL_EVENT SelectedItemsModified
Definition: actions.h:201
void RotateStart(wxPoint aPosition)
Definition: sch_line.cpp:360
static TOOL_ACTION rotateCW
Definition: ee_actions.h:118
void ClearFieldsAutoplaced()
Set fields automatically placed flag false.
virtual void Rotate(wxPoint aPosition)=0
Function Rotate rotates the item around aPosition 90 degrees in the clockwise direction.
EE_SELECTION & RequestSelection(const KICAD_T *aFilterList=EE_COLLECTOR::AllItems)
Function RequestSelection()
SCH_SCREEN * GetScreen() const override
Return a pointer to a BASE_SCREEN or one of its derivatives.
int GetLabelSpinStyle() const
Definition: sch_text.h:124
virtual wxPoint GetPosition() const =0
Function GetPosition.
EDA_RECT const GetBoundingBox() const override
Function GetBoundingBox returns the orthogonal, bounding box of this object for display purposes.
Definition: sch_sheet.cpp:488
EDA_ITEM * GetParent() const
Definition: base_struct.h:220
const KICAD_T rotatableItems[]
EE_SELECTION_TOOL * m_selectionTool
Definition: ee_tool_base.h:140
bool Matches(const TOOL_EVENT &aEvent) const
Function Matches() Tests whether two events match in terms of category & action or command.
Definition: tool_event.h:356
Define a sheet pin (label) used in sheets to create hierarchical schematics.
Definition: sch_sheet.h:75
static TOOL_ACTION clearSelection
Clears the current selection.
Definition: ee_actions.h:58
virtual KIGFX::VIEW_ITEM * GetItem(unsigned int aIdx) const override
Definition: selection.h:103
void Rotate(wxPoint aPosition) override
Function Rotate rotates the item around aPosition 90 degrees in the clockwise direction.
Definition: sch_sheet.cpp:665
KIGFX::VIEW * getView() const
Function getView()
Definition: tool_base.cpp:36
Sheet symbol placed in a schematic, and is the entry point for a sub schematic.
Definition: sch_sheet.h:209
virtual unsigned int GetSize() const override
Function GetSize() Returns the number of stored items.
Definition: selection.h:98
Segment description base class to describe items which have 2 end points (track, wire,...
Definition: sch_line.h:37
void RefreshItem(EDA_ITEM *aItem, bool isAddOrDelete=false)
Mark an item for refresh.
size_t i
Definition: json11.cpp:597
#define ENDPOINT
ends. (Used to support dragging.)
Definition: base_struct.h:126
Class SCH_COMPONENT describes a real schematic component.
Definition: sch_component.h:73
void saveCopyInUndoList(EDA_ITEM *aItem, UNDO_REDO_T aType, bool aAppend=false)
Similar to m_frame->SaveCopyInUndoList(), but handles items that are owned by their parents.
Definition: ee_tool_base.h:117
wxPoint GetRotationCenter() const
Rotating around the boundingBox's center can cause walking when the sheetname or filename is longer t...
Definition: sch_sheet.cpp:522
void Rotate(wxPoint aPosition) override
Function Rotate rotates the item around aPosition 90 degrees in the clockwise direction.
void OnModify() override
Must be called after a schematic change in order to set the "modify" flag of the current screen and u...
bool HasFlag(STATUS_FLAGS aFlag)
Definition: base_struct.h:268
const wxPoint GetCenter() const
Definition: eda_rect.h:117
void PostEvent(const TOOL_EVENT &aEvent)
Puts an event to the event queue to be processed at the end of event processing cycle.
Definition: tool_manager.h:228
Class SCH_ITEM is a base class for any item which can be embedded within the SCHEMATIC container clas...
Definition: sch_item.h:114
static TOOL_ACTION refreshPreview
Definition: actions.h:101
EDA_ITEM * Front() const
Definition: selection.h:182
KICAD_T Type() const
Function Type()
Definition: base_struct.h:210
#define STARTPOINT
When a line is selected, these flags indicate which.
Definition: base_struct.h:125
void SetOrientation(int aOrientation)
Compute the new transform matrix based on aOrientation for the symbol which is applied to the current...

References SCH_COMPONENT::AutoAutoplaceFields(), SCH_COMPONENT::ClearFieldsAutoplaced(), EE_ACTIONS::clearSelection, CMP_ROTATE_CLOCKWISE, CMP_ROTATE_COUNTERCLOCKWISE, ENDPOINT, SELECTION::Front(), SCH_EDIT_FRAME::GetAutoplaceFields(), SCH_SHEET::GetBoundingBox(), EDA_RECT::GetCenter(), SELECTION::GetCenter(), SELECTION::GetItem(), SCH_TEXT::GetLabelSpinStyle(), EDA_DRAW_FRAME::GetNearestGridPosition(), SCH_SHEET_PIN::GetParent(), EDA_ITEM::GetParent(), SCH_ITEM::GetPosition(), SCH_SHEET::GetRotationCenter(), SCH_EDIT_FRAME::GetScreen(), SELECTION::GetSize(), EDA_TEXT::GetTextAngle(), TOOL_BASE::getView(), EDA_ITEM::HasFlag(), i, SCH_ITEM::IsConnectable(), SELECTION::IsHover(), EDA_ITEM::IsMoving(), EDA_ITEM::IsSelected(), EE_TOOL_BASE< SCH_EDIT_FRAME >::m_frame, EE_TOOL_BASE< SCH_EDIT_FRAME >::m_selectionTool, TOOL_BASE::m_toolMgr, TOOL_EVENT::Matches(), SCH_EDIT_FRAME::OnModify(), TOOL_MANAGER::PostEvent(), KIGFX::VIEW::RecacheAllItems(), SCH_BASE_FRAME::RefreshItem(), ACTIONS::refreshPreview, EE_SELECTION_TOOL::RequestSelection(), rotatableItems, SCH_SHEET_PIN::Rotate(), SCH_ITEM::Rotate(), SCH_SHEET::Rotate(), EE_ACTIONS::rotateCW, SCH_LINE::RotateEnd(), SCH_LINE::RotateStart(), TOOL_MANAGER::RunAction(), EE_TOOL_BASE< SCH_EDIT_FRAME >::saveCopyInUndoList(), SCH_BITMAP_T, SCH_BUS_BUS_ENTRY_T, SCH_BUS_WIRE_ENTRY_T, SCH_COMPONENT_T, SCH_FIELD_T, SCH_GLOBAL_LABEL_T, SCH_HIER_LABEL_T, SCH_LABEL_T, SCH_LINE_T, SCH_SHEET_PIN_T, SCH_SHEET_T, SCH_TEXT_T, EVENTS::SelectedItemsModified, SCH_TEXT::SetLabelSpinStyle(), SCH_COMPONENT::SetOrientation(), EDA_TEXT::SetTextAngle(), STARTPOINT, SCH_EDIT_FRAME::TestDanglingEnds(), TEXT_ANGLE_HORIZ, TEXT_ANGLE_VERT, EDA_ITEM::Type(), and UR_CHANGED.

Referenced by setTransitions().

◆ RunMainStack()

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

Function RunMainStack()

Calls a function using the main stack.

Parameters
aFuncis the function to be calls.

Definition at line 87 of file tool_interactive.cpp.

88 {
89  m_toolMgr->RunMainStack( this, std::move( aFunc ) );
90 }
TOOL_MANAGER * m_toolMgr
Definition: tool_base.h:219
void RunMainStack(TOOL_BASE *aTool, std::function< void()> aFunc)

References TOOL_BASE::m_toolMgr, and TOOL_MANAGER::RunMainStack().

Referenced by DRAWING_TOOL::PlaceText().

◆ saveCopyInUndoList()

void EE_TOOL_BASE< SCH_EDIT_FRAME >::saveCopyInUndoList ( EDA_ITEM aItem,
UNDO_REDO_T  aType,
bool  aAppend = false 
)
inlineprotectedinherited

Similar to m_frame->SaveCopyInUndoList(), but handles items that are owned by their parents.

Definition at line 117 of file ee_tool_base.h.

118  {
119  KICAD_T itemType = aItem->Type();
120 
121  if( m_isLibEdit )
122  {
123  LIB_EDIT_FRAME* editFrame = dynamic_cast<LIB_EDIT_FRAME*>( m_frame );
124  editFrame->SaveCopyInUndoList( (LIB_ITEM*) aItem, aType, aAppend );
125  }
126  else
127  {
128  SCH_EDIT_FRAME* editFrame = dynamic_cast<SCH_EDIT_FRAME*>( m_frame );
129 
130  if( itemType == SCH_PIN_T || itemType == SCH_FIELD_T || itemType == SCH_SHEET_PIN_T )
131  editFrame->SaveCopyInUndoList( (SCH_ITEM*) aItem->GetParent(), UR_CHANGED, aAppend );
132  else
133  editFrame->SaveCopyInUndoList( (SCH_ITEM*) aItem, aType, aAppend );
134  }
135  }
Schematic editor (Eeschema) main window.
KICAD_T
Enum KICAD_T is the set of class identification values, stored in EDA_ITEM::m_StructType.
Definition: typeinfo.h:78
The base class for drawable items used by schematic library components.
Definition: lib_item.h:61
void SaveCopyInUndoList(SCH_ITEM *aItemToCopy, UNDO_REDO_T aTypeCommand, bool aAppend=false, const wxPoint &aTransformPoint=wxPoint(0, 0))
Create a copy of the current schematic item, and put it in the undo list.
EDA_ITEM * GetParent() const
Definition: base_struct.h:220
The symbol library editor main window.
Class SCH_ITEM is a base class for any item which can be embedded within the SCHEMATIC container clas...
Definition: sch_item.h:114
void SaveCopyInUndoList(EDA_ITEM *ItemToCopy, UNDO_REDO_T undoType=UR_LIBEDIT, bool aAppend=false)
Create a copy of the current component, and save it in the undo list.
KICAD_T Type() const
Function Type()
Definition: base_struct.h:210

◆ SetContextMenu()

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

Function SetContextMenu()

Assigns 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 76 of file tool_interactive.cpp.

77 {
78  if( aMenu )
79  aMenu->SetTool( this );
80  else
81  aTrigger = CMENU_OFF;
82 
83  m_toolMgr->ScheduleContextMenu( this, aMenu, aTrigger );
84 }
TOOL_MANAGER * m_toolMgr
Definition: tool_base.h:219
void SetTool(TOOL_INTERACTIVE *aTool)
Function SetTool() Sets a tool that is the creator of the menu.
void ScheduleContextMenu(TOOL_BASE *aTool, ACTION_MENU *aMenu, CONTEXT_MENU_TRIGGER aTrigger)
Sets behaviour of the tool's context popup menu.

References CMENU_OFF, TOOL_BASE::m_toolMgr, TOOL_MANAGER::ScheduleContextMenu(), and ACTION_MENU::SetTool().

Referenced by GERBVIEW_SELECTION_TOOL::disambiguationMenu(), PL_SELECTION_TOOL::doSelectionMenu(), EE_SELECTION_TOOL::doSelectionMenu(), SELECTION_TOOL::doSelectionMenu(), ROUTER_TOOL::MainLoop(), LENGTH_TUNER_TOOL::MainLoop(), TOOL_MENU::ShowContextMenu(), and SCH_LINE_WIRE_BUS_TOOL::UnfoldBus().

◆ setTransitions()

void SCH_EDIT_TOOL::setTransitions ( )
overrideprivatevirtual

Sets up handlers for various events.

Implements TOOL_INTERACTIVE.

Definition at line 1409 of file sch_edit_tool.cpp.

1410 {
1415  Go( &SCH_EDIT_TOOL::Mirror, EE_ACTIONS::mirrorX.MakeEvent() );
1416  Go( &SCH_EDIT_TOOL::Mirror, EE_ACTIONS::mirrorY.MakeEvent() );
1417  Go( &SCH_EDIT_TOOL::DoDelete, ACTIONS::doDelete.MakeEvent() );
1419 
1429 
1436 
1439 
1442 }
static TOOL_ACTION properties
Definition: ee_actions.h:122
static TOOL_ACTION toggleDeMorgan
Definition: ee_actions.h:127
static TOOL_ACTION breakBus
Definition: ee_actions.h:138
static TOOL_ACTION doDelete
Definition: actions.h:74
static TOOL_ACTION toShapeBackslash
Definition: ee_actions.h:132
int Rotate(const TOOL_EVENT &aEvent)
static TOOL_ACTION mirrorY
Definition: ee_actions.h:121
int BreakWire(const TOOL_EVENT &aEvent)
static TOOL_ACTION toText
Definition: ee_actions.h:136
static TOOL_ACTION autoplaceFields
Definition: ee_actions.h:126
int Properties(const TOOL_EVENT &aEvent)
int UpdateFields(const TOOL_EVENT &aEvent)
static TOOL_ACTION showDeMorganAlternate
Definition: ee_actions.h:129
void Go(int(T::*aStateFunc)(const TOOL_EVENT &), const TOOL_EVENT_LIST &aConditions=TOOL_EVENT(TC_ANY, TA_ANY))
Function Go()
static TOOL_ACTION breakWire
Definition: ee_actions.h:137
static TOOL_ACTION rotateCW
Definition: ee_actions.h:118
int Duplicate(const TOOL_EVENT &aEvent)
static TOOL_ACTION cleanupSheetPins
Definition: ee_actions.h:181
static TOOL_ACTION rotateCCW
Definition: ee_actions.h:119
static TOOL_ACTION editFootprint
Definition: ee_actions.h:125
int ChangeShape(const TOOL_EVENT &aEvent)
int AutoplaceFields(const TOOL_EVENT &aEvent)
static TOOL_ACTION repeatDrawItem
Definition: ee_actions.h:117
static TOOL_ACTION mirrorX
Definition: ee_actions.h:120
int CleanupSheetPins(const TOOL_EVENT &aEvent)
static TOOL_ACTION editTextAndGraphics
Definition: ee_actions.h:182
int DeleteItemCursor(const TOOL_EVENT &aEvent)
Runs the deletion tool.
static TOOL_ACTION showDeMorganStandard
Definition: ee_actions.h:128
int Mirror(const TOOL_EVENT &aEvent)
int RepeatDrawItem(const TOOL_EVENT &aEvent)
static TOOL_ACTION updateFieldsFromLibrary
Definition: ee_actions.h:151
static TOOL_ACTION editValue
Definition: ee_actions.h:124
int EditField(const TOOL_EVENT &aEvent)
static TOOL_ACTION deleteTool
Definition: actions.h:75
static TOOL_ACTION toLabel
Definition: ee_actions.h:133
static TOOL_ACTION toHLabel
Definition: ee_actions.h:134
static TOOL_ACTION editReference
Definition: ee_actions.h:123
int DoDelete(const TOOL_EVENT &aEvent)
Deletes the selected items, or the item under the cursor.
static TOOL_ACTION toGLabel
Definition: ee_actions.h:135
int ConvertDeMorgan(const TOOL_EVENT &aEvent)
static TOOL_ACTION duplicate
Definition: actions.h:73
int ChangeTextType(const TOOL_EVENT &aEvent)
static TOOL_ACTION toShapeSlash
Definition: ee_actions.h:131

References AutoplaceFields(), EE_ACTIONS::autoplaceFields, EE_ACTIONS::breakBus, BreakWire(), EE_ACTIONS::breakWire, ChangeShape(), ChangeTextType(), CleanupSheetPins(), EE_ACTIONS::cleanupSheetPins, ConvertDeMorgan(), DeleteItemCursor(), ACTIONS::deleteTool, DoDelete(), ACTIONS::doDelete, Duplicate(), ACTIONS::duplicate, EditField(), EE_ACTIONS::editFootprint, EE_ACTIONS::editReference, EE_ACTIONS::editTextAndGraphics, EE_ACTIONS::editValue, GlobalEdit(), TOOL_INTERACTIVE::Go(), Mirror(), EE_ACTIONS::mirrorX, EE_ACTIONS::mirrorY, Properties(), EE_ACTIONS::properties, RepeatDrawItem(), EE_ACTIONS::repeatDrawItem, Rotate(), EE_ACTIONS::rotateCCW, EE_ACTIONS::rotateCW, EE_ACTIONS::showDeMorganAlternate, EE_ACTIONS::showDeMorganStandard, EE_ACTIONS::toggleDeMorgan, EE_ACTIONS::toGLabel, EE_ACTIONS::toHLabel, EE_ACTIONS::toLabel, EE_ACTIONS::toShapeBackslash, EE_ACTIONS::toShapeSlash, EE_ACTIONS::toText, UpdateFields(), and EE_ACTIONS::updateFieldsFromLibrary.

◆ UpdateFields()

int SCH_EDIT_TOOL::UpdateFields ( const TOOL_EVENT aEvent)

Definition at line 1125 of file sch_edit_tool.cpp.

1126 {
1127  std::list<SCH_COMPONENT*> components;
1128 
1129  for( SCH_ITEM* item = m_frame->GetScreen()->GetDrawItems(); item; item = item->Next() )
1130  {
1131  if( item->Type() == SCH_COMPONENT_T )
1132  components.push_back( static_cast<SCH_COMPONENT*>( item ) );
1133  }
1134 
1135  if( InvokeDialogUpdateFields( m_frame, components, true ) == wxID_OK )
1136  m_frame->GetCanvas()->Refresh();
1137 
1138  return 0;
1139 }
SCH_ITEM * Next() const
Definition: sch_item.h:153
SCH_SCREEN * GetScreen() const override
Return a pointer to a BASE_SCREEN or one of its derivatives.
SCH_DRAW_PANEL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.
int InvokeDialogUpdateFields(SCH_EDIT_FRAME *aCaller, const list< SCH_COMPONENT * > aComponents, bool aCreateUndoEntry)
virtual void Refresh(bool aEraseBackground=true, const wxRect *aRect=NULL) override
Update the board display after modifying it by a python script (note: it is automatically called by a...
Class SCH_ITEM is a base class for any item which can be embedded within the SCHEMATIC container clas...
Definition: sch_item.h:114
SCH_ITEM * GetDrawItems() const
Definition: sch_screen.h:152

References SCH_BASE_FRAME::GetCanvas(), SCH_SCREEN::GetDrawItems(), SCH_EDIT_FRAME::GetScreen(), InvokeDialogUpdateFields(), EE_TOOL_BASE< SCH_EDIT_FRAME >::m_frame, SCH_ITEM::Next(), EDA_DRAW_PANEL_GAL::Refresh(), and SCH_COMPONENT_T.

Referenced by setTransitions().

◆ updateView()

void EE_TOOL_BASE< SCH_EDIT_FRAME >::updateView ( EDA_ITEM aItem) const
inlineprotectedinherited

Similar to getView()->Update(), but handles items that are redrawn by their parents.

Definition at line 104 of file ee_tool_base.h.

105  {
106  KICAD_T itemType = aItem->Type();
107 
108  if( itemType == SCH_PIN_T || itemType == SCH_FIELD_T || itemType == SCH_SHEET_PIN_T )
109  getView()->Update( aItem->GetParent() );
110 
111  getView()->Update( aItem );
112  }
KICAD_T
Enum KICAD_T is the set of class identification values, stored in EDA_ITEM::m_StructType.
Definition: typeinfo.h:78
EDA_ITEM * GetParent() const
Definition: base_struct.h:220
virtual void Update(VIEW_ITEM *aItem, int aUpdateFlags)
For dynamic VIEWs, informs the associated VIEW that the graphical representation of this item has cha...
Definition: view.cpp:1540
KIGFX::VIEW * getView() const
Function getView()
Definition: tool_base.cpp:36
KICAD_T Type() const
Function Type()
Definition: base_struct.h:210

◆ Wait()

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

Function Wait()

Suspends execution of the tool until an event specified in aEventList arrives. No parameters means waiting for any event.

Definition at line 57 of file tool_interactive.cpp.

58 {
59  return m_toolMgr->ScheduleWait( this, aEventList );
60 }
TOOL_MANAGER * m_toolMgr
Definition: tool_base.h:219
TOOL_EVENT * ScheduleWait(TOOL_BASE *aTool, const TOOL_EVENT_LIST &aConditions)
Pauses execution of a given tool until one or more events matching aConditions arrives.

References TOOL_BASE::m_toolMgr, and TOOL_MANAGER::ScheduleWait().

Referenced by GERBVIEW_SELECTION_TOOL::disambiguationMenu(), SCH_LINE_WIRE_BUS_TOOL::doDrawSegments(), PCB_TOOL_BASE::doInteractiveItemPlacement(), PL_SELECTION_TOOL::doSelectionMenu(), EE_SELECTION_TOOL::doSelectionMenu(), SELECTION_TOOL::doSelectionMenu(), DRAWING_TOOL::drawArc(), DRAWING_TOOL::DrawDimension(), MICROWAVE_TOOL::drawMicrowaveInductor(), DRAWING_TOOL::drawSegment(), LIB_DRAWING_TOOLS::DrawShape(), PL_DRAWING_TOOLS::DrawShape(), SCH_DRAWING_TOOLS::DrawSheet(), DRAWING_TOOL::DrawZone(), PAD_TOOL::EnumeratePads(), ROUTER_TOOL::InlineDrag(), ZOOM_TOOL::Main(), PL_EDIT_TOOL::Main(), CVPCB_CONTROL::Main(), SCH_MOVE_TOOL::Main(), EE_POINT_EDITOR::Main(), PL_POINT_EDITOR::Main(), LIB_MOVE_TOOL::Main(), CVPCB_FOOTPRINT_VIEWER_SELECTION_TOOL::Main(), PCBNEW_PICKER_TOOL::Main(), PICKER_TOOL::Main(), GERBVIEW_SELECTION_TOOL::Main(), PL_SELECTION_TOOL::Main(), EE_SELECTION_TOOL::Main(), SELECTION_TOOL::Main(), ROUTER_TOOL::MainLoop(), LENGTH_TUNER_TOOL::MainLoop(), CVPCB_FOOTPRINT_VIEWER_SELECTION_TOOL::MeasureTool(), GERBVIEW_SELECTION_TOOL::MeasureTool(), EDIT_TOOL::MeasureTool(), EDIT_TOOL::Move(), POINT_EDITOR::OnSelectionChange(), ROUTER_TOOL::performDragging(), ROUTER_TOOL::performRouting(), LENGTH_TUNER_TOOL::performTuning(), EDIT_TOOL::pickCopyReferencePoint(), LIB_DRAWING_TOOLS::PlaceAnchor(), SCH_DRAWING_TOOLS::PlaceComponent(), SCH_DRAWING_TOOLS::PlaceImage(), DRAWING_TOOL::PlaceImportedGraphics(), PL_DRAWING_TOOLS::PlaceItem(), PCB_EDITOR_CONTROL::PlaceModule(), PCB_EDITOR_CONTROL::PlaceTarget(), DRAWING_TOOL::PlaceText(), EDIT_TOOL::Remove(), PL_SELECTION_TOOL::selectMultiple(), EE_SELECTION_TOOL::selectMultiple(), SELECTION_TOOL::selectMultiple(), GERBVIEW_SELECTION_TOOL::selectPoint(), SELECTION_TOOL::selectPoint(), POSITION_RELATIVE_TOOL::SelectPositionRelativeItem(), ZOOM_TOOL::selectRegion(), DRAWING_TOOL::SetAnchor(), SCH_DRAWING_TOOLS::SingleClickPlace(), LIB_DRAWING_TOOLS::TwoClickPlace(), SCH_DRAWING_TOOLS::TwoClickPlace(), and SCH_LINE_WIRE_BUS_TOOL::UnfoldBus().

Member Data Documentation

◆ m_frame

SCH_EDIT_FRAME * EE_TOOL_BASE< SCH_EDIT_FRAME >::m_frame
protectedinherited

Definition at line 138 of file ee_tool_base.h.

◆ m_isLibEdit

bool EE_TOOL_BASE< SCH_EDIT_FRAME >::m_isLibEdit
protectedinherited

Definition at line 141 of file ee_tool_base.h.

◆ m_menu

TOOL_MENU TOOL_INTERACTIVE::m_menu
protectedinherited

functions below are not yet implemented - their interface may change

Definition at line 108 of file tool_interactive.h.

Referenced by SCH_LINE_WIRE_BUS_TOOL::doDrawSegments(), PCB_TOOL_BASE::doInteractiveItemPlacement(), DRAWING_TOOL::drawArc(), DRAWING_TOOL::DrawDimension(), MICROWAVE_TOOL::drawMicrowaveInductor(), DRAWING_TOOL::drawSegment(), LIB_DRAWING_TOOLS::DrawShape(), PL_DRAWING_TOOLS::DrawShape(), SCH_DRAWING_TOOLS::DrawSheet(), DRAWING_TOOL::DrawZone(), PAD_TOOL::EnumeratePads(), TOOL_INTERACTIVE::GetToolMenu(), PICKER_TOOL::Init(), CVPCB_FOOTPRINT_VIEWER_SELECTION_TOOL::Init(), PL_EDIT_TOOL::Init(), Init(), LIB_DRAWING_TOOLS::Init(), MODULE_EDITOR_TOOLS::Init(), PL_DRAWING_TOOLS::Init(), LIB_CONTROL::Init(), PCB_EDITOR_CONTROL::Init(), SCH_DRAWING_TOOLS::Init(), GERBVIEW_SELECTION_TOOL::Init(), DRAWING_TOOL::Init(), PL_SELECTION_TOOL::Init(), EE_SELECTION_TOOL::Init(), SCH_LINE_WIRE_BUS_TOOL::Init(), EE_TOOL_BASE< SCH_BASE_FRAME >::Init(), SELECTION_TOOL::Init(), EDIT_TOOL::Init(), PCB_TOOL_BASE::Init(), PL_EDIT_TOOL::Main(), SCH_MOVE_TOOL::Main(), LIB_MOVE_TOOL::Main(), CVPCB_FOOTPRINT_VIEWER_SELECTION_TOOL::Main(), PCBNEW_PICKER_TOOL::Main(), PICKER_TOOL::Main(), GERBVIEW_SELECTION_TOOL::Main(), PL_SELECTION_TOOL::Main(), EE_SELECTION_TOOL::Main(), SELECTION_TOOL::Main(), CVPCB_FOOTPRINT_VIEWER_SELECTION_TOOL::MeasureTool(), GERBVIEW_SELECTION_TOOL::MeasureTool(), EDIT_TOOL::MeasureTool(), LIB_DRAWING_TOOLS::PlaceAnchor(), SCH_DRAWING_TOOLS::PlaceComponent(), SCH_DRAWING_TOOLS::PlaceImage(), DRAWING_TOOL::PlaceImportedGraphics(), PL_DRAWING_TOOLS::PlaceItem(), PCB_EDITOR_CONTROL::PlaceModule(), PCB_EDITOR_CONTROL::PlaceTarget(), DRAWING_TOOL::PlaceText(), DRAWING_TOOL::SetAnchor(), SCH_DRAWING_TOOLS::SingleClickPlace(), LIB_DRAWING_TOOLS::TwoClickPlace(), and SCH_DRAWING_TOOLS::TwoClickPlace().

◆ m_pickerItem

EDA_ITEM* SCH_EDIT_TOOL::m_pickerItem
private

Definition at line 78 of file sch_edit_tool.h.

Referenced by DeleteItemCursor().

◆ m_selectionTool

EE_SELECTION_TOOL* EE_TOOL_BASE< SCH_EDIT_FRAME >::m_selectionTool
protectedinherited

Definition at line 140 of file ee_tool_base.h.

◆ m_toolId

TOOL_ID TOOL_BASE::m_toolId
protectedinherited

Unique identifier for the tool, assigned by a TOOL_MANAGER instance.

Definition at line 214 of file tool_base.h.

Referenced by TOOL_INTERACTIVE::Activate(), TOOL_BASE::GetId(), and TOOL_BASE::IsToolActive().

◆ m_toolMgr

TOOL_MANAGER* TOOL_BASE::m_toolMgr
protectedinherited

Definition at line 219 of file tool_base.h.

Referenced by TOOL_INTERACTIVE::Activate(), PL_SELECTION_TOOL::AddItemsToSel(), EE_SELECTION_TOOL::AddItemsToSel(), PL_SELECTION_TOOL::AddItemToSel(), EE_SELECTION_TOOL::AddItemToSel(), SELECTION_TOOL::AddItemToSel(), CVPCB_ASSOCIATION_TOOL::Associate(), TOOL_BASE::attachManager(), PCB_INSPECTION_TOOL::calculateSelectionRatsnest(), ROUTER_TOOL::CanInlineDrag(), PCB_INSPECTION_TOOL::ClearHighlight(), SCH_EDITOR_CONTROL::ClearHighlight(), SELECTION_TOOL::ClearSelection(), PL_SELECTION_TOOL::ClearSelection(), GERBVIEW_SELECTION_TOOL::clearSelection(), EE_SELECTION_TOOL::ClearSelection(), ConvertDeMorgan(), LIB_EDIT_TOOL::Copy(), PL_EDIT_TOOL::Copy(), PAD_TOOL::copyPadSettings(), MICROWAVE_TOOL::createInductorBetween(), MODULE_EDITOR_TOOLS::CreatePadFromShapes(), PCB_INSPECTION_TOOL::CrossProbePcbToSch(), COMMON_TOOLS::CursorControl(), ROUTER_TOOL::CustomTrackWidthDialog(), SCH_EDITOR_CONTROL::Cut(), LIB_EDIT_TOOL::DeleteItemCursor(), PL_EDIT_TOOL::DeleteItemCursor(), DeleteItemCursor(), PCBNEW_CONTROL::DeleteItemCursor(), SCH_EDITOR_CONTROL::doCopy(), SCH_EDITOR_CONTROL::doCrossProbeSchToPcb(), LIB_EDIT_TOOL::DoDelete(), DoDelete(), SCH_LINE_WIRE_BUS_TOOL::doDrawSegments(), SCH_LINE_WIRE_BUS_TOOL::doUnfoldBus(), DRAWING_TOOL::DrawArc(), DRAWING_TOOL::drawArc(), DRAWING_TOOL::DrawCircle(), DRAWING_TOOL::DrawDimension(), DRAWING_TOOL::drawSegment(), LIB_DRAWING_TOOLS::DrawShape(), PL_DRAWING_TOOLS::DrawShape(), SCH_DRAWING_TOOLS::DrawSheet(), DRAWING_TOOL::DrawZone(), PCB_EDITOR_CONTROL::DrillOrigin(), LIB_EDIT_TOOL::Duplicate(), Duplicate(), EDIT_TOOL::Duplicate(), editComponentFieldText(), EDIT_TOOL::EditFpInFpEditor(), LIB_EDIT_TOOL::editSymbolProperties(), SCH_EDITOR_CONTROL::EditWithLibEdit(), SCH_EDITOR_CONTROL::EnterSheet(), PAD_TOOL::EnumeratePads(), GLOBAL_EDIT_TOOL::ExchangeFootprints(), SELECTION_TOOL::expandConnection(), MODULE_EDITOR_TOOLS::ExplodePadToShapes(), SELECTION_TOOL::filterSelection(), SELECTION_TOOL::findCallback(), SCH_EDITOR_CONTROL::FindComponentAndItem(), POINT_EDITOR::finishItem(), SCH_LINE_WIRE_BUS_TOOL::finishSegments(), EDIT_TOOL::Flip(), EDIT_TOOL::GetAndPlace(), TOOL_BASE::getEditFrameInt(), TOOL_BASE::GetManager(), TOOL_BASE::getModelInt(), DRAWING_TOOL::getSourceZoneForAction(), TOOL_BASE::getView(), TOOL_BASE::getViewControls(), TOOL_INTERACTIVE::goInternal(), PCBNEW_CONTROL::GridSetOrigin(), GERBVIEW_CONTROL::HighlightControl(), PCB_INSPECTION_TOOL::HighlightItem(), PCB_INSPECTION_TOOL::HighlightNet(), SCH_EDITOR_CONTROL::HighlightNet(), PCB_INSPECTION_TOOL::highlightNet(), SCH_EDITOR_CONTROL::HighlightNetCursor(), PCB_INSPECTION_TOOL::HighlightNetTool(), MODULE_EDITOR_TOOLS::ImportFootprint(), PL_EDIT_TOOL::ImportWorksheetContent(), LIB_EDIT_TOOL::Init(), Init(), PL_EDIT_TOOL::Init(), PAD_TOOL::Init(), GLOBAL_EDIT_TOOL::Init(), ALIGN_DISTRIBUTE_TOOL::Init(), PL_DRAWING_TOOLS::Init(), LIB_CONTROL::Init(), PL_POINT_EDITOR::Init(), POINT_EDITOR::Init(), PCB_EDITOR_CONTROL::Init(), POSITION_RELATIVE_TOOL::Init(), EE_TOOL_BASE< SCH_BASE_FRAME >::Init(), EDIT_TOOL::Init(), ROUTER_TOOL::InlineBreakTrack(), ROUTER_TOOL::InlineDrag(), EDIT_TOOL::invokeInlineRouter(), EDIT_TOOL::isInteractiveDragEnabled(), TOOL_BASE::IsToolActive(), SCH_EDITOR_CONTROL::LeaveSheet(), COMMON_CONTROL::ListHotKeys(), PCB_INSPECTION_TOOL::LocalRatsnestTool(), PL_EDIT_TOOL::Main(), CVPCB_CONTROL::Main(), SCH_MOVE_TOOL::Main(), LIB_MOVE_TOOL::Main(), PL_SELECTION_TOOL::Main(), EE_SELECTION_TOOL::Main(), SELECTION_TOOL::Main(), ROUTER_TOOL::MainLoop(), LENGTH_TUNER_TOOL::MainLoop(), LIB_EDIT_TOOL::Mirror(), Mirror(), EDIT_TOOL::Mirror(), PCB_EDITOR_CONTROL::modifyLockSelected(), EDIT_TOOL::Move(), EDIT_TOOL::MoveExact(), LIB_CONTROL::OnDeMorgan(), LIB_EDIT_TOOL::Paste(), PL_EDIT_TOOL::Paste(), SCH_EDITOR_CONTROL::Paste(), PAD_TOOL::pastePadProperties(), EDIT_TOOL::pickCopyReferencePoint(), LIB_EDIT_TOOL::PinTable(), PCBNEW_CONTROL::placeBoardItems(), SCH_DRAWING_TOOLS::PlaceComponent(), SCH_DRAWING_TOOLS::PlaceImage(), DRAWING_TOOL::PlaceImportedGraphics(), PL_DRAWING_TOOLS::PlaceItem(), PCB_EDITOR_CONTROL::PlaceModule(), PCB_EDITOR_CONTROL::PlaceTarget(), DRAWING_TOOL::PlaceText(), PCBNEW_CONTROL::Print(), GERBVIEW_CONTROL::Print(), LIB_EDIT_TOOL::Properties(), Properties(), EDIT_TOOL::Properties(), PAD_TOOL::pushPadSettings(), EE_SELECTION_TOOL::RebuildSelection(), LIB_EDIT_TOOL::Redo(), SCH_EDITOR_CONTROL::Redo(), POSITION_RELATIVE_TOOL::RelativeItemSelectionMove(), EDIT_TOOL::Remove(), POINT_EDITOR::removeCorner(), PL_SELECTION_TOOL::RemoveItemFromSel(), EE_SELECTION_TOOL::RemoveItemFromSel(), PL_SELECTION_TOOL::RemoveItemsFromSel(), EE_SELECTION_TOOL::RemoveItemsFromSel(), RepeatDrawItem(), LIB_DRAWING_TOOLS::RepeatDrawItem(), EE_SELECTION_TOOL::RequestSelection(), SELECTION_TOOL::RequestSelection(), COMMON_TOOLS::ResetLocalCoords(), TOOL_INTERACTIVE::resetTransitions(), LIB_EDIT_TOOL::Rotate(), Rotate(), EDIT_TOOL::Rotate(), TOOL_INTERACTIVE::RunMainStack(), DRC::RunTests(), EE_SELECTION_TOOL::SelectConnection(), SELECTION_TOOL::selectCopper(), PCB_TOOL_BASE::selection(), COMMON_TOOLS::SelectionTool(), GERBVIEW_SELECTION_TOOL::SelectItem(), GERBVIEW_SELECTION_TOOL::SelectItems(), SELECTION_TOOL::SelectItems(), PL_SELECTION_TOOL::selectMultiple(), EE_SELECTION_TOOL::selectMultiple(), SELECTION_TOOL::selectMultiple(), SELECTION_TOOL::selectNet(), PL_SELECTION_TOOL::SelectPoint(), GERBVIEW_SELECTION_TOOL::selectPoint(), EE_SELECTION_TOOL::SelectPoint(), SELECTION_TOOL::selectPoint(), POSITION_RELATIVE_TOOL::SelectPositionRelativeItem(), SELECTION_TOOL::selectSameSheet(), SELECTION_TOOL::selectSheetContents(), DRAWING_TOOL::SetAnchor(), TOOL_INTERACTIVE::SetContextMenu(), DRC::ShowDRCDialog(), SCH_DRAWING_TOOLS::SingleClickPlace(), PCB_EDITOR_CONTROL::TrackWidthDec(), PCB_EDITOR_CONTROL::TrackWidthInc(), LIB_DRAWING_TOOLS::TwoClickPlace(), SCH_DRAWING_TOOLS::TwoClickPlace(), LIB_EDIT_TOOL::Undo(), SCH_EDITOR_CONTROL::Undo(), GERBVIEW_SELECTION_TOOL::UnselectItem(), SELECTION_TOOL::UnselectItem(), GERBVIEW_SELECTION_TOOL::UnselectItems(), SELECTION_TOOL::UnselectItems(), EE_INSPECTION_TOOL::UpdateMessagePanel(), GERBVIEW_CONTROL::UpdateMessagePanel(), PL_EDITOR_CONTROL::UpdateMessagePanel(), PCBNEW_CONTROL::UpdateMessagePanel(), PCB_INSPECTION_TOOL::UpdateSelectionRatsnest(), PCB_EDITOR_CONTROL::ViaSizeDec(), PCB_EDITOR_CONTROL::ViaSizeInc(), TOOL_INTERACTIVE::Wait(), PCB_EDITOR_CONTROL::ZoneDuplicate(), and PCB_EDITOR_CONTROL::ZoneMerge().

◆ m_toolName

std::string TOOL_BASE::m_toolName
protectedinherited

Name of the tool.

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

Definition at line 218 of file tool_base.h.

Referenced by TOOL_BASE::GetName().

◆ m_toolSettings

TOOL_SETTINGS TOOL_BASE::m_toolSettings
protectedinherited

Definition at line 220 of file tool_base.h.

Referenced by TOOL_BASE::attachManager(), and TOOL_BASE::GetSettings().

◆ m_type

TOOL_TYPE TOOL_BASE::m_type
protectedinherited

Stores the type of the tool.

Definition at line 211 of file tool_base.h.

Referenced by TOOL_BASE::GetType().

◆ m_view

KIGFX::SCH_VIEW* EE_TOOL_BASE< SCH_EDIT_FRAME >::m_view
protectedinherited

Definition at line 139 of file ee_tool_base.h.


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