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 UNITS_PROVIDER

Public Types

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

Public Member Functions

 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 () const override
 Get if any symbols or libraries have been modified but not saved. More...
 
bool HasLibModifications () const
 Check if any pending libraries have been modified. More...
 
bool CanCloseSymbolFromSchematic (bool doClose)
 
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...
 
int GetTreeSelectionCount () const
 
int GetTreeLIBIDs (std::vector< LIB_ID > &aSelection) const
 
LIB_SYMBOLGetCurSymbol () const
 Return the current symbol being edited or NULL if none selected. More...
 
void SetCurSymbol (LIB_SYMBOL *aSymbol, bool aUpdateZoom)
 Take ownership of aSymbol and notes that it is the one currently being edited. More...
 
LIB_SYMBOL_LIBRARY_MANAGERGetLibManager ()
 
SELECTIONGetCurrentSelection () override
 Get the current selection from the canvas area. More...
 
bool SynchronizePins ()
 
wxString AddLibraryFile (bool aCreateNew)
 Create or add an existing library to the symbol library table. More...
 
void DdAddLibrary (wxString aLibFile)
 Add a library dropped file to the symbol library table. More...
 
void CreateNewSymbol (const wxString &inheritFromSymbolName=wxEmptyString)
 Create a new symbol in the selected library. More...
 
void ImportSymbol ()
 
void ExportSymbol ()
 
void Save ()
 Save the selected symbol 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 symbols and libraries. More...
 
void Revert (bool aConfirm=true)
 Revert unsaved changes in a symbol, restoring to the last saved state. More...
 
void RevertAll ()
 
void DeleteSymbolFromLibrary ()
 
void CopySymbolToClipboard ()
 
void LoadSymbol (const wxString &aLibrary, const wxString &aSymbol, int Unit)
 
void DuplicateSymbol (bool aFromClipboard)
 Insert a duplicate symbol. More...
 
void OnSelectUnit (wxCommandEvent &event)
 
void OnToggleSymbolTree (wxCommandEvent &event)
 
bool IsSymbolTreeShown () const
 
void FreezeLibraryTree ()
 
void ThawLibraryTree ()
 
void OnUpdateUnitNumber (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 (bool aForceRefresh=false) 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...
 
void UpdateMsgPanel () override
 Redraw the message panel. More...
 
bool IsSymbolFromSchematic () const
 
bool IsSymbolFromLegacyLibrary () const
 
void UpdateSymbolMsgPanelInfo ()
 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, VECTOR2I aOffset)
 Create the SVG print file for the current edited symbol. More...
 
void SyncLibraries (bool aShowProgress, bool aPreloadCancelled=false, 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 UpdateLibraryTree (const wxDataViewItem &aTreeItem, LIB_SYMBOL *aSymbol)
 Update a symbol node in the library tree. More...
 
LIB_ID GetTargetLibId () const
 Return either the symbol selected in the symbol tree (if context menu is active) or the symbol on the editor canvas. More...
 
std::vector< LIB_IDGetSelectedLibIds () const
 
void FocusOnLibId (const LIB_ID &aLibID)
 
void CommonSettingsChanged (bool aEnvVarsChanged, bool aTextVarsChanged) override
 Called after the preferences dialog is run. More...
 
void ShowChangedLanguage () override
 
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 UpdateItem (EDA_ITEM *aItem, bool isAddOrDelete=false, bool aUpdateRtree=false) override
 Mark an item for refresh. More...
 
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_SYMBOL *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
 Return true if aLibId is an alias for the editor screen symbol. More...
 
bool IsCurrentSymbol (const LIB_ID &aLibId) const
 Restore the empty editor screen, without any symbol or library selected. More...
 
void emptyScreen ()
 
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 ()
 
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 VECTOR2I GetPageSizeIU () const override
 Works off of GetPageSettings() to return the size of the paper page in the internal units of this particular view. More...
 
const VECTOR2IGetGridOrigin () const override
 Return the absolute coordinates of the origin of the snap grid. More...
 
void SetGridOrigin (const VECTOR2I &aPoint) override
 
const TITLE_BLOCKGetTitleBlock () const override
 
void SetTitleBlock (const TITLE_BLOCK &aTitleBlock) override
 
void UpdateStatusBar () override
 Update the status bar information. More...
 
PICKED_SYMBOL PickSymbolFromLibTree (const SYMBOL_LIBRARY_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_SYMBOLGetLibSymbol (const LIB_ID &aLibId, bool aUseCacheLib=false, bool aShowErrorMsg=false)
 Load symbol from symbol library table. More...
 
PICKED_SYMBOL PickSymbolFromLibBrowser (wxTopLevelWindow *aParent, const SYMBOL_LIBRARY_FILTER *aFilter, const LIB_ID &aPreselectedLibId, int aUnit, int aConvert)
 Call the library viewer to select symbol to import into schematic. More...
 
wxString SelectLibraryFromList ()
 Display a list of loaded libraries and allows the user to select a library. More...
 
SYMBOL_LIB_TABLESelectSymLibTable (bool aOptional=false)
 Display a dialog asking the user to select a symbol library table. More...
 
virtual void RedrawScreen (const VECTOR2I &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 RefreshZoomDependentItems ()
 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...
 
void ActivateGalCanvas () override
 Use to start up the GAL drawing canvas. More...
 
bool LockFile (const wxString &aFileName)
 Mark a schematic file as being in use. More...
 
void ReleaseFile ()
 Release the current file marked in use. More...
 
void ScriptingConsoleEnableDisable ()
 Toggles the scripting console visibility. More...
 
bool IsScriptingConsoleVisible ()
 Gets the current visibility of the scripting console window. More...
 
EDA_SEARCH_DATAGetFindReplaceData ()
 
wxArrayString & GetFindHistoryList ()
 
bool GetShowPolarCoords () const
 For those frames that support polar coordinates. More...
 
void SetShowPolarCoords (bool aShow)
 
void ToggleUserUnits () override
 
void GetUnitPair (EDA_UNITS &aPrimaryUnit, EDA_UNITS &aSecondaryUnits)
 Get the pair or units in current use. More...
 
VECTOR2I GetNearestGridPosition (const VECTOR2I &aPosition) const
 Return the nearest aGridSize location to aPosition. More...
 
VECTOR2I GetNearestHalfGridPosition (const VECTOR2I &aPosition) const
 Return the nearest aGridSize / 2 location to aPosition. More...
 
virtual void SetDrawBgColor (const COLOR4D &aColor)
 
bool LibraryFileBrowser (bool doOpen, wxFileName &aFilename, const wxString &wildcard, const wxString &ext, bool isDirectory=false, bool aIsGlobal=false, const wxString &aGlobalPath=wxEmptyString)
 
virtual wxString GetScreenDesc () const
 
void EraseMsgBox ()
 
virtual void ReCreateAuxiliaryToolbar ()
 
virtual void UpdateToolbarControlSizes ()
 Update the sizes of any controls in the toolbars of the frame. More...
 
bool IsGridVisible () const
 
virtual void SetGridVisibility (bool aVisible)
 
virtual COLOR4D GetGridColor ()
 
virtual void SetGridColor (const COLOR4D &aColor)
 
void OnSelectGrid (wxCommandEvent &event)
 Command event handler for selecting grid sizes. More...
 
void OnGridSettings (wxCommandEvent &event)
 
void UpdateGridSelectBox ()
 Rebuild the grid combobox to respond to any changes in the GUI (units, user grid changes, etc.). More...
 
void OnUpdateSelectGrid (wxUpdateUIEvent &aEvent)
 Update the checked item in the grid wxchoice. More...
 
void OnUpdateSelectZoom (wxUpdateUIEvent &aEvent)
 Update the checked item in the zoom wxchoice. More...
 
void UpdateZoomSelectBox ()
 Rebuild the grid combobox to respond to any changes in the GUI (units, user grid changes, etc.) More...
 
const wxString GetZoomLevelIndicator () const
 Return a human readable value for display in dialogs. More...
 
virtual void OnSelectZoom (wxCommandEvent &event)
 Set the zoom factor when selected by the zoom list box in the main tool bar. More...
 
virtual void OnSize (wxSizeEvent &event) override
 Recalculate the size of toolbars and display panel when the frame size changes. More...
 
void OnMove (wxMoveEvent &aEvent) override
 
virtual void Zoom_Automatique (bool aWarpPointer)
 Redraw the screen with best zoom level and the best centering that shows all the page or the board. More...
 
void FocusOnLocation (const VECTOR2I &aPos)
 Useful to focus on a particular location, in find functions. More...
 
void AddStandardSubMenus (TOOL_MENU &aMenu)
 Construct a "basic" menu for a tool, containing only items that apply to all tools (e.g. More...
 
void PrintDrawingSheet (const RENDER_SETTINGS *aSettings, BASE_SCREEN *aScreen, const std::map< wxString, wxString > *aProperties, double aMils2Iu, const wxString &aFilename, const wxString &aSheetLayer=wxEmptyString)
 Prints the drawing-sheet (frame and title block). More...
 
void DisplayToolMsg (const wxString &msg) override
 
void DisplayConstraintsMsg (const wxString &msg)
 
virtual void OnPageSettingsChange ()
 Called when modifying the page settings. More...
 
void DisplayUnitsMsg ()
 Display current unit pane in the status bar. More...
 
virtual void DisplayGridMsg ()
 Display current grid size in the status bar. More...
 
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 EDA_ITEMGetItem (const KIID &aId) const
 Fetch an item by KIID. More...
 
void SetCanvas (EDA_DRAW_PANEL_GAL *aPanel)
 
wxWindow * GetToolCanvas () const override
 Canvas access. More...
 
KIGFX::GAL_DISPLAY_OPTIONSGetGalDisplayOptions ()
 Return a reference to the gal rendering options used by GAL for rendering. More...
 
void RefreshCanvas () override
 
void RecreateToolbars ()
 Rebuild all toolbars, and update the checked state of check tools. More...
 
virtual bool OpenProjectFiles (const std::vector< wxString > &aFileList, int aCtl=0)
 Open a project or set of files given by aFileList. More...
 
virtual bool ShowModal (wxString *aResult=nullptr, wxWindow *aResultantFocusWindow=nullptr)
 Show this wxFrame as if it were a modal dialog, with all other instantiated wxFrames disabled until this KIWAY_PLAYER derivative calls DismissModal(). More...
 
bool Destroy () override
 Our version of Destroy() which is virtual from wxWidgets. More...
 
bool IsModal () const override
 Return true if the frame is shown in our modal mode and false if the frame is shown as an usual frame. More...
 
void SetModal (bool aIsModal)
 
bool IsDismissed ()
 
void DismissModal (bool aRetVal, const wxString &aResult=wxEmptyString)
 
void CreateServer (int service, bool local=true)
 
void OnSockRequest (wxSocketEvent &evt)
 
void OnSockRequestServer (wxSocketEvent &evt)
 
virtual void ExecuteRemoteCommand (const char *cmdline)
 Execute a remote command sent via socket (to port KICAD_PCB_PORT_SERVICE_NUMBER, currently 4242). More...
 
void ChangeUserUnits (EDA_UNITS aUnits)
 
ORIGIN_TRANSFORMSGetOriginTransforms () override
 Return a reference to the default ORIGIN_TRANSFORMS object. More...
 
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)
 
int GetAutoSaveInterval () const
 
bool IsType (FRAME_T aType) const
 
FRAME_T GetFrameType () const
 
virtual const SEARCH_STACKsys_search ()
 Return a SEARCH_STACK pertaining to entire program. More...
 
virtual wxString help_name ()
 
void OnKicadAbout (wxCommandEvent &event)
 
void OnPreferences (wxCommandEvent &event)
 Displays the preferences and settings of all opened editors paged dialog. More...
 
void ShowPreferences (wxString aStartPage, wxString aStartParentPage)
 Displays the preferences and settings of all opened editors paged dialog, starting with a particular page. More...
 
void PrintMsg (const wxString &text)
 
void CreateInfoBar ()
 
void FinishAUIInitialization ()
 
WX_INFOBARGetInfoBar ()
 
void ShowInfoBarError (const wxString &aErrorMsg, bool aShowCloseButton=false, WX_INFOBAR::MESSAGE_TYPE aType=WX_INFOBAR::MESSAGE_TYPE::GENERIC)
 Show the WX_INFOBAR displayed on the top of the canvas with a message and an error icon on the left of the infobar, and an optional closebox to the right. More...
 
void ShowInfoBarError (const wxString &aErrorMsg, bool aShowCloseButton, std::function< void(void)> aCallback)
 Show the WX_INFOBAR displayed on the top of the canvas with a message and an error icon on the left of the infobar, and an optional closebox to the right. More...
 
void ShowInfoBarWarning (const wxString &aWarningMsg, bool aShowCloseButton=false)
 Show the WX_INFOBAR displayed on the top of the canvas with a message and a warning icon on the left of the infobar. More...
 
void ShowInfoBarMsg (const wxString &aMsg, bool aShowCloseButton=false)
 Show the WX_INFOBAR displayed on the top of the canvas with a message and an info icon on the left of the infobar. More...
 
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 SaveProjectLocalSettings ()
 Save changes to the project local settings. More...
 
void ImportHotkeyConfigFromFile (std::map< std::string, TOOL_ACTION * > aActionMap, const wxString &aDefaultShortname)
 Prompt the user for a hotkey file to read, and read it. More...
 
wxString GetFileFromHistory (int cmdId, const wxString &type, FILE_HISTORY *aFileHistory=nullptr)
 Fetches the file name from the file history list. More...
 
void ClearFileHistory (FILE_HISTORY *aFileHistory=nullptr)
 Removes all files from the file history. More...
 
void UpdateFileHistory (const wxString &FullFileName, FILE_HISTORY *aFileHistory=nullptr)
 Update the list of recently opened files. More...
 
FILE_HISTORYGetFileHistory ()
 Get the frame's main file history. More...
 
void SetMruPath (const wxString &aPath)
 
wxString GetMruPath () const
 
virtual wxString GetCurrentFileName () const
 Get the full filename + path of the currently opened file in the frame. More...
 
void ReCreateMenuBar ()
 Recreates the menu bar. More...
 
void AddStandardHelpMenu (wxMenuBar *aMenuBar)
 Adds the standard KiCad help menu to the menubar. More...
 
bool IsWritable (const wxFileName &aFileName, bool aVerbose=true)
 Checks if aFileName can be written. More...
 
virtual void CheckForAutoSaveFile (const wxFileName &aFileName)
 Check if an auto save file exists for aFileName and takes the appropriate action depending on the user input. More...
 
virtual void ThemeChanged ()
 Process light/dark theme change. More...
 
virtual void ProjectChanged ()
 Notification event that the project has changed. More...
 
const wxString & GetAboutTitle () const
 
const wxString & GetUntranslatedAboutTitle () const
 
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 TOOL_EVENT &aEvent)
 NB: the definition of "tool" is different at the user level. More...
 
virtual void PopTool (const TOOL_EVENT &aEvent)
 Pops a tool from the stack. More...
 
bool ToolStackIsEmpty ()
 
std::string CurrentToolName () const
 
bool IsCurrentTool (const TOOL_ACTION &aAction) const
 
bool GetDoImmediateActions () const
 Indicate that hotkeys should perform an immediate action even if another tool is currently active. More...
 
MOUSE_DRAG_ACTION GetDragAction () const
 Indicates whether a drag should draw a selection rectangle or drag selected (or unselected) objects. More...
 
bool GetMoveWarpsCursor () const
 Indicate that a move operation should warp the mouse pointer to the origin of the move object. More...
 
HOLDER_TYPE GetType () const
 
KIWAYKiway () const
 Return a reference to the KIWAY that this object has an opportunity to participate in. More...
 
bool HasKiway () const
 Safety check before asking for the Kiway reference. More...
 
PROJECTPrj () const
 Return a reference to the PROJECT associated with this KIWAY. More...
 
void SetKiway (wxWindow *aDest, KIWAY *aKiway)
 It is only used for debugging, since "this" is not a wxWindow*. More...
 
EDA_UNITS GetUserUnits () const
 
void SetUserUnits (EDA_UNITS aUnits)
 
const EDA_IU_SCALEGetIuScale () const
 
wxString StringFromValue (double aValue, bool aAddUnitLabel=false, EDA_DATA_TYPE aType=EDA_DATA_TYPE::DISTANCE)
 Converts aValue in internal units into a united string. More...
 
wxString StringFromValue (const EDA_ANGLE &aValue, bool aAddUnitLabel=false)
 
wxString MessageTextFromValue (double aValue, bool aAddUnitLabel=true, EDA_DATA_TYPE aType=EDA_DATA_TYPE::DISTANCE)
 A lower-precision version of StringFromValue(). More...
 
wxString MessageTextFromValue (const EDA_ANGLE &aValue, bool aAddUnitLabel=true)
 
int ValueFromString (const wxString &aTextValue, EDA_DATA_TYPE aType=EDA_DATA_TYPE::DISTANCE)
 Converts aTextValue in aUnits to internal units used by the frame. More...
 
EDA_ANGLE AngleValueFromString (const wxString &aTextValue)
 

Static Public Member Functions

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

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...
 
void doReCreateMenuBar () override
 
void handleActivateEvent (wxActivateEvent &aEvent) override
 Handle a window activation event. More...
 
void handleIconizeEvent (wxIconizeEvent &aEvent) override
 Handle a window iconize event. 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)
 
std::vector< wxWindow * > findDialogs ()
 
void resolveCanvasType ()
 Determines the Canvas type to load (with prompt if required) and initializes m_canvasType. More...
 
EDA_DRAW_PANEL_GAL::GAL_TYPE loadCanvasTypeSetting ()
 Returns the canvas type stored in the application settings. More...
 
bool saveCanvasTypeSetting (EDA_DRAW_PANEL_GAL::GAL_TYPE aCanvasType)
 Stores the canvas type in the application settings. More...
 
void onActivate (wxActivateEvent &aEvent)
 
void kiway_express (KIWAY_EXPRESS &aEvent)
 event handler, routes to derivative specific virtual KiwayMailIn() More...
 
void language_change (wxCommandEvent &event)
 An event handler called on a language menu selection. More...
 
void onAutoSaveTimer (wxTimerEvent &aEvent)
 Handle the auto save timer event. More...
 
void onIconize (wxIconizeEvent &aEvent)
 
virtual bool isAutoSaveRequired () const
 Return the auto save status of the application. More...
 
virtual bool doAutoSave ()
 This should be overridden by the derived class to handle the auto save feature. More...
 
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...
 
void ensureWindowIsOnScreen ()
 
virtual void saveProjectSettings ()
 Saves any design-related project settings associated with this frame. More...
 
virtual void OnDropFiles (wxDropFilesEvent &aEvent)
 Handles event fired when a file is dropped to the window. More...
 
virtual void DoWithAcceptedFiles ()
 Execute action on accepted dropped file. More...
 

Static Protected Member Functions

static wxString GetAutoSaveFilePrefix ()
 

Protected Attributes

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

Static Protected Attributes

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

Private Types

enum  TABLE_SCOPE { GLOBAL_LIB_TABLE , PROJECT_LIB_TABLE }
 

Private Member Functions

void setupTools ()
 
EDA_LIST_DIALOGbuildSaveAsDialog (const wxString &aSymbolName, const wxString &aLibraryPreselect)
 
void saveSymbolAs ()
 
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...
 
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 LoadOneLibrarySymbolAux (LIB_SYMBOL *aLibEntry, const wxString &aLibrary, int aUnit, int aConvert)
 Create a copy of aLibEntry into memory. More...
 
bool backupFile (const wxFileName &aOriginalFile, const wxString &aBackupExt)
 Return currently edited symbol. More...
 
LIB_SYMBOLgetTargetSymbol () 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
 
void centerItemIdleHandler (wxIdleEvent &aEvent)
 
bool saveAllLibraries (bool aRequireConfirmation)
 Save the current symbol. More...
 
bool saveCurrentSymbol ()
 Store the currently modified symbol in the library manager buffer. More...
 
void storeCurrentSymbol ()
 Rename LIB_SYMBOL aliases to avoid conflicts before adding a symbol to a library. More...
 
void ensureUniqueName (LIB_SYMBOL *aSymbol, 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...
 
void windowClosing (wxCloseEvent &event)
 (with its unexpected name so it does not collide with the real OnWindowClose() function provided in derived classes) is called just before a window closing, and is used to call a derivation specific SaveSettings(). More...
 
void commonInit (FRAME_T aFrameType)
 Collect common initialization functions used in all CTORs. More...
 
wxWindow * findQuasiModalDialog ()
 

Private Attributes

SCH_SCREENm_dummyScreen
 < Helper screen used when no symbol is loaded More...
 
LIB_SYMBOLm_symbol
 
wxComboBox * m_unitSelectBox
 
SYMBOL_TREE_PANEm_treePane
 
LIB_SYMBOL_LIBRARY_MANAGERm_libMgr
 
SYMBOL_EDITOR_SETTINGSm_settings
 
LIB_ID m_centerItemOnIdle
 
int m_unit
 
int m_convert
 Flag if the symbol being edited was loaded directly from a schematic. More...
 
bool m_isSymbolFromSchematic
 
KIID m_schematicSymbolUUID
 RefDes of the symbol (only valid if symbol was loaded from schematic) More...
 
wxString m_reference
 
BASE_SCREENm_currentScreen
 current used SCREEN More...
 
EDA_DRAW_PANEL_GALm_canvas
 This the frame's interface to setting GAL display options. More...
 
KIGFX::GAL_DISPLAY_OPTIONS m_galDisplayOptions
 
KIWAYm_kiway
 
HOLDER_TYPE m_type
 
const EDA_IU_SCALEm_iuScale
 
EDA_UNITS m_userUnits
 

Static Private Attributes

static bool m_showDeMorgan = false
 

Detailed Description

The symbol library editor main window.

Definition at line 53 of file symbol_edit_frame.h.

Member Enumeration Documentation

◆ HOLDER_TYPE

enum KIWAY_HOLDER::HOLDER_TYPE
inherited
Enumerator
DIALOG 
FRAME 
PANEL 

Definition at line 39 of file kiway_holder.h.

◆ TABLE_SCOPE

Enumerator
GLOBAL_LIB_TABLE 
PROJECT_LIB_TABLE 

Definition at line 490 of file symbol_edit_frame.h.

◆ UNDO_REDO_LIST

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

Enumerator
UNDO_LIST 
REDO_LIST 

Definition at line 111 of file eda_base_frame.h.

112 {
113 UNDO_LIST,
115 };

Constructor & Destructor Documentation

◆ SYMBOL_EDIT_FRAME()

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

Definition at line 99 of file symbol_edit_frame.cpp.

99 :
100 SCH_BASE_FRAME( aKiway, aParent, FRAME_SCH_SYMBOL_EDITOR, _( "Library Editor" ),
101 wxDefaultPosition, wxDefaultSize, KICAD_DEFAULT_DRAWFRAME_STYLE,
103 m_unitSelectBox( nullptr ),
105{
106 SetShowDeMorgan( false );
107 m_SyncPinEdit = false;
108
109 m_symbol = nullptr;
110 m_treePane = nullptr;
111 m_libMgr = nullptr;
112 m_unit = 1;
113 m_convert = 1;
114 m_aboutTitle = _HKI( "KiCad Symbol Editor" );
115
116 wxIcon icon;
117 wxIconBundle icon_bundle;
118
119 icon.CopyFromBitmap( KiBitmap( BITMAPS::icon_libedit ) );
120 icon_bundle.AddIcon( icon );
121 icon.CopyFromBitmap( KiBitmap( BITMAPS::icon_libedit_32 ) );
122 icon_bundle.AddIcon( icon );
123 icon.CopyFromBitmap( KiBitmap( BITMAPS::icon_libedit_16 ) );
124 icon_bundle.AddIcon( icon );
125
126 SetIcons( icon_bundle );
127
128 m_settings = Pgm().GetSettingsManager().GetAppSettings<SYMBOL_EDITOR_SETTINGS>();
130
132 bool loadingCancelled = false;
133
134 {
135 // Preload libraries before using SyncLibraries the first time, as the preload is
136 // multi-threaded
137 WX_PROGRESS_REPORTER reporter( this, _( "Loading Symbol Libraries" ),
138 m_libMgr->GetLibraryCount(), true );
139 m_libMgr->Preload( reporter );
140
141 loadingCancelled = reporter.IsCancelled();
142 wxSafeYield();
143 }
144
145 SyncLibraries( false, loadingCancelled );
146 m_treePane = new SYMBOL_TREE_PANE( this, m_libMgr );
147
150
151 // Ensure axis are always drawn
153 gal_opts.m_axesEnabled = true;
154
157 GetScreen()->m_Center = true;
158
160
164
165 setupTools();
167
172
173 updateTitle();
176
177 m_auimgr.SetManagedWindow( this );
178
180
181 // Rows; layers 4 - 6
182 m_auimgr.AddPane( m_mainToolBar, EDA_PANE().HToolbar().Name( "MainToolbar" )
183 .Top().Layer( 6 ) );
184
185 m_auimgr.AddPane( m_messagePanel, EDA_PANE().Messages().Name( "MsgPanel" )
186 .Bottom().Layer( 6 ) );
187
188 // Columns; layers 1 - 3
189 m_auimgr.AddPane( m_treePane, EDA_PANE().Palette().Name( "SymbolTree" )
190 .Left().Layer( 3 )
191 .Caption( _( "Libraries" ) )
192 .MinSize( 250, -1 ).BestSize( 250, -1 ) );
193 m_auimgr.AddPane( m_optionsToolBar, EDA_PANE().VToolbar().Name( "OptToolbar" )
194 .Left().Layer( 2 ) );
195
196 m_auimgr.AddPane( m_drawToolBar, EDA_PANE().VToolbar().Name( "ToolsToolbar" )
197 .Right().Layer( 2 ) );
198
199 // Center
200 m_auimgr.AddPane( GetCanvas(), wxAuiPaneInfo().Name( "DrawFrame" )
201 .CentrePane() );
202
204
205 if( m_settings->m_LibWidth > 0 )
206 {
207 wxAuiPaneInfo& treePane = m_auimgr.GetPane( "SymbolTree" );
208
209 // wxAUI hack: force width by setting MinSize() and then Fixed()
210 // thanks to ZenJu http://trac.wxwidgets.org/ticket/13180
211 treePane.MinSize( m_settings->m_LibWidth, -1 );
212 treePane.Fixed();
213 m_auimgr.Update();
214
215 // now make it resizable again
216 treePane.Resizable();
217 m_auimgr.Update();
218
219 // Note: DO NOT call m_auimgr.Update() anywhere after this; it will nuke the size
220 // back to minimum.
221 treePane.MinSize( 250, -1 );
222 }
223
224 Raise();
225 Show( true );
226
227 SyncView();
228 GetCanvas()->GetView()->UseDrawPriority( true );
229 GetCanvas()->GetGAL()->SetAxesEnabled( true );
230
232
233 // Set the working/draw area size to display a symbol to a reasonable value:
234 // A 600mm x 600mm with a origin at the area center looks like a large working area
235 double max_size_x = schIUScale.mmToIU( 600 );
236 double max_size_y = schIUScale.mmToIU( 600 );
237 BOX2D bbox;
238 bbox.SetOrigin( -max_size_x /2, -max_size_y/2 );
239 bbox.SetSize( max_size_x, max_size_y );
240 GetCanvas()->GetView()->SetBoundary( bbox );
241
243
245 DragAcceptFiles( true );
246
247 KIPLATFORM::APP::SetShutdownBlockReason( this, _( "Library changes are unsaved" ) );
248
249 // Catch unhandled accelerator command characters that were no handled by the library tree
250 // panel.
252 Bind( wxEVT_CHAR_HOOK, &TOOL_DISPATCHER::DispatchWxEvent, m_toolDispatcher );
253
254 // Ensure the window is on top
255 Raise();
256
257 if( loadingCancelled )
258 ShowInfoBarWarning( _( "Symbol library loading was cancelled by user." ) );
259}
constexpr EDA_IU_SCALE schIUScale
Definition: base_units.h:111
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:106
@ icon_libedit_32
@ icon_libedit
@ icon_libedit_16
static TOOL_ACTION zoomFitScreen
Definition: actions.h:99
static TOOL_ACTION ddAddLibrary
Definition: actions.h:60
bool m_Center
Center on screen.
Definition: base_screen.h:96
void SetOrigin(const Vec &pos)
Definition: box2.h:202
void SetSize(const Vec &size)
Definition: box2.h:213
COLOR4D GetColor(int aLayer) const
void FinishAUIInitialization()
wxAuiManager m_auimgr
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 ...
std::map< const wxString, TOOL_ACTION * > m_acceptedExts
Associates files extensions with action to execute.
wxString m_aboutTitle
void ReCreateMenuBar()
Recreates the menu bar.
COLOR_SETTINGS * m_colorSettings
EDA_DRAW_PANEL_GAL::GAL_TYPE m_canvasType
void setupUnits(APP_SETTINGS_BASE *aCfg)
ACTION_TOOLBAR * m_optionsToolBar
KIGFX::GAL_DISPLAY_OPTIONS & GetGalDisplayOptions()
Return a reference to the gal rendering options used by GAL for rendering.
void resolveCanvasType()
Determines the Canvas type to load (with prompt if required) and initializes m_canvasType.
EDA_MSG_PANEL * m_messagePanel
ACTION_TOOLBAR * m_mainToolBar
ACTION_TOOLBAR * m_drawToolBar
KIGFX::VIEW_CONTROLS * GetViewControls() const
Return a pointer to the #VIEW_CONTROLS instance used in the panel.
KIGFX::GAL * GetGAL() const
Return a pointer to the GAL instance used in the panel.
Specialization of the wxAuiPaneInfo class for KiCad panels.
bool m_axesEnabled
Fullscreen crosshair or small cross.
void SetAxesEnabled(bool aAxesEnabled)
Enable drawing the axes.
void SetAxesColor(const COLOR4D &aAxesColor)
Set the axes color.
void LoadColors(const COLOR_SETTINGS *aSettings) override
virtual void SetCrossHairCursorPosition(const VECTOR2D &aPosition, bool aWarpView=true)=0
Move the graphic crosshair cursor to the requested position expressed in world coordinates.
void SetBoundary(const BOX2D &aBoundary)
Set limits for view area.
Definition: view.h:279
void UseDrawPriority(bool aFlag)
Definition: view.h:695
Symbol library management helper that is specific to the symbol library editor frame.
SCH_BASE_FRAME(KIWAY *aKiway, wxWindow *aParent, FRAME_T aWindowType, const wxString &aTitle, const wxPoint &aPosition, const wxSize &aSize, long aStyle, const wxString &aFrameName)
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.
void SyncView()
Mark all items for refresh.
KIGFX::SCH_RENDER_SETTINGS * GetRenderSettings()
KIGFX::SCH_VIEW * GetView() const override
Return a pointer to the #VIEW instance used in the panel.
void LoadSettings(APP_SETTINGS_BASE *aCfg) override
Load common frame parameters from a configuration file.
int m_convert
Flag if the symbol being edited was loaded directly from a schematic.
void setupUIConditions() override
Setup the UI conditions for the various actions and their controls in this frame.
void updateTitle()
Update the main window title bar with the current library name and read only status of the library.
void ReCreateVToolbar() override
wxComboBox * m_unitSelectBox
LIB_SYMBOL_LIBRARY_MANAGER * m_libMgr
SYMBOL_EDITOR_SETTINGS * m_settings
bool m_SyncPinEdit
Set to true to synchronize pins at the same position when editing symbols with multiple units or mult...
void SetScreen(BASE_SCREEN *aScreen) override
SCH_SCREEN * m_dummyScreen
< Helper screen used when no symbol is loaded
void SyncLibraries(bool aShowProgress, bool aPreloadCancelled=false, const wxString &aForceRefresh=wxEmptyString)
Synchronize the library manager to the symbol library table, and then the symbol tree to the library ...
void UpdateSymbolMsgPanelInfo()
Display the documentation of the selected symbol.
void ReCreateHToolbar() override
SYMBOL_TREE_PANE * m_treePane
COLOR_SETTINGS * GetColorSettings(bool aForceRefresh=false) const override
Returns a pointer to the active color theme settings.
void SwitchCanvas(EDA_DRAW_PANEL_GAL::GAL_TYPE aCanvasType) override
Switch currently used canvas ( Cairo / OpenGL).
void ReCreateOptToolbar() override
void SetShowDeMorgan(bool show)
void Preload(PROGRESS_REPORTER &aReporter)
Preloads all symbol libraries in the symbol library table using SYMBOL_ASYNC_LOADER.
Library Editor pane with symbol tree and symbol library table selector.
TOOL_MANAGER * m_toolManager
Definition: tools_holder.h:170
TOOL_DISPATCHER * m_toolDispatcher
Definition: tools_holder.h:172
virtual void DispatchWxEvent(wxEvent &aEvent)
Process wxEvents (mostly UI events), translate them to TOOL_EVENTs, and make tools handle those.
bool RunAction(const std::string &aActionName, bool aNow=false, T aParam=NULL)
Run the specified action.
Definition: tool_manager.h:142
Multi-thread safe progress reporter dialog, intended for use of tasks that parallel reporting back of...
#define _HKI(x)
#define _(s)
#define KICAD_DEFAULT_DRAWFRAME_STYLE
#define LIB_EDIT_FRAME_NAME
@ FRAME_SCH_SYMBOL_EDITOR
Definition: frame_type.h:35
const std::string KiCadSymbolLibFileExtension
@ LAYER_SCHEMATIC_GRID_AXES
Definition: layer_ids.h:375
void SetShutdownBlockReason(wxWindow *aWindow, const wxString &aReason)
Sets the block reason why the window/application is preventing OS shutdown.
Definition: gtk/app.cpp:83
KIWAY Kiway & Pgm(), KFCTL_STANDALONE
The global Program "get" accessor.
Definition: single_top.cpp:111
constexpr int mmToIU(double mm) const
Definition: base_units.h:89
VECTOR2< double > VECTOR2D
Definition: vector2d.h:589

References _, _HKI, ACTIONS::ddAddLibrary, TOOL_DISPATCHER::DispatchWxEvent(), icon_libedit, icon_libedit_16, icon_libedit_32, PROGRESS_REPORTER_BASE::IsCancelled(), KiBitmap(), KiCadSymbolLibFileExtension, LAYER_SCHEMATIC_GRID_AXES, PCAD2KICAD::Left, KIGFX::GAL_DISPLAY_OPTIONS::m_axesEnabled, EDA_IU_SCALE::mmToIU(), Pgm(), PCAD2KICAD::Right, schIUScale, 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 262 of file symbol_edit_frame.cpp.

263{
264 // Shutdown all running tools
265 if( m_toolManager )
267
269 {
270 delete m_symbol;
271 m_symbol = nullptr;
272
273 SCH_SCREEN* screen = GetScreen();
274 delete screen;
276 }
277
278 // current screen is destroyed in EDA_DRAW_FRAME
280
281 auto libedit = Pgm().GetSettingsManager().GetAppSettings<SYMBOL_EDITOR_SETTINGS>();
282 Pgm().GetSettingsManager().Save( libedit );
283
284 delete m_libMgr;
285}
bool IsSymbolFromSchematic() const
void ShutdownAllTools()
Shutdown all tools with a currently registered event loop in this tool manager by waking them up with...

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

Member Function Documentation

◆ ActivateGalCanvas()

void SCH_BASE_FRAME::ActivateGalCanvas ( )
overridevirtualinherited

Use to start up the GAL drawing canvas.

Reimplemented from EDA_DRAW_FRAME.

Definition at line 348 of file sch_base_frame.cpp.

349{
351
352#if defined( KICAD_USE_3DCONNEXION )
353 try
354 {
355 if( !m_spaceMouse )
356 {
357 m_spaceMouse = new NL_SCHEMATIC_PLUGIN();
358 }
359
360 m_spaceMouse->SetCanvas( GetCanvas() );
361 }
362 catch( const std::system_error& e )
363 {
364 wxLogTrace( wxT( "KI_TRACE_NAVLIB" ), e.what() );
365 }
366#endif
367}
virtual void ActivateGalCanvas()
Use to start up the GAL drawing canvas.
The class that implements the public interface to the SpaceMouse plug-in.

References EDA_DRAW_FRAME::ActivateGalCanvas(), and SCH_BASE_FRAME::GetCanvas().

Referenced by SCH_BASE_FRAME::createCanvas(), and SCH_DRAW_PANEL::OnShow().

◆ AddLibraryFile()

wxString SYMBOL_EDIT_FRAME::AddLibraryFile ( bool  aCreateNew)

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

Definition at line 856 of file symbol_edit_frame.cpp.

857{
858 // Select the target library table (global/project)
860
861 if( !libTable )
862 return wxEmptyString;
863
864 wxFileName fn = m_libMgr->GetUniqueLibraryName();
865
866 if( !LibraryFileBrowser( !aCreateNew, fn, KiCadSymbolLibFileWildcard(),
868 ( libTable == &SYMBOL_LIB_TABLE::GetGlobalLibTable() ),
870 {
871 return wxEmptyString;
872 }
873
874 wxString libName = fn.GetName();
875
876 if( libName.IsEmpty() )
877 return wxEmptyString;
878
879 if( m_libMgr->LibraryExists( libName ) )
880 {
881 DisplayError( this, wxString::Format( _( "Library '%s' already exists." ), libName ) );
882 return wxEmptyString;
883 }
884
885 if( aCreateNew )
886 {
887 if( !m_libMgr->CreateLibrary( fn.GetFullPath(), libTable ) )
888 {
889 DisplayError( this, wxString::Format( _( "Could not create the library file '%s'.\n"
890 "Make sure you have write permissions and "
891 "try again." ),
892 fn.GetFullPath() ) );
893 return wxEmptyString;
894 }
895 }
896 else
897 {
898 if( !m_libMgr->AddLibrary( fn.GetFullPath(), libTable ) )
899 {
900 DisplayError( this, _( "Could not open the library file." ) );
901 return wxEmptyString;
902 }
903 }
904
905 bool globalTable = ( libTable == &SYMBOL_LIB_TABLE::GetGlobalLibTable() );
906 saveSymbolLibTables( globalTable, !globalTable );
907
908 std::string packet = fn.GetFullPath().ToStdString();
910
911 return fn.GetFullPath();
912}
bool LibraryFileBrowser(bool doOpen, wxFileName &aFilename, const wxString &wildcard, const wxString &ext, bool isDirectory=false, bool aIsGlobal=false, const wxString &aGlobalPath=wxEmptyString)
KIWAY & Kiway() const
Return a reference to the KIWAY that this object has an opportunity to participate in.
Definition: kiway_holder.h:53
virtual void ExpressMail(FRAME_T aDestination, MAIL_T aCommand, std::string &aPayload, wxWindow *aSource=nullptr)
Send aPayload to aDestination from aSource.
Definition: kiway.cpp:491
static wxString GetDefaultUserSymbolsPath()
Gets the default path we point users to create projects.
Definition: paths.cpp:97
SYMBOL_LIB_TABLE * SelectSymLibTable(bool aOptional=false)
Display a dialog asking the user to select a symbol library table.
bool saveSymbolLibTables(bool aGlobal, bool aProject)
Save Symbol Library Tables to disk.
bool LibraryExists(const wxString &aLibrary, bool aCheckEnabled=false) const
Return true if library exists.
wxString GetUniqueLibraryName() const
Return a library name that is not currently in use.
bool AddLibrary(const wxString &aFilePath, SYMBOL_LIB_TABLE *aTable)
Add an existing library.
bool CreateLibrary(const wxString &aFilePath, SYMBOL_LIB_TABLE *aTable)
Create an empty library and adds it to the library table.
static SYMBOL_LIB_TABLE & GetGlobalLibTable()
void DisplayError(wxWindow *aParent, const wxString &aText, int aDisplayTime)
Display an error or warning message box with aMessage.
Definition: confirm.cpp:300
wxString KiCadSymbolLibFileWildcard()
@ MAIL_LIB_EDIT
Definition: mail_type.h:53
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 _, SYMBOL_LIBRARY_MANAGER::AddLibrary(), SYMBOL_LIBRARY_MANAGER::CreateLibrary(), DisplayError(), KIWAY::ExpressMail(), Format(), FRAME_SCH_SYMBOL_EDITOR, PATHS::GetDefaultUserSymbolsPath(), SYMBOL_LIB_TABLE::GetGlobalLibTable(), SYMBOL_LIBRARY_MANAGER::GetUniqueLibraryName(), KiCadSymbolLibFileExtension, KiCadSymbolLibFileWildcard(), KIWAY_HOLDER::Kiway(), SYMBOL_LIBRARY_MANAGER::LibraryExists(), EDA_DRAW_FRAME::LibraryFileBrowser(), m_libMgr, MAIL_LIB_EDIT, SCH_BASE_FRAME::saveSymbolLibTables(), and SCH_BASE_FRAME::SelectSymLibTable().

Referenced by saveSymbolAs().

◆ 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 1489 of file symbol_edit_frame.cpp.

1490{
1491 wxFileName fn = aLibFile;
1492 wxFileName libTableFileName( Prj().GetProjectPath(),
1494 wxString libNickname = fn.GetName();
1495 SYMBOL_LIB_TABLE* libTable = Prj().SchSymbolLibTable();
1496 const ENV_VAR_MAP& envVars = Pgm().GetLocalEnvVariables();
1497
1498 if( libTable->HasLibrary( libNickname ) )
1499 {
1500 wxString tmp;
1501 int suffix = 1;
1502
1503 while( libTable->HasLibrary( libNickname ) )
1504 {
1505 tmp.Printf( "%s%d", fn.GetName(), suffix );
1506 libNickname = tmp;
1507 suffix += 1;
1508 }
1509 }
1510
1512 row->SetNickName( libNickname );
1513
1514 wxString normalizedPath = NormalizePath( aLibFile, &envVars, Prj().GetProjectPath() );
1515
1516 if( aScope == GLOBAL_LIB_TABLE )
1517 {
1519 libTableFileName = SYMBOL_LIB_TABLE::GetGlobalTableFileName();
1520
1521 // We cannot normalize against the current project path when saving to global table.
1522 normalizedPath = NormalizePath( aLibFile, &envVars, wxEmptyString );
1523 }
1524
1525 row->SetFullURI( normalizedPath );
1526
1527 wxCHECK( libTable->InsertRow( row ), false );
1528
1529 try
1530 {
1531 libTable->Save( libTableFileName.GetFullPath() );
1532 }
1533 catch( const IO_ERROR& ioe )
1534 {
1535 wxString msg = aScope == GLOBAL_LIB_TABLE ? _( "Error saving global library table." )
1536 : _( "Error saving project library table." );
1537
1538 wxMessageDialog dlg( this, msg, _( "File Save Error" ), wxOK | wxICON_ERROR );
1539 dlg.SetExtendedMessage( ioe.What() );
1540 dlg.ShowModal();
1541
1542 return false;
1543 }
1544
1545 return true;
1546}
Hold an error message and may be used when throwing exceptions containing meaningful error messages.
Definition: ki_exception.h:76
virtual const wxString What() const
A composite of Problem() and Where()
Definition: exceptions.cpp:30
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.
void SetNickName(const wxString &aNickName)
Change the logical name of this library, useful for an editor.
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.
void Save(const wxString &aFileName) const
Write this library table to aFileName in s-expression form.
Hold a record identifying a symbol library accessed by the appropriate symbol library SCH_PLUGIN obje...
static const wxString & GetSymbolLibTableFileName()
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:71
std::map< wxString, ENV_VAR_ITEM > ENV_VAR_MAP

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

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

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

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

◆ AddStandardSubMenus()

void EDA_DRAW_FRAME::AddStandardSubMenus ( TOOL_MENU aMenu)
inherited

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

zoom and grid).

Definition at line 572 of file eda_draw_frame.cpp.

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

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

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

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

441{
442 // Null pointers will cause boost::ptr_vector to raise a boost::bad_pointer exception which
443 // will be unhandled. There is no valid reason to pass an invalid EDA_ITEM pointer to the
444 // screen append function.
445 wxCHECK( aItem != nullptr, /* voide */ );
446
447 auto screen = aScreen;
448
449 if( aScreen == nullptr )
450 screen = GetScreen();
451
452 screen->Append( (SCH_ITEM*) aItem );
453
454 if( screen == GetScreen() )
455 {
456 GetCanvas()->GetView()->Add( aItem );
457 UpdateItem( aItem, true ); // handle any additional parent semantics
458 }
459}
virtual void Add(VIEW_ITEM *aItem, int aDrawPriority=-1)
Add a VIEW_ITEM to the view.
Definition: view.cpp:316
virtual void UpdateItem(EDA_ITEM *aItem, bool isAddOrDelete=false, bool aUpdateRtree=false)
Mark an item for refresh.
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:147

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_LINE_WIRE_BUS_TOOL::doDrawSegments(), SCH_LINE_WIRE_BUS_TOOL::doUnfoldBus(), SCH_LINE_WIRE_BUS_TOOL::finishSegments(), SCH_MOVE_TOOL::getConnectedDragItems(), SCH_MOVE_TOOL::orthoLineDrag(), SCH_EDIT_FRAME::PutDataInPreviousState(), and SCH_EDIT_TOOL::RepeatDrawItem().

◆ AngleValueFromString()

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

Definition at line 116 of file units_provider.h.

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

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

Referenced by FP_TEXT_GRID_TABLE::SetValue().

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

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

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

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

◆ backupFile()

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

Return currently edited symbol.

Definition at line 1113 of file symbol_edit_frame.cpp.

1114{
1115 if( aOriginalFile.FileExists() )
1116 {
1117 wxFileName backupFileName( aOriginalFile );
1118 backupFileName.SetExt( aBackupExt );
1119
1120 if( backupFileName.FileExists() )
1121 wxRemoveFile( backupFileName.GetFullPath() );
1122
1123 if( !wxCopyFile( aOriginalFile.GetFullPath(), backupFileName.GetFullPath() ) )
1124 {
1125 DisplayError( this, wxString::Format( _( "Failed to save backup to '%s'." ),
1126 backupFileName.GetFullPath() ) );
1127 return false;
1128 }
1129 }
1130
1131 return true;
1132}

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

Referenced by saveLibrary().

◆ buildSaveAsDialog()

EDA_LIST_DIALOG * SYMBOL_EDIT_FRAME::buildSaveAsDialog ( const wxString &  aSymbolName,
const wxString &  aLibraryPreselect 
)
private

Definition at line 563 of file symbol_editor.cpp.

565{
566 COMMON_SETTINGS* cfg = Pgm().GetCommonSettings();
568 SYMBOL_LIB_TABLE* tbl = Prj().SchSymbolLibTable();
569 std::vector<wxString> libNicknames = tbl->GetLogicalLibs();
570 wxArrayString headers;
571 std::vector<wxArrayString> itemsToDisplay;
572
573 headers.Add( _( "Nickname" ) );
574 headers.Add( _( "Description" ) );
575
576 for( const wxString& nickname : libNicknames )
577 {
578 if( alg::contains( project.m_PinnedSymbolLibs, nickname )
579 || alg::contains( cfg->m_Session.pinned_symbol_libs, nickname ) )
580 {
581 wxArrayString item;
582 item.Add( LIB_TREE_MODEL_ADAPTER::GetPinningSymbol() + nickname );
583 item.Add( tbl->GetDescription( nickname ) );
584 itemsToDisplay.push_back( item );
585 }
586 }
587
588 for( const wxString& nickname : libNicknames )
589 {
590 if( !alg::contains( project.m_PinnedSymbolLibs, nickname )
591 && !alg::contains( cfg->m_Session.pinned_symbol_libs, nickname ) )
592 {
593 wxArrayString item;
594 item.Add( nickname );
595 item.Add( tbl->GetDescription( nickname ) );
596 itemsToDisplay.push_back( item );
597 }
598 }
599
600 EDA_LIST_DIALOG* dlg = new EDA_LIST_DIALOG( this, _( "Save Symbol As" ), headers,
601 itemsToDisplay, aLibraryPreselect, false );
602
603 dlg->SetListLabel( _( "Save in library:" ) );
604 dlg->SetOKLabel( _( "Save" ) );
605
606 wxBoxSizer* bNameSizer = new wxBoxSizer( wxHORIZONTAL );
607
608 wxStaticText* label = new wxStaticText( dlg, wxID_ANY, _( "Name:" ) );
609 bNameSizer->Add( label, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 5 );
610
611 wxTextCtrl* nameTextCtrl = new wxTextCtrl( dlg, ID_SAVE_AS_NAME, aSymbolName );
612 bNameSizer->Add( nameTextCtrl, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
613
614 wxButton* newLibraryButton = new wxButton( dlg, ID_MAKE_NEW_LIBRARY, _( "New Library..." ) );
615 dlg->m_ButtonsSizer->Prepend( 80, 20 );
616 dlg->m_ButtonsSizer->Prepend( newLibraryButton, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 10 );
617
618 dlg->GetSizer()->Prepend( bNameSizer, 0, wxEXPAND|wxTOP|wxLEFT|wxRIGHT, 5 );
619
620 dlg->Bind( wxEVT_BUTTON,
621 [dlg]( wxCommandEvent& )
622 {
623 dlg->EndModal( ID_MAKE_NEW_LIBRARY );
625
626 // Move nameTextCtrl to the head of the tab-order
627 if( dlg->GetChildren().DeleteObject( nameTextCtrl ) )
628 dlg->GetChildren().Insert( nameTextCtrl );
629
630 dlg->SetInitialFocus( nameTextCtrl );
631
632 dlg->Layout();
633 dlg->GetSizer()->Fit( dlg );
634
635 return dlg;
636}
void SetInitialFocus(wxWindow *aWindow)
Sets the window (usually a wxTextCtrl) that should be focused when the dialog is shown.
Definition: dialog_shim.h:97
A dialog which shows:
void SetOKLabel(const wxString &aLabel)
void SetListLabel(const wxString &aLabel)
virtual PROJECT & Prj() const
Return the PROJECT associated with this KIWAY.
Definition: kiway.cpp:192
const wxString GetDescription(const wxString &aNickname)
std::vector< wxString > GetLogicalLibs()
Return the logical library names, all of them that are pertinent to a look up done on this LIB_TABLE.
static const wxString GetPinningSymbol()
The backing store for a PROJECT, in JSON format.
Definition: project_file.h:65
virtual PROJECT_FILE & GetProjectFile() const
Definition: project.h:149
bool contains(const _Container &__container, _Value __value)
Returns true if the container contains the given value.
Definition: kicad_algo.h:99
std::vector< wxString > pinned_symbol_libs
static int ID_MAKE_NEW_LIBRARY
static int ID_SAVE_AS_NAME

References _, alg::contains(), LIB_TABLE::GetDescription(), LIB_TABLE::GetLogicalLibs(), LIB_TREE_MODEL_ADAPTER::GetPinningSymbol(), PROJECT::GetProjectFile(), ID_MAKE_NEW_LIBRARY, ID_SAVE_AS_NAME, KIWAY_HOLDER::Kiway(), EDA_LIST_DIALOG_BASE::m_ButtonsSizer, COMMON_SETTINGS::m_Session, Pgm(), COMMON_SETTINGS::SESSION::pinned_symbol_libs, KIWAY::Prj(), KIWAY_HOLDER::Prj(), project, DIALOG_SHIM::SetInitialFocus(), EDA_LIST_DIALOG::SetListLabel(), and EDA_LIST_DIALOG::SetOKLabel().

Referenced by saveSymbolAs().

◆ CanCloseSymbolFromSchematic()

bool SYMBOL_EDIT_FRAME::CanCloseSymbolFromSchematic ( bool  doClose)

Definition at line 534 of file symbol_edit_frame.cpp.

535{
536 if( IsContentModified() )
537 {
538 SCH_EDIT_FRAME* schframe = (SCH_EDIT_FRAME*) Kiway().Player( FRAME_SCH, false );
539 wxString msg = _( "Save changes to '%s' before closing?" );
540
541 switch( UnsavedChangesDialog( this, wxString::Format( msg, m_reference ), nullptr ) )
542 {
543 case wxID_YES:
544 if( schframe && GetCurSymbol() ) // Should be always the case
546
547 break;
548
549 case wxID_NO:
550 break;
551
552 default:
553 case wxID_CANCEL:
554 return false;
555 }
556 }
557
558 if( doClose )
559 {
560 SetCurSymbol( nullptr, false );
561 updateTitle();
562 }
563
564 return true;
565}
virtual KIWAY_PLAYER * Player(FRAME_T aFrameType, bool doCreate=true, wxTopLevelWindow *aParent=nullptr)
Return the KIWAY_PLAYER* given a FRAME_T.
Definition: kiway.cpp:394
Schematic editor (Eeschema) main window.
void SaveSymbolToSchematic(const LIB_SYMBOL &aSymbol, const KIID &aSchematicSymbolUUID)
Update a schematic symbol from a LIB_SYMBOL.
void SetCurSymbol(LIB_SYMBOL *aSymbol, bool aUpdateZoom)
Take ownership of aSymbol and notes that it is the one currently being edited.
KIID m_schematicSymbolUUID
RefDes of the symbol (only valid if symbol was loaded from schematic)
LIB_SYMBOL * GetCurSymbol() const
Return the current symbol being edited or NULL if none selected.
bool IsContentModified() const override
Get if any symbols or libraries have been modified but not saved.
int UnsavedChangesDialog(wxWindow *parent, const wxString &aMessage, bool *aApplyToAll)
A specialized version of HandleUnsavedChanges which handles an apply-to-all checkbox.
Definition: confirm.cpp:197
@ FRAME_SCH
Definition: frame_type.h:34

References _, Format(), FRAME_SCH, GetCurSymbol(), IsContentModified(), KIWAY_HOLDER::Kiway(), m_reference, m_schematicSymbolUUID, KIWAY::Player(), SCH_EDIT_FRAME::SaveSymbolToSchematic(), SetCurSymbol(), UnsavedChangesDialog(), and updateTitle().

Referenced by canCloseWindow().

◆ canCloseWindow()

bool SYMBOL_EDIT_FRAME::canCloseWindow ( wxCloseEvent &  aCloseEvent)
overridevirtual

Reimplemented from EDA_BASE_FRAME.

Definition at line 568 of file symbol_edit_frame.cpp.

569{
570 // Shutdown blocks must be determined and vetoed as early as possible
572 && aEvent.GetId() == wxEVT_QUERY_END_SESSION
573 && IsContentModified() )
574 {
575 return false;
576 }
577
579 return false;
580
581 if( !saveAllLibraries( true ) )
582 return false;
583
584 // Save symbol tree column widths
585 m_libMgr->GetAdapter()->SaveSettings();
586
587 return true;
588}
wxObjectDataPtr< LIB_TREE_MODEL_ADAPTER > & GetAdapter()
Return the adapter object that provides the stored data.
bool CanCloseSymbolFromSchematic(bool doClose)
bool saveAllLibraries(bool aRequireConfirmation)
Save the current symbol.
bool SupportsShutdownBlockReason()
Whether or not the window supports setting a shutdown block reason.
Definition: gtk/app.cpp:72

References CanCloseSymbolFromSchematic(), LIB_SYMBOL_LIBRARY_MANAGER::GetAdapter(), IsContentModified(), m_isSymbolFromSchematic, m_libMgr, saveAllLibraries(), and KIPLATFORM::APP::SupportsShutdownBlockReason().

◆ centerItemIdleHandler()

void SYMBOL_EDIT_FRAME::centerItemIdleHandler ( wxIdleEvent &  aEvent)
private

Definition at line 208 of file symbol_editor.cpp.

209{
211 Unbind( wxEVT_IDLE, &SYMBOL_EDIT_FRAME::centerItemIdleHandler, this );
212}
void CenterLibId(const LIB_ID &aLibId)
Ensure that an item is visible (preferably centered).
Definition: lib_tree.cpp:236
void centerItemIdleHandler(wxIdleEvent &aEvent)
LIB_TREE * GetLibTree() const

References centerItemIdleHandler(), LIB_TREE::CenterLibId(), SYMBOL_TREE_PANE::GetLibTree(), m_centerItemOnIdle, and m_treePane.

Referenced by centerItemIdleHandler(), and LoadSymbol().

◆ ChangeUserUnits()

void EDA_BASE_FRAME::ChangeUserUnits ( EDA_UNITS  aUnits)
inherited

Definition at line 1352 of file eda_base_frame.cpp.

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

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

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

◆ CheckForAutoSaveFile()

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

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

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

Parameters
aFileNameA wxFileName object containing the file name to check.

Reimplemented in SCH_EDIT_FRAME.

Definition at line 1231 of file eda_base_frame.cpp.

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

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

Referenced by PCB_EDIT_FRAME::OpenProjectFiles().

◆ ClearFileHistory()

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

Removes all files from the file history.

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

Definition at line 969 of file eda_base_frame.cpp.

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

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

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

◆ ClearMsgPanel()

void SYMBOL_EDIT_FRAME::ClearMsgPanel ( )
inlineoverridevirtual

Clear all messages from the message panel.

Reimplemented from EDA_DRAW_FRAME.

Definition at line 240 of file symbol_edit_frame.h.

241 {
243 }

References UpdateSymbolMsgPanelInfo().

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 1400 of file symbol_edit_frame.cpp.

1401{
1402 if( aItemCount == 0 )
1403 return;
1404
1405 UNDO_REDO_CONTAINER& list = whichList == UNDO_LIST ? m_undoList : m_redoList;
1406
1407 for( PICKED_ITEMS_LIST* command : list.m_CommandsList )
1408 {
1409 command->ClearListAndDeleteItems( []( EDA_ITEM* aItem )
1410 {
1411 delete aItem;
1412 } );
1413 delete command;
1414 }
1415
1416 list.m_CommandsList.clear();
1417}
UNDO_REDO_CONTAINER m_undoList
UNDO_REDO_CONTAINER m_redoList
A base class for most all the KiCad significant classes used in schematics and boards.
Definition: eda_item.h:85
A holder to handle information on schematic or board items.
void ClearListAndDeleteItems(std::function< void(EDA_ITEM *)> aItemDeleter)
Delete the list of pickers AND the data pointed by #m_PickedItem or #m_PickedItemLink according to th...
A holder to handle a list of undo (or redo) commands.
std::vector< PICKED_ITEMS_LIST * > m_CommandsList

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 219 of file symbol_edit_frame.h.

220 {
221 // Generate a wxCloseEvent
222 Close( false );
223 }

◆ commonInit()

void EDA_BASE_FRAME::commonInit ( FRAME_T  aFrameType)
privateinherited

Collect common initialization functions used in all CTORs.

Definition at line 117 of file eda_base_frame.cpp.

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

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

Referenced by EDA_BASE_FRAME::EDA_BASE_FRAME().

◆ CommonSettingsChanged()

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

Called after the preferences dialog is run.

Reimplemented from SCH_BASE_FRAME.

Definition at line 1165 of file symbol_edit_frame.cpp.

1166{
1167 SCH_BASE_FRAME::CommonSettingsChanged( aEnvVarsChanged, aTextVarsChanged );
1168
1171
1173
1175
1176 if( m_symbol )
1178
1180
1182 GetCanvas()->Refresh();
1183
1185
1186 if( aEnvVarsChanged )
1187 SyncLibraries( true );
1188
1189 Layout();
1190 SendSizeEvent();
1191}
WINDOW_SETTINGS m_Window
Definition: app_settings.h:187
SETTINGS_MANAGER * GetSettingsManager() const
void RecreateToolbars()
Rebuild all toolbars, and update the checked state of check tools.
void ForceRefresh()
Force a redraw.
virtual void Refresh(bool aEraseBackground=true, const wxRect *aRect=nullptr) override
Update the board display after modifying it by a python script (note: it is automatically called by a...
void ReadWindowSettings(WINDOW_SETTINGS &aCfg)
Read GAL config options from application-level config.
void UpdateAllItems(int aUpdateFlags)
Update all items in the view according to the given flags.
Definition: view.cpp:1484
void ClearCaches()
Definition: lib_symbol.cpp:523
void CommonSettingsChanged(bool aEnvVarsChanged, bool aTextVarsChanged) override
Notification event that some of the common (suite-wide) settings have changed.
T * GetAppSettings(bool aLoadNow=true)
Returns a handle to the a given settings by type If the settings have already been loaded,...
@ ALL
All except INITIAL_ADD.
Definition: view_item.h:53

References KIGFX::ALL, LIB_SYMBOL::ClearCaches(), SCH_BASE_FRAME::CommonSettingsChanged(), EDA_DRAW_PANEL_GAL::ForceRefresh(), SETTINGS_MANAGER::GetAppSettings(), SCH_BASE_FRAME::GetCanvas(), EDA_DRAW_FRAME::GetGalDisplayOptions(), SCH_BASE_FRAME::GetRenderSettings(), EDA_BASE_FRAME::GetSettingsManager(), SCH_DRAW_PANEL::GetView(), SYMBOL_EDITOR_SETTINGS::m_ShowPinElectricalType, KIGFX::SCH_RENDER_SETTINGS::m_ShowPinsElectricalType, m_symbol, APP_SETTINGS_BASE::m_Window, KIGFX::GAL_DISPLAY_OPTIONS::ReadWindowSettings(), EDA_DRAW_FRAME::RecreateToolbars(), EDA_DRAW_PANEL_GAL::Refresh(), SyncLibraries(), and KIGFX::VIEW::UpdateAllItems().

◆ 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 312 of file symbol_edit_frame.cpp.

313{
314 return static_cast<APP_SETTINGS_BASE*>( GetSettings() );
315}
APP_SETTINGS_BASE is a settings class that should be derived for each standalone KiCad application.
Definition: app_settings.h:110
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 350 of file eda_base_frame.h.

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

References EDA_BASE_FRAME::m_configName.

◆ CopySymbolToClipboard()

void SYMBOL_EDIT_FRAME::CopySymbolToClipboard ( )

Definition at line 815 of file symbol_editor.cpp.

816{
817 std::vector<LIB_ID> symbols;
818
819 if( GetTreeLIBIDs( symbols ) == 0 )
820 return;
821
822 STRING_FORMATTER formatter;
823
824 for( LIB_ID& libId : symbols )
825 {
826 LIB_SYMBOL* symbol = m_libMgr->GetBufferedSymbol( libId.GetLibItemName(),
827 libId.GetLibNickname() );
828
829 if( !symbol )
830 continue;
831
832 std::unique_ptr<LIB_SYMBOL> tmp = symbol->Flatten();
833 SCH_SEXPR_PLUGIN::FormatLibSymbol( tmp.get(), formatter );
834 }
835
836 wxLogNull doNotLog; // disable logging of failed clipboard actions
837
838 auto clipboard = wxTheClipboard;
839 wxClipboardLocker clipboardLock( clipboard );
840
841 if( !clipboardLock || !clipboard->IsOpened() )
842 return;
843
844 auto data = new wxTextDataObject( wxString( formatter.GetString().c_str(), wxConvUTF8 ) );
845 clipboard->SetData( data );
846
847 clipboard->Flush();
848}
A logical library item identifier and consists of various portions much like a URI.
Definition: lib_id.h:49
Define a library symbol object.
Definition: lib_symbol.h:99
std::unique_ptr< LIB_SYMBOL > Flatten() const
Return a flattened symbol inheritance to the caller.
Definition: lib_symbol.cpp:453
static void FormatLibSymbol(LIB_SYMBOL *aPart, OUTPUTFORMATTER &aFormatter)
Implement an OUTPUTFORMATTER to a memory buffer.
Definition: richio.h:415
const std::string & GetString()
Definition: richio.h:438
int GetTreeLIBIDs(std::vector< LIB_ID > &aSelection) const
LIB_SYMBOL * GetBufferedSymbol(const wxString &aAlias, const wxString &aLibrary)
Return the symbol copy from the buffer.

References LIB_SYMBOL::Flatten(), SCH_SEXPR_PLUGIN::FormatLibSymbol(), SYMBOL_LIBRARY_MANAGER::GetBufferedSymbol(), STRING_FORMATTER::GetString(), GetTreeLIBIDs(), and m_libMgr.

Referenced by SYMBOL_EDITOR_CONTROL::CutCopyDelete().

◆ createCanvas()

void SCH_BASE_FRAME::createCanvas ( )
inherited

Definition at line 338 of file sch_base_frame.cpp.

339{
341
342 SetCanvas( new SCH_DRAW_PANEL( this, wxID_ANY, wxPoint( 0, 0 ), m_frameSize,
345}
void SetCanvas(EDA_DRAW_PANEL_GAL *aPanel)
EDA_DRAW_PANEL_GAL::GAL_TYPE loadCanvasTypeSetting()
Returns the canvas type stored in the application settings.
void ActivateGalCanvas() override
Use to start up the GAL drawing canvas.

References SCH_BASE_FRAME::ActivateGalCanvas(), 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 834 of file eda_base_frame.cpp.

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

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

Referenced by SYMBOL_VIEWER_FRAME::SYMBOL_VIEWER_FRAME().

◆ CreateNewSymbol()

void SYMBOL_EDIT_FRAME::CreateNewSymbol ( const wxString &  inheritFromSymbolName = wxEmptyString)

Create a new symbol in the selected library.

Definition at line 327 of file symbol_editor.cpp.

328{
330
331 wxArrayString rootSymbols;
332 wxString lib = getTargetLib();
333
334 if( !m_libMgr->LibraryExists( lib ) )
335 {
336 lib = SelectLibraryFromList();
337
338 if( !m_libMgr->LibraryExists( lib ) )
339 return;
340 }
341
342 m_libMgr->GetRootSymbolNames( lib, rootSymbols );
343
344 rootSymbols.Sort();
345
346 wxString _inheritSymbolName;
347 wxString _infoMessage;
348
349 // if the symbol being inherited from isn't a root symbol, find its root symbol
350 // and use that symbol instead
351 if( !inheritFromSymbolName.IsEmpty() )
352 {
353 LIB_SYMBOL* inheritFromSymbol = m_libMgr->GetBufferedSymbol( inheritFromSymbolName, lib );
354
355 if( inheritFromSymbol && !inheritFromSymbol->IsRoot() )
356 {
357 std::shared_ptr<LIB_SYMBOL> parent = inheritFromSymbol->GetParent().lock();
358 wxString rootSymbolName = parent->GetName();
359 _inheritSymbolName = rootSymbolName;
360 _infoMessage = wxString::Format( _( "Deriving from '%s', the root symbol of '%s'." ),
361 _inheritSymbolName,
362 inheritFromSymbolName);
363 }
364 else
365 {
366 _inheritSymbolName = inheritFromSymbolName;
367 }
368 }
369
370 DIALOG_LIB_NEW_SYMBOL dlg( this, _infoMessage, &rootSymbols, _inheritSymbolName );
371 dlg.SetMinSize( dlg.GetSize() );
372
373 if( dlg.ShowModal() == wxID_CANCEL )
374 return;
375
376 if( dlg.GetName().IsEmpty() )
377 {
378 wxMessageBox( _( "This new symbol has no name and cannot be created." ) );
379 return;
380 }
381
382 wxString name = dlg.GetName();
383
384 // Currently, symbol names cannot include a space, that breaks libraries:
385 name.Replace( " ", "_" );
386
387 // Test if there is a symbol with this name already.
388 if( !lib.empty() && m_libMgr->SymbolExists( name, lib ) )
389 {
390 wxString msg = wxString::Format( _( "Symbol '%s' already exists in library '%s'." ),
391 name,
392 lib );
393
394 KIDIALOG errorDlg( this, msg, _( "Confirmation" ), wxOK | wxCANCEL | wxICON_WARNING );
395 errorDlg.SetOKLabel( _( "Overwrite" ) );
396 errorDlg.DoNotShowCheckbox( __FILE__, __LINE__ );
397
398 if( errorDlg.ShowModal() == wxID_CANCEL )
399 return;
400 }
401
402 LIB_SYMBOL new_symbol( name ); // do not create symbol on the heap, it will be buffered soon
403
404 wxString parentSymbolName = dlg.GetParentSymbolName();
405
406 if( parentSymbolName.IsEmpty() )
407 {
408 new_symbol.GetReferenceField().SetText( dlg.GetReference() );
409 new_symbol.SetUnitCount( dlg.GetUnitCount() );
410
411 // Initialize new_symbol.m_TextInside member:
412 // if 0, pin text is outside the body (on the pin)
413 // if > 0, pin text is inside the body
414 if( dlg.GetPinNameInside() )
415 {
416 new_symbol.SetPinNameOffset( dlg.GetPinTextPosition() );
417
418 if( new_symbol.GetPinNameOffset() == 0 )
419 new_symbol.SetPinNameOffset( 1 );
420 }
421 else
422 {
423 new_symbol.SetPinNameOffset( 0 );
424 }
425
426 ( dlg.GetPowerSymbol() ) ? new_symbol.SetPower() : new_symbol.SetNormal();
427 new_symbol.SetShowPinNumbers( dlg.GetShowPinNumber() );
428 new_symbol.SetShowPinNames( dlg.GetShowPinName() );
429 new_symbol.LockUnits( !dlg.GetUnitsInterchangeable() );
430 new_symbol.SetIncludeInBom( dlg.GetIncludeInBom() );
431 new_symbol.SetIncludeOnBoard( dlg.GetIncludeOnBoard() );
432
433 if( dlg.GetUnitCount() < 2 )
434 new_symbol.LockUnits( false );
435
436 new_symbol.SetConversion( dlg.GetAlternateBodyStyle() );
437 }
438 else
439 {
440 LIB_SYMBOL* parent = m_libMgr->GetAlias( parentSymbolName, lib );
441 wxCHECK( parent, /* void */ );
442 new_symbol.SetParent( parent );
443
444 // Inherit the parent mandatory field attributes.
445 for( int id = 0; id < MANDATORY_FIELDS; ++id )
446 {
447 LIB_FIELD* field = new_symbol.GetFieldById( id );
448
449 // the MANDATORY_FIELDS are exactly that in RAM.
450 wxCHECK( field, /* void */ );
451
452 LIB_FIELD* parentField = parent->GetFieldById( id );
453
454 wxCHECK( parentField, /* void */ );
455
456 *field = *parentField;
457
458 switch( id )
459 {
460 case REFERENCE_FIELD:
461 // parent's reference already copied
462 break;
463
464 case VALUE_FIELD:
465 if( parent->IsPower() )
466 field->SetText( name );
467 break;
468
469 case FOOTPRINT_FIELD:
470 case DATASHEET_FIELD:
471 // - footprint might be the same as parent, but might not
472 // - datasheet is most likely different
473 // - probably best to play it safe and copy neither
474 field->SetText( wxEmptyString );
475 break;
476 }
477
478 field->SetParent( &new_symbol );
479 }
480 }
481
482 m_libMgr->UpdateSymbol( &new_symbol, lib );
483 SyncLibraries( false );
484 LoadSymbol( name, lib, 1 );
485
486 // must be called after loadSymbol, that calls SetShowDeMorgan, but
487 // because the symbol is empty,it looks like it has no alternate body
488 SetShowDeMorgan( dlg.GetAlternateBodyStyle() );
489}
const char * name
Definition: DXF_plotter.cpp:56
static TOOL_ACTION cancelInteractive
Definition: actions.h:63
virtual void SetParent(EDA_ITEM *aParent)
Definition: eda_item.h:100
virtual void SetText(const wxString &aText)
Definition: eda_text.cpp:165
Helper class to create more flexible dialogs, including 'do not show again' checkbox handling.
Definition: confirm.h:46
Field object used in symbol libraries.
Definition: lib_field.h:61
bool IsRoot() const override
For symbols derived from other symbols, IsRoot() indicates no derivation.
Definition: lib_symbol.h:187
LIB_FIELD * GetFieldById(int aId) const
Return pointer to the requested field.
bool IsPower() const
Definition: lib_symbol.cpp:545
LIB_SYMBOL_REF & GetParent()
Definition: lib_symbol.h:127
wxString SelectLibraryFromList()
Display a list of loaded libraries and allows the user to select a library.
wxString getTargetLib() const
void LoadSymbol(const wxString &aLibrary, const wxString &aSymbol, int Unit)
LIB_SYMBOL * GetAlias(const wxString &aAlias, const wxString &aLibrary) const
Return either an alias of a working LIB_SYMBOL copy, or alias of the original symbol if there is no w...
void GetRootSymbolNames(const wxString &aLibName, wxArrayString &aRootSymbolNames)
bool SymbolExists(const wxString &aAlias, const wxString &aLibrary) const
Return true if symbol with a specific alias exists in library (either original one or buffered).
bool UpdateSymbol(LIB_SYMBOL *aSymbol, const wxString &aLibrary)
Update the symbol buffer with a new version of the symbol.
@ DATASHEET_FIELD
name of datasheet
@ FOOTPRINT_FIELD
Field Name Module PCB, i.e. "16DIP300".
@ VALUE_FIELD
Field Value of part, i.e. "3.3K".
@ MANDATORY_FIELDS
The first 4 are mandatory, and must be instantiated in SCH_COMPONENT and LIB_PART constructors.
@ REFERENCE_FIELD
Field Reference of part, i.e. "IC21".

References _, ACTIONS::cancelInteractive, DATASHEET_FIELD, KIDIALOG::DoNotShowCheckbox(), FOOTPRINT_FIELD, Format(), SYMBOL_LIBRARY_MANAGER::GetAlias(), DIALOG_LIB_NEW_SYMBOL::GetAlternateBodyStyle(), SYMBOL_LIBRARY_MANAGER::GetBufferedSymbol(), LIB_SYMBOL::GetFieldById(), DIALOG_LIB_NEW_SYMBOL::GetIncludeInBom(), DIALOG_LIB_NEW_SYMBOL::GetIncludeOnBoard(), DIALOG_LIB_NEW_SYMBOL::GetName(), LIB_SYMBOL::GetParent(), DIALOG_LIB_NEW_SYMBOL::GetParentSymbolName(), DIALOG_LIB_NEW_SYMBOL::GetPinNameInside(), LIB_SYMBOL::GetPinNameOffset(), DIALOG_LIB_NEW_SYMBOL::GetPinTextPosition(), DIALOG_LIB_NEW_SYMBOL::GetPowerSymbol(), DIALOG_LIB_NEW_SYMBOL::GetReference(), LIB_SYMBOL::GetReferenceField(), SYMBOL_LIBRARY_MANAGER::GetRootSymbolNames(), DIALOG_LIB_NEW_SYMBOL::GetShowPinName(), DIALOG_LIB_NEW_SYMBOL::GetShowPinNumber(), getTargetLib(), DIALOG_LIB_NEW_SYMBOL::GetUnitCount(), DIALOG_LIB_NEW_SYMBOL::GetUnitsInterchangeable(), LIB_SYMBOL::IsPower(), LIB_SYMBOL::IsRoot(), SYMBOL_LIBRARY_MANAGER::LibraryExists(), LoadSymbol(), LIB_SYMBOL::LockUnits(), m_libMgr, TOOLS_HOLDER::m_toolManager, MANDATORY_FIELDS, name, REFERENCE_FIELD, TOOL_MANAGER::RunAction(), SCH_BASE_FRAME::SelectLibraryFromList(), LIB_SYMBOL::SetConversion(), LIB_SYMBOL::SetIncludeInBom(), LIB_SYMBOL::SetIncludeOnBoard(), LIB_SYMBOL::SetNormal(), EDA_ITEM::SetParent(), LIB_SYMBOL::SetParent(), LIB_SYMBOL::SetPinNameOffset(), LIB_SYMBOL::SetPower(), SetShowDeMorgan(), LIB_SYMBOL::SetShowPinNames(), LIB_SYMBOL::SetShowPinNumbers(), EDA_TEXT::SetText(), LIB_SYMBOL::SetUnitCount(), KIDIALOG::ShowModal(), SYMBOL_LIBRARY_MANAGER::SymbolExists(), SyncLibraries(), SYMBOL_LIBRARY_MANAGER::UpdateSymbol(), and VALUE_FIELD.

Referenced by SYMBOL_EDITOR_CONTROL::AddSymbol().

◆ CreateServer()

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

Definition at line 43 of file eda_dde.cpp.

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

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

◆ CurrentToolName()

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

Definition at line 110 of file tools_holder.cpp.

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

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

Referenced by TOOLS_HOLDER::ShowChangedLanguage().

◆ DdAddLibrary()

void SYMBOL_EDIT_FRAME::DdAddLibrary ( wxString  aLibFile)

Add a library dropped file to the symbol library table.

Definition at line 915 of file symbol_edit_frame.cpp.

916{
917 // Select the target library table (global/project)
919
920 if( !libTable )
921 return;
922
923 wxFileName fn = wxFileName( aLibFile );
924
925 wxString libName = fn.GetName();
926
927 if( libName.IsEmpty() )
928 return;
929
930 if( m_libMgr->LibraryExists( libName ) )
931 {
932 DisplayError( this, wxString::Format( _( "Library '%s' already exists." ), libName ) );
933 return;
934 }
935
936 if( !m_libMgr->AddLibrary( fn.GetFullPath(), libTable ) )
937 {
938 DisplayError( this, _( "Could not open the library file." ) );
939 return;
940 }
941
942 bool globalTable = ( libTable == &SYMBOL_LIB_TABLE::GetGlobalLibTable() );
943 saveSymbolLibTables( globalTable, !globalTable );
944
945 std::string packet = fn.GetFullPath().ToStdString();
947}

References _, SYMBOL_LIBRARY_MANAGER::AddLibrary(), DisplayError(), KIWAY::ExpressMail(), Format(), FRAME_SCH_SYMBOL_EDITOR, SYMBOL_LIB_TABLE::GetGlobalLibTable(), KIWAY_HOLDER::Kiway(), SYMBOL_LIBRARY_MANAGER::LibraryExists(), m_libMgr, MAIL_LIB_EDIT, SCH_BASE_FRAME::saveSymbolLibTables(), and SCH_BASE_FRAME::SelectSymLibTable().

Referenced by SYMBOL_EDITOR_CONTROL::DdAddLibrary().

◆ DeleteSymbolFromLibrary()

void SYMBOL_EDIT_FRAME::DeleteSymbolFromLibrary ( )

Definition at line 767 of file symbol_editor.cpp.

768{
769 std::vector<LIB_ID> toDelete = GetSelectedLibIds();
770
771 if( toDelete.empty() )
772 toDelete.emplace_back( GetTargetLibId() );
773
774 for( LIB_ID& libId : toDelete )
775 {
776 if( m_libMgr->IsSymbolModified( libId.GetLibItemName(), libId.GetLibNickname() )
777 && !IsOK( this, wxString::Format( _( "The symbol '%s' has been modified.\n"
778 "Do you want to remove it from the library?" ),
779 libId.GetUniStringLibItemName() ) ) )
780 {
781 continue;
782 }
783
784 if( m_libMgr->HasDerivedSymbols( libId.GetLibItemName(), libId.GetLibNickname() ) )
785 {
786 wxString msg;
787
788 msg.Printf(
789 _( "The symbol %s is used to derive other symbols.\n"
790 "Deleting this symbol will delete all of the symbols derived from it.\n\n"
791 "Do you wish to delete this symbol and all of its derivatives?" ),
792 libId.GetLibItemName().wx_str() );
793
794 wxMessageDialog::ButtonLabel yesButtonLabel( _( "Delete Symbol" ) );
795 wxMessageDialog::ButtonLabel noButtonLabel( _( "Keep Symbol" ) );
796
797 wxMessageDialog dlg( this, msg, _( "Warning" ),
798 wxYES_NO | wxYES_DEFAULT | wxICON_QUESTION | wxCENTER );
799 dlg.SetYesNoLabels( yesButtonLabel, noButtonLabel );
800
801 if( dlg.ShowModal() == wxID_NO )
802 continue;
803 }
804
805 if( IsCurrentSymbol( libId ) )
806 emptyScreen();
807
808 m_libMgr->RemoveSymbol( libId.GetLibItemName(), libId.GetLibNickname() );
809 }
810
812}
void RefreshLibTree()
Refreshes the tree (mainly to update highlighting and asterisking)
Definition: lib_tree.cpp:313
bool IsCurrentSymbol(const LIB_ID &aLibId) const
Restore the empty editor screen, without any symbol or library selected.
LIB_ID GetTargetLibId() const
Return either the symbol selected in the symbol tree (if context menu is active) or the symbol on the...
std::vector< LIB_ID > GetSelectedLibIds() const
bool RemoveSymbol(const wxString &aName, const wxString &aLibrary)
Remove the symbol from the symbol buffer.
bool IsSymbolModified(const wxString &aAlias, const wxString &aLibrary) const
Return true if symbol has unsaved modifications.
bool HasDerivedSymbols(const wxString &aSymbolName, const wxString &aLibraryName)
Check if symbol aSymbolName in library aLibraryName is a root symbol that has derived symbols.
bool IsOK(wxWindow *aParent, const wxString &aMessage)
Display a yes/no dialog with aMessage and returns the user response.
Definition: confirm.cpp:380

References _, emptyScreen(), Format(), SYMBOL_TREE_PANE::GetLibTree(), GetSelectedLibIds(), GetTargetLibId(), SYMBOL_LIBRARY_MANAGER::HasDerivedSymbols(), IsCurrentSymbol(), IsOK(), SYMBOL_LIBRARY_MANAGER::IsSymbolModified(), m_libMgr, m_treePane, LIB_TREE::RefreshLibTree(), and SYMBOL_LIBRARY_MANAGER::RemoveSymbol().

Referenced by SYMBOL_EDITOR_CONTROL::CutCopyDelete().

◆ Destroy()

◆ DismissModal()

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

Definition at line 183 of file kiway_player.cpp.

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

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

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

◆ DisplayConstraintsMsg()

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

Definition at line 598 of file eda_draw_frame.cpp.

599{
600 SetStatusText( msg, 7 );
601}

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

◆ DisplayGridMsg()

void EDA_DRAW_FRAME::DisplayGridMsg ( )
virtualinherited

Display current grid size in the status bar.

Reimplemented in GERBVIEW_FRAME, PCB_BASE_FRAME, and PL_EDITOR_FRAME.

Definition at line 604 of file eda_draw_frame.cpp.

605{
606 wxString msg;
607
608 msg.Printf( wxS( "grid %s" ), MessageTextFromValue( GetCanvas()->GetGAL()->GetGridSize().x,
609 false ) );
610
611 SetStatusText( msg, 4 );
612}
virtual EDA_DRAW_PANEL_GAL * GetCanvas() const
Return a pointer to GAL-based canvas of given EDA draw frame.
wxString MessageTextFromValue(double aValue, bool aAddUnitLabel=true, EDA_DATA_TYPE aType=EDA_DATA_TYPE::DISTANCE)
A lower-precision version of StringFromValue().

References EDA_DRAW_FRAME::GetCanvas(), and UNITS_PROVIDER::MessageTextFromValue().

Referenced by SCH_BASE_FRAME::UpdateStatusBar().

◆ DisplayToolMsg()

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

Reimplemented from TOOLS_HOLDER.

Definition at line 592 of file eda_draw_frame.cpp.

593{
594 SetStatusText( msg, 6 );
595}

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

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

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

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

◆ doAutoSave()

bool EDA_BASE_FRAME::doAutoSave ( )
protectedvirtualinherited

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

Returns
true if the auto save was successful otherwise false.

Reimplemented in SCH_EDIT_FRAME, and PCB_EDIT_FRAME.

Definition at line 318 of file eda_base_frame.cpp.

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

Referenced by EDA_BASE_FRAME::onAutoSaveTimer().

◆ doCloseWindow()

void SYMBOL_EDIT_FRAME::doCloseWindow ( )
overridevirtual

Reimplemented from EDA_BASE_FRAME.

Definition at line 591 of file symbol_edit_frame.cpp.

592{
593 Destroy();
594}
bool Destroy() override
Our version of Destroy() which is virtual from wxWidgets.

References KIWAY_PLAYER::Destroy().

◆ doReCreateMenuBar()

void SYMBOL_EDIT_FRAME::doReCreateMenuBar ( )
overrideprotectedvirtual

Reimplemented from EDA_BASE_FRAME.

Definition at line 37 of file menubar_symbol_editor.cpp.

38{
40 // wxWidgets handles the Mac Application menu behind the scenes, but that means
41 // we always have to start from scratch with a new wxMenuBar.
42 wxMenuBar* oldMenuBar = GetMenuBar();
43 WX_MENUBAR* menuBar = new WX_MENUBAR();
44
45 //-- File menu -----------------------------------------------
46 //
47 ACTION_MENU* fileMenu = new ACTION_MENU( false, selTool );
48
49 fileMenu->Add( ACTIONS::newLibrary );
50 fileMenu->Add( ACTIONS::addLibrary );
51 fileMenu->Add( EE_ACTIONS::saveLibraryAs );
52 fileMenu->Add( EE_ACTIONS::newSymbol );
53
54 fileMenu->AppendSeparator();
55 fileMenu->Add( ACTIONS::save );
56 fileMenu->Add( EE_ACTIONS::saveSymbolAs );
57
59 fileMenu->Add( ACTIONS::saveAll );
60
61 fileMenu->Add( ACTIONS::revert );
62
63 fileMenu->AppendSeparator();
64 fileMenu->Add( EE_ACTIONS::importSymbol );
65
66 // Export submenu
67 ACTION_MENU* submenuExport = new ACTION_MENU( false, selTool );
68 submenuExport->SetTitle( _( "Export" ) );
69 submenuExport->SetIcon( BITMAPS::export_file );
70 submenuExport->Add( EE_ACTIONS::exportSymbol, ACTION_MENU::NORMAL, _( "Symbol..." ) );
71 submenuExport->Add( EE_ACTIONS::exportSymbolView, ACTION_MENU::NORMAL, _( "View as PNG..." ) );
72 submenuExport->Add( EE_ACTIONS::exportSymbolAsSVG, ACTION_MENU::NORMAL, _( "Symbol as SVG..." ) );
73 fileMenu->Add( submenuExport );
74
75 fileMenu->AppendSeparator();
77
78 fileMenu->AppendSeparator();
79 fileMenu->AddClose( _( "Library Editor" ) );
80
81
82 //-- Edit menu -----------------------------------------------
83 //
84 ACTION_MENU* editMenu = new ACTION_MENU( false, selTool );
85
86 editMenu->Add( ACTIONS::undo );
87 editMenu->Add( ACTIONS::redo );
88
89 editMenu->AppendSeparator();
90 editMenu->Add( ACTIONS::cut );
91 editMenu->Add( ACTIONS::copy );
92 editMenu->Add( ACTIONS::paste );
93 editMenu->Add( ACTIONS::doDelete );
94 editMenu->Add( ACTIONS::duplicate );
95
96 editMenu->AppendSeparator();
97 editMenu->Add( ACTIONS::selectAll );
98
99 editMenu->AppendSeparator();
100 editMenu->Add( EE_ACTIONS::pinTable );
103
104
105 //-- View menu -----------------------------------------------
106 //
107 ACTION_MENU* viewMenu = new ACTION_MENU( false, selTool );
108
109 viewMenu->Add( ACTIONS::showSymbolBrowser );
110
111 viewMenu->AppendSeparator();
112 viewMenu->Add( ACTIONS::zoomInCenter );
113 viewMenu->Add( ACTIONS::zoomOutCenter );
114 viewMenu->Add( ACTIONS::zoomFitScreen );
115 viewMenu->Add( ACTIONS::zoomTool );
116 viewMenu->Add( ACTIONS::zoomRedraw );
117
118 viewMenu->AppendSeparator();
120 viewMenu->Add( ACTIONS::gridProperties );
121
122 // Units submenu
123 ACTION_MENU* unitsSubMenu = new ACTION_MENU( false, selTool );
124 unitsSubMenu->SetTitle( _( "&Units" ) );
125 unitsSubMenu->SetIcon( BITMAPS::unit_mm );
127 unitsSubMenu->Add( ACTIONS::milsUnits, ACTION_MENU::CHECK );
129 viewMenu->Add( unitsSubMenu );
130
132
133 viewMenu->AppendSeparator();
135
136
137 //-- Place menu -----------------------------------------------
138 //
139 ACTION_MENU* placeMenu = new ACTION_MENU( false, selTool );
140
141 placeMenu->Add( EE_ACTIONS::placeSymbolPin );
142 placeMenu->Add( EE_ACTIONS::placeSymbolText );
144 placeMenu->Add( EE_ACTIONS::drawRectangle );
145 placeMenu->Add( EE_ACTIONS::drawCircle );
146 placeMenu->Add( EE_ACTIONS::drawArc );
147 placeMenu->Add( EE_ACTIONS::drawSymbolLines );
148
149
150 //-- Inspect menu -----------------------------------------------
151 //
152 ACTION_MENU* inspectMenu = new ACTION_MENU( false, selTool );
153
154 inspectMenu->Add( EE_ACTIONS::showDatasheet );
155
156 inspectMenu->AppendSeparator();
157 inspectMenu->Add( EE_ACTIONS::checkSymbol );
158
159
160 //-- Preferences menu -----------------------------------------------
161 //
162 ACTION_MENU* prefsMenu = new ACTION_MENU( false, selTool );
163
164 prefsMenu->Add( ACTIONS::configurePaths );
165 prefsMenu->Add( ACTIONS::showSymbolLibTable );
166
167 // We can't use ACTIONS::showPreferences yet because wxWidgets moves this on
168 // Mac, and it needs the wxID_PREFERENCES id to find it.
169 prefsMenu->Add( _( "Preferences..." ) + "\tCtrl+,",
170 _( "Show preferences for all open tools" ),
171 wxID_PREFERENCES,
173
174 prefsMenu->AppendSeparator();
175 AddMenuLanguageList( prefsMenu, selTool );
176
177
178 //-- Menubar -------------------------------------------------------------
179 //
180 menuBar->Append( fileMenu, _( "&File" ) );
181 menuBar->Append( editMenu, _( "&Edit" ) );
182 menuBar->Append( viewMenu, _( "&View" ) );
183 menuBar->Append( placeMenu, _( "&Place" ) );
184 menuBar->Append( inspectMenu, _( "&Inspect" ) );
185 menuBar->Append( prefsMenu, _( "P&references" ) );
186 AddStandardHelpMenu( menuBar );
187
188 SetMenuBar( menuBar );
189 delete oldMenuBar;
190}
static TOOL_ACTION gridProperties
Definition: actions.h:145
static TOOL_ACTION toggleGrid
Definition: actions.h:144
static TOOL_ACTION paste
Definition: actions.h:69
static TOOL_ACTION zoomRedraw
Definition: actions.h:93
static TOOL_ACTION millimetersUnits
Definition: actions.h:150
static TOOL_ACTION revert
Definition: actions.h:55
static TOOL_ACTION zoomOutCenter
Definition: actions.h:97
static TOOL_ACTION addLibrary
Definition: actions.h:49
static TOOL_ACTION copy
Definition: actions.h:68
static TOOL_ACTION showSymbolLibTable
Definition: actions.h:181
static TOOL_ACTION showSymbolBrowser
Definition: actions.h:164
static TOOL_ACTION milsUnits
Definition: actions.h:149
static TOOL_ACTION saveAll
Definition: actions.h:54
static TOOL_ACTION undo
Definition: actions.h:65
static TOOL_ACTION duplicate
Definition: actions.h:72
static TOOL_ACTION inchesUnits
Definition: actions.h:148
static TOOL_ACTION toggleCursorStyle
Definition: actions.h:105
static TOOL_ACTION doDelete
Definition: actions.h:73
static TOOL_ACTION save
Definition: actions.h:51
static TOOL_ACTION redo
Definition: actions.h:66
static TOOL_ACTION zoomTool
Definition: actions.h:102
static TOOL_ACTION zoomInCenter
Definition: actions.h:96
static TOOL_ACTION newLibrary
Definition: actions.h:48
static TOOL_ACTION cut
Definition: actions.h:67
static TOOL_ACTION configurePaths
Definition: actions.h:180
static TOOL_ACTION selectAll
Definition: actions.h:71
static constexpr bool CHECK
Definition: action_menu.h:189
void AddClose(const wxString &aAppname="")
Add a standard close item to the menu with the accelerator key CTRL-W.
void SetTitle(const wxString &aTitle) override
Set title for the menu.
Definition: action_menu.cpp:87
static constexpr bool NORMAL
Definition: action_menu.h:188
void SetIcon(BITMAPS aIcon)
Assign an icon for the entry.
Definition: action_menu.cpp:73
wxMenuItem * Add(const wxString &aLabel, int aId, BITMAPS aIcon)
Add a wxWidgets-style entry to the menu.
void AddStandardHelpMenu(wxMenuBar *aMenuBar)
Adds the standard KiCad help menu to the menubar.
static TOOL_ACTION pinTable
Definition: ee_actions.h:155
static TOOL_ACTION saveSymbolAs
Definition: ee_actions.h:182
static TOOL_ACTION newSymbol
Definition: ee_actions.h:183
static TOOL_ACTION drawCircle
Definition: ee_actions.h:96
static TOOL_ACTION saveLibraryAs
Definition: ee_actions.h:181
static TOOL_ACTION placeSymbolText
Definition: ee_actions.h:110
static TOOL_ACTION exportSymbolAsSVG
Definition: ee_actions.h:233
static TOOL_ACTION importSymbol
Definition: ee_actions.h:192
static TOOL_ACTION showDatasheet
Inspection and Editing.
Definition: ee_actions.h:149
static TOOL_ACTION symbolProperties
Definition: ee_actions.h:154
static TOOL_ACTION checkSymbol
Definition: ee_actions.h:164
static TOOL_ACTION drawRectangle
Definition: ee_actions.h:95
static TOOL_ACTION setUnitDisplayName
Definition: ee_actions.h:195
static TOOL_ACTION drawSymbolTextBox
Definition: ee_actions.h:111
static TOOL_ACTION drawSymbolLines
Definition: ee_actions.h:112
static TOOL_ACTION drawArc
Definition: ee_actions.h:97
static TOOL_ACTION exportSymbol
Definition: ee_actions.h:193
static TOOL_ACTION showSymbolTree
Definition: ee_actions.h:229
static TOOL_ACTION updateSymbolFields
Definition: ee_actions.h:194
static TOOL_ACTION exportSymbolView
Definition: ee_actions.h:232
static TOOL_ACTION placeSymbolPin
Definition: ee_actions.h:109
Wrapper around a wxMenuBar object that prevents the accelerator table from being used.
Definition: wx_menubar.h:46
void AddMenuLanguageList(ACTION_MENU *aMasterMenu, TOOL_INTERACTIVE *aControlTool)
Function AddMenuLanguageList creates a menu list for language choice, and add it as submenu to Master...

References _, ACTION_MENU::Add(), ACTION_MENU::AddClose(), ACTIONS::addLibrary, AddMenuLanguageList(), EDA_BASE_FRAME::AddStandardHelpMenu(), ACTION_MENU::CHECK, EE_ACTIONS::checkSymbol, ACTIONS::configurePaths, ACTIONS::copy, ACTIONS::cut, ACTIONS::doDelete, EE_ACTIONS::drawArc, EE_ACTIONS::drawCircle, EE_ACTIONS::drawRectangle, EE_ACTIONS::drawSymbolLines, EE_ACTIONS::drawSymbolTextBox, ACTIONS::duplicate, export_file, EE_ACTIONS::exportSymbol, EE_ACTIONS::exportSymbolAsSVG, EE_ACTIONS::exportSymbolView, TOOL_MANAGER::GetTool(), ACTIONS::gridProperties, EE_ACTIONS::importSymbol, ACTIONS::inchesUnits, IsSymbolFromSchematic(), TOOLS_HOLDER::m_toolManager, ACTIONS::millimetersUnits, ACTIONS::milsUnits, ACTIONS::newLibrary, EE_ACTIONS::newSymbol, ACTION_MENU::NORMAL, ACTIONS::paste, EE_ACTIONS::pinTable, EE_ACTIONS::placeSymbolPin, EE_ACTIONS::placeSymbolText, preference, ACTIONS::redo, ACTIONS::revert, ACTIONS::save, ACTIONS::saveAll, EE_ACTIONS::saveLibraryAs, EE_ACTIONS::saveSymbolAs, ACTIONS::selectAll, ACTION_MENU::SetIcon(), ACTION_MENU::SetTitle(), EE_ACTIONS::setUnitDisplayName, EE_ACTIONS::showDatasheet, ACTIONS::showSymbolBrowser, ACTIONS::showSymbolLibTable, EE_ACTIONS::showSymbolTree, EE_ACTIONS::symbolProperties, ACTIONS::toggleCursorStyle, ACTIONS::toggleGrid, ACTIONS::undo, unit_mm, EE_ACTIONS::updateSymbolFields, ACTIONS::zoomFitScreen, ACTIONS::zoomInCenter, ACTIONS::zoomOutCenter, ACTIONS::zoomRedraw, and ACTIONS::zoomTool.

◆ DoWithAcceptedFiles()

void EDA_BASE_FRAME::DoWithAcceptedFiles ( )
protectedvirtualinherited

Execute action on accepted dropped file.

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

Reimplemented in GERBVIEW_FRAME, KICAD_MANAGER_FRAME, and PL_EDITOR_FRAME.

Definition at line 1178 of file eda_base_frame.cpp.

1179{
1180 for( const wxFileName& file : m_AcceptedFiles )
1181 {
1182 wxString fn = file.GetFullPath();
1183 m_toolManager->RunAction( *m_acceptedExts.at( file.GetExt() ), true, &fn );
1184 }
1185}
std::vector< wxFileName > m_AcceptedFiles

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

Referenced by EDA_BASE_FRAME::OnDropFiles().

◆ DuplicateSymbol()

void SYMBOL_EDIT_FRAME::DuplicateSymbol ( bool  aFromClipboard)

Insert a duplicate symbol.

If aFromClipboard is true then action is a paste.

Definition at line 851 of file symbol_editor.cpp.

852{
853 LIB_ID libId = GetTargetLibId();
854 wxString lib = libId.GetLibNickname();
855
856 if( !m_libMgr->LibraryExists( lib ) )
857 return;
858
859 std::vector<LIB_SYMBOL*> newSymbols;
860
861 if( aFromClipboard )
862 {
863 wxLogNull doNotLog; // disable logging of failed clipboard actions
864
865 auto clipboard = wxTheClipboard;
866 wxClipboardLocker clipboardLock( clipboard );
867
868 if( !clipboardLock
869 || !( clipboard->IsSupported( wxDF_TEXT )
870 || clipboard->IsSupported( wxDF_UNICODETEXT ) ) )
871 {
872 return;
873 }
874
875 wxTextDataObject data;
876 clipboard->GetData( data );
877 wxString symbolSource = data.GetText();
878
879 std::unique_ptr<STRING_LINE_READER> reader = std::make_unique<STRING_LINE_READER>( TO_UTF8( symbolSource ), wxS( "Clipboard" ) );
880 LIB_SYMBOL* newSymbol = nullptr;
881
882 do
883 {
884 try
885 {
886 newSymbol = SCH_SEXPR_PLUGIN::ParseLibSymbol( *reader );
887 }
888 catch( IO_ERROR& e )
889 {
890 wxLogMessage( wxS( "Can not paste: %s" ), e.Problem() );
891 break;
892 }
893
894 if( newSymbol )
895 newSymbols.emplace_back( newSymbol );
896
897 reader.reset( new STRING_LINE_READER( *reader ) );
898 }
899 while( newSymbol );
900 }
901 else
902 {
903 LIB_SYMBOL* srcSymbol = m_libMgr->GetBufferedSymbol( libId.GetLibItemName(), lib );
904
905 wxCHECK( srcSymbol, /* void */ );
906
907 newSymbols.emplace_back( new LIB_SYMBOL( *srcSymbol ) );
908
909 // Derive from same parent.
910 if( srcSymbol->IsAlias() )
911 {
912 std::shared_ptr< LIB_SYMBOL > srcParent = srcSymbol->GetParent().lock();
913
914 wxCHECK( srcParent, /* void */ );
915
916 newSymbols.back()->SetParent( srcParent.get() );
917 }
918 }
919
920 if( newSymbols.empty() )
921 return;
922
923 for( LIB_SYMBOL* symbol : newSymbols )
924 {
925 ensureUniqueName( symbol, lib );
926 m_libMgr->UpdateSymbol( symbol, lib );
927
928 LoadOneLibrarySymbolAux( symbol, lib, GetUnit(), GetConvert() );
929 }
930
931 SyncLibraries( false );
932 m_treePane->GetLibTree()->SelectLibId( LIB_ID( lib, newSymbols[0]->GetName() ) );
933
934 for( LIB_SYMBOL* symbol : newSymbols )
935 delete symbol;
936}
virtual const wxString Problem() const
what was the problem?
Definition: exceptions.cpp:46
const UTF8 & GetLibItemName() const
Definition: lib_id.h:102
const UTF8 & GetLibNickname() const
Return the logical library name portion of a LIB_ID.
Definition: lib_id.h:87
bool IsAlias() const
Definition: lib_symbol.h:188
void SelectLibId(const LIB_ID &aLibId)
Select an item in the tree widget.
Definition: lib_tree.cpp:230
static LIB_SYMBOL * ParseLibSymbol(LINE_READER &aReader, int aVersion=SEXPR_SCHEMATIC_FILE_VERSION)
Is a LINE_READER that reads from a multiline 8 bit wide std::string.
Definition: richio.h:241
bool LoadOneLibrarySymbolAux(LIB_SYMBOL *aLibEntry, const wxString &aLibrary, int aUnit, int aConvert)
Create a copy of aLibEntry into memory.
void ensureUniqueName(LIB_SYMBOL *aSymbol, const wxString &aLibrary)
#define TO_UTF8(wxstring)
Convert a wxString to a UTF8 encoded C string for all wxWidgets build modes.
Definition: macros.h:96

References ensureUniqueName(), SYMBOL_LIBRARY_MANAGER::GetBufferedSymbol(), GetConvert(), LIB_ID::GetLibItemName(), LIB_ID::GetLibNickname(), SYMBOL_TREE_PANE::GetLibTree(), LIB_SYMBOL::GetParent(), GetTargetLibId(), GetUnit(), LIB_SYMBOL::IsAlias(), SYMBOL_LIBRARY_MANAGER::LibraryExists(), LoadOneLibrarySymbolAux(), m_libMgr, m_treePane, SCH_SEXPR_PLUGIN::ParseLibSymbol(), IO_ERROR::Problem(), LIB_TREE::SelectLibId(), SyncLibraries(), TO_UTF8, and SYMBOL_LIBRARY_MANAGER::UpdateSymbol().

Referenced by SYMBOL_EDITOR_CONTROL::DuplicateSymbol().

◆ eeconfig()

EESCHEMA_SETTINGS * SCH_BASE_FRAME::eeconfig ( ) const
inherited

Definition at line 131 of file sch_base_frame.cpp.

132{
133 return dynamic_cast<EESCHEMA_SETTINGS*>( config() );
134}
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(), EE_SELECTION_TOOL::autostartEvent(), SCH_EDITOR_CONTROL::ChangeLineMode(), EE_SELECTION_TOOL::CollectHits(), DIALOG_BOM::DIALOG_BOM(), SCH_LINE_WIRE_BUS_TOOL::doDrawSegments(), SCH_EDIT_FRAME::DrawCurrentSheetToClipboard(), SCH_DRAWING_TOOLS::DrawSheet(), SCH_EDIT_TOOL::editFieldText(), SCH_EDIT_FRAME::ExecuteRemoteCommand(), SCH_EDITOR_CONTROL::FindSymbolAndItem(), SCH_EDIT_FRAME::GetSchematicJunctionSize(), SCH_EDIT_FRAME::GetShowAllPins(), EE_SELECTION_TOOL::GuessSelectionCandidates(), DIALOG_BOM::installGeneratorsList(), SCH_EDIT_FRAME::KiwayMailIn(), SCH_EDITOR_CONDITIONS::lineModeFunc(), SCH_EDIT_FRAME::LoadSettings(), EE_SELECTION_TOOL::Main(), SCH_EDITOR_CONTROL::NextLineMode(), DIALOG_SHAPE_PROPERTIES::onBorderChecked(), DIALOG_TEXT_PROPERTIES::onBorderChecked(), DIALOG_PRINT_USING_PRINTER::OnOutputChoice(), SCH_EDIT_FRAME::OpenProjectFiles(), SCH_EDITOR_CONTROL::Paste(), SCH_DRAWING_TOOLS::PlaceSymbol(), SCH_PRINTOUT::PrintPage(), DIALOG_CHANGE_SYMBOLS::processSymbols(), SCH_EDIT_TOOL::Properties(), SCH_EDIT_TOOL::RepeatDrawItem(), SCH_EDIT_TOOL::Rotate(), DIALOG_PRINT_USING_PRINTER::SavePrintOptions(), SCH_EDIT_FRAME::SaveSettings(), EE_SELECTION_TOOL::Selectable(), SCH_EDIT_FRAME::SelectUnit(), SCH_EDIT_FRAME::setupUIConditions(), SCH_LINE_WIRE_BUS_TOOL::startSegments(), EE_SELECTION_TOOL::SyncSelection(), SCH_EDITOR_CONTROL::ToggleAnnotateAuto(), SCH_EDITOR_CONTROL::ToggleAnnotateRecursive(), SCH_EDITOR_CONTROL::ToggleERCErrors(), SCH_EDITOR_CONTROL::ToggleERCExclusions(), SCH_EDITOR_CONTROL::ToggleERCWarnings(), SCH_EDITOR_CONTROL::ToggleHiddenFields(), SCH_EDITOR_CONTROL::ToggleHiddenPins(), SCH_EDITOR_CONTROL::ToggleOPCurrents(), SCH_EDITOR_CONTROL::ToggleOPVoltages(), SCH_EDIT_FRAME::ToggleSchematicHierarchy(), DIALOG_PRINT_USING_PRINTER::TransferDataToWindow(), and DIALOG_BOM::~DIALOG_BOM().

◆ emptyScreen()

void SYMBOL_EDIT_FRAME::emptyScreen ( )

Definition at line 1153 of file symbol_edit_frame.cpp.

1154{
1156 SetCurLib( wxEmptyString );
1157 SetCurSymbol( nullptr, false );
1161 Refresh();
1162}
virtual void ClearUndoRedoList()
Clear the undo and redo list using ClearUndoORRedoList()
void Unselect()
Unselect currently selected item in wxDataViewCtrl.
Definition: lib_tree.cpp:242
wxString SetCurLib(const wxString &aLibNickname)
Set the current library nickname and returns the old library nickname.
void Refresh()
Update the board display after modifying it by a python script (note: it is automatically called by a...

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

Referenced by DeleteSymbolFromLibrary(), KiwayMailIn(), and Revert().

◆ ensureUniqueName()

void SYMBOL_EDIT_FRAME::ensureUniqueName ( LIB_SYMBOL aSymbol,
const wxString &  aLibrary 
)
private

Definition at line 939 of file symbol_editor.cpp.

940{
941 wxCHECK( aSymbol, /* void */ );
942
943 int i = 1;
944 wxString newName = aSymbol->GetName();
945
946 // Append a number to the name until the name is unique in the library.
947 while( m_libMgr->SymbolExists( newName, aLibrary ) )
948 newName.Printf( "%s_%d", aSymbol->GetName(), i++ );
949
950 aSymbol->SetName( newName );
951}
wxString GetName() const override
Definition: lib_symbol.h:138
virtual void SetName(const wxString &aName)
Definition: lib_symbol.cpp:437

References LIB_SYMBOL::GetName(), m_libMgr, LIB_SYMBOL::SetName(), and SYMBOL_LIBRARY_MANAGER::SymbolExists().

Referenced by DuplicateSymbol().

◆ ensureWindowIsOnScreen()

void EDA_BASE_FRAME::ensureWindowIsOnScreen ( )
protectedinherited

Definition at line 659 of file eda_base_frame.cpp.

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

References EDA_BASE_FRAME::GetWindowSize(), and traceDisplayLocation.

Referenced by EDA_BASE_FRAME::OnSize().

◆ EraseMsgBox()

void EDA_DRAW_FRAME::EraseMsgBox ( )
inherited

◆ ExecuteRemoteCommand()

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

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

Subclasses should override to implement actual command handlers.

Reimplemented in SCH_EDIT_FRAME, and PCB_EDIT_FRAME.

Definition at line 182 of file kiway_player.h.

182{}

Referenced by KIWAY_PLAYER::OnSockRequest().

◆ ExportSymbol()

void SYMBOL_EDIT_FRAME::ExportSymbol ( )

Definition at line 116 of file symbol_editor_import_export.cpp.

117{
118 wxString msg;
119 LIB_SYMBOL* symbol = getTargetSymbol();
120
121 if( !symbol )
122 {
123 ShowInfoBarError( _( "There is no symbol selected to save." ) );
124 return;
125 }
126
127 wxFileName fn;
128
129 fn.SetName( symbol->GetName().Lower() );
130 fn.SetExt( KiCadSymbolLibFileExtension );
131
132 wxFileDialog dlg( this, _( "Export Symbol" ), m_mruPath, fn.GetFullName(),
133 KiCadSymbolLibFileWildcard(), wxFD_SAVE );
134
135 if( dlg.ShowModal() == wxID_CANCEL )
136 return;
137
138 fn = dlg.GetPath();
139 fn.MakeAbsolute();
140
141 LIB_SYMBOL* old_symbol = nullptr;
142 SCH_IO_MGR::SCH_FILE_T pluginType = SCH_IO_MGR::GuessPluginTypeFromLibPath( fn.GetFullPath() );
143 SCH_PLUGIN::SCH_PLUGIN_RELEASER pi( SCH_IO_MGR::FindPlugin( pluginType ) );
144
145 if( fn.FileExists() )
146 {
147 try
148 {
149 old_symbol = pi->LoadSymbol( fn.GetFullPath(), symbol->GetName() );
150 }
151 catch( const IO_ERROR& ioe )
152 {
153 msg.Printf( _( "Error occurred attempting to load symbol library file '%s'." ),
154 fn.GetFullPath() );
155 DisplayErrorMessage( this, msg, ioe.What() );
156 return;
157 }
158
159 if( old_symbol )
160 {
161 msg.Printf( _( "Symbol %s already exists in library '%s'." ),
162 UnescapeString( symbol->GetName() ),
163 fn.GetFullName() );
164
165 KIDIALOG errorDlg( this, msg, _( "Confirmation" ), wxOK | wxCANCEL | wxICON_WARNING );
166 errorDlg.SetOKLabel( _( "Overwrite" ) );
167 errorDlg.DoNotShowCheckbox( __FILE__, __LINE__ );
168
169 if( errorDlg.ShowModal() == wxID_CANCEL )
170 return;
171 }
172 }
173
174 if( fn.Exists() && !fn.IsDirWritable() )
175 {
176 msg.Printf( _( "Insufficient permissions to save library '%s'." ),
177 fn.GetFullPath() );
178 DisplayError( this, msg );
179 return;
180 }
181
182 try
183 {
184 if( !fn.FileExists() )
185 pi->CreateSymbolLib( fn.GetFullPath() );
186
187 // The flattened symbol is most likely what the user would want. As some point in
188 // the future as more of the symbol library inheritance is implemented, this may have
189 // to be changes to save symbols of inherited symbols.
190 pi->SaveSymbol( fn.GetFullPath(), symbol->Flatten().release() );
191 }
192 catch( const IO_ERROR& ioe )
193 {
194 msg.Printf( _( "Failed to create symbol library file '%s'." ), fn.GetFullPath() );
195 DisplayErrorMessage( this, msg, ioe.What() );
196 msg.Printf( _( "Error creating symbol library '%s'." ), fn.GetFullName() );
197 SetStatusText( msg );
198 return;
199 }
200
201 m_mruPath = fn.GetPath();
202
203 msg.Printf( _( "Symbol %s saved to library '%s'." ),
204 UnescapeString( symbol->GetName() ),
205 fn.GetFullPath() );
206 SetStatusText( msg );
207
208 // See if the user wants it added to a library table (global or project)
209 SYMBOL_LIB_TABLE* libTable = SelectSymLibTable( true );
210
211 if( libTable )
212 {
213 if( !m_libMgr->AddLibrary( fn.GetFullPath(), libTable ) )
214 {
215 DisplayError( this, _( "Could not open the library file." ) );
216 return;
217 }
218
219 bool globalTable = ( libTable == &SYMBOL_LIB_TABLE::GetGlobalLibTable() );
220 saveSymbolLibTables( globalTable, !globalTable );
221 }
222}
void ShowInfoBarError(const wxString &aErrorMsg, bool aShowCloseButton=false, WX_INFOBAR::MESSAGE_TYPE aType=WX_INFOBAR::MESSAGE_TYPE::GENERIC)
Show the WX_INFOBAR displayed on the top of the canvas with a message and an error icon on the left o...
static SCH_FILE_T GuessPluginTypeFromLibPath(const wxString &aLibPath)
Return a plugin type given a symbol library using the file extension of aLibPath.
Definition: sch_io_mgr.cpp:156
Helper object to release a SCH_PLUGIN in the context of a potential thrown exception through its dest...
Definition: sch_io_mgr.h:535
LIB_SYMBOL * getTargetSymbol() const
Return either the library selected in the symbol tree, if context menu is active or the library that ...
void DisplayErrorMessage(wxWindow *aParent, const wxString &aText, const wxString &aExtraInfo)
Display an error message with aMessage.
Definition: confirm.cpp:325
wxString UnescapeString(const wxString &aSource)

References _, SYMBOL_LIBRARY_MANAGER::AddLibrary(), SCH_PLUGIN::CreateSymbolLib(), DisplayError(), DisplayErrorMessage(), KIDIALOG::DoNotShowCheckbox(), LIB_SYMBOL::Flatten(), SYMBOL_LIB_TABLE::GetGlobalLibTable(), LIB_SYMBOL::GetName(), getTargetSymbol(), SCH_IO_MGR::GuessPluginTypeFromLibPath(), KiCadSymbolLibFileExtension, KiCadSymbolLibFileWildcard(), SCH_PLUGIN::LoadSymbol(), m_libMgr, EDA_BASE_FRAME::m_mruPath, SCH_PLUGIN::SaveSymbol(), SCH_BASE_FRAME::saveSymbolLibTables(), SCH_BASE_FRAME::SelectSymLibTable(), EDA_BASE_FRAME::ShowInfoBarError(), KIDIALOG::ShowModal(), UnescapeString(), and IO_ERROR::What().

◆ findDialogs()

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

Definition at line 922 of file eda_draw_frame.cpp.

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

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

◆ findQuasiModalDialog()

wxWindow * EDA_BASE_FRAME::findQuasiModalDialog ( )
privateinherited

Definition at line 169 of file eda_base_frame.cpp.

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

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

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

◆ FinishAUIInitialization()

void EDA_BASE_FRAME::FinishAUIInitialization ( )
inherited

Definition at line 846 of file eda_base_frame.cpp.

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

References EDA_BASE_FRAME::m_auimgr.

Referenced by SYMBOL_VIEWER_FRAME::SYMBOL_VIEWER_FRAME().

◆ FocusOnLibId()

void SYMBOL_EDIT_FRAME::FocusOnLibId ( const LIB_ID aLibID)

◆ FocusOnLocation()

void EDA_DRAW_FRAME::FocusOnLocation ( const VECTOR2I aPos)
inherited

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

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

Parameters
aPosis the point to go to.

Definition at line 936 of file eda_draw_frame.cpp.

937{
938 bool centerView = false;
940
941 // Center if we're off the current view, or within 10% of its edge
942 r.Inflate( - (int) r.GetWidth() / 10 );
943
944 if( !r.Contains( aPos ) )
945 centerView = true;
946
947 std::vector<BOX2D> dialogScreenRects;
948
949 for( wxWindow* dialog : findDialogs() )
950 {
951 dialogScreenRects.emplace_back( ToVECTOR2D( GetCanvas()->ScreenToClient( dialog->GetScreenPosition() ) ),
952 ToVECTOR2D( dialog->GetSize() ) );
953 }
954
955 // Center if we're behind an obscuring dialog, or within 10% of its edge
956 for( BOX2D rect : dialogScreenRects )
957 {
958 rect.Inflate( rect.GetWidth() / 10 );
959
960 if( rect.Contains( GetCanvas()->GetView()->ToScreen( aPos ) ) )
961 centerView = true;
962 }
963
964 if( centerView )
965 {
966 try
967 {
968 GetCanvas()->GetView()->SetCenter( aPos, dialogScreenRects );
969 }
970 catch( const ClipperLib::clipperException& exc )
971 {
972 wxLogError( wxT( "Clipper library error '%s' occurred centering object." ),
973 exc.what() );
974 }
975 }
976
978}
coord_type GetWidth() const
Definition: box2.h:187
bool Contains(const Vec &aPoint) const
Definition: box2.h:141
BOX2< Vec > & Inflate(coord_type dx, coord_type dy)
Inflates the rectangle horizontally by dx and vertically by dy.
Definition: box2.h:506
std::vector< wxWindow * > findDialogs()
virtual KIGFX::VIEW * GetView() const
Return a pointer to the #VIEW instance used in the panel.
BOX2D GetViewport() const
Return the current viewport visible area rectangle.
Definition: view.cpp:511
void SetCenter(const VECTOR2D &aCenter)
Set the center point of the VIEW (i.e.
Definition: view.cpp:577
VECTOR2D ToVECTOR2D(const wxPoint &aPoint)
Definition: vector2wx.h:40

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

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

◆ FreezeLibraryTree()

void SYMBOL_EDIT_FRAME::FreezeLibraryTree ( )

Definition at line 641 of file symbol_edit_frame.cpp.

642{
643 m_treePane->Freeze();
644 m_libMgr->GetAdapter()->Freeze();
645}

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

Referenced by KiwayMailIn(), and saveLibrary().

◆ GetAboutTitle()

const wxString & EDA_BASE_FRAME::GetAboutTitle ( ) const
inlineinherited

Definition at line 508 of file eda_base_frame.h.

508{ return wxGetTranslation( m_aboutTitle ); }

References EDA_BASE_FRAME::m_aboutTitle.

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

◆ GetAutoSaveFilePrefix()

static wxString EDA_BASE_FRAME::GetAutoSaveFilePrefix ( )
inlinestaticprotectedinherited

◆ GetAutoSaveInterval()

int EDA_BASE_FRAME::GetAutoSaveInterval ( ) const
inherited

Definition at line 298 of file eda_base_frame.cpp.

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

References Pgm().

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

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

321{
322 return static_cast<SCH_DRAW_PANEL*>( EDA_DRAW_FRAME::GetCanvas() );
323}

References EDA_DRAW_FRAME::GetCanvas().

Referenced by SCH_BASE_FRAME::ActivateGalCanvas(), SCH_EDIT_FRAME::AddItemToScreenAndUndoList(), SCH_EDIT_FRAME::AddJunction(), SCH_BASE_FRAME::AddToScreen(), SCH_EDIT_FRAME::AnnotateSymbols(), SCH_EDITOR_CONTROL::AssignFootprints(), SCH_EDITOR_CONTROL::AssignNetclass(), SCH_EDIT_TOOL::BreakWire(), SCH_NAVIGATE_TOOL::changeSheet(), SYMBOL_VIEWER_FRAME::ClickOnSymbolList(), SCH_BASE_FRAME::CommonSettingsChanged(), SCH_EDIT_FRAME::CommonSettingsChanged(), CommonSettingsChanged(), SYMBOL_VIEWER_FRAME::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(), SCH_DRAWING_TOOLS::DrawShape(), SYMBOL_EDITOR_DRAWING_TOOLS::DrawShape(), SCH_DRAWING_TOOLS::DrawSheet(), SYMBOL_EDITOR_EDIT_TOOL::editFieldProperties(), SYMBOL_EDITOR_EDIT_TOOL::editShapeProperties(), SYMBOL_EDITOR_EDIT_TOOL::editTextBoxProperties(), SYMBOL_EDITOR_EDIT_TOOL::editTextProperties(), EE_INSPECTION_TOOL::ExcludeMarker(), DIALOG_ERC::ExcludeMarker(), SCH_FIND_REPLACE_TOOL::FindNext(), SCH_EDITOR_CONTROL::FindSymbolAndItem(), 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(), EE_POINT_EDITOR::Main(), EE_SELECTION_TOOL::Main(), SCH_MOVE_TOOL::Main(), SYMBOL_EDITOR_MOVE_TOOL::Main(), DIALOG_MIGRATE_BUSES::onAcceptClicked(), DIALOG_ANNOTATE::OnApplyClick(), DIALOG_ERC::OnERCItemRClick(), EE_SELECTION_TOOL::OnIdle(), DIALOG_MIGRATE_BUSES::onItemSelected(), SCH_EDIT_FRAME::OnModify(), SCH_EDIT_FRAME::OnPageSettingsChange(), SIMULATOR_FRAME::onPlotClosed(), DIALOG_SYMBOL_REMAP::OnRemapSymbols(), SIMULATOR_FRAME::onSimFinished(), DIALOG_UPDATE_FROM_PCB::OnUpdateClick(), SYMBOL_TREE_PANE::onUpdateUI(), SCH_EDITOR_CONTROL::PageSetup(), SYMBOL_EDITOR_DRAWING_TOOLS::PlaceAnchor(), SCH_DRAWING_TOOLS::PlaceImage(), SCH_DRAWING_TOOLS::PlaceSymbol(), DIALOG_CHANGE_SYMBOLS::processSymbols(), 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_EDIT_FRAME::RefreshOperatingPointDisplay(), SCH_BASE_FRAME::RefreshZoomDependentItems(), 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_EDITOR_CONTROL::Revert(), SCH_EDIT_FRAME::RollbackSchematicFromUndo(), SCH_EDIT_FRAME::SaveSymbolToSchematic(), EE_SELECTION_TOOL::selectMultiple(), SCH_EDIT_FRAME::SetCurrentSheet(), SetCurSymbol(), EE_POINT_EDITOR::setEditedPoint(), SCH_EDIT_FRAME::SetScreen(), SYMBOL_VIEWER_FRAME::SetSelectedLibrary(), SCH_EDIT_FRAME::setupTools(), setupTools(), SYMBOL_VIEWER_FRAME::setupTools(), SCH_EDIT_FRAME::ShowAllIntersheetRefs(), ShowChangedLanguage(), SYMBOL_EDITOR_CONTROL::ShowElectricalTypes(), SYMBOL_EDITOR_CONTROL::ShowPinNumbers(), 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::ToggleERCErrors(), SCH_EDITOR_CONTROL::ToggleERCExclusions(), SCH_EDITOR_CONTROL::ToggleERCWarnings(), SCH_EDITOR_CONTROL::ToggleHiddenFields(), SCH_EDITOR_CONTROL::ToggleHiddenPins(), SCH_EDITOR_CONTROL::ToggleOPCurrents(), SCH_EDITOR_CONTROL::ToggleOPVoltages(), DIALOG_JUNCTION_PROPS::TransferDataFromWindow(), DIALOG_LABEL_PROPERTIES::TransferDataFromWindow(), DIALOG_LINE_PROPERTIES::TransferDataFromWindow(), DIALOG_SHEET_PIN_PROPERTIES::TransferDataFromWindow(), DIALOG_TEXT_PROPERTIES::TransferDataFromWindow(), DIALOG_WIRE_BUS_PROPERTIES::TransferDataFromWindow(), SCH_DRAWING_TOOLS::TwoClickPlace(), SYMBOL_EDITOR_DRAWING_TOOLS::TwoClickPlace(), SCH_EDITOR_CONTROL::Undo(), SCH_FIND_REPLACE_TOOL::UpdateFind(), SCH_BASE_FRAME::UpdateItem(), SCH_EDITOR_CONTROL::UpdateNetHighlighting(), SYMBOL_VIEWER_FRAME::updatePreviewSymbol(), SCH_BASE_FRAME::UpdateStatusBar(), SCH_EDIT_FRAME::~SCH_EDIT_FRAME(), and SYMBOL_VIEWER_FRAME::~SYMBOL_VIEWER_FRAME().

◆ GetColorSettings()

COLOR_SETTINGS * SYMBOL_EDIT_FRAME::GetColorSettings ( bool  aForceRefresh = false) const
overridevirtual

Returns a pointer to the active color theme settings.

Reimplemented from SCH_BASE_FRAME.

Definition at line 318 of file symbol_edit_frame.cpp.

319{
320 SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
321
322 if( GetSettings()->m_UseEeschemaColorSettings )
324 else
325 return mgr.GetColorSettings( GetSettings()->m_ColorTheme );
326}
wxString m_ColorTheme
Active color theme name.
Definition: app_settings.h:190
COLOR_SETTINGS * GetColorSettings(const wxString &aName="user")
Retrieves a color settings object that applications can read colors from.

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

Referenced by DIALOG_LIB_SHAPE_PROPERTIES::DIALOG_LIB_SHAPE_PROPERTIES(), DIALOG_LIB_TEXT_PROPERTIES::DIALOG_LIB_TEXT_PROPERTIES(), DIALOG_LIB_TEXTBOX_PROPERTIES::DIALOG_LIB_TEXTBOX_PROPERTIES(), and 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 699 of file symbol_edit_frame.cpp.

700{
701 wxString libNickname = Prj().GetRString( PROJECT::SCH_LIBEDIT_CUR_LIB );
702
703 if( !libNickname.empty() )
704 {
705 if( !Prj().SchSymbolLibTable()->HasLibrary( libNickname ) )
706 {
707 Prj().SetRString( PROJECT::SCH_LIBEDIT_CUR_LIB, wxEmptyString );
708 libNickname = wxEmptyString;
709 }
710 }
711
712 return libNickname;
713}
@ SCH_LIBEDIT_CUR_LIB
Definition: project.h:167
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:254
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:265

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

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

◆ GetCurrentFileName()

virtual wxString EDA_BASE_FRAME::GetCurrentFileName ( ) const
inlinevirtualinherited

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

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

Returns
the filename and full path to the open file

Reimplemented in SCH_EDIT_FRAME, KICAD_MANAGER_FRAME, PL_EDITOR_FRAME, and PCB_EDIT_FRAME.

Definition at line 433 of file eda_base_frame.h.

433{ 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 1420 of file symbol_edit_frame.cpp.

1421{
1422 return m_toolManager->GetTool<EE_SELECTION_TOOL>()->GetSelection();
1423}

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

◆ GetCurrentTreeNode()

LIB_TREE_NODE * SYMBOL_EDIT_FRAME::GetCurrentTreeNode ( ) const

◆ GetCurSymbol()

LIB_SYMBOL * SYMBOL_EDIT_FRAME::GetCurSymbol ( ) const
inline

Return the current symbol being edited or NULL if none selected.

This is a LIB_SYMBOL that I own, it is at best a copy of one in a library.

Definition at line 110 of file symbol_edit_frame.h.

110{ return m_symbol; }

References m_symbol.

Referenced by SYMBOL_EDITOR_CONTROL::AddSymbolToSchematic(), CanCloseSymbolFromSchematic(), SYMBOL_EDITOR_EDIT_TOOL::Copy(), SYMBOL_EDITOR_EDIT_TOOL::DoDelete(), SYMBOL_EDITOR_DRAWING_TOOLS::DrawShape(), SYMBOL_EDITOR_EDIT_TOOL::Duplicate(), SYMBOL_EDITOR_EDIT_TOOL::editSymbolProperties(), SYMBOL_EDITOR_CONTROL::ExportSymbolAsSVG(), SYMBOL_EDITOR_CONTROL::ExportView(), SYMBOL_TREE_SYNCHRONIZING_ADAPTER::GetAttr(), SYMBOL_TREE_SYNCHRONIZING_ADAPTER::GetValue(), EE_SELECTION_TOOL::Init(), IsContentModified(), LoadOneLibrarySymbolAux(), LoadSymbol(), LoadSymbolFromCurrentLib(), LoadSymbolFromSchematic(), SYMBOL_EDITOR_MOVE_TOOL::Main(), SYMBOL_EDITOR_EDIT_TOOL::Mirror(), SYMBOL_TREE_PANE::onUpdateUI(), SYMBOL_EDITOR_EDIT_TOOL::Paste(), SYMBOL_EDITOR_EDIT_TOOL::PinTable(), SYMBOL_EDITOR_DRAWING_TOOLS::PlaceAnchor(), SYMBOL_EDITOR_PIN_TOOL::PlacePin(), SYMBOL_EDITOR_EDIT_TOOL::Properties(), SYMBOL_EDITOR_PIN_TOOL::PushPinProperties(), SYMBOL_EDITOR_CONTROL::RenameSymbol(), SYMBOL_EDITOR_DRAWING_TOOLS::RepeatDrawItem(), Revert(), SYMBOL_EDITOR_EDIT_TOOL::Rotate(), saveCurrentSymbol(), SYMBOL_EDITOR_EDIT_TOOL::SetUnitDisplayName(), DIALOG_LIB_TEXT_PROPERTIES::TransferDataToWindow(), SYMBOL_EDITOR_DRAWING_TOOLS::TwoClickPlace(), UpdateAfterSymbolProperties(), SYMBOL_EDITOR_EDIT_TOOL::UpdateSymbolFields(), and updateTitle().

◆ 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 drawing sheet border, and "false" by "Zoom To Objects" to ignore drawing sheet border. In Pcbnew, false makes it ignore any items outside the PCB edge such as fabrication notes.

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

Reimplemented from EDA_DRAW_FRAME.

Definition at line 1268 of file symbol_edit_frame.cpp.

1269{
1270 if( !m_symbol )
1271 {
1272 // Gives a reasonable drawing area size
1273 int width = schIUScale.mmToIU( 50 );
1274 int height = schIUScale.mmToIU( 30 );
1275
1276 return BOX2I( VECTOR2I( -width/2, -height/2 ),
1277 VECTOR2I( width, height ) );
1278 }
1279 else
1280 {
1281 return m_symbol->Flatten()->GetUnitBoundingBox( m_unit, m_convert );
1282 }
1283}
BOX2< VECTOR2I > BOX2I
Definition: box2.h:847
VECTOR2< int > VECTOR2I
Definition: vector2d.h:590

References LIB_SYMBOL::Flatten(), m_convert, m_symbol, m_unit, EDA_IU_SCALE::mmToIU(), and schIUScale.

◆ GetDoImmediateActions()

bool TOOLS_HOLDER::GetDoImmediateActions ( ) const
inlineinherited

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

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

Definition at line 141 of file tools_holder.h.

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

References TOOLS_HOLDER::m_immediateActions.

◆ GetDragAction()

MOUSE_DRAG_ACTION TOOLS_HOLDER::GetDragAction ( ) const
inlineinherited

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

Definition at line 147 of file tools_holder.h.

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

References TOOLS_HOLDER::m_dragAction.

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

◆ GetDrawBgColor()

COLOR4D SCH_BASE_FRAME::GetDrawBgColor ( ) const
overridevirtualinherited

Reimplemented from EDA_DRAW_FRAME.

Definition at line 535 of file sch_base_frame.cpp.

536{
538}
COLOR_SETTINGS * GetColorSettings(bool aForceRefresh=false) const override
Returns a pointer to the active color theme settings.
@ LAYER_SCHEMATIC_BACKGROUND
Definition: layer_ids.h:376

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

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

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

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

◆ GetFileHistory()

FILE_HISTORY & EDA_BASE_FRAME::GetFileHistory ( )
inlineinherited

Get the frame's main file history.

Returns
the main file history

Definition at line 417 of file eda_base_frame.h.

418 {
419 return *m_fileHistory;
420 }

References EDA_BASE_FRAME::m_fileHistory.

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

◆ GetFindHistoryList()

wxArrayString & EDA_DRAW_FRAME::GetFindHistoryList ( )
inlineinherited

◆ GetFindReplaceData()

◆ GetFrameType()

FRAME_T EDA_BASE_FRAME::GetFrameType ( ) const
inlineinherited

◆ GetGalDisplayOptions()

◆ GetGridColor()

virtual COLOR4D EDA_DRAW_FRAME::GetGridColor ( )
inlinevirtualinherited

◆ GetGridOrigin()

const VECTOR2I & 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 123 of file sch_base_frame.h.

124 {
125 static VECTOR2I zero;
126 return zero;
127 }

◆ 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 390 of file eda_draw_frame.h.

390{ return nullptr; }

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

◆ GetIuScale()

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

490{
491 return GetColorSettings()->GetColor( aLayer );
492}

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

◆ GetLibManager()

◆ GetLibSymbol()

LIB_SYMBOL * SCH_BASE_FRAME::GetLibSymbol ( 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 206 of file sch_base_frame.cpp.

208{
209 SYMBOL_LIB* cache = ( aUseCacheLib ) ? Prj().SchLibs()->GetCacheLibrary() : nullptr;
210
211 return SchGetLibSymbol( aLibId, Prj().SchSymbolLibTable(), cache, this, aShowErrorMsg );
212}
Object used to load, save, search, and otherwise manipulate symbol library files.
LIB_SYMBOL * SchGetLibSymbol(const LIB_ID &aLibId, SYMBOL_LIB_TABLE *aLibTable, SYMBOL_LIB *aCacheLib, wxWindow *aParent, bool aShowErrorMsg)
Load symbol from symbol library table.

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

Referenced by SCH_EDIT_FRAME::CreateArchiveLibrary(), DIALOG_SCH_FIELD_PROPERTIES::DIALOG_SCH_FIELD_PROPERTIES(), SCH_BASE_FRAME::PickSymbolFromLibTree(), SCH_DRAWING_TOOLS::PlaceSymbol(), DIALOG_CHANGE_SYMBOLS::processSymbols(), SCH_EDIT_FRAME::SelectUnit(), and DIALOG_CHANGE_SYMBOLS::updateFieldsList().

◆ GetMaxUndoItems()

int EDA_BASE_FRAME::GetMaxUndoItems ( ) const
inlineinherited

Definition at line 578 of file eda_base_frame.h.

578{ 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 153 of file tools_holder.h.

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

References TOOLS_HOLDER::m_moveWarpsCursor.

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

◆ GetMruPath()

◆ GetNearestGridPosition()

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

Return the nearest aGridSize location to aPosition.

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

Definition at line 875 of file eda_draw_frame.cpp.

876{
877 const VECTOR2I& gridOrigin = GetGridOrigin();
878 VECTOR2D gridSize = GetCanvas()->GetGAL()->GetGridSize();
879
880 double xOffset = fmod( gridOrigin.x, gridSize.x );
881 int x = KiROUND( (aPosition.x - xOffset) / gridSize.x );
882 double yOffset = fmod( gridOrigin.y, gridSize.y );
883 int y = KiROUND( (aPosition.y - yOffset) / gridSize.y );
884
885 return VECTOR2I( KiROUND( x * gridSize.x + xOffset ), KiROUND( y * gridSize.y + yOffset ) );
886}
virtual const VECTOR2I & 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:85

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

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

◆ GetNearestHalfGridPosition()

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

Return the nearest aGridSize / 2 location to aPosition.

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

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

Definition at line 889 of file eda_draw_frame.cpp.

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

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

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

◆ GetOriginTransforms()

ORIGIN_TRANSFORMS & EDA_BASE_FRAME::GetOriginTransforms ( )
inlineoverridevirtualinherited

◆ GetPageSettings()

const PAGE_INFO & SCH_BASE_FRAME::GetPageSettings ( ) const
overridevirtualinherited

Implements EDA_DRAW_FRAME.

Definition at line 149 of file sch_base_frame.cpp.

150{
151 return GetScreen()->GetPageSettings();
152}
const PAGE_INFO & GetPageSettings() const
Definition: sch_screen.h:131

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

◆ GetPageSizeIU()

const VECTOR2I 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 155 of file sch_base_frame.cpp.

156{
157 // GetSizeIU is compile time dependent:
159}
const VECTOR2I GetSizeIU(double aIUScale) const
Gets the page size in internal units.
Definition: page_info.h:162
const double IU_PER_MILS
Definition: base_units.h:78

References SCH_SCREEN::GetPageSettings(), SCH_BASE_FRAME::GetScreen(), PAGE_INFO::GetSizeIU(), EDA_IU_SCALE::IU_PER_MILS, and schIUScale.

Referenced by SCH_EDIT_FRAME::DrawCurrentSheetToClipboard().

◆ GetRedoCommandCount()

◆ GetRenderSettings()

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

Definition at line 326 of file sch_base_frame.cpp.

327{
328 if( GetCanvas() && GetCanvas()->GetView() )
329 {
330 if( KIGFX::PAINTER* painter = GetCanvas()->GetView()->GetPainter() )
331 return static_cast<KIGFX::SCH_RENDER_SETTINGS*>( painter->GetSettings() );
332 }
333
334 return nullptr;
335}
Contains all the knowledge about how to draw graphical object onto any particular output device.
Definition: painter.h:58
Store schematic specific render settings.
Definition: sch_painter.h:71

References SCH_BASE_FRAME::GetCanvas().

Referenced by EE_SELECTION_TOOL::CollectHits(), SCH_EDIT_FRAME::CommonSettingsChanged(), CommonSettingsChanged(), DIALOG_PIN_PROPERTIES::DIALOG_PIN_PROPERTIES(), SCH_EDIT_FRAME::DrawCurrentSheetToClipboard(), SCH_EDIT_FRAME::LoadProjectSettings(), SCH_EDIT_FRAME::LoadSettings(), LoadSettings(), SYMBOL_VIEWER_FRAME::LoadSettings(), DIALOG_LIB_SHAPE_PROPERTIES::onFill(), DIALOG_PIN_PROPERTIES::OnPaintShowPanel(), DIALOG_PLOT_SCHEMATIC::plotSchematic(), SCH_PRINTOUT::PrintPage(), RebuildView(), SaveSettings(), SYMBOL_VIEWER_FRAME::SaveSettings(), EE_SELECTION_TOOL::selectMultiple(), SetCurSymbol(), setupUIConditions(), SYMBOL_VIEWER_FRAME::setupUIConditions(), ShowChangedLanguage(), SYMBOL_EDITOR_CONTROL::ShowElectricalTypes(), SYMBOL_EDITOR_CONTROL::ShowPinNumbers(), SCH_EDIT_FRAME::ShowSchematicSetupDialog(), SVGPlotSymbol(), SYMBOL_VIEWER_FRAME::SYMBOL_VIEWER_FRAME(), DIALOG_LIB_SHAPE_PROPERTIES::TransferDataToWindow(), and SYMBOL_VIEWER_FRAME::updatePreviewSymbol().

◆ GetScreen()

◆ GetScreenDesc()

wxString EDA_DRAW_FRAME::GetScreenDesc ( ) const
virtualinherited

Reimplemented in SCH_EDIT_FRAME.

Definition at line 1040 of file eda_draw_frame.cpp.

1041{
1042 // Virtual function. Base class implementation returns an empty string.
1043 return wxEmptyString;
1044}

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

◆ GetSelectedLibIds()

std::vector< LIB_ID > SYMBOL_EDIT_FRAME::GetSelectedLibIds ( ) const
Returns
a list of selected items in the symbol tree

Definition at line 995 of file symbol_edit_frame.cpp.

996{
997 std::vector<LIB_ID> ids;
998 GetTreeLIBIDs( ids );
999 return ids;
1000}

References GetTreeLIBIDs().

Referenced by SYMBOL_EDITOR_CONTROL::CutCopyDelete(), and DeleteSymbolFromLibrary().

◆ GetSettings()

◆ GetSettingsManager()

◆ GetSeverity()

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

Reimplemented in SCH_EDIT_FRAME, and PCB_BASE_FRAME.

Definition at line 138 of file eda_base_frame.h.

138{ return RPT_SEVERITY_UNDEFINED; }
@ RPT_SEVERITY_UNDEFINED

References RPT_SEVERITY_UNDEFINED.

Referenced by ERC_TREE_MODEL::GetValue(), and 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 117 of file sch_base_frame.h.

117{ return true; }

Referenced by EE_SELECTION_TOOL::Selectable().

◆ GetShowDeMorgan()

◆ GetShowPolarCoords()

bool EDA_DRAW_FRAME::GetShowPolarCoords ( ) const
inlineinherited

For those frames that support polar coordinates.

Definition at line 120 of file eda_draw_frame.h.

120{ return m_polarCoords; }

References EDA_DRAW_FRAME::m_polarCoords.

Referenced by EDITOR_CONDITIONS::polarCoordFunc(), COMMON_TOOLS::TogglePolarCoords(), GERBVIEW_FRAME::UpdateStatusBar(), and 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_SYMBOL* symbol = (LIB_SYMBOL*) redoWrapper.GetItem();
71 wxCHECK( symbol, /* void */ );
72 symbol->ClearFlags( UR_TRANSIENT );
73 UNDO_REDO undoRedoType = redoWrapper.GetStatus();
74
75 // Store the current symbol in the undo buffer
76 PICKED_ITEMS_LIST* undoCommand = new PICKED_ITEMS_LIST();
77 LIB_SYMBOL* oldSymbol = m_symbol;
78 oldSymbol->SetFlags( UR_TRANSIENT );
79 ITEM_PICKER undoWrapper( GetScreen(), oldSymbol, undoRedoType );
80 undoCommand->PushItem( undoWrapper );
81 PushCommandToUndoList( undoCommand );
82
83 // Do not delete the previous symbol by calling SetCurSymbol( symbol )
84 // which calls delete <previous symbol>.
85 // <previous symbol> is now put in undo list and is owned by this list
86 // Just set the current symbol to the symbol which come from the redo list
87 m_symbol = symbol;
88
89 if( undoRedoType == UNDO_REDO::LIB_RENAME )
90 {
91 wxString lib = GetCurLib();
92 m_libMgr->UpdateSymbolAfterRename( symbol, oldSymbol->GetName(), lib );
93
94 // Reselect the renamed symbol
95 m_treePane->GetLibTree()->SelectLibId( LIB_ID( lib, symbol->GetName() ) );
96 }
97
99 SetShowDeMorgan( symbol->HasConversion() );
100 updateTitle();
101
102 RebuildView();
103 OnModify();
104}
virtual void PushCommandToUndoList(PICKED_ITEMS_LIST *aItem)
Add a command to undo in the undo list.
virtual int GetRedoCommandCount() const
virtual PICKED_ITEMS_LIST * PopCommandFromRedoList()
Return the last command to undo and remove it from list, nothing is deleted.
void SetFlags(EDA_ITEM_FLAGS aMask)
Definition: eda_item.h:139
void ClearFlags(EDA_ITEM_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
Definition: eda_item.h:141
static TOOL_ACTION clearSelection
Clears the current selection.
Definition: ee_actions.h:56
EDA_ITEM * GetItem() const
UNDO_REDO GetStatus() const
bool HasConversion() const
Test if symbol has more than one body conversion type (DeMorgan).
void PushItem(const ITEM_PICKER &aItem)
Push aItem to the top of the list.
wxString GetCurLib() const
The nickname of the current library being edited and empty string if none.
void OnModify() override
Must be called after a schematic change in order to set the "modify" flag of the current symbol.
bool UpdateSymbolAfterRename(LIB_SYMBOL *aSymbol, const wxString &oldAlias, const wxString &aLibrary)
Update the symbol buffer with a new version of the symbol when the name has changed.
#define UR_TRANSIENT
indicates the item is owned by the undo/redo stack
UNDO_REDO
Undo Redo considerations: Basically we have 3 cases New item Deleted item Modified item there is also...

References EDA_ITEM::ClearFlags(), EE_ACTIONS::clearSelection, GetCurLib(), ITEM_PICKER::GetItem(), SYMBOL_TREE_PANE::GetLibTree(), LIB_SYMBOL::GetName(), EDA_BASE_FRAME::GetRedoCommandCount(), SCH_BASE_FRAME::GetScreen(), ITEM_PICKER::GetStatus(), LIB_SYMBOL::HasConversion(), LIB_RENAME, m_libMgr, m_symbol, 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::UpdateSymbolAfterRename(), 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
116 ITEM_PICKER undoWrapper = undoCommand->PopItem();
117 delete undoCommand;
118 LIB_SYMBOL* symbol = (LIB_SYMBOL*) undoWrapper.GetItem();
119 wxCHECK( symbol, /* void */ );
120 symbol->ClearFlags( UR_TRANSIENT );
121 UNDO_REDO undoRedoType = undoWrapper.GetStatus();
122
123 // Store the current symbol in the redo buffer
124 PICKED_ITEMS_LIST* redoCommand = new PICKED_ITEMS_LIST();
125 LIB_SYMBOL* oldSymbol = m_symbol;
126 oldSymbol->SetFlags( UR_TRANSIENT );
127 ITEM_PICKER redoWrapper( GetScreen(), oldSymbol, undoRedoType );
128 redoCommand->PushItem( redoWrapper );
129 PushCommandToRedoList( redoCommand );
130
131 // Do not delete the previous symbol by calling SetCurSymbol( symbol ),
132 // which calls delete <previous symbol>.
133 // <previous symbol> is now put in redo list and is owned by this list.
134 // Just set the current symbol to the symbol which come from the undo list
135 m_symbol = symbol;
136
137 if( undoRedoType == UNDO_REDO::LIB_RENAME )
138 {
139 wxString lib = GetCurLib();
140 m_libMgr->UpdateSymbolAfterRename( symbol, oldSymbol->GetName(), lib );
141
142 // Reselect the renamed symbol
143 m_treePane->GetLibTree()->SelectLibId( LIB_ID( lib, symbol->GetName() ) );
144 }
145
147 SetShowDeMorgan( symbol->HasConversion() );
148 updateTitle();
149
150 RebuildView();
151 OnModify();
152}
virtual PICKED_ITEMS_LIST * PopCommandFromUndoList()
Return the last command to undo and remove it from list, nothing is deleted.
virtual int GetUndoCommandCount() const
virtual void PushCommandToRedoList(PICKED_ITEMS_LIST *aItem)
Add a command to redo in the redo list.

References EDA_ITEM::ClearFlags(), EE_ACTIONS::clearSelection, GetCurLib(), ITEM_PICKER::GetItem(), SYMBOL_TREE_PANE::GetLibTree(), LIB_SYMBOL::GetName(), SCH_BASE_FRAME::GetScreen(), ITEM_PICKER::GetStatus(), EDA_BASE_FRAME::GetUndoCommandCount(), LIB_SYMBOL::HasConversion(), LIB_RENAME, m_libMgr, m_symbol, 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::UpdateSymbolAfterRename(), updateTitle(), and UR_TRANSIENT.

Referenced by SYMBOL_EDITOR_EDIT_TOOL::Undo().

◆ getTargetLib()

wxString SYMBOL_EDIT_FRAME::getTargetLib ( ) const
private

Definition at line 1009 of file symbol_edit_frame.cpp.

1010{
1011 return GetTargetLibId().GetLibNickname();
1012}

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

Referenced by CreateNewSymbol(), ImportSymbol(), and saveLibrary().

◆ GetTargetLibId()

LIB_ID SYMBOL_EDIT_FRAME::GetTargetLibId ( ) const

Return either the symbol selected in the symbol tree (if context menu is active) or the symbol on the editor canvas.

Definition at line 981 of file symbol_edit_frame.cpp.

982{
983 LIB_ID id;
984
985 if( IsSymbolTreeShown() )
986 id = GetTreeLIBID();
987
988 if( id.GetLibNickname().empty() && m_symbol )
989 id = m_symbol->GetLibId();
990
991 return id;
992}
LIB_ID GetLibId() const override
Definition: lib_symbol.h:141
LIB_ID GetTreeLIBID(int *aUnit=nullptr) const
Return the LIB_ID of the library or symbol selected in the symbol tree.
bool IsSymbolTreeShown() const
static bool empty(const wxTextEntryBase *aCtrl)

References empty(), LIB_SYMBOL::GetLibId(), GetTreeLIBID(), IsSymbolTreeShown(), and m_symbol.

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

◆ getTargetSymbol()

LIB_SYMBOL * SYMBOL_EDIT_FRAME::getTargetSymbol ( ) 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 967 of file symbol_edit_frame.cpp.

968{
969 if( IsSymbolTreeShown() )
970 {
971 LIB_ID libId = GetTreeLIBID();
972
973 if( libId.IsValid() )
974 return m_libMgr->GetAlias( libId.GetLibItemName(), libId.GetLibNickname() );
975 }
976
977 return m_symbol;
978}
bool IsValid() const
Check if this LID_ID is valid.
Definition: lib_id.h:172

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

Referenced by ExportSymbol(), Save(), saveSymbolAs(), and setupUIConditions().

◆ GetTitleBlock()

const TITLE_BLOCK & SCH_BASE_FRAME::GetTitleBlock ( ) const
overridevirtualinherited

Implements EDA_DRAW_FRAME.

Definition at line 162 of file sch_base_frame.cpp.

163{
164 wxASSERT( GetScreen() );
165 return GetScreen()->GetTitleBlock();
166}
const TITLE_BLOCK & GetTitleBlock() const
Definition: sch_screen.h:155

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

◆ GetToolCanvas()

wxWindow * EDA_DRAW_FRAME::GetToolCanvas ( ) const
inlineoverridevirtualinherited

Canvas access.

Implements TOOLS_HOLDER.

Definition at line 417 of file eda_draw_frame.h.

417{ return GetCanvas(); }

References EDA_DRAW_FRAME::GetCanvas().

◆ GetToolManager()

TOOL_MANAGER * TOOLS_HOLDER::GetToolManager ( ) const
inlineinherited

Return the MVC controller.

Definition at line 54 of file tools_holder.h.

54{ return m_toolManager; }

References TOOLS_HOLDER::m_toolManager.

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

951{
952 return m_treePane->GetLibTree()->GetSelectedLibId( aUnit );
953}
LIB_ID GetSelectedLibId(int *aUnit=nullptr) const
For multi-unit symbols, if the user selects the symbol itself rather than picking an individual unit,...
Definition: lib_tree.cpp:188

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

Referenced by SYMBOL_EDITOR_CONTROL::AddSymbol(), SYMBOL_EDITOR_CONTROL::EditSymbol(), GetTargetLibId(), getTargetSymbol(), SYMBOL_EDITOR_CONTROL::Init(), and SYMBOL_EDITOR_CONTROL::RenameSymbol().

◆ GetTreeLIBIDs()

int SYMBOL_EDIT_FRAME::GetTreeLIBIDs ( std::vector< LIB_ID > &  aSelection) const

Definition at line 961 of file symbol_edit_frame.cpp.

962{
963 return m_treePane->GetLibTree()->GetSelectedLibIds( aSelection );
964}
int GetSelectedLibIds(std::vector< LIB_ID > &aSelection, std::vector< int > *aUnit=nullptr) const
Retrieves a list of selections for trees that allow multi-selection.
Definition: lib_tree.cpp:202

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

Referenced by CopySymbolToClipboard(), and GetSelectedLibIds().

◆ GetTreeSelectionCount()

int SYMBOL_EDIT_FRAME::GetTreeSelectionCount ( ) const

Definition at line 956 of file symbol_edit_frame.cpp.

957{
959}
int GetSelectionCount() const
Definition: lib_tree.h:87

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

Referenced by SYMBOL_EDITOR_CONTROL::Init().

◆ GetType()

HOLDER_TYPE KIWAY_HOLDER::GetType ( ) const
inlineinherited

Definition at line 46 of file kiway_holder.h.

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

References KIWAY_HOLDER::m_type.

Referenced by DIALOG_SHIM::DIALOG_SHIM().

◆ GetUndoCommandCount()

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

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

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

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

◆ GetUntranslatedAboutTitle()

const wxString & EDA_BASE_FRAME::GetUntranslatedAboutTitle ( ) const
inlineinherited

Definition at line 510 of file eda_base_frame.h.

510{ return m_aboutTitle; }

References EDA_BASE_FRAME::m_aboutTitle.

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

◆ GetUserUnits()

EDA_UNITS UNITS_PROVIDER::GetUserUnits ( ) const
inlineinherited

Definition at line 42 of file units_provider.h.

42{ return m_userUnits; }
EDA_UNITS m_userUnits

References UNITS_PROVIDER::m_userUnits.

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

◆ GetWindowSettings()

WINDOW_SETTINGS * EDA_BASE_FRAME::GetWindowSettings ( APP_SETTINGS_BASE aCfg)
virtualinherited

Return a pointer to the window settings for this frame.

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

Parameters
aCfgis this frame's config object

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

Definition at line 803 of file eda_base_frame.cpp.

804{
805 return &aCfg->m_Window;
806}

References APP_SETTINGS_BASE::m_Window.

Referenced by EDA_BASE_FRAME::LoadSettings(), EDA_DRAW_FRAME::LoadSettings(),