KiCad PCB EDA Suite
PCB_BASE_FRAME Class Referenceabstract

Base PCB main window class for Pcbnew, Gerbview, and CvPcb footprint viewer. More...

#include <pcb_base_frame.h>

Inheritance diagram for PCB_BASE_FRAME:
EDA_DRAW_FRAME KIWAY_PLAYER EDA_BASE_FRAME TOOLS_HOLDER KIWAY_HOLDER UNITS_PROVIDER DISPLAY_FOOTPRINTS_FRAME FOOTPRINT_VIEWER_FRAME PCB_BASE_EDIT_FRAME FOOTPRINT_EDIT_FRAME FOOTPRINT_WIZARD_FRAME PCB_EDIT_FRAME

Public Types

enum  UNDO_REDO_LIST { UNDO_LIST , REDO_LIST }
 Specifies whether we are interacting with the undo or redo stacks. More...
 
enum  HOLDER_TYPE { DIALOG , FRAME , PANEL }
 

Public Member Functions

 PCB_BASE_FRAME (KIWAY *aKiway, wxWindow *aParent, FRAME_T aFrameType, const wxString &aTitle, const wxPoint &aPos, const wxSize &aSize, long aStyle, const wxString &aFrameName)
 
 ~PCB_BASE_FRAME ()
 
EDA_3D_VIEWER_FRAMEGet3DViewerFrame ()
 
virtual void Update3DView (bool aMarkDirty, bool aRefresh, const wxString *aTitle=nullptr)
 Update the 3D view, if the viewer is opened by this frame. More...
 
FOOTPRINTLoadFootprint (const LIB_ID &aFootprintId)
 Attempt to load aFootprintId from the footprint library table. More...
 
BOX2I GetBoardBoundingBox (bool aBoardEdgesOnly=false) const
 Calculate the bounding box containing all board items (or board edge segments). More...
 
const BOX2I GetDocumentExtents (bool aIncludeAllVisible=true) const override
 Returns bbox of document with option to not include some items. More...
 
virtual void SetPageSettings (const PAGE_INFO &aPageSettings) override
 
const PAGE_INFOGetPageSettings () const override
 
const wxSize GetPageSizeIU () const override
 Works off of GetPageSettings() to return the size of the paper page in the internal units of this particular view. More...
 
const VECTOR2IGetGridOrigin () const override
 Return the absolute coordinates of the origin of the snap grid. More...
 
void SetGridOrigin (const VECTOR2I &aPoint) override
 
const VECTOR2IGetAuxOrigin () const
 
const VECTOR2I GetUserOrigin () const
 
ORIGIN_TRANSFORMSGetOriginTransforms () override
 Return a reference to the default ORIGIN_TRANSFORMS object. More...
 
const TITLE_BLOCKGetTitleBlock () const override
 
void SetTitleBlock (const TITLE_BLOCK &aTitleBlock) override
 
virtual BOARD_DESIGN_SETTINGSGetDesignSettings () const
 Returns the BOARD_DESIGN_SETTINGS for the open project. More...
 
virtual COLOR_SETTINGSGetColorSettings (bool aForceRefresh=false) const override
 Helper to retrieve the current color settings. More...
 
void SetDrawBgColor (const COLOR4D &aColor) override
 
const PCB_DISPLAY_OPTIONSGetDisplayOptions () const
 Display options control the way tracks, vias, outlines and other things are shown (for instance solid or sketch mode). More...
 
void SetDisplayOptions (const PCB_DISPLAY_OPTIONS &aOptions, bool aRefresh=true)
 Updates the current display options from the given options struct. More...
 
const ZONE_SETTINGSGetZoneSettings () const
 
void SetZoneSettings (const ZONE_SETTINGS &aSettings)
 
virtual const PCB_PLOT_PARAMSGetPlotSettings () const
 Return the PCB_PLOT_PARAMS for the BOARD owned by this frame. More...
 
virtual void SetPlotSettings (const PCB_PLOT_PARAMS &aSettings)
 
virtual void SetBoard (BOARD *aBoard, PROGRESS_REPORTER *aReporter=nullptr)
 Set the #m_Pcb member in such as way as to ensure deleting any previous BOARD. More...
 
BOARDGetBoard () const
 
void UpdateUserUnits (BOARD_ITEM *aItem, bool *aSelectedItemsModified=nullptr)
 Update any references within aItem (or its descendants) to the user units. More...
 
virtual BOARD_ITEM_CONTAINERGetModel () const =0
 
EDA_ITEMGetItem (const KIID &aId) const override
 Fetch an item by KIID. More...
 
void FocusOnItem (BOARD_ITEM *aItem, PCB_LAYER_ID aLayer=UNDEFINED_LAYER)
 
void FocusOnItems (std::vector< BOARD_ITEM * > aItems, PCB_LAYER_ID aLayer=UNDEFINED_LAYER)
 
void HideSolderMask ()
 
void ShowSolderMask ()
 
virtual void ReCreateOptToolbar () override
 
virtual void ShowChangedLanguage () override
 Redraw the menus and what not in current language. More...
 
virtual void UpdateStatusBar () override
 Update the status bar information. More...
 
PCB_SCREENGetScreen () const override
 Return a pointer to a BASE_SCREEN or one of its derivatives. More...
 
EDA_3D_VIEWER_FRAMECreateAndShow3D_Frame ()
 Shows the 3D view frame. More...
 
GENERAL_COLLECTORS_GUIDE GetCollectorsGuide ()
 
wxString SelectLibrary (const wxString &aNicknameExisting)
 Put up a dialog and allows the user to pick a library, for unspecified use. More...
 
FOOTPRINTGetFootprintFromBoardByReference ()
 
void OnModify () override
 Must be called after a change in order to set the "modify" flag and update other data structures and GUI elements. More...
 
FOOTPRINTCreateNewFootprint (const wxString &aFootprintName, bool aQuiet=false)
 Creates a new footprint, at position 0,0. More...
 
void PlaceFootprint (FOOTPRINT *aFootprint, bool aRecreateRatsnest=true)
 Places aFootprint at the current cursor position and updates footprint coordinates with the new position. More...
 
void ShowPadPropertiesDialog (PAD *aPad)
 
FOOTPRINTSelectFootprintFromLibTree (LIB_ID aPreselect=LIB_ID())
 Open a dialog to select a footprint. More...
 
virtual void AddFootprintToBoard (FOOTPRINT *aFootprint)
 Add the given footprint to the board. More...
 
wxString SelectFootprintFromLibBrowser ()
 Launch the footprint viewer to select the name of a footprint to load. More...
 
void Compile_Ratsnest (bool aDisplayStatus)
 Create the entire board ratsnest. More...
 
virtual void SaveCopyInUndoList (EDA_ITEM *aItemToCopy, UNDO_REDO aTypeCommand)=0
 Create a new entry in undo list of commands. More...
 
virtual void SaveCopyInUndoList (const PICKED_ITEMS_LIST &aItemsList, UNDO_REDO aTypeCommand)=0
 Creates a new entry in undo list of commands. More...
 
virtual void AppendCopyToUndoList (const PICKED_ITEMS_LIST &aItemsList, UNDO_REDO aTypeCommand)=0
 As SaveCopyInUndoList, but appends the changes to the last undo item on the stack. More...
 
PCB_LAYER_ID SelectOneLayer (PCB_LAYER_ID aDefaultLayer, LSET aNotAllowedLayersMask=LSET(), wxPoint aDlgPosition=wxDefaultPosition)
 Show the dialog box for a layer selection. More...
 
virtual void SwitchLayer (PCB_LAYER_ID aLayer)
 Change the active layer in the frame. More...
 
virtual void SetActiveLayer (PCB_LAYER_ID aLayer)
 
virtual PCB_LAYER_ID GetActiveLayer () const
 
SEVERITY GetSeverity (int aErrorCode) const override
 
virtual void OnDisplayOptionsChanged ()
 
void LoadSettings (APP_SETTINGS_BASE *aCfg) override
 Load common frame parameters from a configuration file. More...
 
void SaveSettings (APP_SETTINGS_BASE *aCfg) override
 Save common frame parameters to a configuration data file. More...
 
PCBNEW_SETTINGSGetPcbNewSettings () const
 
FOOTPRINT_EDITOR_SETTINGSGetFootprintEditorSettings () const
 
virtual PCB_VIEWERS_SETTINGS_BASEGetViewerSettingsBase () const
 
virtual MAGNETIC_SETTINGSGetMagneticItemsSettings ()
 
void CommonSettingsChanged (bool aEnvVarsChanged, bool aTextVarsChanged) override
 Notification event that some of the common (suite-wide) settings have changed. More...
 
void DisplayGridMsg () override
 Display the current grid pane on the status bar. More...
 
PCB_DRAW_PANEL_GALGetCanvas () const override
 Return a pointer to GAL-based canvas of given EDA draw frame. More...
 
virtual void ActivateGalCanvas () override
 Use to start up the GAL drawing canvas. More...
 
bool LockFile (const wxString &aFileName)
 Mark a schematic file as being in use. More...
 
void ReleaseFile ()
 Release the current file marked in use. More...
 
void ScriptingConsoleEnableDisable ()
 Toggles the scripting console visibility. More...
 
bool IsScriptingConsoleVisible ()
 Gets the current visibility of the scripting console window. More...
 
EDA_SEARCH_DATAGetFindReplaceData ()
 
wxArrayString & GetFindHistoryList ()
 
bool GetShowPolarCoords () const
 For those frames that support polar coordinates. More...
 
void SetShowPolarCoords (bool aShow)
 
void ToggleUserUnits () override
 
void GetUnitPair (EDA_UNITS &aPrimaryUnit, EDA_UNITS &aSecondaryUnits)
 Get the pair or units in current use. More...
 
VECTOR2I GetNearestGridPosition (const VECTOR2I &aPosition) const
 Return the nearest aGridSize location to aPosition. More...
 
VECTOR2I GetNearestHalfGridPosition (const VECTOR2I &aPosition) const
 Return the nearest aGridSize / 2 location to aPosition. More...
 
virtual COLOR4D GetDrawBgColor () const
 
bool LibraryFileBrowser (bool doOpen, wxFileName &aFilename, const wxString &wildcard, const wxString &ext, bool isDirectory=false, bool aIsGlobal=false, const wxString &aGlobalPath=wxEmptyString)
 
virtual wxString GetScreenDesc () const
 
void EraseMsgBox ()
 
virtual void ReCreateHToolbar ()=0
 
virtual void ReCreateVToolbar ()=0
 
virtual void ReCreateAuxiliaryToolbar ()
 
virtual void UpdateToolbarControlSizes ()
 Update the sizes of any controls in the toolbars of the frame. More...
 
bool IsGridVisible () const
 
virtual void SetGridVisibility (bool aVisible)
 
virtual COLOR4D GetGridColor ()
 
virtual void SetGridColor (const COLOR4D &aColor)
 
void OnSelectGrid (wxCommandEvent &event)
 Command event handler for selecting grid sizes. More...
 
void OnGridSettings (wxCommandEvent &event)
 
void UpdateGridSelectBox ()
 Rebuild the grid combobox to respond to any changes in the GUI (units, user grid changes, etc.). More...
 
void OnUpdateSelectGrid (wxUpdateUIEvent &aEvent)
 Update the checked item in the grid wxchoice. More...
 
void OnUpdateSelectZoom (wxUpdateUIEvent &aEvent)
 Update the checked item in the zoom wxchoice. More...
 
void UpdateZoomSelectBox ()
 Rebuild the grid combobox to respond to any changes in the GUI (units, user grid changes, etc.) More...
 
const wxString GetZoomLevelIndicator () const
 Return a human readable value for display in dialogs. More...
 
virtual void OnSelectZoom (wxCommandEvent &event)
 Set the zoom factor when selected by the zoom list box in the main tool bar. More...
 
virtual void OnSize (wxSizeEvent &event) override
 Recalculate the size of toolbars and display panel when the frame size changes. More...
 
void OnMove (wxMoveEvent &aEvent) override
 
virtual void HardRedraw ()
 Rebuild the GAL and redraws the screen. More...
 
virtual void Zoom_Automatique (bool aWarpPointer)
 Redraw the screen with best zoom level and the best centering that shows all the page or the board. More...
 
void FocusOnLocation (const VECTOR2I &aPos)
 Useful to focus on a particular location, in find functions. More...
 
void AddStandardSubMenus (TOOL_MENU &aMenu)
 Construct a "basic" menu for a tool, containing only items that apply to all tools (e.g. More...
 
void PrintDrawingSheet (const RENDER_SETTINGS *aSettings, BASE_SCREEN *aScreen, const std::map< wxString, wxString > *aProperties, double aMils2Iu, const wxString &aFilename, const wxString &aSheetLayer=wxEmptyString)
 Prints the drawing-sheet (frame and title block). More...
 
void DisplayToolMsg (const wxString &msg) override
 
void DisplayConstraintsMsg (const wxString &msg)
 
virtual void OnPageSettingsChange ()
 Called when modifying the page settings. More...
 
void DisplayUnitsMsg ()
 Display current unit pane in the status bar. More...
 
void AppendMsgPanel (const wxString &aTextUpper, const wxString &aTextLower, int aPadding=6)
 Append a message to the message panel. More...
 
virtual void ClearMsgPanel ()
 Clear all messages from the message panel. More...
 
void SetMsgPanel (const std::vector< MSG_PANEL_ITEM > &aList)
 Clear the message panel and populates it with the contents of aList. More...
 
void SetMsgPanel (EDA_ITEM *aItem)
 
void SetMsgPanel (const wxString &aTextUpper, const wxString &aTextLower, int aPadding=6)
 Helper function that erases the msg panel and then appends a single message. More...
 
virtual void UpdateMsgPanel ()
 Redraw the message panel. More...
 
virtual void PrintPage (const RENDER_SETTINGS *aSettings)
 Print the page pointed by current screen, set by the calling print function. More...
 
virtual void SwitchCanvas (EDA_DRAW_PANEL_GAL::GAL_TYPE aCanvasType)
 Changes the current rendering backend. More...
 
void SetCanvas (EDA_DRAW_PANEL_GAL *aPanel)
 
wxWindow * GetToolCanvas () const override
 Canvas access. More...
 
KIGFX::GAL_DISPLAY_OPTIONSGetGalDisplayOptions ()
 Return a reference to the gal rendering options used by GAL for rendering. More...
 
void RefreshCanvas () override
 
void RecreateToolbars ()
 Rebuild all toolbars, and update the checked state of check tools. More...
 
virtual bool OpenProjectFiles (const std::vector< wxString > &aFileList, int aCtl=0)
 Open a project or set of files given by aFileList. More...
 
virtual bool ShowModal (wxString *aResult=nullptr, wxWindow *aResultantFocusWindow=nullptr)
 Show this wxFrame as if it were a modal dialog, with all other instantiated wxFrames disabled until this KIWAY_PLAYER derivative calls DismissModal(). More...
 
virtual void KiwayMailIn (KIWAY_EXPRESS &aEvent)
 Receive KIWAY_EXPRESS messages from other players. More...
 
bool Destroy () override
 Our version of Destroy() which is virtual from wxWidgets. More...
 
bool IsModal () const override
 Return true if the frame is shown in our modal mode and false if the frame is shown as an usual frame. More...
 
void SetModal (bool aIsModal)
 
bool IsDismissed ()
 
void DismissModal (bool aRetVal, const wxString &aResult=wxEmptyString)
 
void CreateServer (int service, bool local=true)
 
void OnSockRequest (wxSocketEvent &evt)
 
void OnSockRequestServer (wxSocketEvent &evt)
 
virtual void ExecuteRemoteCommand (const char *cmdline)
 Execute a remote command sent via socket (to port KICAD_PCB_PORT_SERVICE_NUMBER, currently 4242). More...
 
void ChangeUserUnits (EDA_UNITS aUnits)
 
SETTINGS_MANAGERGetSettingsManager () const
 
bool ProcessEvent (wxEvent &aEvent) override
 Override the default process event handler to implement the auto save feature. More...
 
virtual void OnCharHook (wxKeyEvent &aKeyEvent)
 Capture the key event before it is sent to the GUI. More...
 
void OnMenuEvent (wxMenuEvent &event)
 The TOOL_DISPATCHER needs these to work around some issues in wxWidgets where the menu events aren't captured by the menus themselves. More...
 
virtual void RegisterUIUpdateHandler (int aID, const ACTION_CONDITIONS &aConditions) override
 Register a UI update handler for the control with ID aID. More...
 
virtual void RegisterUIUpdateHandler (const TOOL_ACTION &aAction, const ACTION_CONDITIONS &aConditions)
 Register an action's update conditions with the UI layer to allow the UI to appropriately display the state of its controls. More...
 
virtual void UnregisterUIUpdateHandler (int aID) override
 Unregister a UI handler for a given ID that was registered using RegisterUIUpdateHandler. More...
 
virtual void UnregisterUIUpdateHandler (const TOOL_ACTION &aAction)
 Unregister a UI handler for an action that was registered using RegisterUIUpdateHandler. More...
 
void OnMaximize (wxMaximizeEvent &aEvent)
 
int GetAutoSaveInterval () const
 
bool IsType (FRAME_T aType) const
 
FRAME_T GetFrameType () const
 
virtual const SEARCH_STACKsys_search ()
 Return a SEARCH_STACK pertaining to entire program. More...
 
virtual wxString help_name ()
 
void OnKicadAbout (wxCommandEvent &event)
 
void OnPreferences (wxCommandEvent &event)
 Displays the preferences and settings of all opened editors paged dialog. More...
 
void ShowPreferences (wxString aStartPage, wxString aStartParentPage)
 Displays the preferences and settings of all opened editors paged dialog, starting with a particular page. More...
 
void PrintMsg (const wxString &text)
 
void CreateInfoBar ()
 
void FinishAUIInitialization ()
 
WX_INFOBARGetInfoBar ()
 
void ShowInfoBarError (const wxString &aErrorMsg, bool aShowCloseButton=false, WX_INFOBAR::MESSAGE_TYPE aType=WX_INFOBAR::MESSAGE_TYPE::GENERIC)
 Show the WX_INFOBAR displayed on the top of the canvas with a message and an error icon on the left of the infobar, and an optional closebox to the right. More...
 
void ShowInfoBarError (const wxString &aErrorMsg, bool aShowCloseButton, std::function< void(void)> aCallback)
 Show the WX_INFOBAR displayed on the top of the canvas with a message and an error icon on the left of the infobar, and an optional closebox to the right. More...
 
void ShowInfoBarWarning (const wxString &aWarningMsg, bool aShowCloseButton=false)
 Show the WX_INFOBAR displayed on the top of the canvas with a message and a warning icon on the left of the infobar. More...
 
void ShowInfoBarMsg (const wxString &aMsg, bool aShowCloseButton=false)
 Show the WX_INFOBAR displayed on the top of the canvas with a message and an info icon on the left of the infobar. More...
 
virtual APP_SETTINGS_BASEconfig () const
 Returns the settings object used in SaveSettings(), and is overloaded in KICAD_MANAGER_FRAME. More...
 
void LoadWindowState (const wxString &aFileName)
 
virtual void LoadWindowState (const WINDOW_STATE &aState)
 Load frame state info from a configuration file. More...
 
void LoadWindowSettings (const WINDOW_SETTINGS *aCfg)
 Load window settings from the given settings object. More...
 
void SaveWindowSettings (WINDOW_SETTINGS *aCfg)
 Save window settings to the given settings object. More...
 
virtual WINDOW_SETTINGSGetWindowSettings (APP_SETTINGS_BASE *aCfg)
 Return a pointer to the window settings for this frame. More...
 
wxString ConfigBaseName () override
 Get the configuration base name. More...
 
virtual void SaveProjectSettings ()
 Save changes to the project settings to the project (.pro) file. More...
 
void ImportHotkeyConfigFromFile (std::map< std::string, TOOL_ACTION * > aActionMap, const wxString &aDefaultShortname)
 Prompt the user for a hotkey file to read, and read it. More...
 
wxString GetFileFromHistory (int cmdId, const wxString &type, FILE_HISTORY *aFileHistory=nullptr)
 Fetches the file name from the file history list. More...
 
void ClearFileHistory (FILE_HISTORY *aFileHistory=nullptr)
 Removes all files from the file history. More...
 
void UpdateFileHistory (const wxString &FullFileName, FILE_HISTORY *aFileHistory=nullptr)
 Update the list of recently opened files. More...
 
FILE_HISTORYGetFileHistory ()
 Get the frame's main file history. More...
 
void SetMruPath (const wxString &aPath)
 
wxString GetMruPath () const
 
virtual wxString GetCurrentFileName () const
 Get the full filename + path of the currently opened file in the frame. More...
 
void ReCreateMenuBar ()
 Recreates the menu bar. More...
 
void AddStandardHelpMenu (wxMenuBar *aMenuBar)
 Adds the standard KiCad help menu to the menubar. More...
 
bool IsWritable (const wxFileName &aFileName, bool aVerbose=true)
 Checks if aFileName can be written. More...
 
virtual void CheckForAutoSaveFile (const wxFileName &aFileName)
 Check if an auto save file exists for aFileName and takes the appropriate action depending on the user input. More...
 
virtual void ThemeChanged ()
 Process light/dark theme change. More...
 
virtual void ProjectChanged ()
 Notification event that the project has changed. More...
 
const wxString & GetAboutTitle () const
 
const wxString & GetUntranslatedAboutTitle () const
 
virtual bool IsContentModified () const
 Get if the contents of the frame have been modified since the last save. More...
 
wxSize GetWindowSize ()
 Get the undecorated window size that can be used for restoring the window size. More...
 
virtual void ClearUndoORRedoList (UNDO_REDO_LIST aList, int aItemCount=-1)
 Remove the aItemCount of old commands from aList and delete commands, pickers and picked items if needed. More...
 
virtual void ClearUndoRedoList ()
 Clear the undo and redo list using ClearUndoORRedoList() More...
 
virtual void PushCommandToUndoList (PICKED_ITEMS_LIST *aItem)
 Add a command to undo in the undo list. More...
 
virtual void PushCommandToRedoList (PICKED_ITEMS_LIST *aItem)
 Add a command to redo in the redo list. More...
 
virtual PICKED_ITEMS_LISTPopCommandFromUndoList ()
 Return the last command to undo and remove it from list, nothing is deleted. More...
 
virtual PICKED_ITEMS_LISTPopCommandFromRedoList ()
 Return the last command to undo and remove it from list, nothing is deleted. More...
 
virtual int GetUndoCommandCount () const
 
virtual int GetRedoCommandCount () const
 
int GetMaxUndoItems () const
 
bool NonUserClose (bool aForce)
 
virtual void HandleSystemColorChange ()
 Update the UI in response to a change in the system colors. More...
 
TOOL_MANAGERGetToolManager () const
 Return the MVC controller. More...
 
virtual SELECTIONGetCurrentSelection ()
 Get the current selection from the canvas area. More...
 
virtual void PushTool (const TOOL_EVENT &aEvent)
 NB: the definition of "tool" is different at the user level. More...
 
virtual void PopTool (const TOOL_EVENT &aEvent)
 Pops a tool from the stack. More...
 
bool ToolStackIsEmpty ()
 
std::string CurrentToolName () const
 
bool IsCurrentTool (const TOOL_ACTION &aAction) const
 
bool GetDoImmediateActions () const
 Indicate that hotkeys should perform an immediate action even if another tool is currently active. More...
 
MOUSE_DRAG_ACTION GetDragAction () const
 Indicates whether a drag should draw a selection rectangle or drag selected (or unselected) objects. More...
 
bool GetMoveWarpsCursor () const
 Indicate that a move operation should warp the mouse pointer to the origin of the move object. More...
 
HOLDER_TYPE GetType () const
 
KIWAYKiway () const
 Return a reference to the KIWAY that this object has an opportunity to participate in. More...
 
bool HasKiway () const
 Safety check before asking for the Kiway reference. More...
 
PROJECTPrj () const
 Return a reference to the PROJECT associated with this KIWAY. More...
 
void SetKiway (wxWindow *aDest, KIWAY *aKiway)
 It is only used for debugging, since "this" is not a wxWindow*. More...
 
EDA_UNITS GetUserUnits () const
 
void SetUserUnits (EDA_UNITS aUnits)
 
const EDA_IU_SCALEGetIuScale () const
 
wxString StringFromValue (double aValue, bool aAddUnitLabel=false, EDA_DATA_TYPE aType=EDA_DATA_TYPE::DISTANCE)
 Converts aValue in internal units into a united string. More...
 
wxString StringFromValue (const EDA_ANGLE &aValue, bool aAddUnitLabel=false)
 
wxString MessageTextFromValue (double aValue, bool aAddUnitLabel=true, EDA_DATA_TYPE aType=EDA_DATA_TYPE::DISTANCE)
 A lower-precision version of StringFromValue(). More...
 
wxString MessageTextFromValue (const EDA_ANGLE &aValue, bool aAddUnitLabel=true)
 
int ValueFromString (const wxString &aTextValue, EDA_DATA_TYPE aType=EDA_DATA_TYPE::DISTANCE)
 Converts aTextValue in aUnits to internal units used by the frame. More...
 
EDA_ANGLE AngleValueFromString (const wxString &aTextValue)
 

Static Public Member Functions

static void HandleUpdateUIEvent (wxUpdateUIEvent &aEvent, EDA_BASE_FRAME *aFrame, ACTION_CONDITIONS aCond)
 Handle events generated when the UI is trying to figure out the current state of the UI controls related to TOOL_ACTIONS (e.g. More...
 

Protected Member Functions

bool canCloseWindow (wxCloseEvent &aCloseEvent) override
 
void handleActivateEvent (wxActivateEvent &aEvent) override
 Handle a window activation event. More...
 
void handleIconizeEvent (wxIconizeEvent &aEvent) override
 Handle a window iconize event. More...
 
virtual void doReCreateMenuBar () override
 
FOOTPRINTloadFootprint (const LIB_ID &aFootprintId)
 Attempts to load aFootprintId from the footprint library table. More...
 
virtual void unitsChangeRefresh () override
 Called when when the units setting has changed to allow for any derived classes to handle refreshing and controls that have units based measurements in them. More...
 
void rebuildConnectivity ()
 
virtual void SetScreen (BASE_SCREEN *aScreen)
 
void setupUnits (APP_SETTINGS_BASE *aCfg)
 
std::vector< wxWindow * > findDialogs ()
 
void resolveCanvasType ()
 Determines the Canvas type to load (with prompt if required) and initializes m_canvasType. More...
 
EDA_DRAW_PANEL_GAL::GAL_TYPE loadCanvasTypeSetting ()
 Returns the canvas type stored in the application settings. More...
 
bool saveCanvasTypeSetting (EDA_DRAW_PANEL_GAL::GAL_TYPE aCanvasType)
 Stores the canvas type in the application settings. More...
 
void onActivate (wxActivateEvent &aEvent)
 
void kiway_express (KIWAY_EXPRESS &aEvent)
 event handler, routes to derivative specific virtual KiwayMailIn() More...
 
void language_change (wxCommandEvent &event)
 An event handler called on a language menu selection. More...
 
void onAutoSaveTimer (wxTimerEvent &aEvent)
 Handle the auto save timer event. More...
 
void onIconize (wxIconizeEvent &aEvent)
 
virtual bool isAutoSaveRequired () const
 Return the auto save status of the application. More...
 
virtual bool doAutoSave ()
 This should be overridden by the derived class to handle the auto save feature. More...
 
virtual void doCloseWindow ()
 
void onSystemColorChange (wxSysColourChangedEvent &aEvent)
 
virtual void setupUIConditions ()
 Setup the UI conditions for the various actions and their controls in this frame. More...
 
void initExitKey ()
 Sets the common key-pair for exiting the application (Ctrl-Q) and ties it to the wxID_EXIT event id. More...
 
void ensureWindowIsOnScreen ()
 
virtual void OnDropFiles (wxDropFilesEvent &aEvent)
 Handles event fired when a file is dropped to the window. More...
 
virtual void DoWithAcceptedFiles ()
 Execute action on accepted dropped file. More...
 

Static Protected Member Functions

static wxString GetAutoSaveFilePrefix ()
 

Protected Attributes

BOARDm_pcb
 
PCB_DISPLAY_OPTIONS m_displayOptions
 
PCB_ORIGIN_TRANSFORMS m_originTransforms
 
wxSocketServer * m_socketServer
 
std::vector< wxSocketBase * > m_sockets
 interprocess communication More...
 
std::unique_ptr< wxSingleInstanceChecker > m_file_checker
 
COLOR4D m_gridColor
 
COLOR4D m_drawBgColor
 
int m_undoRedoCountMax
 
bool m_polarCoords
 
bool m_showBorderAndTitleBlock
 
wxChoice * m_gridSelectBox
 
wxChoice * m_zoomSelectBox
 
ACTION_TOOLBARm_mainToolBar
 
ACTION_TOOLBARm_auxiliaryToolBar
 
ACTION_TOOLBARm_drawToolBar
 
ACTION_TOOLBARm_optionsToolBar
 
std::unique_ptr< EDA_SEARCH_DATAm_findReplaceData
 
wxArrayString m_findStringHistoryList
 
wxArrayString m_replaceStringHistoryList
 
EDA_MSG_PANELm_messagePanel
 
int m_msgFrameHeight
 
COLOR_SETTINGSm_colorSettings
 
SEARCH_PANEm_searchPane
 The current canvas type. More...
 
EDA_DRAW_PANEL_GAL::GAL_TYPE m_canvasType
 
bool m_modal
 
WX_EVENT_LOOPm_modal_loop
 < Points to nested event_loop. NULL means not modal and dismissed. More...
 
wxWindow * m_modal_resultant_parent
 
wxString m_modal_string
 
bool m_modal_ret_val
 
std::vector< wxFileName > m_AcceptedFiles
 
FRAME_T m_ident
 
wxPoint m_framePos
 
wxSize m_frameSize
 
bool m_maximizeByDefault
 
int m_displayIndex
 
wxPoint m_normalFramePos
 
wxSize m_normalFrameSize
 
wxString m_aboutTitle
 
wxAuiManager m_auimgr
 
wxString m_perspective
 
WX_INFOBARm_infoBar
 
wxString m_configName
 
SETTINGS_MANAGERm_settingsManager
 
FILE_HISTORYm_fileHistory
 
bool m_supportsAutoSave
 
bool m_autoSavePending
 
bool m_autoSaveRequired
 
wxTimer * m_autoSaveTimer
 
UNDO_REDO_CONTAINER m_undoList
 
UNDO_REDO_CONTAINER m_redoList
 
wxString m_mruPath
 
std::map< int, UIUpdateHandlerm_uiUpdateMap
 < Map containing the UI update handlers registered with wx for each action. More...
 
bool m_isClosing
 Set by NonUserClose() to indicate that the user did not request the current close. More...
 
bool m_isNonUserClose
 
std::map< const wxString, TOOL_ACTION * > m_acceptedExts
 Associates files extensions with action to execute. More...
 
TOOL_MANAGERm_toolManager
 
ACTIONSm_actions
 
TOOL_DISPATCHERm_toolDispatcher
 
SELECTION m_dummySelection
 
std::vector< std::string > m_toolStack
 
bool m_immediateActions
 
MOUSE_DRAG_ACTION m_dragAction
 
bool m_moveWarpsCursor
 

Static Protected Attributes

static bool m_openGLFailureOccured = false
 Has any failure occured when switching to OpenGL in any EDA_DRAW_FRAME? More...
 
static constexpr int KICAD_AUI_TB_STYLE = wxAUI_TB_DEFAULT_STYLE | wxAUI_TB_PLAIN_BACKGROUND
 < Default style flags used for wxAUI toolbars. More...
 

Private Member Functions

void windowClosing (wxCloseEvent &event)
 (with its unexpected name so it does not collide with the real OnWindowClose() function provided in derived classes) is called just before a window closing, and is used to call a derivation specific SaveSettings(). More...
 
void commonInit (FRAME_T aFrameType)
 Collect common initialization functions used in all CTORs. More...
 
wxWindow * findQuasiModalDialog ()
 

Private Attributes

NL_PCBNEW_PLUGINm_spaceMouse
 
BASE_SCREENm_currentScreen
 current used SCREEN More...
 
EDA_DRAW_PANEL_GALm_canvas
 This the frame's interface to setting GAL display options. More...
 
KIGFX::GAL_DISPLAY_OPTIONS m_galDisplayOptions
 
KIWAYm_kiway
 
HOLDER_TYPE m_type
 
const EDA_IU_SCALEm_iuScale
 
EDA_UNITS m_userUnits
 

Detailed Description

Base PCB main window class for Pcbnew, Gerbview, and CvPcb footprint viewer.

Definition at line 69 of file pcb_base_frame.h.

Member Enumeration Documentation

◆ HOLDER_TYPE

enum KIWAY_HOLDER::HOLDER_TYPE
inherited
Enumerator
DIALOG 
FRAME 
PANEL 

Definition at line 39 of file kiway_holder.h.

◆ UNDO_REDO_LIST

Specifies whether we are interacting with the undo or redo stacks.

Enumerator
UNDO_LIST 
REDO_LIST 

Definition at line 111 of file eda_base_frame.h.

112 {
113 UNDO_LIST,
115 };

Constructor & Destructor Documentation

◆ PCB_BASE_FRAME()

PCB_BASE_FRAME::PCB_BASE_FRAME ( KIWAY aKiway,
wxWindow *  aParent,
FRAME_T  aFrameType,
const wxString &  aTitle,
const wxPoint &  aPos,
const wxSize &  aSize,
long  aStyle,
const wxString &  aFrameName 
)

Definition at line 74 of file pcb_base_frame.cpp.

76 :
77 EDA_DRAW_FRAME( aKiway, aParent, aFrameType, aTitle, aPos, aSize, aStyle, aFrameName, pcbIUScale ),
78 m_pcb( nullptr ),
79 m_originTransforms( *this ),
80 m_spaceMouse( nullptr )
81{
82}
constexpr EDA_IU_SCALE pcbIUScale
Definition: base_units.h:109
EDA_DRAW_FRAME(KIWAY *aKiway, wxWindow *aParent, FRAME_T aFrameType, const wxString &aTitle, const wxPoint &aPos, const wxSize &aSize, long aStyle, const wxString &aFrameName, const EDA_IU_SCALE &aIuScale)
NL_PCBNEW_PLUGIN * m_spaceMouse
PCB_ORIGIN_TRANSFORMS m_originTransforms

◆ ~PCB_BASE_FRAME()

PCB_BASE_FRAME::~PCB_BASE_FRAME ( )

Definition at line 85 of file pcb_base_frame.cpp.

86{
87#if defined( KICAD_USE_3DCONNEXION )
88 delete m_spaceMouse;
89#endif
90
91 // Ensure m_canvasType is up to date, to save it in config
93
94 delete m_pcb;
95 m_pcb = nullptr;
96}
EDA_DRAW_PANEL_GAL::GAL_TYPE m_canvasType
GAL_TYPE GetBackend() const
Return the type of backend currently used by GAL canvas.
PCB_DRAW_PANEL_GAL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.

References EDA_DRAW_PANEL_GAL::GetBackend(), GetCanvas(), EDA_DRAW_FRAME::m_canvasType, m_pcb, and m_spaceMouse.

Member Function Documentation

◆ ActivateGalCanvas()

void PCB_BASE_FRAME::ActivateGalCanvas ( )
overridevirtual

Use to start up the GAL drawing canvas.

Reimplemented from EDA_DRAW_FRAME.

Reimplemented in FOOTPRINT_EDIT_FRAME, PCB_BASE_EDIT_FRAME, and PCB_EDIT_FRAME.

Definition at line 1065 of file pcb_base_frame.cpp.

1066{
1068
1069 EDA_DRAW_PANEL_GAL* canvas = GetCanvas();
1070 KIGFX::VIEW* view = canvas->GetView();
1071
1072 if( m_toolManager )
1073 {
1074 m_toolManager->SetEnvironment( m_pcb, view, canvas->GetViewControls(), config(), this );
1075
1077 }
1078
1079 KIGFX::PCB_PAINTER* painter = static_cast<KIGFX::PCB_PAINTER*>( view->GetPainter() );
1080 KIGFX::PCB_RENDER_SETTINGS* settings = painter->GetSettings();
1081 const PCB_DISPLAY_OPTIONS& displ_opts = GetDisplayOptions();
1082
1083 settings->LoadDisplayOptions( displ_opts );
1084 settings->LoadColors( GetColorSettings() );
1085
1086 view->RecacheAllItems();
1088 canvas->StartDrawing();
1089
1090#if defined( KICAD_USE_3DCONNEXION )
1091 try
1092 {
1093 if( m_spaceMouse == nullptr )
1094 {
1096 }
1097 }
1098 catch( const std::system_error& e )
1099 {
1100 wxLogTrace( wxT( "KI_TRACE_NAVLIB" ), e.what() );
1101 }
1102#endif
1103}
virtual APP_SETTINGS_BASE * config() const
Returns the settings object used in SaveSettings(), and is overloaded in KICAD_MANAGER_FRAME.
virtual void ActivateGalCanvas()
Use to start up the GAL drawing canvas.
KIGFX::VIEW_CONTROLS * GetViewControls() const
Return a pointer to the #VIEW_CONTROLS instance used in the panel.
virtual KIGFX::VIEW * GetView() const
Return a pointer to the #VIEW instance used in the panel.
void SetEventDispatcher(TOOL_DISPATCHER *aEventDispatcher)
Set a dispatcher that processes events and forwards them to tools.
void StartDrawing()
Begin drawing if it was stopped previously.
Contains methods for drawing PCB-specific items.
Definition: pcb_painter.h:158
virtual PCB_RENDER_SETTINGS * GetSettings() override
Return a pointer to current settings that are going to be used when drawing items.
Definition: pcb_painter.h:163
PCB specific render settings.
Definition: pcb_painter.h:72
void LoadColors(const COLOR_SETTINGS *aSettings) override
void LoadDisplayOptions(const PCB_DISPLAY_OPTIONS &aOptions)
Load settings related to display options (high-contrast mode, full or outline modes for vias/pads/tra...
Hold a (potentially large) number of VIEW_ITEMs and renders them on a graphics device provided by the...
Definition: view.h:69
void RecacheAllItems()
Rebuild GAL display lists.
Definition: view.cpp:1384
PAINTER * GetPainter() const
Return the painter object used by the view for drawing #VIEW_ITEMS.
Definition: view.h:213
The class that implements the public interface to the SpaceMouse plug-in.
const PCB_DISPLAY_OPTIONS & GetDisplayOptions() const
Display options control the way tracks, vias, outlines and other things are shown (for instance solid...
virtual COLOR_SETTINGS * GetColorSettings(bool aForceRefresh=false) const override
Helper to retrieve the current color settings.
TOOL_MANAGER * m_toolManager
Definition: tools_holder.h:170
TOOL_DISPATCHER * m_toolDispatcher
Definition: tools_holder.h:172
@ GAL_SWITCH
Rendering engine changes.
Definition: tool_base.h:81
void ResetTools(TOOL_BASE::RESET_REASON aReason)
Reset all tools (i.e.
void SetEnvironment(EDA_ITEM *aModel, KIGFX::VIEW *aView, KIGFX::VIEW_CONTROLS *aViewControls, APP_SETTINGS_BASE *aSettings, TOOLS_HOLDER *aFrame)
Set the work environment (model, view, view controls and the parent window).

References EDA_DRAW_FRAME::ActivateGalCanvas(), EDA_BASE_FRAME::config(), TOOL_BASE::GAL_SWITCH, GetCanvas(), GetColorSettings(), GetDisplayOptions(), KIGFX::VIEW::GetPainter(), KIGFX::PCB_PAINTER::GetSettings(), EDA_DRAW_PANEL_GAL::GetView(), EDA_DRAW_PANEL_GAL::GetViewControls(), KIGFX::PCB_RENDER_SETTINGS::LoadColors(), KIGFX::PCB_RENDER_SETTINGS::LoadDisplayOptions(), m_pcb, m_spaceMouse, TOOLS_HOLDER::m_toolDispatcher, TOOLS_HOLDER::m_toolManager, KIGFX::VIEW::RecacheAllItems(), TOOL_MANAGER::ResetTools(), TOOL_MANAGER::SetEnvironment(), EDA_DRAW_PANEL_GAL::SetEventDispatcher(), and EDA_DRAW_PANEL_GAL::StartDrawing().

Referenced by PCB_BASE_EDIT_FRAME::ActivateGalCanvas(), and PCB_DRAW_PANEL_GAL::OnShow().

◆ AddFootprintToBoard()

void PCB_BASE_FRAME::AddFootprintToBoard ( FOOTPRINT aFootprint)
virtual

Add the given footprint to the board.

Parameters
aDCis the current Device Context, to draw the new footprint (can be NULL ).

Reimplemented in FOOTPRINT_EDIT_FRAME.

Definition at line 231 of file pcb_base_frame.cpp.

232{
233 if( aFootprint )
234 {
235 GetBoard()->Add( aFootprint, ADD_MODE::APPEND );
236
237 aFootprint->SetFlags( IS_NEW );
238 aFootprint->SetPosition( wxPoint( 0, 0 ) ); // cursor in GAL may not be initialized yet
239
240 // Put it on FRONT layer (note that it might be stored flipped if the lib is an archive
241 // built from a board)
242 if( aFootprint->IsFlipped() )
243 aFootprint->Flip( aFootprint->GetPosition(), GetPcbNewSettings()->m_FlipLeftRight );
244
245 // Place it in orientation 0 even if it is not saved with orientation 0 in lib (note that
246 // it might be stored in another orientation if the lib is an archive built from a board)
247 aFootprint->SetOrientation( ANGLE_0 );
248
249 UpdateUserUnits( aFootprint );
250 }
251}
void Add(BOARD_ITEM *aItem, ADD_MODE aMode=ADD_MODE::INSERT, bool aSkipConnectivity=false) override
Removes an item from the container.
Definition: board.cpp:750
void SetFlags(EDA_ITEM_FLAGS aMask)
Definition: eda_item.h:139
void SetPosition(const VECTOR2I &aPos) override
Definition: footprint.cpp:1670
void SetOrientation(const EDA_ANGLE &aNewAngle)
Definition: footprint.cpp:1802
bool IsFlipped() const
Definition: footprint.h:324
void Flip(const VECTOR2I &aCentre, bool aFlipLeftRight) override
Flip this object, i.e.
Definition: footprint.cpp:1586
VECTOR2I GetPosition() const override
Definition: footprint.h:188
PCBNEW_SETTINGS * GetPcbNewSettings() const
void UpdateUserUnits(BOARD_ITEM *aItem, bool *aSelectedItemsModified=nullptr)
Update any references within aItem (or its descendants) to the user units.
BOARD * GetBoard() const
static constexpr EDA_ANGLE & ANGLE_0
Definition: eda_angle.h:412
#define IS_NEW
New item, just created.

References BOARD::Add(), ANGLE_0, APPEND, FOOTPRINT::Flip(), GetBoard(), GetPcbNewSettings(), FOOTPRINT::GetPosition(), IS_NEW, FOOTPRINT::IsFlipped(), EDA_ITEM::SetFlags(), FOOTPRINT::SetOrientation(), FOOTPRINT::SetPosition(), and UpdateUserUnits().

Referenced by FOOTPRINT_EDIT_FRAME::AddFootprintToBoard().

◆ AddStandardHelpMenu()

void EDA_BASE_FRAME::AddStandardHelpMenu ( wxMenuBar *  aMenuBar)
inherited

Adds the standard KiCad help menu to the menubar.

Definition at line 462 of file eda_base_frame.cpp.

463{
465 ACTION_MENU* helpMenu = new ACTION_MENU( false, commonControl );
466
467 helpMenu->Add( ACTIONS::help );
468 helpMenu->Add( ACTIONS::gettingStarted );
469 helpMenu->Add( ACTIONS::listHotKeys );
470 helpMenu->Add( ACTIONS::getInvolved );
471 helpMenu->Add( ACTIONS::donate );
472 helpMenu->Add( ACTIONS::reportBug );
473
474 helpMenu->AppendSeparator();
475 helpMenu->Add( _( "&About KiCad" ), "", wxID_ABOUT, BITMAPS::about );
476
477 // Trailing space keeps OSX from hijacking our menu (and disabling everything in it).
478 aMenuBar->Append( helpMenu, _( "&Help" ) + wxS( " " ) );
479}
static TOOL_ACTION reportBug
Cursor control event types.
Definition: actions.h:187
static TOOL_ACTION donate
Definition: actions.h:185
static TOOL_ACTION listHotKeys
Definition: actions.h:184
static TOOL_ACTION getInvolved
Definition: actions.h:186
static TOOL_ACTION gettingStarted
Definition: actions.h:182
static TOOL_ACTION help
Definition: actions.h:183
Defines the structure of a menu based on ACTIONs.
Definition: action_menu.h:49
Handle actions that are shared between different applications.
#define _(s)

References _, about, ACTIONS::donate, ACTIONS::getInvolved, ACTIONS::gettingStarted, TOOL_MANAGER::GetTool(), ACTIONS::help, ACTIONS::listHotKeys, TOOLS_HOLDER::m_toolManager, and ACTIONS::reportBug.

Referenced by EDA_3D_VIEWER_FRAME::CreateMenuBar(), CVPCB_MAINFRAME::doReCreateMenuBar(), SCH_EDIT_FRAME::doReCreateMenuBar(), SYMBOL_EDIT_FRAME::doReCreateMenuBar(), SYMBOL_VIEWER_FRAME::doReCreateMenuBar(), GERBVIEW_FRAME::doReCreateMenuBar(), KICAD_MANAGER_FRAME::doReCreateMenuBar(), PL_EDITOR_FRAME::doReCreateMenuBar(), FOOTPRINT_EDIT_FRAME::doReCreateMenuBar(), FOOTPRINT_VIEWER_FRAME::doReCreateMenuBar(), and PCB_EDIT_FRAME::doReCreateMenuBar().

◆ AddStandardSubMenus()

void EDA_DRAW_FRAME::AddStandardSubMenus ( TOOL_MENU aMenu)
inherited

Construct a "basic" menu for a tool, containing only items that apply to all tools (e.g.

zoom and grid).

Definition at line 576 of file eda_draw_frame.cpp.

577{
579 CONDITIONAL_MENU& aMenu = aToolMenu.GetMenu();
580
581 aMenu.AddSeparator( 1000 );
582
583 std::shared_ptr<ZOOM_MENU> zoomMenu = std::make_shared<ZOOM_MENU>( this );
584 zoomMenu->SetTool( commonTools );
585 aToolMenu.RegisterSubMenu( zoomMenu );
586
587 std::shared_ptr<GRID_MENU> gridMenu = std::make_shared<GRID_MENU>( this );
588 gridMenu->SetTool( commonTools );
589 aToolMenu.RegisterSubMenu( gridMenu );
590
591 aMenu.AddMenu( zoomMenu.get(), SELECTION_CONDITIONS::ShowAlways, 1000 );
592 aMenu.AddMenu( gridMenu.get(), SELECTION_CONDITIONS::ShowAlways, 1000 );
593}
Handles action that are shared between different applications.
Definition: common_tools.h:38
void AddSeparator(int aOrder=ANY_ORDER)
Add a separator to the menu.
static bool ShowAlways(const SELECTION &aSelection)
The default condition function (always returns true).
CONDITIONAL_MENU & GetMenu()
Definition: tool_menu.cpp:44

References CONDITIONAL_MENU::AddSeparator(), TOOL_MENU::GetMenu(), TOOL_MANAGER::GetTool(), TOOLS_HOLDER::m_toolManager, TOOL_MENU::RegisterSubMenu(), and SELECTION_CONDITIONS::ShowAlways().

Referenced by EE_SELECTION_TOOL::Init(), PICKER_TOOL::Init(), PL_DRAWING_TOOLS::Init(), PL_EDIT_TOOL::Init(), PL_SELECTION_TOOL::Init(), ROUTER_TOOL::Init(), PCB_SELECTION_TOOL::Init(), and PCB_VIEWER_TOOLS::Init().

◆ AngleValueFromString()

EDA_ANGLE UNITS_PROVIDER::AngleValueFromString ( const wxString &  aTextValue)
inlineinherited

Definition at line 116 of file units_provider.h.

117 {
119 aTextValue );
120
121 return EDA_ANGLE( angle, DEGREES_T );
122 }
const EDA_IU_SCALE & GetIuScale() const
@ DEGREES_T
Definition: eda_angle.h:31
double DoubleValueFromString(const EDA_IU_SCALE &aIuScale, EDA_UNITS aUnits, const wxString &aTextValue, EDA_DATA_TYPE aType=EDA_DATA_TYPE::DISTANCE)
Function DoubleValueFromString converts aTextValue to a double.
Definition: eda_units.cpp:456
static DIRECTION_45::AngleType angle(const VECTOR2I &a, const VECTOR2I &b)

References PNS::angle(), DEGREES, DEGREES_T, EDA_UNIT_UTILS::UI::DoubleValueFromString(), and UNITS_PROVIDER::GetIuScale().

Referenced by FP_TEXT_GRID_TABLE::SetValue().

◆ AppendCopyToUndoList()

virtual void PCB_BASE_FRAME::AppendCopyToUndoList ( const PICKED_ITEMS_LIST aItemsList,
UNDO_REDO  aTypeCommand 
)
pure virtual

As SaveCopyInUndoList, but appends the changes to the last undo item on the stack.

Implemented in DISPLAY_FOOTPRINTS_FRAME, FOOTPRINT_VIEWER_FRAME, and PCB_BASE_EDIT_FRAME.

Referenced by BOARD_COMMIT::Push().

◆ AppendMsgPanel()

void EDA_DRAW_FRAME::AppendMsgPanel ( const wxString &  aTextUpper,
const wxString &  aTextLower,
int  aPadding = 6 
)
inherited

Append a message to the message panel.

This helper method checks to make sure the message panel exists in the frame and appends a message to it using the message panel AppendMessage() method.

Parameters
aTextUpperThe message upper text.
aTextLowerThe message lower text.
aPaddingNumber of spaces to pad between messages.

Definition at line 736 of file eda_draw_frame.cpp.

738{
739 if( m_messagePanel )
740 m_messagePanel->AppendMessage( aTextUpper, aTextLower, aPadding );
741}
EDA_MSG_PANEL * m_messagePanel
void AppendMessage(const wxString &aUpperText, const wxString &aLowerText, int aPadding=6)
Append a message to the message panel.
Definition: msgpanel.cpp:93

References EDA_MSG_PANEL::AppendMessage(), and EDA_DRAW_FRAME::m_messagePanel.

Referenced by GERBER_FILE_IMAGE::DisplayImageInfo(), SYMBOL_VIEWER_FRAME::updatePreviewSymbol(), and SYMBOL_EDIT_FRAME::UpdateSymbolMsgPanelInfo().

◆ canCloseWindow()

bool PCB_BASE_FRAME::canCloseWindow ( wxCloseEvent &  aCloseEvent)
overrideprotectedvirtual

Reimplemented from EDA_BASE_FRAME.

Reimplemented in PCB_EDIT_FRAME, and FOOTPRINT_EDIT_FRAME.

Definition at line 99 of file pcb_base_frame.cpp.

100{
101 // Close modeless dialogs. They're trouble when they get destroyed after the frame and/or
102 // board.
103 wxWindow* viewer3D = Get3DViewerFrame();
104
105 if( viewer3D )
106 viewer3D->Close( true );
107
108 // Similarly, wxConvBrokenFileNames uses some statically allocated variables that make it
109 // crash when run later from a d'tor.
110 Prj().Cleanup3DCache();
111
112 return true;
113}
PROJECT & Prj() const
Return a reference to the PROJECT associated with this KIWAY.
EDA_3D_VIEWER_FRAME * Get3DViewerFrame()

References Get3DViewerFrame(), and KIWAY_HOLDER::Prj().

Referenced by PCB_EDIT_FRAME::canCloseWindow(), and FOOTPRINT_EDIT_FRAME::canCloseWindow().

◆ ChangeUserUnits()

void EDA_BASE_FRAME::ChangeUserUnits ( EDA_UNITS  aUnits)
inherited

Definition at line 1352 of file eda_base_frame.cpp.

1353{
1354 SetUserUnits( aUnits );
1356
1357 wxCommandEvent e( UNITS_CHANGED );
1358 e.SetClientData( this );
1359 ProcessEventLocally( e );
1360}
virtual void unitsChangeRefresh()
Called when when the units setting has changed to allow for any derived classes to handle refreshing ...
void SetUserUnits(EDA_UNITS aUnits)

References UNITS_PROVIDER::SetUserUnits(), and EDA_BASE_FRAME::unitsChangeRefresh().

Referenced by COMMON_TOOLS::SwitchUnits(), and COMMON_TOOLS::ToggleUnits().

◆ CheckForAutoSaveFile()

void EDA_BASE_FRAME::CheckForAutoSaveFile ( const wxFileName &  aFileName)
virtualinherited

Check if an auto save file exists for aFileName and takes the appropriate action depending on the user input.

If an auto save file exists for aFileName, the user is prompted if they wish to replace file aFileName with the auto saved file. If the user chooses to replace the file, the backup file of aFileName is removed, aFileName is renamed to the backup file name, and the auto save file is renamed to aFileName. If user chooses to keep the existing version of aFileName, the auto save file is removed.

Parameters
aFileNameA wxFileName object containing the file name to check.

Reimplemented in SCH_EDIT_FRAME.

Definition at line 1231 of file eda_base_frame.cpp.

1232{
1233 if( !IsGUI() )
1234 return;
1235
1236 wxCHECK_RET( aFileName.IsOk(), wxT( "Invalid file name!" ) );
1237
1238 wxFileName autoSaveFileName = aFileName;
1239
1240 // Check for auto save file.
1241 autoSaveFileName.SetName( GetAutoSaveFilePrefix() + aFileName.GetName() );
1242
1243 wxLogTrace( traceAutoSave,
1244 wxT( "Checking for auto save file " ) + autoSaveFileName.GetFullPath() );
1245
1246 if( !autoSaveFileName.FileExists() )
1247 return;
1248
1249 wxString msg = wxString::Format( _( "Well this is potentially embarrassing!\n"
1250 "It appears that the last time you were editing\n"
1251 "%s\n"
1252 "KiCad exited before saving.\n"
1253 "\n"
1254 "Do you wish to open the auto-saved file instead?" ),
1255 aFileName.GetFullName() );
1256
1257 int response = wxMessageBox( msg, Pgm().App().GetAppDisplayName(), wxYES_NO | wxICON_QUESTION,
1258 this );
1259
1260 // Make a backup of the current file, delete the file, and rename the auto save file to
1261 // the file name.
1262 if( response == wxYES )
1263 {
1264 if( !wxRenameFile( autoSaveFileName.GetFullPath(), aFileName.GetFullPath() ) )
1265 {
1266 wxMessageBox( _( "The auto save file could not be renamed to the board file name." ),
1267 Pgm().App().GetAppDisplayName(), wxOK | wxICON_EXCLAMATION, this );
1268 }
1269 }
1270 else
1271 {
1272 wxLogTrace( traceAutoSave,
1273 wxT( "Removing auto save file " ) + autoSaveFileName.GetFullPath() );
1274
1275 // Remove the auto save file when using the previous file as is.
1276 wxRemoveFile( autoSaveFileName.GetFullPath() );
1277 }
1278}
static wxString GetAutoSaveFilePrefix()
bool IsGUI()
Determine if the application is running with a GUI.
Definition: confirm.cpp:40
const wxChar *const traceAutoSave
Flag to enable auto save feature debug tracing.
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, const CPTREE &aTree)
Output a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:200
KIWAY Kiway & Pgm(), KFCTL_STANDALONE
The global Program "get" accessor.
Definition: single_top.cpp:111

References _, Format(), EDA_BASE_FRAME::GetAutoSaveFilePrefix(), IsGUI(), Pgm(), and traceAutoSave.

Referenced by PCB_EDIT_FRAME::OpenProjectFiles().

◆ ClearFileHistory()

void EDA_BASE_FRAME::ClearFileHistory ( FILE_HISTORY aFileHistory = nullptr)
inherited

Removes all files from the file history.

Parameters
aFileHistoryThe FILE_HISTORY in use. If null, the main application file history is used

Definition at line 969 of file eda_base_frame.cpp.

970{
971 if( !aFileHistory )
972 aFileHistory = m_fileHistory;
973
974 wxASSERT( aFileHistory );
975
976 aFileHistory->ClearFileHistory();
977
978 // Update the menubar to update the file history menu
979 if( GetMenuBar() )
980 {
982 GetMenuBar()->Refresh();
983 }
984}
FILE_HISTORY * m_fileHistory
void ReCreateMenuBar()
Recreates the menu bar.
void ClearFileHistory()
Clear all entries from the file history.

References FILE_HISTORY::ClearFileHistory(), EDA_BASE_FRAME::m_fileHistory, and EDA_BASE_FRAME::ReCreateMenuBar().

Referenced by GERBVIEW_FRAME::OnClearDrlFileHistory(), SCH_EDIT_FRAME::OnClearFileHistory(), KICAD_MANAGER_FRAME::OnClearFileHistory(), PL_EDITOR_FRAME::OnClearFileHistory(), PCB_EDIT_FRAME::OnClearFileHistory(), GERBVIEW_FRAME::OnClearGbrFileHistory(), GERBVIEW_FRAME::OnClearJobFileHistory(), and GERBVIEW_FRAME::OnClearZipFileHistory().

◆ ClearMsgPanel()

◆ ClearUndoORRedoList()

virtual void EDA_BASE_FRAME::ClearUndoORRedoList ( UNDO_REDO_LIST  aList,
int  aItemCount = -1 
)
inlinevirtualinherited

Remove the aItemCount of old commands from aList and delete commands, pickers and picked items if needed.

Because picked items must be deleted only if they are not in use, this is a virtual pure function that must be created for SCH_SCREEN and PCB_SCREEN. Commands are deleted from the older to the last.

Parameters
aList= the UNDO_REDO_CONTAINER of commands.
aItemCountnumber of old commands to delete. -1 to remove all old commands this will empty the list of commands.

Reimplemented in SCH_EDIT_FRAME, SYMBOL_EDIT_FRAME, PL_EDITOR_FRAME, and PCB_BASE_EDIT_FRAME.

Definition at line 539 of file eda_base_frame.h.

540 { }

Referenced by EDA_BASE_FRAME::ClearUndoRedoList(), EDA_BASE_FRAME::PushCommandToRedoList(), and EDA_BASE_FRAME::PushCommandToUndoList().

◆ ClearUndoRedoList()

◆ commonInit()

void EDA_BASE_FRAME::commonInit ( FRAME_T  aFrameType)
privateinherited

Collect common initialization functions used in all CTORs.

Definition at line 117 of file eda_base_frame.cpp.

118{
119 m_ident = aFrameType;
120 m_maximizeByDefault = false;
121 m_infoBar = nullptr;
122 m_settingsManager = nullptr;
123 m_fileHistory = nullptr;
124 m_supportsAutoSave = false;
125 m_autoSavePending = false;
127 m_isClosing = false;
128 m_isNonUserClose = false;
129 m_autoSaveTimer = new wxTimer( this, ID_AUTO_SAVE_TIMER );
130 m_autoSaveRequired = false;
132 m_frameSize = defaultSize( aFrameType );
133 m_displayIndex = -1;
134
135 m_auimgr.SetArtProvider( new WX_AUI_DOCK_ART() );
136
137 m_settingsManager = &Pgm().GetSettingsManager();
138
139 // Set a reasonable minimal size for the frame
140 SetSizeHints( minSize( aFrameType ).x, minSize( aFrameType ).y, -1, -1, -1, -1 );
141
142 // Store dimensions of the user area of the main window.
143 GetClientSize( &m_frameSize.x, &m_frameSize.y );
144
145 Connect( ID_AUTO_SAVE_TIMER, wxEVT_TIMER,
146 wxTimerEventHandler( EDA_BASE_FRAME::onAutoSaveTimer ) );
147
148 // hook wxEVT_CLOSE_WINDOW so we can call SaveSettings(). This function seems
149 // to be called before any other hook for wxCloseEvent, which is necessary.
150 Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( EDA_BASE_FRAME::windowClosing ) );
151
152 initExitKey();
153}
void windowClosing(wxCloseEvent &event)
(with its unexpected name so it does not collide with the real OnWindowClose() function provided in d...
void initExitKey()
Sets the common key-pair for exiting the application (Ctrl-Q) and ties it to the wxID_EXIT event id.
WX_INFOBAR * m_infoBar
void onAutoSaveTimer(wxTimerEvent &aEvent)
Handle the auto save timer event.
wxTimer * m_autoSaveTimer
wxAuiManager m_auimgr
SETTINGS_MANAGER * m_settingsManager
bool m_isClosing
Set by NonUserClose() to indicate that the user did not request the current close.
wxString m_mruPath
static wxString GetDefaultUserProjectsPath()
Gets the default path we point users to create projects.
Definition: paths.cpp:139
static const wxSize minSize(FRAME_T aFrameType)
static const wxSize defaultSize(FRAME_T aFrameType)
#define DEFAULT_MAX_UNDO_ITEMS
@ ID_AUTO_SAVE_TIMER
Definition: id.h:79

References DEFAULT_MAX_UNDO_ITEMS, defaultSize(), PATHS::GetDefaultUserProjectsPath(), ID_AUTO_SAVE_TIMER, minSize(), EDA_BASE_FRAME::onAutoSaveTimer(), Pgm(), and EDA_BASE_FRAME::windowClosing().

Referenced by EDA_BASE_FRAME::EDA_BASE_FRAME().

◆ CommonSettingsChanged()

void PCB_BASE_FRAME::CommonSettingsChanged ( bool  aEnvVarsChanged,
bool  aTextVarsChanged 
)
overridevirtual

Notification event that some of the common (suite-wide) settings have changed.

Update menus, toolbars, local variables, etc.

Reimplemented from EDA_DRAW_FRAME.

Reimplemented in FOOTPRINT_EDIT_FRAME, FOOTPRINT_VIEWER_FRAME, and PCB_EDIT_FRAME.

Definition at line 994 of file pcb_base_frame.cpp.

995{
996 EDA_DRAW_FRAME::CommonSettingsChanged( aEnvVarsChanged, aTextVarsChanged );
997
999 PCB_RENDER_SETTINGS* renderSettings = static_cast<KIGFX::PCB_RENDER_SETTINGS*>( settings );
1000
1001 renderSettings->LoadColors( GetColorSettings( true ) );
1002 renderSettings->LoadDisplayOptions( GetDisplayOptions() );
1003
1004 // Note: KIGFX::REPAINT isn't enough for things that go from invisible to visible as
1005 // they won't be found in the view layer's itemset for re-painting.
1007 [&]( KIGFX::VIEW_ITEM* aItem ) -> int
1008 {
1009 if( dynamic_cast<RATSNEST_VIEW_ITEM*>( aItem ) )
1010 {
1011 return KIGFX::ALL; // ratsnest display
1012 }
1013 else if( dynamic_cast<PCB_TRACK*>( aItem ) )
1014 {
1015 return KIGFX::REPAINT; // track, arc & via clearance display
1016 }
1017 else if( dynamic_cast<PAD*>( aItem ) )
1018 {
1019 return KIGFX::REPAINT; // pad clearance display
1020 }
1021
1022 return 0;
1023 } );
1024
1026
1028
1029 // The 3D viewer isn't in the Kiway, so send its update manually
1031
1032 if( viewer )
1033 viewer->CommonSettingsChanged( aEnvVarsChanged, aTextVarsChanged );
1034}
Create and handle a window for the 3d viewer connected to a Kiway and a pcbboard.
void CommonSettingsChanged(bool aEnvVarsChanged, bool aTextVarsChanged) override
Notification that common settings are updated.
void RecreateToolbars()
Rebuild all toolbars, and update the checked state of check tools.
void CommonSettingsChanged(bool aEnvVarsChanged, bool aTextVarsChanged) override
Notification event that some of the common (suite-wide) settings have changed.
virtual RENDER_SETTINGS * GetSettings()=0
Return a pointer to current settings that are going to be used when drawing items.
Container for all the knowledge about how graphical objects are drawn on any output surface/device.
An abstract base class for deriving all objects that can be added to a VIEW.
Definition: view_item.h:77
void UpdateAllItems(int aUpdateFlags)
Update all items in the view according to the given flags.
Definition: view.cpp:1484
void UpdateAllItemsConditionally(int aUpdateFlags, std::function< bool(VIEW_ITEM *)> aCondition)
Update items in the view according to the given flags and condition.
Definition: view.cpp:1494
Definition: pad.h:59
virtual KIGFX::PCB_VIEW * GetView() const override
Return a pointer to the #VIEW instance used in the panel.
@ COLOR
Color has changed.
Definition: view_item.h:48
@ REPAINT
Item needs to be redrawn.
Definition: view_item.h:52
@ ALL
All except INITIAL_ADD.
Definition: view_item.h:53

References KIGFX::ALL, KIGFX::COLOR, EDA_3D_VIEWER_FRAME::CommonSettingsChanged(), EDA_DRAW_FRAME::CommonSettingsChanged(), Get3DViewerFrame(), GetCanvas(), GetColorSettings(), GetDisplayOptions(), KIGFX::VIEW::GetPainter(), KIGFX::PAINTER::GetSettings(), PCB_DRAW_PANEL_GAL::GetView(), KIGFX::PCB_RENDER_SETTINGS::LoadColors(), KIGFX::PCB_RENDER_SETTINGS::LoadDisplayOptions(), EDA_DRAW_FRAME::RecreateToolbars(), KIGFX::REPAINT, KIGFX::VIEW::UpdateAllItems(), and KIGFX::VIEW::UpdateAllItemsConditionally().

Referenced by FOOTPRINT_EDIT_FRAME::CommonSettingsChanged(), FOOTPRINT_VIEWER_FRAME::CommonSettingsChanged(), and PCB_EDIT_FRAME::CommonSettingsChanged().

◆ Compile_Ratsnest()

void PCB_BASE_FRAME::Compile_Ratsnest ( bool  aDisplayStatus)

Create the entire board ratsnest.

Function Compile_Ratsnest Create the entire board ratsnest.

This must be called after a board change (changes for pads, footprints or a read netlist ).

Parameters
aDisplayStatusif true, display the computation results.

Must be called after a board change (changes for pads, footprints or a read netlist ).

Parameters
aDisplayStatus: if true, display the computation results

Definition at line 35 of file ratsnest.cpp.

36{
37 GetBoard()->GetConnectivity()->RecalculateRatsnest();
39
40 if( aDisplayStatus )
42}
void UpdateRatsnestExclusions()
Update the visibility flags on the current unconnected ratsnest lines.
Definition: board.cpp:266
std::shared_ptr< CONNECTIVITY_DATA > GetConnectivity() const
Return a list of missing connections between components/tracks.
Definition: board.h:424
void SetMsgPanel(const std::vector< MSG_PANEL_ITEM > &aList)
Clear the message panel and populates it with the contents of aList.

References GetBoard(), BOARD::GetConnectivity(), m_pcb, EDA_DRAW_FRAME::SetMsgPanel(), and BOARD::UpdateRatsnestExclusions().

Referenced by DIALOG_CLEANUP_GRAPHICS::doCleanup(), DIALOG_CLEANUP_TRACKS_AND_VIAS::doCleanup(), DIALOG_GLOBAL_DELETION::DoGlobalDeletions(), PCB_EDIT_FRAME::ExportToGenCAD(), PCB_EDIT_FRAME::OnNetlistChanged(), DIALOG_EXCHANGE_FOOTPRINTS::OnOKClicked(), PlaceFootprint(), and PCB_BASE_EDIT_FRAME::PutDataInPreviousState().

◆ config()

APP_SETTINGS_BASE * EDA_BASE_FRAME::config ( ) const
virtualinherited

Returns the settings object used in SaveSettings(), and is overloaded in KICAD_MANAGER_FRAME.

Reimplemented in SYMBOL_EDIT_FRAME, KICAD_MANAGER_FRAME, and FOOTPRINT_EDIT_FRAME.

Definition at line 809 of file eda_base_frame.cpp.

810{
811 // KICAD_MANAGER_FRAME overrides this
812 return Kiface().KifaceSettings();
813}
KIFACE_BASE & Kiface()
Global KIFACE_BASE "get" accessor.
APP_SETTINGS_BASE * KifaceSettings() const
Definition: kiface_base.h:93

References Kiface(), and KIFACE_BASE::KifaceSettings().

Referenced by GERBVIEW_FRAME::ActivateGalCanvas(), ActivateGalCanvas(), CVPCB_MAINFRAME::CVPCB_MAINFRAME(), DIALOG_BOARD_REANNOTATE::DIALOG_BOARD_REANNOTATE(), DIALOG_GRID_SETTINGS::DIALOG_GRID_SETTINGS(), SIM_PLOT_FRAME::doCloseWindow(), FOOTPRINT_WIZARD_FRAME::doCloseWindow(), SCH_BASE_FRAME::eeconfig(), GERBVIEW_FRAME::GERBVIEW_FRAME(), PCB_EDIT_FRAME::GetRotationAngle(), GRID_MENU::GRID_MENU(), COMMON_TOOLS::GridFast1(), COMMON_TOOLS::GridFast2(), GERBVIEW_FRAME::gvconfig(), EDA_DRAW_FRAME::IsGridVisible(), SCH_BASE_FRAME::libeditconfig(), EDA_DRAW_FRAME::OnUpdateSelectGrid(), EDA_DRAW_FRAME::OnUpdateSelectZoom(), PCB_CALCULATOR_FRAME::PCB_CALCULATOR_FRAME(), GERBVIEW_FRAME::Read_EXCELLON_File(), DIALOG_GRID_SETTINGS::RebuildGridSizes(), EDA_BASE_FRAME::SaveSettings(), PCB_BASE_EDIT_FRAME::SetBoard(), EDA_DRAW_FRAME::SetGridVisibility(), CVPCB_MAINFRAME::setupTools(), SCH_EDIT_FRAME::setupTools(), SYMBOL_VIEWER_FRAME::setupTools(), GERBVIEW_FRAME::setupTools(), PL_EDITOR_FRAME::setupTools(), PCB_EDIT_FRAME::setupTools(), SIM_PLOT_FRAME::SIM_PLOT_FRAME(), SYMBOL_VIEWER_FRAME::SYMBOL_VIEWER_FRAME(), DIALOG_GRID_SETTINGS::TransferDataFromWindow(), DIALOG_GRID_SETTINGS::TransferDataToWindow(), GRID_MENU::update(), ZOOM_MENU::update(), EDA_DRAW_FRAME::UpdateGridSelectBox(), EDA_DRAW_FRAME::UpdateZoomSelectBox(), EDA_BASE_FRAME::windowClosing(), and BM2CMP_FRAME::~BM2CMP_FRAME().

◆ ConfigBaseName()

wxString EDA_BASE_FRAME::ConfigBaseName ( )
inlineoverridevirtualinherited

Get the configuration base name.

This is usually the name of the frame set by CTOR, except for frames shown in multiple modes in which case the m_configName must be set to the base name so that a single configuration can be used.

Returns
a base name prefix used in Load/Save settings to build the full name of keys used in configuration.

Reimplemented from TOOLS_HOLDER.

Definition at line 350 of file eda_base_frame.h.

351 {
352 wxString baseCfgName = m_configName.IsEmpty() ? GetName() : m_configName;
353 return baseCfgName;
354 }
wxString m_configName

References EDA_BASE_FRAME::m_configName.

◆ CreateAndShow3D_Frame()

EDA_3D_VIEWER_FRAME * PCB_BASE_FRAME::CreateAndShow3D_Frame ( )

Shows the 3D view frame.

If it does not exist, it is created. If it exists, it is brought to the foreground.

Definition at line 721 of file pcb_base_frame.cpp.

722{
723 EDA_3D_VIEWER_FRAME* draw3DFrame = Get3DViewerFrame();
724
725 if( !draw3DFrame )
726 draw3DFrame = new EDA_3D_VIEWER_FRAME( &Kiway(), this, _( "3D Viewer" ) );
727
728 // Raising the window does not show the window on Windows if iconized. This should work
729 // on any platform.
730 if( draw3DFrame->IsIconized() )
731 draw3DFrame->Iconize( false );
732
733 draw3DFrame->Raise();
734 draw3DFrame->Show( true );
735
736 // Raising the window does not set the focus on Linux. This should work on any platform.
737 if( wxWindow::FindFocus() != draw3DFrame )
738 draw3DFrame->SetFocus();
739
740 // Allocate a slice of time to display the 3D frame
741 // a call to wxSafeYield() should be enough (and better), but on Linux we need
742 // to call wxYield()
743 // otherwise the activity messages are not displayed during the first board loading
744 wxYield();
745
746 // Note, the caller is responsible to load/update the board 3D view.
747 // after frame creation the board is not automatically created.
748
749 return draw3DFrame;
750}
KIWAY & Kiway() const
Return a reference to the KIWAY that this object has an opportunity to participate in.
Definition: kiway_holder.h:53

References _, Get3DViewerFrame(), and KIWAY_HOLDER::Kiway().

Referenced by PCB_VIEWER_TOOLS::Show3DViewer().

◆ CreateInfoBar()

void EDA_BASE_FRAME::CreateInfoBar ( )
inherited

Definition at line 834 of file eda_base_frame.cpp.

835{
836#if defined( __WXOSX_MAC__ )
838#else
839 m_infoBar = new WX_INFOBAR( this, &m_auimgr );
840
841 m_auimgr.AddPane( m_infoBar, EDA_PANE().InfoBar().Name( wxS( "InfoBar" ) ).Top().Layer(1) );
842#endif
843}
Specialization of the wxAuiPaneInfo class for KiCad panels.
virtual wxWindow * GetToolCanvas() const =0
Canvas access.
A modified version of the wxInfoBar class that allows us to:
Definition: wx_infobar.h:75

References TOOLS_HOLDER::GetToolCanvas(), EDA_BASE_FRAME::m_auimgr, and EDA_BASE_FRAME::m_infoBar.

Referenced by SYMBOL_VIEWER_FRAME::SYMBOL_VIEWER_FRAME().

◆ CreateNewFootprint()

FOOTPRINT * PCB_BASE_FRAME::CreateNewFootprint ( const wxString &  aFootprintName,
bool  aQuiet = false 
)

Creates a new footprint, at position 0,0.

The new footprint contains only 2 texts: a reference and a value: Reference = REF** Value = "VAL**" or Footprint name in lib

Note
They are dummy texts, which will be replaced by the actual texts when the footprint is placed on a board and a netlist is read.
Parameters
aFootprintNameis the name of the new footprint in library.
aQuietprevents user dialogs from being shown

Definition at line 1247 of file footprint_libraries_utils.cpp.

1248{
1249 wxString footprintName = aFootprintName;
1250
1251 // Static to store user preference for a session
1252 static int footprintType = 1;
1253 int footprintTranslated = FP_SMD;
1254
1255 // Ask for the new footprint name
1256 if( footprintName.IsEmpty() && !aQuiet )
1257 {
1258 WX_TEXT_ENTRY_DIALOG dlg( this, _( "Enter footprint name:" ), _( "New Footprint" ),
1259 footprintName, _( "Footprint type:" ),
1260 { _( "Through hole" ), _( "SMD" ), _( "Other" ) },
1261 footprintType );
1262 dlg.SetTextValidator( FOOTPRINT_NAME_VALIDATOR( &footprintName ) );
1263
1264 if( dlg.ShowModal() != wxID_OK )
1265 return nullptr; //Aborted by user
1266
1267 footprintType = dlg.GetChoice();
1268
1269 switch( footprintType )
1270 {
1271 case 0: footprintTranslated = FP_THROUGH_HOLE; break;
1272 case 1: footprintTranslated = FP_SMD; break;
1273 default: footprintTranslated = 0; break;
1274 }
1275 }
1276
1277 footprintName.Trim( true );
1278 footprintName.Trim( false );
1279
1280 if( footprintName.IsEmpty() )
1281 {
1282 if( !aQuiet )
1283 DisplayInfoMessage( this, _( "No footprint name defined." ) );
1284
1285 return nullptr;
1286 }
1287
1288 // Creates the new footprint and add it to the head of the linked list of footprints
1289 FOOTPRINT* footprint = new FOOTPRINT( GetBoard() );
1290
1291 // Update its name in lib
1292 footprint->SetFPID( LIB_ID( wxEmptyString, footprintName ) );
1293
1294 footprint->SetAttributes( footprintTranslated );
1295
1296 PCB_LAYER_ID txt_layer;
1297 wxPoint default_pos;
1299
1300 footprint->Reference().SetText( settings.m_DefaultFPTextItems[0].m_Text );
1301 footprint->Reference().SetVisible( settings.m_DefaultFPTextItems[0].m_Visible );
1302 txt_layer = (PCB_LAYER_ID) settings.m_DefaultFPTextItems[0].m_Layer;
1303 footprint->Reference().SetLayer( txt_layer );
1304 default_pos.y -= settings.GetTextSize( txt_layer ).y / 2;
1305 footprint->Reference().SetPosition( default_pos );
1306 default_pos.y += settings.GetTextSize( txt_layer ).y;
1307
1308 footprint->Value().SetText( settings.m_DefaultFPTextItems[1].m_Text );
1309 footprint->Value().SetVisible( settings.m_DefaultFPTextItems[1].m_Visible );
1310 txt_layer = (PCB_LAYER_ID) settings.m_DefaultFPTextItems[1].m_Layer;
1311 footprint->Value().SetLayer( txt_layer );
1312 default_pos.y += settings.GetTextSize( txt_layer ).y / 2;
1313 footprint->Value().SetPosition( default_pos );
1314 default_pos.y += settings.GetTextSize( txt_layer ).y;
1315
1316 for( size_t i = 2; i < settings.m_DefaultFPTextItems.size(); ++i )
1317 {
1318 FP_TEXT* textItem = new FP_TEXT( footprint );
1319 textItem->SetText( settings.m_DefaultFPTextItems[i].m_Text );
1320 textItem->SetVisible( settings.m_DefaultFPTextItems[i].m_Visible );
1321 txt_layer = (PCB_LAYER_ID) settings.m_DefaultFPTextItems[i].m_Layer;
1322 textItem->SetLayer( txt_layer );
1323 default_pos.y += settings.GetTextSize( txt_layer ).y / 2;
1324 textItem->SetPosition( default_pos );
1325 default_pos.y += settings.GetTextSize( txt_layer ).y;
1326 footprint->GraphicalItems().push_back( textItem );
1327 }
1328
1329 if( footprint->GetReference().IsEmpty() )
1330 footprint->SetReference( footprintName );
1331
1332 if( footprint->GetValue().IsEmpty() )
1333 footprint->SetValue( footprintName );
1334
1335 footprint->RunOnChildren(
1336 [&] ( BOARD_ITEM* aChild )
1337 {
1338 if( aChild->Type() == PCB_FP_TEXT_T )
1339 {
1340 FP_TEXT* textItem = static_cast<FP_TEXT*>( aChild );
1341 PCB_LAYER_ID layer = textItem->GetLayer();
1342
1343 textItem->SetTextThickness( settings.GetTextThickness( layer ) );
1344 textItem->SetTextSize( settings.GetTextSize( layer ) );
1345 textItem->SetItalic( settings.GetTextItalic( layer ) );
1346 textItem->SetKeepUpright( settings.GetTextUpright( layer ) );
1347 }
1348 } );
1349
1350 SetMsgPanel( footprint );
1351 return footprint;
1352}
Container for design settings for a BOARD object.
wxSize GetTextSize(PCB_LAYER_ID aLayer) const
Return the default text size from the layer class for the given layer.
std::vector< TEXT_ITEM_INFO > m_DefaultFPTextItems
bool GetTextUpright(PCB_LAYER_ID aLayer) const
int GetTextThickness(PCB_LAYER_ID aLayer) const
Return the default text thickness from the layer class for the given layer.
bool GetTextItalic(PCB_LAYER_ID aLayer) const
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
Definition: board_item.h:58
virtual PCB_LAYER_ID GetLayer() const
Return the primary layer this item is on.
Definition: board_item.h:180
virtual void SetLayer(PCB_LAYER_ID aLayer)
Set the layer this item is on.
Definition: board_item.h:214
KICAD_T Type() const
Returns the type of object.
Definition: eda_item.h:97
virtual void SetVisible(bool aVisible)
Definition: eda_text.cpp:217
void SetTextThickness(int aWidth)
The TextThickness is that set by the user.
Definition: eda_text.cpp:185
void SetKeepUpright(bool aKeepUpright)
Definition: eda_text.cpp:256
void SetTextSize(const VECTOR2I &aNewSize)
Definition: eda_text.cpp:347
virtual void SetText(const wxString &aText)
Definition: eda_text.cpp:163
void SetItalic(bool aItalic)
Definition: eda_text.cpp:201
This class provides a custom wxValidator object for limiting the allowable characters when defining f...
Definition: validators.h:64
void SetFPID(const LIB_ID &aFPID)
Definition: footprint.h:213
void SetAttributes(int aAttributes)
Definition: footprint.h:251
void SetReference(const wxString &aReference)
Definition: footprint.h:528
void SetValue(const wxString &aValue)
Definition: footprint.h:555
FP_TEXT & Value()
read/write accessors:
Definition: footprint.h:567
void RunOnChildren(const std::function< void(BOARD_ITEM *)> &aFunction) const
Invoke a function on all BOARD_ITEMs that belong to the footprint (pads, drawings,...
Definition: footprint.cpp:1379
const wxString & GetValue() const
Definition: footprint.h:547
const wxString & GetReference() const
Definition: footprint.h:519
DRAWINGS & GraphicalItems()
Definition: footprint.h:173
FP_TEXT & Reference()
Definition: footprint.h:568
virtual void SetPosition(const VECTOR2I &aPos) override
Definition: fp_text.h:92
A logical library item identifier and consists of various portions much like a URI.
Definition: lib_id.h:49
virtual BOARD_DESIGN_SETTINGS & GetDesignSettings() const
Returns the BOARD_DESIGN_SETTINGS for the open project.
A KICAD version of wxTextEntryDialog which supports the various improvements/work-arounds from DIALOG...
void SetTextValidator(wxTextValidatorStyle style)
void DisplayInfoMessage(wxWindow *aParent, const wxString &aMessage, const wxString &aExtraInfo)
Display an informational message box with aMessage.
Definition: confirm.cpp:352
@ FP_SMD
Definition: footprint.h:69
@ FP_THROUGH_HOLE
Definition: footprint.h:68
PCB_LAYER_ID
A quick note on layer IDs:
Definition: layer_ids.h:59
@ PCB_FP_TEXT_T
class FP_TEXT, text in a footprint
Definition: typeinfo.h:92

References _, DisplayInfoMessage(), FP_SMD, FP_THROUGH_HOLE, GetBoard(), GetDesignSettings(), BOARD_ITEM::GetLayer(), FOOTPRINT::GetReference(), BOARD_DESIGN_SETTINGS::GetTextItalic(), BOARD_DESIGN_SETTINGS::GetTextSize(), BOARD_DESIGN_SETTINGS::GetTextThickness(), BOARD_DESIGN_SETTINGS::GetTextUpright(), FOOTPRINT::GetValue(), FOOTPRINT::GraphicalItems(), BOARD_DESIGN_SETTINGS::m_DefaultFPTextItems, PCB_FP_TEXT_T, FOOTPRINT::Reference(), FOOTPRINT::RunOnChildren(), FOOTPRINT::SetAttributes(), FOOTPRINT::SetFPID(), EDA_TEXT::SetItalic(), EDA_TEXT::SetKeepUpright(), BOARD_ITEM::SetLayer(), EDA_DRAW_FRAME::SetMsgPanel(), FP_TEXT::SetPosition(), FOOTPRINT::SetReference(), EDA_TEXT::SetText(), EDA_TEXT::SetTextSize(), EDA_TEXT::SetTextThickness(), WX_TEXT_ENTRY_DIALOG::SetTextValidator(), FOOTPRINT::SetValue(), EDA_TEXT::SetVisible(), EDA_ITEM::Type(), and FOOTPRINT::Value().

Referenced by MICROWAVE_TOOL::createBaseFootprint(), MICROWAVE_TOOL::createMicrowaveInductor(), and FOOTPRINT_EDITOR_CONTROL::NewFootprint().

◆ CreateServer()

void KIWAY_PLAYER::CreateServer ( int  service,
bool  local = true 
)
inherited

Definition at line 43 of file eda_dde.cpp.

44{
45 wxIPV4address addr;
46
47 // Set the port number
48 addr.Service( service );
49
50 // Listen on localhost only if requested
51 if( local )
52 addr.Hostname( HOSTNAME );
53
54 if( m_socketServer )
55 {
56 // this helps prevent any events that could come in during deletion
57 m_socketServer->Notify( false );
58 delete m_socketServer;
59 }
60
61 m_socketServer = new wxSocketServer( addr );
62
63 m_socketServer->SetNotify( wxSOCKET_CONNECTION_FLAG );
64 m_socketServer->SetEventHandler( *this, ID_EDA_SOCKET_EVENT_SERV );
65 m_socketServer->Notify( true );
66}
wxSocketServer * m_socketServer
Definition: kiway_player.h:204
static const wxString HOSTNAME(wxT("localhost"))
@ ID_EDA_SOCKET_EVENT_SERV
Definition: id.h:163

References HOSTNAME(), ID_EDA_SOCKET_EVENT_SERV, and KIWAY_PLAYER::m_socketServer.

Referenced by SaveFileAs().

◆ CurrentToolName()

std::string TOOLS_HOLDER::CurrentToolName ( ) const
inherited

Definition at line 110 of file tools_holder.cpp.

111{
112 if( m_toolStack.empty() )
114 else
115 return m_toolStack.back();
116}
static TOOL_ACTION selectionTool
Definition: actions.h:156
std::vector< std::string > m_toolStack
Definition: tools_holder.h:176
const std::string & GetName() const
Return name of the action.
Definition: tool_action.h:101

References TOOL_ACTION::GetName(), TOOLS_HOLDER::m_toolStack, and ACTIONS::selectionTool.

Referenced by TOOLS_HOLDER::ShowChangedLanguage().

◆ Destroy()

◆ DismissModal()

void KIWAY_PLAYER::DismissModal ( bool  aRetVal,
const wxString &  aResult = wxEmptyString 
)
inherited

Definition at line 182 of file kiway_player.cpp.

183{
184 m_modal_ret_val = aRetVal;
185 m_modal_string = aResult;
186
187 if( m_modal_loop )
188 {
189 m_modal_loop->Exit();
190 m_modal_loop = nullptr; // this marks it as dismissed.
191 }
192
193 Show( false );
194}
wxString m_modal_string
Definition: kiway_player.h:201
WX_EVENT_LOOP * m_modal_loop
< Points to nested event_loop. NULL means not modal and dismissed.
Definition: kiway_player.h:199
bool m_modal_ret_val
Definition: kiway_player.h:202

References KIWAY_PLAYER::m_modal_loop, KIWAY_PLAYER::m_modal_ret_val, and KIWAY_PLAYER::m_modal_string.

Referenced by FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), SYMBOL_VIEWER_FRAME::doCloseWindow(), FOOTPRINT_VIEWER_FRAME::doCloseWindow(), FOOTPRINT_WIZARD_FRAME::doCloseWindow(), FOOTPRINT_WIZARD_FRAME::ExportSelectedFootprint(), and SYMBOL_VIEWER_FRAME::FinishModal().

◆ DisplayConstraintsMsg()

void EDA_DRAW_FRAME::DisplayConstraintsMsg ( const wxString &  msg)
inherited

Definition at line 602 of file eda_draw_frame.cpp.

603{
604 SetStatusText( msg, 7 );
605}

Referenced by EDIT_TOOL::doMoveSelection(), and DRAWING_TOOL::UpdateStatusBar().

◆ DisplayGridMsg()

void PCB_BASE_FRAME::DisplayGridMsg ( )
overridevirtual

Display the current grid pane on the status bar.

Reimplemented from EDA_DRAW_FRAME.

Definition at line 820 of file pcb_base_frame.cpp.

821{
822 VECTOR2D gridSize = GetCanvas()->GetGAL()->GetGridSize();
823 wxString line;
824
825 line.Printf( wxT( "grid X %s Y %s" ),
826 MessageTextFromValue( gridSize.x, false ),
827 MessageTextFromValue( gridSize.y, false ) );
828
829 SetStatusText( line, 4 );
830}
KIGFX::GAL * GetGAL() const
Return a pointer to the GAL instance used in the panel.
const VECTOR2D & GetGridSize() const
Return the grid size.
wxString MessageTextFromValue(double aValue, bool aAddUnitLabel=true, EDA_DATA_TYPE aType=EDA_DATA_TYPE::DISTANCE)
A lower-precision version of StringFromValue().

References GetCanvas(), EDA_DRAW_PANEL_GAL::GetGAL(), KIGFX::GAL::GetGridSize(), UNITS_PROVIDER::MessageTextFromValue(), VECTOR2< T >::x, and VECTOR2< T >::y.

Referenced by UpdateStatusBar().

◆ DisplayToolMsg()

void EDA_DRAW_FRAME::DisplayToolMsg ( const wxString &  msg)
overridevirtualinherited

Reimplemented from TOOLS_HOLDER.

Definition at line 596 of file eda_draw_frame.cpp.

597{
598 SetStatusText( msg, 6 );
599}

Referenced by EDIT_TOOL::Duplicate(), and PCB_CONTROL::Paste().

◆ DisplayUnitsMsg()

void EDA_DRAW_FRAME::DisplayUnitsMsg ( )
inherited

Display current unit pane in the status bar.

Definition at line 618 of file eda_draw_frame.cpp.

619{
620 wxString msg;
621
622 switch( GetUserUnits() )
623 {
624 case EDA_UNITS::INCHES: msg = _( "inches" ); break;
625 case EDA_UNITS::MILS: msg = _( "mils" ); break;
626 case EDA_UNITS::MILLIMETRES: msg = _( "mm" ); break;
627 default: msg = _( "Units" ); break;
628 }
629
630 SetStatusText( msg, 5 );
631}
EDA_UNITS GetUserUnits() const

References _, UNITS_PROVIDER::GetUserUnits(), INCHES, MILLIMETRES, and MILS.

Referenced by EDA_DRAW_FRAME::UpdateGridSelectBox(), SCH_BASE_FRAME::UpdateStatusBar(), and EDA_DRAW_FRAME::UpdateStatusBar().

◆ doAutoSave()

bool EDA_BASE_FRAME::doAutoSave ( )
protectedvirtualinherited

This should be overridden by the derived class to handle the auto save feature.

Returns
true if the auto save was successful otherwise false.

Reimplemented in SCH_EDIT_FRAME, and PCB_EDIT_FRAME.

Definition at line 318 of file eda_base_frame.cpp.

319{
320 wxCHECK_MSG( false, true, wxT( "Auto save timer function not overridden. Bad programmer!" ) );
321}

Referenced by EDA_BASE_FRAME::onAutoSaveTimer().

◆ doCloseWindow()

◆ doReCreateMenuBar()

void PCB_BASE_FRAME::doReCreateMenuBar ( )
overrideprotectedvirtual

Reimplemented from EDA_DRAW_FRAME.

Reimplemented in FOOTPRINT_EDIT_FRAME, FOOTPRINT_VIEWER_FRAME, and PCB_EDIT_FRAME.

Definition at line 706 of file pcb_base_frame.cpp.

707{
708}

◆ DoWithAcceptedFiles()

void EDA_BASE_FRAME::DoWithAcceptedFiles ( )
protectedvirtualinherited

Execute action on accepted dropped file.

Called in OnDropFiles and should be populated with the action to execute in inherited classes.

Reimplemented in GERBVIEW_FRAME, KICAD_MANAGER_FRAME, and PL_EDITOR_FRAME.

Definition at line 1178 of file eda_base_frame.cpp.

1179{
1180 for( const wxFileName& file : m_AcceptedFiles )
1181 {
1182 wxString fn = file.GetFullPath();
1183 m_toolManager->RunAction( *m_acceptedExts.at( file.GetExt() ), true, &fn );
1184 }
1185}
std::vector< wxFileName > m_AcceptedFiles
std::map< const wxString, TOOL_ACTION * > m_acceptedExts
Associates files extensions with action to execute.
bool RunAction(const std::string &aActionName, bool aNow=false, T aParam=NULL)
Run the specified action.
Definition: tool_manager.h:142

References EDA_BASE_FRAME::m_acceptedExts, EDA_BASE_FRAME::m_AcceptedFiles, TOOLS_HOLDER::m_toolManager, and TOOL_MANAGER::RunAction().

Referenced by EDA_BASE_FRAME::OnDropFiles().

◆ ensureWindowIsOnScreen()

void EDA_BASE_FRAME::ensureWindowIsOnScreen ( )
protectedinherited

Definition at line 659 of file eda_base_frame.cpp.

660{
661 wxDisplay display( wxDisplay::GetFromWindow( this ) );
662 wxRect clientSize = display.GetClientArea();
663 wxPoint pos = GetPosition();
664 wxSize size = GetWindowSize();
665
666 wxLogTrace( traceDisplayLocation,
667 wxS( "ensureWindowIsOnScreen: clientArea (%d, %d) w %d h %d" ), clientSize.x, clientSize.y,
668 clientSize.width, clientSize.height );
669
670 if( pos.y < clientSize.y )
671 {
672 wxLogTrace( traceDisplayLocation,
673 wxS( "ensureWindowIsOnScreen: y pos %d below minimum, setting to %d" ), pos.y,
674 clientSize.y );
675 pos.y = clientSize.y;
676 }
677
678 if( pos.x < clientSize.x )
679 {
680 wxLogTrace( traceDisplayLocation,
681 wxS( "ensureWindowIsOnScreen: x pos %d is off the client rect, setting to %d" ), pos.x,
682 clientSize.x );
683 pos.x = clientSize.x;
684 }
685
686 if( pos.x + size.x - clientSize.x > clientSize.width )
687 {
688 int newWidth = clientSize.width - ( pos.x - clientSize.x );
689 wxLogTrace( traceDisplayLocation,
690 wxS( "ensureWindowIsOnScreen: effective width %d above available %d, setting to %d" ),
691 pos.x + size.x, clientSize.width, newWidth );
692 size.x = newWidth;
693 }
694
695 if( pos.y + size.y - clientSize.y > clientSize.height )
696 {
697 int newHeight = clientSize.height - ( pos.y - clientSize.y );
698 wxLogTrace( traceDisplayLocation,
699 wxS( "ensureWindowIsOnScreen: effective height %d above available %d, setting to %d" ),
700 pos.y + size.y, clientSize.height, newHeight );
701 size.y = newHeight;
702 }
703
704 wxLogTrace( traceDisplayLocation, wxS( "Updating window position (%d, %d) with size (%d, %d)" ),
705 pos.x, pos.y, size.x, size.y );
706
707 SetSize( pos.x, pos.y, size.x, size.y );
708}
wxSize GetWindowSize()
Get the undecorated window size that can be used for restoring the window size.
const wxChar *const traceDisplayLocation
Flag to enable debug output of display positioning logic.

References EDA_BASE_FRAME::GetWindowSize(), and traceDisplayLocation.

Referenced by EDA_BASE_FRAME::OnSize().

◆ EraseMsgBox()

void EDA_DRAW_FRAME::EraseMsgBox ( )
inherited

◆ ExecuteRemoteCommand()

virtual void KIWAY_PLAYER::ExecuteRemoteCommand ( const char *  cmdline)
inlinevirtualinherited

Execute a remote command sent via socket (to port KICAD_PCB_PORT_SERVICE_NUMBER, currently 4242).

Subclasses should override to implement actual command handlers.

Reimplemented in SCH_EDIT_FRAME, and PCB_EDIT_FRAME.

Definition at line 182 of file kiway_player.h.

182{}

Referenced by KIWAY_PLAYER::OnSockRequest().

◆ findDialogs()

std::vector< wxWindow * > EDA_DRAW_FRAME::findDialogs ( )
protectedinherited

Definition at line 925 of file eda_draw_frame.cpp.

926{
927 std::vector<wxWindow*> dialogs;
928
929 for( wxWindow* window : GetChildren() )
930 {
931 if( dynamic_cast<DIALOG_SHIM*>( window ) )
932 dialogs.push_back( window );
933 }
934
935 return dialogs;
936}
Dialog helper object to sit in the inheritance tree between wxDialog and any class written by wxFormB...
Definition: dialog_shim.h:83

Referenced by FocusOnItems(), and EDA_DRAW_FRAME::FocusOnLocation().

◆ findQuasiModalDialog()

wxWindow * EDA_BASE_FRAME::findQuasiModalDialog ( )
privateinherited

Definition at line 169 of file eda_base_frame.cpp.

170{
171 for( wxWindow* iter : GetChildren() )
172 {
173 DIALOG_SHIM* dlg = dynamic_cast<DIALOG_SHIM*>( iter );
174
175 if( dlg && dlg->IsQuasiModal() )
176 return dlg;
177 }
178
179 // FIXME: CvPcb is currently implemented on top of KIWAY_PLAYER rather than DIALOG_SHIM,
180 // so we have to look for it separately.
181 if( m_ident == FRAME_SCH )
182 {
183 wxWindow* cvpcb = wxWindow::FindWindowByName( wxS( "CvpcbFrame" ) );
184
185 if( cvpcb )
186 return cvpcb;
187 }
188
189 return nullptr;
190}
bool IsQuasiModal() const
Definition: dialog_shim.h:106
@ FRAME_SCH
Definition: frame_type.h:34

References FRAME_SCH, DIALOG_SHIM::IsQuasiModal(), and EDA_BASE_FRAME::m_ident.

Referenced by EDA_BASE_FRAME::ProcessEvent(), and EDA_BASE_FRAME::windowClosing().

◆ FinishAUIInitialization()

void EDA_BASE_FRAME::FinishAUIInitialization ( )
inherited

Definition at line 846 of file eda_base_frame.cpp.

847{
848#if defined( __WXOSX_MAC__ )
849 m_auimgr.Update();
850#else
851 // Call Update() to fix all pane default sizes, especially the "InfoBar" pane before
852 // hiding it.
853 m_auimgr.Update();
854
855 // We don't want the infobar displayed right away
856 m_auimgr.GetPane( wxS( "InfoBar" ) ).Hide();
857 m_auimgr.Update();
858#endif
859}

References EDA_BASE_FRAME::m_auimgr.

Referenced by SYMBOL_VIEWER_FRAME::SYMBOL_VIEWER_FRAME().

◆ FocusOnItem()

◆ FocusOnItems()

void PCB_BASE_FRAME::FocusOnItems ( std::vector< BOARD_ITEM * >  aItems,
PCB_LAYER_ID  aLayer = UNDEFINED_LAYER 
)
Todo:
The Boost entropy exception does not exist prior to 1.67. Once the minimum Boost version is raise to 1.67 or greater, this version check can be removed.

Definition at line 307 of file pcb_base_frame.cpp.

308{
309 static std::vector<KIID> lastBrightenedItemIDs;
310
311 BOARD_ITEM* lastItem = nullptr;
312
313 for( KIID lastBrightenedItemID : lastBrightenedItemIDs )
314 {
317 #if BOOST_VERSION >= 106700
318 try
319 {
320 lastItem = GetBoard()->GetItem( lastBrightenedItemID );
321 }
322 catch( const boost::uuids::entropy_error& )
323 {
324 wxLogError( wxT( "A Boost UUID entropy exception was thrown in %s:%s." ),
325 __FILE__, __FUNCTION__ );
326 }
327 #else
328 lastItem = GetBoard()->GetItem( lastBrightenedItemID );
329 #endif
330
331 if( lastItem && lastItem != DELETED_BOARD_ITEM::GetInstance() )
332 {
333 lastItem->ClearBrightened();
334
335 if( lastItem->Type() == PCB_FOOTPRINT_T )
336 {
337 static_cast<FOOTPRINT*>( lastItem )->RunOnChildren(
338 [&]( BOARD_ITEM* child )
339 {
340 child->ClearBrightened();
341 } );
342 }
343 else if( lastItem->Type() == PCB_GROUP_T )
344 {
345 static_cast<PCB_GROUP*>( lastItem )->RunOnChildren(
346 [&]( BOARD_ITEM* child )
347 {
348 child->ClearBrightened();
349 } );
350 }
351
352 GetCanvas()->GetView()->Update( lastItem );
353 lastBrightenedItemID = niluuid;
354 GetCanvas()->Refresh();
355 }
356 }
357
358 lastBrightenedItemIDs.clear();
359
360 if( aItems.empty() )
361 return;
362
363 VECTOR2I focusPt;
364 KIGFX::VIEW* view = GetCanvas()->GetView();
365 SHAPE_POLY_SET viewportPoly( view->GetViewport() );
366
367 for( wxWindow* dialog : findDialogs() )
368 {
369 wxPoint dialogPos = GetCanvas()->ScreenToClient( dialog->GetScreenPosition() );
370 SHAPE_POLY_SET dialogPoly( BOX2D( view->ToWorld( dialogPos, true ),
371 view->ToWorld( dialog->GetSize(), false ) ) );
372
373 try
374 {
375 viewportPoly.BooleanSubtract( dialogPoly, SHAPE_POLY_SET::PM_FAST );
376 }
377 catch( const ClipperLib::clipperException& exc )
378 {
379 // This may be overkill and could be an assertion but we are more likely to
380 // find any clipper errors this way.
381 wxLogError( wxT( "Clipper library exception '%s' occurred." ), exc.what() );
382 }
383 }
384
385 SHAPE_POLY_SET itemPoly, clippedPoly;
386
387 for( BOARD_ITEM* item : aItems )
388 {
389 if( item && item != DELETED_BOARD_ITEM::GetInstance() )
390 {
391 item->SetBrightened();
392
393 if( item->Type() == PCB_FOOTPRINT_T )
394 {
395 static_cast<FOOTPRINT*>( item )->RunOnChildren(
396 [&]( BOARD_ITEM* child )
397 {
398 child->SetBrightened();
399 });
400 }
401 else if( item->Type() == PCB_GROUP_T )
402 {
403 static_cast<PCB_GROUP*>( item )->RunOnChildren(
404 [&]( BOARD_ITEM* child )
405 {
406 child->SetBrightened();
407 });
408 }
409
410 GetCanvas()->GetView()->Update( item );
411 lastBrightenedItemIDs.push_back( item->m_Uuid );
412
413 // Focus on the object's location. Prefer a visible part of the object to its anchor
414 // in order to keep from scrolling around.
415
416 focusPt = item->GetPosition();
417
418 if( aLayer == UNDEFINED_LAYER )
419 aLayer = item->GetLayerSet().Seq()[0];
420
421 switch( item->Type() )
422 {
423 case PCB_FOOTPRINT_T:
424 try
425 {
426 itemPoly = static_cast<FOOTPRINT*>( item )->GetBoundingHull();
427 }
428 catch( const ClipperLib::clipperException& exc )
429 {
430 // This may be overkill and could be an assertion but we are more likely to
431 // find any clipper errors this way.
432 wxLogError( wxT( "Clipper library exception '%s' occurred." ), exc.what() );
433 }
434
435 break;
436
437 case PCB_PAD_T:
438 case PCB_MARKER_T:
439 case PCB_VIA_T:
440 FocusOnLocation( item->GetFocusPosition() );
441 GetCanvas()->Refresh();
442 return;
443
444 case PCB_SHAPE_T:
445 case PCB_TEXT_T:
446 case PCB_TEXTBOX_T:
447 case PCB_FP_TEXT_T:
448 case PCB_FP_TEXTBOX_T:
449 case PCB_FP_SHAPE_T:
450 case PCB_FP_ZONE_T:
451 case PCB_TRACE_T:
452 case PCB_ARC_T:
454 case PCB_DIM_LEADER_T:
455 case PCB_DIM_CENTER_T:
456 case PCB_DIM_RADIAL_T:
463 item->TransformShapeToPolygon( itemPoly, aLayer, 0, pcbIUScale.mmToIU( 0.1 ),
464 ERROR_INSIDE );
465 break;
466
467 case PCB_ZONE_T:
468 {
469 ZONE* zone = static_cast<ZONE*>( item );
470 #if 0
471 // Using the filled area shapes to find a Focus point can give good results, but
472 // unfortunately the calculations are highly time consuming, even for not very
473 // large areas (can be easily a few minutes for large areas).
474 // so we used only the zone outline that usually do not have too many vertices.
475 zone->TransformShapeToPolygon( itemPoly, aLayer, 0, pcbIUScale.mmToIU( 0.1 ),
476 ERROR_INSIDE );
477
478 if( itemPoly.IsEmpty() )
479 itemPoly = *zone->Outline();
480 #else
481 // much faster calculation time when using only the zone outlines
482 itemPoly = *zone->Outline();
483 #endif
484
485 break;
486 }
487
488 default:
489 {
490 BOX2I item_bbox = item->GetBoundingBox();
491 itemPoly.NewOutline();
492 itemPoly.Append( item_bbox.GetOrigin() );
493 itemPoly.Append( item_bbox.GetOrigin() + VECTOR2I( item_bbox.GetWidth(), 0 ) );
494 itemPoly.Append( item_bbox.GetOrigin() + VECTOR2I( 0, item_bbox.GetHeight() ) );
495 itemPoly.Append( item_bbox.GetOrigin() + VECTOR2I( item_bbox.GetWidth(),
496 item_bbox.GetHeight() ) );
497 break;
498 }
499 }
500
501 try
502 {
503 clippedPoly.BooleanIntersection( itemPoly, viewportPoly, SHAPE_POLY_SET::PM_FAST );
504 }
505 catch( const ClipperLib::clipperException& exc )
506 {
507 // This may be overkill and could be an assertion but we are more likely to
508 // find any clipper errors this way.
509 wxLogError( wxT( "Clipper library exception '%s' occurred." ), exc.what() );
510 }
511
512 if( !clippedPoly.IsEmpty() )
513 itemPoly = clippedPoly;
514 }
515 }
516
517 /*
518 * Perform a step-wise deflate to find the visual-center-of-mass
519 */
520
521 BOX2I bbox = itemPoly.BBox();
522 int step = std::min( bbox.GetWidth(), bbox.GetHeight() ) / 10;
523
524 while( !itemPoly.IsEmpty() )
525 {
526 focusPt = itemPoly.BBox().Centre();
527
528 try
529 {
531 }
532 catch( const ClipperLib::clipperException& exc )
533 {
534 // This may be overkill and could be an assertion but we are more likely to
535 // find any clipper errors this way.
536 wxLogError( wxT( "Clipper library exception '%s' occurred." ), exc.what() );
537 }
538 }
539
540 FocusOnLocation( focusPt );
541
542 GetCanvas()->Refresh();
543}
BOX2< VECTOR2D > BOX2D
Definition: box2.h:848
BOARD_ITEM * GetItem(const KIID &aID) const
Definition: board.cpp:997
const Vec & GetOrigin() const
Definition: box2.h:183
coord_type GetHeight() const
Definition: box2.h:188
coord_type GetWidth() const
Definition: box2.h:187
Vec Centre() const
Definition: box2.h:70
static DELETED_BOARD_ITEM * GetInstance()
Definition: board_item.h:368
void FocusOnLocation(const VECTOR2I &aPos)
Useful to focus on a particular location, in find functions.
std::vector< wxWindow * > findDialogs()
virtual void Refresh(bool aEraseBackground=true, const wxRect *aRect=nullptr) override
Update the board display after modifying it by a python script (note: it is automatically called by a...
void ClearBrightened()
Definition: eda_item.h:119
void SetBrightened()
Definition: eda_item.h:116
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...
Definition: pcb_view.cpp:92
BOX2D GetViewport() const
Return the current viewport visible area rectangle.
Definition: view.cpp:511
VECTOR2D ToWorld(const VECTOR2D &aCoord, bool aAbsolute=true) const
Converts a screen space point/vector to a point/vector in world space coordinates.
Definition: view.cpp:448
Definition: kiid.h:48
A set of BOARD_ITEMs (i.e., without duplicates).
Definition: pcb_group.h:51
Represent a set of closed polygons.
@ CHAMFER_ACUTE_CORNERS
Acute angles are chamfered.
bool IsEmpty() const
void Deflate(int aAmount, int aCircleSegmentsCount, CORNER_STRATEGY aCornerStrategy=ROUND_ALL_CORNERS)
void BooleanIntersection(const SHAPE_POLY_SET &b, POLYGON_MODE aFastMode)
Perform boolean polyset union between a and b, store the result in it self For aFastMode meaning,...
int Append(int x, int y, int aOutline=-1, int aHole=-1, bool aAllowDuplication=false)
Add a new vertex to the contour indexed by aOutline and aHole (defaults to the outline of the last po...
int NewOutline()
Creates a new hole in a given outline.
const BOX2I BBox(int aClearance=0) const override
Compute a bounding box of the shape, with a margin of aClearance a collision.
Handle a list of polygons defining a copper zone.
Definition: zone.h:57
SHAPE_POLY_SET * Outline()
Definition: zone.h:312
void TransformShapeToPolygon(SHAPE_POLY_SET &aBuffer, PCB_LAYER_ID aLayer, int aClearance, int aError, ERROR_LOC aErrorLoc, bool ignoreLineWidth=false) const override
Convert the zone shape to a closed polygon Used in filling zones calculations Circles and arcs are ap...
Definition: zone.cpp:1320
@ ERROR_INSIDE
KIID niluuid(0)
@ UNDEFINED_LAYER
Definition: layer_ids.h:60
constexpr int mmToIU(double mm) const
Definition: base_units.h:89
@ PCB_FP_DIM_ALIGNED_T
class PCB_DIM_ALIGNED, a linear dimension (graphic item)
Definition: typeinfo.h:95
@ PCB_SHAPE_T
class PCB_SHAPE, a segment not on copper layers
Definition: typeinfo.h:88
@ PCB_DIM_ORTHOGONAL_T
class PCB_DIM_ORTHOGONAL, a linear dimension constrained to x/y
Definition: typeinfo.h:110
@ PCB_FP_SHAPE_T
class FP_SHAPE, a footprint edge
Definition: typeinfo.h:94
@ PCB_DIM_LEADER_T
class PCB_DIM_LEADER, a leader dimension (graphic item)
Definition: typeinfo.h:107
@ PCB_VIA_T
class PCB_VIA, a via (like a track segment on a copper layer)
Definition: typeinfo.h:102
@ PCB_FP_TEXTBOX_T
class FP_TEXTBOX, wrapped text in a footprint
Definition: typeinfo.h:93
@ PCB_DIM_CENTER_T
class PCB_DIM_CENTER, a center point marking (graphic item)
Definition: typeinfo.h:108
@ PCB_GROUP_T
class PCB_GROUP, a set of BOARD_ITEMs
Definition: typeinfo.h:115
@ PCB_TEXTBOX_T
class PCB_TEXTBOX, wrapped text on a layer
Definition: typeinfo.h:91
@ PCB_ZONE_T
class ZONE, a copper pour area
Definition: typeinfo.h:112
@ PCB_TEXT_T
class PCB_TEXT, text on a layer
Definition: typeinfo.h:90
@ PCB_FP_DIM_CENTER_T
class PCB_DIM_CENTER, a center point marking (graphic item)
Definition: typeinfo.h:97
@ PCB_MARKER_T
class PCB_MARKER, a marker used to show something
Definition: typeinfo.h:104
@ PCB_FP_DIM_ORTHOGONAL_T
class PCB_DIM_ORTHOGONAL, a linear dimension constrained to x/y
Definition: typeinfo.h:99
@ PCB_FP_DIM_LEADER_T
class PCB_DIM_LEADER, a leader dimension (graphic item)
Definition: typeinfo.h:96
@ PCB_FOOTPRINT_T
class FOOTPRINT, a footprint
Definition: typeinfo.h:86
@ PCB_DIM_ALIGNED_T
class PCB_DIM_ALIGNED, a linear dimension (graphic item)
Definition: typeinfo.h:106
@ PCB_FP_ZONE_T
class ZONE, managed by a footprint
Definition: typeinfo.h:100
@ PCB_FP_DIM_RADIAL_T
class PCB_DIM_RADIAL, a radius or diameter dimension
Definition: typeinfo.h:98
@ PCB_PAD_T
class PAD, a pad in a footprint
Definition: typeinfo.h:87
@ PCB_ARC_T
class PCB_ARC, an arc track segment on a copper layer
Definition: typeinfo.h:103
@ PCB_TRACE_T
class PCB_TRACK, a track segment (segment on a copper layer)
Definition: typeinfo.h:101
@ PCB_DIM_RADIAL_T
class PCB_DIM_RADIAL, a radius or diameter dimension
Definition: typeinfo.h:109
VECTOR2< int > VECTOR2I
Definition: vector2d.h:618

References SHAPE_POLY_SET::Append(), SHAPE_POLY_SET::BBox(), SHAPE_POLY_SET::BooleanIntersection(), SHAPE_POLY_SET::BooleanSubtract(), BOX2< Vec >::Centre(), SHAPE_POLY_SET::CHAMFER_ACUTE_CORNERS, EDA_ITEM::ClearBrightened(), SHAPE_POLY_SET::Deflate(), ERROR_INSIDE, EDA_DRAW_FRAME::findDialogs(), EDA_DRAW_FRAME::FocusOnLocation(), GetBoard(), GetCanvas(), BOX2< Vec >::GetHeight(), DELETED_BOARD_ITEM::GetInstance(), BOARD::GetItem(), BOX2< Vec >::GetOrigin(), PCB_DRAW_PANEL_GAL::GetView(), KIGFX::VIEW::GetViewport(), BOX2< Vec >::GetWidth(), SHAPE_POLY_SET::IsEmpty(), EDA_IU_SCALE::mmToIU(), SHAPE_POLY_SET::NewOutline(), niluuid, ZONE::Outline(), PCB_ARC_T, PCB_DIM_ALIGNED_T, PCB_DIM_CENTER_T, PCB_DIM_LEADER_T, PCB_DIM_ORTHOGONAL_T, PCB_DIM_RADIAL_T, PCB_FOOTPRINT_T, PCB_FP_DIM_ALIGNED_T, PCB_FP_DIM_CENTER_T, PCB_FP_DIM_LEADER_T, PCB_FP_DIM_ORTHOGONAL_T, PCB_FP_DIM_RADIAL_T, PCB_FP_SHAPE_T, PCB_FP_TEXT_T, PCB_FP_TEXTBOX_T, PCB_FP_ZONE_T, PCB_GROUP_T, PCB_MARKER_T, PCB_PAD_T, PCB_SHAPE_T, PCB_TEXT_T, PCB_TEXTBOX_T, PCB_TRACE_T, PCB_VIA_T, PCB_ZONE_T, pcbIUScale, SHAPE_POLY_SET::PM_FAST, EDA_DRAW_PANEL_GAL::Refresh(), EDA_ITEM::SetBrightened(), KIGFX::VIEW::ToWorld(), ZONE::TransformShapeToPolygon(), EDA_ITEM::Type(), UNDEFINED_LAYER, and KIGFX::PCB_VIEW::Update().

Referenced by FocusOnItem(), and DIALOG_DRC::OnDRCItemSelected().

◆ FocusOnLocation()

void EDA_DRAW_FRAME::FocusOnLocation ( const VECTOR2I aPos)
inherited

Useful to focus on a particular location, in find functions.

Move the graphic cursor (crosshair cursor) at a given coordinate and reframes the drawing if the requested point is out of view or if center on location is requested.

Parameters
aPosis the point to go to.

Definition at line 939 of file eda_draw_frame.cpp.

940{
941 bool centerView = false;
943
944 // Center if we're off the current view, or within 10% of its edge
945 r.Inflate( - (int) r.GetWidth() / 10 );
946
947 if( !r.Contains( aPos ) )
948 centerView = true;
949
950 std::vector<BOX2D> dialogScreenRects;
951
952 for( wxWindow* dialog : findDialogs() )
953 {
954 dialogScreenRects.emplace_back( GetCanvas()->ScreenToClient( dialog->GetScreenPosition() ),
955 dialog->GetSize() );
956 }
957
958 // Center if we're behind an obscuring dialog, or within 10% of its edge
959 for( BOX2D rect : dialogScreenRects )
960 {
961 rect.Inflate( rect.GetWidth() / 10 );
962
963 if( rect.Contains( GetCanvas()->GetView()->ToScreen( aPos ) ) )
964 centerView = true;
965 }
966
967 if( centerView )
968 {
969 try
970 {
971 GetCanvas()->GetView()->SetCenter( aPos, dialogScreenRects );
972 }
973 catch( const ClipperLib::clipperException& exc )
974 {
975 wxLogError( wxT( "Clipper library error '%s' occurred centering object." ),
976 exc.what() );
977 }
978 }
979
981}
bool Contains(const Vec &aPoint) const
Definition: box2.h:141
BOX2< Vec > & Inflate(coord_type dx, coord_type dy)
Inflates the rectangle horizontally by dx and vertically by dy.
Definition: box2.h:506
virtual EDA_DRAW_PANEL_GAL * GetCanvas() const
Return a pointer to GAL-based canvas of given EDA draw frame.
virtual void SetCrossHairCursorPosition(const VECTOR2D &aPosition, bool aWarpView=true)=0
Move the graphic crosshair cursor to the requested position expressed in world coordinates.
void SetCenter(const VECTOR2D &aCenter)
Set the center point of the VIEW (i.e.
Definition: view.cpp:577

References BOX2< Vec >::Contains(), EDA_DRAW_FRAME::findDialogs(), EDA_DRAW_FRAME::GetCanvas(), EDA_DRAW_PANEL_GAL::GetView(), EDA_DRAW_PANEL_GAL::GetViewControls(), KIGFX::VIEW::GetViewport(), BOX2< Vec >::GetWidth(), BOX2< Vec >::Inflate(), KIGFX::VIEW::SetCenter(), and KIGFX::VIEW_CONTROLS::SetCrossHairCursorPosition().

Referenced by PCB_SELECTION_TOOL::doSyncSelection(), PCB_EDIT_FRAME::ExecuteRemoteCommand(), PCB_SELECTION_TOOL::FindItem(), SCH_FIND_REPLACE_TOOL::FindNext(), SCH_EDIT_FRAME::FocusOnItem(), FocusOnItems(), DIALOG_DRC::OnDRCItemSelected(), and EE_SELECTION_TOOL::SyncSelection().

◆ Get3DViewerFrame()

EDA_3D_VIEWER_FRAME * PCB_BASE_FRAME::Get3DViewerFrame ( )
Returns
a reference to the child 3D viewer frame, when exists, or NULL

Definition at line 142 of file pcb_base_frame.cpp.

143{
144 wxWindow* frame = FindWindowByName( QUALIFIED_VIEWER3D_FRAMENAME( this ) );
145 return dynamic_cast<EDA_3D_VIEWER_FRAME*>( frame );
146}
#define QUALIFIED_VIEWER3D_FRAMENAME(parent)

References QUALIFIED_VIEWER3D_FRAMENAME.

Referenced by canCloseWindow(), CommonSettingsChanged(), CreateAndShow3D_Frame(), PCB_EDIT_FRAME::OpenProjectFiles(), Update3DView(), and FOOTPRINT_WIZARD_FRAME::~FOOTPRINT_WIZARD_FRAME().

◆ GetAboutTitle()

const wxString & EDA_BASE_FRAME::GetAboutTitle ( ) const
inlineinherited

Definition at line 506 of file eda_base_frame.h.

506{ return wxGetTranslation( m_aboutTitle ); }
wxString m_aboutTitle

References EDA_BASE_FRAME::m_aboutTitle.

Referenced by DIALOG_ABOUT::DIALOG_ABOUT(), PGM_SINGLE_TOP::OnPgmInit(), and PGM_KICAD::OnPgmInit().

◆ GetActiveLayer()

virtual PCB_LAYER_ID PCB_BASE_FRAME::GetActiveLayer ( ) const
inlinevirtual

Definition at line 357 of file pcb_base_frame.h.

357{ return GetScreen()->m_Active_Layer; }
PCB_SCREEN * GetScreen() const override
Return a pointer to a BASE_SCREEN or one of its derivatives.
PCB_LAYER_ID m_Active_Layer
Definition: pcb_screen.h:42

References GetScreen(), and PCB_SCREEN::m_Active_Layer.

Referenced by DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::buildFilterLists(), CONVERT_TOOL::CreatePolys(), APPEARANCE_CONTROLS::doApplyLayerPreset(), DRAWING_TOOL::drawArc(), DRAWING_TOOL::DrawDimension(), DRAWING_TOOL::drawShape(), DRAWING_TOOL::DrawVia(), DRAWING_TOOL::DrawZone(), PCB_SELECTION_TOOL::GetActiveLayer(), GetCollectorsGuide(), PCB_SELECTION_TOOL::GuessSelectionCandidates(), BOARD_INSPECTION_TOOL::InspectClearance(), BOARD_INSPECTION_TOOL::InspectDRCError(), PCB_CONTROL::LayerAlphaDec(), PCB_CONTROL::LayerAlphaInc(), PCB_CONTROL::LayerNext(), PCB_CONTROL::LayerPrev(), PCB_CONTROL::LayerToggle(), ROUTER_TOOL::MainLoop(), DIALOG_FOOTPRINT_PROPERTIES::OnAddField(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::OnAddField(), APPEARANCE_CONTROLS::OnLayerChanged(), APPEARANCE_CONTROLS::OnLayerContextMenu(), DIALOG_CLEANUP_GRAPHICS::OnSelectItem(), PCB_DRAW_PANEL_GAL::OnShow(), FOOTPRINT_EDIT_FRAME::OnUpdateLayerSelectBox(), PCB_EDIT_FRAME::OnUpdateLayerSelectBox(), LENGTH_TUNER_TOOL::performTuning(), DRAWING_TOOL::PlaceCharacteristics(), DRAWING_TOOL::PlaceImage(), DRAWING_TOOL::PlaceStackup(), DRAWING_TOOL::PlaceText(), ROUTER_TOOL::prepareInteractive(), ROUTER_TOOL::RouteSelected(), PCB_EDIT_FRAME::SaveProjectSettings(), PCB_EDIT_FRAME::SetActiveLayer(), SetDisplayOptions(), PCB_BASE_EDIT_FRAME::ShowGraphicItemPropertiesDialog(), SwitchLayer(), PCB_EDIT_FRAME::SwitchLayer(), ROUTER_TOOL::switchLayerOnViaPlacement(), PCB_CONTROL::UpdateMessagePanel(), and PCB_EDIT_FRAME::UpdateUserInterface().

◆ GetAutoSaveFilePrefix()

static wxString EDA_BASE_FRAME::GetAutoSaveFilePrefix ( )
inlinestaticprotectedinherited

◆ GetAutoSaveInterval()

int EDA_BASE_FRAME::GetAutoSaveInterval ( ) const
inherited

Definition at line 298 of file eda_base_frame.cpp.

299{
300 return Pgm().GetCommonSettings()->m_System.autosave_interval;
301}

References Pgm().

Referenced by EDA_DRAW_FRAME::CommonSettingsChanged(), EDA_BASE_FRAME::onAutoSaveTimer(), and EDA_BASE_FRAME::ProcessEvent().

◆ GetAuxOrigin()

const VECTOR2I & PCB_BASE_FRAME::GetAuxOrigin ( ) const

Definition at line 605 of file pcb_base_frame.cpp.

606{
608}
const VECTOR2I & GetAuxOrigin()
BOARD_DESIGN_SETTINGS & GetDesignSettings() const
Definition: board.cpp:682

References BOARD_DESIGN_SETTINGS::GetAuxOrigin(), BOARD::GetDesignSettings(), and m_pcb.

Referenced by GetUserOrigin().

◆ GetBoard()

BOARD * PCB_BASE_FRAME::GetBoard ( ) const
inline

Definition at line 191 of file pcb_base_frame.h.

192 {
193 wxASSERT( m_pcb );
194 return m_pcb;
195 }

References m_pcb.

Referenced by AddFootprintToBoard(), FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), GRID_CELL_LAYER_SELECTOR::BeginEdit(), DIALOG_BOARD_REANNOTATE::BuildFootprintList(), FOOTPRINT_EDIT_FRAME::CanCloseFPFromBoard(), PCB_EDIT_FRAME::canCloseWindow(), FOOTPRINT_EDIT_FRAME::canCloseWindow(), FOOTPRINT_EDIT_FRAME::Clear_Pcb(), PCB_EDIT_FRAME::Clear_Pcb(), FOOTPRINT_EDIT_FRAME::ClearModify(), FOOTPRINT_VIEWER_FRAME::ClickOnFootprintList(), FOOTPRINT_EDIT_FRAME::CommonSettingsChanged(), Compile_Ratsnest(), DIALOG_GEN_FOOTPRINT_POSITION::CreateAsciiFiles(), DIALOG_GEN_FOOTPRINT_POSITION::CreateGerberFiles(), CreateHeaderInfoData(), CreateNewFootprint(), ZONE_CREATE_HELPER::createNewZone(), PCB_PROPERTIES_PANEL::createPGProperty(), CONVERT_TOOL::CreatePolys(), DIALOG_PRINT_PCBNEW::createPrintout(), FOOTPRINT_EDITOR_CONTROL::CutCopyFootprint(), DIALOG_FOOTPRINT_CHECKER::deleteAllMarkers(), DIALOG_DRC::deleteAllMarkers(), PCB_CONTROL::DeleteItemCursor(), DIALOG_BOARD_SETUP::DIALOG_BOARD_SETUP(), DIALOG_BOARD_STATISTICS::DIALOG_BOARD_STATISTICS(), DIALOG_COPPER_ZONE::DIALOG_COPPER_ZONE(), DIALOG_DIMENSION_PROPERTIES::DIALOG_DIMENSION_PROPERTIES(), DIALOG_DRC::DIALOG_DRC(), DIALOG_EXPORT_STEP::DIALOG_EXPORT_STEP(), DIALOG_FOOTPRINT_CHECKER::DIALOG_FOOTPRINT_CHECKER(), DIALOG_GENDRILL::DIALOG_GENDRILL(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS(), DIALOG_IMPORT_GFX::DIALOG_IMPORT_GFX(), DIALOG_NET_INSPECTOR::DIALOG_NET_INSPECTOR(), DIALOG_PAD_PROPERTIES::DIALOG_PAD_PROPERTIES(), DIALOG_PLOT::DIALOG_PLOT(), DIALOG_RULE_AREA_PROPERTIES::DIALOG_RULE_AREA_PROPERTIES(), DIALOG_SWAP_LAYERS::DIALOG_SWAP_LAYERS(), DIALOG_TEXTBOX_PROPERTIES::DIALOG_TEXTBOX_PROPERTIES(), DIALOG_TRACK_VIA_PROPERTIES::DIALOG_TRACK_VIA_PROPERTIES(), FOOTPRINT_VIEWER_FRAME::displayFootprint(), APPEARANCE_CONTROLS::doApplyLayerPreset(), PCB_EDIT_FRAME::doAutoSave(), DIALOG_CLEANUP_GRAPHICS::doCleanup(), DIALOG_CLEANUP_TRACKS_AND_VIAS::doCleanup(), PCB_EDIT_FRAME::doCloseWindow(), PCB_EDIT_FRAME::DoGenFootprintsPositionFile(), PCB_EDIT_FRAME::DoGenFootprintsReport(), DIALOG_GLOBAL_DELETION::DoGlobalDeletions(), EDIT_TOOL::doMoveSelection(), ROUTER_TOOL::DpDimensionsDialog(), GRID_CELL_LAYER_RENDERER::Draw(), DRAWING_TOOL::DrawBoardCharacteristics(), DRAWING_TOOL::DrawSpecificationStackup(), DRAWING_TOOL::DrawVia(), EDIT_TOOL::Duplicate(), FOOTPRINT_EDITOR_CONTROL::DuplicateFootprint(), PCB_EDIT_FRAME::Edit_Zone_Params(), DIALOG_COPPER_ZONE::ensureSelectedNetIsVisible(), TRACK_WIDTH_MENU::eventHandler(), DIFF_PAIR_MENU::eventHandler(), VIA_SIZE_MENU::eventHandler(), PCB_EDIT_FRAME::ExchangeFootprint(), PCB_EDIT_FRAME::ExecuteRemoteCommand(), FOOTPRINT_EDITOR_CONTROL::ExportFootprint(), PCB_EDIT_FRAME::ExportFootprintsToLibrary(), DIALOG_COPPER_ZONE::ExportSetupToOtherCopperZones(), BOARD_EDITOR_CONTROL::ExportSpecctraDSN(), PCB_EDIT_FRAME::ExportSpecctraFile(), PCB_EDIT_FRAME::ExportSVG(), PCB_EDIT_FRAME::ExportToGenCAD(), PCB_EDIT_FRAME::ExportVRML_File(), PCB_EDIT_FRAME::Files_io_from_id(), PCB_EDIT_FRAME::FindItemsFromSyncSelection(), FocusOnItems(), PCB_EDIT_FRAME::GenD356File(), PCB_EDIT_FRAME::GenFootprintsReport(), EDA_3D_VIEWER_FRAME::GetBoard(), GetBoard(), PCB_EDIT_FRAME::GetCurrentFileName(), DIALOG_BOARD_STATISTICS::getDataFromPCB(), PCB_BASE_EDIT_FRAME::GetDesignRulesPath(), FOOTPRINT_EDIT_FRAME::GetDesignSettings(), FOOTPRINT_EDIT_FRAME::GetDocumentExtents(), PCB_LAYER_BOX_SELECTOR::getEnabledLayers(), DISPLAY_FOOTPRINTS_FRAME::GetFootprint(), GetFootprintFromBoardByReference(), GetItem(), PCB_EDIT_FRAME::GetLastPath(), DIALOG_TRACK_VIA_PROPERTIES::getLayerDepth(), PCB_LAYER_BOX_SELECTOR::getLayerName(), PCB_LAYER_SELECTOR::getLayerName(), FOOTPRINT_EDIT_FRAME::GetLoadedFPID(), DISPLAY_FOOTPRINTS_FRAME::GetModel(), FOOTPRINT_EDIT_FRAME::GetModel(), FOOTPRINT_VIEWER_FRAME::GetModel(), FOOTPRINT_WIZARD_FRAME::GetModel(), ZONE_SEARCH_HANDLER::GetResultCell(), GetSeverity(), GRID_CELL_LAYER_SELECTOR::GetValue(), PRIVATE_LAYERS_GRID_TABLE::GetValue(), FP_TREE_SYNCHRONIZING_ADAPTER::GetValue(), APPEARANCE_CONTROLS::getVisibleLayers(), APPEARANCE_CONTROLS::getVisibleObjects(), PCB_EDITOR_CONDITIONS::hasItemsFunc(), HideSolderMask(), FOOTPRINT_EDITOR_CONTROL::ImportFootprint(), FOOTPRINT_EDIT_FRAME::ImportFootprint(), BOARD_EDITOR_CONTROL::ImportSpecctraSession(), PCB_EDIT_FRAME::ImportSpecctraSession(), EDIT_TOOL::Init(), DIALOG_PLOT::init_Dialog(), DISPLAY_FOOTPRINTS_FRAME::InitDisplay(), BOARD_INSPECTION_TOOL::InspectClearance(), BOARD_INSPECTION_TOOL::InspectDRCError(), ARRAY_CREATOR::Invoke(), FOOTPRINT_EDIT_FRAME::IsContentModified(), FOOTPRINT_EDIT_FRAME::IsCurrentFPFromBoard(), PCB_EDIT_FRAME::IsElementVisible(), PCB_LAYER_SELECTOR::isLayerEnabled(), PCB_EDIT_FRAME::KiwayMailIn(), LoadBoard(), FOOTPRINT_EDIT_FRAME::LoadFootprintFromBoard(), DIALOG_IMPORT_NETLIST::loadNetlist(), PCB_EDIT_FRAME::LoadProjectSettings(), BOARD_INSPECTION_TOOL::makeDRCEngine(), CONVERT_TOOL::makePolysFromChainedSegs(), CONVERT_TOOL::makePolysFromClosedGraphics(), CONVERT_TOOL::makePolysFromOpenGraphics(), DIALOG_DRC::OnActivateDlg(), DIALOG_BOARD_REANNOTATE::OnApplyClick(), DIALOG_BOARD_SETUP::onAuxiliaryAction(), APPEARANCE_CONTROLS::OnBoardChanged(), DIALOG_NET_INSPECTOR::onBoardChanged(), PCB_SEARCH_PANE::onBoardChanged(), PCB_EDIT_FRAME::onBoardLoaded(), DIALOG_IMPORT_SETTINGS::OnBrowseClicked(), DIALOG_DRC::OnDRCItemRClick(), DIALOG_DRC::OnDRCItemSelected(), DIALOG_EXPORT_STEP::onExportButton(), PCB_EDIT_FRAME::OnExportHyperlynx(), PCB_EDIT_FRAME::OnExportIDF3(), PCB_EDIT_FRAME::OnExportSTEP(), PCB_EDIT_FRAME::OnExportVRML(), APPEARANCE_CONTROLS::OnLayerContextMenu(), OnModify(), APPEARANCE_CONTROLS::onNetclassContextMenu(), PCB_EDIT_FRAME::OnNetlistChanged(), APPEARANCE_CONTROLS::onObjectVisibilityChanged(), DIALOG_GEN_FOOTPRINT_POSITION::OnOutputDirectoryBrowseClicked(), DIALOG_PLOT::OnOutputDirectoryBrowseClicked(), PCB_EDIT_FRAME::OnRemoveTeardropTool(), PCB_EDIT_FRAME::OnRunTeardropTool(), PANEL_SETUP_RULES::onScintillaCharAdded(), DIALOG_CLEANUP_GRAPHICS::OnSelectItem(), DIALOG_CLEANUP_TRACKS_AND_VIAS::OnSelectItem(), DIALOG_FOOTPRINT_CHECKER::OnSelectItem(), FOOTPRINT_VIEWER_FRAME::OnUpdateFootprintButton(), FOOTPRINT_EDIT_FRAME::OnUpdateLoadFootprintFromBoard(), FOOTPRINT_EDIT_FRAME::OnUpdateSaveFootprintToBoard(), FOOTPRINT_EDIT_FRAME::OpenProjectFiles(), PCB_EDIT_FRAME::OpenProjectFiles(), PANEL_SETUP_BOARD_FINISH::PANEL_SETUP_BOARD_FINISH(), PANEL_SETUP_BOARD_STACKUP::PANEL_SETUP_BOARD_STACKUP(), PANEL_SETUP_CONSTRAINTS::PANEL_SETUP_CONSTRAINTS(), PANEL_SETUP_LAYERS::PANEL_SETUP_LAYERS(), PANEL_SETUP_MASK_AND_PASTE::PANEL_SETUP_MASK_AND_PASTE(), PANEL_SETUP_TEXT_AND_GRAPHICS::PANEL_SETUP_TEXT_AND_GRAPHICS(), PANEL_SETUP_TRACKS_AND_VIAS::PANEL_SETUP_TRACKS_AND_VIAS(), PCB_CONTROL::Paste(), PCB_SEARCH_PANE::PCB_SEARCH_PANE(), DIALOG_UPDATE_PCB::PerformUpdate(), DRAWING_TOOL::PlaceImportedGraphics(), DIALOG_PLOT::Plot(), ROUTER_TOOL::prepareInteractive(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::processItem(), DIALOG_EXCHANGE_FOOTPRINTS::processMatchingFootprints(), EDIT_TOOL::Properties(), FOOTPRINT_EDITOR_CONTROL::Properties(), PCB_BASE_EDIT_FRAME::PutDataInPreviousState(), DIALOG_COPPER_ZONE::readNetInformation(), BOARD_REANNOTATE_TOOL::ReannotateDuplicates(), NET_GRID_TABLE::Rebuild(), rebuildConnectivity(), APPEARANCE_CONTROLS::rebuildLayerContextMenu(), APPEARANCE_CONTROLS::rebuildLayers(), APPEARANCE_CONTROLS::rebuildNets(), PCB_EDIT_FRAME::RecordDRCExclusions(), PCB_EDIT_FRAME::RecreateCmpFileFromBoard(), PCB_EDIT_FRAME::redrawNetnames(), DIALOG_PLOT::reInitDialog(), FOOTPRINT_WIZARD_FRAME::ReloadFootprint(), FOOTPRINT_EDITOR_CONTROL::RenameFootprint(), BOARD_INSPECTION_TOOL::reportHeader(), DRC_TOOL::Reset(), PCB_EDIT_FRAME::ResolveDRCExclusions(), ROUTER_TOOL::RouteSelected(), PCB_EDIT_FRAME::RunActionPlugin(), DIALOG_FOOTPRINT_CHECKER::runChecks(), PCB_BASE_EDIT_FRAME::saveCopyInUndoList(), FOOTPRINT_EDIT_FRAME::SaveFootprintToBoard(), PCB_EDIT_FRAME::SavePcbCopy(), PCB_EDIT_FRAME::SavePcbFile(), PCB_EDIT_FRAME::SaveProjectSettings(), DIALOG_BOARD_STATISTICS::saveReportClicked(), DIALOG_FIND::search(), FOOTPRINT_SEARCH_HANDLER::Search(), ZONE_SEARCH_HANDLER::Search(), TEXT_SEARCH_HANDLER::Search(), NETS_SEARCH_HANDLER::Search(), FOOTPRINT_VIEWER_FRAME::SelectAndViewFootprint(), SelectOneLayer(), SetBoard(), DIALOG_GLOBAL_DELETION::SetCurrentLayer(), PCB_EDIT_FRAME::SetElementVisibility(), PCB_EDIT_FRAME::SetLastPath(), APPEARANCE_CONTROLS::SetObjectVisible(), PCB_EDIT_FRAME::SetPageSettings(), DIALOG_PLOT::SetPlotFormat(), ZONE_CREATE_HELPER::setUniquePriority(), ZONE_SETTINGS::SetupLayersList(), FOOTPRINT_EDIT_FRAME::setupTools(), FOOTPRINT_EDIT_FRAME::setupUIConditions(), PCB_EDIT_FRAME::setupUIConditions(), APPEARANCE_CONTROLS::setVisibleLayers(), APPEARANCE_CONTROLS::setVisibleObjects(), PCB_EDIT_FRAME::ShowBoardSetupDialog(), APPEARANCE_CONTROLS::showNetclass(), ShowSolderMask(), DIALOG_COPPER_ZONE::sortNetsByPadCount(), PCB_EDIT_FRAME::SwitchLayer(), TEARDROP_DIALOG::TEARDROP_DIALOG(), DIALOG_SWAP_LAYERS::TransferDataFromWindow(), DIALOG_TEXTBOX_PROPERTIES::TransferDataFromWindow(), DIALOG_TRACK_VIA_PROPERTIES::TransferDataFromWindow(), DIALOG_UNUSED_PAD_LAYERS::TransferDataFromWindow(), PANEL_SETUP_MASK_AND_PASTE::TransferDataFromWindow(), PANEL_SETUP_RULES::TransferDataFromWindow(), DIALOG_DIMENSION_PROPERTIES::TransferDataToWindow(), DIALOG_PRINT_PCBNEW::TransferDataToWindow(), DIALOG_SWAP_LAYERS::TransferDataToWindow(), DIALOG_TEXTBOX_PROPERTIES::TransferDataToWindow(), PANEL_SETUP_MASK_AND_PASTE::TransferDataToWindow(), PCB_BASE_EDIT_FRAME::unitsChangeRefresh(), TRACK_WIDTH_MENU::update(), DIFF_PAIR_MENU::update(), VIA_SIZE_MENU::update(), DIALOG_DIMENSION_PROPERTIES::updateDimensionFromDialog(), DIALOG_BOARD_STATISTICS::updateDrillGrid(), PCB_CONTROL::UpdateMessagePanel(), DISPLAY_FOOTPRINTS_FRAME::UpdateMsgPanel(), FOOTPRINT_WIZARD_FRAME::UpdateMsgPanel(), DRC_TOOL::updatePointers(), FOOTPRINT_EDIT_FRAME::UpdateTitle(), PCB_EDIT_FRAME::UpdateTitle(), PCB_EDIT_FRAME::UpdateUserInterface(), DISPLAY_FOOTPRINTS_FRAME::updateView(), FOOTPRINT_EDIT_FRAME::UpdateView(), FOOTPRINT_VIEWER_FRAME::updateView(), FOOTPRINT_WIZARD_FRAME::updateView(), DIALOG_DRC::writeReport(), DIALOG_FOOTPRINT_CHECKER::~DIALOG_FOOTPRINT_CHECKER(), DISPLAY_FOOTPRINTS_FRAME::~DISPLAY_FOOTPRINTS_FRAME(), and PCB_EDIT_FRAME::~PCB_EDIT_FRAME().

◆ GetBoardBoundingBox()

BOX2I PCB_BASE_FRAME::GetBoardBoundingBox ( bool  aBoardEdgesOnly = false) const

Calculate the bounding box containing all board items (or board edge segments).

Parameters
aBoardEdgesOnlyis true if we are interested in board edge segments only.
Returns
the board's bounding box.

Definition at line 681 of file pcb_base_frame.cpp.

682{
683 BOX2I area = aBoardEdgesOnly ? m_pcb->GetBoardEdgesBoundingBox() : m_pcb->GetBoundingBox();
684
685 if( area.GetWidth() == 0 && area.GetHeight() == 0 )
686 {
687 wxSize pageSize = GetPageSizeIU();
688
690 {
691 area.SetOrigin( 0, 0 );
692 area.SetEnd( pageSize.x, pageSize.y );
693 }
694 else
695 {
696 area.SetOrigin( -pageSize.x / 2, -pageSize.y / 2 );
697 area.SetEnd( pageSize.x / 2, pageSize.y / 2 );
698 }
699 }
700
701 return area;
702}
const BOX2I GetBoardEdgesBoundingBox() const
Return the board bounding box calculated using exclusively the board edges (graphics on Edge....
Definition: board.h:823
const BOX2I GetBoundingBox() const override
Return the orthogonal bounding box of this object for display purposes.
Definition: board.h:809
void SetOrigin(const Vec &pos)
Definition: box2.h:202
void SetEnd(coord_type x, coord_type y)
Definition: box2.h:255
bool m_showBorderAndTitleBlock
const wxSize GetPageSizeIU() const override
Works off of GetPageSettings() to return the size of the paper page in the internal units of this par...

References BOARD::GetBoardEdgesBoundingBox(), BOARD::GetBoundingBox(), BOX2< Vec >::GetHeight(), GetPageSizeIU(), BOX2< Vec >::GetWidth(), m_pcb, EDA_DRAW_FRAME::m_showBorderAndTitleBlock, BOX2< Vec >::SetEnd(), and BOX2< Vec >::SetOrigin().

Referenced by GetDocumentExtents(), and FOOTPRINT_EDIT_FRAME::GetDocumentExtents().

◆ GetCanvas()

PCB_DRAW_PANEL_GAL * PCB_BASE_FRAME::GetCanvas ( ) const
overridevirtual

Return a pointer to GAL-based canvas of given EDA draw frame.

Returns
Pointer to GAL-based canvas.

Reimplemented from EDA_DRAW_FRAME.

Definition at line 1059 of file pcb_base_frame.cpp.

1060{
1061 return static_cast<PCB_DRAW_PANEL_GAL*>( EDA_DRAW_FRAME::GetCanvas() );
1062}

References EDA_DRAW_FRAME::GetCanvas().

Referenced by ActivateGalCanvas(), FOOTPRINT_EDIT_FRAME::ActivateGalCanvas(), PCB_BASE_EDIT_FRAME::ActivateGalCanvas(), PCB_EDIT_FRAME::ActivateGalCanvas(), FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), APPEARANCE_CONTROLS::APPEARANCE_CONTROLS(), DIALOG_NET_INSPECTOR::buildNetsList(), PCB_SELECTION_TOOL::canvas(), PCB_TOOL_BASE::canvas(), PCB_VIEWER_TOOLS::canvas(), FOOTPRINT_VIEWER_FRAME::ClickOnFootprintList(), FOOTPRINT_WIZARD_FRAME::ClickOnPageList(), CommonSettingsChanged(), FOOTPRINT_EDIT_FRAME::CommonSettingsChanged(), FOOTPRINT_VIEWER_FRAME::CommonSettingsChanged(), PCB_EDIT_FRAME::CommonSettingsChanged(), DIALOG_PRINT_PCBNEW::createPrintout(), PCB_CONTROL::DeleteItemCursor(), DIALOG_BOARD_REANNOTATE::DIALOG_BOARD_REANNOTATE(), DisplayGridMsg(), APPEARANCE_CONTROLS::doApplyLayerPreset(), APPEARANCE_CONTROLS::doApplyViewport(), DIALOG_CLEANUP_GRAPHICS::doCleanup(), DIALOG_CLEANUP_TRACKS_AND_VIAS::doCleanup(), FOOTPRINT_EDIT_FRAME::doCloseWindow(), FOOTPRINT_VIEWER_FRAME::doCloseWindow(), PCB_EDIT_FRAME::doCloseWindow(), DIALOG_GLOBAL_DELETION::DoGlobalDeletions(), BOARD_INSPECTION_TOOL::doHideRatsnestNet(), PCB_TOOL_BASE::doInteractiveItemPlacement(), EDIT_TOOL::doMoveSelection(), PCB_SELECTION_TOOL::doSyncSelection(), DRAWING_TOOL::drawArc(), DRAWING_TOOL::DrawDimension(), MICROWAVE_TOOL::drawMicrowaveInductor(), DRAWING_TOOL::drawShape(), DRAWING_TOOL::DrawVia(), DRAWING_TOOL::DrawZone(), PCB_EDIT_FRAME::Edit_Zone_Params(), DIALOG_DRC::ExcludeMarker(), PCB_EDIT_FRAME::ExecuteRemoteCommand(), PCB_SELECTION_TOOL::FindItem(), ROUTER_TOOL::finishInteractive(), PCB_CONTROL::FlipPcbView(), FocusOnItems(), GetCollectorsGuide(), APPEARANCE_CONTROLS::getVisibleLayers(), APPEARANCE_CONTROLS::getVisibleObjects(), ROUTER_TOOL::handleLayerSwitch(), FOOTPRINT_EDIT_FRAME::HardRedraw(), HideSolderMask(), PCB_EDIT_FRAME::ImportSpecctraSession(), DISPLAY_FOOTPRINTS_FRAME::InitDisplay(), ROUTER_TOOL::InlineDrag(), DRAWING_TOOL::InteractivePlaceWithPreview(), PCB_CONTROL::LayerAlphaDec(), PCB_CONTROL::LayerAlphaInc(), FOOTPRINT_EDIT_FRAME::LoadFootprintFromBoard(), FOOTPRINT_EDIT_FRAME::LoadFootprintFromLibrary(), PCB_EDIT_FRAME::LoadProjectSettings(), LoadSettings(), CVPCB_FOOTPRINT_VIEWER_SELECTION_TOOL::Main(), PCB_PICKER_TOOL::Main(), LENGTH_TUNER_TOOL::MainLoop(), ROUTER_TOOL::MainLoop(), PCB_VIEWER_TOOLS::MeasureTool(), DIALOG_BOARD_REANNOTATE::OnApplyClick(), PCB_EDIT_FRAME::onBoardLoaded(), APPEARANCE_CONTROLS::OnColorSwatchChanged(), DIALOG_NET_INSPECTOR::onDeleteNet(), DIALOG_DRC::OnDRCItemRClick(), FOOTPRINT_EDIT_FRAME::OnEditItemRequest(), PCB_SELECTION_TOOL::OnIdle(), APPEARANCE_CONTROLS::OnLayerContextMenu(), APPEARANCE_CONTROLS::onLayerVisibilityToggled(), DIALOG_GROUP_PROPERTIES::OnMemberSelected(), APPEARANCE_CONTROLS::onNetclassColorChanged(), APPEARANCE_CONTROLS::onNetclassContextMenu(), APPEARANCE_CONTROLS::onNetColorMode(), APPEARANCE_CONTROLS::onNetContextMenu(), PCB_EDIT_FRAME::OnNetlistChanged(), APPEARANCE_CONTROLS::onObjectVisibilityChanged(), DIALOG_EXCHANGE_FOOTPRINTS::OnOKClicked(), DIALOG_GROUP_PROPERTIES::OnRemoveMember(), PCB_EDIT_FRAME::OnRemoveTeardropTool(), DIALOG_NET_INSPECTOR::onRenameNet(), DIALOG_NET_INSPECTOR::onSelChanged(), DIALOG_CLEANUP_GRAPHICS::OnSelectItem(), DIALOG_CLEANUP_TRACKS_AND_VIAS::OnSelectItem(), DIALOG_FOOTPRINT_CHECKER::OnSelectItem(), DIALOG_NET_INSPECTOR::onSortingChanged(), FOOTPRINT_TREE_PANE::onUpdateUI(), APPEARANCE_CONTROLS::onViewportChanged(), FOOTPRINT_EDIT_FRAME::OpenProjectFiles(), PCB_EDIT_FRAME::OpenProjectFiles(), BOARD_EDITOR_CONTROL::PageSettings(), ROUTER_TOOL::performRouting(), LENGTH_TUNER_TOOL::performTuning(), BOARD_EDITOR_CONTROL::PlaceFootprint(), PlaceFootprint(), DRAWING_TOOL::PlaceImage(), DRAWING_TOOL::PlaceImportedGraphics(), DRAWING_TOOL::PlaceText(), DIALOG_PAD_PROPERTIES::prepareCanvas(), ROUTER_TOOL::prepareInteractive(), PCB_EDIT_FRAME::Process_Special_Functions(), EDIT_TOOL::Properties(), FOOTPRINT_EDITOR_CONTROL::Properties(), BOARD_COMMIT::Push(), PCB_BASE_EDIT_FRAME::PutDataInPreviousState(), DIALOG_BOARD_REANNOTATE::ReannotateBoard(), NET_GRID_TABLE::Rebuild(), PCB_EDIT_FRAME::RebuildAndRefresh(), rebuildConnectivity(), APPEARANCE_CONTROLS::rebuildNets(), FOOTPRINT_VIEWER_FRAME::ReCreateLibraryList(), FOOTPRINT_WIZARD_FRAME::ReCreatePageList(), PCB_EDIT_FRAME::redrawNetnames(), refreshCallback(), DIALOG_DRC::refreshEditor(), DIALOG_FOOTPRINT_CHECKER::refreshEditor(), FOOTPRINT_WIZARD_FRAME::ReloadFootprint(), PCB_SELECTION_TOOL::RequestSelection(), PCB_EDIT_FRAME::ResolveDRCExclusions(), PCB_BASE_EDIT_FRAME::RestoreCopyFromRedoList(), PCB_BASE_EDIT_FRAME::RestoreCopyFromUndoList(), FOOTPRINT_EDIT_FRAME::RevertFootprint(), PCB_BASE_EDIT_FRAME::RollbackFromUndo(), ROUTER_TOOL::RouteSelected(), DIALOG_FOOTPRINT_CHECKER::runChecks(), DRC_TOOL::RunTests(), FOOTPRINT_EDIT_FRAME::SaveFootprintToBoard(), PCB_EDIT_FRAME::SaveProjectSettings(), DISPLAY_FOOTPRINTS_FRAME::SaveSettings(), FOOTPRINT_VIEWER_FRAME::SaveSettings(), DIALOG_FIND::search(), PCB_SELECTION_TOOL::SelectAll(), PCB_SELECTION_TOOL::selectAllConnectedTracks(), FOOTPRINT_VIEWER_FRAME::SelectAndViewFootprint(), FOOTPRINT_SEARCH_HANDLER::SelectItems(), ZONE_SEARCH_HANDLER::SelectItems(), TEXT_SEARCH_HANDLER::SelectItems(), NETS_SEARCH_HANDLER::SelectItems(), FOOTPRINT_EDIT_FRAME::SelectLayer(), PCB_SELECTION_TOOL::selectMultiple(), FOOTPRINT_EDIT_FRAME::SetActiveLayer(), PCB_EDIT_FRAME::SetActiveLayer(), DRAWING_TOOL::SetAnchor(), SetBoard(), PCB_BASE_EDIT_FRAME::SetBoard(), SetDisplayOptions(), PCB_POINT_EDITOR::setEditedPoint(), PCB_EDIT_FRAME::SetElementVisibility(), PCB_EDIT_FRAME::SetGridColor(), APPEARANCE_CONTROLS::SetLayerVisible(), APPEARANCE_CONTROLS::SetObjectVisible(), PCB_EDIT_FRAME::SetPageSettings(), FOOTPRINT_EDIT_FRAME::setupTools(), PCB_EDIT_FRAME::setupTools(), FOOTPRINT_EDIT_FRAME::setupUIConditions(), PCB_EDIT_FRAME::setupUIConditions(), APPEARANCE_CONTROLS::setVisibleLayers(), APPEARANCE_CONTROLS::setVisibleObjects(), PCB_BASE_EDIT_FRAME::ShowBitmapPropertiesDialog(), PCB_EDIT_FRAME::ShowBoardSetupDialog(), PCB_EDIT_FRAME::ShowFootprintPropertiesDialog(), ShowSolderMask(), GLOBAL_EDIT_TOOL::swapBoardItem(), GLOBAL_EDIT_TOOL::SwapLayers(), FOOTPRINT_EDIT_FRAME::SwitchCanvas(), SwitchLayer(), PCB_EDIT_FRAME::SwitchLayer(), PCB_EDIT_FRAME::Tracks_and_Vias_Size_Event(), DIALOG_FOOTPRINT_PROPERTIES::TransferDataFromWindow(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::TransferDataFromWindow(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::TransferDataFromWindow(), DIALOG_PAD_PROPERTIES::TransferDataFromWindow(), APPEARANCE_CONTROLS::UpdateDisplayOptions(), NET_GRID_TABLE::updateNetColor(), UpdateStatusBar(), PCB_EDIT_FRAME::UpdateUserInterface(), UpdateUserUnits(), DISPLAY_FOOTPRINTS_FRAME::updateView(), FOOTPRINT_EDIT_FRAME::UpdateView(), FOOTPRINT_VIEWER_FRAME::updateView(), FOOTPRINT_WIZARD_FRAME::updateView(), PCB_SELECTION_TOOL::ZoomFitCrossProbeBBox(), PCB_SELECTION_TOOL::zoomFitSelection(), DIALOG_GROUP_PROPERTIES::~DIALOG_GROUP_PROPERTIES(), DIALOG_IMPORT_NETLIST::~DIALOG_IMPORT_NETLIST(), DIALOG_NET_INSPECTOR::~DIALOG_NET_INSPECTOR(), DIALOG_UPDATE_PCB::~DIALOG_UPDATE_PCB(), DISPLAY_FOOTPRINTS_FRAME::~DISPLAY_FOOTPRINTS_FRAME(), FOOTPRINT_VIEWER_FRAME::~FOOTPRINT_VIEWER_FRAME(), FOOTPRINT_WIZARD_FRAME::~FOOTPRINT_WIZARD_FRAME(), PCB_BASE_EDIT_FRAME::~PCB_BASE_EDIT_FRAME(), and ~PCB_BASE_FRAME().

◆ GetCollectorsGuide()

GENERAL_COLLECTORS_GUIDE PCB_BASE_FRAME::GetCollectorsGuide ( )
Returns
global configuration options.

Definition at line 795 of file pcb_base_frame.cpp.

796{
798 GetCanvas()->GetView() );
799
800 // account for the globals
801 guide.SetIgnoreMTextsMarkedNoShow( ! m_pcb->IsElementVisible( LAYER_MOD_TEXT_INVISIBLE ) );
802 guide.SetIgnoreMTextsOnBack( ! m_pcb->IsElementVisible( LAYER_MOD_TEXT ) );
803 guide.SetIgnoreMTextsOnFront( ! m_pcb->IsElementVisible( LAYER_MOD_TEXT ) );
804 guide.SetIgnoreModulesOnBack( ! m_pcb->IsElementVisible( LAYER_MOD_BK ) );
805 guide.SetIgnoreModulesOnFront( ! m_pcb->IsElementVisible( LAYER_MOD_FR ) );
806 guide.SetIgnorePadsOnBack( ! m_pcb->IsElementVisible( LAYER_PAD_BK ) );
807 guide.SetIgnorePadsOnFront( ! m_pcb->IsElementVisible( LAYER_PAD_FR ) );
808 guide.SetIgnoreThroughHolePads( ! m_pcb->IsElementVisible( LAYER_PADS_TH ) );
809 guide.SetIgnoreModulesVals( ! m_pcb->IsElementVisible( LAYER_MOD_VALUES ) );
810 guide.SetIgnoreModulesRefs( ! m_pcb->IsElementVisible( LAYER_MOD_REFERENCES ) );
811 guide.SetIgnoreThroughVias( ! m_pcb->IsElementVisible( LAYER_VIAS ) );
812 guide.SetIgnoreBlindBuriedVias( ! m_pcb->IsElementVisible( LAYER_VIAS ) );
813 guide.SetIgnoreMicroVias( ! m_pcb->IsElementVisible( LAYER_VIAS ) );
814 guide.SetIgnoreTracks( ! m_pcb->IsElementVisible( LAYER_TRACKS ) );
815
816 return guide;
817}
LSET GetVisibleLayers() const
A proxy function that calls the correspondent function in m_BoardSettings.
Definition: board.cpp:579
bool IsElementVisible(GAL_LAYER_ID aLayer) const
Test whether a given element category is visible.
Definition: board.cpp:631
A general implementation of a COLLECTORS_GUIDE.
Definition: collectors.h:326
virtual PCB_LAYER_ID GetActiveLayer() const
@ LAYER_MOD_TEXT_INVISIBLE
text marked as invisible
Definition: layer_ids.h:200
@ LAYER_PAD_FR
smd pads, front layer
Definition: layer_ids.h:202
@ LAYER_MOD_TEXT
Definition: layer_ids.h:198
@ LAYER_TRACKS
Definition: layer_ids.h:212
@ LAYER_MOD_FR
show footprints on front
Definition: layer_ids.h:208
@ LAYER_PAD_BK
smd pads, back layer
Definition: layer_ids.h:203
@ LAYER_MOD_VALUES
show footprints values (when texts are visible)
Definition: layer_ids.h:210
@ LAYER_PADS_TH
multilayer pads, usually with holes
Definition: layer_ids.h:213
@ LAYER_VIAS
Meta control for all vias opacity/visibility.
Definition: layer_ids.h:193
@ LAYER_MOD_BK
show footprints on back
Definition: layer_ids.h:209
@ LAYER_MOD_REFERENCES
show footprints references (when texts are visible)
Definition: layer_ids.h:211

References GetActiveLayer(), GetCanvas(), BOARD::GetVisibleLayers(), BOARD::IsElementVisible(), LAYER_MOD_BK, LAYER_MOD_FR, LAYER_MOD_REFERENCES, LAYER_MOD_TEXT, LAYER_MOD_TEXT_INVISIBLE, LAYER_MOD_VALUES, LAYER_PAD_BK, LAYER_PAD_FR, LAYER_PADS_TH, LAYER_TRACKS, LAYER_VIAS, m_pcb, GENERAL_COLLECTORS_GUIDE::SetIgnoreBlindBuriedVias(), GENERAL_COLLECTORS_GUIDE::SetIgnoreMicroVias(), GENERAL_COLLECTORS_GUIDE::SetIgnoreModulesOnBack(), GENERAL_COLLECTORS_GUIDE::SetIgnoreModulesOnFront(), GENERAL_COLLECTORS_GUIDE::SetIgnoreModulesRefs(), GENERAL_COLLECTORS_GUIDE::SetIgnoreModulesVals(), GENERAL_COLLECTORS_GUIDE::SetIgnoreMTextsMarkedNoShow(), GENERAL_COLLECTORS_GUIDE::SetIgnoreMTextsOnBack(), GENERAL_COLLECTORS_GUIDE::SetIgnoreMTextsOnFront(), GENERAL_COLLECTORS_GUIDE::SetIgnorePadsOnBack(), GENERAL_COLLECTORS_GUIDE::SetIgnorePadsOnFront(), GENERAL_COLLECTORS_GUIDE::SetIgnoreThroughHolePads(), GENERAL_COLLECTORS_GUIDE::SetIgnoreThroughVias(), and GENERAL_COLLECTORS_GUIDE::SetIgnoreTracks().

Referenced by PCB_CONTROL::DeleteItemCursor(), PAD_TOOL::EnumeratePads(), and BOARD_INSPECTION_TOOL::highlightNet().

◆ GetColorSettings()

◆ GetCurrentFileName()

virtual wxString EDA_BASE_FRAME::GetCurrentFileName ( ) const
inlinevirtualinherited

Get the full filename + path of the currently opened file in the frame.

If no file is open, an empty string is returned.

Returns
the filename and full path to the open file

Reimplemented in SCH_EDIT_FRAME, KICAD_MANAGER_FRAME, PL_EDITOR_FRAME, and PCB_EDIT_FRAME.

Definition at line 431 of file eda_base_frame.h.

431{ return wxEmptyString; }

Referenced by EDA_BASE_FRAME::SaveSettings().

◆ GetCurrentSelection()

virtual SELECTION & TOOLS_HOLDER::GetCurrentSelection ( )
inlinevirtualinherited

◆ GetDesignSettings()

◆ GetDisplayOptions()

◆ GetDocumentExtents()

const BOX2I PCB_BASE_FRAME::GetDocumentExtents ( bool  aIncludeAllVisible = true) const
inlineoverridevirtual

Returns bbox of document with option to not include some items.

Used most commonly by "Zoom to Fit" and "Zoom to Objects". In Eeschema for "Zoom to Fit" it's passed "true" to include drawing sheet border, and "false" by "Zoom To Objects" to ignore drawing sheet border. In Pcbnew, false makes it ignore any items outside the PCB edge such as fabrication notes.

Parameters
aIncludeAllVisibleTrue to include everything visible in bbox calculations, false to ignore some visible items (program dependent).
Returns
Bounding box of the document (ignoring some items as requested).

Reimplemented from EDA_DRAW_FRAME.

Reimplemented in FOOTPRINT_EDIT_FRAME.

Definition at line 109 of file pcb_base_frame.h.

110 {
111 /* "Zoom to Fit" calls this with "aIncludeAllVisible" as true. Since that feature
112 * always ignored the page and border, this function returns a bbox without them
113 * as well when passed true. This technically is not all things visible, but it
114 * keeps behavior consistent.
115 *
116 * When passed false, this function returns a bbox of just the board edge. This
117 * allows things like fabrication text or anything else outside the board edge to
118 * be ignored, and just zooms up to the board itself.
119 *
120 * Calling "GetBoardBoundingBox(true)" when edge cuts are turned off will return
121 * the entire page and border, so we call "GetBoardBoundingBox(false)" instead.
122 */
123 if( aIncludeAllVisible || !m_pcb->IsLayerVisible( Edge_Cuts ) )
124 return GetBoardBoundingBox( false );
125 else
126 return GetBoardBoundingBox( true );
127 }
bool IsLayerVisible(PCB_LAYER_ID aLayer) const
A proxy function that calls the correspondent function in m_BoardSettings tests whether a given layer...
Definition: board.cpp:571
BOX2I GetBoardBoundingBox(bool aBoardEdgesOnly=false) const
Calculate the bounding box containing all board items (or board edge segments).
@ Edge_Cuts
Definition: layer_ids.h:113

References Edge_Cuts, GetBoardBoundingBox(), BOARD::IsLayerVisible(), and m_pcb.

◆ GetDoImmediateActions()

bool TOOLS_HOLDER::GetDoImmediateActions ( ) const
inlineinherited

Indicate that hotkeys should perform an immediate action even if another tool is currently active.

If false, the first hotkey should select the relevant tool.

Definition at line 141 of file tools_holder.h.

141{ return m_immediateActions; }
bool m_immediateActions
Definition: tools_holder.h:183

References TOOLS_HOLDER::m_immediateActions.

◆ GetDragAction()

MOUSE_DRAG_ACTION TOOLS_HOLDER::GetDragAction ( ) const
inlineinherited

Indicates whether a drag should draw a selection rectangle or drag selected (or unselected) objects.

Definition at line 147 of file tools_holder.h.

147{ return m_dragAction; }
MOUSE_DRAG_ACTION m_dragAction
Definition: tools_holder.h:187

References TOOLS_HOLDER::m_dragAction.

Referenced by EE_SELECTION_TOOL::Main(), PL_SELECTION_TOOL::Main(), and PCB_SELECTION_TOOL::Main().

◆ GetDrawBgColor()

virtual COLOR4D EDA_DRAW_FRAME::GetDrawBgColor ( ) const
inlinevirtualinherited

◆ GetFileFromHistory()

wxString EDA_BASE_FRAME::GetFileFromHistory ( int  cmdId,
const wxString &  type,
FILE_HISTORY aFileHistory = nullptr 
)
inherited

Fetches the file name from the file history list.

This removes the selected file, if this file does not exist. The menu is also updated, if #FILE_HISTORY::UseMenu was called at initialization time.

Parameters
cmdIdThe command ID associated with the aFileHistory object.
typePlease document me!
aFileHistoryThe FILE_HISTORY in use. If null, the main application file history is used
Returns
a wxString containing the selected filename

Definition at line 929 of file eda_base_frame.cpp.

931{
932 if( !aFileHistory )
933 aFileHistory = m_fileHistory;
934
935 wxASSERT( aFileHistory );
936
937 int baseId = aFileHistory->GetBaseId();
938
939 wxASSERT( cmdId >= baseId && cmdId < baseId + (int) aFileHistory->GetCount() );
940
941 unsigned i = cmdId - baseId;
942
943 if( i < aFileHistory->GetCount() )
944 {
945 wxString fn = aFileHistory->GetHistoryFile( i );
946
947 if( wxFileName::FileExists( fn ) )
948 {
949 return fn;
950 }
951 else
952 {
953 DisplayErrorMessage( this, wxString::Format( _( "File '%s' was not found." ), fn ) );
954 aFileHistory->RemoveFileFromHistory( i );
955 }
956 }
957
958 // Update the menubar to update the file history menu
959 if( GetMenuBar() )
960 {
962 GetMenuBar()->Refresh();
963 }
964
965 return wxEmptyString;
966}
void DisplayErrorMessage(wxWindow *aParent, const wxString &aText, const wxString &aExtraInfo)
Display an error message with aMessage.
Definition: confirm.cpp:325

References _, DisplayErrorMessage(), Format(), EDA_BASE_FRAME::m_fileHistory, and EDA_BASE_FRAME::ReCreateMenuBar().

Referenced by GERBVIEW_FRAME::OnDrlFileHistory(), KICAD_MANAGER_FRAME::OnFileHistory(), PL_EDITOR_FRAME::OnFileHistory(), PCB_EDIT_FRAME::OnFileHistory(), GERBVIEW_FRAME::OnGbrFileHistory(), GERBVIEW_FRAME::OnJobFileHistory(), SCH_EDIT_FRAME::OnLoadFile(), and GERBVIEW_FRAME::OnZipFileHistory().

◆ GetFileHistory()

FILE_HISTORY & EDA_BASE_FRAME::GetFileHistory ( )
inlineinherited

Get the frame's main file history.

Returns
the main file history

Definition at line 415 of file eda_base_frame.h.

416 {
417 return *m_fileHistory;
418 }

References EDA_BASE_FRAME::m_fileHistory.

Referenced by SCH_EDIT_FRAME::doReCreateMenuBar(), GERBVIEW_FRAME::doReCreateMenuBar(), KICAD_MANAGER_FRAME::doReCreateMenuBar(), PL_EDITOR_FRAME::doReCreateMenuBar(), and PCB_EDIT_FRAME::doReCreateMenuBar().

◆ GetFindHistoryList()

wxArrayString & EDA_DRAW_FRAME::GetFindHistoryList ( )
inlineinherited

◆ GetFindReplaceData()

◆ GetFootprintEditorSettings()

FOOTPRINT_EDITOR_SETTINGS * PCB_BASE_FRAME::GetFootprintEditorSettings ( ) const

◆ GetFootprintFromBoardByReference()

FOOTPRINT * PCB_BASE_FRAME::GetFootprintFromBoardByReference ( )
Returns
a reference to the footprint found by its reference on the current board. The reference is entered by the user from a dialog (by awxTextCtlr, or a list of available references)

Definition at line 463 of file load_select_footprint.cpp.

464{
465 wxString footprintName;
466 wxArrayString fplist;
467
468 // Build list of available fp references, to display them in dialog
469 for( FOOTPRINT* fp : GetBoard()->Footprints() )
470 fplist.Add( fp->GetReference() + wxT( " ( " ) + fp->GetValue() + wxT( " )" ) );
471
472 fplist.Sort();
473
474 DIALOG_GET_FOOTPRINT_BY_NAME dlg( this, fplist );
475
476 if( dlg.ShowModal() != wxID_OK ) //Aborted by user
477 return nullptr;
478
479 footprintName = dlg.GetValue();
480 footprintName.Trim( true );
481 footprintName.Trim( false );
482
483 if( !footprintName.IsEmpty() )
484 {
485 for( FOOTPRINT* fp : GetBoard()->Footprints() )
486 {
487 if( fp->GetReference().CmpNoCase( footprintName ) == 0 )
488 return fp;
489 }
490 }
491
492 return nullptr;
493}
DIALOG_GET_FOOTPRINT_BY_NAME is a helper dialog to select a footprint by its reference One can enter ...

References FOOTPRINT::Add(), GetBoard(), and DIALOG_GET_FOOTPRINT_BY_NAME::GetValue().

◆ GetFrameType()

FRAME_T EDA_BASE_FRAME::GetFrameType ( ) const
inlineinherited

Definition at line 201 of file eda_base_frame.h.

201{ return m_ident; }

References EDA_BASE_FRAME::m_ident.

Referenced by GetViewerSettingsBase(), and EDA_BASE_FRAME::ShowPreferences().

◆ GetGalDisplayOptions()

◆ GetGridColor()

virtual COLOR4D EDA_DRAW_FRAME::GetGridColor ( )
inlinevirtualinherited

◆ GetGridOrigin()

const VECTOR2I & PCB_BASE_FRAME::GetGridOrigin ( ) const
overridevirtual

Return the absolute coordinates of the origin of the snap grid.

This is treated as a relative offset and snapping will occur at multiples of the grid size relative to this point.

Implements EDA_DRAW_FRAME.

Definition at line 593 of file pcb_base_frame.cpp.

594{
596}
const VECTOR2I & GetGridOrigin()

References BOARD::GetDesignSettings(), BOARD_DESIGN_SETTINGS::GetGridOrigin(), and m_pcb.

Referenced by GetUserOrigin().

◆ GetInfoBar()

◆ GetItem()

EDA_ITEM * PCB_BASE_FRAME::GetItem ( const KIID aId) const
overridevirtual

Fetch an item by KIID.

Frame-type-specific implementation.

Reimplemented from EDA_DRAW_FRAME.

Definition at line 290 of file pcb_base_frame.cpp.

291{
292 return GetBoard()->GetItem( aId );
293}

References GetBoard(), and BOARD::GetItem().

Referenced by PAD_TOOL::EditPad().

◆ GetIuScale()

◆ GetMagneticItemsSettings()

◆ GetMaxUndoItems()

int EDA_BASE_FRAME::GetMaxUndoItems ( ) const
inlineinherited

Definition at line 576 of file eda_base_frame.h.

576{ return m_undoRedoCountMax; }

References EDA_BASE_FRAME::m_undoRedoCountMax.

Referenced by EDA_DRAW_FRAME::SaveSettings().

◆ GetModel()

◆ GetMoveWarpsCursor()

bool TOOLS_HOLDER::GetMoveWarpsCursor ( ) const
inlineinherited

Indicate that a move operation should warp the mouse pointer to the origin of the move object.

This improves snapping, but some users are allergic to mouse warping.

Definition at line 153 of file tools_holder.h.

153{ return m_moveWarpsCursor; }
bool m_moveWarpsCursor
Definition: tools_holder.h:189

References TOOLS_HOLDER::m_moveWarpsCursor.

Referenced by EDIT_TOOL::doMoveSelection(), ROUTER_TOOL::InlineDrag(), SCH_MOVE_TOOL::Main(), and SYMBOL_EDITOR_MOVE_TOOL::Main().

◆ GetMruPath()

◆ GetNearestGridPosition()

VECTOR2I EDA_DRAW_FRAME::GetNearestGridPosition ( const VECTOR2I aPosition) const
inherited

Return the nearest aGridSize location to aPosition.

Parameters
aPositionThe position to check.
Returns
The nearest grid position.

Definition at line 878 of file eda_draw_frame.cpp.

879{
880 const VECTOR2I& gridOrigin = GetGridOrigin();
881 VECTOR2D gridSize = GetCanvas()->GetGAL()->GetGridSize();
882
883 double xOffset = fmod( gridOrigin.x, gridSize.x );
884 int x = KiROUND( (aPosition.x - xOffset) / gridSize.x );
885 double yOffset = fmod( gridOrigin.y, gridSize.y );
886 int y = KiROUND( (aPosition.y - yOffset) / gridSize.y );
887
888 return VECTOR2I( KiROUND( x * gridSize.x + xOffset ), KiROUND( y * gridSize.y + yOffset ) );
889}
virtual const VECTOR2I & GetGridOrigin() const =0
Return the absolute coordinates of the origin of the snap grid.
constexpr ret_type KiROUND(fp_type v)
Round a floating point number to an integer using "round halfway cases away from zero".
Definition: util.h:85

References EDA_DRAW_FRAME::GetCanvas(), EDA_DRAW_PANEL_GAL::GetGAL(), EDA_DRAW_FRAME::GetGridOrigin(), KIGFX::GAL::GetGridSize(), KiROUND(), VECTOR2< T >::x, and VECTOR2< T >::y.

Referenced by SCH_EDIT_TOOL::ChangeTextType(), and SCH_DRAWING_TOOLS::sizeSheet().

◆ GetNearestHalfGridPosition()

VECTOR2I EDA_DRAW_FRAME::GetNearestHalfGridPosition ( const VECTOR2I aPosition) const
inherited

Return the nearest aGridSize / 2 location to aPosition.

This is useful when attempting for keep outer points on grid but not the middle point.

Parameters
aPositionThe position to check.
Returns
The nearest half-grid position.

Definition at line 892 of file eda_draw_frame.cpp.

893{
894 const VECTOR2I& gridOrigin = GetGridOrigin();
895 VECTOR2D gridSize = GetCanvas()->GetGAL()->GetGridSize() / 2.0;
896
897 double xOffset = fmod( gridOrigin.x, gridSize.x );
898 int x = KiROUND( (aPosition.x - xOffset) / gridSize.x );
899 double yOffset = fmod( gridOrigin.y, gridSize.y );
900 int y = KiROUND( (aPosition.y - yOffset) / gridSize.y );
901
902 return VECTOR2I( KiROUND( x * gridSize.x + xOffset ), KiROUND( y * gridSize.y + yOffset ) );
903}

References EDA_DRAW_FRAME::GetCanvas(), EDA_DRAW_PANEL_GAL::GetGAL(), EDA_DRAW_FRAME::GetGridOrigin(), KIGFX::GAL::GetGridSize(), KiROUND(), VECTOR2< T >::x, and VECTOR2< T >::y.

Referenced by SCH_EDIT_TOOL::Mirror(), SYMBOL_EDITOR_EDIT_TOOL::Mirror(), SCH_EDIT_TOOL::Rotate(), and SYMBOL_EDITOR_EDIT_TOOL::Rotate().

◆ GetOriginTransforms()

ORIGIN_TRANSFORMS & PCB_BASE_FRAME::GetOriginTransforms ( )
overridevirtual

Return a reference to the default ORIGIN_TRANSFORMS object.

Reimplemented from EDA_BASE_FRAME.

Definition at line 626 of file pcb_base_frame.cpp.

627{
628 return m_originTransforms;
629}

References m_originTransforms.

◆ GetPageSettings()

const PAGE_INFO & PCB_BASE_FRAME::GetPageSettings ( ) const
overridevirtual

Implements EDA_DRAW_FRAME.

Definition at line 578 of file pcb_base_frame.cpp.

579{
580 return m_pcb->GetPageSettings();
581}
const PAGE_INFO & GetPageSettings() const
Definition: board.h:626

References BOARD::GetPageSettings(), and m_pcb.

Referenced by PCB_CONTROL::Print().

◆ GetPageSizeIU()

const wxSize PCB_BASE_FRAME::GetPageSizeIU ( ) const
overridevirtual

Works off of GetPageSettings() to return the size of the paper page in the internal units of this particular view.

Implements EDA_DRAW_FRAME.

Definition at line 584 of file pcb_base_frame.cpp.

585{
586 // this function is only needed because EDA_DRAW_FRAME is not compiled
587 // with either -DPCBNEW or -DEESCHEMA, so the virtual is used to route
588 // into an application specific source file.
590}
const wxSize GetSizeIU(double aIUScale) const
Gets the page size in internal units.
Definition: page_info.h:162
const double IU_PER_MILS
Definition: base_units.h:78

References BOARD::GetPageSettings(), PAGE_INFO::GetSizeIU(), EDA_IU_SCALE::IU_PER_MILS, m_pcb, and pcbIUScale.

Referenced by PCB_CONTROL::AppendBoard(), FOOTPRINT_EDIT_FRAME::Clear_Pcb(), PCB_EDIT_FRAME::Clear_Pcb(), GetBoardBoundingBox(), and PCB_EDIT_FRAME::OpenProjectFiles().

◆ GetPcbNewSettings()

PCBNEW_SETTINGS * PCB_BASE_FRAME::GetPcbNewSettings ( ) const

Definition at line 955 of file pcb_base_frame.cpp.

956{
957 return Pgm().GetSettingsManager().GetAppSettings<PCBNEW_SETTINGS>();
958}

References Pgm().

Referenced by AddFootprintToBoard(), FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), BOARD_NETLIST_UPDATER::addNewFootprint(), APPEARANCE_CONTROLS::APPEARANCE_CONTROLS(), DIALOG_PLOT::applyPlotSettings(), PCB_POINT_EDITOR::changeArcEditMode(), PCB_EDIT_FRAME::CommonSettingsChanged(), DIALOG_GEN_FOOTPRINT_POSITION::CreateAsciiFiles(), DIALOG_GEN_FOOTPRINT_POSITION::CreateGerberFiles(), PCB_SELECTION_TOOL::ctrlClickHighlights(), EDIT_TOOL::DeleteItems(), DIALOG_CLEANUP_TRACKS_AND_VIAS::DIALOG_CLEANUP_TRACKS_AND_VIAS(), DIALOG_DRC::DIALOG_DRC(), DIALOG_EXPORT_3DFILE::DIALOG_EXPORT_3DFILE(), DIALOG_EXPORT_IDF3::DIALOG_EXPORT_IDF3(), DIALOG_EXPORT_STEP::DIALOG_EXPORT_STEP(), DIALOG_FOOTPRINT_PROPERTIES::DIALOG_FOOTPRINT_PROPERTIES(), DIALOG_IMPORT_GFX::DIALOG_IMPORT_GFX(), DIALOG_IMPORT_NETLIST::DIALOG_IMPORT_NETLIST(), DIALOG_UPDATE_PCB::DIALOG_UPDATE_PCB(), PCB_TOOL_BASE::displayOptions(), PCB_VIEWER_TOOLS::displayOptions(), BOARD_EDITOR_CONTROL::doCrossProbePcbToSch(), EDIT_TOOL::doMoveSelection(), PCB_SELECTION_TOOL::doSyncSelection(), PCB_EDIT_FRAME::ExchangeFootprint(), PCB_EDIT_FRAME::ExecuteRemoteCommand(), EDIT_TOOL::Flip(), PCB_BASE_EDIT_FRAME::GetColorSettings(), GetMagneticItemsSettings(), GetUserOrigin(), BOARD_INSPECTION_TOOL::HighlightItem(), DIALOG_PLOT::init_Dialog(), DIALOG_EXPORT_SVG::initDialog(), DIALOG_GEN_FOOTPRINT_POSITION::initDialog(), DIALOG_GENDRILL::initDialog(), DIALOG_BOARD_REANNOTATE::InitValues(), ROUTER_TOOL::InlineDrag(), PCB_ORIGIN_TRANSFORMS::invertXAxis(), PCB_ORIGIN_TRANSFORMS::invertYAxis(), PCB_EDIT_FRAME::KiwayMailIn(), FOOTPRINT_EDIT_FRAME::LoadFootprintFromBoard(), DIALOG_COPPER_ZONE::loadPersistentNetSortConfigurations(), PCB_SELECTION_TOOL::Main(), PCB_EDIT_FRAME::onBoardLoaded(), DIALOG_PRINT_PCBNEW::onColorModeClicked(), DIALOG_DRC::OnDRCItemSelected(), DIALOG_GEN_FOOTPRINT_POSITION::OnGenerate(), PCB_EDIT_FRAME::OnModify(), PCB_EDIT_FRAME::OnNetlistChanged(), APPEARANCE_CONTROLS::onObjectVisibilityChanged(), DIALOG_EXPORT_SVG::onPagePerLayerClicked(), APPEARANCE_CONTROLS::onRatsnestMode(), PCB_POINT_EDITOR::OnSelectionChange(), BOARD_EDITOR_CONTROL::PlaceFootprint(), BOARD_COMMIT::Push(), PNS::TOOL_BASE::Reset(), EDIT_TOOL::Rotate(), DIALOG_PRINT_PCBNEW::saveSettings(), PCB_EDIT_FRAME::SetActiveLayer(), PCB_EDIT_FRAME::setupUIConditions(), APPEARANCE_CONTROLS::setVisibleObjects(), PCB_EDIT_FRAME::ShowBoardSetupDialog(), DIALOG_COPPER_ZONE::storePersistentNetSortConfigurations(), PCB_EDIT_FRAME::ToggleLayersManager(), PCB_EDIT_FRAME::ToggleProperties(), PCB_EDIT_FRAME::ToggleSearch(), PCB_EDITOR_CONDITIONS::trackFillDisplayFunc(), DIALOG_FOOTPRINT_PROPERTIES::TransferDataFromWindow(), DIALOG_IMPORT_GFX::TransferDataFromWindow(), DIALOG_PRINT_PCBNEW::TransferDataToWindow(), DIALOG_GENDRILL::UpdateConfig(), APPEARANCE_CONTROLS::UpdateDisplayOptions(), PCB_EDITOR_CONDITIONS::viaFillDisplayFunc(), APPEARANCE_CONTROLS::~APPEARANCE_CONTROLS(), DIALOG_BOARD_REANNOTATE::~DIALOG_BOARD_REANNOTATE(), DIALOG_CLEANUP_TRACKS_AND_VIAS::~DIALOG_CLEANUP_TRACKS_AND_VIAS(), DIALOG_DRC::~DIALOG_DRC(), DIALOG_EXPORT_3DFILE::~DIALOG_EXPORT_3DFILE(), DIALOG_EXPORT_IDF3::~DIALOG_EXPORT_IDF3(), DIALOG_EXPORT_STEP::~DIALOG_EXPORT_STEP(), DIALOG_EXPORT_SVG::~DIALOG_EXPORT_SVG(), DIALOG_FOOTPRINT_PROPERTIES::~DIALOG_FOOTPRINT_PROPERTIES(), DIALOG_IMPORT_GFX::~DIALOG_IMPORT_GFX(), DIALOG_IMPORT_NETLIST::~DIALOG_IMPORT_NETLIST(), and DIALOG_UPDATE_PCB::~DIALOG_UPDATE_PCB().

◆ GetPlotSettings()

const PCB_PLOT_PARAMS & PCB_BASE_FRAME::GetPlotSettings ( ) const
virtual

Return the PCB_PLOT_PARAMS for the BOARD owned by this frame.

Reimplemented in FOOTPRINT_EDIT_FRAME.

Definition at line 669 of file pcb_base_frame.cpp.

670{
671 return m_pcb->GetPlotOptions();
672}
const PCB_PLOT_PARAMS & GetPlotOptions() const
Definition: board.h:629

References BOARD::GetPlotOptions(), and m_pcb.

Referenced by DIALOG_PLOT::CreateDrillFile(), DIALOG_GENDRILL::DIALOG_GENDRILL(), DIALOG_PLOT::DIALOG_PLOT(), FOOTPRINT_EDIT_FRAME::GetPlotSettings(), and PCB_EDIT_FRAME::ToPlotter().

◆ GetRedoCommandCount()

virtual int EDA_BASE_FRAME::GetRedoCommandCount ( ) const
inlinevirtualinherited

◆ GetScreen()

PCB_SCREEN * PCB_BASE_FRAME::GetScreen ( ) const
inlineoverridevirtual

Return a pointer to a BASE_SCREEN or one of its derivatives.

It is overloaded by derived classes to return SCH_SCREEN or PCB_SCREEN.

Reimplemented from EDA_DRAW_FRAME.

Definition at line 221 of file pcb_base_frame.h.

virtual BASE_SCREEN * GetScreen() const
Return a pointer to a BASE_SCREEN or one of its derivatives.

References EDA_DRAW_FRAME::GetScreen().

Referenced by FOOTPRINT_EDIT_FRAME::Clear_Pcb(), PCB_EDIT_FRAME::Clear_Pcb(), FOOTPRINT_EDIT_FRAME::ClearModify(), FOOTPRINT_EDITOR_CONTROL::CreateFootprint(), PCB_EDIT_FRAME::doAutoSave(), DRAWING_TOOL::drawShape(), DRAWING_TOOL::DrawVia(), PCB_EDIT_FRAME::ExportSpecctraFile(), PCB_EDIT_FRAME::Files_io_from_id(), GetActiveLayer(), FP_TREE_SYNCHRONIZING_ADAPTER::GetAttr(), FP_TREE_SYNCHRONIZING_ADAPTER::GetValue(), ROUTER_TOOL::handleLayerSwitch(), FOOTPRINT_EDIT_FRAME::IsContentModified(), PCB_EDIT_FRAME::IsContentModified(), PCB_CONTROL::LayerToggle(), FOOTPRINT_EDIT_FRAME::LoadFootprintFromBoard(), FOOTPRINT_EDIT_FRAME::LoadFootprintFromLibrary(), EDIT_TOOL::MoveExact(), FOOTPRINT_EDITOR_CONTROL::NewFootprint(), PCB_EDIT_FRAME::OnExportSTEP(), OnModify(), FOOTPRINT_EDIT_FRAME::OpenProjectFiles(), PCB_EDIT_FRAME::OpenProjectFiles(), PCB_EDIT_FRAME::PrepareLayerIndicator(), FOOTPRINT_EDIT_FRAME::RevertFootprint(), PCB_EDIT_FRAME::SavePcbFile(), DIALOG_FIND::search(), ROUTER_TOOL::SelectCopperLayerPair(), SetActiveLayer(), SetPageSettings(), PCB_EDIT_FRAME::SetPageSettings(), UpdateStatusBar(), and DISPLAY_FOOTPRINTS_FRAME::~DISPLAY_FOOTPRINTS_FRAME().

◆ GetScreenDesc()

wxString EDA_DRAW_FRAME::GetScreenDesc ( ) const
virtualinherited

Reimplemented in SCH_EDIT_FRAME.

Definition at line 1043 of file eda_draw_frame.cpp.

1044{
1045 // Virtual function. Base class implementation returns an empty string.
1046 return wxEmptyString;
1047}

Referenced by EDA_DRAW_FRAME::PrintDrawingSheet(), and PCB_EDIT_FRAME::SetPageSettings().

◆ GetSettingsManager()

◆ GetSeverity()

SEVERITY PCB_BASE_FRAME::GetSeverity ( int  aErrorCode) const
overridevirtual

Reimplemented from EDA_BASE_FRAME.

Definition at line 932 of file pcb_base_frame.cpp.

933{
934 if( aErrorCode >= CLEANUP_FIRST )
935 return RPT_SEVERITY_ACTION;
936
938
939 return bds.m_DRCSeverities[ aErrorCode ];
940}
std::map< int, SEVERITY > m_DRCSeverities
@ CLEANUP_FIRST
Definition: cleanup_item.h:33
@ RPT_SEVERITY_ACTION

References CLEANUP_FIRST, GetBoard(), BOARD::GetDesignSettings(), BOARD_DESIGN_SETTINGS::m_DRCSeverities, and RPT_SEVERITY_ACTION.

◆ GetShowPolarCoords()

bool EDA_DRAW_FRAME::GetShowPolarCoords ( ) const
inlineinherited

For those frames that support polar coordinates.

Definition at line 120 of file eda_draw_frame.h.

120{ return m_polarCoords; }

References EDA_DRAW_FRAME::m_polarCoords.

Referenced by EDITOR_CONDITIONS::polarCoordFunc(), COMMON_TOOLS::TogglePolarCoords(), GERBVIEW_FRAME::UpdateStatusBar(), and UpdateStatusBar().

◆ GetTitleBlock()

const TITLE_BLOCK & PCB_BASE_FRAME::GetTitleBlock ( ) const
overridevirtual

Implements EDA_DRAW_FRAME.

Definition at line 632 of file pcb_base_frame.cpp.

633{
634 return m_pcb->GetTitleBlock();
635}
TITLE_BLOCK & GetTitleBlock()
Definition: board.h:632

References BOARD::GetTitleBlock(), and m_pcb.

◆ GetToolCanvas()

wxWindow * EDA_DRAW_FRAME::GetToolCanvas ( ) const
inlineoverridevirtualinherited

Canvas access.

Implements TOOLS_HOLDER.

Definition at line 417 of file eda_draw_frame.h.

417{ return GetCanvas(); }

References EDA_DRAW_FRAME::GetCanvas().

◆ GetToolManager()

TOOL_MANAGER * TOOLS_HOLDER::GetToolManager ( ) const
inlineinherited

Return the MVC controller.

Definition at line 54 of file tools_holder.h.

54{ return m_toolManager; }

References TOOLS_HOLDER::m_toolManager.

Referenced by PROJECT_TREE_ITEM::Activate(), FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), SYMBOL_EDITOR_CONTROL::AddSymbolToSchematic(), PCB_PROPERTIES_PANEL::AfterCommit(), APPEARANCE_CONTROLS::APPEARANCE_CONTROLS(), SCH_NAVIGATE_TOOL::Back(), BOARD_COMMIT::BOARD_COMMIT(), SCH_NAVIGATE_TOOL::changeSheet(), FOOTPRINT_VIEWER_FRAME::ClickOnFootprintList(), TOOLS_HOLDER::CommonSettingsChanged(), DIALOG_FOOTPRINT_CHECKER::deleteAllMarkers(), DIALOG_ERC::deleteAllMarkers(), DIALOG_DRC::deleteAllMarkers(), DIALOG_BOARD_REANNOTATE::DIALOG_BOARD_REANNOTATE(), DIALOG_MIGRATE_BUSES::DIALOG_MIGRATE_BUSES(), PL_DRAW_PANEL_GAL::DisplayDrawingSheet(), DIALOG_CLEANUP_GRAPHICS::doCleanup(), DIALOG_CLEANUP_TRACKS_AND_VIAS::doCleanup(), SIM_PLOT_FRAME::doCloseWindow(), DIALOG_GLOBAL_DELETION::DoGlobalDeletions(), SCH_FIELD::DoHypertextAction(), SCH_TEXT::DoHypertextAction(), SCH_TEXTBOX::DoHypertextAction(), DRAWING_TOOL::DrawVia(), TRACK_WIDTH_MENU::eventHandler(), DIFF_PAIR_MENU::eventHandler(), SCH_EDIT_FRAME::ExecuteRemoteCommand(), PCB_EDIT_FRAME::ExecuteRemoteCommand(), SCH_NAVIGATE_TOOL::Forward(), GERBVIEW_FRAME::GERBVIEW_FRAME(), SYMBOL_TREE_SYNCHRONIZING_ADAPTER::GetContextMenuTool(), FP_TREE_SYNCHRONIZING_ADAPTER::GetContextMenuTool(), PL_EDITOR_FRAME::GetLayoutFromRedoList(), PL_EDITOR_FRAME::GetLayoutFromUndoList(), DIALOG_PAD_PROPERTIES::initValues(), ROUTER_TOOL::InlineBreakTrack(), SCH_EDIT_FRAME::KiwayMailIn(), PCB_EDIT_FRAME::KiwayMailIn(), PCB_EDIT_FRAME::LoadProjectSettings(), FOOTPRINT_EDIT_FRAME::LoadSettings(), SYMBOL_EDIT_FRAME::LoadSymbol(), SYMBOL_EDIT_FRAME::LoadSymbolFromSchematic(), PROPERTIES_FRAME::OnAcceptPrms(), DIALOG_DRC::OnActivateDlg(), DIALOG_DRC::OnCancelClick(), DIALOG_FOOTPRINT_CHECKER::OnCancelClick(), DIALOG_INSPECTOR::onCellClicked(), DIALOG_ERC::OnCloseErcDialog(), DIALOG_DRC::OnDeleteOneClick(), DIALOG_ERC::OnDeleteOneClick(), DIALOG_FOOTPRINT_CHECKER::OnDeleteOneClick(), DIALOG_DRC::OnDRCItemRClick(), DIALOG_DRC::OnDRCItemSelected(), DIALOG_ERC::OnERCItemSelected(), DIALOG_CONSTRAINTS_REPORTER::OnErrorLinkClicked(), KICAD_MANAGER_FRAME::OnIdle(), FOOTPRINTS_LISTBOX::OnLeftDClick(), APPEARANCE_CONTROLS::onNetclassContextMenu(), APPEARANCE_CONTROLS::onNetContextMenu(), PCB_EDIT_FRAME::OnNetlistChanged(), GERBER_LAYER_WIDGET::onPopupSelection(), SIM_PLOT_FRAME::onProbe(), PCB_EDIT_FRAME::OnRemoveTeardropTool(), DIALOG_PLOT::onRunDRC(), DIALOG_DRC::OnRunDRCClick(), PCB_EDIT_FRAME::OnRunTeardropTool(), HIERARCHY_PANE::onSelectSheetPath(), SCH_EDIT_FRAME::onSize(), PCB_EDIT_FRAME::onSize(), SYMBOL_TREE_PANE::onSymbolSelected(), DIALOG_SYMBOL_FIELDS_TABLE::OnTableRangeSelected(), SIM_PLOT_FRAME::onTune(), PANEL_KICAD_LAUNCHER::PANEL_KICAD_LAUNCHER(), PANEL_SELECTION_FILTER::PANEL_SELECTION_FILTER(), DIALOG_UPDATE_PCB::PerformUpdate(), DIALOG_PLOT::Plot(), TOOLS_HOLDER::PopTool(), SCH_EDIT_FRAME::PutDataInPreviousState(), FOOTPRINT_WIZARD_FRAME::PythonPluginsReload(), rebuildConnectivity(), PL_EDITOR_FRAME::RollbackFromUndo(), FOOTPRINT_EDIT_FRAME::SaveFootprintToBoard(), PCB_EDIT_FRAME::SaveProjectSettings(), EDA_3D_VIEWER_FRAME::SaveSettings(), FOOTPRINT_EDIT_FRAME::SaveSettings(), DIALOG_FIND::search(), FOOTPRINT_SEARCH_HANDLER::SelectItems(), ZONE_SEARCH_HANDLER::SelectItems(), TEXT_SEARCH_HANDLER::SelectItems(), CVPCB_MAINFRAME::setupEventHandlers(), TOOLS_HOLDER::ShowChangedLanguage(), APPEARANCE_CONTROLS::showNetclass(), SYMBOL_VIEWER_FRAME::SYMBOL_VIEWER_FRAME(), DIALOG_LIB_TEXT_PROPERTIES::TransferDataFromWindow(), DIALOG_LIB_TEXTBOX_PROPERTIES::TransferDataFromWindow(), DIALOG_SYMBOL_PROPERTIES::TransferDataFromWindow(), DIALOG_GRID_SETTINGS::TransferDataFromWindow(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::TransferDataFromWindow(), DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataFromWindow(), DIALOG_PAD_PROPERTIES::TransferDataFromWindow(), DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::TransferDataToWindow(), DIALOG_LIB_TEXT_PROPERTIES::TransferDataToWindow(), DIALOG_SYMBOL_FIELDS_TABLE::TransferDataToWindow(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::TransferDataToWindow(), PCB_PROPERTIES_PANEL::UpdateData(), DIALOG_DRC::updateDisplayedCounts(), CVPCB_MAINFRAME::updateFootprintViewerOnIdle(), NET_GRID_TABLE::updateNetVisibility(), PCB_PROPERTIES_PANEL::valueChanged(), DIALOG_IMPORT_NETLIST::~DIALOG_IMPORT_NETLIST(), and DIALOG_UPDATE_PCB::~DIALOG_UPDATE_PCB().

◆ GetType()

HOLDER_TYPE KIWAY_HOLDER::GetType ( ) const
inlineinherited

Definition at line 46 of file kiway_holder.h.

46{ return m_type; }
HOLDER_TYPE m_type
Definition: kiway_holder.h:85

References KIWAY_HOLDER::m_type.

Referenced by DIALOG_SHIM::DIALOG_SHIM().

◆ GetUndoCommandCount()

◆ GetUnitPair()

void EDA_DRAW_FRAME::GetUnitPair ( EDA_UNITS aPrimaryUnit,
EDA_UNITS aSecondaryUnits 
)
inherited

Get the pair or units in current use.

The primary unit is the main unit of the frame, and the secondary unit is the unit of the other system that was used most recently.

Definition at line 1172 of file eda_draw_frame.cpp.

1173{
1175
1176 aPrimaryUnit = GetUserUnits();
1177 aSecondaryUnits = EDA_UNITS::MILS;
1178
1179 if( EDA_UNIT_UTILS::IsImperialUnit( aPrimaryUnit ) )
1180 {
1181 if( cmnTool )
1182 aSecondaryUnits = cmnTool->GetLastMetricUnits();
1183 else
1184 aSecondaryUnits = EDA_UNITS::MILLIMETRES;
1185 }
1186 else
1187 {
1188 if( cmnTool )
1189 aSecondaryUnits = cmnTool->GetLastImperialUnits();
1190 else
1191 aSecondaryUnits = EDA_UNITS::MILS;
1192 }
1193}
EDA_UNITS GetLastImperialUnits()
Definition: common_tools.h:77
EDA_UNITS GetLastMetricUnits()
Definition: common_tools.h:76
bool IsImperialUnit(EDA_UNITS aUnit)
Definition: eda_units.cpp:29

References COMMON_TOOLS::GetLastImperialUnits(), COMMON_TOOLS::GetLastMetricUnits(), TOOL_MANAGER::GetTool(), UNITS_PROVIDER::GetUserUnits(), EDA_UNIT_UTILS::IsImperialUnit(), TOOLS_HOLDER::m_toolManager, MILLIMETRES, and MILS.

Referenced by GRID_MENU::BuildChoiceList(), and PCB_EDIT_FRAME::UpdateTrackWidthSelectBox().

◆ GetUntranslatedAboutTitle()

const wxString & EDA_BASE_FRAME::GetUntranslatedAboutTitle ( ) const
inlineinherited

Definition at line 508 of file eda_base_frame.h.

508{ return m_aboutTitle; }

References EDA_BASE_FRAME::m_aboutTitle.

Referenced by DIALOG_ABOUT::DIALOG_ABOUT(), and COMMON_CONTROL::ReportBug().

◆ GetUserOrigin()

const VECTOR2I PCB_BASE_FRAME::GetUserOrigin ( ) const

Definition at line 611 of file pcb_base_frame.cpp.

612{
613 VECTOR2I origin( 0, 0 );
614
615 switch( GetPcbNewSettings()->m_Display.m_DisplayOrigin )
616 {
618 case PCB_DISPLAY_ORIGIN::PCB_ORIGIN_AUX: origin = GetAuxOrigin(); break;
620 default: wxASSERT( false ); break;
621 }
622
623 return origin;
624}
const VECTOR2I & GetAuxOrigin() const
const VECTOR2I & GetGridOrigin() const override
Return the absolute coordinates of the origin of the snap grid.
@ PCB_ORIGIN_AUX
@ PCB_ORIGIN_GRID
@ PCB_ORIGIN_PAGE

References GetAuxOrigin(), GetGridOrigin(), GetPcbNewSettings(), PCB_ORIGIN_AUX, PCB_ORIGIN_GRID, and PCB_ORIGIN_PAGE.

Referenced by PCB_ORIGIN_TRANSFORMS::getUserXOrigin(), and PCB_ORIGIN_TRANSFORMS::getUserYOrigin().

◆ GetUserUnits()

EDA_UNITS UNITS_PROVIDER::GetUserUnits ( ) const
inlineinherited

Definition at line 42 of file units_provider.h.

42{ return m_userUnits; }
EDA_UNITS m_userUnits

References UNITS_PROVIDER::m_userUnits.

Referenced by DIALOG_CONSTRAINTS_REPORTER::AddPage(), PG_UNIT_EDITOR::CreateControls(), DIALOG_SHIM::DIALOG_SHIM(), DIALOG_TRACK_VIA_PROPERTIES::DIALOG_TRACK_VIA_PROPERTIES(), PL_EDITOR_FRAME::DisplayGridMsg(), EDA_DRAW_FRAME::DisplayUnitsMsg(), DRAWING_TOOL::drawArc(), DRAWING_TOOL::DrawDimension(), DRAWING_TOOL::drawShape(), DRAWING_TOOL::DrawSpecificationStackup(), EVT_GRID_CMD_CELL_CHANGED(), PROPERTIES_PANEL::extractValueAndWritability(), FP_TEXT_GRID_TABLE::FP_TEXT_GRID_TABLE(), PCB_EDIT_FRAME::GenFootprintsReport(), GERBER_DRAW_ITEM::GetMsgPanelInfo(), EDA_DRAW_FRAME::GetUnitPair(), WX_GRID::GetUnitValue(), GetUserUnits(), UNIT_BINDER::init(), GERBVIEW_INSPECTION_TOOL::MeasureTool(), PCB_VIEWER_TOOLS::MeasureTool(), UNITS_PROVIDER::MessageTextFromValue(), PANEL_SETUP_BOARD_STACKUP::onAdjustDielectricThickness(), WX_GRID::onCellEditorHidden(), PANEL_SETUP_BOARD_STACKUP::onExportToClipboard(), PANEL_SETUP_NETCLASSES::onUnitsChanged(), UNIT_BINDER::onUnitsChanged(), DIALOG_TRACK_VIA_PROPERTIES::onUnitsChanged(), DIALOG_NET_INSPECTOR::onUnitsChanged(), PANEL_PREVIEW_3D_MODEL::PANEL_PREVIEW_3D_MODEL(), PANEL_SETUP_NETCLASSES::PANEL_SETUP_NETCLASSES(), PG_UNIT_EDITOR::PG_UNIT_EDITOR(), PIN_TABLE_DATA_MODEL::PIN_TABLE_DATA_MODEL(), PCB_CONTROL::placeBoardItems(), POSITION_RELATIVE_TOOL::PositionRelative(), PROPERTIES_PANEL::rebuildProperties(), DRC_TOOL::RunTests(), SCH_EDIT_FRAME::SaveSettings(), EDA_DRAW_FRAME::SaveSettings(), WX_GRID::SetUnitsProvider(), PIN_TABLE_DATA_MODEL::SetValue(), FP_TEXT_GRID_TABLE::SetValue(), GERBVIEW_INSPECTION_TOOL::ShowDCodes(), UNITS_PROVIDER::StringFromValue(), COMMON_TOOLS::ToggleUnits(), EDA_DRAW_FRAME::ToggleUserUnits(), EDITOR_CONDITIONS::unitsFunc(), GERBVIEW_FRAME::updateDCodeSelectBox(), DIALOG_DIMENSION_PROPERTIES::updateDimensionFromDialog(), PG_UNIT_EDITOR::UpdateFrame(), PNS_TUNE_STATUS_POPUP::UpdateStatus(), PL_EDITOR_FRAME::UpdateStatusBar(), UpdateUserUnits(), PCB_EDIT_FRAME::UpdateViaSizeSelectBox(), DRC_TOOL::userUnits(), and UNITS_PROVIDER::ValueFromString().

◆ GetViewerSettingsBase()

PCB_VIEWERS_SETTINGS_BASE * PCB_BASE_FRAME::GetViewerSettingsBase ( ) const
virtual

Reimplemented in DISPLAY_FOOTPRINTS_FRAME.

Definition at line 967 of file pcb_base_frame.cpp.

968{
969 switch( GetFrameType() )
970 {
971 case FRAME_PCB_EDITOR:
975 default:
976 return Pgm().GetSettingsManager().GetAppSettings<PCBNEW_SETTINGS>();
977
981 case FRAME_CVPCB:
983 return Pgm().GetSettingsManager().GetAppSettings<CVPCB_SETTINGS>();
984 }
985}
FRAME_T GetFrameType() const
@ FRAME_PCB_EDITOR
Definition: frame_type.h:40
@ FRAME_FOOTPRINT_VIEWER_MODAL
Definition: frame_type.h:43
@ FRAME_CVPCB_DISPLAY
Definition: frame_type.h:49
@ FRAME_FOOTPRINT_VIEWER
Definition: frame_type.h:42
@ FRAME_FOOTPRINT_WIZARD
Definition: frame_type.h:44
@ FRAME_FOOTPRINT_PREVIEW
Definition: frame_type.h:46
@ FRAME_FOOTPRINT_EDITOR
Definition: frame_type.h:41
@ FRAME_PCB_DISPLAY3D
Definition: frame_type.h:45
@ FRAME_CVPCB
Definition: frame_type.h:48

References FRAME_CVPCB, FRAME_CVPCB_DISPLAY, FRAME_FOOTPRINT_EDITOR, FRAME_FOOTPRINT_PREVIEW, FRAME_FOOTPRINT_VIEWER, FRAME_FOOTPRINT_VIEWER_MODAL, FRAME_FOOTPRINT_WIZARD, FRAME_PCB_DISPLAY3D, FRAME_PCB_EDITOR, EDA_BASE_FRAME::GetFrameType(), and Pgm().

Referenced by PCB_VIEWER_TOOLS::GraphicOutlines(), PCB_EDITOR_CONDITIONS::graphicsFillDisplayFunc(), PCB_VIEWER_TOOLS::PadDisplayMode(), PCB_EDITOR_CONDITIONS::padFillDisplayFunc(), PCB_EDITOR_CONDITIONS::padNumberDisplayFunc(), PCB_VIEWER_TOOLS::ShowPadNumbers(), PCB_EDITOR_CONDITIONS::textFillDisplayFunc(), and PCB_VIEWER_TOOLS::TextOutlines().

◆ GetWindowSettings()

WINDOW_SETTINGS * EDA_BASE_FRAME::GetWindowSettings ( APP_SETTINGS_BASE aCfg)
virtualinherited

Return a pointer to the window settings for this frame.

By default, points to aCfg->m_Window for top-level frames.

Parameters
aCfgis this frame's config object

Reimplemented in DISPLAY_FOOTPRINTS_FRAME, SIM_PLOT_FRAME, SYMBOL_VIEWER_FRAME, FOOTPRINT_VIEWER_FRAME, and FOOTPRINT_WIZARD_FRAME.

Definition at line 803 of file eda_base_frame.cpp.

804{
805 return &aCfg->m_Window;
806}
WINDOW_SETTINGS m_Window
Definition: app_settings.h:187

References APP_SETTINGS_BASE::m_Window.

Referenced by EDA_BASE_FRAME::LoadSettings(), EDA_DRAW_FRAME::LoadSettings(), EDA_BASE_FRAME::SaveSettings(), and EDA_DRAW_FRAME::SaveSettings().

◆ GetWindowSize()

wxSize EDA_BASE_FRAME::GetWindowSize ( )
inherited

Get the undecorated window size that can be used for restoring the window size.

This is needed for GTK, since the normal wxWidgets GetSize() call will return a window size that includes the window decorations added by the window manager.

Returns
the undecorated window size

Definition at line 1387 of file eda_base_frame.cpp.

1388{
1389#ifdef __WXGTK__
1390 wxSize winSize = GetSize();
1391
1392 // GTK includes the window decorations in the normal GetSize call,
1393 // so we have to use a GTK-specific sizing call that returns the
1394 // non-decorated window size.
1396 {
1397 int width = 0;
1398 int height = 0;
1399 GTKDoGetSize( &width, &height );
1400
1401 winSize.Set( width, height );
1402 }
1403#else
1404 wxSize winSize = GetSize();
1405#endif
1406
1407 return winSize;
1408}
@ KICAD_MAIN_FRAME_T
Definition: frame_type.h:64

References KICAD_MAIN_FRAME_T, and EDA_BASE_FRAME::m_ident.

Referenced by EDA_BASE_FRAME::ensureWindowIsOnScreen(), EDA_BASE_FRAME::OnMaximize(), and EDA_BASE_FRAME::SaveWindowSettings().

◆ GetZoneSettings()

◆ GetZoomLevelIndicator()

const wxString EDA_DRAW_FRAME::GetZoomLevelIndicator ( ) const
inherited

Return a human readable value for display in dialogs.

Definition at line 656 of file eda_draw_frame.cpp.

657{
658 // returns a human readable value which can be displayed as zoom
659 // level indicator in dialogs.
660 double zoom = m_canvas->GetGAL()->GetZoomFactor();
661 return wxString::Format( wxT( "Z %.2f" ), zoom );
662}
EDA_DRAW_PANEL_GAL * m_canvas
This the frame's interface to setting GAL display options.
double GetZoomFactor() const

References Format(), EDA_DRAW_PANEL_GAL::GetGAL(), KIGFX::GAL::GetZoomFactor(), EDA_DRAW_FRAME::m_canvas, and zoom.

Referenced by EDA_DRAW_FRAME::UpdateStatusBar(), and PL_EDITOR_FRAME::UpdateStatusBar().

◆ handleActivateEvent()

void PCB_BASE_FRAME::handleActivateEvent ( wxActivateEvent &  aEvent)
overrideprotectedvirtual

Handle a window activation event.

Reimplemented from EDA_DRAW_FRAME.

Reimplemented in PCB_BASE_EDIT_FRAME.

Definition at line 116 of file pcb_base_frame.cpp.

117{
119
120#if defined( KICAD_USE_3DCONNEXION )
121 if( m_spaceMouse != nullptr )
122 {
123 m_spaceMouse->SetFocus( aEvent.GetActive() );
124 }
125#endif
126}
virtual void handleActivateEvent(wxActivateEvent &aEvent)
Handle a window activation event.
void SetFocus(bool aFocus)
Set the connection to the 3Dconnexion driver to the focus state so that 3DMouse data is routed to thi...

References EDA_DRAW_FRAME::handleActivateEvent(), m_spaceMouse, and NL_PCBNEW_PLUGIN::SetFocus().

Referenced by PCB_BASE_EDIT_FRAME::handleActivateEvent().

◆ handleIconizeEvent()

void PCB_BASE_FRAME::handleIconizeEvent ( wxIconizeEvent &  aEvent)
overrideprotectedvirtual

Handle a window iconize event.

Parameters
aEventis the data for the event.

Reimplemented from EDA_BASE_FRAME.

Definition at line 129 of file pcb_base_frame.cpp.

130{
132
133#if defined( KICAD_USE_3DCONNEXION )
134 if( m_spaceMouse != nullptr && aEvent.IsIconized() )
135 {
136 m_spaceMouse->SetFocus( false );
137 }
138#endif
139}
virtual void handleIconizeEvent(wxIconizeEvent &aEvent)
Handle a window iconize event.

References EDA_BASE_FRAME::handleIconizeEvent(), m_spaceMouse, and NL_PCBNEW_PLUGIN::SetFocus().

◆ HandleSystemColorChange()

void EDA_BASE_FRAME::HandleSystemColorChange ( )
virtualinherited

Update the UI in response to a change in the system colors.

Definition at line 1411 of file eda_base_frame.cpp.

1412{
1413 // Update the icon theme when the system theme changes and update the toolbars
1415 ThemeChanged();
1416
1417 // This isn't handled by ThemeChanged()
1418 if( GetMenuBar() )
1419 {
1420 // For icons in menus, icon scaling & hotkeys
1422 GetMenuBar()->Refresh();
1423 }
1424}
BITMAP_STORE * GetBitmapStore()
Definition: bitmap.cpp:93
void ThemeChanged()
Notifies the store that the icon theme has been changed by the user, so caches must be invalidated.
virtual void ThemeChanged()
Process light/dark theme change.

References GetBitmapStore(), EDA_BASE_FRAME::ReCreateMenuBar(), BITMAP_STORE::ThemeChanged(), and EDA_BASE_FRAME::ThemeChanged().

Referenced by EDA_BASE_FRAME::onSystemColorChange().

◆ HandleUpdateUIEvent()

void EDA_BASE_FRAME::HandleUpdateUIEvent ( wxUpdateUIEvent &  aEvent,
EDA_BASE_FRAME aFrame,
ACTION_CONDITIONS  aCond 
)
staticinherited

Handle events generated when the UI is trying to figure out the current state of the UI controls related to TOOL_ACTIONS (e.g.

enabled, checked, etc.).

Parameters
aEventis the wxUpdateUIEvent to be processed.
aFrameis the frame to get the selection from
aCondare the #UI SELECTION_CONDITIONS used

Definition at line 367 of file eda_base_frame.cpp.

369{
370 bool checkRes = false;
371 bool enableRes = true;
372 bool showRes = true;
373 bool isCut = aEvent.GetId() == ACTIONS::cut.GetUIId();
374 bool isCopy = aEvent.GetId() == ACTIONS::copy.GetUIId();
375 bool isPaste = aEvent.GetId() == ACTIONS::paste.GetUIId();
376 SELECTION& selection = aFrame->GetCurrentSelection();
377
378 try
379 {
380 checkRes = aCond.checkCondition( selection );
381 enableRes = aCond.enableCondition( selection );
382 showRes = aCond.showCondition( selection );
383 }
384 catch( std::exception& )
385 {
386 // Something broke with the conditions, just skip the event.
387 aEvent.Skip();
388 return;
389 }
390
391 if( isCut || isCopy || isPaste )
392 {
393 wxWindow* focus = wxWindow::FindFocus();
394 wxTextEntry* textEntry = dynamic_cast<wxTextEntry*>( focus );
395
396 if( textEntry && isCut && textEntry->CanCut() )
397 enableRes = true;
398 else if( textEntry && isCopy && textEntry->CanCopy() )
399 enableRes = true;
400 else if( textEntry && isPaste && textEntry->CanPaste() )
401 enableRes = true;
402 }
403
404 aEvent.Enable( enableRes );
405 aEvent.Show( showRes );
406
407 // wxWidgets 3.1.5+ includes a field in the event that says if the event supports being
408 // checked, since wxMenuItems don't want to be checked unless they actually are checkable
409#if wxCHECK_VERSION( 3, 1, 5 )
410 if( aEvent.IsCheckable() )
411 aEvent.Check( checkRes );
412#else
413 bool canCheck = true;
414
415 // wxMenuItems don't want to be checked unless they actually are checkable, so we have to
416 // check to see if they can be and can't just universally apply a check in this event.
417 if( wxMenu* menu = dynamic_cast<wxMenu*>( aEvent.GetEventObject() ) )
418 canCheck = menu->FindItem( aEvent.GetId() )->IsCheckable();
419
420 if( canCheck )
421 aEvent.Check( checkRes );
422#endif
423}
static TOOL_ACTION paste
Definition: actions.h:69
static TOOL_ACTION copy
Definition: actions.h:68
static TOOL_ACTION cut
Definition: actions.h:67
virtual SELECTION & GetCurrentSelection()
Get the current selection from the canvas area.
Definition: tools_holder.h:101
int GetUIId() const
Definition: tool_action.h:130
SELECTION_CONDITION enableCondition
Returns true if the UI control should be enabled.
SELECTION_CONDITION checkCondition
Returns true if the UI control should be checked.
SELECTION_CONDITION showCondition
Returns true if the UI control should be shown.

References ACTION_CONDITIONS::checkCondition, ACTIONS::copy, ACTIONS::cut, ACTION_CONDITIONS::enableCondition, TOOLS_HOLDER::GetCurrentSelection(), TOOL_ACTION::GetUIId(), ACTIONS::paste, and ACTION_CONDITIONS::showCondition.

Referenced by EDA_BASE_FRAME::RegisterUIUpdateHandler().

◆ HardRedraw()

void EDA_DRAW_FRAME::HardRedraw ( )
virtualinherited

Rebuild the GAL and redraws the screen.

Call when something went wrong.

Reimplemented in SCH_BASE_FRAME, SCH_EDIT_FRAME, SYMBOL_EDIT_FRAME, PL_EDITOR_FRAME, FOOTPRINT_EDIT_FRAME, and PCB_EDIT_FRAME.

Definition at line 912 of file eda_draw_frame.cpp.

913{
914 // To be implemented by subclasses.
915}

Referenced by COMMON_TOOLS::ZoomRedraw().

◆ HasKiway()

bool KIWAY_HOLDER::HasKiway ( ) const
inlineinherited

Safety check before asking for the Kiway reference.

Returns
true if kiway is non-null

Definition at line 63 of file kiway_holder.h.

64 {
65 return m_kiway != nullptr;
66 }
KIWAY * m_kiway
Definition: kiway_holder.h:84

References KIWAY_HOLDER::m_kiway.

Referenced by DIALOG_SHIM::~DIALOG_SHIM().

◆ help_name()

wxString EDA_BASE_FRAME::help_name ( )
virtualinherited

Reimplemented in KICAD_MANAGER_FRAME.

Definition at line 822 of file eda_base_frame.cpp.

823{
824 return Kiface().GetHelpFileName();
825}
const wxString & GetHelpFileName() const
Return just the basename portion of the current help file.
Definition: kiface_base.h:110

References KIFACE_BASE::GetHelpFileName(), and Kiface().

Referenced by COMMON_CONTROL::ShowHelp().

◆ HideSolderMask()

void PCB_BASE_FRAME::HideSolderMask ( )

Definition at line 546 of file pcb_base_frame.cpp.

547{
548 KIGFX::PCB_VIEW* view = GetCanvas()->GetView();
549
550 if( view && GetBoard()->m_SolderMask && view->HasItem( GetBoard()->m_SolderMask ) )
551 view->Remove( GetBoard()->m_SolderMask );
552}
virtual void Remove(VIEW_ITEM *aItem) override
Remove a VIEW_ITEM from the view.
Definition: pcb_view.cpp:75
bool HasItem(const VIEW_ITEM *aItem) const
Indicates whether or not the given item has been added to the view.
Definition: view.cpp:1577

References GetBoard(), GetCanvas(), PCB_DRAW_PANEL_GAL::GetView(), KIGFX::VIEW::HasItem(), and KIGFX::PCB_VIEW::Remove().

Referenced by EDIT_TOOL::doMoveSelection(), and BOARD_COMMIT::Push().

◆ ImportHotkeyConfigFromFile()

void EDA_BASE_FRAME::ImportHotkeyConfigFromFile ( std::map< std::string, TOOL_ACTION * >  aActionMap,
const wxString &  aDefaultShortname 
)
inherited

Prompt the user for a hotkey file to read, and read it.

Parameters
aActionMapcurrent hotkey map (over which the imported hotkeys will be applied).
aDefaultShortnamea default short name (extension not needed) like Eeschema, KiCad...

◆ initExitKey()

void EDA_BASE_FRAME::initExitKey ( )
protectedinherited

Sets the common key-pair for exiting the application (Ctrl-Q) and ties it to the wxID_EXIT event id.

This is useful in sub-applications to pass the event up to a non-owning window.

Definition at line 1288 of file eda_base_frame.cpp.

1289{
1290 wxAcceleratorEntry entries[1];
1291 entries[0].Set( wxACCEL_CTRL, int( 'Q' ), wxID_EXIT );
1292 wxAcceleratorTable accel( 1, entries );
1293 SetAcceleratorTable( accel );
1294}

◆ isAutoSaveRequired()

virtual bool EDA_BASE_FRAME::isAutoSaveRequired ( ) const
inlineprotectedvirtualinherited

Return the auto save status of the application.

Override this function if your derived frame supports automatic file saving.

Definition at line 628 of file eda_base_frame.h.

628{ return m_autoSaveRequired; }

References EDA_BASE_FRAME::m_autoSaveRequired.

Referenced by EDA_BASE_FRAME::ProcessEvent().

◆ IsContentModified()

bool EDA_BASE_FRAME::IsContentModified ( ) const
virtualinherited

Get if the contents of the frame have been modified since the last save.

Returns
true if the contents of the frame have not been saved

Reimplemented in CVPCB_MAINFRAME, SCH_EDIT_FRAME, SYMBOL_EDIT_FRAME, PL_EDITOR_FRAME, FOOTPRINT_EDIT_FRAME, and PCB_EDIT_FRAME.

Definition at line 1281 of file eda_base_frame.cpp.

1282{
1283 // This function should be overridden in child classes
1284 return false;
1285}

Referenced by GERBVIEW_FRAME::Clear_DrawLayers(), and EDITOR_CONDITIONS::contentModifiedFunc().

◆ IsCurrentTool()

bool TOOLS_HOLDER::IsCurrentTool ( const TOOL_ACTION aAction) const
inherited

Definition at line 119 of file tools_holder.cpp.

120{
121 if( m_toolStack.empty() )
122 return &aAction == &ACTIONS::selectionTool;
123 else
124 return m_toolStack.back() == aAction.GetName();
125}

References TOOL_ACTION::GetName(), TOOLS_HOLDER::m_toolStack, and ACTIONS::selectionTool.

Referenced by SCH_EDIT_TOOL::Init(), SCH_LINE_WIRE_BUS_TOOL::Init(), BOARD_EDITOR_CONTROL::Init(), EDIT_TOOL::Init(), and EDITOR_CONDITIONS::toolFunc().

◆ IsDismissed()

bool KIWAY_PLAYER::IsDismissed ( )
inherited
Returns
false only if both the frame is acting in modal mode and it has not been dismissed yet with DismissModal(). True if the dialog is not modal or if it is modal and has been dismissed.

Definition at line 176 of file kiway_player.cpp.

177{
178 return !m_modal_loop;
179}

References KIWAY_PLAYER::m_modal_loop.

Referenced by SYMBOL_VIEWER_FRAME::doCloseWindow(), FOOTPRINT_VIEWER_FRAME::doCloseWindow(), and FOOTPRINT_WIZARD_FRAME::doCloseWindow().

◆ IsGridVisible()

◆ IsModal()

bool KIWAY_PLAYER::IsModal ( ) const
inlineoverridevirtualinherited

Return true if the frame is shown in our modal mode and false if the frame is shown as an usual frame.

In modal mode, the caller that created the frame is responsible to Destroy() this frame after closing.

Reimplemented from EDA_BASE_FRAME.

Definition at line 159 of file kiway_player.h.

159{ return m_modal; }

References KIWAY_PLAYER::m_modal.

Referenced by FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), SYMBOL_EDITOR_CONTROL::AddSymbolToSchematic(), SYMBOL_VIEWER_FRAME::doCloseWindow(), FOOTPRINT_VIEWER_FRAME::doCloseWindow(), FOOTPRINT_WIZARD_FRAME::doCloseWindow(), KIWAY_PLAYER::ShowModal(), and SYMBOL_VIEWER_FRAME::SYMBOL_VIEWER_FRAME().

◆ IsScriptingConsoleVisible()

bool EDA_DRAW_FRAME::IsScriptingConsoleVisible ( )
inherited

Gets the current visibility of the scripting console window.

Definition at line 260 of file eda_draw_frame.cpp.

261{
262 KIWAY_PLAYER* frame = Kiway().Player( FRAME_PYTHON, false );
263 return frame && frame->IsVisible();
264}
A wxFrame capable of the OpenProjectFiles function, meaning it can load a portion of a KiCad project.
Definition: kiway_player.h:66
virtual KIWAY_PLAYER * Player(FRAME_T aFrameType, bool doCreate=true, wxTopLevelWindow *aParent=nullptr)
Return the KIWAY_PLAYER* given a FRAME_T.
Definition: kiway.cpp:394
@ FRAME_PYTHON
Definition: frame_type.h:51

References FRAME_PYTHON, KIWAY_HOLDER::Kiway(), and KIWAY::Player().

Referenced by EDITOR_CONDITIONS::consoleVisibleFunc().

◆ IsType()

bool EDA_BASE_FRAME::IsType ( FRAME_T  aType) const
inlineinherited

Definition at line 200 of file eda_base_frame.h.

200{ return m_ident == aType; }

References EDA_BASE_FRAME::m_ident.

Referenced by SYMBOL_EDITOR_CONTROL::AddLibrary(), PCB_CONTROL::AddLibrary(), SYMBOL_EDITOR_CONTROL::AddSymbol(), ALIGN_DISTRIBUTE_TOOL::AlignBottom(), ALIGN_DISTRIBUTE_TOOL::AlignCenterX(), ALIGN_DISTRIBUTE_TOOL::AlignCenterY(), ALIGN_DISTRIBUTE_TOOL::AlignTop(), BOARD_COMMIT::BOARD_COMMIT(), PCB_POINT_EDITOR::changeArcEditMode(), CONVERT_TOOL::CreatePolys(), SYMBOL_EDITOR_CONTROL::CutCopyDelete(), SYMBOL_EDITOR_CONTROL::DdAddLibrary(), DIALOG_GRID_SETTINGS::DIALOG_GRID_SETTINGS(), DIALOG_MOVE_EXACT::DIALOG_MOVE_EXACT(), DIALOG_NON_COPPER_ZONES_EDITOR::DIALOG_NON_COPPER_ZONES_EDITOR(), DIALOG_PUSH_PAD_PROPERTIES::DIALOG_PUSH_PAD_PROPERTIES(), DIALOG_RULE_AREA_PROPERTIES::DIALOG_RULE_AREA_PROPERTIES(), KIGFX::SCH_VIEW::DisplaySheet(), ALIGN_DISTRIBUTE_TOOL::DistributeHorizontally(), ALIGN_DISTRIBUTE_TOOL::DistributeVertically(), ALIGN_DISTRIBUTE_TOOL::doAlignLeft(), ALIGN_DISTRIBUTE_TOOL::doAlignRight(), ALIGN_DISTRIBUTE_TOOL::doDistributeCentersHorizontally(), ALIGN_DISTRIBUTE_TOOL::doDistributeCentersVertically(), ALIGN_DISTRIBUTE_TOOL::doDistributeGapsHorizontally(), ALIGN_DISTRIBUTE_TOOL::doDistributeGapsVertically(), COMMON_TOOLS::doZoomFit(), SYMBOL_EDITOR_CONTROL::DuplicateSymbol(), SYMBOL_EDITOR_CONTROL::EditSymbol(), SYMBOL_EDITOR_CONTROL::ExportSymbol(), PCB_EDITOR_CONDITIONS::get45degModeFunc(), SCH_BASE_FRAME::GetColorSettings(), FOOTPRINT::GetMsgPanelInfo(), ALIGN_DISTRIBUTE_TOOL::GetSelections(), DIALOG_FIELD_PROPERTIES::init(), SYMBOL_EDITOR_CONTROL::Init(), CONVERT_TOOL::Init(), PCB_SELECTION_TOOL::Init(), DIALOG_PAD_PROPERTIES::initValues(), loadFootprint(), PCB_SELECTION_TOOL::Main(), APPEARANCE_CONTROLS::OnColorSwatchChanged(), SYMBOL_EDITOR_CONTROL::OnDeMorgan(), APPEARANCE_CONTROLS::onObjectVisibilityChanged(), PCB_POINT_EDITOR::OnSelectionChange(), PCB_CONTROL::Paste(), SYMBOL_EDITOR_CONTROL::PinLibrary(), PCB_BASE_EDIT_FRAME::PutDataInPreviousState(), SYMBOL_EDITOR_CONTROL::RenameSymbol(), PCB_SELECTION_TOOL::Reset(), SYMBOL_EDITOR_CONTROL::Revert(), SYMBOL_EDITOR_CONTROL::Save(), APPEARANCE_CONTROLS::setVisibleObjects(), EE_INSPECTION_TOOL::ShowDatasheet(), EE_INSPECTION_TOOL::ShowERCDialog(), SYMBOL_EDITOR_CONTROL::ToggleSymbolTree(), SYMBOL_EDITOR_CONTROL::UnpinLibrary(), DIALOG_PAGES_SETTINGS::UpdateDrawingSheetExample(), and DRAWING_TOOL::UpdateStatusBar().

◆ IsWritable()

bool EDA_BASE_FRAME::IsWritable ( const wxFileName &  aFileName,
bool  aVerbose = true 
)
inherited

Checks if aFileName can be written.

The function performs a number of tests on aFileName to verify that it can be saved. If aFileName defines a path with no file name, them the path is tested for user write permission. If aFileName defines a file name that does not exist in the path, the path is tested for user write permission. If aFileName defines a file that already exits, the file name is tested for user write permissions.

Note
The file name path must be set or an assertion will be raised on debug builds and return false on release builds.
Parameters
aFileNameThe full path and/or file name of the file to test.
aVerboseIf true will show an error dialog if the file is not writable
Returns
False if aFileName cannot be written.

Definition at line 1188 of file eda_base_frame.cpp.

1189{
1190 wxString msg;
1191 wxFileName fn = aFileName;
1192
1193 // Check for absence of a file path with a file name. Unfortunately KiCad
1194 // uses paths relative to the current project path without the ./ part which
1195 // confuses wxFileName. Making the file name path absolute may be less than
1196 // elegant but it solves the problem.
1197 if( fn.GetPath().IsEmpty() && fn.HasName() )
1198 fn.MakeAbsolute();
1199
1200 wxCHECK_MSG( fn.IsOk(), false,
1201 wxT( "File name object is invalid. Bad programmer!" ) );
1202 wxCHECK_MSG( !fn.GetPath().IsEmpty(), false,
1203 wxT( "File name object path <" ) + fn.GetFullPath() +
1204 wxT( "> is not set. Bad programmer!" ) );
1205
1206 if( fn.IsDir() && !fn.IsDirWritable() )
1207 {
1208 msg.Printf( _( "Insufficient permissions to folder '%s'." ), fn.GetPath() );
1209 }
1210 else if( !fn.FileExists() && !fn.IsDirWritable() )
1211 {
1212 msg.Printf( _( "Insufficient permissions to save file '%s'." ), fn.GetFullPath() );
1213 }
1214 else if( fn.FileExists() && !fn.IsFileWritable() )
1215 {
1216 msg.Printf( _( "Insufficient permissions to save file '%s'." ), fn.GetFullPath() );
1217 }
1218
1219 if( !msg.IsEmpty() )
1220 {
1221 if( aVerbose )
1222 DisplayErrorMessage( this, msg );
1223
1224 return false;
1225 }
1226
1227 return true;
1228}

References _, and DisplayErrorMessage().

Referenced by SCH_EDIT_FRAME::doAutoSave(), PCB_EDIT_FRAME::SavePcbCopy(), PCB_EDIT_FRAME::SavePcbFile(), SCH_EDIT_FRAME::SaveProjectSettings(), and SCH_EDIT_FRAME::saveSchematicFile().

◆ Kiway()

KIWAY & KIWAY_HOLDER::Kiway ( ) const
inlineinherited

Return a reference to the KIWAY that this object has an opportunity to participate in.

A KIWAY_HOLDER is not necessarily a KIWAY_PLAYER.

Definition at line 53 of file kiway_holder.h.

54 {
55 wxASSERT( m_kiway ); // smoke out bugs in Debug build, then Release runs fine.
56 return *m_kiway;
57 }

References KIWAY_HOLDER::m_kiway.

Referenced by PROJECT_TREE_ITEM::Activate(), FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), PCB_BASE_EDIT_FRAME::AddLibrary(), SYMBOL_EDIT_FRAME::AddLibraryFile(), SYMBOL_EDITOR_CONTROL::AddSymbolToSchematic(), SCH_EDIT_FRAME::AskToSaveChanges(), IMPORT_PROJ_HELPER::AssociateFileWithProj(), CVPCB_MAINFRAME::BuildLibrariesListBox(), FOOTPRINT_EDIT_FRAME::buildSaveAsDialog(), SYMBOL_EDIT_FRAME::buildSaveAsDialog(), SYMBOL_EDIT_FRAME::CanCloseSymbolFromSchematic(), SCH_EDIT_FRAME::canCloseWindow(), PCB_EDIT_FRAME::canCloseWindow(), KICAD_MANAGER_FRAME::CloseProject(), COMMON_CONTROL::ConfigurePaths(), DIALOG_CHOOSE_SYMBOL::ConstructRightPanel(), DIALOG_CHOOSE_FOOTPRINT::ConstructRightPanel(), CreateAndShow3D_Frame(), FOOTPRINT_EDITOR_CONTROL::CreateFootprint(), CVPCB_MAINFRAME::CVPCB_MAINFRAME(), SYMBOL_EDIT_FRAME::DdAddLibrary(), DIALOG_LIST_HOTKEYS::DIALOG_LIST_HOTKEYS(), DIALOG_RESCUE_EACH::DIALOG_RESCUE_EACH(), DIALOG_SHIM::DIALOG_SHIM(), SCH_EDIT_FRAME::doCloseWindow(), FIELDS_EDITOR_GRID_TRICKS::doPopupSelection(), FIELDS_GRID_TRICKS::doPopupSelection(), BOARD_EDITOR_CONTROL::EditFpInFpEditor(), SCH_EDITOR_CONTROL::EditWithSymbolEditor(), BACK_ANNOTATE::FetchNetlistFromPCB(), PCB_EDIT_FRAME::FetchNetlistFromSchematic(), SCRIPTING_TOOL::Init(), EDA_DRAW_FRAME::IsScriptingConsoleVisible(), KIWAY_PLAYER::language_change(), KICAD_MANAGER_FRAME::language_change(), DIALOG_CHANGE_SYMBOLS::launchMatchIdSymbolBrowser(), DIALOG_CHANGE_SYMBOLS::launchNewIdSymbolBrowser(), FOOTPRINT_EDIT_FRAME::LoadFootprintFromBoard(), PGM_SINGLE_TOP::MacOpenFile(), SIM_PLOT_FRAME::menuExit(), TEXT_BUTTON_SYMBOL_CHOOSER::OnButtonClick(), TEXT_BUTTON_FP_CHOOSER::OnButtonClick(), PL_EDITOR_FRAME::OnExit(), SCH_EDIT_FRAME::OnExit(), FOOTPRINT_EDIT_FRAME::OnExitKiCad(), SYMBOL_EDIT_FRAME::OnExitKiCad(), FOOTPRINT_VIEWER_FRAME::OnExitKiCad(), SAVE_AS_TRAVERSER::OnFile(), DIALOG_CHOOSE_SYMBOL::OnInitDialog(), KIGFX::WX_VIEW_CONTROLS::onMotion(), SCH_EDIT_FRAME::OnOpenCvpcb(), SCH_EDIT_FRAME::OnOpenPcbnew(), SIM_PLOT_FRAME::onProbe(), PCB_EDIT_FRAME::OnQuit(), DIALOG_SYMBOL_REMAP::OnRemapSymbols(), DIALOG_FIELD_PROPERTIES::OnTextValueSelectButtonClick(), SIM_PLOT_FRAME::onTune(), KICAD_MANAGER_FRAME::OnUnarchiveFiles(), FOOTPRINT_EDIT_FRAME::OnUpdateLoadFootprintFromBoard(), SCH_EDIT_FRAME::OnUpdatePCB(), FOOTPRINT_EDIT_FRAME::OnUpdateSaveFootprintToBoard(), SCH_BASE_FRAME::PickSymbolFromLibBrowser(), KIWAY_HOLDER::Prj(), SCH_EDIT_TOOL::Properties(), BACK_ANNOTATE::PushNewLinksToPCB(), FOOTPRINT_WIZARD_FRAME::PythonPluginsReload(), FOOTPRINT_VIEWER_FRAME::ReCreateFootprintList(), SYMBOL_VIEWER_FRAME::ReCreateLibList(), FOOTPRINT_VIEWER_FRAME::ReCreateLibraryList(), SCH_EDITOR_CONTROL::rescueProject(), PCB_EDIT_FRAME::RunEeschema(), EE_INSPECTION_TOOL::RunSimulation(), SYMBOL_EDIT_FRAME::Save(), SYMBOL_EDIT_FRAME::saveCurrentSymbol(), CVPCB_MAINFRAME::SaveFootprintAssociation(), FOOTPRINT_EDIT_FRAME::SaveFootprintToBoard(), EDA_DRAW_FRAME::ScriptingConsoleEnableDisable(), SelectFootprintFromLibBrowser(), SelectLibrary(), CVPCB_MAINFRAME::SendComponentSelectionToSch(), SCH_EDIT_FRAME::SendCrossProbeClearHighlight(), PCB_EDIT_FRAME::SendCrossProbeItem(), SCH_EDIT_FRAME::SendCrossProbeNetName(), PCB_EDIT_FRAME::SendCrossProbeNetName(), SCH_EDIT_FRAME::sendNetlistToCvpcb(), SCH_EDIT_FRAME::SendSelectItemsToPcb(), PCB_EDIT_FRAME::SendSelectItemsToSch(), SCH_EDIT_FRAME::SetCrossProbeConnection(), SYMBOL_EDIT_FRAME::SetCurSymbol(), PCB_EDIT_FRAME::ShowBoardSetupDialog(), PCB_EDIT_FRAME::ShowFootprintPropertiesDialog(), CVPCB_CONTROL::ShowFootprintViewer(), COMMON_CONTROL::ShowLibraryTable(), COMMON_CONTROL::ShowPlayer(), KICAD_MANAGER_CONTROL::ShowPlayer(), EDA_BASE_FRAME::ShowPreferences(), SCH_EDIT_FRAME::ShowSchematicSetupDialog(), SIM_PLOT_FRAME::SIM_PLOT_FRAME(), PCB_EDIT_FRAME::TestStandalone(), BOARD_EDITOR_CONTROL::UpdateSchematicFromPCB(), DIALOG_EXCHANGE_FOOTPRINTS::ViewAndSelectFootprint(), and DIALOG_SHIM::~DIALOG_SHIM().

◆ kiway_express()

void KIWAY_PLAYER::kiway_express ( KIWAY_EXPRESS aEvent)
protectedinherited

event handler, routes to derivative specific virtual KiwayMailIn()

Definition at line 197 of file kiway_player.cpp.

198{
199 // logging support
200 KiwayMailIn( aEvent ); // call the virtual, override in derived.
201}
virtual void KiwayMailIn(KIWAY_EXPRESS &aEvent)
Receive KIWAY_EXPRESS messages from other players.

References KIWAY_PLAYER::KiwayMailIn().

◆ KiwayMailIn()

void KIWAY_PLAYER::KiwayMailIn ( KIWAY_EXPRESS aEvent)
virtualinherited

Receive KIWAY_EXPRESS messages from other players.

Override it in derived classes.

Reimplemented in CVPCB_MAINFRAME, SCH_EDIT_FRAME, PCB_EDIT_FRAME, SYMBOL_EDIT_FRAME, FOOTPRINT_EDIT_FRAME, and FOOTPRINT_VIEWER_FRAME.

Definition at line 87 of file kiway_player.cpp.

88{
89 // override this in derived classes.
90}

Referenced by KIWAY_PLAYER::kiway_express(), TEXT_BUTTON_FP_CHOOSER::OnButtonClick(), and KIWAY::ProcessEvent().

◆ language_change()

void KIWAY_PLAYER::language_change ( wxCommandEvent &  event)
protectedinherited

An event handler called on a language menu selection.

Definition at line 204 of file kiway_player.cpp.

205{
206 int id = event.GetId();
207
208 // tell all the KIWAY_PLAYERs about the language change.
209 Kiway().SetLanguage( id );
210}
virtual void SetLanguage(int aLanguage)
Change the language and then calls ShowChangedLanguage() on all #KIWAY_PLAYERs.
Definition: kiway.cpp:507

References KIWAY_HOLDER::Kiway(), and KIWAY::SetLanguage().

◆ LibraryFileBrowser()

bool EDA_DRAW_FRAME::LibraryFileBrowser ( bool  doOpen,
wxFileName &  aFilename,
const wxString &  wildcard,
const wxString &  ext,
bool  isDirectory = false,
bool  aIsGlobal = false,
const wxString &  aGlobalPath = wxEmptyString 
)
inherited
Parameters
doOpenif true runs an Open Library browser, otherwise New Library
aFilenamefor New may contain a default name; in both cases return the chosen filename.
wildcarda wildcard to filter the displayed files
extthe library file extension
isDirectoryindicates the library files are directories
Returns
true for OK; false for Cancel.

Definition at line 1050 of file eda_draw_frame.cpp.

1054{
1055 wxString prompt = doOpen ? _( "Select Library" ) : _( "New Library" );
1056 aFilename.SetExt( ext );
1057
1058 wxString projectDir = Prj().IsNullProject() ? aFilename.GetPath() : Prj().GetProjectPath();
1059 wxString defaultDir;
1060
1061 if( aIsGlobal )
1062 {
1063 if( !GetMruPath().IsEmpty() && !GetMruPath().StartsWith( projectDir ) )
1064 defaultDir = GetMruPath();
1065 else
1066 defaultDir = aGlobalPath;
1067 }
1068 else
1069 {
1070 if( !GetMruPath().IsEmpty() && GetMruPath().StartsWith( projectDir ) )
1071 defaultDir = GetMruPath();
1072 else
1073 defaultDir = projectDir;
1074 }
1075
1076 if( isDirectory && doOpen )
1077 {
1078 wxDirDialog dlg( this, prompt, defaultDir, wxDD_DEFAULT_STYLE | wxDD_DIR_MUST_EXIST );
1079
1080 if( dlg.ShowModal() == wxID_CANCEL )
1081 return false;
1082
1083 aFilename = dlg.GetPath();
1084 aFilename.SetExt( ext );
1085 }
1086 else
1087 {
1088 // Ensure the file has a dummy name, otherwise GTK will display the regex from the filter
1089 if( aFilename.GetName().empty() )
1090 aFilename.SetName( wxS( "Library" ) );
1091
1092 wxFileDialog dlg( this, prompt, defaultDir, aFilename.GetFullName(),
1093 wildcard, doOpen ? wxFD_OPEN | wxFD_FILE_MUST_EXIST
1094 : wxFD_SAVE | wxFD_CHANGE_DIR | wxFD_OVERWRITE_PROMPT );
1095
1096 if( dlg.ShowModal() == wxID_CANCEL )
1097 return false;
1098
1099 aFilename = dlg.GetPath();
1100 aFilename.SetExt( ext );
1101 }
1102
1103 SetMruPath( aFilename.GetPath() );
1104
1105 return true;
1106}
wxString GetMruPath() const
void SetMruPath(const wxString &aPath)
virtual const wxString GetProjectPath() const
Return the full path of the project.
Definition: project.cpp:126
virtual bool IsNullProject() const
Check if this project is a null project (i.e.
Definition: project.cpp:138

References _, EDA_BASE_FRAME::GetMruPath(), PROJECT::GetProjectPath(), PROJECT::IsNullProject(), KIWAY_HOLDER::Prj(), and EDA_BASE_FRAME::SetMruPath().

Referenced by PCB_BASE_EDIT_FRAME::AddLibrary(), SYMBOL_EDIT_FRAME::AddLibraryFile(), PCB_BASE_EDIT_FRAME::createNewLibrary(), and SCH_EDITOR_CONTROL::ExportSymbolsToLibrary().

◆ loadCanvasTypeSetting()

EDA_DRAW_PANEL_GAL::GAL_TYPE EDA_DRAW_FRAME::loadCanvasTypeSetting ( )
protectedinherited

Returns the canvas type stored in the application settings.

Definition at line 806 of file eda_draw_frame.cpp.

807{
808#ifdef __WXMAC__
809 // Cairo renderer doesn't handle Retina displays so there's really only one game
810 // in town for Mac
812#endif
813
816
817 if( cfg )
818 canvasType = static_cast<EDA_DRAW_PANEL_GAL::GAL_TYPE>( cfg->m_Graphics.canvas_type );
819
820 if( canvasType < EDA_DRAW_PANEL_GAL::GAL_TYPE_NONE
821 || canvasType >= EDA_DRAW_PANEL_GAL::GAL_TYPE_LAST )
822 {
823 wxASSERT( false );
825 }
826
827 // Legacy canvas no longer supported. Switch to OpenGL, falls back to Cairo on failure
828 if( canvasType == EDA_DRAW_PANEL_GAL::GAL_TYPE_NONE )
830
831 return canvasType;
832}
APP_SETTINGS_BASE is a settings class that should be derived for each standalone KiCad application.
Definition: app_settings.h:110
@ GAL_TYPE_LAST
Sentinel, do not use as a parameter.
@ GAL_TYPE_OPENGL
OpenGL implementation.
@ GAL_TYPE_NONE
GAL not used (the legacy wxDC engine is used)

References APP_SETTINGS_BASE::GRAPHICS::canvas_type, EDA_DRAW_PANEL_GAL::GAL_TYPE_LAST, EDA_DRAW_PANEL_GAL::GAL_TYPE_NONE, EDA_DRAW_PANEL_GAL::GAL_TYPE_OPENGL, Kiface(), KIFACE_BASE::KifaceSettings(), and APP_SETTINGS_BASE::m_Graphics.

Referenced by SCH_BASE_FRAME::createCanvas(), and EDA_DRAW_FRAME::resolveCanvasType().

◆ LoadFootprint()

FOOTPRINT * PCB_BASE_FRAME::LoadFootprint ( const LIB_ID aFootprintId)

Attempt to load aFootprintId from the footprint library table.

Parameters
aFootprintIdis the LIB_ID of component footprint to load.
Returns
the FOOTPRINT if found or NULL if aFootprintId not found in any of the libraries in table returned from Prj().PcbFootprintLibs().

Definition at line 316 of file load_select_footprint.cpp.

317{
318 FOOTPRINT* footprint = nullptr;
319
320 try
321 {
322 footprint = loadFootprint( aFootprintId );
323 }
324 catch( const IO_ERROR& )
325 {
326 }
327
328 return footprint;
329}
Hold an error message and may be used when throwing exceptions containing meaningful error messages.
Definition: ki_exception.h:76
FOOTPRINT * loadFootprint(const LIB_ID &aFootprintId)
Attempts to load aFootprintId from the footprint library table.

References loadFootprint().

Referenced by BOARD_NETLIST_UPDATER::addNewFootprint(), FOOTPRINT_EDITOR_CONTROL::CutCopyFootprint(), FOOTPRINT_EDITOR_CONTROL::DuplicateFootprint(), FOOTPRINT_EDITOR_CONTROL::ExportFootprint(), FOOTPRINT_EDIT_FRAME::LoadFootprintFromLibrary(), DIALOG_EXCHANGE_FOOTPRINTS::processFootprint(), FOOTPRINT_EDITOR_CONTROL::RenameFootprint(), BOARD_NETLIST_UPDATER::replaceFootprint(), and FOOTPRINT_EDITOR_CONTROL::SaveAs().

◆ loadFootprint()

FOOTPRINT * PCB_BASE_FRAME::loadFootprint ( const LIB_ID aFootprintId)
protected

Attempts to load aFootprintId from the footprint library table.

Parameters
aFootprintIdis the LIB_ID of component footprint to load.
Returns
the FOOTPRINT if found or NULL if aFootprintId not found in any of the libraries in the table returned from Prj().PcbFootprintLibs().
Exceptions
IO_ERRORif an I/O error occurs or a PARSE_ERROR if a file parsing error occurs while reading footprint library files.

Definition at line 332 of file load_select_footprint.cpp.

333{
334 FP_LIB_TABLE* fptbl = Prj().PcbFootprintLibs();
335
336 wxCHECK_MSG( fptbl, nullptr, wxT( "Cannot look up LIB_ID in NULL FP_LIB_TABLE." ) );
337
338 FOOTPRINT *footprint = nullptr;
339
340 // When loading a footprint from a library in the footprint editor
341 // the items UUIDs must be keep and not reinitialized
342 bool keepUUID = IsType( FRAME_FOOTPRINT_EDITOR );
343
344 try
345 {
346 footprint = fptbl->FootprintLoadWithOptionalNickname( aFootprintId, keepUUID );
347 }
348 catch( const IO_ERROR& )
349 {
350 }
351
352 // If the footprint is found, clear all net info to be sure there are no broken links to
353 // any netinfo list (should be not needed, but it can be edited from the footprint editor )
354 if( footprint )
355 footprint->ClearAllNets();
356
357 return footprint;
358}
bool IsType(FRAME_T aType) const
void ClearAllNets()
Clear (i.e.
Definition: footprint.cpp:558
FOOTPRINT * FootprintLoadWithOptionalNickname(const LIB_ID &aFootprintId, bool aKeepUUID=false)
Load a footprint having aFootprintId with possibly an empty nickname.
virtual FP_LIB_TABLE * PcbFootprintLibs(KIWAY &aKiway)
Return the table of footprint libraries.
Definition: project.cpp:324

References FOOTPRINT::ClearAllNets(), FP_LIB_TABLE::FootprintLoadWithOptionalNickname(), FRAME_FOOTPRINT_EDITOR, EDA_BASE_FRAME::IsType(), PROJECT::PcbFootprintLibs(), and KIWAY_HOLDER::Prj().

Referenced by FOOTPRINT_VIEWER_FRAME::ClickOnFootprintList(), LoadFootprint(), PCB_EDIT_FRAME::LoadFootprints(), FOOTPRINT_EDIT_FRAME::restoreLastFootprint(), and SelectFootprintFromLibTree().

◆ LoadSettings()

void PCB_BASE_FRAME::LoadSettings ( APP_SETTINGS_BASE aCfg)
overridevirtual

Load common frame parameters from a configuration file.

Don't forget to call the base method or your frames won't remember their positions and sizes.

Reimplemented from EDA_DRAW_FRAME.

Reimplemented in FOOTPRINT_EDIT_FRAME, FOOTPRINT_VIEWER_FRAME, FOOTPRINT_WIZARD_FRAME, and PCB_EDIT_FRAME.

Definition at line 898 of file pcb_base_frame.cpp.

899{
901
902 if( aCfg->m_Window.grid.sizes.empty() )
903 aCfg->m_Window.grid.sizes = aCfg->DefaultGridSizeList();
904
905 // Currently values read from config file are not used because the user cannot
906 // change this config
907 // if( aCfg->m_Window.zoom_factors.empty() )
908 {
910 }
911
912 // Some, but not all, derived classes have a PCBNEW_SETTINGS.
913 if( PCBNEW_SETTINGS* pcbnew_cfg = dynamic_cast<PCBNEW_SETTINGS*>( aCfg ) )
914 m_polarCoords = pcbnew_cfg->m_PolarCoords;
915
916 wxASSERT( GetCanvas() );
917
918 if( GetCanvas() )
919 {
921
922 if( rs )
923 {
926 rs->SetDefaultFont( wxEmptyString ); // Always the KiCad font for PCBs
927 }
928 }
929}
const std::vector< wxString > DefaultGridSizeList() const
void LoadSettings(APP_SETTINGS_BASE *aCfg) override
Load common frame parameters from a configuration file.
void SetDefaultFont(const wxString &aFont)
void SetHighlightFactor(float aFactor)
void SetSelectFactor(float aFactor)
float highlight_factor
How much to brighten highlighted objects by.
Definition: app_settings.h:128
float select_factor
How much to brighten selected objects by.
Definition: app_settings.h:129
std::vector< wxString > sizes
Definition: app_settings.h:53
std::vector< double > zoom_factors
Definition: app_settings.h:96
#define ZOOM_LIST_PCBNEW
Definition: zoom_defines.h:32

References APP_SETTINGS_BASE::DefaultGridSizeList(), GetCanvas(), KIGFX::VIEW::GetPainter(), KIGFX::PAINTER::GetSettings(), PCB_DRAW_PANEL_GAL::GetView(), WINDOW_SETTINGS::grid, APP_SETTINGS_BASE::GRAPHICS::highlight_factor, EDA_DRAW_FRAME::LoadSettings(), APP_SETTINGS_BASE::m_Graphics, EDA_DRAW_FRAME::m_polarCoords, APP_SETTINGS_BASE::m_Window, APP_SETTINGS_BASE::GRAPHICS::select_factor, KIGFX::RENDER_SETTINGS::SetDefaultFont(), KIGFX::RENDER_SETTINGS::SetHighlightFactor(), KIGFX::RENDER_SETTINGS::SetSelectFactor(), GRID_SETTINGS::sizes, WINDOW_SETTINGS::zoom_factors, and ZOOM_LIST_PCBNEW.

Referenced by DISPLAY_FOOTPRINTS_FRAME::LoadSettings(), FOOTPRINT_EDIT_FRAME::LoadSettings(), FOOTPRINT_VIEWER_FRAME::LoadSettings(), FOOTPRINT_WIZARD_FRAME::LoadSettings(), and PCB_EDIT_FRAME::LoadSettings().

◆ LoadWindowSettings()

void EDA_BASE_FRAME::LoadWindowSettings ( const WINDOW_SETTINGS aCfg)
inherited

Load window settings from the given settings object.

Normally called by LoadSettings() unless the window in question is a child window that* stores its settings somewhere other than APP_SETTINGS_BASE::m_Window.

Definition at line 711 of file eda_base_frame.cpp.

712{
713 LoadWindowState( aCfg->state );
714
716 m_mruPath = aCfg->mru_path;
717
719}
void LoadWindowState(const wxString &aFileName)
wxString m_perspective
virtual void CommonSettingsChanged(bool aEnvVarsChanged, bool aTextVarsChanged)
Notification event that some of the common (suite-wide) settings have changed.
WINDOW_STATE state
Definition: app_settings.h:93
wxString mru_path
Definition: app_settings.h:94
wxString perspective
Definition: app_settings.h:95

References TOOLS_HOLDER::CommonSettingsChanged(), EDA_BASE_FRAME::LoadWindowState(), EDA_BASE_FRAME::m_mruPath, EDA_BASE_FRAME::m_perspective, WINDOW_SETTINGS::mru_path, WINDOW_SETTINGS::perspective, and WINDOW_SETTINGS::state.

Referenced by EDA_BASE_FRAME::LoadSettings().

◆ LoadWindowState() [1/2]

void EDA_BASE_FRAME::LoadWindowState ( const WINDOW_STATE aState)
virtualinherited

Load frame state info from a configuration file.

Definition at line 565 of file eda_base_frame.cpp.

566{
567 bool wasDefault = false;
568
569 m_framePos.x = aState.pos_x;
570 m_framePos.y = aState.pos_y;
571 m_frameSize.x = aState.size_x;
572 m_frameSize.y = aState.size_y;
573
574 wxLogTrace( traceDisplayLocation, wxS( "Config position (%d, %d) with size (%d, %d)" ),
576
577 // Ensure minimum size is set if the stored config was zero-initialized
578 if( m_frameSize.x < minSize( m_ident ).x || m_frameSize.y < minSize( m_ident ).y )
579 {
581 wasDefault = true;
582
583 wxLogTrace( traceDisplayLocation, wxS( "Using minimum size (%d, %d)" ),
585 }
586
587 wxLogTrace( traceDisplayLocation, wxS( "Number of displays: %d" ), wxDisplay::GetCount() );
588
589 if( aState.display >= wxDisplay::GetCount() )
590 {
591 wxLogTrace( traceDisplayLocation, wxS( "Previous display not found" ) );
592
593 // If it isn't attached, use the first display
594 // Warning wxDisplay has 2 ctor variants. the parameter needs a type:
595 const unsigned int index = 0;
596 wxDisplay display( index );
597 wxRect clientSize = display.GetGeometry();
598
599 m_framePos = wxDefaultPosition;
600
601 // Ensure the window fits on the display, since the other one could have been larger
602 if( m_frameSize.x > clientSize.width )
603 m_frameSize.x = clientSize.width;
604
605 if( m_frameSize.y > clientSize.height )
606 m_frameSize.y = clientSize.height;
607 }
608 else
609 {
610 wxPoint upperRight( m_framePos.x + m_frameSize.x, m_framePos.y );
611 wxPoint upperLeft( m_framePos.x, m_framePos.y );
612
613 wxDisplay display( aState.display );
614 wxRect clientSize = display.GetClientArea();
615
616 int yLimTop = clientSize.y;
617 int yLimBottom = clientSize.y + clientSize.height;
618 int xLimLeft = clientSize.x;
619 int xLimRight = clientSize.x + clientSize.width;
620
621 if( upperLeft.x > xLimRight || // Upper left corner too close to right edge of screen
622 upperRight.x < xLimLeft || // Upper right corner too close to left edge of screen
623 upperLeft.y < yLimTop || // Upper corner too close to the bottom of the screen
624 upperLeft.y > yLimBottom )
625 {
626 m_framePos = wxDefaultPosition;
627 wxLogTrace( traceDisplayLocation, wxS( "Resetting to default position" ) );
628 }
629 }
630
631 wxLogTrace( traceDisplayLocation, wxS( "Final window position (%d, %d) with size (%d, %d)" ),
633
634 SetSize( m_framePos.x, m_framePos.y, m_frameSize.x, m_frameSize.y );
635
636 // Center the window if we reset to default
637 if( m_framePos.x == -1 )
638 {
639 wxLogTrace( traceDisplayLocation, wxS( "Centering window" ) );
640 Center();
641 m_framePos = GetPosition();
642 }
643
644 // Record the frame sizes in an un-maximized state
647
648 // Maximize if we were maximized before
649 if( aState.maximized || ( wasDefault && m_maximizeByDefault ) )
650 {
651 wxLogTrace( traceDisplayLocation, wxS( "Maximizing window" ) );
652 Maximize();
653 }
654
655 m_displayIndex = wxDisplay::GetFromWindow( this );
656}
wxSize m_normalFrameSize
wxPoint m_normalFramePos
unsigned int display
Definition: app_settings.h:85

References PCAD2KICAD::Center, defaultSize(), WINDOW_STATE::display, EDA_BASE_FRAME::m_displayIndex, EDA_BASE_FRAME::m_framePos, EDA_BASE_FRAME::m_frameSize, EDA_BASE_FRAME::m_ident, EDA_BASE_FRAME::m_maximizeByDefault, EDA_BASE_FRAME::m_normalFramePos, EDA_BASE_FRAME::m_normalFrameSize, WINDOW_STATE::maximized, minSize(), WINDOW_STATE::pos_x, WINDOW_STATE::pos_y, WINDOW_STATE::size_x, WINDOW_STATE::size_y, and traceDisplayLocation.

◆ LoadWindowState() [2/2]

void EDA_BASE_FRAME::LoadWindowState ( const wxString &  aFileName)
inherited

Definition at line 551 of file eda_base_frame.cpp.

552{
553 if( !Pgm().GetCommonSettings()->m_Session.remember_open_files )
554 return;
555
556 const PROJECT_FILE_STATE* state = Prj().GetLocalSettings().GetFileState( aFileName );
557
558 if( state != nullptr )
559 {
560 LoadWindowState( state->window );
561 }
562}
const PROJECT_FILE_STATE * GetFileState(const wxString &aFileName)