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
 
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 ReCreateMenuBar () override
 Recreates the menu bar. 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 ()
 
virtual void OnModify ()
 Must be called after a change in order to set the "modify" flag of the current screen and update the date in frame reference. 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 void ParseArgs (wxCmdLineParser &aParser)
 Handle command-line arguments in a frame-specific way. 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 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 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
 
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)
 
long long 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...
 

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...
 
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...
 
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
 
long m_firstRunDialogSetting
 
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_autoSaveState
 
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 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 73 of file pcb_base_frame.cpp.

75 :
76 EDA_DRAW_FRAME( aKiway, aParent, aFrameType, aTitle, aPos, aSize, aStyle, aFrameName, pcbIUScale ),
77 m_pcb( nullptr ),
78 m_originTransforms( *this ),
79 m_spaceMouse( nullptr )
80{
81}
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 84 of file pcb_base_frame.cpp.

85{
86#if defined( KICAD_USE_3DCONNEXION )
87 if( m_spaceMouse != nullptr )
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}
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 1013 of file pcb_base_frame.cpp.

1014{
1016
1017 EDA_DRAW_PANEL_GAL* canvas = GetCanvas();
1018 KIGFX::VIEW* view = canvas->GetView();
1019
1020 if( m_toolManager )
1021 {
1022 m_toolManager->SetEnvironment( m_pcb, view, canvas->GetViewControls(), config(), this );
1023
1025 }
1026
1027 KIGFX::PCB_PAINTER* painter = static_cast<KIGFX::PCB_PAINTER*>( view->GetPainter() );
1028 KIGFX::PCB_RENDER_SETTINGS* settings = painter->GetSettings();
1029 const PCB_DISPLAY_OPTIONS& displ_opts = GetDisplayOptions();
1030
1031 settings->LoadDisplayOptions( displ_opts );
1032 settings->LoadColors( GetColorSettings() );
1033
1034 view->RecacheAllItems();
1036 canvas->StartDrawing();
1037
1038#if defined( KICAD_USE_3DCONNEXION )
1039 try
1040 {
1041 if( m_spaceMouse == nullptr )
1042 {
1044 }
1045 }
1046 catch( const std::system_error& e )
1047 {
1048 wxLogTrace( wxT( "KI_TRACE_NAVLIB" ), e.what() );
1049 }
1050#endif
1051}
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:156
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:161
PCB specific render settings.
Definition: pcb_painter.h:71
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:1381
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 226 of file pcb_base_frame.cpp.

227{
228 if( aFootprint )
229 {
230 GetBoard()->Add( aFootprint, ADD_MODE::APPEND );
231
232 aFootprint->SetFlags( IS_NEW );
233 aFootprint->SetPosition( wxPoint( 0, 0 ) ); // cursor in GAL may not be initialized yet
234
235 // Put it on FRONT layer (note that it might be stored flipped if the lib is an archive
236 // built from a board)
237 if( aFootprint->IsFlipped() )
238 aFootprint->Flip( aFootprint->GetPosition(), GetPcbNewSettings()->m_FlipLeftRight );
239
240 // Place it in orientation 0 even if it is not saved with orientation 0 in lib (note that
241 // it might be stored in another orientation if the lib is an archive built from a board)
242 aFootprint->SetOrientation( ANGLE_0 );
243 }
244}
void Add(BOARD_ITEM *aItem, ADD_MODE aMode=ADD_MODE::INSERT, bool aSkipConnectivity=false) override
Removes an item from the container.
Definition: board.cpp:670
void SetFlags(EDA_ITEM_FLAGS aMask)
Definition: eda_item.h:156
void SetPosition(const VECTOR2I &aPos) override
Definition: footprint.cpp:1636
void SetOrientation(const EDA_ANGLE &aNewAngle)
Definition: footprint.cpp:1766
bool IsFlipped() const
Definition: footprint.h:319
void Flip(const VECTOR2I &aCentre, bool aFlipLeftRight) override
Flip this object, i.e.
Definition: footprint.cpp:1553
VECTOR2I GetPosition() const override
Definition: footprint.h:192
PCBNEW_SETTINGS * GetPcbNewSettings() const
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(), and FOOTPRINT::SetPosition().

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 443 of file eda_base_frame.cpp.

444{
446 ACTION_MENU* helpMenu = new ACTION_MENU( false, commonControl );
447
448 helpMenu->Add( ACTIONS::help );
449 helpMenu->Add( ACTIONS::gettingStarted );
450 helpMenu->Add( ACTIONS::listHotKeys );
451 helpMenu->Add( ACTIONS::getInvolved );
452 helpMenu->Add( ACTIONS::donate );
453 helpMenu->Add( ACTIONS::reportBug );
454
455 helpMenu->AppendSeparator();
456 helpMenu->Add( _( "&About KiCad" ), "", wxID_ABOUT, BITMAPS::about );
457
458 // Trailing space keeps OSX from hijacking our menu (and disabling everything in it).
459 aMenuBar->Append( helpMenu, _( "&Help" ) + wxS( " " ) );
460}
static TOOL_ACTION reportBug
Cursor control event types.
Definition: actions.h:186
static TOOL_ACTION donate
Definition: actions.h:184
static TOOL_ACTION listHotKeys
Definition: actions.h:183
static TOOL_ACTION getInvolved
Definition: actions.h:185
static TOOL_ACTION gettingStarted
Definition: actions.h:181
static TOOL_ACTION help
Definition: actions.h:182
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::ReCreateMenuBar(), SCH_EDIT_FRAME::ReCreateMenuBar(), SYMBOL_EDIT_FRAME::ReCreateMenuBar(), SYMBOL_VIEWER_FRAME::ReCreateMenuBar(), GERBVIEW_FRAME::ReCreateMenuBar(), KICAD_MANAGER_FRAME::ReCreateMenuBar(), PL_EDITOR_FRAME::ReCreateMenuBar(), FOOTPRINT_EDIT_FRAME::ReCreateMenuBar(), FOOTPRINT_VIEWER_FRAME::ReCreateMenuBar(), and PCB_EDIT_FRAME::ReCreateMenuBar().

◆ 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 546 of file eda_draw_frame.cpp.

547{
549 CONDITIONAL_MENU& aMenu = aToolMenu.GetMenu();
550
551 aMenu.AddSeparator( 1000 );
552
553 std::shared_ptr<ZOOM_MENU> zoomMenu = std::make_shared<ZOOM_MENU>( this );
554 zoomMenu->SetTool( commonTools );
555 aToolMenu.RegisterSubMenu( zoomMenu );
556
557 std::shared_ptr<GRID_MENU> gridMenu = std::make_shared<GRID_MENU>( this );
558 gridMenu->SetTool( commonTools );
559 aToolMenu.RegisterSubMenu( gridMenu );
560
561 aMenu.AddMenu( zoomMenu.get(), SELECTION_CONDITIONS::ShowAlways, 1000 );
562 aMenu.AddMenu( gridMenu.get(), SELECTION_CONDITIONS::ShowAlways, 1000 );
563}
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().

◆ 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 708 of file eda_draw_frame.cpp.

710{
711 if( m_messagePanel )
712 m_messagePanel->AppendMessage( aTextUpper, aTextLower, aPadding );
713}
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 98 of file pcb_base_frame.cpp.

99{
100 // Close modeless dialogs. They're trouble when they get destroyed after the frame and/or
101 // board.
102 wxWindow* viewer3D = Get3DViewerFrame();
103
104 if( viewer3D )
105 viewer3D->Close( true );
106
107 return true;
108}
EDA_3D_VIEWER_FRAME * Get3DViewerFrame()

References Get3DViewerFrame().

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

◆ ChangeUserUnits()

void EDA_BASE_FRAME::ChangeUserUnits ( EDA_UNITS  aUnits)
inherited

Definition at line 1303 of file eda_base_frame.cpp.

1304{
1305 SetUserUnits( aUnits );
1307
1308 wxCommandEvent e( UNITS_CHANGED );
1309 ProcessEventLocally( e );
1310}
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 1191 of file eda_base_frame.cpp.

1192{
1193 wxCHECK_RET( aFileName.IsOk(), wxT( "Invalid file name!" ) );
1194
1195 wxFileName autoSaveFileName = aFileName;
1196
1197 // Check for auto save file.
1198 autoSaveFileName.SetName( GetAutoSaveFilePrefix() + aFileName.GetName() );
1199
1200 wxLogTrace( traceAutoSave,
1201 wxT( "Checking for auto save file " ) + autoSaveFileName.GetFullPath() );
1202
1203 if( !autoSaveFileName.FileExists() )
1204 return;
1205
1206 wxString msg = wxString::Format( _(
1207 "Well this is potentially embarrassing!\n"
1208 "It appears that the last time you were editing the file\n"
1209 "%s\n"
1210 "it was not saved properly. Do you wish to restore the last saved edits you made?" ),
1211 aFileName.GetFullName()
1212 );
1213
1214 int response = wxMessageBox( msg, Pgm().App().GetAppDisplayName(), wxYES_NO | wxICON_QUESTION,
1215 this );
1216
1217 // Make a backup of the current file, delete the file, and rename the auto save file to
1218 // the file name.
1219 if( response == wxYES )
1220 {
1221 if( !wxRenameFile( autoSaveFileName.GetFullPath(), aFileName.GetFullPath() ) )
1222 {
1223 wxMessageBox( _( "The auto save file could not be renamed to the board file name." ),
1224 Pgm().App().GetAppDisplayName(), wxOK | wxICON_EXCLAMATION, this );
1225 }
1226 }
1227 else
1228 {
1229 wxLogTrace( traceAutoSave,
1230 wxT( "Removing auto save file " ) + autoSaveFileName.GetFullPath() );
1231
1232 // Remove the auto save file when using the previous file as is.
1233 wxRemoveFile( autoSaveFileName.GetFullPath() );
1234 }
1235}
static wxString GetAutoSaveFilePrefix()
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(), 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 948 of file eda_base_frame.cpp.

949{
950 if( !aFileHistory )
951 aFileHistory = m_fileHistory;
952
953 wxASSERT( aFileHistory );
954
955 aFileHistory->ClearFileHistory();
956
957 // Update the menubar to update the file history menu
958 if( GetMenuBar() )
959 {
961 GetMenuBar()->Refresh();
962 }
963}
FILE_HISTORY * m_fileHistory
virtual 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 528 of file eda_base_frame.h.

529 { }

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_autoSaveState = false;
127 m_isClosing = false;
128 m_isNonUserClose = false;
129 m_autoSaveTimer = new wxTimer( this, ID_AUTO_SAVE_TIMER );
131 m_frameSize = defaultSize( aFrameType );
132 m_displayIndex = -1;
133
134 m_auimgr.SetArtProvider( new WX_AUI_DOCK_ART() );
135
136 m_settingsManager = &Pgm().GetSettingsManager();
137
138 // Set a reasonable minimal size for the frame
139 SetSizeHints( minSize( aFrameType ).x, minSize( aFrameType ).y, -1, -1, -1, -1 );
140
141 // Store dimensions of the user area of the main window.
142 GetClientSize( &m_frameSize.x, &m_frameSize.y );
143
144 Connect( ID_AUTO_SAVE_TIMER, wxEVT_TIMER,
145 wxTimerEventHandler( EDA_BASE_FRAME::onAutoSaveTimer ) );
146
147 // hook wxEVT_CLOSE_WINDOW so we can call SaveSettings(). This function seems
148 // to be called before any other hook for wxCloseEvent, which is necessary.
149 Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( EDA_BASE_FRAME::windowClosing ) );
150
151 initExitKey();
152}
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 955 of file pcb_base_frame.cpp.

956{
957 EDA_DRAW_FRAME::CommonSettingsChanged( aEnvVarsChanged, aTextVarsChanged );
958
960 PCB_RENDER_SETTINGS* renderSettings = static_cast<KIGFX::PCB_RENDER_SETTINGS*>( settings );
961
962 renderSettings->LoadColors( GetColorSettings( true ) );
963 renderSettings->LoadDisplayOptions( GetDisplayOptions() );
964
966 [&]( KIGFX::VIEW_ITEM* aItem ) -> bool
967 {
968 if( dynamic_cast<RATSNEST_VIEW_ITEM*>( aItem ) )
969 {
970 return true; // ratsnest display
971 }
972 else if( dynamic_cast<PCB_TRACK*>( aItem ) )
973 {
974 return true; // track, arc & via clearance display
975 }
976 else if( dynamic_cast<PAD*>( aItem ) )
977 {
978 return true; // pad clearance display
979 }
980
981 return false;
982 } );
983
985
987
988 // The 3D viewer isn't in the Kiway, so send its update manually
990
991 if( viewer )
992 viewer->CommonSettingsChanged( aEnvVarsChanged, aTextVarsChanged );
993}
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:1478
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:1488
Definition: pad.h:58
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

References 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
aDCis the current device context (can be NULL).
aDisplayStatusif true, display the computation results.

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

Parameters
aDC= the current device context (can be NULL)
aDisplayStatus: if true, display the computation results

Definition at line 40 of file ratsnest.cpp.

41{
42 GetBoard()->GetConnectivity()->RecalculateRatsnest();
43
44 if( aDisplayStatus )
46}
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, and EDA_DRAW_FRAME::SetMsgPanel().

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(), PCB_CONTROL::Paste(), PlaceFootprint(), PCB_BASE_EDIT_FRAME::PutDataInPreviousState(), PANEL_SETUP_LAYERS::TransferDataFromWindow(), and PCB_EDIT_FRAME::UpdateUserInterface().

◆ 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 788 of file eda_base_frame.cpp.

789{
790 // KICAD_MANAGER_FRAME overrides this
791 return Kiface().KifaceSettings();
792}
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(), BM2CMP_FRAME::BM2CMP_FRAME(), 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_DRAW_FRAME::resolveCanvasType(), 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 341 of file eda_base_frame.h.

342 {
343 wxString baseCfgName = m_configName.IsEmpty() ? GetName() : m_configName;
344 return baseCfgName;
345 }
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 681 of file pcb_base_frame.cpp.

682{
683 EDA_3D_VIEWER_FRAME* draw3DFrame = Get3DViewerFrame();
684
685 if( !draw3DFrame )
686 draw3DFrame = new EDA_3D_VIEWER_FRAME( &Kiway(), this, _( "3D Viewer" ) );
687
688 // Raising the window does not show the window on Windows if iconized. This should work
689 // on any platform.
690 if( draw3DFrame->IsIconized() )
691 draw3DFrame->Iconize( false );
692
693 draw3DFrame->Raise();
694 draw3DFrame->Show( true );
695
696 // Raising the window does not set the focus on Linux. This should work on any platform.
697 if( wxWindow::FindFocus() != draw3DFrame )
698 draw3DFrame->SetFocus();
699
700 // Allocate a slice of time to display the 3D frame
701 // a call to wxSafeYield() should be enough (and better), but on Linux we need
702 // to call wxYield()
703 // otherwise the activity messages are not displayed during the first board loading
704 wxYield();
705
706 // Note, the caller is responsible to load/update the board 3D view.
707 // after frame creation the board is not automatically created.
708
709 return draw3DFrame;
710}
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 813 of file eda_base_frame.cpp.

814{
815#if defined( __WXOSX_MAC__ )
817#else
818 m_infoBar = new WX_INFOBAR( this, &m_auimgr );
819
820 m_auimgr.AddPane( m_infoBar, EDA_PANE().InfoBar().Name( "InfoBar" ).Top().Layer(1) );
821#endif
822}
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: infobar.h:75

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

◆ 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 1231 of file footprint_libraries_utils.cpp.

1232{
1233 wxString footprintName = aFootprintName;
1234
1235 // Static to store user preference for a session
1236 static int footprintType = 1;
1237 int footprintTranslated = FP_SMD;
1238
1239 // Ask for the new footprint name
1240 if( footprintName.IsEmpty() && !aQuiet )
1241 {
1242 WX_TEXT_ENTRY_DIALOG dlg( this, _( "Enter footprint name:" ), _( "New Footprint" ),
1243 footprintName, _( "Footprint type:" ),
1244 { _( "Through hole" ), _( "SMD" ), _( "Other" ) },
1245 footprintType );
1246 dlg.SetTextValidator( FOOTPRINT_NAME_VALIDATOR( &footprintName ) );
1247
1248 if( dlg.ShowModal() != wxID_OK )
1249 return nullptr; //Aborted by user
1250
1251 footprintType = dlg.GetChoice();
1252
1253 switch( footprintType )
1254 {
1255 case 0: footprintTranslated = FP_THROUGH_HOLE; break;
1256 case 1: footprintTranslated = FP_SMD; break;
1257 default: footprintTranslated = 0; break;
1258 }
1259 }
1260
1261 footprintName.Trim( true );
1262 footprintName.Trim( false );
1263
1264 if( footprintName.IsEmpty() )
1265 {
1266 if( !aQuiet )
1267 DisplayInfoMessage( this, _( "No footprint name defined." ) );
1268
1269 return nullptr;
1270 }
1271
1272 // Creates the new footprint and add it to the head of the linked list of footprints
1273 FOOTPRINT* footprint = new FOOTPRINT( GetBoard() );
1274
1275 // Update its name in lib
1276 footprint->SetFPID( LIB_ID( wxEmptyString, footprintName ) );
1277
1278 footprint->SetAttributes( footprintTranslated );
1279
1280 PCB_LAYER_ID txt_layer;
1281 wxPoint default_pos;
1283
1284 footprint->Reference().SetText( settings.m_DefaultFPTextItems[0].m_Text );
1285 footprint->Reference().SetVisible( settings.m_DefaultFPTextItems[0].m_Visible );
1286 txt_layer = (PCB_LAYER_ID) settings.m_DefaultFPTextItems[0].m_Layer;
1287 footprint->Reference().SetLayer( txt_layer );
1288 default_pos.y -= settings.GetTextSize( txt_layer ).y / 2;
1289 footprint->Reference().SetPosition( default_pos );
1290 default_pos.y += settings.GetTextSize( txt_layer ).y;
1291
1292 footprint->Value().SetText( settings.m_DefaultFPTextItems[1].m_Text );
1293 footprint->Value().SetVisible( settings.m_DefaultFPTextItems[1].m_Visible );
1294 txt_layer = (PCB_LAYER_ID) settings.m_DefaultFPTextItems[1].m_Layer;
1295 footprint->Value().SetLayer( txt_layer );
1296 default_pos.y += settings.GetTextSize( txt_layer ).y / 2;
1297 footprint->Value().SetPosition( default_pos );
1298 default_pos.y += settings.GetTextSize( txt_layer ).y;
1299
1300 for( size_t i = 2; i < settings.m_DefaultFPTextItems.size(); ++i )
1301 {
1302 FP_TEXT* textItem = new FP_TEXT( footprint );
1303 textItem->SetText( settings.m_DefaultFPTextItems[i].m_Text );
1304 textItem->SetVisible( settings.m_DefaultFPTextItems[i].m_Visible );
1305 txt_layer = (PCB_LAYER_ID) settings.m_DefaultFPTextItems[i].m_Layer;
1306 textItem->SetLayer( txt_layer );
1307 default_pos.y += settings.GetTextSize( txt_layer ).y / 2;
1308 textItem->SetPosition( default_pos );
1309 default_pos.y += settings.GetTextSize( txt_layer ).y;
1310 footprint->GraphicalItems().push_back( textItem );
1311 }
1312
1313 if( footprint->GetReference().IsEmpty() )
1314 footprint->SetReference( footprintName );
1315
1316 if( footprint->GetValue().IsEmpty() )
1317 footprint->SetValue( footprintName );
1318
1319 footprint->RunOnChildren(
1320 [&] ( BOARD_ITEM* aChild )
1321 {
1322 if( aChild->Type() == PCB_FP_TEXT_T )
1323 {
1324 FP_TEXT* textItem = static_cast<FP_TEXT*>( aChild );
1325 PCB_LAYER_ID layer = textItem->GetLayer();
1326
1327 textItem->SetTextThickness( settings.GetTextThickness( layer ) );
1328 textItem->SetTextSize( settings.GetTextSize( layer ) );
1329 textItem->SetItalic( settings.GetTextItalic( layer ) );
1330 textItem->SetKeepUpright( settings.GetTextUpright( layer ) );
1331 }
1332 } );
1333
1334 SetMsgPanel( footprint );
1335 return footprint;
1336}
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:52
virtual PCB_LAYER_ID GetLayer() const
Return the primary layer this item is on.
Definition: board_item.h:169
virtual void SetLayer(PCB_LAYER_ID aLayer)
Set the layer this item is on.
Definition: board_item.h:203
KICAD_T Type() const
Returns the type of object.
Definition: eda_item.h:111
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:208
void SetAttributes(int aAttributes)
Definition: footprint.h:246
void SetReference(const wxString &aReference)
Definition: footprint.h:528
void SetValue(const wxString &aValue)
Definition: footprint.h:549
FP_TEXT & Value()
read/write accessors:
Definition: footprint.h:555
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:1356
const wxString & GetValue() const
Definition: footprint.h:541
const wxString & GetReference() const
Definition: footprint.h:519
DRAWINGS & GraphicalItems()
Definition: footprint.h:177
FP_TEXT & Reference()
Definition: footprint.h:556
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:320
@ FP_SMD
Definition: footprint.h:68
@ FP_THROUGH_HOLE
Definition: footprint.h:67
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 delete m_socketServer;
55 m_socketServer = new wxSocketServer( addr );
56
57 m_socketServer->SetNotify( wxSOCKET_CONNECTION_FLAG );
58 m_socketServer->SetEventHandler( *this, ID_EDA_SOCKET_EVENT_SERV );
59 m_socketServer->Notify( true );
60}
wxSocketServer * m_socketServer
Definition: kiway_player.h:218
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 SCH::IFACE::CreateWindow().

◆ 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 169 of file kiway_player.cpp.

170{
171 m_modal_ret_val = aRetVal;
172 m_modal_string = aResult;
173
174 if( m_modal_loop )
175 {
176 m_modal_loop->Exit();
177 m_modal_loop = nullptr; // this marks it as dismissed.
178 }
179
180 Show( false );
181}
wxString m_modal_string
Definition: kiway_player.h:215
WX_EVENT_LOOP * m_modal_loop
< Points to nested event_loop. NULL means not modal and dismissed.
Definition: kiway_player.h:213
bool m_modal_ret_val
Definition: kiway_player.h:216

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 572 of file eda_draw_frame.cpp.

573{
574 SetStatusText( msg, 7 );
575}

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 780 of file pcb_base_frame.cpp.

781{
782 VECTOR2D gridSize = GetCanvas()->GetGAL()->GetGridSize();
783 wxString line;
784
785 line.Printf( wxT( "grid X %s Y %s" ),
786 MessageTextFromValue( gridSize.x, false ),
787 MessageTextFromValue( gridSize.y, false ) );
788
789 SetStatusText( line, 4 );
790}
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 566 of file eda_draw_frame.cpp.

567{
568 SetStatusText( msg, 6 );
569}

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 588 of file eda_draw_frame.cpp.

589{
590 wxString msg;
591
592 switch( GetUserUnits() )
593 {
594 case EDA_UNITS::INCHES: msg = _( "inches" ); break;
595 case EDA_UNITS::MILS: msg = _( "mils" ); break;
596 case EDA_UNITS::MILLIMETRES: msg = _( "mm" ); break;
597 default: msg = _( "Units" ); break;
598 }
599
600 SetStatusText( msg, 5 );
601}
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 310 of file eda_base_frame.cpp.

311{
312 wxCHECK_MSG( false, true, wxT( "Auto save timer function not overridden. Bad programmer!" ) );
313}

Referenced by EDA_BASE_FRAME::onAutoSaveTimer().

◆ doCloseWindow()

◆ 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 1138 of file eda_base_frame.cpp.

1139{
1140 for( const wxFileName& file : m_AcceptedFiles )
1141 {
1142 wxString fn = file.GetFullPath();
1143 m_toolManager->RunAction( *m_acceptedExts.at( file.GetExt() ), true, &fn );
1144 }
1145}
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 640 of file eda_base_frame.cpp.

641{
642 wxDisplay display( wxDisplay::GetFromWindow( this ) );
643 wxRect clientSize = display.GetClientArea();
644 wxPoint pos = GetPosition();
645 wxSize size = GetWindowSize();
646
647 wxLogTrace( traceDisplayLocation,
648 "ensureWindowIsOnScreen: clientArea (%d, %d) w %d h %d", clientSize.x, clientSize.y,
649 clientSize.width, clientSize.height );
650
651 if( pos.y < clientSize.y )
652 {
653 wxLogTrace( traceDisplayLocation,
654 "ensureWindowIsOnScreen: y pos %d below minimum, setting to %d", pos.y,
655 clientSize.y );
656 pos.y = clientSize.y;
657 }
658
659 if( pos.x < clientSize.x )
660 {
661 wxLogTrace( traceDisplayLocation,
662 "ensureWindowIsOnScreen: x pos %d is off the client rect, setting to %d", pos.x,
663 clientSize.x );
664 pos.x = clientSize.x;
665 }
666
667 if( pos.x + size.x - clientSize.x > clientSize.width )
668 {
669 int newWidth = clientSize.width - ( pos.x - clientSize.x );
670 wxLogTrace( traceDisplayLocation,
671 "ensureWindowIsOnScreen: effective width %d above available %d, setting to %d",
672 pos.x + size.x, clientSize.width, newWidth );
673 size.x = newWidth;
674 }
675
676 if( pos.y + size.y - clientSize.y > clientSize.height )
677 {
678 int newHeight = clientSize.height - ( pos.y - clientSize.y );
679 wxLogTrace( traceDisplayLocation,
680 "ensureWindowIsOnScreen: effective height %d above available %d, setting to %d",
681 pos.y + size.y, clientSize.height, newHeight );
682 size.y = newHeight;
683 }
684
685 wxLogTrace( traceDisplayLocation, "Updating window position (%d, %d) with size (%d, %d)",
686 pos.x, pos.y, size.x, size.y );
687
688 SetSize( pos.x, pos.y, size.x, size.y );
689}
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 196 of file kiway_player.h.

196{}

Referenced by KIWAY_PLAYER::OnSockRequest().

◆ findDialogs()

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

Definition at line 898 of file eda_draw_frame.cpp.

899{
900 std::vector<wxWindow*> dialogs;
901
902 for( wxWindow* window : GetChildren() )
903 {
904 if( dynamic_cast<DIALOG_SHIM*>( window ) )
905 dialogs.push_back( window );
906 }
907
908 return dialogs;
909}
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 168 of file eda_base_frame.cpp.

169{
170 for( wxWindow* iter : GetChildren() )
171 {
172 DIALOG_SHIM* dlg = dynamic_cast<DIALOG_SHIM*>( iter );
173
174 if( dlg && dlg->IsQuasiModal() )
175 return dlg;
176 }
177
178 // FIXME: CvPcb is currently implemented on top of KIWAY_PLAYER rather than DIALOG_SHIM,
179 // so we have to look for it separately.
180 if( m_ident == FRAME_SCH )
181 {
182 wxWindow* cvpcb = wxWindow::FindWindowByName( "CvpcbFrame" );
183
184 if( cvpcb )
185 return cvpcb;
186 }
187
188 return nullptr;
189}
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 825 of file eda_base_frame.cpp.

826{
827#if defined( __WXOSX_MAC__ )
828 m_auimgr.Update();
829#else
830 // Call Update() to fix all pane default sizes, especially the "InfoBar" pane before
831 // hiding it.
832 m_auimgr.Update();
833
834 // We don't want the infobar displayed right away
835 m_auimgr.GetPane( "InfoBar" ).Hide();
836 m_auimgr.Update();
837#endif
838}

References EDA_BASE_FRAME::m_auimgr.

◆ 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 264 of file pcb_base_frame.cpp.

265{
266 static std::vector<KIID> lastBrightenedItemIDs;
267
268 BOARD_ITEM* lastItem = nullptr;
269
270 for( KIID lastBrightenedItemID : lastBrightenedItemIDs )
271 {
274 #if BOOST_VERSION >= 106700
275 try
276 {
277 lastItem = GetBoard()->GetItem( lastBrightenedItemID );
278 }
279 catch( const boost::uuids::entropy_error& )
280 {
281 wxLogError( wxT( "A Boost UUID entropy exception was thrown in %s:%s." ),
282 __FILE__, __FUNCTION__ );
283 }
284 #else
285 lastItem = GetBoard()->GetItem( lastBrightenedItemID );
286 #endif
287
288 if( lastItem && lastItem != DELETED_BOARD_ITEM::GetInstance() )
289 {
290 lastItem->ClearBrightened();
291
292 if( lastItem->Type() == PCB_FOOTPRINT_T )
293 {
294 static_cast<FOOTPRINT*>( lastItem )->RunOnChildren(
295 [&]( BOARD_ITEM* child )
296 {
297 child->ClearBrightened();
298 } );
299 }
300 else if( lastItem->Type() == PCB_GROUP_T )
301 {
302 static_cast<PCB_GROUP*>( lastItem )->RunOnChildren(
303 [&]( BOARD_ITEM* child )
304 {
305 child->ClearBrightened();
306 } );
307 }
308
309 GetCanvas()->GetView()->Update( lastItem );
310 lastBrightenedItemID = niluuid;
311 GetCanvas()->Refresh();
312 }
313 }
314
315 lastBrightenedItemIDs.clear();
316
317 if( aItems.empty() )
318 return;
319
320 VECTOR2I focusPt;
321 KIGFX::VIEW* view = GetCanvas()->GetView();
322 SHAPE_POLY_SET viewportPoly( view->GetViewport() );
323
324 for( wxWindow* dialog : findDialogs() )
325 {
326 wxPoint dialogPos = GetCanvas()->ScreenToClient( dialog->GetScreenPosition() );
327 SHAPE_POLY_SET dialogPoly( BOX2D( view->ToWorld( dialogPos, true ),
328 view->ToWorld( dialog->GetSize(), false ) ) );
329
330 try
331 {
332 viewportPoly.BooleanSubtract( dialogPoly, SHAPE_POLY_SET::PM_FAST );
333 }
334 catch( const ClipperLib::clipperException& exc )
335 {
336 // This may be overkill and could be an assertion but we are more likely to
337 // find any clipper errors this way.
338 wxLogError( wxT( "Clipper library exception '%s' occurred." ), exc.what() );
339 }
340 }
341
342 SHAPE_POLY_SET itemPoly, clippedPoly;
343
344 for( BOARD_ITEM* item : aItems )
345 {
346 if( item && item != DELETED_BOARD_ITEM::GetInstance() )
347 {
348 item->SetBrightened();
349
350 if( item->Type() == PCB_FOOTPRINT_T )
351 {
352 static_cast<FOOTPRINT*>( item )->RunOnChildren(
353 [&]( BOARD_ITEM* child )
354 {
355 child->SetBrightened();
356 });
357 }
358 else if( item->Type() == PCB_GROUP_T )
359 {
360 static_cast<PCB_GROUP*>( item )->RunOnChildren(
361 [&]( BOARD_ITEM* child )
362 {
363 child->SetBrightened();
364 });
365 }
366
367 GetCanvas()->GetView()->Update( item );
368 lastBrightenedItemIDs.push_back( item->m_Uuid );
369
370 // Focus on the object's location. Prefer a visible part of the object to its anchor
371 // in order to keep from scrolling around.
372
373 focusPt = item->GetPosition();
374
375 if( aLayer == UNDEFINED_LAYER )
376 aLayer = item->GetLayerSet().Seq()[0];
377
378 switch( item->Type() )
379 {
380 case PCB_FOOTPRINT_T:
381 try
382 {
383 itemPoly = static_cast<FOOTPRINT*>( item )->GetBoundingHull();
384 }
385 catch( const ClipperLib::clipperException& exc )
386 {
387 // This may be overkill and could be an assertion but we are more likely to
388 // find any clipper errors this way.
389 wxLogError( wxT( "Clipper library exception '%s' occurred." ), exc.what() );
390 }
391
392 break;
393
394 case PCB_PAD_T:
395 case PCB_MARKER_T:
396 case PCB_VIA_T:
397 FocusOnLocation( item->GetFocusPosition() );
398 GetCanvas()->Refresh();
399 return;
400
401 case PCB_SHAPE_T:
402 case PCB_TEXT_T:
403 case PCB_TEXTBOX_T:
404 case PCB_FP_TEXT_T:
405 case PCB_FP_TEXTBOX_T:
406 case PCB_FP_SHAPE_T:
407 case PCB_FP_ZONE_T:
408 case PCB_TRACE_T:
409 case PCB_ARC_T:
411 case PCB_DIM_LEADER_T:
412 case PCB_DIM_CENTER_T:
413 case PCB_DIM_RADIAL_T:
420 item->TransformShapeWithClearanceToPolygon( itemPoly, aLayer, 0,
422 break;
423
424 case PCB_ZONE_T:
425 {
426 ZONE* zone = static_cast<ZONE*>( item );
427 #if 0
428 // Using the filled area shapes to find a Focus point can give good results, but
429 // unfortunately the calculations are highly time consuming, even for not very
430 // large areas (can be easily a few minutes for large areas).
431 // so we used only the zone outline that usually do not have too many vertices.
432 zone->TransformShapeWithClearanceToPolygon( itemPoly, aLayer, 0,
433 pcbIUScale.FromMillimeter( 0.1 ), ERROR_INSIDE );
434
435 if( itemPoly.IsEmpty() )
436 itemPoly = *zone->Outline();
437 #else
438 // much faster calculation time when using only the zone outlines
439 itemPoly = *zone->Outline();
440 #endif
441
442 break;
443 }
444
445 default:
446 {
447 BOX2I item_bbox = item->GetBoundingBox();
448 itemPoly.NewOutline();
449 itemPoly.Append( item_bbox.GetOrigin() );
450 itemPoly.Append( item_bbox.GetOrigin() + VECTOR2I( item_bbox.GetWidth(), 0 ) );
451 itemPoly.Append( item_bbox.GetOrigin() + VECTOR2I( 0, item_bbox.GetHeight() ) );
452 itemPoly.Append( item_bbox.GetOrigin() + VECTOR2I( item_bbox.GetWidth(),
453 item_bbox.GetHeight() ) );
454 break;
455 }
456 }
457
458 try
459 {
460 clippedPoly.BooleanIntersection( itemPoly, viewportPoly, SHAPE_POLY_SET::PM_FAST );
461 }
462 catch( const ClipperLib::clipperException& exc )
463 {
464 // This may be overkill and could be an assertion but we are more likely to
465 // find any clipper errors this way.
466 wxLogError( wxT( "Clipper library exception '%s' occurred." ), exc.what() );
467 }
468
469 if( !clippedPoly.IsEmpty() )
470 itemPoly = clippedPoly;
471 }
472 }
473
474 /*
475 * Perform a step-wise deflate to find the visual-center-of-mass
476 */
477
478 BOX2I bbox = itemPoly.BBox();
479 int step = std::min( bbox.GetWidth(), bbox.GetHeight() ) / 10;
480
481 while( !itemPoly.IsEmpty() )
482 {
483 focusPt = itemPoly.BBox().Centre();
484
485 try
486 {
488 }
489 catch( const ClipperLib::clipperException& exc )
490 {
491 // This may be overkill and could be an assertion but we are more likely to
492 // find any clipper errors this way.
493 wxLogError( wxT( "Clipper library exception '%s' occurred." ), exc.what() );
494 }
495 }
496
497 FocusOnLocation( focusPt );
498
499 GetCanvas()->Refresh();
500}
BOX2< VECTOR2D > BOX2D
Definition: box2.h:848
BOARD_ITEM * GetItem(const KIID &aID) const
Definition: board.cpp:917
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:358
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:136
void SetBrightened()
Definition: eda_item.h:133
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:508
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:445
Definition: kiid.h:47
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
void TransformShapeWithClearanceToPolygon(SHAPE_POLY_SET &aCornerBuffer, PCB_LAYER_ID aLayer, int aClearanceValue, 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:1238
SHAPE_POLY_SET * Outline()
Definition: zone.h:305
@ 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::TransformShapeWithClearanceToPolygon(), 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 912 of file eda_draw_frame.cpp.

913{
914 bool centerView = false;
916
917 // Center if we're off the current view, or within 10% of its edge
918 r.Inflate( - (int) r.GetWidth() / 10 );
919
920 if( !r.Contains( aPos ) )
921 centerView = true;
922
923 std::vector<BOX2D> dialogScreenRects;
924
925 for( wxWindow* dialog : findDialogs() )
926 {
927 dialogScreenRects.emplace_back( GetCanvas()->ScreenToClient( dialog->GetScreenPosition() ),
928 dialog->GetSize() );
929 }
930
931 // Center if we're behind an obscuring dialog, or within 10% of its edge
932 for( BOX2D rect : dialogScreenRects )
933 {
934 rect.Inflate( rect.GetWidth() / 10 );
935
936 if( rect.Contains( GetCanvas()->GetView()->ToScreen( aPos ) ) )
937 centerView = true;
938 }
939
940 if( centerView )
941 {
942 try
943 {
944 GetCanvas()->GetView()->SetCenter( aPos, dialogScreenRects );
945 }
946 catch( const ClipperLib::clipperException& exc )
947 {
948 wxLogError( wxT( "Clipper library error '%s' occurred centering object." ),
949 exc.what() );
950 }
951 }
952
954}
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:574
E_SERIE r
Definition: eserie.cpp:41

References EDA_DRAW_FRAME::findDialogs(), EDA_DRAW_FRAME::GetCanvas(), EDA_DRAW_PANEL_GAL::GetView(), EDA_DRAW_PANEL_GAL::GetViewControls(), KIGFX::VIEW::GetViewport(), r, KIGFX::VIEW::SetCenter(), and KIGFX::VIEW_CONTROLS::SetCrossHairCursorPosition().

Referenced by PCB_SELECTION_TOOL::doSyncSelection(), PCB_EDIT_FRAME::ExecuteRemoteCommand(), PCB_SELECTION_TOOL::FindItem(), SCH_EDITOR_CONTROL::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 137 of file pcb_base_frame.cpp.

138{
139 wxWindow* frame = FindWindowByName( QUALIFIED_VIEWER3D_FRAMENAME( this ) );
140 return dynamic_cast<EDA_3D_VIEWER_FRAME*>( frame );
141}
#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

◆ GetActiveLayer()

virtual PCB_LAYER_ID PCB_BASE_FRAME::GetActiveLayer ( ) const
inlinevirtual

Definition at line 356 of file pcb_base_frame.h.

356{ 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 297 of file eda_base_frame.cpp.

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

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 562 of file pcb_base_frame.cpp.

563{
565}
const VECTOR2I & GetAuxOrigin()
BOARD_DESIGN_SETTINGS & GetDesignSettings() const
Definition: board.cpp:602

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(), Compile_Ratsnest(), DIALOG_GEN_FOOTPRINT_POSITION::CreateAsciiFiles(), DIALOG_GEN_FOOTPRINT_POSITION::CreateGerberFiles(), CreateHeaderInfoData(), CreateNewFootprint(), ZONE_CREATE_HELPER::createNewZone(), 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(), 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_NETLIST_IMPORT::loadNetlist(), PCB_EDIT_FRAME::LoadProjectSettings(), BOARD_INSPECTION_TOOL::makeDRCEngine(), CONVERT_TOOL::makePolysFromGraphics(), 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_PLOT::OnOutputDirectoryBrowseClicked(), DIALOG_GEN_FOOTPRINT_POSITION::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_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(), POSITION_RELATIVE_TOOL::PositionRelative(), 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(), APPEARANCE_CONTROLS::rebuildLayerContextMenu(), APPEARANCE_CONTROLS::rebuildLayers(), APPEARANCE_CONTROLS::rebuildNets(), PCB_EDIT_FRAME::RecordDRCExclusions(), PCB_EDIT_FRAME::RecreateCmpFileFromBoard(), PCB_EDIT_FRAME::redrawNetnames(), Refresh(), 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 638 of file pcb_base_frame.cpp.

639{
640 BOX2I area = aBoardEdgesOnly ? m_pcb->GetBoardEdgesBoundingBox() : m_pcb->GetBoundingBox();
641
642 if( area.GetWidth() == 0 && area.GetHeight() == 0 )
643 {
644 wxSize pageSize = GetPageSizeIU();
645
647 {
648 area.SetOrigin( 0, 0 );
649 area.SetEnd( pageSize.x, pageSize.y );
650 }
651 else
652 {
653 area.SetOrigin( -pageSize.x / 2, -pageSize.y / 2 );
654 area.SetEnd( pageSize.x / 2, pageSize.y / 2 );
655 }
656 }
657
658 return area;
659}
const BOX2I GetBoardEdgesBoundingBox() const
Return the board bounding box calculated using exclusively the board edges (graphics on Edge....
Definition: board.h:821
const BOX2I GetBoundingBox() const override
Return the orthogonal bounding box of this object for display purposes.
Definition: board.h:807
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 1007 of file pcb_base_frame.cpp.

1008{
1009 return static_cast<PCB_DRAW_PANEL_GAL*>( EDA_DRAW_FRAME::GetCanvas() );
1010}

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(), APPEARANCE_CONTROLS::onRatsnestMode(), DIALOG_GROUP_PROPERTIES::OnRemoveMember(), 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(), APPEARANCE_CONTROLS::rebuildNets(), FOOTPRINT_VIEWER_FRAME::ReCreateLibraryList(), FOOTPRINT_WIZARD_FRAME::ReCreatePageList(), PCB_EDIT_FRAME::redrawNetnames(), Refresh(), 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(), 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(), PCB_BASE_EDIT_FRAME::unitsChangeRefresh(), APPEARANCE_CONTROLS::UpdateDisplayOptions(), NET_GRID_TABLE::updateNetColor(), UpdateStatusBar(), PCB_EDIT_FRAME::UpdateUserInterface(), 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_NET_INSPECTOR::~DIALOG_NET_INSPECTOR(), DIALOG_NETLIST_IMPORT::~DIALOG_NETLIST_IMPORT(), 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 755 of file pcb_base_frame.cpp.

756{
758 GetCanvas()->GetView() );
759
760 // account for the globals
761 guide.SetIgnoreMTextsMarkedNoShow( ! m_pcb->IsElementVisible( LAYER_MOD_TEXT_INVISIBLE ) );
762 guide.SetIgnoreMTextsOnBack( ! m_pcb->IsElementVisible( LAYER_MOD_TEXT ) );
763 guide.SetIgnoreMTextsOnFront( ! m_pcb->IsElementVisible( LAYER_MOD_TEXT ) );
764 guide.SetIgnoreModulesOnBack( ! m_pcb->IsElementVisible( LAYER_MOD_BK ) );
765 guide.SetIgnoreModulesOnFront( ! m_pcb->IsElementVisible( LAYER_MOD_FR ) );
766 guide.SetIgnorePadsOnBack( ! m_pcb->IsElementVisible( LAYER_PAD_BK ) );
767 guide.SetIgnorePadsOnFront( ! m_pcb->IsElementVisible( LAYER_PAD_FR ) );
768 guide.SetIgnoreThroughHolePads( ! m_pcb->IsElementVisible( LAYER_PADS_TH ) );
769 guide.SetIgnoreModulesVals( ! m_pcb->IsElementVisible( LAYER_MOD_VALUES ) );
770 guide.SetIgnoreModulesRefs( ! m_pcb->IsElementVisible( LAYER_MOD_REFERENCES ) );
771 guide.SetIgnoreThroughVias( ! m_pcb->IsElementVisible( LAYER_VIAS ) );
772 guide.SetIgnoreBlindBuriedVias( ! m_pcb->IsElementVisible( LAYER_VIAS ) );
773 guide.SetIgnoreMicroVias( ! m_pcb->IsElementVisible( LAYER_VIAS ) );
774 guide.SetIgnoreTracks( ! m_pcb->IsElementVisible( LAYER_TRACKS ) );
775
776 return guide;
777}
LSET GetVisibleLayers() const
A proxy function that calls the correspondent function in m_BoardSettings.
Definition: board.cpp:499
bool IsElementVisible(GAL_LAYER_ID aLayer) const
Test whether a given element category is visible.
Definition: board.cpp:551
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 422 of file eda_base_frame.h.

422{ 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:491
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 908 of file eda_base_frame.cpp.

910{
911 if( !aFileHistory )
912 aFileHistory = m_fileHistory;
913
914 wxASSERT( aFileHistory );
915
916 int baseId = aFileHistory->GetBaseId();
917
918 wxASSERT( cmdId >= baseId && cmdId < baseId + (int) aFileHistory->GetCount() );
919
920 unsigned i = cmdId - baseId;
921
922 if( i < aFileHistory->GetCount() )
923 {
924 wxString fn = aFileHistory->GetHistoryFile( i );
925
926 if( wxFileName::FileExists( fn ) )
927 {
928 return fn;
929 }
930 else
931 {
932 DisplayErrorMessage( this, wxString::Format( _( "File '%s' was not found." ), fn ) );
933 aFileHistory->RemoveFileFromHistory( i );
934 }
935 }
936
937 // Update the menubar to update the file history menu
938 if( GetMenuBar() )
939 {
941 GetMenuBar()->Refresh();
942 }
943
944 return wxEmptyString;
945}
void DisplayErrorMessage(wxWindow *aParent, const wxString &aText, const wxString &aExtraInfo)
Display an error message with aMessage.
Definition: confirm.cpp:299

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 406 of file eda_base_frame.h.

407 {
408 return *m_fileHistory;
409 }

References EDA_BASE_FRAME::m_fileHistory.

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

◆ GetFindHistoryList()

wxArrayString & EDA_DRAW_FRAME::GetFindHistoryList ( )
inlineinherited

◆ GetFindReplaceData()

◆ GetFootprintEditorSettings()

FOOTPRINT_EDITOR_SETTINGS * PCB_BASE_FRAME::GetFootprintEditorSettings ( ) const

Definition at line 922 of file pcb_base_frame.cpp.

923{
924 return Pgm().GetSettingsManager().GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>();
925}

References Pgm().

Referenced by FOOTPRINT_EDIT_FRAME::GetColorSettings(), and FOOTPRINT_WIZARD_FRAME::GetColorSettings().

◆ 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 459 of file load_select_footprint.cpp.

460{
461 wxString footprintName;
462 wxArrayString fplist;
463
464 // Build list of available fp references, to display them in dialog
465 for( FOOTPRINT* fp : GetBoard()->Footprints() )
466 fplist.Add( fp->GetReference() + wxT( " ( " ) + fp->GetValue() + wxT( " )" ) );
467
468 fplist.Sort();
469
470 DIALOG_GET_FOOTPRINT_BY_NAME dlg( this, fplist );
471
472 if( dlg.ShowModal() != wxID_OK ) //Aborted by user
473 return nullptr;
474
475 footprintName = dlg.GetValue();
476 footprintName.Trim( true );
477 footprintName.Trim( false );
478
479 if( !footprintName.IsEmpty() )
480 {
481 for( FOOTPRINT* fp : GetBoard()->Footprints() )
482 {
483 if( fp->GetReference().CmpNoCase( footprintName ) == 0 )
484 return fp;
485 }
486 }
487
488 return nullptr;
489}
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 198 of file eda_base_frame.h.

198{ return m_ident; }

References EDA_BASE_FRAME::m_ident.

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

◆ 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 550 of file pcb_base_frame.cpp.

551{
553}
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 247 of file pcb_base_frame.cpp.

248{
249 return GetBoard()->GetItem( aId );
250}

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

Referenced by PAD_TOOL::EditPad().

◆ GetIuScale()

const EDA_IU_SCALE & UNITS_PROVIDER::GetIuScale ( ) const
inlineinherited

◆ GetMagneticItemsSettings()

◆ GetMaxUndoItems()

int EDA_BASE_FRAME::GetMaxUndoItems ( ) const
inlineinherited

Definition at line 565 of file eda_base_frame.h.

565{ 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 851 of file eda_draw_frame.cpp.

852{
853 const VECTOR2I& gridOrigin = GetGridOrigin();
854 VECTOR2D gridSize = GetCanvas()->GetGAL()->GetGridSize();
855
856 double xOffset = fmod( gridOrigin.x, gridSize.x );
857 int x = KiROUND( (aPosition.x - xOffset) / gridSize.x );
858 double yOffset = fmod( gridOrigin.y, gridSize.y );
859 int y = KiROUND( (aPosition.y - yOffset) / gridSize.y );
860
861 return VECTOR2I( KiROUND( x * gridSize.x + xOffset ), KiROUND( y * gridSize.y + yOffset ) );
862}
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:80

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 865 of file eda_draw_frame.cpp.

866{
867 const VECTOR2I& gridOrigin = GetGridOrigin();
868 VECTOR2D gridSize = GetCanvas()->GetGAL()->GetGridSize() / 2.0;
869
870 double xOffset = fmod( gridOrigin.x, gridSize.x );
871 int x = KiROUND( (aPosition.x - xOffset) / gridSize.x );
872 double yOffset = fmod( gridOrigin.y, gridSize.y );
873 int y = KiROUND( (aPosition.y - yOffset) / gridSize.y );
874
875 return VECTOR2I( KiROUND( x * gridSize.x + xOffset ), KiROUND( y * gridSize.y + yOffset ) );
876}

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 583 of file pcb_base_frame.cpp.

584{
585 return m_originTransforms;
586}

References m_originTransforms.

◆ GetPageSettings()

const PAGE_INFO & PCB_BASE_FRAME::GetPageSettings ( ) const
overridevirtual

Implements EDA_DRAW_FRAME.

Definition at line 535 of file pcb_base_frame.cpp.

536{
537 return m_pcb->GetPageSettings();
538}
const PAGE_INFO & GetPageSettings() const
Definition: board.h:619

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 541 of file pcb_base_frame.cpp.

542{
543 // this function is only needed because EDA_DRAW_FRAME is not compiled
544 // with either -DPCBNEW or -DEESCHEMA, so the virtual is used to route
545 // into an application specific source file.
547}
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 916 of file pcb_base_frame.cpp.

917{
918 return Pgm().GetSettingsManager().GetAppSettings<PCBNEW_SETTINGS>();
919}

References Pgm().

Referenced by AddFootprintToBoard(), FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), BOARD_NETLIST_UPDATER::addNewFootprint(), DIALOG_PLOT::applyPlotSettings(), PCB_EDIT_FRAME::CommonSettingsChanged(), PCB_SELECTION_TOOL::ctrlClickHighlights(), 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_NETLIST_IMPORT::DIALOG_NETLIST_IMPORT(), 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_GENDRILL::initDialog(), DIALOG_GEN_FOOTPRINT_POSITION::initDialog(), DIALOG_BOARD_REANNOTATE::InitValues(), 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(), APPEARANCE_CONTROLS::onObjectVisibilityChanged(), DIALOG_EXPORT_SVG::onPagePerLayerClicked(), APPEARANCE_CONTROLS::onRatsnestMode(), BOARD_EDITOR_CONTROL::PlaceFootprint(), BOARD_COMMIT::Push(), EDIT_TOOL::Remove(), 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_EDITOR_CONDITIONS::trackFillDisplayFunc(), DIALOG_FOOTPRINT_PROPERTIES::TransferDataFromWindow(), DIALOG_PRINT_PCBNEW::TransferDataToWindow(), DIALOG_GENDRILL::UpdateConfig(), APPEARANCE_CONTROLS::UpdateDisplayOptions(), PCB_EDITOR_CONDITIONS::viaFillDisplayFunc(), 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_NETLIST_IMPORT::~DIALOG_NETLIST_IMPORT(), 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 626 of file pcb_base_frame.cpp.

627{
628 return m_pcb->GetPlotOptions();
629}
const PCB_PLOT_PARAMS & GetPlotOptions() const
Definition: board.h:622

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 216 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(), PCB_EDIT_FRAME::isAutoSaveRequired(), 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(), DIALOG_POSITION_RELATIVE::OnUseUserOriginClick(), 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 1016 of file eda_draw_frame.cpp.

1017{
1018 // Virtual function. Base class implementation returns an empty string.
1019 return wxEmptyString;
1020}

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 893 of file pcb_base_frame.cpp.

894{
895 if( aErrorCode >= CLEANUP_FIRST )
896 return RPT_SEVERITY_ACTION;
897
899
900 return bds.m_DRCSeverities[ aErrorCode ];
901}
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 589 of file pcb_base_frame.cpp.

590{
591 return m_pcb->GetTitleBlock();
592}
TITLE_BLOCK & GetTitleBlock()
Definition: board.h:625

References BOARD::GetTitleBlock(), and m_pcb.

◆ GetToolCanvas()

wxWindow * EDA_DRAW_FRAME::GetToolCanvas ( ) const
inlineoverridevirtualinherited

Canvas access.

Implements TOOLS_HOLDER.

Definition at line 418 of file eda_draw_frame.h.

418{ 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(), 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(), 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(), DIALOG_PLOT::onRunDRC(), DIALOG_DRC::OnRunDRCClick(), HIERARCHY_NAVIG_PANEL::onSelectSheetPath(), SCH_EDIT_FRAME::onSize(), PCB_EDIT_FRAME::onSize(), SYMBOL_TREE_PANE::onSymbolSelected(), DIALOG_SYMBOL_FIELDS_TABLE::OnTableCellClick(), 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(), Refresh(), 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(), 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(), EDA_DRAW_FRAME::UpdateMsgPanel(), NET_GRID_TABLE::updateNetVisibility(), PCB_PROPERTIES_PANEL::valueChanged(), DIALOG_NETLIST_IMPORT::~DIALOG_NETLIST_IMPORT(), 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 1145 of file eda_draw_frame.cpp.

1146{
1148
1149 aPrimaryUnit = GetUserUnits();
1150 aSecondaryUnits = EDA_UNITS::MILS;
1151
1152 if( EDA_UNIT_UTILS::IsImperialUnit( aPrimaryUnit ) )
1153 {
1154 if( cmnTool )
1155 aSecondaryUnits = cmnTool->GetLastMetricUnits();
1156 else
1157 aSecondaryUnits = EDA_UNITS::MILLIMETRES;
1158 }
1159 else
1160 {
1161 if( cmnTool )
1162 aSecondaryUnits = cmnTool->GetLastImperialUnits();
1163 else
1164 aSecondaryUnits = EDA_UNITS::MILS;
1165 }
1166}
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().

◆ GetUserOrigin()

const VECTOR2I PCB_BASE_FRAME::GetUserOrigin ( ) const

Definition at line 568 of file pcb_base_frame.cpp.

569{
570 VECTOR2I origin( 0, 0 );
571
572 switch( GetPcbNewSettings()->m_Display.m_DisplayOrigin )
573 {
575 case PCB_DISPLAY_ORIGIN::PCB_ORIGIN_AUX: origin = GetAuxOrigin(); break;
577 default: wxASSERT( false ); break;
578 }
579
580 return origin;
581}
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 37 of file units_provider.h.

37{ return m_userUnits; }
EDA_UNITS m_userUnits

References UNITS_PROVIDER::m_userUnits.

Referenced by DIALOG_CONSTRAINTS_REPORTER::AddPage(), 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(), PCB_EDIT_FRAME::GenFootprintsReport(), PANEL_SETUP_TEXT_AND_GRAPHICS::getGridValue(), GERBER_DRAW_ITEM::GetMsgPanelInfo(), EDA_DRAW_FRAME::GetUnitPair(), GetUserUnits(), GERBVIEW_INSPECTION_TOOL::MeasureTool(), PCB_VIEWER_TOOLS::MeasureTool(), UNITS_PROVIDER::MessageTextFromValue(), PANEL_SETUP_BOARD_STACKUP::onAdjustDielectricThickness(), PANEL_SETUP_BOARD_STACKUP::onExportToClipboard(), PANEL_SETUP_TRACKS_AND_VIAS::OnSortDiffPairsClick(), PANEL_SETUP_TRACKS_AND_VIAS::OnSortTrackWidthsClick(), PANEL_SETUP_TRACKS_AND_VIAS::OnSortViaSizesClick(), PANEL_SETUP_BOARD_STACKUP::onThicknessChange(), UNIT_BINDER::onUnitsChanged(), DIALOG_TRACK_VIA_PROPERTIES::onUnitsChanged(), DIALOG_NET_INSPECTOR::onUnitsChanged(), PANEL_FP_EDITOR_DEFAULTS::PANEL_FP_EDITOR_DEFAULTS(), PANEL_PREVIEW_3D_MODEL::PANEL_PREVIEW_3D_MODEL(), PCB_CONTROL::placeBoardItems(), POSITION_RELATIVE_TOOL::PositionRelative(), DRC_TOOL::RunTests(), SCH_EDIT_FRAME::SaveSettings(), EDA_DRAW_FRAME::SaveSettings(), PIN_TABLE_DATA_MODEL::SetValue(), FP_TEXT_GRID_TABLE::SetValue(), GERBVIEW_INSPECTION_TOOL::ShowDCodes(), UNITS_PROVIDER::StringFromValue(), COMMON_TOOLS::ToggleUnits(), EDA_DRAW_FRAME::ToggleUserUnits(), PANEL_SETUP_BOARD_STACKUP::transferDataFromUIToStackup(), PANEL_SETUP_TRACKS_AND_VIAS::TransferDataFromWindow(), UNIT_BINDER::UNIT_BINDER(), PCB_BASE_EDIT_FRAME::unitsChangeRefresh(), EDITOR_CONDITIONS::unitsFunc(), PROPERTIES_PANEL::update(), GERBVIEW_FRAME::updateDCodeSelectBox(), DIALOG_DIMENSION_PROPERTIES::updateDimensionFromDialog(), PNS_TUNE_STATUS_POPUP::UpdateStatus(), PL_EDITOR_FRAME::UpdateStatusBar(), 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 928 of file pcb_base_frame.cpp.

929{
930 switch( GetFrameType() )
931 {
932 case FRAME_PCB_EDITOR:
936 default:
937 return Pgm().GetSettingsManager().GetAppSettings<PCBNEW_SETTINGS>();
938
942 case FRAME_CVPCB:
944 return Pgm().GetSettingsManager().GetAppSettings<CVPCB_SETTINGS>();
945 }
946}
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 782 of file eda_base_frame.cpp.

783{
784 return &aCfg->m_Window;
785}
WINDOW_SETTINGS m_Window
Definition: app_settings.h:184

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 1337 of file eda_base_frame.cpp.

1338{
1339#ifdef __WXGTK__
1340 wxSize winSize = GetSize();
1341
1342 // GTK includes the window decorations in the normal GetSize call,
1343 // so we have to use a GTK-specific sizing call that returns the
1344 // non-decorated window size.
1346 {
1347 int width = 0;
1348 int height = 0;
1349 GTKDoGetSize( &width, &height );
1350
1351 winSize.Set( width, height );
1352 }
1353#else
1354 wxSize winSize = GetSize();
1355#endif
1356
1357 return winSize;
1358}
@ 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 626 of file eda_draw_frame.cpp.

627{
628 // returns a human readable value which can be displayed as zoom
629 // level indicator in dialogs.
630 double zoom = m_canvas->GetGAL()->GetZoomFactor();
631 return wxString::Format( wxT( "Z %.2f" ), zoom );
632}
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 111 of file pcb_base_frame.cpp.

112{
114
115#if defined( KICAD_USE_3DCONNEXION )
116 if( m_spaceMouse != nullptr )
117 {
118 m_spaceMouse->SetFocus( aEvent.GetActive() );
119 }
120#endif
121}
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 124 of file pcb_base_frame.cpp.

125{
127
128#if defined( KICAD_USE_3DCONNEXION )
129 if( m_spaceMouse != nullptr && aEvent.IsIconized() )
130 {
131 m_spaceMouse->SetFocus( false );
132 }
133#endif
134}
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 1361 of file eda_base_frame.cpp.

1362{
1363 // Update the icon theme when the system theme changes and update the toolbars
1365 ThemeChanged();
1366
1367 // This isn't handled by ThemeChanged()
1368 if( GetMenuBar() )
1369 {
1370 // For icons in menus, icon scaling & hotkeys
1372 GetMenuBar()->Refresh();
1373 }
1374}
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 359 of file eda_base_frame.cpp.

361{
362 bool checkRes = false;
363 bool enableRes = true;
364 bool showRes = true;
365 bool isCut = aEvent.GetId() == ACTIONS::cut.GetUIId();
366 bool isCopy = aEvent.GetId() == ACTIONS::copy.GetUIId();
367 bool isPaste = aEvent.GetId() == ACTIONS::paste.GetUIId();
368 SELECTION& selection = aFrame->GetCurrentSelection();
369
370 try
371 {
372 checkRes = aCond.checkCondition( selection );
373 enableRes = aCond.enableCondition( selection );
374 showRes = aCond.showCondition( selection );
375 }
376 catch( std::exception& )
377 {
378 // Something broke with the conditions, just skip the event.
379 aEvent.Skip();
380 return;
381 }
382
383 if( isCut || isCopy || isPaste )
384 {
385 wxWindow* focus = wxWindow::FindFocus();
386 wxTextEntry* textEntry = dynamic_cast<wxTextEntry*>( focus );
387
388 if( textEntry && isCut && textEntry->CanCut() )
389 enableRes = true;
390 else if( textEntry && isCopy && textEntry->CanCopy() )
391 enableRes = true;
392 else if( textEntry && isPaste && textEntry->CanPaste() )
393 enableRes = true;
394 }
395
396 aEvent.Enable( enableRes );
397 aEvent.Show( showRes );
398
399 // wxWidgets 3.1.5+ includes a field in the event that says if the event supports being
400 // checked, since wxMenuItems don't want to be checked unless they actually are checkable
401#if wxCHECK_VERSION( 3, 1, 5 )
402 if( aEvent.IsCheckable() )
403 aEvent.Check( checkRes );
404#else
405 bool canCheck = true;
406
407 // wxMenuItems don't want to be checked unless they actually are checkable, so we have to
408 // check to see if they can be and can't just universally apply a check in this event.
409 if( auto menu = dynamic_cast<wxMenu*>( aEvent.GetEventObject() ) )
410 canCheck = menu->FindItem( aEvent.GetId() )->IsCheckable();
411
412 if( canCheck )
413 aEvent.Check( checkRes );
414#endif
415}
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 885 of file eda_draw_frame.cpp.

886{
887 // To be implemented by subclasses.
888}

Referenced by EDA_DRAW_FRAME::resolveCanvasType(), and 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 801 of file eda_base_frame.cpp.

802{
803 return Kiface().GetHelpFileName();
804}
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 503 of file pcb_base_frame.cpp.

504{
505 KIGFX::PCB_VIEW* view = GetCanvas()->GetView();
506
507 if( view && GetBoard()->m_SolderMask && view->HasItem( GetBoard()->m_SolderMask ) )
508 view->Remove( GetBoard()->m_SolderMask );
509}
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:1560

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 1245 of file eda_base_frame.cpp.

1246{
1247 wxAcceleratorEntry entries[1];
1248 entries[0].Set( wxACCEL_CTRL, int( 'Q' ), wxID_EXIT );
1249 wxAcceleratorTable accel( 1, entries );
1250 SetAcceleratorTable( accel );
1251}

◆ 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.

Reimplemented in SCH_EDIT_FRAME, and PCB_EDIT_FRAME.

Definition at line 609 of file eda_base_frame.h.

609{ return false; }

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 1238 of file eda_base_frame.cpp.

1239{
1240 // This function should be overridden in child classes
1241 return false;
1242}

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 163 of file kiway_player.cpp.

164{
165 return !m_modal_loop;
166}

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 173 of file kiway_player.h.

173{ 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 250 of file eda_draw_frame.cpp.

251{
252 KIWAY_PLAYER* frame = Kiway().Player( FRAME_PYTHON, false );
253 return frame && frame->IsVisible();
254}
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 197 of file eda_base_frame.h.

197{ 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(), 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_CONTROL::Paste(), SYMBOL_EDITOR_CONTROL::PinLibrary(), PCB_CONTROL::placeBoardItems(), 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 1148 of file eda_base_frame.cpp.

1149{
1150 wxString msg;
1151 wxFileName fn = aFileName;
1152
1153 // Check for absence of a file path with a file name. Unfortunately KiCad
1154 // uses paths relative to the current project path without the ./ part which
1155 // confuses wxFileName. Making the file name path absolute may be less than
1156 // elegant but it solves the problem.
1157 if( fn.GetPath().IsEmpty() && fn.HasName() )
1158 fn.MakeAbsolute();
1159
1160 wxCHECK_MSG( fn.IsOk(), false,
1161 wxT( "File name object is invalid. Bad programmer!" ) );
1162 wxCHECK_MSG( !fn.GetPath().IsEmpty(), false,
1163 wxT( "File name object path <" ) + fn.GetFullPath() +
1164 wxT( "> is not set. Bad programmer!" ) );
1165
1166 if( fn.IsDir() && !fn.IsDirWritable() )
1167 {
1168 msg.Printf( _( "Insufficient permissions to folder '%s'." ), fn.GetPath() );
1169 }
1170 else if( !fn.FileExists() && !fn.IsDirWritable() )
1171 {
1172 msg.Printf( _( "Insufficient permissions to save file '%s'." ), fn.GetFullPath() );
1173 }
1174 else if( fn.FileExists() && !fn.IsFileWritable() )
1175 {
1176 msg.Printf( _( "Insufficient permissions to save file '%s'." ), fn.GetFullPath() );
1177 }
1178
1179 if( !msg.IsEmpty() )
1180 {
1181 if( aVerbose )
1182 wxMessageBox( msg );
1183
1184 return false;
1185 }
1186
1187 return true;
1188}

References _.

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(), 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(), SCH_EDIT_FRAME::OnOpenCvpcb(), SCH_EDIT_FRAME::OnOpenPcbnew(), EDA_BASE_FRAME::OnPreferences(), 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(), 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 184 of file kiway_player.cpp.

185{
186 // logging support
187 KiwayMailIn( aEvent ); // call the virtual, override in derived.
188}
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 74 of file kiway_player.cpp.

75{
76 // override this in derived classes.
77}

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 191 of file kiway_player.cpp.

192{
193 int id = event.GetId();
194
195 // tell all the KIWAY_PLAYERs about the language change.
196 Kiway().SetLanguage( id );
197}
virtual void SetLanguage(int aLanguage)
Change the language and then calls ShowChangedLanguage() on all #KIWAY_PLAYERs.
Definition: kiway.cpp:504

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 1023 of file eda_draw_frame.cpp.

1027{
1028 wxString prompt = doOpen ? _( "Select Library" ) : _( "New Library" );
1029 aFilename.SetExt( ext );
1030
1031 wxString dir;
1032
1033 if( GetMruPath().IsEmpty() )
1034 dir = aGlobalPath;
1035 else
1036 dir = GetMruPath();
1037
1038
1039 if( isDirectory && doOpen )
1040 {
1041 if( !aIsGlobal && GetMruPath().IsEmpty() )
1042 {
1043 dir = Prj().GetProjectPath();
1044 }
1045
1046 wxDirDialog dlg( this, prompt, dir, wxDD_DEFAULT_STYLE | wxDD_DIR_MUST_EXIST );
1047
1048 if( dlg.ShowModal() == wxID_CANCEL )
1049 return false;
1050
1051 aFilename = dlg.GetPath();
1052 aFilename.SetExt( ext );
1053 }
1054 else
1055 {
1056 // Ensure the file has a dummy name, otherwise GTK will display the regex from the filter
1057 if( aFilename.GetName().empty() )
1058 aFilename.SetName( "Library" );
1059
1060 if( !aIsGlobal && GetMruPath().IsEmpty() )
1061 {
1062 dir = Prj().IsNullProject() ? aFilename.GetFullPath() : Prj().GetProjectPath();
1063 }
1064
1065 wxFileDialog dlg( this, prompt, dir, aFilename.GetFullName(),
1066 wildcard, doOpen ? wxFD_OPEN | wxFD_FILE_MUST_EXIST
1067 : wxFD_SAVE | wxFD_CHANGE_DIR | wxFD_OVERWRITE_PROMPT );
1068
1069 if( dlg.ShowModal() == wxID_CANCEL )
1070 return false;
1071
1072 aFilename = dlg.GetPath();
1073 aFilename.SetExt( ext );
1074 }
1075
1076 SetMruPath( aFilename.GetPath() );
1077
1078 return true;
1079}
wxString GetMruPath() const
void SetMruPath(const wxString &aPath)
PROJECT & Prj() const
Return a reference to the PROJECT associated with this KIWAY.
virtual const wxString GetProjectPath() const
Return the full path of the project.
Definition: project.cpp:125
virtual bool IsNullProject() const
Check if this project is a null project (i.e.
Definition: project.cpp:137

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 779 of file eda_draw_frame.cpp.

780{
781#ifdef __WXMAC__
782 // Cairo renderer doesn't handle Retina displays so there's really only one game
783 // in town for Mac
785#endif
786
789
790 if( cfg )
791 canvasType = static_cast<EDA_DRAW_PANEL_GAL::GAL_TYPE>( cfg->m_Graphics.canvas_type );
792
793 if( canvasType < EDA_DRAW_PANEL_GAL::GAL_TYPE_NONE
794 || canvasType >= EDA_DRAW_PANEL_GAL::GAL_TYPE_LAST )
795 {
796 wxASSERT( false );
798 }
799
800 // Legacy canvas no longer supported. Switch to OpenGL, falls back to Cairo on failure
801 if( canvasType == EDA_DRAW_PANEL_GAL::GAL_TYPE_NONE )
803
804 return canvasType;
805}
APP_SETTINGS_BASE is a settings class that should be derived for each standalone KiCad application.
Definition: app_settings.h:101
@ 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 312 of file load_select_footprint.cpp.

313{
314 FOOTPRINT* footprint = nullptr;
315
316 try
317 {
318 footprint = loadFootprint( aFootprintId );
319 }
320 catch( const IO_ERROR& )
321 {
322 }
323
324 return footprint;
325}
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 328 of file load_select_footprint.cpp.

329{
330 FP_LIB_TABLE* fptbl = Prj().PcbFootprintLibs();
331
332 wxCHECK_MSG( fptbl, nullptr, wxT( "Cannot look up LIB_ID in NULL FP_LIB_TABLE." ) );
333
334 FOOTPRINT *footprint = nullptr;
335
336 // When loading a footprint from a library in the footprint editor
337 // the items UUIDs must be keep and not reinitialized
338 bool keepUUID = IsType( FRAME_FOOTPRINT_EDITOR );
339
340 try
341 {
342 footprint = fptbl->FootprintLoadWithOptionalNickname( aFootprintId, keepUUID );
343 }
344 catch( const IO_ERROR& )
345 {
346 }
347
348 // If the footprint is found, clear all net info to be sure there are no broken links to
349 // any netinfo list (should be not needed, but it can be edited from the footprint editor )
350 if( footprint )
351 footprint->ClearAllNets();
352
353 return footprint;
354}
bool IsType(FRAME_T aType) const
void ClearAllNets()
Clear (i.e.
Definition: footprint.cpp:540
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:318

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 858 of file pcb_base_frame.cpp.

859{
861
862 if( aCfg->m_Window.grid.sizes.empty() )
863 aCfg->m_Window.grid.sizes = aCfg->DefaultGridSizeList();
864
865 // Currently values read from config file are not used because the user cannot
866 // change this config
867 // if( aCfg->m_Window.zoom_factors.empty() )
868 {
870 }
871
872 // Some, but not all derived classes have a PCBNEW_SETTINGS.
873 PCBNEW_SETTINGS* cfg = dynamic_cast<PCBNEW_SETTINGS*>( aCfg );
874
875 if( cfg )
877
878 wxASSERT( GetCanvas() );
879
880 if( GetCanvas() )
881 {
883
884 if( rs )
885 {
888 }
889 }
890}
virtual const std::vector< wxString > DefaultGridSizeList() const
By default, this returns the list of grids available in PcbNew-based applications.
void LoadSettings(APP_SETTINGS_BASE *aCfg) override
Load common frame parameters from a configuration file.
void SetHighlightFactor(float aFactor)
void SetSelectFactor(float aFactor)
float highlight_factor
How much to brighten highlighted objects by.
Definition: app_settings.h:119
float select_factor
How much to brighten selected objects by.
Definition: app_settings.h:120
std::vector< wxString > sizes
Definition: app_settings.h:53
std::vector< double > zoom_factors
Definition: app_settings.h:87
#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, PCBNEW_SETTINGS::m_PolarCoords, APP_SETTINGS_BASE::m_Window, APP_SETTINGS_BASE::GRAPHICS::select_factor, 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 692 of file eda_base_frame.cpp.

693{
694 LoadWindowState( aCfg->state );
695
697 m_mruPath = aCfg->mru_path;
698
700}
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:84
wxString mru_path
Definition: app_settings.h:85
wxString perspective
Definition: app_settings.h:86

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 546 of file eda_base_frame.cpp.

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

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 532 of file eda_base_frame.cpp.

533{
534 if( !Pgm().GetCommonSettings()->m_Session.remember_open_files )
535 return;
536
537 const PROJECT_FILE_STATE* state = Prj().GetLocalSettings().GetFileState( aFileName );
538
539 if( state != nullptr )
540 {
541 LoadWindowState( state->window );
542 }
543}
const PROJECT_FILE_STATE * GetFileState(const wxString &aFileName)
virtual PROJECT_LOCAL_SETTINGS & GetLocalSettings() const
Definition: project.h:154
struct WINDOW_STATE window

References PROJECT_LOCAL_SETTINGS::GetFileState(), PROJECT::GetLocalSettings(), EDA_BASE_FRAME::LoadWindowState(), Pgm(), KIWAY_HOLDER::Prj(), and PROJECT_FILE_STATE::window.

Referenced by KICAD_MANAGER_FRAME::LoadProject(), PCB_EDIT_FRAME::LoadProjectSettings(), EDA_BASE_FRAME::LoadWindowSettings(), EDA_BASE_FRAME::LoadWindowState(), and SCH_EDIT_FRAME::OpenProjectFiles().

◆ LockFile()

bool EDA_DRAW_FRAME::LockFile ( const wxString &  aFileName)
inherited

Mark a schematic file as being in use.

Use ReleaseFile() to undo this.

Parameters
aFileNamefull path to the file.
Returns
false if the file was already locked, true otherwise.

Definition at line 209 of file eda_draw_frame.cpp.

210{
211 m_file_checker = ::LockFile( aFileName );
212
213 return m_file_checker && !m_file_checker->IsAnotherRunning();
214}
bool LockFile(const wxString &aFileName)
Mark a schematic file as being in use.
std::unique_ptr< wxSingleInstanceChecker > m_file_checker

References EDA_DRAW_FRAME::LockFile(), and EDA_DRAW_FRAME::m_file_checker.

Referenced by SCH_EDIT_FRAME::importFile(), EDA_DRAW_FRAME::LockFile(), SCH_EDIT_FRAME::OpenProjectFiles(), PCB_EDIT_FRAME::OpenProjectFiles(), PCB_EDIT_FRAME::SavePcbFile(), and SCH_EDIT_FRAME::SaveProject().

◆ MessageTextFromValue() [1/2]

wxString UNITS_PROVIDER::MessageTextFromValue ( const EDA_ANGLE aValue,
bool  aAddUnitLabel = true 
)
inlineinherited

Definition at line 82 of file units_provider.h.

83 {
85 aValue.AsDegrees(), aAddUnitLabel,
87 }
constexpr EDA_IU_SCALE unityScale
Definition: base_units.h:112
double AsDegrees() const
Definition: eda_angle.h:149
wxString MessageTextFromValue(const EDA_IU_SCALE &aIuScale, EDA_UNITS aUnits, double aValue, bool aAddUnitsText=true, EDA_DATA_TYPE aType=EDA_DATA_TYPE::DISTANCE)
A helper to convert the double length aValue to a string in inches, millimeters, or unscaled units.
Definition: eda_units.cpp:323

References EDA_ANGLE::AsDegrees(), DEGREES, DISTANCE, EDA_UNIT_UTILS::UI::MessageTextFromValue(), and unityScale.

◆ MessageTextFromValue() [2/2]

wxString UNITS_PROVIDER::MessageTextFromValue ( double  aValue,
bool  aAddUnitLabel = true,
EDA_DATA_TYPE  aType = EDA_DATA_TYPE::DISTANCE 
)
inlineinherited

A lower-precision version of StringFromValue().

Should ONLY be used for status text and messages. Not suitable for dialogs, files, etc. where the loss of precision matters.

Definition at line 75 of file units_provider.h.

77 {
79 aAddUnitLabel, aType );
80 }
const EDA_IU_SCALE & GetIuScale() const

References UNITS_PROVIDER::GetIuScale(), UNITS_PROVIDER::GetUserUnits(), and EDA_UNIT_UTILS::UI::MessageTextFromValue().

Referenced by DRC_TEST_PROVIDER_MATCHED_LENGTH::checkLengths(), CheckLibSymbol(), DRC_TEST_PROVIDER_HOLE_SIZE::checkPadHole(), DRC_TEST_PROVIDER_MATCHED_LENGTH::checkSkews(), DRC_TEST_PROVIDER_HOLE_SIZE::checkViaHole(), DIALOG_BOARD_REANNOTATE::CoordTowxString(), EDA_DRAW_FRAME::DisplayGridMsg(), GERBVIEW_FRAME::DisplayGridMsg(), DisplayGridMsg(), GERBER_FILE_IMAGE::DisplayImageInfo(), DRAWING_TOOL::DrawBoardCharacteristics(), DRC_ENGINE::EvalRules(), DIALOG_NET_INSPECTOR::formatLength(), LIB_FIELD::GetMsgPanelInfo(), LIB_PIN::GetMsgPanelInfo(), LIB_TEXT::GetMsgPanelInfo(), LIB_TEXTBOX::GetMsgPanelInfo(), SCH_BITMAP::GetMsgPanelInfo(), SCH_FIELD::GetMsgPanelInfo(), SCH_LABEL_BASE::GetMsgPanelInfo(), SCH_PIN::GetMsgPanelInfo(), SCH_TEXT::GetMsgPanelInfo(), SCH_TEXTBOX::GetMsgPanelInfo(), DS_DRAW_ITEM_BASE::GetMsgPanelInfo(), FP_TEXT::GetMsgPanelInfo(), FP_TEXTBOX::GetMsgPanelInfo(), NETINFO_ITEM::GetMsgPanelInfo(), PAD::GetMsgPanelInfo(), PCB_BITMAP::GetMsgPanelInfo(), PCB_DIMENSION_BASE::GetMsgPanelInfo(), PCB_DIM_ALIGNED::GetMsgPanelInfo(), PCB_DIM_LEADER::GetMsgPanelInfo(), PCB_TARGET::GetMsgPanelInfo(), PCB_TEXT::GetMsgPanelInfo(), PCB_TEXTBOX::GetMsgPanelInfo(), PCB_TRACK::GetMsgPanelInfo(), PCB_VIA::GetMsgPanelInfo(), ZONE::GetMsgPanelInfo(), STROKE_PARAMS::GetMsgPanelInfo(), FOOTPRINT_SEARCH_HANDLER::GetResultCell(), ZONE_SEARCH_HANDLER::GetResultCell(), TEXT_SEARCH_HANDLER::GetResultCell(), LIB_SHAPE::GetSelectMenuText(), SCH_LINE::GetSelectMenuText(), SCH_SHAPE::GetSelectMenuText(), DS_DRAW_ITEM_LINE::GetSelectMenuText(), DS_DRAW_ITEM_RECT::GetSelectMenuText(), PCB_TRACK::GetSelectMenuText(), DIALOG_BOARD_REANNOTATE::MakeSampleText(), DRC_TEST_PROVIDER_ANNULAR_WIDTH::Run(), DRC_TEST_PROVIDER_CONNECTION_WIDTH::Run(), test::DRC_TEST_PROVIDER_DIFF_PAIR_COUPLING::Run(), DRC_TEST_PROVIDER_TEXT_DIMS::Run(), DRC_TEST_PROVIDER_TRACK_WIDTH::Run(), DRC_TEST_PROVIDER_VIA_DIAMETER::Run(), DRC_TEST_PROVIDER_MATCHED_LENGTH::runInternal(), DIALOG_BOARD_STATISTICS::saveReportClicked(), EDA_SHAPE::ShapeGetMsgPanelInfo(), showCoord(), DRC_TEST_PROVIDER_EDGE_CLEARANCE::testAgainstEdge(), DRC_TEST_PROVIDER_COURTYARD_CLEARANCE::testCourtyardClearances(), DRC_TEST_PROVIDER_HOLE_TO_HOLE::testHoleAgainstHole(), DRC_TEST_PROVIDER_PHYSICAL_CLEARANCE::testItemAgainstItem(), DRC_TEST_PROVIDER_COPPER_CLEARANCE::testItemAgainstZone(), DRC_TEST_PROVIDER_PHYSICAL_CLEARANCE::testItemAgainstZones(), DRC_TEST_PROVIDER_COPPER_CLEARANCE::testPadAgainstItem(), DRC_TEST_PROVIDER_PHYSICAL_CLEARANCE::testShapeLineChain(), DRC_TEST_PROVIDER_COPPER_CLEARANCE::testTrackAgainstItem(), DRC_TEST_PROVIDER_PHYSICAL_CLEARANCE::testZoneLayer(), DRC_TEST_PROVIDER_COPPER_CLEARANCE::testZonesToZones(), TRACK_WIDTH_MENU::update(), DIFF_PAIR_MENU::update(), VIA_SIZE_MENU::update(), BOARD_NETLIST_UPDATER::updateCopperZoneNets(), DIALOG_BOARD_STATISTICS::updateDrillGrid(),