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...
 
void ReCreateMenuBar () override
 Recreates the menu bar. 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 ()
 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...
 
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)
 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 wxSize GetPageSizeIU () const override
 Works off of GetPageSettings() to return the size of the paper page in the internal units of this particular view. More...
 
const VECTOR2IGetGridOrigin () const override
 Return the absolute coordinates of the origin of the snap grid. More...
 
void SetGridOrigin (const VECTOR2I &aPoint) override
 
const 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 void UpdateMsgPanel ()
 Redraw the message panel. 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)
 
virtual ORIGIN_TRANSFORMSGetOriginTransforms ()
 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 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 SaveProjectSettings ()
 Save changes to the project settings to the project (.pro) file. More...
 
void ImportHotkeyConfigFromFile (std::map< std::string, TOOL_ACTION * > aActionMap, const wxString &aDefaultShortname)
 Prompt the user for a hotkey file to read, and read it. More...
 
wxString GetFileFromHistory (int cmdId, const wxString &type, FILE_HISTORY *aFileHistory=nullptr)
 Fetches the file name from the file history list. More...
 
void ClearFileHistory (FILE_HISTORY *aFileHistory=nullptr)
 Removes all files from the file history. More...
 
void UpdateFileHistory (const wxString &FullFileName, FILE_HISTORY *aFileHistory=nullptr)
 Update the list of recently opened files. More...
 
FILE_HISTORYGetFileHistory ()
 Get the frame's main file history. More...
 
void SetMruPath (const wxString &aPath)
 
wxString GetMruPath () const
 
virtual wxString GetCurrentFileName () const
 Get the full filename + path of the currently opened file in the frame. More...
 
void AddStandardHelpMenu (wxMenuBar *aMenuBar)
 Adds the standard KiCad help menu to the menubar. More...
 
bool IsWritable (const wxFileName &aFileName, bool aVerbose=true)
 Checks if aFileName can be written. More...
 
virtual void CheckForAutoSaveFile (const wxFileName &aFileName)
 Check if an auto save file exists for aFileName and takes the appropriate action depending on the user input. More...
 
virtual void ThemeChanged ()
 Process light/dark theme change. More...
 
virtual void ProjectChanged ()
 Notification event that the project has changed. More...
 
const wxString & GetAboutTitle () const
 
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 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 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
 
std::vector< wxSocketBase * > m_sockets
 interprocess communication More...
 
std::unique_ptr< wxSingleInstanceChecker > m_file_checker
 
COLOR4D m_gridColor
 
COLOR4D m_drawBgColor
 
int m_undoRedoCountMax
 
bool m_polarCoords
 
bool m_showBorderAndTitleBlock
 
long m_firstRunDialogSetting
 
wxChoice * m_gridSelectBox
 
wxChoice * m_zoomSelectBox
 
ACTION_TOOLBARm_mainToolBar
 
ACTION_TOOLBARm_auxiliaryToolBar
 
ACTION_TOOLBARm_drawToolBar
 
ACTION_TOOLBARm_optionsToolBar
 
std::unique_ptr< EDA_SEARCH_DATAm_findReplaceData
 
wxArrayString m_findStringHistoryList
 
wxArrayString m_replaceStringHistoryList
 
EDA_MSG_PANELm_messagePanel
 
int m_msgFrameHeight
 
COLOR_SETTINGSm_colorSettings
 
SEARCH_PANEm_searchPane
 The current canvas type. More...
 
EDA_DRAW_PANEL_GAL::GAL_TYPE m_canvasType
 
bool m_modal
 
WX_EVENT_LOOPm_modal_loop
 < Points to nested event_loop. NULL means not modal and dismissed. More...
 
wxWindow * m_modal_resultant_parent
 
wxString m_modal_string
 
bool m_modal_ret_val
 
std::vector< wxFileName > m_AcceptedFiles
 
FRAME_T m_ident
 
wxPoint m_framePos
 
wxSize m_frameSize
 
bool m_maximizeByDefault
 
int m_displayIndex
 
wxPoint m_normalFramePos
 
wxSize m_normalFrameSize
 
wxString m_aboutTitle
 
wxAuiManager m_auimgr
 
wxString m_perspective
 
WX_INFOBARm_infoBar
 
wxString m_configName
 
SETTINGS_MANAGERm_settingsManager
 
FILE_HISTORYm_fileHistory
 
bool m_supportsAutoSave
 
bool m_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 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 483 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 = _( "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:105
@ icon_libedit_32
@ icon_libedit
@ icon_libedit_16
static TOOL_ACTION zoomFitScreen
Definition: actions.h:98
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
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:688
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 ReCreateMenuBar() override
Recreates the menu bar.
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 _(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:617

References _, 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:488
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:280
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 1451 of file symbol_edit_frame.cpp.

1452{
1453 wxFileName fn = aLibFile;
1454 wxFileName libTableFileName( Prj().GetProjectPath(),
1456 wxString libNickname = fn.GetName();
1457 SYMBOL_LIB_TABLE* libTable = Prj().SchSymbolLibTable();
1458 const ENV_VAR_MAP& envVars = Pgm().GetLocalEnvVariables();
1459
1460 if( libTable->HasLibrary( libNickname ) )
1461 {
1462 wxString tmp;
1463 int suffix = 1;
1464
1465 while( libTable->HasLibrary( libNickname ) )
1466 {
1467 tmp.Printf( "%s%d", fn.GetName(), suffix );
1468 libNickname = tmp;
1469 suffix += 1;
1470 }
1471 }
1472
1474 row->SetNickName( libNickname );
1475
1476 wxString normalizedPath = NormalizePath( aLibFile, &envVars, Prj().GetProjectPath() );
1477
1478 if( aScope == GLOBAL_LIB_TABLE )
1479 {
1481 libTableFileName = SYMBOL_LIB_TABLE::GetGlobalTableFileName();
1482
1483 // We cannot normalize against the current project path when saving to global table.
1484 normalizedPath = NormalizePath( aLibFile, &envVars, wxEmptyString );
1485 }
1486
1487 row->SetFullURI( normalizedPath );
1488
1489 wxCHECK( libTable->InsertRow( row ), false );
1490
1491 try
1492 {
1493 libTable->Save( libTableFileName.GetFullPath() );
1494 }
1495 catch( const IO_ERROR& ioe )
1496 {
1497 wxString msg = aScope == GLOBAL_LIB_TABLE ? _( "Error saving global library table." )
1498 : _( "Error saving project library table." );
1499
1500 wxMessageDialog dlg( this, msg, _( "File Save Error" ), wxOK | wxICON_ERROR );
1501 dlg.SetExtendedMessage( ioe.What() );
1502 dlg.ShowModal();
1503
1504 return false;
1505 }
1506
1507 return true;
1508}
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 451 of file eda_base_frame.cpp.

452{
454 ACTION_MENU* helpMenu = new ACTION_MENU( false, commonControl );
455
456 helpMenu->Add( ACTIONS::help );
457 helpMenu->Add( ACTIONS::gettingStarted );
458 helpMenu->Add( ACTIONS::listHotKeys );
459 helpMenu->Add( ACTIONS::getInvolved );
460 helpMenu->Add( ACTIONS::donate );
461 helpMenu->Add( ACTIONS::reportBug );
462
463 helpMenu->AppendSeparator();
464 helpMenu->Add( _( "&About KiCad" ), "", wxID_ABOUT, BITMAPS::about );
465
466 // Trailing space keeps OSX from hijacking our menu (and disabling everything in it).
467 aMenuBar->Append( helpMenu, _( "&Help" ) + wxS( " " ) );
468}
static TOOL_ACTION reportBug
Cursor control event types.
Definition: actions.h:187
static TOOL_ACTION donate
Definition: actions.h:185
static TOOL_ACTION listHotKeys
Definition: actions.h:184
static TOOL_ACTION getInvolved
Definition: actions.h:186
static TOOL_ACTION gettingStarted
Definition: actions.h:182
static TOOL_ACTION help
Definition: actions.h:183
Defines the structure of a menu based on ACTIONs.
Definition: action_menu.h:49
Handle actions that are shared between different applications.

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

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

◆ AddStandardSubMenus()

void EDA_DRAW_FRAME::AddStandardSubMenus ( TOOL_MENU aMenu)
inherited

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

zoom and grid).

Definition at line 556 of file eda_draw_frame.cpp.

557{
559 CONDITIONAL_MENU& aMenu = aToolMenu.GetMenu();
560
561 aMenu.AddSeparator( 1000 );
562
563 std::shared_ptr<ZOOM_MENU> zoomMenu = std::make_shared<ZOOM_MENU>( this );
564 zoomMenu->SetTool( commonTools );
565 aToolMenu.RegisterSubMenu( zoomMenu );
566
567 std::shared_ptr<GRID_MENU> gridMenu = std::make_shared<GRID_MENU>( this );
568 gridMenu->SetTool( commonTools );
569 aToolMenu.RegisterSubMenu( gridMenu );
570
571 aMenu.AddMenu( zoomMenu.get(), SELECTION_CONDITIONS::ShowAlways, 1000 );
572 aMenu.AddMenu( gridMenu.get(), SELECTION_CONDITIONS::ShowAlways, 1000 );
573}
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 104 of file units_provider.h.

105 {
107 aTextValue );
108
109 return EDA_ANGLE( angle, DEGREES_T );
110 }
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:449
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 718 of file eda_draw_frame.cpp.

720{
721 if( m_messagePanel )
722 m_messagePanel->AppendMessage( aTextUpper, aTextLower, aPadding );
723}
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 509 of file symbol_editor.cpp.

511{
512 COMMON_SETTINGS* cfg = Pgm().GetCommonSettings();
514 SYMBOL_LIB_TABLE* tbl = Prj().SchSymbolLibTable();
515 std::vector<wxString> libNicknames = tbl->GetLogicalLibs();
516 wxArrayString headers;
517 std::vector<wxArrayString> itemsToDisplay;
518
519 headers.Add( _( "Nickname" ) );
520 headers.Add( _( "Description" ) );
521
522 for( const wxString& nickname : libNicknames )
523 {
524 if( alg::contains( project.m_PinnedSymbolLibs, nickname )
525 || alg::contains( cfg->m_Session.pinned_symbol_libs, nickname ) )
526 {
527 wxArrayString item;
528 item.Add( LIB_TREE_MODEL_ADAPTER::GetPinningSymbol() + nickname );
529 item.Add( tbl->GetDescription( nickname ) );
530 itemsToDisplay.push_back( item );
531 }
532 }
533
534 for( const wxString& nickname : libNicknames )
535 {
536 if( !alg::contains( project.m_PinnedSymbolLibs, nickname )
537 && !alg::contains( cfg->m_Session.pinned_symbol_libs, nickname ) )
538 {
539 wxArrayString item;
540 item.Add( nickname );
541 item.Add( tbl->GetDescription( nickname ) );
542 itemsToDisplay.push_back( item );
543 }
544 }
545
546 EDA_LIST_DIALOG* dlg = new EDA_LIST_DIALOG( this, _( "Save Symbol As" ), headers,
547 itemsToDisplay, aLibraryPreselect, false );
548
549 dlg->SetListLabel( _( "Save in library:" ) );
550 dlg->SetOKLabel( _( "Save" ) );
551
552 wxBoxSizer* bNameSizer = new wxBoxSizer( wxHORIZONTAL );
553
554 wxStaticText* label = new wxStaticText( dlg, wxID_ANY, _( "Name:" ) );
555 bNameSizer->Add( label, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 5 );
556
557 wxTextCtrl* nameTextCtrl = new wxTextCtrl( dlg, ID_SAVE_AS_NAME, aSymbolName );
558 bNameSizer->Add( nameTextCtrl, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
559
560 wxButton* newLibraryButton = new wxButton( dlg, ID_MAKE_NEW_LIBRARY, _( "New Library..." ) );
561 dlg->m_ButtonsSizer->Prepend( 80, 20 );
562 dlg->m_ButtonsSizer->Prepend( newLibraryButton, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 10 );
563
564 dlg->GetSizer()->Prepend( bNameSizer, 0, wxEXPAND|wxTOP|wxLEFT|wxRIGHT, 5 );
565
566 dlg->Bind( wxEVT_BUTTON,
567 [dlg]( wxCommandEvent& )
568 {
569 dlg->EndModal( ID_MAKE_NEW_LIBRARY );
571
572 // Move nameTextCtrl to the head of the tab-order
573 if( dlg->GetChildren().DeleteObject( nameTextCtrl ) )
574 dlg->GetChildren().Insert( nameTextCtrl );
575
576 dlg->SetInitialFocus( nameTextCtrl );
577
578 dlg->Layout();
579 dlg->GetSizer()->Fit( dlg );
580
581 return dlg;
582}
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:148
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:177
@ 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 182 of file symbol_editor.cpp.

183{
185 Unbind( wxEVT_IDLE, &SYMBOL_EDIT_FRAME::centerItemIdleHandler, this );
186}
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 1320 of file eda_base_frame.cpp.

1321{
1322 SetUserUnits( aUnits );
1324
1325 wxCommandEvent e( UNITS_CHANGED );
1326 ProcessEventLocally( e );
1327}
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 1202 of file eda_base_frame.cpp.

1203{
1204 wxCHECK_RET( aFileName.IsOk(), wxT( "Invalid file name!" ) );
1205
1206 wxFileName autoSaveFileName = aFileName;
1207
1208 // Check for auto save file.
1209 autoSaveFileName.SetName( GetAutoSaveFilePrefix() + aFileName.GetName() );
1210
1211 wxLogTrace( traceAutoSave,
1212 wxT( "Checking for auto save file " ) + autoSaveFileName.GetFullPath() );
1213
1214 if( !autoSaveFileName.FileExists() )
1215 return;
1216
1217 wxString msg = wxString::Format( _( "Well this is potentially embarrassing!\n"
1218 "It appears that the last time you were editing\n"
1219 "%s\n"
1220 "KiCad exited before saving.\n"
1221 "\n"
1222 "Do you wish to open the auto-saved file instead?" ),
1223 aFileName.GetFullName() );
1224
1225 int response = wxMessageBox( msg, Pgm().App().GetAppDisplayName(), wxYES_NO | wxICON_QUESTION,
1226 this );
1227
1228 // Make a backup of the current file, delete the file, and rename the auto save file to
1229 // the file name.
1230 if( response == wxYES )
1231 {
1232 if( !wxRenameFile( autoSaveFileName.GetFullPath(), aFileName.GetFullPath() ) )
1233 {
1234 wxMessageBox( _( "The auto save file could not be renamed to the board file name." ),
1235 Pgm().App().GetAppDisplayName(), wxOK | wxICON_EXCLAMATION, this );
1236 }
1237 }
1238 else
1239 {
1240 wxLogTrace( traceAutoSave,
1241 wxT( "Removing auto save file " ) + autoSaveFileName.GetFullPath() );
1242
1243 // Remove the auto save file when using the previous file as is.
1244 wxRemoveFile( autoSaveFileName.GetFullPath() );
1245 }
1246}
static wxString GetAutoSaveFilePrefix()
const wxChar *const traceAutoSave
Flag to enable auto save feature debug tracing.

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

Referenced by PCB_EDIT_FRAME::OpenProjectFiles().

◆ ClearFileHistory()

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

Removes all files from the file history.

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

Definition at line 956 of file eda_base_frame.cpp.

957{
958 if( !aFileHistory )
959 aFileHistory = m_fileHistory;
960
961 wxASSERT( aFileHistory );
962
963 aFileHistory->ClearFileHistory();
964
965 // Update the menubar to update the file history menu
966 if( GetMenuBar() )
967 {
969 GetMenuBar()->Refresh();
970 }
971}
FILE_HISTORY * m_fileHistory
virtual void ReCreateMenuBar()
Recreates the menu bar.
void ClearFileHistory()
Clear all entries from the file history.

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

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

◆ ClearMsgPanel()

void SYMBOL_EDIT_FRAME::ClearMsgPanel ( )
inlineoverridevirtual

Clear all messages from the message panel.

Reimplemented from EDA_DRAW_FRAME.

Definition at line 242 of file symbol_edit_frame.h.

243 {
245 }

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

1372{
1373 if( aItemCount == 0 )
1374 return;
1375
1376 UNDO_REDO_CONTAINER& list = whichList == UNDO_LIST ? m_undoList : m_redoList;
1377
1378 for( PICKED_ITEMS_LIST* command : list.m_CommandsList )
1379 {
1380 command->ClearListAndDeleteItems();
1381 delete command;
1382 }
1383
1384 list.m_CommandsList.clear();
1385}
UNDO_REDO_CONTAINER m_undoList
UNDO_REDO_CONTAINER m_redoList
A holder to handle information on schematic or board items.
void ClearListAndDeleteItems()
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 221 of file symbol_edit_frame.h.

222 {
223 // Generate a wxCloseEvent
224 Close( false );
225 }

◆ 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:184
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:1478
void ClearCaches()
Definition: lib_symbol.cpp:530
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:101
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 341 of file eda_base_frame.h.

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

References EDA_BASE_FRAME::m_configName.

◆ CopySymbolToClipboard()

void SYMBOL_EDIT_FRAME::CopySymbolToClipboard ( )

Definition at line 761 of file symbol_editor.cpp.

762{
763 std::vector<LIB_ID> symbols;
764
765 if( GetTreeLIBIDs( symbols ) == 0 )
766 return;
767
768 STRING_FORMATTER formatter;
769
770 for( LIB_ID& libId : symbols )
771 {
772 LIB_SYMBOL* symbol = m_libMgr->GetBufferedSymbol( libId.GetLibItemName(),
773 libId.GetLibNickname() );
774
775 if( !symbol )
776 continue;
777
778 std::unique_ptr<LIB_SYMBOL> tmp = symbol->Flatten();
779 SCH_SEXPR_PLUGIN::FormatLibSymbol( tmp.get(), formatter );
780 }
781
782 wxLogNull doNotLog; // disable logging of failed clipboard actions
783
784 auto clipboard = wxTheClipboard;
785 wxClipboardLocker clipboardLock( clipboard );
786
787 if( !clipboardLock || !clipboard->IsOpened() )
788 return;
789
790 auto data = new wxTextDataObject( wxString( formatter.GetString().c_str(), wxConvUTF8 ) );
791 clipboard->SetData( data );
792
793 clipboard->Flush();
794}
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:98
std::unique_ptr< LIB_SYMBOL > Flatten() const
Return a flattened symbol inheritance to the caller.
Definition: lib_symbol.cpp:460
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 821 of file eda_base_frame.cpp.

822{
823#if defined( __WXOSX_MAC__ )
825#else
826 m_infoBar = new WX_INFOBAR( this, &m_auimgr );
827
828 m_auimgr.AddPane( m_infoBar, EDA_PANE().InfoBar().Name( "InfoBar" ).Top().Layer(1) );
829#endif
830}
virtual wxWindow * GetToolCanvas() const =0
Canvas access.
A modified version of the wxInfoBar class that allows us to:
Definition: infobar.h:75

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

Referenced by SYMBOL_VIEWER_FRAME::SYMBOL_VIEWER_FRAME().

◆ CreateNewSymbol()

void SYMBOL_EDIT_FRAME::CreateNewSymbol ( )

Create a new symbol in the selected library.

Definition at line 297 of file symbol_editor.cpp.

298{
300
301 wxArrayString rootSymbols;
302 wxString lib = getTargetLib();
303
304 if( !m_libMgr->LibraryExists( lib ) )
305 {
306 lib = SelectLibraryFromList();
307
308 if( !m_libMgr->LibraryExists( lib ) )
309 return;
310 }
311
312 m_libMgr->GetRootSymbolNames( lib, rootSymbols );
313
314 rootSymbols.Sort();
315
316 DIALOG_LIB_NEW_SYMBOL dlg( this, &rootSymbols );
317 dlg.SetMinSize( dlg.GetSize() );
318
319 if( dlg.ShowModal() == wxID_CANCEL )
320 return;
321
322 if( dlg.GetName().IsEmpty() )
323 {
324 wxMessageBox( _( "This new symbol has no name and cannot be created." ) );
325 return;
326 }
327
328 wxString name = dlg.GetName();
329
330 // Currently, symbol names cannot include a space, that breaks libraries:
331 name.Replace( " ", "_" );
332
333 // Test if there is a symbol with this name already.
334 if( !lib.empty() && m_libMgr->SymbolExists( name, lib ) )
335 {
336 wxString msg = wxString::Format( _( "Symbol '%s' already exists in library '%s'." ),
337 name,
338 lib );
339
340 KIDIALOG errorDlg( this, msg, _( "Confirmation" ), wxOK | wxCANCEL | wxICON_WARNING );
341 errorDlg.SetOKLabel( _( "Overwrite" ) );
342 errorDlg.DoNotShowCheckbox( __FILE__, __LINE__ );
343
344 if( errorDlg.ShowModal() == wxID_CANCEL )
345 return;
346 }
347
348 LIB_SYMBOL new_symbol( name ); // do not create symbol on the heap, it will be buffered soon
349
350 wxString parentSymbolName = dlg.GetParentSymbolName();
351
352 if( parentSymbolName.IsEmpty() )
353 {
354 new_symbol.GetReferenceField().SetText( dlg.GetReference() );
355 new_symbol.SetUnitCount( dlg.GetUnitCount() );
356
357 // Initialize new_symbol.m_TextInside member:
358 // if 0, pin text is outside the body (on the pin)
359 // if > 0, pin text is inside the body
360 if( dlg.GetPinNameInside() )
361 {
362 new_symbol.SetPinNameOffset( dlg.GetPinTextPosition() );
363
364 if( new_symbol.GetPinNameOffset() == 0 )
365 new_symbol.SetPinNameOffset( 1 );
366 }
367 else
368 {
369 new_symbol.SetPinNameOffset( 0 );
370 }
371
372 ( dlg.GetPowerSymbol() ) ? new_symbol.SetPower() : new_symbol.SetNormal();
373 new_symbol.SetShowPinNumbers( dlg.GetShowPinNumber() );
374 new_symbol.SetShowPinNames( dlg.GetShowPinName() );
375 new_symbol.LockUnits( !dlg.GetUnitsInterchangeable() );
376 new_symbol.SetIncludeInBom( dlg.GetIncludeInBom() );
377 new_symbol.SetIncludeOnBoard( dlg.GetIncludeOnBoard() );
378
379 if( dlg.GetUnitCount() < 2 )
380 new_symbol.LockUnits( false );
381
382 new_symbol.SetConversion( dlg.GetAlternateBodyStyle() );
383 }
384 else
385 {
386 LIB_SYMBOL* parent = m_libMgr->GetAlias( parentSymbolName, lib );
387 wxCHECK( parent, /* void */ );
388 new_symbol.SetParent( parent );
389
390 // Inherit the parent mandatory field attributes.
391 for( int id = 0; id < MANDATORY_FIELDS; ++id )
392 {
393 LIB_FIELD* field = new_symbol.GetFieldById( id );
394
395 // the MANDATORY_FIELDS are exactly that in RAM.
396 wxCHECK( field, /* void */ );
397
398 LIB_FIELD* parentField = parent->GetFieldById( id );
399
400 wxCHECK( parentField, /* void */ );
401
402 *field = *parentField;
403
404 switch( id )
405 {
406 case REFERENCE_FIELD:
407 // parent's reference already copied
408 break;
409
410 case VALUE_FIELD:
411 if( parent->IsPower() )
412 field->SetText( name );
413 break;
414
415 case FOOTPRINT_FIELD:
416 case DATASHEET_FIELD:
417 // - footprint might be the same as parent, but might not
418 // - datasheet is most likely different
419 // - probably best to play it safe and copy neither
420 field->SetText( wxEmptyString );
421 break;
422 }
423
424 field->SetParent( &new_symbol );
425 }
426 }
427
428 m_libMgr->UpdateSymbol( &new_symbol, lib );
429 SyncLibraries( false );
430 LoadSymbol( name, lib, 1 );
431
432 // must be called after loadSymbol, that calls SetShowDeMorgan, but
433 // because the symbol is empty,it looks like it has no alternate body
434 SetShowDeMorgan( dlg.GetAlternateBodyStyle() );
435}
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:163
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:60
LIB_FIELD * GetFieldById(int aId) const
Return pointer to the requested field.
bool IsPower() const
Definition: lib_symbol.cpp:552
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(), LIB_SYMBOL::GetFieldById(), DIALOG_LIB_NEW_SYMBOL::GetIncludeInBom(), DIALOG_LIB_NEW_SYMBOL::GetIncludeOnBoard(), DIALOG_LIB_NEW_SYMBOL::GetName(), 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(), 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.

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

◆ CurrentToolName()

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

Definition at line 110 of file tools_holder.cpp.

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

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

Referenced by TOOLS_HOLDER::ShowChangedLanguage().

◆ 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 713 of file symbol_editor.cpp.

714{
715 std::vector<LIB_ID> toDelete = GetSelectedLibIds();
716
717 if( toDelete.empty() )
718 toDelete.emplace_back( GetTargetLibId() );
719
720 for( LIB_ID& libId : toDelete )
721 {
722 if( m_libMgr->IsSymbolModified( libId.GetLibItemName(), libId.GetLibNickname() )
723 && !IsOK( this, wxString::Format( _( "The symbol '%s' has been modified.\n"
724 "Do you want to remove it from the library?" ),
725 libId.GetUniStringLibItemName() ) ) )
726 {
727 continue;
728 }
729
730 if( m_libMgr->HasDerivedSymbols( libId.GetLibItemName(), libId.GetLibNickname() ) )
731 {
732 wxString msg;
733
734 msg.Printf(
735 _( "The symbol %s is used to derive other symbols.\n"
736 "Deleting this symbol will delete all of the symbols derived from it.\n\n"
737 "Do you wish to delete this symbol and all of its derivatives?" ),
738 libId.GetLibItemName().wx_str() );
739
740 wxMessageDialog::ButtonLabel yesButtonLabel( _( "Delete Symbol" ) );
741 wxMessageDialog::ButtonLabel noButtonLabel( _( "Keep Symbol" ) );
742
743 wxMessageDialog dlg( this, msg, _( "Warning" ),
744 wxYES_NO | wxYES_DEFAULT | wxICON_QUESTION | wxCENTER );
745 dlg.SetYesNoLabels( yesButtonLabel, noButtonLabel );
746
747 if( dlg.ShowModal() == wxID_NO )
748 continue;
749 }
750
751 if( IsCurrentSymbol( libId ) )
752 emptyScreen();
753
754 m_libMgr->RemoveSymbol( libId.GetLibItemName(), libId.GetLibNickname() );
755 }
756
758}
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:342

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

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

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

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

◆ DisplayConstraintsMsg()

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

Definition at line 582 of file eda_draw_frame.cpp.

583{
584 SetStatusText( msg, 7 );
585}

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

589{
590 wxString msg;
591
592 msg.Printf( "grid %s", MessageTextFromValue( GetCanvas()->GetGAL()->GetGridSize().x, false ) );
593
594 SetStatusText( msg, 4 );
595}
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 576 of file eda_draw_frame.cpp.

577{
578 SetStatusText( msg, 6 );
579}

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

599{
600 wxString msg;
601
602 switch( GetUserUnits() )
603 {
604 case EDA_UNITS::INCHES: msg = _( "inches" ); break;
605 case EDA_UNITS::MILS: msg = _( "mils" ); break;
606 case EDA_UNITS::MILLIMETRES: msg = _( "mm" ); break;
607 default: msg = _( "Units" ); break;
608 }
609
610 SetStatusText( msg, 5 );
611}
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().

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

1150{
1151 for( const wxFileName& file : m_AcceptedFiles )
1152 {
1153 wxString fn = file.GetFullPath();
1154 m_toolManager->RunAction( *m_acceptedExts.at( file.GetExt() ), true, &fn );
1155 }
1156}
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 797 of file symbol_editor.cpp.

798{
799 LIB_ID libId = GetTargetLibId();
800 wxString lib = libId.GetLibNickname();
801
802 if( !m_libMgr->LibraryExists( lib ) )
803 return;
804
805 std::vector<LIB_SYMBOL*> newSymbols;
806
807 if( aFromClipboard )
808 {
809 wxLogNull doNotLog; // disable logging of failed clipboard actions
810
811 auto clipboard = wxTheClipboard;
812 wxClipboardLocker clipboardLock( clipboard );
813
814 if( !clipboardLock
815 || !( clipboard->IsSupported( wxDF_TEXT )
816 || clipboard->IsSupported( wxDF_UNICODETEXT ) ) )
817 {
818 return;
819 }
820
821 wxTextDataObject data;
822 clipboard->GetData( data );
823 wxString symbolSource = data.GetText();
824
825 std::unique_ptr<STRING_LINE_READER> reader = std::make_unique<STRING_LINE_READER>( TO_UTF8( symbolSource ), "Clipboard" );
826 LIB_SYMBOL* newSymbol = nullptr;
827
828 do
829 {
830 try
831 {
832 newSymbol = SCH_SEXPR_PLUGIN::ParseLibSymbol( *reader );
833 }
834 catch( IO_ERROR& e )
835 {
836 wxLogMessage( "Can not paste: %s", e.Problem() );
837 break;
838 }
839
840 if( newSymbol )
841 newSymbols.emplace_back( newSymbol );
842
843 reader.reset( new STRING_LINE_READER( *reader ) );
844 }
845 while( newSymbol );
846 }
847 else
848 {
849 LIB_SYMBOL* srcSymbol = m_libMgr->GetBufferedSymbol( libId.GetLibItemName(), lib );
850
851 wxCHECK( srcSymbol, /* void */ );
852
853 newSymbols.emplace_back( new LIB_SYMBOL( *srcSymbol ) );
854
855 // Derive from same parent.
856 if( srcSymbol->IsAlias() )
857 {
858 std::shared_ptr< LIB_SYMBOL > srcParent = srcSymbol->GetParent().lock();
859
860 wxCHECK( srcParent, /* void */ );
861
862 newSymbols.back()->SetParent( srcParent.get() );
863 }
864 }
865
866 if( newSymbols.empty() )
867 return;
868
869 for( LIB_SYMBOL* symbol : newSymbols )
870 {
871 ensureUniqueName( symbol, lib );
872 m_libMgr->UpdateSymbol( symbol, lib );
873
874 LoadOneLibrarySymbolAux( symbol, lib, GetUnit(), GetConvert() );
875 }
876
877 SyncLibraries( false );
878 m_treePane->GetLibTree()->SelectLibId( LIB_ID( lib, newSymbols[0]->GetName() ) );
879
880 for( LIB_SYMBOL* symbol : newSymbols )
881 delete symbol;
882}
virtual const wxString Problem() const
what was the problem?
Definition: exceptions.cpp:46
const UTF8 & GetLibItemName() const
Definition: lib_id.h:101
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:183
LIB_SYMBOL_REF & GetParent()
Definition: lib_symbol.h:125
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::OnMonochromeChecked(), SCH_EDIT_FRAME::OpenProjectFiles(), SCH_EDITOR_CONTROL::Paste(), SCH_DRAWING_TOOLS::PlaceSymbol(), SCH_PRINTOUT::PrintPage(), DIALOG_CHANGE_SYMBOLS::processSymbol(), 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_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(), and Revert().

◆ ensureUniqueName()

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

Definition at line 885 of file symbol_editor.cpp.

886{
887 wxCHECK( aSymbol, /* void */ );
888
889 int i = 1;
890 wxString newName = aSymbol->GetName();
891
892 // Append a number to the name until the name is unique in the library.
893 while( m_libMgr->SymbolExists( newName, aLibrary ) )
894 newName.Printf( "%s_%d", aSymbol->GetName(), i++ );
895
896 aSymbol->SetName( newName );
897}
wxString GetName() const override
Definition: lib_symbol.h:136
virtual void SetName(const wxString &aName)
Definition: lib_symbol.cpp:441

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

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

115{
116 wxString msg;
117 LIB_SYMBOL* symbol = getTargetSymbol();
118
119 if( !symbol )
120 {
121 ShowInfoBarError( _( "There is no symbol selected to save." ) );
122 return;
123 }
124
125 wxFileName fn;
126
127 fn.SetName( symbol->GetName().Lower() );
128 fn.SetExt( KiCadSymbolLibFileExtension );
129
130 wxFileDialog dlg( this, _( "Export Symbol" ), m_mruPath, fn.GetFullName(),
131 KiCadSymbolLibFileWildcard(), wxFD_SAVE );
132
133 if( dlg.ShowModal() == wxID_CANCEL )
134 return;
135
136 fn = dlg.GetPath();
137 fn.MakeAbsolute();
138
139 LIB_SYMBOL* old_symbol = nullptr;
140 SCH_IO_MGR::SCH_FILE_T pluginType = SCH_IO_MGR::GuessPluginTypeFromLibPath( fn.GetFullPath() );
141 SCH_PLUGIN::SCH_PLUGIN_RELEASER pi( SCH_IO_MGR::FindPlugin( pluginType ) );
142
143 if( fn.FileExists() )
144 {
145 try
146 {
147 old_symbol = pi->LoadSymbol( fn.GetFullPath(), symbol->GetName() );
148 }
149 catch( const IO_ERROR& ioe )
150 {
151 msg.Printf( _( "Error occurred attempting to load symbol library file '%s'." ),
152 fn.GetFullPath() );
153 DisplayErrorMessage( this, msg, ioe.What() );
154 return;
155 }
156
157 if( old_symbol )
158 {
159 msg.Printf( _( "Symbol %s already exists in library '%s'." ),
160 UnescapeString( symbol->GetName() ),
161 fn.GetFullName() );
162
163 KIDIALOG errorDlg( this, msg, _( "Confirmation" ), wxOK | wxCANCEL | wxICON_WARNING );
164 errorDlg.SetOKLabel( _( "Overwrite" ) );
165 errorDlg.DoNotShowCheckbox( __FILE__, __LINE__ );
166
167 if( errorDlg.ShowModal() == wxID_CANCEL )
168 return;
169 }
170 }
171
172 if( fn.Exists() && !fn.IsDirWritable() )
173 {
174 msg.Printf( _( "Insufficient permissions to save library '%s'." ),
175 fn.GetFullPath() );
176 DisplayError( this, msg );
177 return;
178 }
179
180 try
181 {
182 if( !fn.FileExists() )
183 pi->CreateSymbolLib( fn.GetFullPath() );
184
185 // The flattened symbol is most likely what the user would want. As some point in
186 // the future as more of the symbol library inheritance is implemented, this may have
187 // to be changes to save symbols of inherited symbols.
188 pi->SaveSymbol( fn.GetFullPath(), symbol->Flatten().release() );
189 }
190 catch( const IO_ERROR& ioe )
191 {
192 msg.Printf( _( "Failed to create symbol library file '%s'." ), fn.GetFullPath() );
193 DisplayErrorMessage( this, msg, ioe.What() );
194 msg.Printf( _( "Error creating symbol library '%s'." ), fn.GetFullName() );
195 SetStatusText( msg );
196 return;
197 }
198
199 m_mruPath = fn.GetPath();
200
201 msg.Printf( _( "Symbol %s saved to library '%s'." ),
202 UnescapeString( symbol->GetName() ),
203 fn.GetFullPath() );
204 SetStatusText( msg );
205
206 // See if the user wants it added to a library table (global or project)
207 SYMBOL_LIB_TABLE* libTable = SelectSymLibTable( true );
208
209 if( libTable )
210 {
211 if( !m_libMgr->AddLibrary( fn.GetFullPath(), libTable ) )
212 {
213 DisplayError( this, _( "Could not open the library file." ) );
214 return;
215 }
216
217 bool globalTable = ( libTable == &SYMBOL_LIB_TABLE::GetGlobalLibTable() );
218 saveSymbolLibTables( globalTable, !globalTable );
219 }
220}
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:299
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 908 of file eda_draw_frame.cpp.

909{
910 std::vector<wxWindow*> dialogs;
911
912 for( wxWindow* window : GetChildren() )
913 {
914 if( dynamic_cast<DIALOG_SHIM*>( window ) )
915 dialogs.push_back( window );
916 }
917
918 return dialogs;
919}
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( "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 833 of file eda_base_frame.cpp.

834{
835#if defined( __WXOSX_MAC__ )
836 m_auimgr.Update();
837#else
838 // Call Update() to fix all pane default sizes, especially the "InfoBar" pane before
839 // hiding it.
840 m_auimgr.Update();
841
842 // We don't want the infobar displayed right away
843 m_auimgr.GetPane( "InfoBar" ).Hide();
844 m_auimgr.Update();
845#endif
846}

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

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

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

Referenced by PCB_SELECTION_TOOL::doSyncSelection(), PCB_EDIT_FRAME::ExecuteRemoteCommand(), PCB_SELECTION_TOOL::FindItem(), SCH_EDITOR_CONTROL::FindNext(), SCH_EDIT_FRAME::FocusOnItem(), 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 saveLibrary().

◆ GetAboutTitle()

const wxString & EDA_BASE_FRAME::GetAboutTitle ( ) const
inlineinherited

◆ 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_EDITOR_CONTROL::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(), DIALOG_SYMBOL_REMAP::OnRemapSymbols(), 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::processSymbol(), SCH_EDIT_TOOL::Properties(), SCH_EDIT_FRAME::PutDataInPreviousState(), RebuildView(), SCH_EDIT_FRAME::RecalculateConnections(), SCH_EDIT_FRAME::RecomputeIntersheetRefs(), SYMBOL_VIEWER_FRAME::ReCreateLibList(), SCH_EDITOR_CONTROL::Redo(), DIALOG_ERC::redrawDrawPanel(), SCH_BASE_FRAME::RedrawScreen(), SCH_BASE_FRAME::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(), 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_EDITOR_CONTROL::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:187
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:166
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(), 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 422 of file eda_base_frame.h.

422{ 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 1388 of file symbol_edit_frame.cpp.

1389{
1390 return m_toolManager->GetTool<EE_SELECTION_TOOL>()->GetSelection();
1391}

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(), 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 1260 of file symbol_edit_frame.cpp.

1261{
1262 if( !m_symbol )
1263 {
1264 // Gives a reasonable drawing area size
1265 int width = schIUScale.mmToIU( 50 );
1266 int height = schIUScale.mmToIU( 30 );
1267
1268 return BOX2I( VECTOR2I( -width/2, -height/2 ),
1269 VECTOR2I( width, height ) );
1270 }
1271 else
1272 {
1273 return m_symbol->Flatten()->GetUnitBoundingBox( m_unit, m_convert );
1274 }
1275}
BOX2< VECTOR2I > BOX2I
Definition: box2.h:847
VECTOR2< int > VECTOR2I
Definition: vector2d.h:618

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

532{
534}
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 916 of file eda_base_frame.cpp.

918{
919 if( !aFileHistory )
920 aFileHistory = m_fileHistory;
921
922 wxASSERT( aFileHistory );
923
924 int baseId = aFileHistory->GetBaseId();
925
926 wxASSERT( cmdId >= baseId && cmdId < baseId + (int) aFileHistory->GetCount() );
927
928 unsigned i = cmdId - baseId;
929
930 if( i < aFileHistory->GetCount() )
931 {
932 wxString fn = aFileHistory->GetHistoryFile( i );
933
934 if( wxFileName::FileExists( fn ) )
935 {
936 return fn;
937 }
938 else
939 {
940 DisplayErrorMessage( this, wxString::Format( _( "File '%s' was not found." ), fn ) );
941 aFileHistory->RemoveFileFromHistory( i );
942 }
943 }
944
945 // Update the menubar to update the file history menu
946 if( GetMenuBar() )
947 {
949 GetMenuBar()->Refresh();
950 }
951
952 return wxEmptyString;
953}

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

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

◆ GetFileHistory()

FILE_HISTORY & EDA_BASE_FRAME::GetFileHistory ( )
inlineinherited

Get the frame's main file history.

Returns
the main file history

Definition at line 406 of file eda_base_frame.h.

407 {
408 return *m_fileHistory;
409 }

References EDA_BASE_FRAME::m_fileHistory.

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

◆ GetFindHistoryList()

wxArrayString & EDA_DRAW_FRAME::GetFindHistoryList ( )
inlineinherited

◆ GetFindReplaceData()

◆ GetFrameType()

FRAME_T EDA_BASE_FRAME::GetFrameType ( ) const
inlineinherited

Definition at line 198 of file eda_base_frame.h.

198{ return m_ident; }

References EDA_BASE_FRAME::m_ident.

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

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

391{ return nullptr; }

Referenced by PCB_MARKER::GetMsgPanelInfo(), 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 485 of file sch_base_frame.cpp.

486{
487 return GetColorSettings()->GetColor( aLayer );
488}

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::processSymbol(), SCH_EDIT_FRAME::SelectUnit(), and DIALOG_CHANGE_SYMBOLS::updateFieldsList().

◆ GetMaxUndoItems()

int EDA_BASE_FRAME::GetMaxUndoItems ( ) const
inlineinherited

Definition at line 565 of file eda_base_frame.h.

565{ return m_undoRedoCountMax; }

References EDA_BASE_FRAME::m_undoRedoCountMax.

Referenced by EDA_DRAW_FRAME::SaveSettings().

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

862{
863 const VECTOR2I& gridOrigin = GetGridOrigin();
864 VECTOR2D gridSize = GetCanvas()->GetGAL()->GetGridSize();
865
866 double xOffset = fmod( gridOrigin.x, gridSize.x );
867 int x = KiROUND( (aPosition.x - xOffset) / gridSize.x );
868 double yOffset = fmod( gridOrigin.y, gridSize.y );
869 int y = KiROUND( (aPosition.y - yOffset) / gridSize.y );
870
871 return VECTOR2I( KiROUND( x * gridSize.x + xOffset ), KiROUND( y * gridSize.y + yOffset ) );
872}
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 875 of file eda_draw_frame.cpp.

876{
877 const VECTOR2I& gridOrigin = GetGridOrigin();
878 VECTOR2D gridSize = GetCanvas()->GetGAL()->GetGridSize() / 2.0;
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}

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

virtual ORIGIN_TRANSFORMS & EDA_BASE_FRAME::GetOriginTransforms ( )
inlinevirtualinherited

Return a reference to the default ORIGIN_TRANSFORMS object.

Reimplemented in PCB_BASE_FRAME.

Definition at line 130 of file eda_base_frame.h.

130{ return m_originTransforms; }
ORIGIN_TRANSFORMS m_originTransforms

References EDA_BASE_FRAME::m_originTransforms.

Referenced by PCB_DIMENSION_BASE::GetMsgPanelInfo(), PCB_DIM_LEADER::GetMsgPanelInfo(), EDA_SHAPE::ShapeGetMsgPanelInfo(), and PROPERTIES_PANEL::update().

◆ 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 wxSize SCH_BASE_FRAME::GetPageSizeIU ( ) const
overridevirtualinherited

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

Implements EDA_DRAW_FRAME.

Definition at line 155 of file sch_base_frame.cpp.

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

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

1027{
1028 // Virtual function. Base class implementation returns an empty string.
1029 return wxEmptyString;
1030}

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

135{ return RPT_SEVERITY_UNDEFINED; }
@ RPT_SEVERITY_UNDEFINED

References RPT_SEVERITY_UNDEFINED.

Referenced by RC_TREE_MODEL::GetValue().

◆ GetShowAllPins()

virtual bool SCH_BASE_FRAME::GetShowAllPins ( ) const
inlinevirtualinherited

Allow some frames to show/hide hidden pins.

The default impl shows all pins.

Reimplemented in SCH_EDIT_FRAME.

Definition at line 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:142
void ClearFlags(EDA_ITEM_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
Definition: eda_item.h:143
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:139
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 LIB_ID libId = GetTreeLIBID();
970
971 if( libId.IsValid() )
972 {
973 LIB_SYMBOL* alias = m_libMgr->GetAlias( libId.GetLibItemName(), libId.GetLibNickname() );
974 return alias;
975 }
976
977 return m_symbol;
978}
bool IsValid() const
Check if this LID_ID is valid.
Definition: lib_id.h:165

References SYMBOL_LIBRARY_MANAGER::GetAlias(), LIB_ID::GetLibItemName(), LIB_ID::GetLibNickname(), GetTreeLIBID(), 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 418 of file eda_draw_frame.h.

418{ return GetCanvas(); }

References EDA_DRAW_FRAME::GetCanvas().

◆ GetToolManager()

TOOL_MANAGER * TOOLS_HOLDER::GetToolManager ( ) const
inlineinherited

Return the MVC controller.

Definition at line 54 of file tools_holder.h.

54{ return m_toolManager; }

References TOOLS_HOLDER::m_toolManager.

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

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

1156{
1158
1159 aPrimaryUnit = GetUserUnits();
1160 aSecondaryUnits = EDA_UNITS::MILS;
1161
1162 if( EDA_UNIT_UTILS::IsImperialUnit( aPrimaryUnit ) )
1163 {
1164 if( cmnTool )
1165 aSecondaryUnits = cmnTool->GetLastMetricUnits();
1166 else
1167 aSecondaryUnits = EDA_UNITS::MILLIMETRES;
1168 }
1169 else
1170 {
1171 if( cmnTool )
1172 aSecondaryUnits = cmnTool->GetLastImperialUnits();
1173 else
1174 aSecondaryUnits = EDA_UNITS::MILS;
1175 }
1176}
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().

◆ GetUserUnits()

EDA_UNITS UNITS_PROVIDER::GetUserUnits ( ) const
inlineinherited

Definition at line 37 of file units_provider.h.

37{ return m_userUnits; }
EDA_UNITS m_userUnits

References UNITS_PROVIDER::m_userUnits.

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

◆ GetWindowSettings()

WINDOW_SETTINGS * EDA_BASE_FRAME::GetWindowSettings ( APP_SETTINGS_BASE aCfg)
virtualinherited

Return a pointer to the window settings for this frame.

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

Parameters
aCfgis this frame's config object

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

Definition at line 790 of file eda_base_frame.cpp.

791{
792 return &aCfg->m_Window;
793}

References APP_SETTINGS_BASE::m_Window.

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

◆ GetWindowSize()

wxSize EDA_BASE_FRAME::GetWindowSize ( )
inherited

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

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

Returns
the undecorated window size

Definition at line 1354 of file eda_base_frame.cpp.

1355{
1356#ifdef __WXGTK__
1357 wxSize winSize = GetSize();
1358
1359 // GTK includes the window decorations in the normal GetSize call,
1360 // so we have to use a GTK-specific sizing call that returns the
1361 // non-decorated window size.
1363 {
1364 int width = 0;
1365 int height = 0;
1366 GTKDoGetSize( &width, &height );
1367
1368 winSize.Set( width, height );
1369 }
1370#else
1371 wxSize winSize = GetSize();
1372#endif
1373
1374 return winSize;
1375}
@ KICAD_MAIN_FRAME_T
Definition: frame_type.h:64

References KICAD_MAIN_FRAME_T, and EDA_BASE_FRAME::m_ident.

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

◆ GetZoomLevelIndicator()

const wxString EDA_DRAW_FRAME::GetZoomLevelIndicator ( ) const
inherited

Return a human readable value for display in dialogs.

Definition at line 636 of file eda_draw_frame.cpp.

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

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

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

◆ handleActivateEvent()

void SCH_BASE_FRAME::handleActivateEvent ( wxActivateEvent &  aEvent)
overrideprotectedvirtualinherited

Handle a window activation event.

Reimplemented from EDA_DRAW_FRAME.

Definition at line 537 of file sch_base_frame.cpp.

538{
540
541#if defined( KICAD_USE_3DCONNEXION )
542 if( m_spaceMouse )
543 {
544 m_spaceMouse->SetFocus( aEvent.GetActive() );
545 }
546#endif
547}
virtual void handleActivateEvent(wxActivateEvent &aEvent)
Handle a window activation event.

References EDA_DRAW_FRAME::handleActivateEvent().

◆ handleIconizeEvent()

void SCH_BASE_FRAME::handleIconizeEvent ( wxIconizeEvent &  aEvent)
overrideprotectedvirtualinherited

Handle a window iconize event.

Parameters
aEventis the data for the event.

Reimplemented from EDA_BASE_FRAME.

Definition at line 550 of file sch_base_frame.cpp.

551{
553
554#if defined( KICAD_USE_3DCONNEXION )
555 if( m_spaceMouse && aEvent.IsIconized() )
556 {
557 m_spaceMouse->SetFocus( false );
558 }
559#endif
560}
virtual void handleIconizeEvent(wxIconizeEvent &aEvent)
Handle a window iconize event.

References EDA_BASE_FRAME::handleIconizeEvent().

◆ HandleSystemColorChange()

void EDA_BASE_FRAME::HandleSystemColorChange ( )
virtualinherited

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

Definition at line 1378 of file eda_base_frame.cpp.

1379{
1380 // Update the icon theme when the system theme changes and update the toolbars
1382 ThemeChanged();
1383
1384 // This isn't handled by ThemeChanged()
1385 if( GetMenuBar() )
1386 {
1387 // For icons in menus, icon scaling & hotkeys
1389 GetMenuBar()->Refresh();
1390 }
1391}
BITMAP_STORE * GetBitmapStore()
Definition: bitmap.cpp:93
void ThemeChanged()
Notifies the store that the icon theme has been changed by the user, so caches must be invalidated.
virtual void ThemeChanged()
Process light/dark theme change.

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

Referenced by EDA_BASE_FRAME::onSystemColorChange().

◆ HandleUpdateUIEvent()

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

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

enabled, checked, etc.).

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

Definition at line 367 of file eda_base_frame.cpp.

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

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

Referenced by EDA_BASE_FRAME::RegisterUIUpdateHandler().

◆ HardRedraw()

void SYMBOL_EDIT_FRAME::HardRedraw ( )
overridevirtual

Rebuild the GAL and redraw the screen.

Call when something went wrong.

Reimplemented from SCH_BASE_FRAME.

Definition at line 1236 of file symbol_edit_frame.cpp.

1237{
1238 SyncLibraries( true );
1239
1240 if( m_symbol )
1241 {
1243 EE_SELECTION& selection = selectionTool->GetSelection();
1244
1245 for( LIB_ITEM& item : m_symbol->GetDrawItems() )
1246 {
1247 if( !alg::contains( selection, &item ) )
1248 item.ClearSelected();
1249 else
1250 item.SetSelected();
1251 }
1252
1254 }
1255
1256 RebuildView();
1257}
EE_SELECTION & GetSelection()
The base class for drawable items used by schematic library symbols.
Definition: lib_item.h:61
LIB_ITEMS_CONTAINER & GetDrawItems()
Return a reference to the draw item list.
Definition: lib_symbol.h:519

References LIB_SYMBOL::ClearCaches(), alg::contains(), LIB_SYMBOL::GetDrawItems(), EE_SELECTION_TOOL::GetSelection(), TOOL_MANAGER::GetTool(), m_symbol, TOOLS_HOLDER::m_toolManager, RebuildView(), and SyncLibraries().

◆ HasKiway()

bool KIWAY_HOLDER::HasKiway ( ) const
inlineinherited

Safety check before asking for the Kiway reference.

Returns
true if kiway is non-null

Definition at line 63 of file kiway_holder.h.

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

References KIWAY_HOLDER::m_kiway.

Referenced by DIALOG_SHIM::~DIALOG_SHIM().

◆ HasLibModifications()

bool SYMBOL_EDIT_FRAME::HasLibModifications ( ) const

Check if any pending libraries have been modified.

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

Returns
True if there are any pending library modifications.

Definition at line 1344 of file symbol_edit_frame.cpp.

1345{
1346 wxCHECK( m_libMgr, false );
1347
1348 return m_libMgr->HasModifications();
1349}

References SYMBOL_LIBRARY_MANAGER::HasModifications(), and m_libMgr.

◆ help_name()

wxString EDA_BASE_FRAME::help_name ( )
virtualinherited

Reimplemented in KICAD_MANAGER_FRAME.

Definition at line 809 of file eda_base_frame.cpp.

810{
811 return Kiface().GetHelpFileName();
812}
KIFACE_BASE & Kiface()
Global KIFACE_BASE "get" accessor.
const wxString & GetHelpFileName() const
Return just the basename portion of the current help file.
Definition: kiface_base.h:110

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

Referenced by COMMON_CONTROL::ShowHelp().

◆ ImportHotkeyConfigFromFile()

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

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

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

◆ ImportSymbol()

void SYMBOL_EDIT_FRAME::ImportSymbol ( )

Definition at line 37 of file symbol_editor_import_export.cpp.

38{
39 wxString msg;
40 wxString libName = getTargetLib();
41
42 if( !m_libMgr->LibraryExists( libName ) )
43 {
44 libName = SelectLibraryFromList();
45
46 if( !m_libMgr->LibraryExists( libName ) )
47 return;
48 }
49
50 wxString wildcards = AllSymbolLibFilesWildcard()
53
54 wxFileDialog dlg( this, _( "Import Symbol" ), m_mruPath, wxEmptyString,
55 wildcards, wxFD_OPEN | wxFD_FILE_MUST_EXIST );
56
57 if( dlg.ShowModal() == wxID_CANCEL )
58 return;
59
60 wxFileName fn = dlg.GetPath();
61
62 if( fn.GetExt().IsEmpty() )
63 fn.SetExt( (dlg.GetFilterIndex() == 0) ?
65
66 m_mruPath = fn.GetPath();
67
68 wxArrayString symbols;
69 SCH_IO_MGR::SCH_FILE_T piType = SCH_IO_MGR::GuessPluginTypeFromLibPath( fn.GetFullPath() );
70 SCH_PLUGIN::SCH_PLUGIN_RELEASER pi( SCH_IO_MGR::FindPlugin( piType ) );
71
72 // TODO dialog to select the symbol to be imported if there is more than one
73 try
74 {
75 pi->EnumerateSymbolLib( symbols, fn.GetFullPath() );
76 }
77 catch( const IO_ERROR& ioe )
78 {
79 msg.Printf( _( "Cannot import symbol library '%s'." ), fn.GetFullPath() );
80 DisplayErrorMessage( this, msg, ioe.What() );
81 return;
82 }
83
84 if( symbols.empty() )
85 {
86 msg.Printf( _( "Symbol library file '%s' is empty." ), fn.GetFullPath() );
87 DisplayError( this, msg );
88 return;
89 }
90
91 wxString symbolName = symbols[0];
92 LIB_SYMBOL* entry = pi->LoadSymbol( fn.GetFullPath(), symbolName );
93
94 entry->SetName( EscapeString( entry->GetName(), CTX_LIBID ) );
95
96 if( m_libMgr->SymbolExists( entry->GetName(), libName ) )
97 {
98 msg.Printf( _( "Symbol %s already exists in library '%s'." ), symbolName, libName );
99
100 KIDIALOG errorDlg( this, msg, _( "Confirmation" ), wxOK | wxCANCEL | wxICON_WARNING );
101 errorDlg.SetOKLabel( _( "Overwrite" ) );
102 errorDlg.DoNotShowCheckbox( __FILE__, __LINE__ );
103
104 if( errorDlg.ShowModal() == wxID_CANCEL )
105 return;
106 }
107
108 m_libMgr->UpdateSymbol( entry, libName );
109 SyncLibraries( false );
110 LoadSymbol( entry->GetName(), libName, 1 );
111}
const std::string LegacySymbolLibFileExtension
wxString LegacySymbolLibFileWildcard()
wxString AllSymbolLibFilesWildcard()
wxString EscapeString(const wxString &aSource, ESCAPE_CONTEXT aContext)
The Escape/Unescape routines use HTML-entity-reference-style encoding to handle characters which are:...
@ CTX_LIBID
Definition: string_utils.h:55

References _, AllSymbolLibFilesWildcard(), CTX_LIBID, DisplayError(), DisplayErrorMessage(), KIDIALOG::DoNotShowCheckbox(), SCH_PLUGIN::EnumerateSymbolLib(), EscapeString(), LIB_SYMBOL::GetName(), getTargetLib(), SCH_IO_MGR::GuessPluginTypeFromLibPath(), KiCadSymbolLibFileExtension, KiCadSymbolLibFileWildcard(), LegacySymbolLibFileExtension, LegacySymbolLibFileWildcard(), SYMBOL_LIBRARY_MANAGER::LibraryExists(), LoadSymbol(), SCH_PLUGIN::LoadSymbol(), m_libMgr, EDA_BASE_FRAME::m_mruPath, SCH_BASE_FRAME::SelectLibraryFromList(), LIB_SYMBOL::SetName(), KIDIALOG::ShowModal(), SYMBOL_LIBRARY_MANAGER::SymbolExists(), SyncLibraries(), SYMBOL_LIBRARY_MANAGER::UpdateSymbol(), and IO_ERROR::What().

Referenced by SYMBOL_EDITOR_CONTROL::AddSymbol().

◆ initExitKey()

void EDA_BASE_FRAME::initExitKey ( )
protectedinherited

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

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

Definition at line 1256 of file eda_base_frame.cpp.

1257{
1258 wxAcceleratorEntry entries[1];
1259 entries[0].Set( wxACCEL_CTRL, int( 'Q' ), wxID_EXIT );
1260 wxAcceleratorTable accel( 1, entries );
1261 SetAcceleratorTable( accel );
1262}

◆ isAutoSaveRequired()

virtual bool EDA_BASE_FRAME::isAutoSaveRequired ( ) const
inlineprotectedvirtualinherited

Return the auto save status of the application.

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

Definition at line 615 of file eda_base_frame.h.

615{ return m_autoSaveRequired; }

References EDA_BASE_FRAME::m_autoSaveRequired.

Referenced by EDA_BASE_FRAME::ProcessEvent().

◆ IsContentModified()

bool SYMBOL_EDIT_FRAME::IsContentModified ( ) const
overridevirtual

Get if any symbols or libraries have been modified but not saved.

Returns
true if the any changes have not been saved

Reimplemented from EDA_BASE_FRAME.

Definition at line 1352 of file symbol_edit_frame.cpp.

1353{
1354 wxCHECK( m_libMgr, false );
1355
1356 // Test if the currently edited symbol is modified
1358 return true;
1359
1360 // Test if any library has been modified
1361 for( const wxString& libName : m_libMgr->GetLibraryNames() )
1362 {
1363 if( m_libMgr->IsLibraryModified( libName ) && !m_libMgr->IsLibraryReadOnly( libName ) )
1364 return true;
1365 }
1366
1367 return false;
1368}
bool IsLibraryReadOnly(const wxString &aLibrary) const
Return true if the library is stored in a read-only file.
bool IsLibraryModified(const wxString &aLibrary) const
Return true if library has unsaved modifications.
wxArrayString GetLibraryNames() const
Return the array of library names.

References GetCurSymbol(), SYMBOL_LIBRARY_MANAGER::GetLibraryNames(), SCH_BASE_FRAME::GetScreen(), IsContentModified(),