KiCad PCB EDA Suite
SYMBOL_EDIT_FRAME Class Reference

The symbol library editor main window. More...

#include <symbol_edit_frame.h>

Inheritance diagram for SYMBOL_EDIT_FRAME:
SCH_BASE_FRAME EDA_DRAW_FRAME KIWAY_PLAYER EDA_BASE_FRAME TOOLS_HOLDER KIWAY_HOLDER

Public Types

enum  UNDO_REDO_LIST { UNDO_LIST, REDO_LIST }
 Remove the aItemCount of old commands from aList and delete commands, pickers and picked items if needed. More...
 
enum  HOLDER_TYPE { DIALOG, FRAME, PANEL }
 

Public Member Functions

 SYMBOL_EDIT_FRAME (KIWAY *aKiway, wxWindow *aParent)
 
 ~SYMBOL_EDIT_FRAME () override
 
void SwitchCanvas (EDA_DRAW_PANEL_GAL::GAL_TYPE aCanvasType) override
 Switch currently used canvas ( Cairo / OpenGL). More...
 
bool IsContentModified () override
 Get if any parts or libraries have been modified but not saved. More...
 
bool HasLibModifications () const
 Check if any pending libraries have been modified. More...
 
wxString GetCurLib () const
 The nickname of the current library being edited and empty string if none. More...
 
wxString SetCurLib (const wxString &aLibNickname)
 Set the current library nickname and returns the old library nickname. More...
 
LIB_TREE_NODEGetCurrentTreeNode () const
 
LIB_ID GetTreeLIBID (int *aUnit=nullptr) const
 Return the LIB_ID of the library or symbol selected in the symbol tree. More...
 
LIB_PARTGetCurPart ()
 Return the current part being edited or NULL if none selected. More...
 
void SetCurPart (LIB_PART *aPart, bool aUpdateZoom)
 Take ownership of aPart and notes that it is the one currently being edited. More...
 
SYMBOL_LIBRARY_MANAGERGetLibManager ()
 
SELECTIONGetCurrentSelection () override
 Get the current selection from the canvas area. More...
 
void ReCreateMenuBar () override
 Recreates the menu bar. More...
 
bool SynchronizePins ()
 
bool AddLibraryFile (bool aCreateNew)
 Create or add an existing library to the symbol library table. More...
 
void CreateNewPart ()
 Create a new part in the selected library. More...
 
void ImportPart ()
 
void ExportPart ()
 
void Save ()
 Save the selected part or library. More...
 
void SaveSymbolAs ()
 Save the currently selected symbol to a new name and/or location. More...
 
void SaveLibraryAs ()
 Save the currently selected library to a new file. More...
 
void SaveAll ()
 Save all modified parts and libraries. More...
 
void Revert (bool aConfirm=true)
 Revert unsaved changes in a part, restoring to the last saved state. More...
 
void RevertAll ()
 
void DeletePartFromLibrary ()
 
void CopyPartToClipboard ()
 
void LoadPart (const wxString &aLibrary, const wxString &aPart, int Unit)
 
void DuplicatePart (bool aFromClipboard)
 Insert a duplicate part. More...
 
void OnSelectUnit (wxCommandEvent &event)
 
void OnToggleSymbolTree (wxCommandEvent &event)
 
bool IsSymbolTreeShown ()
 
void FreezeLibraryTree ()
 
void ThawLibraryTree ()
 
void OnUpdatePartNumber (wxUpdateUIEvent &event)
 
void UpdateAfterSymbolProperties (wxString *aOldName=nullptr)
 
void RebuildSymbolUnitsList ()
 
bool canCloseWindow (wxCloseEvent &aCloseEvent) override
 
void doCloseWindow () override
 
void OnExitKiCad (wxCommandEvent &event)
 
void ReCreateHToolbar () override
 
void ReCreateVToolbar () override
 
void ReCreateOptToolbar () override
 
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...
 
SYMBOL_EDITOR_SETTINGSGetSettings () const
 
APP_SETTINGS_BASEconfig () const override
 Returns the settings object used in SaveSettings(), and is overloaded in KICAD_MANAGER_FRAME. More...
 
COLOR_SETTINGSGetColorSettings () const override
 Returns a pointer to the active color theme settings. More...
 
void CloseWindow (wxCommandEvent &event)
 Trigger the wxCloseEvent, which is handled by the function given to EVT_CLOSE() macro: More...
 
void OnModify () override
 Must be called after a schematic change in order to set the "modify" flag of the current symbol. More...
 
int GetUnit () const
 
void SetUnit (int aUnit)
 
int GetConvert () const
 
void SetConvert (int aConvert)
 
bool GetShowDeMorgan () const
 
void SetShowDeMorgan (bool show)
 
void ClearMsgPanel () override
 Clear all messages from the message panel. More...
 
bool IsSymbolFromSchematic () const
 
bool IsSymbolFromLegacyLibrary () const
 
void DisplaySymbolDatasheet ()
 Display the documentation of the selected symbol. More...
 
void SaveCopyInUndoList (EDA_ITEM *aItem, UNDO_REDO aUndoType=UNDO_REDO::LIBEDIT, bool aAppend=false)
 Create a copy of the current symbol, and save it in the undo list. More...
 
void GetSymbolFromUndoList ()
 
void GetSymbolFromRedoList ()
 
void RollbackSymbolFromUndo ()
 
void ClearUndoORRedoList (UNDO_REDO_LIST whichList, int aItemCount=-1) override
 Free the undo or redo list from aList element. More...
 
bool LoadSymbol (const LIB_ID &aLibId, int aUnit, int aConvert)
 Select the currently active library and loads the symbol from aLibId. More...
 
void PrintPage (const RENDER_SETTINGS *aSettings) override
 Print a page. More...
 
void SVGPlotSymbol (const wxString &aFullFileName)
 Create the SVG print file for the current edited symbol. More...
 
void SyncLibraries (bool aShowProgress, const wxString &aForceRefresh=wxEmptyString)
 Synchronize the library manager to the symbol library table, and then the symbol tree to the library manager. More...
 
void RegenerateLibraryTree ()
 Filter, sort, and redisplay the library tree. More...
 
void RefreshLibraryTree ()
 Redisplay the library tree. More...
 
void InstallPreferences (PAGED_DIALOG *aParent, PANEL_HOTKEYS_EDITOR *aHotkeysPanel) override
 Allow the symbol editor to install its preferences panel into the preferences dialog. More...
 
void CommonSettingsChanged (bool aEnvVarsChanged, bool aTextVarsChanged) override
 Called after the preferences dialog is run. More...
 
void ShowChangedLanguage () override
 Redraw the menus and what not in current language. More...
 
void SetScreen (BASE_SCREEN *aScreen) override
 
const BOX2I GetDocumentExtents (bool aIncludeAllVisible=true) const override
 Returns bbox of document with option to not include some items. More...
 
void RebuildView ()
 
void HardRedraw () override
 Rebuild the GAL and redraw the screen. More...
 
void KiwayMailIn (KIWAY_EXPRESS &mail) override
 Receive KIWAY_EXPRESS messages from other players. More...
 
void LoadSymbolFromSchematic (SCH_COMPONENT *aSymbol)
 Load a symbol from the schematic to edit in place. More...
 
bool IsSymbolEditable () const
 Test if a symbol is loaded and can be edited. More...
 
bool IsSymbolAlias () const
 Restore the empty editor screen, without any part or library selected. More...
 
void emptyScreen ()
 Return either the part selected in the symbol tree, if context menu is active or the currently modified part. More...
 
LIB_ID GetTargetLibId () const
 
void createCanvas ()
 
SCH_DRAW_PANELGetCanvas () const override
 Return a pointer to GAL-based canvas of given EDA draw frame. More...
 
SCH_SCREENGetScreen () const override
 Return a pointer to a BASE_SCREEN or one of its derivatives. More...
 
EESCHEMA_SETTINGSeeconfig () const
 
SYMBOL_EDITOR_SETTINGSlibeditconfig () const
 
KIGFX::SCH_RENDER_SETTINGSGetRenderSettings ()
 
SCHEMATIC_SETTINGSGetDefaults ()
 
COLOR4D GetDrawBgColor () const override
 
virtual bool GetShowAllPins () const
 Allow some frames to show/hide hidden pins. More...
 
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 wxPoint & GetGridOrigin () const override
 Return the absolute coordinates of the origin of the snap grid. More...
 
void SetGridOrigin (const wxPoint &aPoint) override
 
const TITLE_BLOCKGetTitleBlock () const override
 
void SetTitleBlock (const TITLE_BLOCK &aTitleBlock) override
 
void UpdateStatusBar () override
 Update the status bar information. More...
 
PICKED_SYMBOL PickSymbolFromLibTree (const SCHLIB_FILTER *aFilter, std::vector< PICKED_SYMBOL > &aHistoryList, bool aUseLibBrowser, int aUnit, int aConvert, bool aShowFootprints, const LIB_ID *aHighlight=nullptr, bool aAllowFields=true)
 Call the library viewer to select symbol to import into schematic. More...
 
LIB_PARTGetLibPart (const LIB_ID &aLibId, bool aUseCacheLib=false, bool aShowErrorMsg=false)
 Load symbol from symbol library table. More...
 
LIB_PARTGetFlattenedLibPart (const LIB_ID &aLibId, bool aShowErrorMsg=false)
 
PICKED_SYMBOL PickSymbolFromLibBrowser (wxTopLevelWindow *aParent, const SCHLIB_FILTER *aFilter, const LIB_ID &aPreselectedLibId, int aUnit, int aConvert)
 Call the library viewer to select symbol to import into schematic. More...
 
virtual void RedrawScreen (const wxPoint &aCenterPoint, bool aWarpPointer)
 
virtual void CenterScreen (const wxPoint &aCenterPoint, bool aWarpPointer)
 
void AddToScreen (EDA_ITEM *aItem, SCH_SCREEN *aScreen)
 Add an item to the screen (and view) aScreen is the screen the item is located on, if not the current screen. More...
 
void RemoveFromScreen (EDA_ITEM *aItem, SCH_SCREEN *aScreen)
 Remove an item from the screen (and view) aScreen is the screen the item is located on, if not the current screen. More...
 
void UpdateItem (EDA_ITEM *aItem, bool isAddOrDelete=false)
 Mark an item for refresh. More...
 
void RefreshSelection ()
 Mark selected items for refresh. More...
 
void SyncView ()
 Mark all items for refresh. More...
 
COLOR4D GetLayerColor (SCH_LAYER_ID aLayer)
 Helper to retrieve a layer color from the global color settings. 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...
 
wxFindReplaceData & GetFindReplaceData ()
 
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...
 
wxPoint GetNearestGridPosition (const wxPoint &aPosition) const
 Return the nearest aGridSize location to aPosition. More...
 
wxPoint GetNearestHalfGridPosition (const wxPoint &aPosition) const
 Return the nearest aGridSize / 2 location to aPosition. More...
 
virtual ORIGIN_TRANSFORMSGetOriginTransforms ()
 Return a reference to the default ORIGIN_TRANSFORMS object. More...
 
virtual void SetDrawBgColor (COLOR4D aColor)
 
bool ShowPageLimits () const
 
void SetShowPageLimits (bool aShow)
 
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
 
virtual void ExecuteRemoteCommand (const char *cmdline)
 Execute a remote command sent via socket (to port KICAD_PCB_PORT_SERVICE_NUMBER, currently 4242). More...
 
void EraseMsgBox ()
 
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 (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 combobox. More...
 
void UpdateZoomSelectBox ()
 Rebuild the grid combobox to respond to any changes in the GUI (units, user grid changes, etc.) More...
 
void OnUpdateSelectZoom (wxUpdateUIEvent &aEvent)
 Update the checked item in the zoom combobox. 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)
 Recalculate the size of toolbars and display panel when the frame size changes. More...
 
void OnMove (wxMoveEvent &aEvent) override
 
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 wxPoint &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, double aMils2Iu, const wxString &aFilename, const wxString &aSheetLayer=wxEmptyString)
 Prints the drawing-sheet (frame and title block). More...
 
void DisplayToolMsg (const wxString &msg) override
 
virtual void OnPageSettingsChange ()
 Called when modifying the page settings. More...
 
void DisplayUnitsMsg ()
 Display current unit pane in the status bar. More...
 
virtual void DisplayGridMsg ()
 Display current grid size in the status bar. More...
 
void CreateServer (int service, bool local=true)
 
void OnSockRequest (wxSocketEvent &evt)
 
void OnSockRequestServer (wxSocketEvent &evt)
 
void AppendMsgPanel (const wxString &aTextUpper, const wxString &aTextLower, int aPadding=6)
 Append a message to 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 EDA_ITEMGetItem (const KIID &aId) const
 Fetch an item by KIID. More...
 
virtual void ActivateGalCanvas ()
 Use to start up the GAL drawing canvas. 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...
 
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)
 
EDA_UNITS GetUserUnits () const
 Return the user units currently in use. More...
 
void SetUserUnits (EDA_UNITS aUnits)
 
void ChangeUserUnits (EDA_UNITS aUnits)
 
SETTINGS_MANAGERGetSettingsManager () const
 
virtual SEVERITY GetSeverity (int aErrorCode) 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)
 
void SetAutoSaveInterval (int aInterval)
 
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)
 
void PrintMsg (const wxString &text)
 
void CreateInfoBar ()
 
void FinishAUIInitialization ()
 
WX_INFOBARGetInfoBar ()
 
void ShowInfoBarError (const wxString &aErrorMsg, bool aShowCloseButton=false)
 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...
 
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)
 Checks if aFileName can be written. More...
 
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
 
wxSize GetWindowSize ()
 Get the undecorated window size that can be used for restoring the window size. 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 void PushTool (const std::string &actionName)
 NB: the definition of "tool" is different at the user level. More...
 
virtual void PopTool (const std::string &actionName)
 
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...
 
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...
 

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

Public Attributes

bool m_SyncPinEdit
 Set to true to synchronize pins at the same position when editing symbols with multiple units or multiple body styles. More...
 

Protected Member Functions

void setupUIConditions () override
 Setup the UI conditions for the various actions and their controls in this frame. More...
 
bool saveSymbolLibTables (bool aGlobal, bool aProject)
 Save Symbol Library Tables to disk. More...
 
void unitsChangeRefresh () override
 Called when when the units setting has changed to allow for any derived classes to handle refreshing and controls that have units based measurements in them. More...
 
void setupUnits (APP_SETTINGS_BASE *aCfg)
 
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...
 
virtual void handleActivateEvent (wxActivateEvent &aEvent)
 Handle a window activation event. 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...
 
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...
 
void onSystemColorChange (wxSysColourChangedEvent &aEvent)
 
void initExitKey ()
 Sets the common key-pair for exiting the application (Ctrl-Q) and ties it to the wxID_EXIT event id. More...
 

Static Protected Member Functions

static wxString GetAutoSaveFilePrefix ()
 

Protected Attributes

SCHEMATIC_SETTINGS m_base_frame_defaults
 These are only used by symbol_editor. More...
 
SCHEMATIC_SETTINGSm_defaults
 
wxSocketServer * m_socketServer
 
std::vector< wxSocketBase * > m_sockets
 interprocess communication More...
 
std::unique_ptr< wxSingleInstanceChecker > m_file_checker
 
bool m_showPageLimits
 
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
 
wxFindReplaceData * m_findReplaceData
 
wxArrayString m_findStringHistoryList
 
wxArrayString m_replaceStringHistoryList
 
EDA_MSG_PANELm_messagePanel
 
int m_msgFrameHeight
 
COLOR_SETTINGSm_colorSettings
 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
 
FRAME_T m_ident
 
wxPoint m_framePos
 
wxSize m_frameSize
 
bool m_maximizeByDefault
 
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_hasAutoSave
 
bool m_autoSaveState
 
int m_autoSaveInterval
 
wxTimer * m_autoSaveTimer
 
UNDO_REDO_CONTAINER m_undoList
 
UNDO_REDO_CONTAINER m_redoList
 
wxString m_mruPath
 
EDA_UNITS m_userUnits
 Map containing the UI update handlers registered with wx for each action. More...
 
std::map< int, UIUpdateHandlerm_uiUpdateMap
 Set by the close window event handler after frames are asked if they can close. More...
 
bool m_isClosing
 Set by NonUserClose() to indicate that the user did not request the current close. More...
 
bool m_isNonUserClose
 
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 Types

enum  TABLE_SCOPE { GLOBAL_LIB_TABLE, PROJECT_LIB_TABLE }
 

Private Member Functions

void setupTools ()
 
void savePartAs ()
 
bool saveLibrary (const wxString &aLibrary, bool aNewFile)
 Save the changes to the current library. More...
 
void updateTitle ()
 Update the main window title bar with the current library name and read only status of the library. More...
 
void SelectActiveLibrary (const wxString &aLibrary=wxEmptyString)
 Set the current active library to aLibrary. More...
 
wxString SelectLibraryFromList ()
 Display a list of loaded libraries in the symbol library and allows the user to select a library. More...
 
bool LoadSymbolFromCurrentLib (const wxString &aAliasName, int aUnit=0, int aConvert=0)
 Load a symbol from the current active library, optionally setting the selected unit and convert. More...
 
bool LoadOneLibraryPartAux (LIB_PART *aLibEntry, const wxString &aLibrary, int aUnit, int aConvert)
 Create a copy of aLibEntry into memory. More...
 
SYMBOL_LIB_TABLEselectSymLibTable (bool aOptional=false)
 Display a dialog asking the user to select a symbol library table. More...
 
bool backupFile (const wxFileName &aOriginalFile, const wxString &aBackupExt)
 Return currently edited part. More...
 
LIB_PARTgetTargetPart () const
 Return either the library selected in the symbol tree, if context menu is active or the library that is currently modified. More...
 
wxString getTargetLib () const
 
bool saveAllLibraries (bool aRequireConfirmation)
 Save the current part. More...
 
bool saveCurrentPart ()
 Store the currently modified part in the library manager buffer. More...
 
void storeCurrentPart ()
 Return true if aLibId is an alias for the editor screen part. More...
 
bool isCurrentPart (const LIB_ID &aLibId) const
 Rename LIB_PART aliases to avoid conflicts before adding a symbol to a library. More...
 
void ensureUniqueName (LIB_PART *aPart, const wxString &aLibrary)
 
bool addLibTableEntry (const wxString &aLibFile, TABLE_SCOPE aScope=GLOBAL_LIB_TABLE)
 Add aLibFile to the symbol library table defined by aScope. More...
 
bool replaceLibTableEntry (const wxString &aLibNickname, const wxString &aLibFile)
 Replace the file path of the symbol library table entry aLibNickname with aLibFile. More...
 

Private Attributes

SCH_SCREENm_dummyScreen
 < Helper screen used when no part is loaded More...
 
LIB_PARTm_my_part
 
wxComboBox * m_unitSelectBox
 
SYMBOL_TREE_PANEm_treePane
 
SYMBOL_LIBRARY_MANAGERm_libMgr
 
SYMBOL_EDITOR_SETTINGSm_settings
 
int m_unit
 
int m_convert
 Flag if the symbol being edited was loaded directly from a schematic. More...
 
bool m_isSymbolFromSchematic
 
wxString m_reference
 The reference of the symbol. More...
 

Static Private Attributes

static bool m_showDeMorgan = false
 

Detailed Description

The symbol library editor main window.

Definition at line 52 of file symbol_edit_frame.h.

Member Enumeration Documentation

◆ HOLDER_TYPE

enum KIWAY_HOLDER::HOLDER_TYPE
inherited
Enumerator
DIALOG 
FRAME 
PANEL 

Definition at line 42 of file kiway_holder.h.

◆ TABLE_SCOPE

Enumerator
GLOBAL_LIB_TABLE 
PROJECT_LIB_TABLE 

Definition at line 471 of file symbol_edit_frame.h.

◆ UNDO_REDO_LIST

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.
Enumerator
UNDO_LIST 
REDO_LIST 

Definition at line 525 of file eda_base_frame.h.

Constructor & Destructor Documentation

◆ SYMBOL_EDIT_FRAME()

SYMBOL_EDIT_FRAME::SYMBOL_EDIT_FRAME ( KIWAY aKiway,
wxWindow *  aParent 
)

Definition at line 96 of file symbol_edit_frame.cpp.

96  :
97  SCH_BASE_FRAME( aKiway, aParent, FRAME_SCH_SYMBOL_EDITOR, _( "Library Editor" ),
98  wxDefaultPosition, wxDefaultSize, KICAD_DEFAULT_DRAWFRAME_STYLE,
100  m_unitSelectBox( nullptr ),
101  m_isSymbolFromSchematic( false )
102 {
103  SetShowDeMorgan( false );
104  m_SyncPinEdit = false;
105 
106  m_my_part = nullptr;
107  m_treePane = nullptr;
108  m_libMgr = nullptr;
109  m_unit = 1;
110  m_convert = 1;
111  m_aboutTitle = _( "KiCad Symbol Editor" );
112 
113  wxIcon icon;
114  wxIconBundle icon_bundle;
115 
116  icon.CopyFromBitmap( KiBitmap( BITMAPS::icon_libedit ) );
117  icon_bundle.AddIcon( icon );
118  icon.CopyFromBitmap( KiBitmap( BITMAPS::icon_libedit_32 ) );
119  icon_bundle.AddIcon( icon );
120  icon.CopyFromBitmap( KiBitmap( BITMAPS::icon_libedit_16 ) );
121  icon_bundle.AddIcon( icon );
122 
123  SetIcons( icon_bundle );
124 
125  m_settings = Pgm().GetSettingsManager().GetAppSettings<SYMBOL_EDITOR_SETTINGS>();
127 
128  // Ensure axis are always drawn
130  gal_opts.m_axesEnabled = true;
131 
132  m_dummyScreen = new SCH_SCREEN();
134  GetScreen()->m_Center = true;
135 
137 
140 
141  setupTools();
143 
144  m_libMgr = new SYMBOL_LIBRARY_MANAGER( *this );
145 
146  // Preload libraries before using SyncLibraries the first time, as the preload is threaded
147  WX_PROGRESS_REPORTER reporter( this, _( "Loading Symbol Libraries" ),
148  m_libMgr->GetLibraryCount(), true );
149  m_libMgr->Preload( reporter );
150 
151  SyncLibraries( false );
152  m_treePane = new SYMBOL_TREE_PANE( this, m_libMgr );
153 
154  ReCreateMenuBar();
158 
159  updateTitle();
162 
163  m_auimgr.SetManagedWindow( this );
164 
165  CreateInfoBar();
166  m_auimgr.AddPane( m_mainToolBar, EDA_PANE().HToolbar().Name( "MainToolbar" )
167  .Top().Layer( 6 ) );
168  m_auimgr.AddPane( m_messagePanel, EDA_PANE().Messages().Name( "MsgPanel" )
169  .Bottom().Layer( 6 ) );
170 
171  m_auimgr.AddPane( m_optionsToolBar, EDA_PANE().VToolbar().Name( "OptToolbar" )
172  .Left().Layer( 3 ) );
173  m_auimgr.AddPane( m_treePane, EDA_PANE().Palette().Name( "ComponentTree" )
174  .Left().Layer( 2 )
175  .Caption( _( "Libraries" ) )
176  .MinSize( 250, -1 ).BestSize( 250, -1 ) );
177  m_auimgr.AddPane( m_drawToolBar, EDA_PANE().VToolbar().Name( "ToolsToolbar" )
178  .Right().Layer( 2 ) );
179 
180  m_auimgr.AddPane( GetCanvas(), wxAuiPaneInfo().Name( "DrawFrame" )
181  .CentrePane() );
182 
184 
185  if( m_settings->m_LibWidth > 0 )
186  {
187  wxAuiPaneInfo& treePane = m_auimgr.GetPane( "ComponentTree" );
188 
189  // wxAUI hack: force width by setting MinSize() and then Fixed()
190  // thanks to ZenJu http://trac.wxwidgets.org/ticket/13180
191  treePane.MinSize( m_settings->m_LibWidth, -1 );
192  treePane.Fixed();
193  m_auimgr.Update();
194 
195  // now make it resizable again
196  treePane.Resizable();
197  m_auimgr.Update();
198 
199  // Note: DO NOT call m_auimgr.Update() anywhere after this; it will nuke the size
200  // back to minimum.
201  treePane.MinSize( 250, -1 );
202  }
203 
204  Raise();
205  Show( true );
206 
207  SyncView();
208  GetCanvas()->GetView()->UseDrawPriority( true );
209  GetCanvas()->GetGAL()->SetAxesEnabled( true );
210 
212 
213  // Set the working/draw area size to display a symbol to a reasonable value:
214  // A 600mm x 600mm with a origin at the area center looks like a large working area
215  double max_size_x = Millimeter2iu( 600 );
216  double max_size_y = Millimeter2iu( 600 );
217  BOX2D bbox;
218  bbox.SetOrigin( -max_size_x /2, -max_size_y/2 );
219  bbox.SetSize( max_size_x, max_size_y );
220  GetCanvas()->GetView()->SetBoundary( bbox );
221 
223 
224  KIPLATFORM::APP::SetShutdownBlockReason( this, _( "Library changes are unsaved" ) );
225 
226  // Catch unhandled accelerator command characters that were no handled by the library tree
227  // panel.
229  Bind( wxEVT_CHAR_HOOK, &TOOL_DISPATCHER::DispatchWxEvent, m_toolDispatcher );
230 
231  // Ensure the window is on top
232  Raise();
233 }
KIGFX::SCH_VIEW * GetView() const override
Return a pointer to the #VIEW instance used in the panel.
COLOR_SETTINGS * GetColorSettings() const override
Returns a pointer to the active color theme settings.
int m_convert
Flag if the symbol being edited was loaded directly from a schematic.
SCH_BASE_FRAME(KIWAY *aKiway, wxWindow *aParent, FRAME_T aWindowType, const wxString &aTitle, const wxPoint &aPosition, const wxSize &aSize, long aStyle, const wxString &aFrameName)
KIGFX::VIEW_CONTROLS * GetViewControls() const
Return a pointer to the #VIEW_CONTROLS instance used in the panel.
SCH_SCREEN * m_dummyScreen
< Helper screen used when no part is loaded
KIGFX::GAL_DISPLAY_OPTIONS & GetGalDisplayOptions()
Return a reference to the gal rendering options used by GAL for rendering.
ACTION_TOOLBAR * m_optionsToolBar
void SetScreen(BASE_SCREEN *aScreen) override
void SetShowDeMorgan(bool show)
void UseDrawPriority(bool aFlag)
Definition: view.h:643
void LoadSettings(APP_SETTINGS_BASE *aCfg) override
Load common frame parameters from a configuration file.
SCH_SCREEN * GetScreen() const override
Return a pointer to a BASE_SCREEN or one of its derivatives.
bool m_SyncPinEdit
Set to true to synchronize pins at the same position when editing symbols with multiple units or mult...
SYMBOL_TREE_PANE * m_treePane
static TOOL_ACTION zoomFitScreen
Definition: actions.h:99
bool RunAction(const std::string &aActionName, bool aNow=false, T aParam=NULL)
Run the specified action.
Definition: tool_manager.h:141
void SetSize(const Vec &size)
Definition: box2.h:212
KIGFX::SCH_RENDER_SETTINGS * GetRenderSettings()
wxAuiManager m_auimgr
ACTION_TOOLBAR * m_mainToolBar
KIWAY Kiway & Pgm(), KFCTL_STANDALONE
The global Program "get" accessor.
Definition: single_top.cpp:106
bool m_axesEnabled
Fullscreen crosshair or small cross.
Library Editor pane with symbol tree and symbol library table selector.
#define LIB_EDIT_FRAME_NAME
void SetShutdownBlockReason(wxWindow *aWindow, const wxString &aReason)
Sets the block reason why the window/application is preventing OS shutdown.
Definition: gtk/app.cpp:76
void DisplaySymbolDatasheet()
Display the documentation of the selected symbol.
Multi-thread safe progress reporter dialog, intended for use of tasks that paralleize reporting back ...
void updateTitle()
Update the main window title bar with the current library name and read only status of the library.
VECTOR2< double > VECTOR2D
Definition: vector2d.h:622
void FinishAUIInitialization()
bool m_Center
Center on screen.
Definition: base_screen.h:100
void SyncView()
Mark all items for refresh.
EDA_MSG_PANEL * m_messagePanel
Class to handle modifications to the symbol libraries.
virtual void DispatchWxEvent(wxEvent &aEvent)
Process wxEvents (mostly UI events), translate them to TOOL_EVENTs, and make tools handle those.
SCH_DRAW_PANEL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.
void SetAxesColor(const COLOR4D &aAxesColor)
Set the axes color.
void ReCreateHToolbar() override
KIGFX::GAL * GetGAL() const
Return a pointer to the GAL instance used in the panel.
#define KICAD_DEFAULT_DRAWFRAME_STYLE
virtual void SetCrossHairCursorPosition(const VECTOR2D &aPosition, bool aWarpView=true)=0
Move the graphic crosshair cursor to the requested position expressed in world coordinates.
void Preload(PROGRESS_REPORTER &aReporter)
Preloads all symbol libraries in the symbol library table using SYMBOL_ASYNC_LOADER.
wxBitmap KiBitmap(BITMAPS aBitmap, int aHeightTag)
Construct a wxBitmap from an image identifier Returns the image from the active theme if the image ha...
Definition: bitmap.cpp:104
void SetAxesEnabled(bool aAxesEnabled)
Enable drawing the axes.
void ReCreateMenuBar() override
Recreates the menu bar.
Specialization of the wxAuiPaneInfo class for KiCad panels.
TOOL_DISPATCHER * m_toolDispatcher
Definition: tools_holder.h:159
COLOR_SETTINGS * m_colorSettings
The current canvas type.
void setupUIConditions() override
Setup the UI conditions for the various actions and their controls in this frame.
void LoadColors(const COLOR_SETTINGS *aSettings) override
Definition: sch_painter.cpp:93
COLOR4D GetColor(int aLayer) const
void ReCreateOptToolbar() override
TOOL_MANAGER * m_toolManager
Definition: tools_holder.h:157
SYMBOL_EDITOR_SETTINGS * m_settings
#define _(s)
Definition: 3d_actions.cpp:33
void setupUnits(APP_SETTINGS_BASE *aCfg)
void SetOrigin(const Vec &pos)
Definition: box2.h:210
void ReCreateVToolbar() override
SYMBOL_LIBRARY_MANAGER * m_libMgr
void SetBoundary(const BOX2D &aBoundary)
Set limits for view area.
Definition: view.h:273
void SyncLibraries(bool aShowProgress, const wxString &aForceRefresh=wxEmptyString)
Synchronize the library manager to the symbol library table, and then the symbol tree to the library ...
static constexpr int Millimeter2iu(double mm)
wxString m_aboutTitle
wxComboBox * m_unitSelectBox
ACTION_TOOLBAR * m_drawToolBar

References _, TOOL_DISPATCHER::DispatchWxEvent(), icon_libedit, icon_libedit_16, icon_libedit_32, KiBitmap(), LAYER_SCHEMATIC_GRID_AXES, PCAD2KICAD::Left, KIGFX::GAL_DISPLAY_OPTIONS::m_axesEnabled, Millimeter2iu(), Pgm(), PCAD2KICAD::Right, BOX2< Vec >::SetOrigin(), KIPLATFORM::APP::SetShutdownBlockReason(), BOX2< Vec >::SetSize(), and ACTIONS::zoomFitScreen.

◆ ~SYMBOL_EDIT_FRAME()

SYMBOL_EDIT_FRAME::~SYMBOL_EDIT_FRAME ( )
override

Definition at line 236 of file symbol_edit_frame.cpp.

237 {
238  // Shutdown all running tools
239  if( m_toolManager )
241 
242  if( IsSymbolFromSchematic() )
243  {
244  delete m_my_part;
245  m_my_part = nullptr;
246 
247  SCH_SCREEN* screen = GetScreen();
248  delete screen;
249  m_isSymbolFromSchematic = false;
250  }
251  // current screen is destroyed in EDA_DRAW_FRAME
253 
254  auto libedit = Pgm().GetSettingsManager().GetAppSettings<SYMBOL_EDITOR_SETTINGS>();
255  Pgm().GetSettingsManager().Save( libedit );
256 
257  delete m_libMgr;
258 }
void ShutdownAllTools()
Shutdown all tools with a currently registered event loop in this tool manager by waking them up with...
SCH_SCREEN * m_dummyScreen
< Helper screen used when no part is loaded
void SetScreen(BASE_SCREEN *aScreen) override
SCH_SCREEN * GetScreen() const override
Return a pointer to a BASE_SCREEN or one of its derivatives.
KIWAY Kiway & Pgm(), KFCTL_STANDALONE
The global Program "get" accessor.
Definition: single_top.cpp:106
bool IsSymbolFromSchematic() const
TOOL_MANAGER * m_toolManager
Definition: tools_holder.h:157
SYMBOL_LIBRARY_MANAGER * m_libMgr

References SCH_BASE_FRAME::GetScreen(), IsSymbolFromSchematic(), libedit, m_dummyScreen, m_isSymbolFromSchematic, m_libMgr, m_my_part, TOOLS_HOLDER::m_toolManager, Pgm(), SetScreen(), and TOOL_MANAGER::ShutdownAllTools().

Member Function Documentation

◆ ActivateGalCanvas()

void EDA_DRAW_FRAME::ActivateGalCanvas ( )
virtualinherited

Use to start up the GAL drawing canvas.

Reimplemented in PCB_BASE_FRAME, GERBVIEW_FRAME, PCB_EDIT_FRAME, FOOTPRINT_EDIT_FRAME, and PCB_BASE_EDIT_FRAME.

Definition at line 652 of file eda_draw_frame.cpp.

653 {
654  GetCanvas()->SetEvtHandlerEnabled( true );
655  GetCanvas()->StartDrawing();
656 }
virtual EDA_DRAW_PANEL_GAL * GetCanvas() const
Return a pointer to GAL-based canvas of given EDA draw frame.
void StartDrawing()
Begin drawing if it was stopped previously.

References EDA_DRAW_FRAME::GetCanvas(), and EDA_DRAW_PANEL_GAL::StartDrawing().

Referenced by GERBVIEW_FRAME::ActivateGalCanvas(), PCB_BASE_FRAME::ActivateGalCanvas(), SCH_BASE_FRAME::createCanvas(), SCH_DRAW_PANEL::OnShow(), and EDA_DRAW_FRAME::SwitchCanvas().

◆ AddLibraryFile()

bool SYMBOL_EDIT_FRAME::AddLibraryFile ( bool  aCreateNew)

Create or add an existing library to the symbol library table.

Definition at line 800 of file symbol_edit_frame.cpp.

801 {
802  // Select the target library table (global/project)
803  SYMBOL_LIB_TABLE* libTable = selectSymLibTable();
804 
805  if( !libTable )
806  return false;
807 
808  wxFileName fn = m_libMgr->GetUniqueLibraryName();
809 
810  if( !LibraryFileBrowser( !aCreateNew, fn, KiCadSymbolLibFileWildcard(),
812  ( libTable == &SYMBOL_LIB_TABLE::GetGlobalLibTable() ),
814  {
815  return false;
816  }
817 
818  wxString libName = fn.GetName();
819 
820  if( libName.IsEmpty() )
821  return false;
822 
823  if( m_libMgr->LibraryExists( libName ) )
824  {
825  DisplayError( this, wxString::Format( _( "Library \"%s\" already exists" ), libName ) );
826  return false;
827  }
828 
829  if( aCreateNew )
830  {
831  if( !m_libMgr->CreateLibrary( fn.GetFullPath(), libTable ) )
832  {
833  DisplayError( this, wxString::Format( _( "Could not create the library file '%s'.\n"
834  "Check write permission." ),
835  fn.GetFullPath() ) );
836  return false;
837  }
838  }
839  else
840  {
841  if( !m_libMgr->AddLibrary( fn.GetFullPath(), libTable ) )
842  {
843  DisplayError( this, _( "Could not open the library file." ) );
844  return false;
845  }
846  }
847 
848  bool globalTable = ( libTable == &SYMBOL_LIB_TABLE::GetGlobalLibTable() );
849  saveSymbolLibTables( globalTable, !globalTable );
850 
851  return true;
852 }
void DisplayError(wxWindow *aParent, const wxString &aText, int aDisplayTime)
Display an error or warning message box with aMessage.
Definition: confirm.cpp:252
static SYMBOL_LIB_TABLE & GetGlobalLibTable()
bool AddLibrary(const wxString &aFilePath, SYMBOL_LIB_TABLE *aTable)
Add an existing library.
bool LibraryFileBrowser(bool doOpen, wxFileName &aFilename, const wxString &wildcard, const wxString &ext, bool isDirectory=false, bool aIsGlobal=false, const wxString &aGlobalPath=wxEmptyString)
SYMBOL_LIB_TABLE * selectSymLibTable(bool aOptional=false)
Display a dialog asking the user to select a symbol library table.
wxString GetUniqueLibraryName() const
Return a library name that is not currently in use.
bool saveSymbolLibTables(bool aGlobal, bool aProject)
Save Symbol Library Tables to disk.
wxString KiCadSymbolLibFileWildcard()
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
static wxString GetDefaultUserSymbolsPath()
Gets the default path we point users to create projects.
Definition: paths.cpp:97
bool LibraryExists(const wxString &aLibrary, bool aCheckEnabled=false) const
Return true if library exists.
#define _(s)
Definition: 3d_actions.cpp:33
SYMBOL_LIBRARY_MANAGER * m_libMgr
bool CreateLibrary(const wxString &aFilePath, SYMBOL_LIB_TABLE *aTable)
Create an empty library and adds it to the library table.
const std::string KiCadSymbolLibFileExtension

References _, SYMBOL_LIBRARY_MANAGER::AddLibrary(), SYMBOL_LIBRARY_MANAGER::CreateLibrary(), DisplayError(), Format(), PATHS::GetDefaultUserSymbolsPath(), SYMBOL_LIB_TABLE::GetGlobalLibTable(), SYMBOL_LIBRARY_MANAGER::GetUniqueLibraryName(), KiCadSymbolLibFileExtension, KiCadSymbolLibFileWildcard(), SYMBOL_LIBRARY_MANAGER::LibraryExists(), EDA_DRAW_FRAME::LibraryFileBrowser(), m_libMgr, SCH_BASE_FRAME::saveSymbolLibTables(), and selectSymLibTable().

◆ addLibTableEntry()

bool SYMBOL_EDIT_FRAME::addLibTableEntry ( const wxString &  aLibFile,
TABLE_SCOPE  aScope = GLOBAL_LIB_TABLE 
)
private

Add aLibFile to the symbol library table defined by aScope.

Note
The library defined by aLibFile must be a KiCad (s-expression) library.
Parameters
aLibFileis the full path and file name of the symbol library to add to the table.
aScopedefines if aLibFile is added to the global or project library table.
Returns
true if successful or false if a failure occurs.

Definition at line 1331 of file symbol_edit_frame.cpp.

1332 {
1333  wxFileName fn = aLibFile;
1334  wxFileName libTableFileName( Prj().GetProjectPath(),
1336  wxString libNickname = fn.GetName();
1337  SYMBOL_LIB_TABLE* libTable = Prj().SchSymbolLibTable();
1338  const ENV_VAR_MAP& envVars = Pgm().GetLocalEnvVariables();
1339 
1340  if( libTable->HasLibrary( libNickname ) )
1341  {
1342  wxString tmp;
1343  int suffix = 1;
1344 
1345  while( libTable->HasLibrary( libNickname ) )
1346  {
1347  tmp.Printf( "%s%d", fn.GetName(), suffix );
1348  libNickname = tmp;
1349  suffix += 1;
1350  }
1351  }
1352 
1354  row->SetNickName( libNickname );
1355 
1356  wxString normalizedPath = NormalizePath( aLibFile, &envVars, Prj().GetProjectPath() );
1357 
1358  if( aScope == GLOBAL_LIB_TABLE )
1359  {
1361  libTableFileName = SYMBOL_LIB_TABLE::GetGlobalTableFileName();
1362 
1363  // We cannot normalize against the current project path when saving to global table.
1364  normalizedPath = NormalizePath( aLibFile, &envVars, wxEmptyString );
1365  }
1366 
1367  if( normalizedPath.IsEmpty() )
1368  normalizedPath = aLibFile;
1369 
1370  row->SetFullURI( normalizedPath );
1371 
1372  wxCHECK( libTable->InsertRow( row ), false );
1373 
1374  try
1375  {
1376  libTable->Save( libTableFileName.GetFullPath() );
1377  }
1378  catch( const IO_ERROR& ioe )
1379  {
1380  wxString msg = aScope == GLOBAL_LIB_TABLE ? _( "Error saving global library table." )
1381  : _( "Error saving project library table." );
1382 
1383  wxMessageDialog dlg( this, msg, _( "File Save Error" ), wxOK | wxICON_ERROR );
1384  dlg.SetExtendedMessage( ioe.What() );
1385  dlg.ShowModal();
1386 
1387  return false;
1388  }
1389 
1390  return true;
1391 }
static const wxString & GetSymbolLibTableFileName()
static SYMBOL_LIB_TABLE & GetGlobalLibTable()
Hold a record identifying a symbol library accessed by the appropriate symbol library SCH_PLUGIN obje...
bool HasLibrary(const wxString &aNickname, bool aCheckEnabled=false) const
Test for the existence of aNickname in the library table.
bool InsertRow(LIB_TABLE_ROW *aRow, bool doReplace=false)
Adds aRow if it does not already exist or if doReplace is true.
KIWAY Kiway & Pgm(), KFCTL_STANDALONE
The global Program "get" accessor.
Definition: single_top.cpp:106
virtual const wxString What() const
A composite of Problem() and Where()
Definition: exceptions.cpp:29
PROJECT & Prj() const
Return a reference to the PROJECT associated with this KIWAY.
void SetFullURI(const wxString &aFullURI)
Change the full URI for the library.
std::map< wxString, ENV_VAR_ITEM > ENV_VAR_MAP
#define _(s)
Definition: 3d_actions.cpp:33
void SetNickName(const wxString &aNickName)
Change the logical name of this library, useful for an editor.
void Save(const wxString &aFileName) const
Write this library table to aFileName in s-expression form.
Hold an error message and may be used when throwing exceptions containing meaningful error messages.
Definition: ki_exception.h:75
static wxString GetGlobalTableFileName()
Fetch the global symbol library table file name.
wxString NormalizePath(const wxFileName &aFilePath, const ENV_VAR_MAP *aEnvVars, const wxString &aProjectPath)
Normalize a file path to an environmental variable, if possible.
Definition: env_paths.cpp:67

References _, SYMBOL_LIB_TABLE::GetGlobalLibTable(), SYMBOL_LIB_TABLE::GetGlobalTableFileName(), SYMBOL_LIB_TABLE::GetSymbolLibTableFileName(), GLOBAL_LIB_TABLE, LIB_TABLE::HasLibrary(), LIB_TABLE::InsertRow(), NormalizePath(), Pgm(), KIWAY_HOLDER::Prj(), LIB_TABLE::Save(), LIB_TABLE_ROW::SetFullURI(), LIB_TABLE_ROW::SetNickName(), and IO_ERROR::What().

Referenced by saveLibrary().

◆ AddStandardHelpMenu()

void EDA_BASE_FRAME::AddStandardHelpMenu ( wxMenuBar *  aMenuBar)
inherited

Adds the standard KiCad help menu to the menubar.

Definition at line 418 of file eda_base_frame.cpp.

419 {
420  COMMON_CONTROL* commonControl = m_toolManager->GetTool<COMMON_CONTROL>();
421  ACTION_MENU* helpMenu = new ACTION_MENU( false, commonControl );
422 
423  helpMenu->Add( ACTIONS::help );
424  helpMenu->Add( ACTIONS::gettingStarted );
425  helpMenu->Add( ACTIONS::listHotKeys );
426  helpMenu->Add( ACTIONS::getInvolved );
427  helpMenu->Add( ACTIONS::donate );
428  helpMenu->Add( ACTIONS::reportBug );
429 
430  helpMenu->AppendSeparator();
431  helpMenu->Add( _( "&About KiCad" ), "", wxID_ABOUT, BITMAPS::about );
432 
433  aMenuBar->Append( helpMenu, _( "&Help" ) );
434 }
static TOOL_ACTION listHotKeys
Definition: actions.h:180
Defines the structure of a menu based on ACTIONs.
Definition: action_menu.h:47
static TOOL_ACTION reportBug
Cursor control event types.
Definition: actions.h:183
static TOOL_ACTION donate
Definition: actions.h:181
Handle actions that are shared between different applications.
TOOL_MANAGER * m_toolManager
Definition: tools_holder.h:157
#define _(s)
Definition: 3d_actions.cpp:33
static TOOL_ACTION help
Definition: actions.h:179
static TOOL_ACTION getInvolved
Definition: actions.h:182
static TOOL_ACTION gettingStarted
Definition: actions.h:178

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::CreateMenuBar(), KICAD_MANAGER_FRAME::ReCreateMenuBar(), GERBVIEW_FRAME::ReCreateMenuBar(), SYMBOL_VIEWER_FRAME::ReCreateMenuBar(), ReCreateMenuBar(), FOOTPRINT_EDIT_FRAME::ReCreateMenuBar(), FOOTPRINT_VIEWER_FRAME::ReCreateMenuBar(), PL_EDITOR_FRAME::ReCreateMenuBar(), SCH_EDIT_FRAME::ReCreateMenuBar(), CVPCB_MAINFRAME::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 446 of file eda_draw_frame.cpp.

447 {
448  COMMON_TOOLS* commonTools = m_toolManager->GetTool<COMMON_TOOLS>();
449  CONDITIONAL_MENU& aMenu = aToolMenu.GetMenu();
450 
451  aMenu.AddSeparator( 1000 );
452 
453  auto zoomMenu = std::make_shared<ZOOM_MENU>( this );
454  zoomMenu->SetTool( commonTools );
455  aToolMenu.AddSubMenu( zoomMenu );
456 
457  auto gridMenu = std::make_shared<GRID_MENU>( this );
458  gridMenu->SetTool( commonTools );
459  aToolMenu.AddSubMenu( gridMenu );
460 
461  aMenu.AddMenu( zoomMenu.get(), SELECTION_CONDITIONS::ShowAlways, 1000 );
462  aMenu.AddMenu( gridMenu.get(), SELECTION_CONDITIONS::ShowAlways, 1000 );
463 }
static bool ShowAlways(const SELECTION &aSelection)
The default condition function (always returns true).
CONDITIONAL_MENU & GetMenu()
Definition: tool_menu.cpp:46
Handles action that are shared between different applications.
Definition: common_tools.h:37
void AddSeparator(int aOrder=ANY_ORDER)
Add a separator to the menu.
TOOL_MANAGER * m_toolManager
Definition: tools_holder.h:157

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

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

◆ AddToScreen()

void SCH_BASE_FRAME::AddToScreen ( EDA_ITEM aItem,
SCH_SCREEN aScreen 
)
inherited

Add an item to the screen (and view) aScreen is the screen the item is located on, if not the current screen.

Definition at line 362 of file sch_base_frame.cpp.

363 {
364  auto screen = aScreen;
365 
366  if( aScreen == nullptr )
367  screen = GetScreen();
368 
369  screen->Append( (SCH_ITEM*) aItem );
370 
371  if( screen == GetScreen() )
372  {
373  GetCanvas()->GetView()->Add( aItem );
374  UpdateItem( aItem, true ); // handle any additional parent semantics
375  }
376 }
KIGFX::SCH_VIEW * GetView() const override
Return a pointer to the #VIEW instance used in the panel.
void UpdateItem(EDA_ITEM *aItem, bool isAddOrDelete=false)
Mark an item for refresh.
SCH_SCREEN * GetScreen() const override
Return a pointer to a BASE_SCREEN or one of its derivatives.
SCH_DRAW_PANEL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.
virtual void Add(VIEW_ITEM *aItem, int aDrawPriority=-1)
Add a VIEW_ITEM to the view.
Definition: view.cpp:322
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:197

References KIGFX::VIEW::Add(), SCH_BASE_FRAME::GetCanvas(), SCH_BASE_FRAME::GetScreen(), SCH_DRAW_PANEL::GetView(), and SCH_BASE_FRAME::UpdateItem().

Referenced by SCH_EDIT_FRAME::AddItemToScreenAndUndoList(), SCH_EDIT_FRAME::AddJunction(), SCH_EDIT_FRAME::BreakSegment(), SCH_EDIT_TOOL::ChangeTextType(), SCH_EDIT_FRAME::DeleteJunction(), SCH_LINE_WIRE_BUS_TOOL::doDrawSegments(), SCH_LINE_WIRE_BUS_TOOL::doUnfoldBus(), SCH_EDIT_TOOL::Duplicate(), SCH_LINE_WIRE_BUS_TOOL::finishSegments(), SCH_MOVE_TOOL::getConnectedDragItems(), SCH_EDIT_FRAME::PutDataInPreviousState(), SCH_EDIT_TOOL::RepeatDrawItem(), and SCH_EDIT_FRAME::SchematicCleanUp().

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

599 {
600  if( m_messagePanel )
601  m_messagePanel->AppendMessage( aTextUpper, aTextLower, aPadding );
602 }
EDA_MSG_PANEL * m_messagePanel
void AppendMessage(const wxString &aUpperText, const wxString &aLowerText, int aPadding=6)
Function AppendMessage appends a message to the message panel.
Definition: msgpanel.cpp:119

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

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

◆ backupFile()

bool SYMBOL_EDIT_FRAME::backupFile ( const wxFileName &  aOriginalFile,
const wxString &  aBackupExt 
)
private

Return currently edited part.

Definition at line 1022 of file symbol_edit_frame.cpp.

1023 {
1024  if( aOriginalFile.FileExists() )
1025  {
1026  wxFileName backupFileName( aOriginalFile );
1027  backupFileName.SetExt( aBackupExt );
1028 
1029  if( backupFileName.FileExists() )
1030  wxRemoveFile( backupFileName.GetFullPath() );
1031 
1032  if( !wxCopyFile( aOriginalFile.GetFullPath(), backupFileName.GetFullPath() ) )
1033  {
1034  DisplayError( this, wxString::Format( _( "Failed to save backup to \"%s\"" ),
1035  backupFileName.GetFullPath() ) );
1036  return false;
1037  }
1038  }
1039 
1040  return true;
1041 }
void DisplayError(wxWindow *aParent, const wxString &aText, int aDisplayTime)
Display an error or warning message box with aMessage.
Definition: confirm.cpp:252
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
#define _(s)
Definition: 3d_actions.cpp:33

References _, DisplayError(), and Format().

Referenced by saveLibrary().

◆ canCloseWindow()

bool SYMBOL_EDIT_FRAME::canCloseWindow ( wxCloseEvent &  aCloseEvent)
overridevirtual

Reimplemented from EDA_BASE_FRAME.

Definition at line 501 of file symbol_edit_frame.cpp.

502 {
503  // Shutdown blocks must be determined and vetoed as early as possible
504  if( KIPLATFORM::APP::SupportsShutdownBlockReason() && aEvent.GetId() == wxEVT_QUERY_END_SESSION
505  && IsContentModified() )
506  {
507  return false;
508  }
509 
511  {
512  SCH_EDIT_FRAME* schframe = (SCH_EDIT_FRAME*) Kiway().Player( FRAME_SCH, false );
513 
514  switch( UnsavedChangesDialog( this,
515  _( "Save changes to schematic before closing?" ),
516  nullptr ) )
517  {
518  case wxID_YES:
519  if( schframe && GetCurPart() ) // Should be always the case
520  schframe->SaveSymbolToSchematic( *GetCurPart());
521 
522  return true;
523 
524  case wxID_NO: return true;
525 
526  default:
527  case wxID_CANCEL: return false;
528  }
529  }
530 
531  if( !saveAllLibraries( true ) )
532  {
533  return false;
534  }
535 
536  return true;
537 }
KIWAY & Kiway() const
Return a reference to the KIWAY that this object has an opportunity to participate in.
Definition: kiway_holder.h:56
bool IsContentModified() override
Get if any parts or libraries have been modified but not saved.
virtual KIWAY_PLAYER * Player(FRAME_T aFrameType, bool doCreate=true, wxTopLevelWindow *aParent=nullptr)
Return the KIWAY_PLAYER* given a FRAME_T.
Definition: kiway.cpp:368
Schematic editor (Eeschema) main window.
void SaveSymbolToSchematic(const LIB_PART &aSymbol)
Update the LIB_PART of the currently selected symbol.
bool SupportsShutdownBlockReason()
Whether or not the window supports setting a shutdown block reason.
Definition: gtk/app.cpp:65
int UnsavedChangesDialog(wxWindow *parent, wxString aMessage, bool *aApplyToAll)
A specialized version of HandleUnsavedChanges which handles an apply-to-all checkbox.
Definition: confirm.cpp:154
LIB_PART * GetCurPart()
Return the current part being edited or NULL if none selected.
bool saveAllLibraries(bool aRequireConfirmation)
Save the current part.
#define _(s)
Definition: 3d_actions.cpp:33

References _, FRAME_SCH, GetCurPart(), IsContentModified(), KIWAY_HOLDER::Kiway(), m_isSymbolFromSchematic, KIWAY::Player(), saveAllLibraries(), SCH_EDIT_FRAME::SaveSymbolToSchematic(), KIPLATFORM::APP::SupportsShutdownBlockReason(), and UnsavedChangesDialog().

◆ CenterScreen()

void SCH_BASE_FRAME::CenterScreen ( const wxPoint &  aCenterPoint,
bool  aWarpPointer 
)
virtualinherited

Definition at line 253 of file sch_base_frame.cpp.

254 {
255  GetCanvas()->GetView()->SetCenter( aCenterPoint );
256 
257  if( aWarpPointer )
258  GetCanvas()->GetViewControls()->WarpCursor( aCenterPoint, true );
259 
260  GetCanvas()->Refresh();
261 }
KIGFX::SCH_VIEW * GetView() const override
Return a pointer to the #VIEW instance used in the panel.
KIGFX::VIEW_CONTROLS * GetViewControls() const
Return a pointer to the #VIEW_CONTROLS instance used in the panel.
virtual void WarpCursor(const VECTOR2D &aPosition, bool aWorldCoordinates=false, bool aWarpView=false)=0
If enabled (.
void SetCenter(const VECTOR2D &aCenter)
Set the center point of the VIEW (i.e.
Definition: view.cpp:580
SCH_DRAW_PANEL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.
virtual void Refresh(bool aEraseBackground=true, const wxRect *aRect=NULL) override
Update the board display after modifying it by a python script (note: it is automatically called by a...

References SCH_BASE_FRAME::GetCanvas(), SCH_DRAW_PANEL::GetView(), EDA_DRAW_PANEL_GAL::GetViewControls(), EDA_DRAW_PANEL_GAL::Refresh(), KIGFX::VIEW::SetCenter(), and KIGFX::VIEW_CONTROLS::WarpCursor().

Referenced by SCH_EDITOR_CONTROL::FindSymbolAndItem().

◆ ChangeUserUnits()

void EDA_BASE_FRAME::ChangeUserUnits ( EDA_UNITS  aUnits)
inherited

Definition at line 1093 of file eda_base_frame.cpp.

1094 {
1095  SetUserUnits( aUnits );
1097 
1098  wxCommandEvent e( UNITS_CHANGED );
1099  ProcessEventLocally( e );
1100 }
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 EDA_BASE_FRAME::SetUserUnits(), and EDA_BASE_FRAME::unitsChangeRefresh().

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

◆ CheckForAutoSaveFile()

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

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.

Definition at line 981 of file eda_base_frame.cpp.

982 {
983  wxCHECK_RET( aFileName.IsOk(), wxT( "Invalid file name!" ) );
984 
985  wxFileName autoSaveFileName = aFileName;
986 
987  // Check for auto save file.
988  autoSaveFileName.SetName( GetAutoSaveFilePrefix() + aFileName.GetName() );
989 
990  wxLogTrace( traceAutoSave,
991  wxT( "Checking for auto save file " ) + autoSaveFileName.GetFullPath() );
992 
993  if( !autoSaveFileName.FileExists() )
994  return;
995 
996  wxString msg = wxString::Format( _(
997  "Well this is potentially embarrassing!\n"
998  "It appears that the last time you were editing the file\n"
999  "\"%s\"\n"
1000  "it was not saved properly. Do you wish to restore the last saved edits you made?" ),
1001  aFileName.GetFullName()
1002  );
1003 
1004  int response = wxMessageBox( msg, Pgm().App().GetAppDisplayName(), wxYES_NO | wxICON_QUESTION,
1005  this );
1006 
1007  // Make a backup of the current file, delete the file, and rename the auto save file to
1008  // the file name.
1009  if( response == wxYES )
1010  {
1011  if( !wxRenameFile( autoSaveFileName.GetFullPath(), aFileName.GetFullPath() ) )
1012  {
1013  wxMessageBox( _( "The auto save file could not be renamed to the board file name." ),
1014  Pgm().App().GetAppDisplayName(), wxOK | wxICON_EXCLAMATION, this );
1015  }
1016  }
1017  else
1018  {
1019  wxLogTrace( traceAutoSave,
1020  wxT( "Removing auto save file " ) + autoSaveFileName.GetFullPath() );
1021 
1022  // Remove the auto save file when using the previous file as is.
1023  wxRemoveFile( autoSaveFileName.GetFullPath() );
1024  }
1025 }
const wxChar *const traceAutoSave
Flag to enable auto save feature debug tracing.
KIWAY Kiway & Pgm(), KFCTL_STANDALONE
The global Program "get" accessor.
Definition: single_top.cpp:106
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
static wxString GetAutoSaveFilePrefix()
#define _(s)
Definition: 3d_actions.cpp:33

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

Referenced by PCB_EDIT_FRAME::OpenProjectFiles(), and SCH_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 878 of file eda_base_frame.cpp.

879 {
880  if( !aFileHistory )
881  aFileHistory = m_fileHistory;
882 
883  wxASSERT( aFileHistory );
884 
885  aFileHistory->ClearFileHistory();
886 
887  // Update the menubar to update the file history menu
888  if( GetMenuBar() )
889  {
890  ReCreateMenuBar();
891  GetMenuBar()->Refresh();
892  }
893 }
void ClearFileHistory()
Clear all entries from the file history.
FILE_HISTORY * m_fileHistory
virtual void ReCreateMenuBar()
Recreates the menu bar.

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

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

◆ ClearMsgPanel()

void SYMBOL_EDIT_FRAME::ClearMsgPanel ( )
inlineoverridevirtual

Clear all messages from the message panel.

Reimplemented from EDA_DRAW_FRAME.

Definition at line 230 of file symbol_edit_frame.h.

231  {
233  }
void DisplaySymbolDatasheet()
Display the documentation of the selected symbol.

References DisplaySymbolDatasheet().

Referenced by saveLibrary().

◆ ClearUndoORRedoList()

void SYMBOL_EDIT_FRAME::ClearUndoORRedoList ( UNDO_REDO_LIST  whichList,
int  aItemCount = -1 
)
overridevirtual

Free the undo or redo list from aList element.

  • Wrappers are deleted.
  • data pointed by wrappers are deleted if not in use in schematic i.e. when they are copy of a schematic item or they are no more in use (DELETED)
Parameters
whichList= the UNDO_REDO_CONTAINER to clear
aItemCount= the count of items to remove. < 0 for all items items are removed from the beginning of the list. So this function can be called to remove old commands

Reimplemented from EDA_BASE_FRAME.

Definition at line 1252 of file symbol_edit_frame.cpp.

1253 {
1254  if( aItemCount == 0 )
1255  return;
1256 
1257  UNDO_REDO_CONTAINER& list = whichList == UNDO_LIST ? m_undoList : m_redoList;
1258 
1259  for( PICKED_ITEMS_LIST* command : list.m_CommandsList )
1260  {
1261  command->ClearListAndDeleteItems();
1262  delete command;
1263  }
1264 
1265  list.m_CommandsList.clear();
1266 }
UNDO_REDO_CONTAINER m_undoList
A holder to handle a list of undo (or redo) commands.
std::vector< PICKED_ITEMS_LIST * > m_CommandsList
A holder to handle information on schematic or board items.
UNDO_REDO_CONTAINER m_redoList
void ClearListAndDeleteItems()
Delete the list of pickers AND the data pointed by #m_PickedItem or #m_PickedItemLink according to th...

References PICKED_ITEMS_LIST::ClearListAndDeleteItems(), UNDO_REDO_CONTAINER::m_CommandsList, EDA_BASE_FRAME::m_redoList, EDA_BASE_FRAME::m_undoList, and EDA_BASE_FRAME::UNDO_LIST.

Referenced by SaveCopyInUndoList().

◆ ClearUndoRedoList()

◆ CloseWindow()

void SYMBOL_EDIT_FRAME::CloseWindow ( wxCommandEvent &  event)
inline

Trigger the wxCloseEvent, which is handled by the function given to EVT_CLOSE() macro:

EVT_CLOSE( SYMBOL_EDIT_FRAME::OnCloseWindow )

Definition at line 209 of file symbol_edit_frame.h.

210  {
211  // Generate a wxCloseEvent
212  Close( false );
213  }

◆ CommonSettingsChanged()

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

Called after the preferences dialog is run.

Reimplemented from SCH_BASE_FRAME.

Definition at line 1072 of file symbol_edit_frame.cpp.

1073 {
1074  SCH_BASE_FRAME::CommonSettingsChanged( aEnvVarsChanged, aTextVarsChanged );
1075 
1077  GetCanvas()->GetGAL()->DrawGrid();
1078 
1079  RecreateToolbars();
1080 
1081  if( aEnvVarsChanged )
1082  SyncLibraries( true );
1083 
1084  Layout();
1085  SendSizeEvent();
1086 }
void RecreateToolbars()
Rebuild all toolbars, and update the checked state of check tools.
SCH_DRAW_PANEL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.
void SetAxesColor(const COLOR4D &aAxesColor)
Set the axes color.
virtual void DrawGrid()
KIGFX::GAL * GetGAL() const
Return a pointer to the GAL instance used in the panel.
COLOR_SETTINGS * m_colorSettings
The current canvas type.
COLOR4D GetColor(int aLayer) const
void CommonSettingsChanged(bool aEnvVarsChanged, bool aTextVarsChanged) override
Notification event that some of the common (suite-wide) settings have changed.
void SyncLibraries(bool aShowProgress, const wxString &aForceRefresh=wxEmptyString)
Synchronize the library manager to the symbol library table, and then the symbol tree to the library ...

References SCH_BASE_FRAME::CommonSettingsChanged(), KIGFX::GAL::DrawGrid(), SCH_BASE_FRAME::GetCanvas(), COLOR_SETTINGS::GetColor(), EDA_DRAW_PANEL_GAL::GetGAL(), LAYER_SCHEMATIC_GRID_AXES, EDA_DRAW_FRAME::m_colorSettings, EDA_DRAW_FRAME::RecreateToolbars(), KIGFX::GAL::SetAxesColor(), and SyncLibraries().

◆ config()

APP_SETTINGS_BASE * SYMBOL_EDIT_FRAME::config ( ) const
overridevirtual

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

Reimplemented from EDA_BASE_FRAME.

Definition at line 289 of file symbol_edit_frame.cpp.

290 {
291  return static_cast<APP_SETTINGS_BASE*>( GetSettings() );
292 }
SYMBOL_EDITOR_SETTINGS * GetSettings() const

References GetSettings().

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

340  {
341  wxString baseCfgName = m_configName.IsEmpty() ? GetName() : m_configName;
342  return baseCfgName;
343  }
wxString m_configName

References EDA_BASE_FRAME::m_configName.

Referenced by EDA_BASE_FRAME::SaveWindowSettings().

◆ CopyPartToClipboard()

void SYMBOL_EDIT_FRAME::CopyPartToClipboard ( )

Definition at line 763 of file symbol_editor.cpp.

764 {
765  int dummyUnit;
766  LIB_ID libId = m_treePane->GetLibTree()->GetSelectedLibId( &dummyUnit );
767  LIB_PART* part = m_libMgr->GetBufferedPart( libId.GetLibItemName(), libId.GetLibNickname() );
768 
769  if( !part )
770  return;
771 
772  std::unique_ptr< LIB_PART> tmp = part->Flatten();
773  STRING_FORMATTER formatter;
774  SCH_SEXPR_PLUGIN::FormatPart( tmp.get(), formatter );
775 
776  wxLogNull doNotLog; // disable logging of failed clipboard actions
777 
778  auto clipboard = wxTheClipboard;
779  wxClipboardLocker clipboardLock( clipboard );
780 
781  if( !clipboardLock || !clipboard->IsOpened() )
782  return;
783 
784  auto data = new wxTextDataObject( wxString( formatter.GetString().c_str(), wxConvUTF8 ) );
785  clipboard->SetData( data );
786 
787  clipboard->Flush();
788 }
const UTF8 & GetLibItemName() const
Definition: lib_id.h:106
SYMBOL_TREE_PANE * m_treePane
static void FormatPart(LIB_PART *aPart, OUTPUTFORMATTER &aFormatter)
A logical library item identifier and consists of various portions much like a URI.
Definition: lib_id.h:51
LIB_PART * GetBufferedPart(const wxString &aAlias, const wxString &aLibrary)
Return the part copy from the buffer.
LIB_ID GetSelectedLibId(int *aUnit=nullptr) const
For multi-unit components, if the user selects the component itself rather than picking an individual...
Definition: lib_tree.cpp:150
Define a library symbol object.
Definition: lib_symbol.h:93
const UTF8 & GetLibNickname() const
Return the logical library name portion of a LIB_ID.
Definition: lib_id.h:92
const std::string & GetString()
Definition: richio.h:435
std::unique_ptr< LIB_PART > Flatten() const
Return a flattened symbol inheritance to the caller.
Definition: lib_symbol.cpp:334
SYMBOL_LIBRARY_MANAGER * m_libMgr
LIB_TREE * GetLibTree() const
Implement an OUTPUTFORMATTER to a memory buffer.
Definition: richio.h:411

References LIB_PART::Flatten(), SCH_SEXPR_PLUGIN::FormatPart(), SYMBOL_LIBRARY_MANAGER::GetBufferedPart(), LIB_ID::GetLibItemName(), LIB_ID::GetLibNickname(), SYMBOL_TREE_PANE::GetLibTree(), LIB_TREE::GetSelectedLibId(), STRING_FORMATTER::GetString(), m_libMgr, and m_treePane.

Referenced by SYMBOL_EDITOR_CONTROL::CutCopyDelete().

◆ createCanvas()

void SCH_BASE_FRAME::createCanvas ( )
inherited

Definition at line 284 of file sch_base_frame.cpp.

285 {
287 
288  // Allows only a CAIRO or OPENGL canvas:
291  {
293  }
294 
295  SetCanvas( new SCH_DRAW_PANEL( this, wxID_ANY, wxPoint( 0, 0 ), m_frameSize,
298 }
KIGFX::GAL_DISPLAY_OPTIONS & GetGalDisplayOptions()
Return a reference to the gal rendering options used by GAL for rendering.
EDA_DRAW_PANEL_GAL::GAL_TYPE m_canvasType
static constexpr GAL_TYPE GAL_FALLBACK
virtual void ActivateGalCanvas()
Use to start up the GAL drawing canvas.
void SetCanvas(EDA_DRAW_PANEL_GAL *aPanel)
EDA_DRAW_PANEL_GAL::GAL_TYPE loadCanvasTypeSetting()
Returns the canvas type stored in the application settings.

References EDA_DRAW_FRAME::ActivateGalCanvas(), EDA_DRAW_PANEL_GAL::GAL_FALLBACK, EDA_DRAW_PANEL_GAL::GAL_TYPE_OPENGL, EDA_DRAW_FRAME::GetGalDisplayOptions(), EDA_DRAW_FRAME::loadCanvasTypeSetting(), EDA_DRAW_FRAME::m_canvasType, EDA_BASE_FRAME::m_frameSize, and EDA_DRAW_FRAME::SetCanvas().

Referenced by SCH_BASE_FRAME::SCH_BASE_FRAME().

◆ CreateInfoBar()

void EDA_BASE_FRAME::CreateInfoBar ( )
inherited

Definition at line 744 of file eda_base_frame.cpp.

745 {
746 #if defined( __WXOSX_MAC__ )
748 #else
749  m_infoBar = new WX_INFOBAR( this, &m_auimgr );
750 
751  m_auimgr.AddPane( m_infoBar, EDA_PANE().InfoBar().Name( "InfoBar" ).Top().Layer(1) );
752 #endif
753 }
wxAuiManager m_auimgr
virtual wxWindow * GetToolCanvas() const =0
Canvas access.
Specialization of the wxAuiPaneInfo class for KiCad panels.
A modified version of the wxInfoBar class that allows us to:
Definition: infobar.h:73
WX_INFOBAR * m_infoBar

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

◆ CreateNewPart()

void SYMBOL_EDIT_FRAME::CreateNewPart ( )

Create a new part in the selected library.

Definition at line 377 of file symbol_editor.cpp.

378 {
380 
381  wxArrayString rootSymbols;
382  wxString lib = getTargetLib();
383 
384  if( !m_libMgr->LibraryExists( lib ) )
385  {
386  lib = SelectLibraryFromList();
387 
388  if( !m_libMgr->LibraryExists( lib ) )
389  return;
390  }
391 
392  m_libMgr->GetRootSymbolNames( lib, rootSymbols );
393 
394  rootSymbols.Sort();
395 
396  DIALOG_LIB_NEW_COMPONENT dlg( this, &rootSymbols );
397  dlg.SetMinSize( dlg.GetSize() );
398 
399  if( dlg.ShowModal() == wxID_CANCEL )
400  return;
401 
402  if( dlg.GetName().IsEmpty() )
403  {
404  wxMessageBox( _( "This new symbol has no name and cannot be created." ) );
405  return;
406  }
407 
408  wxString name = dlg.GetName();
409  // Currently, symbol names cannot include a space, that breaks libraries:
410  name.Replace( " ", "_" );
411 
412  // Test if there is a component with this name already.
413  if( !lib.empty() && m_libMgr->PartExists( name, lib ) )
414  {
415  wxString msg = wxString::Format( _( "Symbol \"%s\" already exists in library \"%s\"" ),
416  name, lib );
417  DisplayError( this, msg );
418  return;
419  }
420 
421  LIB_PART new_part( name ); // do not create part on the heap, it will be buffered soon
422 
423  wxString parentSymbolName = dlg.GetParentSymbolName();
424 
425  if( parentSymbolName.IsEmpty() )
426  {
427  new_part.GetReferenceField().SetText( dlg.GetReference() );
428  new_part.SetUnitCount( dlg.GetUnitCount() );
429 
430  // Initialize new_part.m_TextInside member:
431  // if 0, pin text is outside the body (on the pin)
432  // if > 0, pin text is inside the body
433 
434  if( dlg.GetPinNameInside() )
435  {
436  new_part.SetPinNameOffset( dlg.GetPinTextPosition() );
437 
438  if( new_part.GetPinNameOffset() == 0 )
439  new_part.SetPinNameOffset( 1 );
440  }
441  else
442  {
443  new_part.SetPinNameOffset( 0 );
444  }
445 
446  ( dlg.GetPowerSymbol() ) ? new_part.SetPower() : new_part.SetNormal();
447  new_part.SetShowPinNumbers( dlg.GetShowPinNumber() );
448  new_part.SetShowPinNames( dlg.GetShowPinName() );
449  new_part.LockUnits( dlg.GetLockItems() );
450  new_part.SetIncludeInBom( dlg.GetIncludeInBom() );
451  new_part.SetIncludeOnBoard( dlg.GetIncludeOnBoard() );
452 
453  if( dlg.GetUnitCount() < 2 )
454  new_part.LockUnits( false );
455 
456  new_part.SetConversion( dlg.GetAlternateBodyStyle() );
457  // must be called after loadPart, that calls SetShowDeMorgan, but
458  // because the symbol is empty,it looks like it has no alternate body
459  SetShowDeMorgan( dlg.GetAlternateBodyStyle() );
460  }
461  else
462  {
463  LIB_PART* parent = m_libMgr->GetAlias( parentSymbolName, lib );
464  wxCHECK( parent, /* void */ );
465  new_part.SetParent( parent );
466 
467  // Inherit the parent mandatory field attributes.
468  for( int id = 0; id < MANDATORY_FIELDS; ++id )
469  {
470  LIB_FIELD* field = new_part.GetFieldById( id );
471 
472  // the MANDATORY_FIELDS are exactly that in RAM.
473  wxCHECK( field, /* void */ );
474 
475  LIB_FIELD* parentField = parent->GetFieldById( id );
476 
477  wxCHECK( parentField, /* void */ );
478 
479  *field = *parentField;
480 
481  switch( id )
482  {
483  case REFERENCE_FIELD:
484  // parent's reference already copied
485  break;
486 
487  case VALUE_FIELD:
488  field->SetText( name );
489  break;
490 
491  case FOOTPRINT_FIELD:
492  case DATASHEET_FIELD:
493  // - footprint might be the same as parent, but might not
494  // - datasheet is most likely different
495  // - probably best to play it safe and copy neither
496  field->SetText( wxEmptyString );
497  break;
498  }
499 
500  field->SetParent( &new_part );
501  }
502  }
503 
504  m_libMgr->UpdatePart( &new_part, lib );
505  SyncLibraries( false );
506  LoadPart( name, lib, 1 );
507 }
Field Reference of part, i.e. "IC21".
void DisplayError(wxWindow *aParent, const wxString &aText, int aDisplayTime)
Display an error or warning message box with aMessage.
Definition: confirm.cpp:252
LIB_PART * GetAlias(const wxString &aAlias, const wxString &aLibrary) const
Return either an alias of a working LIB_PART copy, or alias of the original part if there is no worki...
void GetRootSymbolNames(const wxString &aLibName, wxArrayString &aRootSymbolNames)
void SetShowDeMorgan(bool show)
bool PartExists(const wxString &aAlias, const wxString &aLibrary) const
Return true if part with a specific alias exists in library (either original one or buffered).
Field object used in symbol libraries.
Definition: lib_field.h:59
static TOOL_ACTION cancelInteractive
Definition: actions.h:65
bool RunAction(const std::string &aActionName, bool aNow=false, T aParam=NULL)
Run the specified action.
Definition: tool_manager.h:141
bool UpdatePart(LIB_PART *aPart, const wxString &aLibrary)
Update the part buffer with a new version of the part.
virtual void SetParent(EDA_ITEM *aParent)
Definition: eda_item.h:166
name of datasheet
void LoadPart(const wxString &aLibrary, const wxString &aPart, int Unit)
Field Value of part, i.e. "3.3K".
virtual void SetText(const wxString &aText)
Definition: eda_text.cpp:121
wxString getTargetLib() const
Define a library symbol object.
Definition: lib_symbol.h:93
wxString SelectLibraryFromList()
Display a list of loaded libraries in the symbol library and allows the user to select a library.
LIB_FIELD * GetFieldById(int aId) const
Return pointer to the requested field.
Definition: lib_symbol.cpp:941
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
The first 4 are mandatory, and must be instantiated in SCH_COMPONENT and LIB_PART constructors.
bool LibraryExists(const wxString &aLibrary, bool aCheckEnabled=false) const
Return true if library exists.
TOOL_MANAGER * m_toolManager
Definition: tools_holder.h:157
const char * name
Definition: DXF_plotter.cpp:59
#define _(s)
Definition: 3d_actions.cpp:33
SYMBOL_LIBRARY_MANAGER * m_libMgr
void SyncLibraries(bool aShowProgress, const wxString &aForceRefresh=wxEmptyString)
Synchronize the library manager to the symbol library table, and then the symbol tree to the library ...
Field Name Module PCB, i.e. "16DIP300".

References _, ACTIONS::cancelInteractive, DATASHEET_FIELD, DisplayError(), FOOTPRINT_FIELD, Format(), SYMBOL_LIBRARY_MANAGER::GetAlias(), DIALOG_LIB_NEW_COMPONENT::GetAlternateBodyStyle(), LIB_PART::GetFieldById(), DIALOG_LIB_NEW_COMPONENT::GetIncludeInBom(), DIALOG_LIB_NEW_COMPONENT::GetIncludeOnBoard(), DIALOG_LIB_NEW_COMPONENT::GetLockItems(), DIALOG_LIB_NEW_COMPONENT::GetName(), DIALOG_LIB_NEW_COMPONENT::GetParentSymbolName(), DIALOG_LIB_NEW_COMPONENT::GetPinNameInside(), LIB_PART::GetPinNameOffset(), DIALOG_LIB_NEW_COMPONENT::GetPinTextPosition(), DIALOG_LIB_NEW_COMPONENT::GetPowerSymbol(), DIALOG_LIB_NEW_COMPONENT::GetReference(), LIB_PART::GetReferenceField(), SYMBOL_LIBRARY_MANAGER::GetRootSymbolNames(), DIALOG_LIB_NEW_COMPONENT::GetShowPinName(), DIALOG_LIB_NEW_COMPONENT::GetShowPinNumber(), getTargetLib(), DIALOG_LIB_NEW_COMPONENT::GetUnitCount(), SYMBOL_LIBRARY_MANAGER::LibraryExists(), LoadPart(), LIB_PART::LockUnits(), m_libMgr, TOOLS_HOLDER::m_toolManager, MANDATORY_FIELDS, name, SYMBOL_LIBRARY_MANAGER::PartExists(), REFERENCE_FIELD, TOOL_MANAGER::RunAction(), SelectLibraryFromList(), LIB_PART::SetConversion(), LIB_PART::SetIncludeInBom(), LIB_PART::SetIncludeOnBoard(), LIB_PART::SetNormal(), LIB_PART::SetParent(), EDA_ITEM::SetParent(), LIB_PART::SetPinNameOffset(), LIB_PART::SetPower(), SetShowDeMorgan(), LIB_PART::SetShowPinNames(), LIB_PART::SetShowPinNumbers(), EDA_TEXT::SetText(), LIB_PART::SetUnitCount(), SyncLibraries(), SYMBOL_LIBRARY_MANAGER::UpdatePart(), and VALUE_FIELD.

Referenced by SYMBOL_EDITOR_CONTROL::AddSymbol().

◆ CreateServer()

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

Definition at line 48 of file eda_dde.cpp.

49 {
50  wxIPV4address addr;
51 
52  // Set the port number
53  addr.Service( service );
54 
55  // Listen on localhost only if requested
56  if( local )
57  addr.Hostname( HOSTNAME );
58 
59  delete m_socketServer;
60  m_socketServer = new wxSocketServer( addr );
61 
62  m_socketServer->SetNotify( wxSOCKET_CONNECTION_FLAG );
63  m_socketServer->SetEventHandler( *this, ID_EDA_SOCKET_EVENT_SERV );
64  m_socketServer->Notify( true );
65 }
static const wxString HOSTNAME(wxT("localhost"))
wxSocketServer * m_socketServer

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

Referenced by SCH::IFACE::CreateWindow().

◆ CurrentToolName()

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

Definition at line 99 of file tools_holder.cpp.

100 {
101  if( m_toolStack.empty() )
102  return ACTIONS::selectionTool.GetName();
103  else
104  return m_toolStack.back();
105 }
std::vector< std::string > m_toolStack
Definition: tools_holder.h:163
static TOOL_ACTION selectionTool
Definition: actions.h:156

References TOOLS_HOLDER::m_toolStack, and ACTIONS::selectionTool.

Referenced by TOOL_MANAGER::processEvent().

◆ DeletePartFromLibrary()

void SYMBOL_EDIT_FRAME::DeletePartFromLibrary ( )

Definition at line 722 of file symbol_editor.cpp.

723 {
724  LIB_ID libId = GetTargetLibId();
725 
726  if( m_libMgr->IsPartModified( libId.GetLibItemName(), libId.GetLibNickname() )
727  && !IsOK( this, _( wxString::Format( "The symbol \"%s\" has been modified\n"
728  "Do you want to remove it from the library?",
729  libId.GetUniStringLibItemName() ) ) ) )
730  {
731  return;
732  }
733 
734  if( m_libMgr->HasDerivedSymbols( libId.GetLibItemName(), libId.GetLibNickname() ) )
735  {
736  wxString msg;
737 
738  msg.Printf( _( "The symbol \"%s\" is used to derive other symbols.\n"
739  "Deleting this symbol will delete all of the symbols derived from it.\n\n"
740  "Do you wish to delete this symbol and all of it's derivatives?" ),
741  libId.GetLibItemName().wx_str() );
742 
743  wxMessageDialog::ButtonLabel yesButtonLabel( _( "Delete Symbol" ) );
744  wxMessageDialog::ButtonLabel noButtonLabel( _( "Keep Symbol" ) );
745 
746  wxMessageDialog dlg( this, msg, _( "Warning" ),
747  wxYES_NO | wxYES_DEFAULT | wxICON_QUESTION | wxCENTER );
748  dlg.SetYesNoLabels( yesButtonLabel, noButtonLabel );
749 
750  if( dlg.ShowModal() == wxID_NO )
751  return;
752  }
753 
754  if( isCurrentPart( libId ) )
755  emptyScreen();
756 
757  m_libMgr->RemovePart( libId.GetLibItemName(), libId.GetLibNickname() );
758 
760 }
const UTF8 & GetLibItemName() const
Definition: lib_id.h:106
bool RemovePart(const wxString &aName, const wxString &aLibrary)
Remove the part from the part buffer.
SYMBOL_TREE_PANE * m_treePane
A logical library item identifier and consists of various portions much like a URI.
Definition: lib_id.h:51
const UTF8 & GetLibNickname() const
Return the logical library name portion of a LIB_ID.
Definition: lib_id.h:92
bool HasDerivedSymbols(const wxString &aSymbolName, const wxString &aLibraryName)
Check if symbol aSymbolName in library aLibraryName is a root symbol that has derived symbols.
void RefreshLibTree()
Refreshes the tree (mainly to update highlighting and asterisking)
Definition: lib_tree.cpp:220
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
LIB_ID GetTargetLibId() const
#define _(s)
Definition: 3d_actions.cpp:33
wxString wx_str() const
Definition: utf8.cpp:51
bool isCurrentPart(const LIB_ID &aLibId) const
Rename LIB_PART aliases to avoid conflicts before adding a symbol to a library.
SYMBOL_LIBRARY_MANAGER * m_libMgr
void emptyScreen()
Return either the part selected in the symbol tree, if context menu is active or the currently modifi...
LIB_TREE * GetLibTree() const
bool IsOK(wxWindow *aParent, const wxString &aMessage)
Display a yes/no dialog with aMessage and returns the user response.
Definition: confirm.cpp:296
const wxString GetUniStringLibItemName() const
Get strings for display messages in dialogs.
Definition: lib_id.h:116
bool IsPartModified(const wxString &aAlias, const wxString &aLibrary) const
Return true if part has unsaved modifications.

References _, emptyScreen(), Format(), LIB_ID::GetLibItemName(), LIB_ID::GetLibNickname(), SYMBOL_TREE_PANE::GetLibTree(), GetTargetLibId(), LIB_ID::GetUniStringLibItemName(), SYMBOL_LIBRARY_MANAGER::HasDerivedSymbols(), isCurrentPart(), IsOK(), SYMBOL_LIBRARY_MANAGER::IsPartModified(), m_libMgr, m_treePane, LIB_TREE::RefreshLibTree(), SYMBOL_LIBRARY_MANAGER::RemovePart(), and UTF8::wx_str().

Referenced by SYMBOL_EDITOR_CONTROL::CutCopyDelete().

◆ Destroy()

◆ DismissModal()

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

Definition at line 161 of file kiway_player.cpp.

162 {
163  m_modal_ret_val = aRetVal;
164  m_modal_string = aResult;
165 
166  if( m_modal_loop )
167  {
168  m_modal_loop->Exit();
169  m_modal_loop = nullptr; // this marks it as dismissed.
170  }
171 
172  Show( false );
173 }
bool m_modal_ret_val
Definition: kiway_player.h:199
wxString m_modal_string
Definition: kiway_player.h:198
WX_EVENT_LOOP * m_modal_loop
< Points to nested event_loop. NULL means not modal and dismissed.
Definition: kiway_player.h:196

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().

◆ DisplayGridMsg()

void EDA_DRAW_FRAME::DisplayGridMsg ( )
virtualinherited

Display current grid size in the status bar.

Reimplemented in PCB_BASE_FRAME, GERBVIEW_FRAME, and PL_EDITOR_FRAME.

Definition at line 472 of file eda_draw_frame.cpp.

473 {
474  wxString line;
475 
476  line.Printf( "grid %s",
477  MessageTextFromValue( GetUserUnits(), GetCanvas()->GetGAL()->GetGridSize().x, false ) );
478 
479  SetStatusText( line, 4 );
480 }
wxString MessageTextFromValue(EDA_UNITS aUnits, int aValue, bool aAddUnitLabel, EDA_DATA_TYPE aType)
Convert a value to a string using double notation.
Definition: base_units.cpp:90
virtual EDA_DRAW_PANEL_GAL * GetCanvas() const
Return a pointer to GAL-based canvas of given EDA draw frame.
EDA_UNITS GetUserUnits() const
Return the user units currently in use.

References EDA_DRAW_FRAME::GetCanvas(), EDA_BASE_FRAME::GetUserUnits(), and MessageTextFromValue().

Referenced by SCH_BASE_FRAME::UpdateStatusBar().

◆ DisplaySymbolDatasheet()

void SYMBOL_EDIT_FRAME::DisplaySymbolDatasheet ( )

Display the documentation of the selected symbol.

Definition at line 1170 of file symbol_editor.cpp.

1171 {
1173 
1174  if( !m_my_part )
1175  return;
1176 
1177  wxString msg = m_my_part->GetName();
1178 
1179  AppendMsgPanel( _( "Name" ), msg, 8 );
1180 
1181  if( m_my_part->IsAlias() )
1182  {
1183  PART_SPTR parent = m_my_part->GetParent().lock();
1184 
1185  msg = parent ? parent->GetName() : _( "Undefined!" );
1186  AppendMsgPanel( _( "Parent" ), msg, 8 );
1187  }
1188 
1189  static wxChar UnitLetter[] = wxT( "?ABCDEFGHIJKLMNOPQRSTUVWXYZ" );
1190  msg = UnitLetter[m_unit];
1191 
1192  AppendMsgPanel( _( "Unit" ), msg, 8 );
1193 
1194  if( m_convert > 1 )
1195  msg = _( "Convert" );
1196  else
1197  msg = _( "Normal" );
1198 
1199  AppendMsgPanel( _( "Body" ), msg, 8 );
1200 
1201  if( m_my_part->IsPower() )
1202  msg = _( "Power Symbol" );
1203  else
1204  msg = _( "Symbol" );
1205 
1206  AppendMsgPanel( _( "Type" ), msg, 8 );
1207  AppendMsgPanel( _( "Description" ), m_my_part->GetDescription(), 8 );
1208  AppendMsgPanel( _( "Keywords" ), m_my_part->GetKeyWords() );
1209  AppendMsgPanel( _( "Datasheet" ), m_my_part->GetDatasheetField().GetText() );
1210 }
int m_convert
Flag if the symbol being edited was loaded directly from a schematic.
LIB_FIELD & GetDatasheetField()
Return reference to the datasheet field.
wxString GetName() const override
Definition: lib_symbol.h:129
std::shared_ptr< LIB_PART > PART_SPTR
shared pointer to LIB_PART
Definition: lib_symbol.h:42
wxString GetKeyWords() const
Definition: lib_symbol.h:151
PART_REF & GetParent()
Definition: lib_symbol.h:120
wxString GetDescription() override
Definition: lib_symbol.h:138
virtual void ClearMsgPanel()
Clear all messages from the message panel.
bool IsPower() const
Definition: lib_symbol.cpp:411
#define _(s)
Definition: 3d_actions.cpp:33
bool IsAlias() const
Definition: lib_symbol.h:168
virtual const wxString & GetText() const
Return the string associated with the text object.
Definition: eda_text.h:133
void AppendMsgPanel(const wxString &aTextUpper, const wxString &aTextLower, int aPadding=6)
Append a message to the message panel.

References _, EDA_DRAW_FRAME::AppendMsgPanel(), EDA_DRAW_FRAME::ClearMsgPanel(), LIB_PART::GetDatasheetField(), LIB_PART::GetDescription(), LIB_PART::GetKeyWords(), LIB_PART::GetName(), LIB_PART::GetParent(), EDA_TEXT::GetText(), LIB_PART::IsAlias(), LIB_PART::IsPower(), m_convert, m_my_part, and m_unit.

Referenced by ClearMsgPanel(), SYMBOL_EDITOR_EDIT_TOOL::editFieldProperties(), LoadOneLibraryPartAux(), LoadSymbolFromSchematic(), and UpdateAfterSymbolProperties().

◆ DisplayToolMsg()

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

Reimplemented from TOOLS_HOLDER.

Definition at line 466 of file eda_draw_frame.cpp.

467 {
468  SetStatusText( msg, 6 );
469 }

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

484 {
485  wxString msg;
486 
487  switch( m_userUnits )
488  {
489  case EDA_UNITS::INCHES: msg = _( "inches" ); break;
490  case EDA_UNITS::MILS: msg = _( "mils" ); break;
491  case EDA_UNITS::MILLIMETRES: msg = _( "mm" ); break;
492  default: msg = _( "Units" ); break;
493  }
494 
495  SetStatusText( msg, 5 );
496 }
#define _(s)
Definition: 3d_actions.cpp:33
EDA_UNITS m_userUnits
Map containing the UI update handlers registered with wx for each action.

References _, INCHES, EDA_BASE_FRAME::m_userUnits, 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 301 of file eda_base_frame.cpp.

302 {
303  wxCHECK_MSG( false, true, wxT( "Auto save timer function not overridden. Bad programmer!" ) );
304 }

Referenced by EDA_BASE_FRAME::onAutoSaveTimer().

◆ doCloseWindow()

void SYMBOL_EDIT_FRAME::doCloseWindow ( )
overridevirtual

Reimplemented from EDA_BASE_FRAME.

Definition at line 540 of file symbol_edit_frame.cpp.

541 {
542  Destroy();
543 }
bool Destroy() override
Our version of Destroy() which is virtual from wxWidgets.

References KIWAY_PLAYER::Destroy().

◆ DuplicatePart()

void SYMBOL_EDIT_FRAME::DuplicatePart ( bool  aFromClipboard)

Insert a duplicate part.

If aFromClipboard is true then action is a paste.

Definition at line 791 of file symbol_editor.cpp.

792 {
793  int dummyUnit;
794  LIB_ID libId = m_treePane->GetLibTree()->GetSelectedLibId( &dummyUnit );
795  wxString lib = libId.GetLibNickname();
796 
797  if( !m_libMgr->LibraryExists( lib ) )
798  return;
799 
800  LIB_PART* srcPart = nullptr;
801  LIB_PART* newPart = nullptr;
802 
803  if( aFromClipboard )
804  {
805  wxLogNull doNotLog; // disable logging of failed clipboard actions
806 
807  auto clipboard = wxTheClipboard;
808  wxClipboardLocker clipboardLock( clipboard );
809 
810  if( !clipboardLock || ! clipboard->IsSupported( wxDF_TEXT ) )
811  return;
812 
813  wxTextDataObject data;
814  clipboard->GetData( data );
815  wxString partSource = data.GetText();
816 
817  STRING_LINE_READER reader( TO_UTF8( partSource ), "Clipboard" );
818 
819  try
820  {
821  newPart = SCH_SEXPR_PLUGIN::ParsePart( reader );
822  }
823  catch( IO_ERROR& e )
824  {
825  wxLogMessage( "Can not paste: %s", e.Problem() );
826  return;
827  }
828  }
829  else
830  {
831  srcPart = m_libMgr->GetBufferedPart( libId.GetLibItemName(), lib );
832 
833  wxCHECK( srcPart, /* void */ );
834 
835  newPart = new LIB_PART( *srcPart );
836 
837  // Derive from same parent.
838  if( srcPart->IsAlias() )
839  {
840  std::shared_ptr< LIB_PART > srcParent = srcPart->GetParent().lock();
841 
842  wxCHECK( srcParent, /* void */ );
843 
844  newPart->SetParent( srcParent.get() );
845  }
846  }
847 
848  if( !newPart )
849  return;
850 
851  ensureUniqueName( newPart, lib );
852  m_libMgr->UpdatePart( newPart, lib );
853 
854  LoadOneLibraryPartAux( newPart, lib, GetUnit(), GetConvert() );
855 
856  SyncLibraries( false );
857  m_treePane->GetLibTree()->SelectLibId( LIB_ID( lib, newPart->GetName() ) );
858 
859  delete newPart;
860 }
const UTF8 & GetLibItemName() const
Definition: lib_id.h:106
wxString GetName() const override
Definition: lib_symbol.h:129
static LIB_PART * ParsePart(LINE_READER &aReader, int aVersion=SEXPR_SCHEMATIC_FILE_VERSION)
bool LoadOneLibraryPartAux(LIB_PART *aLibEntry, const wxString &aLibrary, int aUnit, int aConvert)
Create a copy of aLibEntry into memory.
SYMBOL_TREE_PANE * m_treePane
A logical library item identifier and consists of various portions much like a URI.
Definition: lib_id.h:51
bool UpdatePart(LIB_PART *aPart, const wxString &aLibrary)
Update the part buffer with a new version of the part.
virtual const wxString Problem() const
what was the problem?
Definition: exceptions.cpp:45
#define TO_UTF8(wxstring)
Convert a wxString to a UTF8 encoded C string for all wxWidgets build modes.
Definition: macros.h:96
LIB_PART * GetBufferedPart(const wxString &aAlias, const wxString &aLibrary)
Return the part copy from the buffer.
LIB_ID GetSelectedLibId(int *aUnit=nullptr) const
For multi-unit components, if the user selects the component itself rather than picking an individual...
Definition: lib_tree.cpp:150
void SetParent(LIB_PART *aParent=nullptr)
Definition: lib_symbol.cpp:325
PART_REF & GetParent()
Definition: lib_symbol.h:120
Define a library symbol object.
Definition: lib_symbol.h:93
void ensureUniqueName(LIB_PART *aPart, const wxString &aLibrary)
const UTF8 & GetLibNickname() const
Return the logical library name portion of a LIB_ID.
Definition: lib_id.h:92
bool LibraryExists(const wxString &aLibrary, bool aCheckEnabled=false) const
Return true if library exists.
bool IsAlias() const
Definition: lib_symbol.h:168
SYMBOL_LIBRARY_MANAGER * m_libMgr
LIB_TREE * GetLibTree() const
void SyncLibraries(bool aShowProgress, const wxString &aForceRefresh=wxEmptyString)
Synchronize the library manager to the symbol library table, and then the symbol tree to the library ...
Is a LINE_READER that reads from a multiline 8 bit wide std::string.
Definition: richio.h:237
Hold an error message and may be used when throwing exceptions containing meaningful error messages.
Definition: ki_exception.h:75
void SelectLibId(const LIB_ID &aLibId)
Select an item in the tree widget.
Definition: lib_tree.cpp:179

References ensureUniqueName(), SYMBOL_LIBRARY_MANAGER::GetBufferedPart(), GetConvert(), LIB_ID::GetLibItemName(), LIB_ID::GetLibNickname(), SYMBOL_TREE_PANE::GetLibTree(), LIB_PART::GetName(), LIB_PART::GetParent(), LIB_TREE::GetSelectedLibId(), GetUnit(), LIB_PART::IsAlias(), SYMBOL_LIBRARY_MANAGER::LibraryExists(), LoadOneLibraryPartAux(), m_libMgr, m_treePane, SCH_SEXPR_PLUGIN::ParsePart(), IO_ERROR::Problem(), LIB_TREE::SelectLibId(), LIB_PART::SetParent(), SyncLibraries(), TO_UTF8, and SYMBOL_LIBRARY_MANAGER::UpdatePart().

Referenced by SYMBOL_EDITOR_CONTROL::DuplicateSymbol().

◆ eeconfig()

EESCHEMA_SETTINGS * SCH_BASE_FRAME::eeconfig ( ) const
inherited

Definition at line 117 of file sch_base_frame.cpp.

118 {
119  return dynamic_cast<EESCHEMA_SETTINGS*>( config() );
120 }
virtual APP_SETTINGS_BASE * config() const
Returns the settings object used in SaveSettings(), and is overloaded in KICAD_MANAGER_FRAME.

References EDA_BASE_FRAME::config().

Referenced by SYMBOL_EDITOR_CONTROL::AddSymbolToSchematic(), SCH_EDIT_FRAME::AllowCaseSensitiveFileNameClashes(), DIALOG_BOM::DIALOG_BOM(), SCH_LINE_WIRE_BUS_TOOL::doDrawSegments(), SCH_DRAWING_TOOLS::DrawSheet(), SCH_EDIT_TOOL::editFieldText(), SCH_EDIT_FRAME::ExecuteRemoteCommand(), SCH_EDITOR_CONTROL::FindSymbolAndItem(), SCH_EDIT_FRAME::GetShowAllPins(), EE_SELECTION_TOOL::GuessSelectionCandidates(), DIALOG_BOM::installGeneratorsList(), SCH_EDIT_FRAME::LoadSettings(), EE_SELECTION_TOOL::Main(), SCH_EDIT_TOOL::Mirror(), DIALOG_PRINT_USING_PRINTER::OnMonochromeChecked(), SCH_EDIT_FRAME::OpenProjectFiles(), SCH_DRAWING_TOOLS::PlaceSymbol(), SCH_PRINTOUT::PrintPage(), SCH_EDIT_TOOL::Properties(), SCH_EDIT_TOOL::Rotate(), DIALOG_PRINT_USING_PRINTER::SavePrintOptions(), SCH_EDIT_FRAME::SaveSettings(), SCH_EDIT_FRAME::SelectUnit(), SCH_EDIT_FRAME::setupUIConditions(), SCH_LINE_WIRE_BUS_TOOL::startSegments(), SCH_EDITOR_CONTROL::ToggleForceHV(), SCH_EDITOR_CONTROL::ToggleHiddenFields(), SCH_EDITOR_CONTROL::ToggleHiddenPins(), PANEL_EESCHEMA_EDITING_OPTIONS::TransferDataFromWindow(), PANEL_EESCHEMA_DISPLAY_OPTIONS::TransferDataFromWindow(), PANEL_EESCHEMA_EDITING_OPTIONS::TransferDataToWindow(), PANEL_EESCHEMA_DISPLAY_OPTIONS::TransferDataToWindow(), DIALOG_PRINT_USING_PRINTER::TransferDataToWindow(), and DIALOG_BOM::~DIALOG_BOM().

◆ emptyScreen()

void SYMBOL_EDIT_FRAME::emptyScreen ( )

Return either the part selected in the symbol tree, if context menu is active or the currently modified part.

Definition at line 1060 of file symbol_edit_frame.cpp.

1061 {
1063  SetCurLib( wxEmptyString );
1064  SetCurPart( nullptr, false );
1068  Refresh();
1069 }
SCH_SCREEN * m_dummyScreen
< Helper screen used when no part is loaded
void SetScreen(BASE_SCREEN *aScreen) override
SYMBOL_TREE_PANE * m_treePane
static TOOL_ACTION zoomFitScreen
Definition: actions.h:99
bool RunAction(const std::string &aActionName, bool aNow=false, T aParam=NULL)
Run the specified action.
Definition: tool_manager.h:141
void Refresh()
Update the board display after modifying it by a python script (note: it is automatically called by a...
void Unselect()
Unselect currently selected item in wxDataViewCtrl.
Definition: lib_tree.cpp:191
void SetCurPart(LIB_PART *aPart, bool aUpdateZoom)
Take ownership of aPart and notes that it is the one currently being edited.
TOOL_MANAGER * m_toolManager
Definition: tools_holder.h:157
LIB_TREE * GetLibTree() const
wxString SetCurLib(const wxString &aLibNickname)
Set the current library nickname and returns the old library nickname.
virtual void ClearUndoRedoList()
Clear the undo and redo list using ClearUndoORRedoList()

References EDA_BASE_FRAME::ClearUndoRedoList(), SYMBOL_TREE_PANE::GetLibTree(), m_dummyScreen, TOOLS_HOLDER::m_toolManager, m_treePane, Refresh(), TOOL_MANAGER::RunAction(), SetCurLib(), SetCurPart(), SetScreen(), LIB_TREE::Unselect(), and ACTIONS::zoomFitScreen.

Referenced by DeletePartFromLibrary(), and Revert().

◆ ensureUniqueName()

void SYMBOL_EDIT_FRAME::ensureUniqueName ( LIB_PART aPart,
const wxString &  aLibrary 
)
private

Definition at line 863 of file symbol_editor.cpp.

864 {
865  wxCHECK( aPart, /* void */ );
866 
867  int i = 1;
868  wxString newName = aPart->GetName();
869 
870  // Append a number to the name until the name is unique in the library.
871  while( m_libMgr->PartExists( newName, aLibrary ) )
872  newName.Printf( "%s_%d", aPart->GetName(), i++ );
873 
874  aPart->SetName( newName );
875 }
wxString GetName() const override
Definition: lib_symbol.h:129
bool PartExists(const wxString &aAlias, const wxString &aLibrary) const
Return true if part with a specific alias exists in library (either original one or buffered).
virtual void SetName(const wxString &aName)
Definition: lib_symbol.cpp:314
SYMBOL_LIBRARY_MANAGER * m_libMgr

References LIB_PART::GetName(), m_libMgr, SYMBOL_LIBRARY_MANAGER::PartExists(), and LIB_PART::SetName().

Referenced by DuplicatePart().

◆ EraseMsgBox()

void EDA_DRAW_FRAME::EraseMsgBox ( )
inherited

Definition at line 235 of file eda_draw_frame.cpp.

236 {
237  if( m_messagePanel )
239 }
EDA_MSG_PANEL * m_messagePanel
void EraseMsgBox()
Definition: msgpanel.cpp:223

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

Referenced by GERBVIEW_CONTROL::UpdateMessagePanel().

◆ ExecuteRemoteCommand()

virtual void EDA_DRAW_FRAME::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 200 of file eda_draw_frame.h.

200 {}

Referenced by EDA_DRAW_FRAME::OnSockRequest().

◆ ExportPart()

void SYMBOL_EDIT_FRAME::ExportPart ( )

Definition at line 106 of file symbol_editor_import_export.cpp.

107 {
108  wxString msg, title;
109  LIB_PART* part = getTargetPart();
110 
111  if( !part )
112  {
113  ShowInfoBarError( _( "There is no symbol selected to save." ) );
114  return;
115  }
116 
117  wxFileName fn;
118 
119  fn.SetName( part->GetName().Lower() );
120  fn.SetExt( KiCadSymbolLibFileExtension );
121 
122  wxFileDialog dlg( this, _( "Export Symbol" ), m_mruPath, fn.GetFullName(),
123  KiCadSymbolLibFileWildcard(), wxFD_SAVE );
124 
125  if( dlg.ShowModal() == wxID_CANCEL )
126  return;
127 
128  fn = dlg.GetPath();
129  fn.MakeAbsolute();
130 
131  LIB_PART* old_part = NULL;
132 
133  SCH_PLUGIN::SCH_PLUGIN_RELEASER pi( SCH_IO_MGR::FindPlugin( SCH_IO_MGR::SCH_KICAD ) );
134 
135  if( fn.FileExists() )
136  {
137  try
138  {
139  old_part = pi->LoadSymbol( fn.GetFullPath(), part->GetName() );
140  }
141  catch( const IO_ERROR& ioe )
142  {
143  msg.Printf( _( "Error occurred attempting to load symbol library file \"%s\"" ),
144  fn.GetFullPath() );
145  DisplayErrorMessage( this, msg, ioe.What() );
146  return;
147  }
148 
149  if( old_part )
150  {
151  msg.Printf( _( "Symbol \"%s\" already exists in \"%s\"." ),
152  part->GetName(),
153  fn.GetFullName() );
154 
155  KIDIALOG errorDlg( this, msg, _( "Confirmation" ), wxOK | wxCANCEL | wxICON_WARNING );
156  errorDlg.SetOKLabel( _( "Overwrite" ) );
157  errorDlg.DoNotShowCheckbox( __FILE__, __LINE__ );
158 
159  if( errorDlg.ShowModal() == wxID_CANCEL )
160  return;
161  }
162  }
163 
164  if( fn.Exists() && !fn.IsDirWritable() )
165  {
166  msg.Printf( _( "Write permissions are required to save library \"%s\"." ),
167  fn.GetFullPath() );
168  DisplayError( this, msg );
169  return;
170  }
171 
172  try
173  {
174  if( !fn.FileExists() )
175  pi->CreateSymbolLib( fn.GetFullPath() );
176 
177  // The flattened symbol is most likely what the user would want. As some point in
178  // the future as more of the symbol library inheritance is implemented, this may have
179  // to be changes to save parts of inherited symbols.
180  pi->SaveSymbol( fn.GetFullPath(), part->Flatten().release() );
181  }
182  catch( const IO_ERROR& ioe )
183  {
184  msg.Printf( _( "Failed to create symbol library file \"%s\"" ), fn.GetFullPath() );
185  DisplayErrorMessage( this, msg, ioe.What() );
186  msg.Printf( _( "Error creating symbol library \"%s\"" ), fn.GetFullName() );
187  SetStatusText( msg );
188  return;
189  }
190 
191  m_mruPath = fn.GetPath();
192 
193  msg.Printf( _( "Symbol \"%s\" saved in library \"%s\"" ), part->GetName(), fn.GetFullPath() );
194  SetStatusText( msg );
195 
196  // See if the user wants it added to a library table (global or project)
197  SYMBOL_LIB_TABLE* libTable = selectSymLibTable( true );
198 
199  if( libTable )
200  {
201  if( !m_libMgr->AddLibrary( fn.GetFullPath(), libTable ) )
202  {
203  DisplayError( this, _( "Could not open the library file." ) );
204  return;
205  }
206 
207  bool globalTable = ( libTable == &SYMBOL_LIB_TABLE::GetGlobalLibTable() );
208  saveSymbolLibTables( globalTable, !globalTable );
209  }
210 }
void DisplayError(wxWindow *aParent, const wxString &aText, int aDisplayTime)
Display an error or warning message box with aMessage.
Definition: confirm.cpp:252
static SYMBOL_LIB_TABLE & GetGlobalLibTable()
wxString m_mruPath
void DisplayErrorMessage(wxWindow *aParent, const wxString &aText, const wxString &aExtraInfo)
Display an error message with aMessage.
Definition: confirm.cpp:265
wxString GetName() const override
Definition: lib_symbol.h:129
Helper class to create more flexible dialogs, including 'do not show again' checkbox handling.
Definition: confirm.h:45
bool AddLibrary(const wxString &aFilePath, SYMBOL_LIB_TABLE *aTable)
Add an existing library.
LIB_PART * getTargetPart() const
Return either the library selected in the symbol tree, if context menu is active or the library that ...
SYMBOL_LIB_TABLE * selectSymLibTable(bool aOptional=false)
Display a dialog asking the user to select a symbol library table.
#define NULL
virtual const wxString What() const
A composite of Problem() and Where()
Definition: exceptions.cpp:29
Define a library symbol object.
Definition: lib_symbol.h:93
bool saveSymbolLibTables(bool aGlobal, bool aProject)
Save Symbol Library Tables to disk.
wxString KiCadSymbolLibFileWildcard()
std::unique_ptr< LIB_PART > Flatten() const
Return a flattened symbol inheritance to the caller.
Definition: lib_symbol.cpp:334
Helper object to release a SCH_PLUGIN in the context of a potential thrown exception through its dest...
Definition: sch_io_mgr.h:473
#define _(s)
Definition: 3d_actions.cpp:33
void ShowInfoBarError(const wxString &aErrorMsg, bool aShowCloseButton=false)
Show the WX_INFOBAR displayed on the top of the canvas with a message and an error icon on the left o...
SYMBOL_LIBRARY_MANAGER * m_libMgr
Hold an error message and may be used when throwing exceptions containing meaningful error messages.
Definition: ki_exception.h:75
const std::string KiCadSymbolLibFileExtension

References _, SYMBOL_LIBRARY_MANAGER::AddLibrary(), DisplayError(), DisplayErrorMessage(), KIDIALOG::DoNotShowCheckbox(), LIB_PART::Flatten(), SYMBOL_LIB_TABLE::GetGlobalLibTable(), LIB_PART::GetName(), getTargetPart(), KiCadSymbolLibFileExtension, KiCadSymbolLibFileWildcard(), m_libMgr, EDA_BASE_FRAME::m_mruPath, NULL, SCH_BASE_FRAME::saveSymbolLibTables(), selectSymLibTable(), EDA_BASE_FRAME::ShowInfoBarError(), KIDIALOG::ShowModal(), and IO_ERROR::What().

◆ FinishAUIInitialization()

void EDA_BASE_FRAME::FinishAUIInitialization ( )
inherited

Definition at line 756 of file eda_base_frame.cpp.

757 {
758 #if defined( __WXOSX_MAC__ )
759  m_auimgr.Update();
760 #else
761  // Call Update() to fix all pane default sizes, especially the "InfoBar" pane before
762  // hiding it.
763  m_auimgr.Update();
764 
765  // We don't want the infobar displayed right away
766  m_auimgr.GetPane( "InfoBar" ).Hide();
767  m_auimgr.Update();
768 #endif
769 }
wxAuiManager m_auimgr

References EDA_BASE_FRAME::m_auimgr.

◆ FocusOnLocation()

void EDA_DRAW_FRAME::FocusOnLocation ( const wxPoint &  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 799 of file eda_draw_frame.cpp.

800 {
801  bool centerView = false;
802  BOX2D r = GetCanvas()->GetView()->GetViewport();
803 
804  // Center if we're off the current view, or within 10% of its edge
805  r.Inflate( - (int) r.GetWidth() / 10 );
806 
807  if( !r.Contains( aPos ) )
808  centerView = true;
809 
810  // Center if we're behind an obscuring dialog, or within 10% of its edge
811  wxWindow* dialog = findDialog( GetChildren() );
812 
813  if( dialog )
814  {
815  wxRect dialogRect( GetCanvas()->ScreenToClient( dialog->GetScreenPosition() ),
816  dialog->GetSize() );
817  dialogRect.Inflate( dialogRect.GetWidth() / 10 );
818 
819  if( dialogRect.Contains( (wxPoint) GetCanvas()->GetView()->ToScreen( aPos ) ) )
820  centerView = true;
821  }
822 
823  if( centerView )
824  {
825  // If a dialog partly obscures the window, then center on the uncovered area.
826  if( dialog )
827  {
828  wxRect dialogRect( GetCanvas()->ScreenToClient( dialog->GetScreenPosition() ),
829  dialog->GetSize() );
830  GetCanvas()->GetView()->SetCenter( aPos, dialogRect );
831  }
832  else
833  GetCanvas()->GetView()->SetCenter( aPos );
834  }
835 
837 }
BOX2D GetViewport() const
Return the current viewport visible area rectangle.
Definition: view.cpp:514
KIGFX::VIEW_CONTROLS * GetViewControls() const
Return a pointer to the #VIEW_CONTROLS instance used in the panel.
virtual EDA_DRAW_PANEL_GAL * GetCanvas() const
Return a pointer to GAL-based canvas of given EDA draw frame.
void SetCenter(const VECTOR2D &aCenter)
Set the center point of the VIEW (i.e.
Definition: view.cpp:580
coord_type GetWidth() const
Definition: box2.h:197
bool Contains(const Vec &aPoint) const
Function Contains.
Definition: box2.h:151
wxWindow * findDialog(wxWindowList &aList)
virtual KIGFX::VIEW * GetView() const
Return a pointer to the #VIEW instance used in the panel.
virtual void SetCrossHairCursorPosition(const VECTOR2D &aPosition, bool aWarpView=true)=0
Move the graphic crosshair cursor to the requested position expressed in world coordinates.
BOX2< Vec > & Inflate(coord_type dx, coord_type dy)
Function Inflate inflates the rectangle horizontally by dx and vertically by dy.
Definition: box2.h:302

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

Referenced by PCB_SELECTION_TOOL::findCallback(), SCH_EDITOR_CONTROL::FindNext(), PCB_BASE_FRAME::FocusOnItem(), SCH_EDIT_FRAME::FocusOnItem(), and DIALOG_FIND::search().

◆ FreezeLibraryTree()

void SYMBOL_EDIT_FRAME::FreezeLibraryTree ( )

Definition at line 591 of file symbol_edit_frame.cpp.

592 {
593  m_treePane->Freeze();
594  m_libMgr->GetAdapter()->Freeze();
595 }
SYMBOL_TREE_PANE * m_treePane
wxObjectDataPtr< LIB_TREE_MODEL_ADAPTER > & GetAdapter()
Return the adapter object that provides the stored data.
SYMBOL_LIBRARY_MANAGER * m_libMgr

References SYMBOL_LIBRARY_MANAGER::GetAdapter(), m_libMgr, and m_treePane.

Referenced by saveLibrary().

◆ GetAboutTitle()

const wxString& EDA_BASE_FRAME::GetAboutTitle ( ) const
inlineinherited

◆ GetAutoSaveFilePrefix()

static wxString EDA_BASE_FRAME::GetAutoSaveFilePrefix ( )
inlinestaticprotectedinherited
Returns
the string to prepend to a file name for automatic save.

Definition at line 583 of file eda_base_frame.h.

584  {
585  return wxT( "_autosave-" );
586  }

Referenced by EDA_BASE_FRAME::CheckForAutoSaveFile(), PCB_EDIT_FRAME::doAutoSave(), SCH_EDIT_FRAME::doAutoSave(), SCH_EDIT_FRAME::doCloseWindow(), PCB_EDIT_FRAME::Files_io_from_id(), PCB_EDIT_FRAME::OnExportSTEP(), SCH_EDIT_FRAME::SaveEEFile(), and PCB_EDIT_FRAME::SavePcbFile().

◆ GetAutoSaveInterval()

int EDA_BASE_FRAME::GetAutoSaveInterval ( ) const
inlineinherited

Definition at line 190 of file eda_base_frame.h.

190 { return m_autoSaveInterval; }

References EDA_BASE_FRAME::m_autoSaveInterval.

◆ GetCanvas()

SCH_DRAW_PANEL * SCH_BASE_FRAME::GetCanvas ( ) const
overridevirtualinherited

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 271 of file sch_base_frame.cpp.

272 {
273  return static_cast<SCH_DRAW_PANEL*>( EDA_DRAW_FRAME::GetCanvas() );
274 }
virtual EDA_DRAW_PANEL_GAL * GetCanvas() const
Return a pointer to GAL-based canvas of given EDA draw frame.

References EDA_DRAW_FRAME::GetCanvas().

Referenced by SCH_EDIT_FRAME::AddItemToScreenAndUndoList(), SCH_EDIT_FRAME::AddJunction(), SCH_BASE_FRAME::AddToScreen(), SCH_EDIT_FRAME::AnnotateSymbols(), SCH_EDITOR_CONTROL::AssignFootprints(), SCH_EDIT_TOOL::BreakWire(), SCH_BASE_FRAME::CenterScreen(), SYMBOL_VIEWER_FRAME::ClickOnCmpList(), SYMBOL_VIEWER_FRAME::CommonSettingsChanged(), SCH_BASE_FRAME::CommonSettingsChanged(), CommonSettingsChanged(), DIALOG_CHOOSE_SYMBOL::ConstructRightPanel(), SCH_EDIT_FRAME::DeleteAnnotation(), SCH_EDIT_FRAME::DisplayCurrentSheet(), SYMBOL_VIEWER_FRAME::doCloseWindow(), SCH_EDIT_TOOL::DoDelete(), SCH_LINE_WIRE_BUS_TOOL::doDrawSegments(), EE_SELECTION_TOOL::doSelectionMenu(), SYMBOL_EDITOR_DRAWING_TOOLS::DrawShape(), SCH_DRAWING_TOOLS::DrawSheet(), SYMBOL_EDITOR_EDIT_TOOL::editFieldProperties(), SYMBOL_EDITOR_EDIT_TOOL::editGraphicProperties(), SYMBOL_EDITOR_EDIT_TOOL::editTextProperties(), SCH_EDITOR_CONTROL::EnterSheet(), DIALOG_ERC::ExcludeMarker(), EE_INSPECTION_TOOL::ExcludeMarker(), SCH_EDITOR_CONTROL::FindNext(), SCH_EDITOR_CONTROL::FindSymbolAndItem(), SCH_DRAWING_TOOLS::GetCanvasFreeAreaPixels(), SCH_EDIT_FRAME::GetDocumentExtents(), SCH_BASE_FRAME::GetRenderSettings(), SCH_BASE_FRAME::HardRedraw(), SCH_EDIT_FRAME::HardRedraw(), SCH_EDITOR_CONTROL::ImportFPAssignments(), SCH_EDIT_TOOL::Init(), SCH_EDIT_FRAME::KiwayMailIn(), SCH_EDITOR_CONTROL::LeaveSheet(), EE_POINT_EDITOR::Main(), SYMBOL_EDITOR_MOVE_TOOL::Main(), SCH_MOVE_TOOL::Main(), EE_SELECTION_TOOL::Main(), DIALOG_MIGRATE_BUSES::onAcceptClicked(), DIALOG_ANNOTATE::OnApplyClick(), DIALOG_ERC::OnEraseDrcMarkersClick(), DIALOG_ERC::OnERCItemRClick(), EE_SELECTION_TOOL::OnIdle(), DIALOG_MIGRATE_BUSES::onItemSelected(), SCH_EDIT_FRAME::OnModify(), SCH_EDIT_FRAME::OnPageSettingsChange(), DIALOG_SYMBOL_REMAP::OnRemapSymbols(), HIERARCHY_NAVIG_DLG::onSelectSheetPath(), DIALOG_UPDATE_FROM_PCB::OnUpdateClick(), SYMBOL_TREE_PANE::onUpdateUI(), SYMBOL_EDITOR_DRAWING_TOOLS::PlaceAnchor(), SCH_DRAWING_TOOLS::PlaceImage(), SCH_DRAWING_TOOLS::PlaceSymbol(), SCH_EDIT_TOOL::Properties(), SCH_EDIT_FRAME::PutDataInPreviousState(), RebuildView(), SCH_EDIT_FRAME::RecalculateConnections(), SCH_EDIT_FRAME::RecomputeIntersheetRefs(), SYMBOL_VIEWER_FRAME::ReCreateLibList(), SCH_EDITOR_CONTROL::Redo(), DIALOG_ERC::redrawDrawPanel(), SCH_BASE_FRAME::RedrawScreen(), SCH_BASE_FRAME::RefreshSelection(), SCH_EDITOR_CONTROL::RemapSymbols(), SCH_BASE_FRAME::RemoveFromScreen(), SCH_EDIT_TOOL::RepeatDrawItem(), SCH_EDITOR_CONTROL::RescueLegacyProject(), SCH_EDITOR_CONTROL::rescueProject(), SCH_EDITOR_CONTROL::RescueSymbolLibTableProject(), SCH_EDIT_FRAME::RollbackSchematicFromUndo(), SCH_EDIT_FRAME::SaveSymbolToSchematic(), EE_SELECTION_TOOL::selectMultiple(), SetCurPart(), SCH_EDIT_FRAME::SetCurrentSheet(), EE_POINT_EDITOR::setEditedPoint(), SCH_EDIT_FRAME::SetScreen(), SYMBOL_VIEWER_FRAME::SetSelectedLibrary(), SYMBOL_VIEWER_FRAME::setupTools(), setupTools(), SCH_EDIT_FRAME::setupTools(), SYMBOL_EDITOR_CONTROL::ShowElectricalTypes(), SCH_EDIT_FRAME::ShowSchematicSetupDialog(), SCH_DRAWING_TOOLS::SingleClickPlace(), SwitchCanvas(), SYMBOL_VIEWER_FRAME::SYMBOL_VIEWER_FRAME(), SCH_BASE_FRAME::SyncView(), SCH_EDIT_FRAME::TestDanglingEnds(), DIALOG_ERC::testErc(), SCH_EDITOR_CONTROL::ToggleHiddenFields(), SCH_EDITOR_CONTROL::ToggleHiddenPins(), PANEL_SYM_EDITING_OPTIONS::TransferDataFromWindow(), PANEL_EESCHEMA_DISPLAY_OPTIONS::TransferDataFromWindow(), PANEL_SETUP_FORMATTING::TransferDataFromWindow(), DIALOG_JUNCTION_PROPS::TransferDataFromWindow(), DIALOG_EDIT_LINE_STYLE::TransferDataFromWindow(), PANEL_SYM_COLOR_SETTINGS::TransferDataFromWindow(), DIALOG_SHEET_PIN_PROPERTIES::TransferDataFromWindow(), PANEL_EESCHEMA_COLOR_SETTINGS::TransferDataFromWindow(), DIALOG_LABEL_EDITOR::TransferDataFromWindow(), SYMBOL_EDITOR_DRAWING_TOOLS::TwoClickPlace(), SCH_DRAWING_TOOLS::TwoClickPlace(), SCH_EDITOR_CONTROL::Undo(), SCH_EDITOR_CONTROL::UpdateFind(), SCH_BASE_FRAME::UpdateItem(), SCH_EDITOR_CONTROL::UpdateNetHighlighting(), SYMBOL_VIEWER_FRAME::updatePreviewSymbol(), SCH_BASE_FRAME::UpdateStatusBar(), and SYMBOL_VIEWER_FRAME::~SYMBOL_VIEWER_FRAME().

◆ GetColorSettings()

COLOR_SETTINGS * SYMBOL_EDIT_FRAME::GetColorSettings ( ) const
overridevirtual

Returns a pointer to the active color theme settings.

Reimplemented from SCH_BASE_FRAME.

Definition at line 295 of file symbol_edit_frame.cpp.

296 {
297  SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
298 
299  if( GetSettings()->m_UseEeschemaColorSettings )
301  else
302  return mgr.GetColorSettings( GetSettings()->m_ColorTheme );
303 }
SYMBOL_EDITOR_SETTINGS * GetSettings() const
KIWAY Kiway & Pgm(), KFCTL_STANDALONE
The global Program "get" accessor.
Definition: single_top.cpp:106
AppSettings * GetAppSettings(bool aLoadNow=true)
Returns a handle to the a given settings by type If the settings have already been loaded,...
COLOR_SETTINGS * GetColorSettings(const wxString &aName="user")
Retrieves a color settings object that applications can read colors from.
wxString m_ColorTheme
Active color theme name.
Definition: app_settings.h:184

References SETTINGS_MANAGER::GetAppSettings(), SETTINGS_MANAGER::GetColorSettings(), GetSettings(), APP_SETTINGS_BASE::m_ColorTheme, and Pgm().

Referenced by SVGPlotSymbol().

◆ GetConvert()

◆ GetCurLib()

wxString SYMBOL_EDIT_FRAME::GetCurLib ( ) const

The nickname of the current library being edited and empty string if none.

Definition at line 648 of file symbol_edit_frame.cpp.

649 {
650  wxString libNickname = Prj().GetRString( PROJECT::SCH_LIBEDIT_CUR_LIB );
651 
652  if( !libNickname.empty() )
653  {
654  if( !Prj().SchSymbolLibTable()->HasLibrary( libNickname ) )
655  {
656  Prj().SetRString( PROJECT::SCH_LIBEDIT_CUR_LIB, wxEmptyString );
657  libNickname = wxEmptyString;
658  }
659  }
660 
661  return libNickname;
662 }
PROJECT & Prj() const
Return a reference to the PROJECT associated with this KIWAY.
virtual void SetRString(RSTRING_T aStringId, const wxString &aString)
Store a "retained string", which is any session and project specific string identified in enum RSTRIN...
Definition: project.cpp:213
virtual const wxString & GetRString(RSTRING_T aStringId)
Return a "retained string", which is any session and project specific string identified in enum RSTRI...
Definition: project.cpp:228

References PROJECT::GetRString(), KIWAY_HOLDER::Prj(), PROJECT::SCH_LIBEDIT_CUR_LIB, and PROJECT::SetRString().

Referenced by GetSymbolFromRedoList(), GetSymbolFromUndoList(), LoadSymbolFromCurrentLib(), SetCurLib(), storeCurrentPart(), SyncLibraries(), DIALOG_LIB_SYMBOL_PROPERTIES::TransferDataFromWindow(), DIALOG_LIB_SYMBOL_PROPERTIES::TransferDataToWindow(), UpdateAfterSymbolProperties(), and updateTitle().

◆ GetCurPart()

LIB_PART* SYMBOL_EDIT_FRAME::GetCurPart ( )
inline

◆ 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 PCB_EDIT_FRAME, SCH_EDIT_FRAME, PL_EDITOR_FRAME, and KICAD_MANAGER_FRAME.

Definition at line 420 of file eda_base_frame.h.

420 { return wxEmptyString; }

Referenced by EDA_BASE_FRAME::SaveSettings().

◆ GetCurrentSelection()

SELECTION & SYMBOL_EDIT_FRAME::GetCurrentSelection ( )
overridevirtual

Get the current selection from the canvas area.

Returns
the current selection.

Reimplemented from TOOLS_HOLDER.

Definition at line 1269 of file symbol_edit_frame.cpp.

1270 {
1271  return m_toolManager->GetTool<EE_SELECTION_TOOL>()->GetSelection();
1272 }
TOOL_MANAGER * m_toolManager
Definition: tools_holder.h:157

References TOOL_MANAGER::GetTool(), and TOOLS_HOLDER::m_toolManager.

◆ GetCurrentTreeNode()

LIB_TREE_NODE * SYMBOL_EDIT_FRAME::GetCurrentTreeNode ( ) const

◆ GetDefaults()

SCHEMATIC_SETTINGS& SCH_BASE_FRAME::GetDefaults ( )
inlineinherited

Definition at line 115 of file sch_base_frame.h.

116  {
117  return *m_defaults;
118  }
SCHEMATIC_SETTINGS * m_defaults

References SCH_BASE_FRAME::m_defaults.

◆ GetDocumentExtents()

const BOX2I SYMBOL_EDIT_FRAME::GetDocumentExtents ( bool  aIncludeAllVisible = true) const
overridevirtual

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 worksheet border. It's passed false by "Zoom To Objects" to ignore worksheet 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.

Definition at line 1144 of file symbol_edit_frame.cpp.

1145 {
1146  if( !m_my_part )
1147  {
1148  return BOX2I( VECTOR2I( Mils2iu( -100 ), Mils2iu( -100 ) ),
1149  VECTOR2I( Mils2iu( 200 ), Mils2iu( 200 ) ) );
1150  }
1151  else
1152  {
1153  EDA_RECT boundingBox = m_my_part->Flatten()->GetUnitBoundingBox( m_unit, m_convert );
1155  boundingBox.GetHeight() ) );
1156  }
1157 }
int m_convert
Flag if the symbol being edited was loaded directly from a schematic.
BOX2< VECTOR2I > BOX2I
Definition: box2.h:522
VECTOR2< int > VECTOR2I
Definition: vector2d.h:623
BOX2I boundingBox(T aObject)
boundingBox template method
Definition: shape_index.h:60
coord_type GetWidth() const
Definition: box2.h:197
std::unique_ptr< LIB_PART > Flatten() const
Return a flattened symbol inheritance to the caller.
Definition: lib_symbol.cpp:334
Handle the component boundary box.
Definition: eda_rect.h:42
coord_type GetHeight() const
Definition: box2.h:198
const Vec & GetOrigin() const
Definition: box2.h:193

References boundingBox(), LIB_PART::Flatten(), BOX2< Vec >::GetHeight(), BOX2< Vec >::GetOrigin(), BOX2< Vec >::GetWidth(), m_convert, m_my_part, and m_unit.

◆ 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 128 of file tools_holder.h.

128 { return m_immediateActions; }
bool m_immediateActions
Definition: tools_holder.h:170

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 134 of file tools_holder.h.

134 { return m_dragAction; }
MOUSE_DRAG_ACTION m_dragAction
Definition: tools_holder.h:174

References TOOLS_HOLDER::m_dragAction.

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

◆ GetDrawBgColor()

COLOR4D SCH_BASE_FRAME::GetDrawBgColor ( ) const
overridevirtualinherited

Reimplemented from EDA_DRAW_FRAME.

Definition at line 435 of file sch_base_frame.cpp.

436 {
438 }
COLOR_SETTINGS * GetColorSettings() const override
Returns a pointer to the active color theme settings.
COLOR4D GetColor(int aLayer) const

References COLOR_SETTINGS::GetColor(), SCH_BASE_FRAME::GetColorSettings(), and LAYER_SCHEMATIC_BACKGROUND.

Referenced by SCH_PRINTOUT::PrintPage().

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

840 {
841  if( !aFileHistory )
842  aFileHistory = m_fileHistory;
843 
844  wxASSERT( aFileHistory );
845 
846  int baseId = aFileHistory->GetBaseId();
847 
848  wxASSERT( cmdId >= baseId && cmdId < baseId + (int) aFileHistory->GetCount() );
849 
850  unsigned i = cmdId - baseId;
851 
852  if( i < aFileHistory->GetCount() )
853  {
854  wxString fn = aFileHistory->GetHistoryFile( i );
855 
856  if( wxFileName::FileExists( fn ) )
857  return fn;
858  else
859  {
860  wxString msg = wxString::Format( _( "File \"%s\" was not found." ), fn );
861  wxMessageBox( msg );
862 
863  aFileHistory->RemoveFileFromHistory( i );
864  }
865  }
866 
867  // Update the menubar to update the file history menu
868  if( GetMenuBar() )
869  {
870  ReCreateMenuBar();
871  GetMenuBar()->Refresh();
872  }
873 
874  return wxEmptyString;
875 }
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
#define _(s)
Definition: 3d_actions.cpp:33
FILE_HISTORY * m_fileHistory
virtual void ReCreateMenuBar()
Recreates the menu bar.

References _, 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 404 of file eda_base_frame.h.

405  {
406  return *m_fileHistory;
407  }
FILE_HISTORY * m_fileHistory

References EDA_BASE_FRAME::m_fileHistory.

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

◆ GetFindHistoryList()

wxArrayString& EDA_DRAW_FRAME::GetFindHistoryList ( )
inlineinherited

Definition at line 94 of file eda_draw_frame.h.

94 { return m_findStringHistoryList; }
wxArrayString m_findStringHistoryList

References EDA_DRAW_FRAME::m_findStringHistoryList.

Referenced by DIALOG_FIND::DIALOG_FIND(), and DIALOG_FIND::search().

◆ GetFindReplaceData()

wxFindReplaceData& EDA_DRAW_FRAME::GetFindReplaceData ( )
inlineinherited

Definition at line 93 of file eda_draw_frame.h.

93 { return *m_findReplaceData; }
wxFindReplaceData * m_findReplaceData

References EDA_DRAW_FRAME::m_findReplaceData.

Referenced by DIALOG_FIND::search().

◆ GetFlattenedLibPart()

LIB_PART* SCH_BASE_FRAME::GetFlattenedLibPart ( const LIB_ID aLibId,
bool  aShowErrorMsg = false 
)
inherited

◆ GetFrameType()

FRAME_T EDA_BASE_FRAME::GetFrameType ( ) const
inlineinherited

Definition at line 193 of file eda_base_frame.h.

193 { return m_ident; }

References EDA_BASE_FRAME::m_ident.

◆ GetGalDisplayOptions()

◆ GetGridColor()

virtual COLOR4D EDA_DRAW_FRAME::GetGridColor ( )
inlinevirtualinherited

◆ GetGridOrigin()

const wxPoint& SCH_BASE_FRAME::GetGridOrigin ( ) const
inlineoverridevirtualinherited

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 131 of file sch_base_frame.h.

132  {
133  static wxPoint zero;
134  return zero;
135  }

◆ GetInfoBar()

◆ GetItem()

virtual EDA_ITEM* EDA_DRAW_FRAME::GetItem ( const KIID aId) const
inlinevirtualinherited

Fetch an item by KIID.

Frame-type-specific implementation.

Reimplemented in SCH_EDIT_FRAME, and PCB_BASE_FRAME.

Definition at line 399 of file eda_draw_frame.h.

399 { return nullptr; }

Referenced by PCB_MARKER::GetMsgPanelInfo(), RC_TREE_MODEL::GetValue(), and EE_SELECTION_TOOL::Main().

◆ GetLayerColor()

COLOR4D SCH_BASE_FRAME::GetLayerColor ( SCH_LAYER_ID  aLayer)
inherited

Helper to retrieve a layer color from the global color settings.

Definition at line 402 of file sch_base_frame.cpp.

403 {
404  return GetColorSettings()->GetColor( aLayer );
405 }
COLOR_SETTINGS * GetColorSettings() const override
Returns a pointer to the active color theme settings.
COLOR4D GetColor(int aLayer) const

References COLOR_SETTINGS::GetColor(), and SCH_BASE_FRAME::GetColorSettings().

Referenced by SCH_EDIT_FRAME::DrawCurrentSheetToClipboard().

◆ GetLibManager()

◆ GetLibPart()

LIB_PART * SCH_BASE_FRAME::GetLibPart ( const LIB_ID aLibId,
bool  aUseCacheLib = false,
bool  aShowErrorMsg = false 
)
inherited

Load symbol from symbol library table.

Parameters
aLibIdis the symbol library identifier to load.
aUseCacheLibset to true to fall back to cache library if symbol is not found in symbol library table.
aShowErrorMessageset to true to show any error messages.
Returns
The symbol found in the library or NULL if the symbol was not found.

Definition at line 195 of file sch_base_frame.cpp.

196 {
197  PART_LIB* cache = ( aUseCacheLib ) ? Prj().SchLibs()->GetCacheLibrary() : NULL;
198 
199  return SchGetLibPart( aLibId, Prj().SchSymbolLibTable(), cache, this, aShowErrorMsg );
200 }
#define NULL
PROJECT & Prj() const
Return a reference to the PROJECT associated with this KIWAY.
LIB_PART * SchGetLibPart(const LIB_ID &aLibId, SYMBOL_LIB_TABLE *aLibTable, PART_LIB *aCacheLib, wxWindow *aParent, bool aShowErrorMsg)
Load symbol from symbol library table.
Object used to load, save, search, and otherwise manipulate symbol library files.

References NULL, KIWAY_HOLDER::Prj(), and SchGetLibPart().

Referenced by SCH_EDIT_FRAME::CreateArchiveLibrary(), DIALOG_SCH_EDIT_ONE_FIELD::DIALOG_SCH_EDIT_ONE_FIELD(), SCH_BASE_FRAME::PickSymbolFromLibTree(), SCH_DRAWING_TOOLS::PlaceSymbol(), SCH_EDIT_FRAME::SelectUnit(), DIALOG_SYMBOL_PROPERTIES::TransferDataFromWindow(), and DIALOG_CHANGE_SYMBOLS::updateFieldsList().

◆ GetMaxUndoItems()

int EDA_BASE_FRAME::GetMaxUndoItems ( ) const
inlineinherited

Definition at line 563 of file eda_base_frame.h.

563 { return m_undoRedoCountMax; }

References EDA_BASE_FRAME::m_undoRedoCountMax.

Referenced by EDA_DRAW_FRAME::SaveSettings().

◆ 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 140 of file tools_holder.h.

140 { return m_moveWarpsCursor; }
bool m_moveWarpsCursor
Definition: tools_holder.h:176

References TOOLS_HOLDER::m_moveWarpsCursor.

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

◆ GetMruPath()

◆ GetNearestGridPosition()

wxPoint EDA_DRAW_FRAME::GetNearestGridPosition ( const wxPoint &  aPosition) const
inherited

Return the nearest aGridSize location to aPosition.

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

Definition at line 741 of file eda_draw_frame.cpp.

742 {
743  const wxPoint& gridOrigin = GetGridOrigin();
744  VECTOR2D gridSize = GetCanvas()->GetGAL()->GetGridSize();
745 
746  double xOffset = fmod( gridOrigin.x, gridSize.x );
747  int x = KiROUND( (aPosition.x - xOffset) / gridSize.x );
748  double yOffset = fmod( gridOrigin.y, gridSize.y );
749  int y = KiROUND( (aPosition.y - yOffset) / gridSize.y );
750 
751  return wxPoint( KiROUND( x * gridSize.x + xOffset ), KiROUND( y * gridSize.y + yOffset ) );
752 }
virtual EDA_DRAW_PANEL_GAL * GetCanvas() const
Return a pointer to GAL-based canvas of given EDA draw frame.
KIGFX::GAL * GetGAL() const
Return a pointer to the GAL instance used in the panel.
virtual const wxPoint & GetGridOrigin() const =0
Return the absolute coordinates of the origin of the snap grid.
const VECTOR2D & GetGridSize() const
Return the grid size.
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:68

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 SYMBOL_EDITOR_EDIT_TOOL::Rotate(), SCH_EDIT_TOOL::Rotate(), and SCH_DRAWING_TOOLS::sizeSheet().

◆ GetNearestHalfGridPosition()

wxPoint EDA_DRAW_FRAME::GetNearestHalfGridPosition ( const wxPoint &  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 755 of file eda_draw_frame.cpp.

756 {
757  const wxPoint& gridOrigin = GetGridOrigin();
758  VECTOR2D gridSize = GetCanvas()->GetGAL()->GetGridSize() / 2.0;
759 
760  double xOffset = fmod( gridOrigin.x, gridSize.x );
761  int x = KiROUND( (aPosition.x - xOffset) / gridSize.x );
762  double yOffset = fmod( gridOrigin.y, gridSize.y );
763  int y = KiROUND( (aPosition.y - yOffset) / gridSize.y );
764 
765  return wxPoint( KiROUND( x * gridSize.x + xOffset ), KiROUND( y * gridSize.y + yOffset ) );
766 }
virtual EDA_DRAW_PANEL_GAL * GetCanvas() const
Return a pointer to GAL-based canvas of given EDA draw frame.
KIGFX::GAL * GetGAL() const
Return a pointer to the GAL instance used in the panel.
virtual const wxPoint & GetGridOrigin() const =0
Return the absolute coordinates of the origin of the snap grid.
const VECTOR2D & GetGridSize() const
Return the grid size.
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:68

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 SYMBOL_EDITOR_EDIT_TOOL::Mirror(), and SCH_EDIT_TOOL::Mirror().

◆ GetOriginTransforms()

virtual ORIGIN_TRANSFORMS& EDA_DRAW_FRAME::GetOriginTransforms ( )
inlinevirtualinherited

Return a reference to the default ORIGIN_TRANSFORMS object.

Reimplemented in PCB_BASE_FRAME.

Definition at line 152 of file eda_draw_frame.h.

153  { return m_originTransforms; }
ORIGIN_TRANSFORMS m_originTransforms

References EDA_DRAW_FRAME::m_originTransforms.

Referenced by DIMENSION_BASE::GetMsgPanelInfo(), PCB_SHAPE::GetMsgPanelInfo(), and LEADER::GetMsgPanelInfo().

◆ GetPageSettings()

const PAGE_INFO & SCH_BASE_FRAME::GetPageSettings ( ) const
overridevirtualinherited

Implements EDA_DRAW_FRAME.

Definition at line 135 of file sch_base_frame.cpp.

136 {
137  return GetScreen()->GetPageSettings();
138 }
SCH_SCREEN * GetScreen() const override
Return a pointer to a BASE_SCREEN or one of its derivatives.
const PAGE_INFO & GetPageSettings() const
Definition: sch_screen.h:128

References SCH_SCREEN::GetPageSettings(), and SCH_BASE_FRAME::GetScreen().

Referenced by DIALOG_PLOT_SCHEMATIC::plotOneSheetPDF().

◆ GetPageSizeIU()

const wxSize SCH_BASE_FRAME::GetPageSizeIU ( ) const
overridevirtualinherited

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 141 of file sch_base_frame.cpp.

142 {
143  // GetSizeIU is compile time dependent:
144  return GetScreen()->GetPageSettings().GetSizeIU();
145 }
SCH_SCREEN * GetScreen() const override
Return a pointer to a BASE_SCREEN or one of its derivatives.
const PAGE_INFO & GetPageSettings() const
Definition: sch_screen.h:128

References SCH_SCREEN::GetPageSettings(), and SCH_BASE_FRAME::GetScreen().

Referenced by SCH_EDIT_FRAME::DrawCurrentSheetToClipboard().

◆ GetRedoCommandCount()

virtual int EDA_BASE_FRAME::GetRedoCommandCount ( ) const
inlinevirtualinherited

◆ GetRenderSettings()

KIGFX::SCH_RENDER_SETTINGS * SCH_BASE_FRAME::GetRenderSettings ( )
inherited

Definition at line 277 of file sch_base_frame.cpp.

278 {
279  KIGFX::PAINTER* painter = GetCanvas()->GetView()->GetPainter();
280  return static_cast<KIGFX::SCH_RENDER_SETTINGS*>( painter->GetSettings() );
281 }
KIGFX::SCH_VIEW * GetView() const override
Return a pointer to the #VIEW instance used in the panel.
PAINTER * GetPainter() const
Return the painter object used by the view for drawing #VIEW_ITEMS.
Definition: view.h:207
Contains all the knowledge about how to draw graphical object onto any particular output device.
Definition: painter.h:57
SCH_DRAW_PANEL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.
virtual RENDER_SETTINGS * GetSettings()=0
Return a pointer to current settings that are going to be used when drawing items.

References SCH_BASE_FRAME::GetCanvas(), KIGFX::VIEW::GetPainter(), KIGFX::PAINTER::GetSettings(), and SCH_DRAW_PANEL::GetView().

Referenced by DIALOG_PIN_PROPERTIES::DIALOG_PIN_PROPERTIES(), SCH_EDIT_FRAME::DrawCurrentSheetToClipboard(), SCH_EDIT_FRAME::LoadProjectSettings(), SYMBOL_VIEWER_FRAME::LoadSettings(), SCH_EDIT_FRAME::LoadSettings(), LoadSettings(), DIALOG_PIN_PROPERTIES::OnPaintShowPanel(), DIALOG_PLOT_SCHEMATIC::PlotSchematic(), SCH_PRINTOUT::PrintPage(), RebuildView(), SYMBOL_VIEWER_FRAME::SaveSettings(), SaveSettings(), SetCurPart(), SYMBOL_VIEWER_FRAME::setupUIConditions(), setupUIConditions(), SYMBOL_EDITOR_CONTROL::ShowElectricalTypes(), SVGPlotSymbol(), SYMBOL_VIEWER_FRAME::SYMBOL_VIEWER_FRAME(), PANEL_SYM_EDITING_OPTIONS::TransferDataFromWindow(), PANEL_EESCHEMA_DISPLAY_OPTIONS::TransferDataFromWindow(), PANEL_SETUP_FORMATTING::TransferDataFromWindow(), PANEL_SYM_EDITING_OPTIONS::TransferDataToWindow(), and SYMBOL_VIEWER_FRAME::updatePreviewSymbol().

◆ GetScreen()

◆ GetScreenDesc()

wxString EDA_DRAW_FRAME::GetScreenDesc ( ) const
virtualinherited

Reimplemented in SCH_EDIT_FRAME.

Definition at line 895 of file eda_draw_frame.cpp.

896 {
897  // Virtual function. Base class implementation returns an empty string.
898  return wxEmptyString;
899 }

Referenced by KIGFX::SCH_VIEW::DisplaySheet(), and EDA_DRAW_FRAME::PrintDrawingSheet().

◆ GetSettings()

SYMBOL_EDITOR_SETTINGS* SYMBOL_EDIT_FRAME::GetSettings ( ) const
inline

◆ GetSettingsManager()

◆ GetSeverity()

virtual SEVERITY EDA_BASE_FRAME::GetSeverity ( int  aErrorCode) const
inlinevirtualinherited

Reimplemented in PCB_BASE_FRAME.

Definition at line 130 of file eda_base_frame.h.

References RPT_SEVERITY_UNDEFINED.

Referenced by RC_TREE_MODEL::GetValue().

◆ GetShowAllPins()

virtual bool SCH_BASE_FRAME::GetShowAllPins ( ) const
inlinevirtualinherited

Allow some frames to show/hide hidden pins.

The default impl shows all pins.

Reimplemented in SCH_EDIT_FRAME.

Definition at line 125 of file sch_base_frame.h.

125 { return true; }

Referenced by EE_SELECTION_TOOL::Selectable().

◆ GetShowDeMorgan()

bool SYMBOL_EDIT_FRAME::GetShowDeMorgan ( ) const
inline

Definition at line 227 of file symbol_edit_frame.h.

227 { return m_showDeMorgan; }
static bool m_showDeMorgan

References m_showDeMorgan.

Referenced by setupUIConditions(), and DIALOG_LIB_EDIT_DRAW_ITEM::TransferDataToWindow().

◆ GetShowPolarCoords()

bool EDA_DRAW_FRAME::GetShowPolarCoords ( ) const
inlineinherited

For those frames that support polar coordinates.

Definition at line 108 of file eda_draw_frame.h.

108 { return m_polarCoords; }

References EDA_DRAW_FRAME::m_polarCoords.

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

◆ GetSymbolFromRedoList()

void SYMBOL_EDIT_FRAME::GetSymbolFromRedoList ( )

Definition at line 59 of file symbol_editor_undo_redo.cpp.

60 {
61  if( GetRedoCommandCount() <= 0 )
62  return;
63 
65 
66  // Load the last redo entry
68  ITEM_PICKER redoWrapper = redoCommand->PopItem();
69  delete redoCommand;
70  LIB_PART* part = (LIB_PART*) redoWrapper.GetItem();
71  wxCHECK( part, /* void */ );
72  part->ClearFlags( UR_TRANSIENT );
73  UNDO_REDO undoRedoType = redoWrapper.GetStatus();
74 
75  // Store the current part in the undo buffer
76  PICKED_ITEMS_LIST* undoCommand = new PICKED_ITEMS_LIST();
77  LIB_PART* oldPart = m_my_part;
78  oldPart->SetFlags( UR_TRANSIENT );
79  ITEM_PICKER undoWrapper( GetScreen(), oldPart, undoRedoType );
80  undoCommand->PushItem( undoWrapper );
81  PushCommandToUndoList( undoCommand );
82 
83  // Do not delete the previous part by calling SetCurPart( part )
84  // which calls delete <previous part>.
85  // <previous part> is now put in undo list and is owned by this list
86  // Just set the current part to the part which come from the redo list
87  m_my_part = part;
88 
89  if( undoRedoType == UNDO_REDO::LIB_RENAME )
90  {
91  wxString lib = GetCurLib();
92  m_libMgr->UpdatePartAfterRename( part, oldPart->GetName(), lib );
93 
94  // Reselect the renamed part
95  m_treePane->GetLibTree()->SelectLibId( LIB_ID( lib, part->GetName() ) );
96  }
97 
99  SetShowDeMorgan( part->HasConversion() );
100  updateTitle();
101 
102  RebuildView();
103  OnModify();
104 }
void OnModify() override
Must be called after a schematic change in order to set the "modify" flag of the current symbol.
bool UpdatePartAfterRename(LIB_PART *aPart, const wxString &oldAlias, const wxString &aLibrary)
Update the part buffer with a new version of the part when the name has changed.
#define UR_TRANSIENT
indicates the item is owned by the undo/redo stack
Definition: eda_item.h:135
wxString GetName() const override
Definition: lib_symbol.h:129
bool HasConversion() const
Test if part has more than one body conversion type (DeMorgan).
void SetShowDeMorgan(bool show)
EDA_ITEM * GetItem() const
SCH_SCREEN * GetScreen() const override
Return a pointer to a BASE_SCREEN or one of its derivatives.
SYMBOL_TREE_PANE * m_treePane
bool RunAction(const std::string &aActionName, bool aNow=false, T aParam=NULL)
Run the specified action.
Definition: tool_manager.h:141
virtual void PushCommandToUndoList(PICKED_ITEMS_LIST *aItem)
Add a command to undo in the undo list.
virtual int GetRedoCommandCount() const
void PushItem(const ITEM_PICKER &aItem)
Push aItem to the top of the list.
virtual PICKED_ITEMS_LIST * PopCommandFromRedoList()
Return the last command to undo and remove it from list, nothing is deleted.
A logical library item identifier and consists of various portions much like a URI.
Definition: lib_id.h:51
wxString GetCurLib() const
The nickname of the current library being edited and empty string if none.
UNDO_REDO
Undo Redo considerations: Basically we have 3 cases New item Deleted item Modified item there is also...
void updateTitle()
Update the main window title bar with the current library name and read only status of the library.
void SetFlags(STATUS_FLAGS aMask)
Definition: eda_item.h:203
Define a library symbol object.
Definition: lib_symbol.h:93
static TOOL_ACTION clearSelection
Clears the current selection.
Definition: ee_actions.h:54
A holder to handle information on schematic or board items.
TOOL_MANAGER * m_toolManager
Definition: tools_holder.h:157
void ClearFlags(STATUS_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
Definition: eda_item.h:204
SYMBOL_LIBRARY_MANAGER * m_libMgr
LIB_TREE * GetLibTree() const
UNDO_REDO GetStatus() const
void SelectLibId(const LIB_ID &aLibId)
Select an item in the tree widget.
Definition: lib_tree.cpp:179

References EDA_ITEM::ClearFlags(), EE_ACTIONS::clearSelection, GetCurLib(), ITEM_PICKER::GetItem(), SYMBOL_TREE_PANE::GetLibTree(), LIB_PART::GetName(), EDA_BASE_FRAME::GetRedoCommandCount(), SCH_BASE_FRAME::GetScreen(), ITEM_PICKER::GetStatus(), LIB_PART::HasConversion(), LIB_RENAME, m_libMgr, m_my_part, TOOLS_HOLDER::m_toolManager, m_treePane, OnModify(), EDA_BASE_FRAME::PopCommandFromRedoList(), PICKED_ITEMS_LIST::PopItem(), EDA_BASE_FRAME::PushCommandToUndoList(), PICKED_ITEMS_LIST::PushItem(), RebuildSymbolUnitsList(), RebuildView(), TOOL_MANAGER::RunAction(), LIB_TREE::SelectLibId(), EDA_ITEM::SetFlags(), SetShowDeMorgan(), SYMBOL_LIBRARY_MANAGER::UpdatePartAfterRename(), updateTitle(), and UR_TRANSIENT.

Referenced by SYMBOL_EDITOR_EDIT_TOOL::Redo().

◆ GetSymbolFromUndoList()

void SYMBOL_EDIT_FRAME::GetSymbolFromUndoList ( )

Definition at line 107 of file symbol_editor_undo_redo.cpp.

108 {
109  if( GetUndoCommandCount() <= 0 )
110  return;
111 
113 
114  // Load the last undo entry
115  PICKED_ITEMS_LIST* undoCommand = PopCommandFromUndoList();
116  ITEM_PICKER undoWrapper = undoCommand->PopItem();
117  delete undoCommand;
118  LIB_PART* part = (LIB_PART*) undoWrapper.GetItem();
119  wxCHECK( part, /* void */ );
120  part->ClearFlags( UR_TRANSIENT );
121  UNDO_REDO undoRedoType = undoWrapper.GetStatus();
122 
123  // Store the current part in the redo buffer
124  PICKED_ITEMS_LIST* redoCommand = new PICKED_ITEMS_LIST();
125  LIB_PART* oldPart = m_my_part;
126  oldPart->SetFlags( UR_TRANSIENT );
127  ITEM_PICKER redoWrapper( GetScreen(), oldPart, undoRedoType );
128  redoCommand->PushItem( redoWrapper );
129  PushCommandToRedoList( redoCommand );
130 
131  // Do not delete the previous part by calling SetCurPart( part ),
132  // which calls delete <previous part>.
133  // <previous part> is now put in redo list and is owned by this list.
134  // Just set the current part to the part which come from the undo list
135  m_my_part = part;
136 
137  if( undoRedoType == UNDO_REDO::LIB_RENAME )
138  {
139  wxString lib = GetCurLib();
140  m_libMgr->UpdatePartAfterRename( part, oldPart->GetName(), lib );
141 
142  // Reselect the renamed part
143  m_treePane->GetLibTree()->SelectLibId( LIB_ID( lib, part->GetName() ) );
144  }
145 
147  SetShowDeMorgan( part->HasConversion() );
148  updateTitle();
149 
150  RebuildView();
151  OnModify();
152 }
void OnModify() override
Must be called after a schematic change in order to set the "modify" flag of the current symbol.
bool UpdatePartAfterRename(LIB_PART *aPart, const wxString &oldAlias, const wxString &aLibrary)
Update the part buffer with a new version of the part when the name has changed.
#define UR_TRANSIENT
indicates the item is owned by the undo/redo stack
Definition: eda_item.h:135
wxString GetName() const override
Definition: lib_symbol.h:129
bool HasConversion() const
Test if part has more than one body conversion type (DeMorgan).
void SetShowDeMorgan(bool show)
virtual void PushCommandToRedoList(PICKED_ITEMS_LIST *aItem)
Add a command to redo in the redo list.
EDA_ITEM * GetItem() const
SCH_SCREEN * GetScreen() const override
Return a pointer to a BASE_SCREEN or one of its derivatives.
SYMBOL_TREE_PANE * m_treePane
bool RunAction(const std::string &aActionName, bool aNow=false, T aParam=NULL)
Run the specified action.
Definition: tool_manager.h:141
void PushItem(const ITEM_PICKER &aItem)
Push aItem to the top of the list.
A logical library item identifier and consists of various portions much like a URI.
Definition: lib_id.h:51
wxString GetCurLib() const
The nickname of the current library being edited and empty string if none.
UNDO_REDO
Undo Redo considerations: Basically we have 3 cases New item Deleted item Modified item there is also...
void updateTitle()
Update the main window title bar with the current library name and read only status of the library.
void SetFlags(STATUS_FLAGS aMask)
Definition: eda_item.h:203
virtual int GetUndoCommandCount() const
Define a library symbol object.
Definition: lib_symbol.h:93
virtual PICKED_ITEMS_LIST * PopCommandFromUndoList()
Return the last command to undo and remove it from list, nothing is deleted.
static TOOL_ACTION clearSelection
Clears the current selection.
Definition: ee_actions.h:54
A holder to handle information on schematic or board items.
TOOL_MANAGER * m_toolManager
Definition: tools_holder.h:157
void ClearFlags(STATUS_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
Definition: eda_item.h:204
SYMBOL_LIBRARY_MANAGER * m_libMgr
LIB_TREE * GetLibTree() const
UNDO_REDO GetStatus() const
void SelectLibId(const LIB_ID &aLibId)
Select an item in the tree widget.
Definition: lib_tree.cpp:179

References EDA_ITEM::ClearFlags(), EE_ACTIONS::clearSelection, GetCurLib(), ITEM_PICKER::GetItem(), SYMBOL_TREE_PANE::GetLibTree(), LIB_PART::GetName(), SCH_BASE_FRAME::GetScreen(), ITEM_PICKER::GetStatus(), EDA_BASE_FRAME::GetUndoCommandCount(), LIB_PART::HasConversion(), LIB_RENAME, m_libMgr, m_my_part, TOOLS_HOLDER::m_toolManager, m_treePane, OnModify(), EDA_BASE_FRAME::PopCommandFromUndoList(), PICKED_ITEMS_LIST::PopItem(), EDA_BASE_FRAME::PushCommandToRedoList(), PICKED_ITEMS_LIST::PushItem(), RebuildSymbolUnitsList(), RebuildView(), TOOL_MANAGER::RunAction(), LIB_TREE::SelectLibId(), EDA_ITEM::SetFlags(), SetShowDeMorgan(), SYMBOL_LIBRARY_MANAGER::UpdatePartAfterRename(), updateTitle(), and UR_TRANSIENT.

Referenced by SYMBOL_EDITOR_EDIT_TOOL::Undo().

◆ getTargetLib()

wxString SYMBOL_EDIT_FRAME::getTargetLib ( ) const
private

Definition at line 892 of file symbol_edit_frame.cpp.

893 {
894  return GetTargetLibId().GetLibNickname();
895 }
const UTF8 & GetLibNickname() const
Return the logical library name portion of a LIB_ID.
Definition: lib_id.h:92
LIB_ID GetTargetLibId() const

References LIB_ID::GetLibNickname(), and GetTargetLibId().

Referenced by CreateNewPart(), ImportPart(), and saveLibrary().

◆ GetTargetLibId()

LIB_ID SYMBOL_EDIT_FRAME::GetTargetLibId ( ) const

Definition at line 875 of file symbol_edit_frame.cpp.

876 {
877  LIB_ID id = GetTreeLIBID();
878 
879  if( id.GetLibNickname().empty() && m_my_part )
880  id = m_my_part->GetLibId();
881 
882  return id;
883 }
LIB_ID GetLibId() const override
Definition: lib_symbol.h:131
A logical library item identifier and consists of various portions much like a URI.
Definition: lib_id.h:51
LIB_ID GetTreeLIBID(int *aUnit=nullptr) const
Return the LIB_ID of the library or symbol selected in the symbol tree.
static bool empty(const wxTextEntryBase *aCtrl)

References empty(), LIB_PART::GetLibId(), GetTreeLIBID(), and m_my_part.

Referenced by DeletePartFromLibrary(), getTargetLib(), SYMBOL_EDITOR_CONTROL::Init(), RegenerateLibraryTree(), Revert(), Save(), SaveLibraryAs(), SaveSymbolAs(), and setupUIConditions().

◆ getTargetPart()

LIB_PART * SYMBOL_EDIT_FRAME::getTargetPart ( ) const
private

Return either the library selected in the symbol tree, if context menu is active or the library that is currently modified.

Definition at line 861 of file symbol_edit_frame.cpp.

862 {
863  LIB_ID libId = GetTreeLIBID();
864 
865  if( libId.IsValid() )
866  {
867  LIB_PART* alias = m_libMgr->GetAlias( libId.GetLibItemName(), libId.GetLibNickname() );
868  return alias;
869  }
870 
871  return m_my_part;
872 }
const UTF8 & GetLibItemName() const
Definition: lib_id.h:106
LIB_PART * GetAlias(const wxString &aAlias, const wxString &aLibrary) const
Return either an alias of a working LIB_PART copy, or alias of the original part if there is no worki...
A logical library item identifier and consists of various portions much like a URI.
Definition: lib_id.h:51
bool IsValid() const
Check if this LID_ID is valid.
Definition: lib_id.h:168
LIB_ID GetTreeLIBID(int *aUnit=nullptr) const
Return the LIB_ID of the library or symbol selected in the symbol tree.
Define a library symbol object.
Definition: lib_symbol.h:93
const UTF8 & GetLibNickname() const
Return the logical library name portion of a LIB_ID.
Definition: lib_id.h:92
SYMBOL_LIBRARY_MANAGER * m_libMgr

References SYMBOL_LIBRARY_MANAGER::GetAlias(), LIB_ID::GetLibItemName(), LIB_ID::GetLibNickname(), GetTreeLIBID(), LIB_ID::IsValid(), m_libMgr, and m_my_part.

Referenced by ExportPart(), Save(), and savePartAs().

◆ GetTitleBlock()

const TITLE_BLOCK & SCH_BASE_FRAME::GetTitleBlock ( ) const
overridevirtualinherited

Implements EDA_DRAW_FRAME.

Definition at line 148 of file sch_base_frame.cpp.

149 {
150  wxASSERT( GetScreen() );
151  return GetScreen()->GetTitleBlock();
152 }
SCH_SCREEN * GetScreen() const override
Return a pointer to a BASE_SCREEN or one of its derivatives.
const TITLE_BLOCK & GetTitleBlock() const
Definition: sch_screen.h:138

References SCH_BASE_FRAME::GetScreen(), and SCH_SCREEN::GetTitleBlock().

Referenced by DIALOG_PLOT_SCHEMATIC::createPDFFile(), DIALOG_PLOT_SCHEMATIC::Plot_1_Page_HPGL(), DIALOG_PLOT_SCHEMATIC::PlotOneSheetDXF(), DIALOG_PLOT_SCHEMATIC::plotOneSheetPDF(), DIALOG_PLOT_SCHEMATIC::plotOneSheetPS(), and DIALOG_PLOT_SCHEMATIC::plotOneSheetSVG().

◆ GetToolCanvas()

wxWindow* EDA_DRAW_FRAME::GetToolCanvas ( ) const
inlineoverridevirtualinherited

Canvas access.

Implements TOOLS_HOLDER.

Definition at line 426 of file eda_draw_frame.h.

426 { return GetCanvas(); }
virtual EDA_DRAW_PANEL_GAL * GetCanvas() const
Return a pointer to GAL-based canvas of given EDA draw frame.

References EDA_DRAW_FRAME::GetCanvas().

◆ GetToolManager()

TOOL_MANAGER* TOOLS_HOLDER::GetToolManager ( ) const
inlineinherited

Return the MVC controller.

Definition at line 55 of file tools_holder.h.

55 { return m_toolManager; }
TOOL_MANAGER * m_toolManager
Definition: tools_holder.h:157

References TOOLS_HOLDER::m_toolManager.

Referenced by PROJECT_TREE_ITEM::Activate(), FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), SYMBOL_EDITOR_CONTROL::AddSymbolToSchematic(), APPEARANCE_CONTROLS::APPEARANCE_CONTROLS(), BOARD_COMMIT::BOARD_COMMIT(), 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::DisplayWorksheet(), DIALOG_CLEANUP_TRACKS_AND_VIAS::doCleanup(), DIALOG_CLEANUP_GRAPHICS::doCleanup(), SIM_PLOT_FRAME::doCloseWindow(), DIALOG_GLOBAL_DELETION::doGlobalDeletions(), SCH_FIELD::DoHypertextMenu(), DRAWING_TOOL::DrawVia(), TRACK_WIDTH_MENU::eventHandler(), DIFF_PAIR_MENU::eventHandler(), PCB_EDIT_FRAME::ExecuteRemoteCommand(), SCH_EDIT_FRAME::ExecuteRemoteCommand(), GERBVIEW_FRAME::GERBVIEW_FRAME(), FP_TREE_SYNCHRONIZING_ADAPTER::GetContextMenuTool(), SYMBOL_TREE_SYNCHRONIZING_ADAPTER::GetContextMenuTool(), PL_EDITOR_FRAME::GetLayoutFromRedoList(), PL_EDITOR_FRAME::GetLayoutFromUndoList(), SCH_NAVIGATE_TOOL::HypertextCommand(), ROUTER_TOOL::InlineBreakTrack(), KICAD_MANAGER_FRAME::InstallPreferences(), PL_EDITOR_FRAME::InstallPreferences(), FOOTPRINT_EDIT_FRAME::InstallPreferences(), InstallPreferences(), GERBVIEW_FRAME::InstallPreferences(), PCB_EDIT_FRAME::InstallPreferences(), SCH_EDIT_FRAME::InstallPreferences(), LoadPart(), PCB_EDIT_FRAME::LoadProjectSettings(), FOOTPRINT_EDIT_FRAME::LoadSettings(), PROPERTIES_FRAME::OnAcceptPrms(), DIALOG_DRC::OnActivateDlg(), DIALOG_FOOTPRINT_CHECKER::OnCancelClick(), DIALOG_DRC::OnCancelClick(), DIALOG_INSPECTOR::onCellClicked(), DIALOG_ERC::OnCloseErcDialog(), SYMBOL_TREE_PANE::onComponentSelected(), DIALOG_FOOTPRINT_CHECKER::OnDeleteOneClick(), DIALOG_DRC::OnDeleteOneClick(), DIALOG_ERC::OnERCItemSelected(), DIALOG_CONSTRAINTS_REPORTER::OnErrorLinkClicked(), DIALOG_INSPECTION_REPORTER::OnErrorLinkClicked(), KICAD_MANAGER_FRAME::OnIdle(), FOOTPRINTS_LISTBOX::OnLeftDClick(), APPEARANCE_CONTROLS::onNetclassContextMenu(), APPEARANCE_CONTROLS::onNetContextMenu(), SIM_PLOT_FRAME::onProbe(), DIALOG_PLOT::onRunDRC(), DIALOG_DRC::OnRunDRCClick(), HIERARCHY_NAVIG_DLG::onSelectSheetPath(), SCH_EDIT_FRAME::onSize(), DIALOG_FIELDS_EDITOR_GLOBAL::OnTableCellClick(), SIM_PLOT_FRAME::onTune(), PANEL_SELECTION_FILTER::PANEL_SELECTION_FILTER(), DIALOG_PLOT::Plot(), TOOLS_HOLDER::PopTool(), SCH_EDIT_FRAME::PutDataInPreviousState(), PL_EDITOR_FRAME::RollbackFromUndo(), FOOTPRINT_EDIT_FRAME::SaveFootprintToBoard(), PCB_EDIT_FRAME::SaveProjectSettings(), FOOTPRINT_EDIT_FRAME::SaveSettings(), EDA_3D_VIEWER::SaveSettings(), DIALOG_FIND::search(), CVPCB_MAINFRAME::setupEventHandlers(), APPEARANCE_CONTROLS::showNetclass(), SYMBOL_VIEWER_FRAME::SYMBOL_VIEWER_FRAME(), DIALOG_GRID_SETTINGS::TransferDataFromWindow(), DIALOG_LIB_EDIT_TEXT::TransferDataFromWindow(), DIALOG_3D_VIEW_OPTIONS::TransferDataFromWindow(), DIALOG_SYMBOL_PROPERTIES::TransferDataFromWindow(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::TransferDataFromWindow(), DIALOG_FIELDS_EDITOR_GLOBAL::TransferDataToWindow(), DIALOG_LIB_EDIT_TEXT::TransferDataToWindow(), DIALOG_3D_VIEW_OPTIONS::TransferDataToWindow(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::TransferDataToWindow(), DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::TransferDataToWindow(), EDA_DRAW_FRAME::UpdateMsgPanel(), NET_GRID_TABLE::updateNetVisibility(), DIALOG_NETLIST::~DIALOG_NETLIST(), and DIALOG_UPDATE_PCB::~DIALOG_UPDATE_PCB().

◆ GetTreeLIBID()

LIB_ID SYMBOL_EDIT_FRAME::GetTreeLIBID ( int *  aUnit = nullptr) const

Return the LIB_ID of the library or symbol selected in the symbol tree.

Definition at line 855 of file symbol_edit_frame.cpp.

856 {
857  return m_treePane->GetLibTree()->GetSelectedLibId( aUnit );
858 }
SYMBOL_TREE_PANE * m_treePane
LIB_ID GetSelectedLibId(int *aUnit=nullptr) const
For multi-unit components, if the user selects the component itself rather than picking an individual...
Definition: lib_tree.cpp:150
LIB_TREE * GetLibTree() const

References SYMBOL_TREE_PANE::GetLibTree(), LIB_TREE::GetSelectedLibId(), and m_treePane.

Referenced by SYMBOL_EDITOR_CONTROL::AddSymbol(), SYMBOL_EDITOR_CONTROL::CutCopyDelete(), SYMBOL_EDITOR_CONTROL::DuplicateSymbol(), SYMBOL_EDITOR_CONTROL::EditSymbol(), GetTargetLibId(), getTargetPart(), and SYMBOL_EDITOR_CONTROL::Init().

◆ GetType()

HOLDER_TYPE KIWAY_HOLDER::GetType ( ) const
inlineinherited

Definition at line 49 of file kiway_holder.h.

49 { return m_type; }
HOLDER_TYPE m_type
Definition: kiway_holder.h:79

References KIWAY_HOLDER::m_type.

Referenced by DIALOG_SHIM::DIALOG_SHIM().

◆ GetUndoCommandCount()

virtual int EDA_BASE_FRAME::GetUndoCommandCount ( ) const
inlinevirtualinherited

◆ GetUnit()

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

1008 {
1010 
1011  aPrimaryUnit = GetUserUnits();
1012  aSecondaryUnits = EDA_UNITS::MILS;
1013 
1014  if( EDA_UNIT_UTILS::IsImperialUnit( aPrimaryUnit ) )
1015  {
1016  if( cmnTool )
1017  aSecondaryUnits = cmnTool->GetLastMetricUnits();
1018  else
1019  aSecondaryUnits = EDA_UNITS::MILLIMETRES;
1020  }
1021  else
1022  {
1023  if( cmnTool )
1024  aSecondaryUnits = cmnTool->GetLastImperialUnits();
1025  else
1026  aSecondaryUnits = EDA_UNITS::MILS;
1027  }
1028 }
EDA_UNITS GetLastMetricUnits()
Definition: common_tools.h:74
bool IsImperialUnit(EDA_UNITS aUnit)
Definition: eda_units.cpp:26
EDA_UNITS GetLastImperialUnits()
Definition: common_tools.h:75
Handles action that are shared between different applications.
Definition: common_tools.h:37
TOOL_MANAGER * m_toolManager
Definition: tools_holder.h:157
EDA_UNITS GetUserUnits() const
Return the user units currently in use.

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

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

◆ GetUserUnits()

EDA_UNITS EDA_BASE_FRAME::GetUserUnits ( ) const
inlineinherited

Return the user units currently in use.

Definition at line 114 of file eda_base_frame.h.

115  {
116  return m_userUnits;
117  }
EDA_UNITS m_userUnits
Map containing the UI update handlers registered with wx for each action.

References EDA_BASE_FRAME::m_userUnits.

Referenced by DIALOG_CONSTRAINTS_REPORTER::AddPage(), PANEL_SETUP_TRACKS_AND_VIAS::AppendDiffPairs(), PANEL_SETUP_TRACKS_AND_VIAS::AppendTrackWidth(), PANEL_SETUP_TRACKS_AND_VIAS::AppendViaSize(), PANEL_SETUP_BOARD_STACKUP::computeBoardThickness(), MICROWAVE_TOOL::createFootprint(), MICROWAVE_TOOL::createMicrowaveInductor(), DIALOG_GROUP_PROPERTIES::DIALOG_GROUP_PROPERTIES(), GERBVIEW_SELECTION_TOOL::disambiguationMenu(), EDA_DRAW_FRAME::DisplayGridMsg(), GERBER_FILE_IMAGE::DisplayImageInfo(), DIALOG_GROUP_PROPERTIES::DoAddMember(), PL_SELECTION_TOOL::doSelectionMenu(), EE_SELECTION_TOOL::doSelectionMenu(), PCB_SELECTION_TOOL::doSelectionMenu(), DRAWING_TOOL::drawArc(), DRAWING_TOOL::DrawBoardCharacteristics(), DRAWING_TOOL::DrawDimension(), DRAWING_TOOL::drawSegment(), DRAWING_TOOL::DrawSpecificationStackup(), EVT_GRID_CMD_CELL_CHANGED(), PCB_EDIT_FRAME::GenFootprintsReport(), PANEL_FP_EDITOR_DEFAULTS::getGridValue(), PANEL_SETUP_TEXT_AND_GRAPHICS::getGridValue(), BOARD_INSPECTION_TOOL::getItemDescription(), LIB_ARC::GetMsgPanelInfo(), LIB_CIRCLE::GetMsgPanelInfo(), LIB_RECTANGLE::GetMsgPanelInfo(), SCH_PIN::GetMsgPanelInfo(), LIB_POLYLINE::GetMsgPanelInfo(), LIB_TEXT::GetMsgPanelInfo(), PCB_MARKER::GetMsgPanelInfo(), PL_EDITOR_LAYOUT::GetMsgPanelInfo(), LIB_BEZIER::GetMsgPanelInfo(), PCB_TEXT::GetMsgPanelInfo(), DS_DRAW_ITEM_BASE::GetMsgPanelInfo(), PCB_TARGET::GetMsgPanelInfo(), ZONE::GetMsgPanelInfo(), SCH_BITMAP::GetMsgPanelInfo(), NETINFO_ITEM::GetMsgPanelInfo(), LIB_FIELD::GetMsgPanelInfo(), LIB_PIN::GetMsgPanelInfo(), TRACK::GetMsgPanelInfo(), FP_TEXT::GetMsgPanelInfo(), DIMENSION_BASE::GetMsgPanelInfo(), PCB_SHAPE::GetMsgPanelInfo(), SCH_TEXT::GetMsgPanelInfo(), ALIGNED_DIMENSION::GetMsgPanelInfo(), VIA::GetMsgPanelInfo(), LEADER::GetMsgPanelInfo(), PAD::GetMsgPanelInfo(), EDA_DRAW_FRAME::GetUnitPair(), GetUserUnits(), RC_TREE_MODEL::GetValue(), BOARD_INSPECTION_TOOL::InspectClearance(), GERBVIEW_INSPECTION_TOOL::MeasureTool(), PCB_VIEWER_TOOLS::MeasureTool(), PANEL_SETUP_BOARD_STACKUP::onThicknessChange(), DIALOG_NET_INSPECTOR::onUnitsChanged(), UNIT_BINDER::onUnitsChanged(), PANEL_PREV_3D::PANEL_PREV_3D(), PANEL_SETUP_BOARD_STACKUP::PANEL_SETUP_BOARD_STACKUP(), POSITION_RELATIVE_TOOL::PositionRelative(), DRC_TOOL::RunTests(), GERBVIEW_INSPECTION_TOOL::ShowDCodes(), COMMON_TOOLS::ToggleUnits(), PANEL_SETUP_BOARD_STACKUP::transferDataFromUIToStackup(), PANEL_SETUP_TRACKS_AND_VIAS::TransferDataFromWindow(), PANEL_SETUP_CONSTRAINTS::TransferDataToWindow(), UNIT_BINDER::UNIT_BINDER(), PCB_BASE_EDIT_FRAME::unitsChangeRefresh(), EDITOR_CONDITIONS::unitsFunc(), VIA_SIZE_MENU::update(), TRACK_WIDTH_MENU::update(), DIFF_PAIR_MENU::update(), BOARD_NETLIST_UPDATER::updateCopperZoneNets(), GERBVIEW_FRAME::updateDCodeSelectBox(), DIALOG_DIMENSION_PROPERTIES::updateDimensionFromDialog(), PNS_TUNE_STATUS_POPUP::UpdateStatus(), GERBVIEW_FRAME::UpdateStatusBar(), SCH_BASE_FRAME::UpdateStatusBar(), PL_EDITOR_FRAME::UpdateStatusBar(), PCB_BASE_FRAME::UpdateStatusBar(), PCB_EDIT_FRAME::UpdateViaSizeSelectBox(), and DRC_TOOL::userUnits().

◆ 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 FOOTPRINT_WIZARD_FRAME, SIM_PLOT_FRAME, FOOTPRINT_VIEWER_FRAME, SYMBOL_VIEWER_FRAME, and DISPLAY_FOOTPRINTS_FRAME.

Definition at line 713 of file eda_base_frame.cpp.

714 {
715  return &aCfg->m_Window;
716 }
WINDOW_SETTINGS m_Window
Definition: app_settings.h:181

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

1126 {
1127 #ifdef __WXGTK__
1128  // GTK includes the window decorations in the normal GetSize call,
1129  // so we have to use a GTK-specific sizing call that returns the
1130  // non-decorated window size.
1131  int width = 0;
1132  int height = 0;
1133  GTKDoGetSize( &width, &height );
1134 
1135  wxSize winSize( width, height );
1136 #else
1137  wxSize winSize = GetSize();
1138 #endif
1139 
1140  return winSize;
1141 }

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

◆ GetZoomLevelIndicator()

const wxString EDA_DRAW_FRAME::GetZoomLevelIndicator ( ) const
inherited

Return a human readable value for display in dialogs.

Definition at line 519 of file eda_draw_frame.cpp.

520 {
521  // returns a human readable value which can be displayed as zoom
522  // level indicator in dialogs.
523  double zoom = m_canvas->GetGAL()->GetZoomFactor();
524  return wxString::Format( wxT( "Z %.2f" ), zoom );
525 }
EDA_DRAW_PANEL_GAL * m_canvas
This the frame's interface to setting GAL display options.
KIGFX::GAL * GetGAL() const
Return a pointer to the GAL instance used in the panel.
double GetZoomFactor() const
Get the zoom factor.
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

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

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

◆ handleActivateEvent()

void EDA_DRAW_FRAME::handleActivateEvent ( wxActivateEvent &  aEvent)
protectedvirtualinherited

Handle a window activation event.

Reimplemented in PCB_BASE_EDIT_FRAME.

Definition at line 1080 of file eda_draw_frame.cpp.

1081 {
1082  // Force a refresh of the message panel to ensure that the text is the right color
1083  // when the window activates
1084  if( !IsIconized() )
1085  m_messagePanel->Refresh();
1086 }
EDA_MSG_PANEL * m_messagePanel

References EDA_DRAW_FRAME::m_messagePanel.

Referenced by PCB_BASE_EDIT_FRAME::handleActivateEvent(), and EDA_DRAW_FRAME::onActivate().

◆ HandleSystemColorChange()

void EDA_BASE_FRAME::HandleSystemColorChange ( )
virtualinherited

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

Definition at line 1144 of file eda_base_frame.cpp.

1145 {
1146  // Update the icon theme when the system theme changes and update the toolbars
1147  if( GetBitmapStore()->ThemeChanged() )
1148  ThemeChanged();
1149 
1150  // This isn't handled by ThemeChanged()
1151  if( GetMenuBar() )
1152  {
1153  // For icons in menus, icon scaling & hotkeys
1154  ReCreateMenuBar();
1155  GetMenuBar()->Refresh();
1156  }
1157 }
virtual void ThemeChanged()
Process light/dark theme change.
virtual void ReCreateMenuBar()
Recreates the menu bar.
BITMAP_STORE * GetBitmapStore()
Definition: bitmap.cpp:92

References GetBitmapStore(), EDA_BASE_FRAME::ReCreateMenuBar(), 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 350 of file eda_base_frame.cpp.

352 {
353  bool checkRes = false;
354  bool enableRes = true;
355  bool showRes = true;
356  SELECTION& selection = aFrame->GetCurrentSelection();
357 
358  try
359  {
360  checkRes = aCond.checkCondition( selection );
361  enableRes = aCond.enableCondition( selection );
362  showRes = aCond.showCondition( selection );
363  }
364  catch( std::exception& )
365  {
366  // Something broke with the conditions, just skip the event.
367  aEvent.Skip();
368  return;
369  }
370 
371  aEvent.Enable( enableRes );
372  aEvent.Show( showRes );
373 
374  // wxWidgets 3.1.5+ includes a field in the event that says if the event supports being
375  // checked, since wxMenuItems don't want to be checked unless they actually are checkable
376 #if wxCHECK_VERSION( 3, 1, 5 )
377  if( aEvent.IsCheckable() )
378  aEvent.Check( checkRes );
379 #else
380  bool canCheck = true;
381 
382  // wxMenuItems don't want to be checked unless they actually are checkable, so we have to check to
383  // see if they can be and can't just universally apply a check in this event.
384  if( auto menu = dynamic_cast<wxMenu*>( aEvent.GetEventObject() ) )
385  canCheck = menu->FindItem( aEvent.GetId() )->IsCheckable();
386 
387  if( canCheck )
388  aEvent.Check( checkRes );
389 #endif
390 }
SELECTION_CONDITION showCondition
Returns true if the UI control should be shown.
SELECTION_CONDITION enableCondition
Returns true if the UI control should be enabled.
SELECTION_CONDITION checkCondition
Returns true if the UI control should be checked.
virtual SELECTION & GetCurrentSelection()
Get the current selection from the canvas area.
Definition: tools_holder.h:102

References ACTION_CONDITIONS::checkCondition, ACTION_CONDITIONS::enableCondition, TOOLS_HOLDER::GetCurrentSelection(), and ACTION_CONDITIONS::showCondition.

Referenced by EDA_BASE_FRAME::RegisterUIUpdateHandler().

◆ HardRedraw()

void SYMBOL_EDIT_FRAME::HardRedraw ( )
overridevirtual

Rebuild the GAL and redraw the screen.

Call when something went wrong.

Reimplemented from SCH_BASE_FRAME.

Definition at line 1122 of file symbol_edit_frame.cpp.

1123 {
1124  SyncLibraries( true );
1125 
1126  if( m_my_part )
1127  {
1129  EE_SELECTION& selection = selectionTool->GetSelection();
1130 
1131  for( LIB_ITEM& item : m_my_part->GetDrawItems() )
1132  {
1133  if( !alg::contains( selection, &item ) )
1134  item.ClearSelected();
1135  else
1136  item.SetSelected();
1137  }
1138  }
1139 
1140  RebuildView();
1141 }
The base class for drawable items used by schematic library components.
Definition: lib_item.h:62
EE_SELECTION & GetSelection()
Return the set of currently selected items.
LIB_ITEMS_CONTAINER & GetDrawItems()
Return a reference to the draw item list.
Definition: lib_symbol.h:469
bool contains(const _Container &__container, _Value __value)
Returns true if the container contains the given value.
Definition: kicad_algo.h:81
TOOL_MANAGER * m_toolManager
Definition: tools_holder.h:157
void SyncLibraries(bool aShowProgress, const wxString &aForceRefresh=wxEmptyString)
Synchronize the library manager to the symbol library table, and then the symbol tree to the library ...

References alg::contains(), LIB_PART::GetDrawItems(), EE_SELECTION_TOOL::GetSelection(), TOOL_MANAGER::GetTool(), m_my_part, TOOLS_HOLDER::m_toolManager, RebuildView(), and SyncLibraries().

◆ HasLibModifications()

bool SYMBOL_EDIT_FRAME::HasLibModifications ( ) const

Check if any pending libraries have been modified.

This only checks for modified libraries. If a new symbol was created and modified and no libraries have been modified, the return value will be false.

Returns
True if there are any pending library modifications.

Definition at line 1225 of file symbol_edit_frame.cpp.

1226 {
1227  wxCHECK( m_libMgr, false );
1228 
1229  return m_libMgr->HasModifications();
1230 }
SYMBOL_LIBRARY_MANAGER * m_libMgr

References SYMBOL_LIBRARY_MANAGER::HasModifications(), and m_libMgr.

◆ help_name()

wxString EDA_BASE_FRAME::help_name ( )
virtualinherited

Reimplemented in KICAD_MANAGER_FRAME.

Definition at line 732 of file eda_base_frame.cpp.

733 {
734  return Kiface().GetHelpFileName();
735 }
const wxString & GetHelpFileName() const
Return just the basename portion of the current help file.
Definition: kiface_i.h:109
KIFACE_I & Kiface()
Global KIFACE_I "get" accessor.

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

Referenced by COMMON_CONTROL::ShowHelp().

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

◆ ImportPart()

void SYMBOL_EDIT_FRAME::ImportPart ( )

Definition at line 36 of file symbol_editor_import_export.cpp.

37 {
38  wxString msg;
39  wxString libName = getTargetLib();
40 
41  if( !m_libMgr->LibraryExists( libName ) )
42  {
43  libName = SelectLibraryFromList();
44 
45  if( !m_libMgr->LibraryExists( libName ) )
46  return;
47  }
48 
49  wxString wildcards = KiCadSymbolLibFileWildcard();
50 
51  wildcards += "|" + LegacySymbolLibFileWildcard();
52 
53  wxFileDialog dlg( this, _( "Import Symbol" ), m_mruPath, wxEmptyString,
54  wildcards, wxFD_OPEN | wxFD_FILE_MUST_EXIST );
55 
56  if( dlg.ShowModal() == wxID_CANCEL )
57  return;
58 
59  wxFileName fn = dlg.GetPath();
60 
61  if( fn.GetExt().IsEmpty() )
62  fn.SetExt( (dlg.GetFilterIndex() == 0) ?
64 
65  m_mruPath = fn.GetPath();
66 
67  wxArrayString symbols;
68  SCH_IO_MGR::SCH_FILE_T piType = SCH_IO_MGR::GuessPluginTypeFromLibPath( fn.GetFullPath() );
69  SCH_PLUGIN::SCH_PLUGIN_RELEASER pi( SCH_IO_MGR::FindPlugin( piType ) );
70 
71  // TODO dialog to select the part to be imported if there is more than one
72  try
73  {
74  pi->EnumerateSymbolLib( symbols, fn.GetFullPath() );
75  }
76  catch( const IO_ERROR& ioe )
77  {
78  msg.Printf( _( "Cannot import symbol library \"%s\"." ), fn.GetFullPath() );
79  DisplayErrorMessage( this, msg, ioe.What() );
80  return;
81  }
82 
83  if( symbols.empty() )