26#include <wx/clipbrd.h>
46 auto activeToolCondition =
79 bool do_reload_board =
true;
83 if(
frame()->Get3DViewerFrame() ==
nullptr )
84 do_reload_board =
false;
103template<
class T>
void Flip(
T& aValue )
161 for(
PAD*
pad : fp->Pads() )
178 for(
PAD*
pad : fp->Pads() )
195 for(
BOARD_ITEM* item : fp->GraphicalItems() )
225 for(
PCB_FIELD* field : fp->GetFields() )
230 for(
BOARD_ITEM* item : fp->GraphicalItems() )
278 bool originSet =
false;
283 view.SetVisible( &ruler,
false );
294 view.SetVisible( &ruler,
false );
295 controls.SetAutoPan(
false );
296 controls.CaptureCursor(
false );
297 controls.ForceCursorPosition(
false );
303 controls.ShowCursor(
true );
304 controls.SetAutoPan(
false );
305 controls.CaptureCursor(
false );
306 controls.ForceCursorPosition(
false );
315 grid.SetUseGrid(
view.GetGAL()->GetGridSnapping() && !evt->DisableGridSnapping() );
316 VECTOR2I cursorPos = evt->HasPosition() ? evt->Position() : controls.GetMousePosition();
317 cursorPos =
grid.BestSnapAnchor( cursorPos,
nullptr );
318 controls.ForceCursorPosition(
true, cursorPos );
320 if( evt->IsCancelInteractive() )
328 view.SetVisible( &ruler,
false );
336 else if( evt->IsActivate() )
341 if( evt->IsMoveTool() )
353 else if( !originSet && ( evt->IsDrag(
BUT_LEFT ) || evt->IsClick(
BUT_LEFT ) ) )
356 twoPtMgr.
SetEnd( cursorPos );
358 controls.CaptureCursor(
true );
359 controls.SetAutoPan(
true );
364 else if( originSet && ( evt->IsClick(
BUT_LEFT ) || evt->IsMouseUp(
BUT_LEFT ) ) )
368 controls.SetAutoPan(
false );
369 controls.CaptureCursor(
false );
372 else if( originSet && ( evt->IsMotion() || evt->IsDrag(
BUT_LEFT ) ) )
390 twoPtMgr.
SetEnd( cursorPos );
392 view.SetVisible( &ruler,
true );
418 ruler.
UpdateDir( invertXAxis, invertYAxis );
429 wxString
text = wxJoin( cursorStrings,
'\n' );
431 if( wxTheClipboard->Open() )
433 wxTheClipboard->SetData(
new wxTextDataObject(
text ) );
434 wxTheClipboard->Close();
440 m_menu->ShowContextMenu();
448 view.SetVisible( &ruler,
false );
449 view.Remove( &ruler );
452 controls.SetAutoPan(
false );
453 controls.CaptureCursor(
false );
454 controls.ForceCursorPosition(
false );
constexpr EDA_IU_SCALE pcbIUScale
static TOOL_ACTION cancelInteractive
static TOOL_ACTION show3DViewer
static TOOL_ACTION updatePreferences
static TOOL_ACTION updateUnits
static TOOL_ACTION measureTool
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
Create and handle a window for the 3d viewer connected to a Kiway and a pcbboard.
virtual APP_SETTINGS_BASE * config() const
Return the settings object used in SaveSettings(), and is overloaded in KICAD_MANAGER_FRAME.
void AddStandardSubMenus(TOOL_MENU &aMenu)
Construct a "basic" menu for a tool, containing only items that apply to all tools (e....
void SetCurrentCursor(KICURSOR aCursor)
Set the current cursor shape for this panel.
virtual void Refresh(bool aEraseBackground=true, const wxRect *aRect=nullptr) override
virtual void Update(const VIEW_ITEM *aItem, int aUpdateFlags) const override
For dynamic VIEWs, inform the associated VIEW that the graphical representation of this item has chan...
A drawn ruler item for showing the distance between two points.
wxArrayString GetDimensionStrings() const
Get the strings for the dimensions of the ruler.
void SwitchUnits(EDA_UNITS aUnits)
Switch the ruler units.
void UpdateDir(bool aFlipX, bool aFlipY)
Represent a very simple geometry manager for items that have a start and end point.
void SetOrigin(const VECTOR2I &aOrigin)
< Set the origin of the ruler (the fixed end)
void SetAngleSnap(LEADER_MODE aSnap)
void SetEnd(const VECTOR2I &aEnd)
Set the current end of the rectangle (the end that moves with the cursor.
LEADER_MODE m_AngleSnapMode
static TOOL_ACTION padDisplayMode
static TOOL_ACTION angleSnapModeChanged
Notification event when angle mode changes.
static TOOL_ACTION lineModeNext
Cycle through angle modes.
static TOOL_ACTION graphicsOutlines
Display footprint graphics as outlines.
static TOOL_ACTION fpAutoZoom
static TOOL_ACTION textOutlines
Display texts as lines.
static TOOL_ACTION showPadNumbers
virtual PCB_VIEWERS_SETTINGS_BASE * GetViewerSettingsBase() const
PCB_DRAW_PANEL_GAL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.
FOOTPRINT_EDITOR_SETTINGS * GetFootprintEditorSettings() const
EDA_3D_VIEWER_FRAME * CreateAndShow3D_Frame()
Show the 3D view frame.
virtual void Update3DView(bool aMarkDirty, bool aRefresh, const wxString *aTitle=nullptr)
Update the 3D view, if the viewer is opened by this frame.
virtual void UpdateStatusBar() override
Update the status bar information.
bool m_FootprintViewerAutoZoomOnSelect
true to use automatic zoom on fp selection
VIEWERS_DISPLAY_OPTIONS m_ViewersDisplay
EDA_UNITS GetUserUnits() const
Declaration of the eda_3d_viewer class.
LEADER_MODE
The kind of the leader line.
@ DIRECT
Unconstrained point-to-point.
@ REPAINT
Item needs to be redrawn.
@ GEOMETRY
Position or shape has changed.
int GetUserUnits()
Return the currently selected user unit value for the interface.
T * GetAppSettings(const char *aFilename)
bool m_DisplayInvertYAxis
bool m_DisplayInvertXAxis
bool m_DisplayGraphicsFill
LEADER_MODE m_AngleSnapMode
constexpr KICAD_T BaseType(const KICAD_T aType)
Return the underlying type of the given type.
KICAD_T
The set of class identification values stored in EDA_ITEM::m_structType.
@ PCB_SHAPE_T
class PCB_SHAPE, a segment not on copper layers
@ PCB_TEXTBOX_T
class PCB_TEXTBOX, wrapped text on a layer
@ PCB_TEXT_T
class PCB_TEXT, text on a layer
@ PCB_TARGET_T
class PCB_TARGET, a target (graphic item)
@ PCB_DIMENSION_T
class PCB_DIMENSION_BASE: abstract dimension meta-type
VECTOR2< int32_t > VECTOR2I