KiCad PCB EDA Suite
CVPCB_MAINFRAME Class Reference

The CvPcb application main window. More...

#include <cvpcb_mainframe.h>

Inheritance diagram for CVPCB_MAINFRAME:
KIWAY_PLAYER EDA_BASE_FRAME TOOLS_HOLDER KIWAY_HOLDER

Public Types

enum  CVPCB_FILTER_ACTION { FILTER_DISABLE, FILTER_ENABLE, FILTER_TOGGLE }
 The action to apply to a footprint filter when it is modified. More...
 
enum  CONTROL_TYPE { CONTROL_NONE, CONTROL_LIBRARY, CONTROL_COMPONENT, CONTROL_FOOTPRINT }
 The type of the controls present in the application. More...
 
enum  FOCUS_DIR { CHANGE_FOCUS_RIGHT, CHANGE_FOCUS_LEFT }
 Directions to rotate the focus through the listboxes is. More...
 
enum  ITEM_DIR { ITEM_NEXT, ITEM_PREV }
 Directions to move when selecting items. More...
 
enum  CRITERIA { ALL_COMPONENTS, SEL_COMPONENTS, NA_COMPONENTS, ASSOC_COMPONENTS }
 Criteria to use to identify sets of components. More...
 
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

 ~CVPCB_MAINFRAME ()
 
bool OpenProjectFiles (const std::vector< wxString > &aFileSet, int aCtl=0) override
 Open a project or set of files given by aFileList. More...
 
void KiwayMailIn (KIWAY_EXPRESS &aEvent) override
 Receive KIWAY_EXPRESS messages from other players. More...
 
bool IsContentModified () const override
 Get if the current associations have been modified but not saved. More...
 
DISPLAY_FOOTPRINTS_FRAMEGetFootprintViewerFrame () const
 
wxWindow * GetToolCanvas () const override
 Canvas access. More...
 
CVPCB_MAINFRAME::CONTROL_TYPE GetFocusedControl () const
 Find out which control currently has focus. More...
 
wxControl * GetFocusedControlObject () const
 Get a pointer to the currently focused control. More...
 
void SetFocusedControl (CVPCB_MAINFRAME::CONTROL_TYPE aControl)
 Set the focus to a specific control. More...
 
void OnSelectComponent (wxListEvent &event)
 Called when clicking on a component in component list window: More...
 
bool canCloseWindow (wxCloseEvent &aCloseEvent) override
 
void doCloseWindow () override
 
void ReCreateHToolbar ()
 
void ReCreateMenuBar () override
 Recreates the menu bar. More...
 
void ShowChangedLanguage () override
 Redraw the menus and what not in current language. More...
 
void AutomaticFootprintMatching ()
 Called by the automatic association button Read *.equ files to try to find corresponding footprint for each component that is not already linked to a footprint ( a "free" component ) format of a line: 'cmp_ref' 'footprint_name'. More...
 
void SetFootprintFilter (FOOTPRINTS_LISTBOX::FP_FILTER_T aFilter, CVPCB_MAINFRAME::CVPCB_FILTER_ACTION aAction)
 Set a filter criteria to either on/off or toggle the criteria. More...
 
void OnEnterFilteringText (wxCommandEvent &event)
 Called each time the text of m_tcFilterString is changed. More...
 
void UndoAssociation ()
 Undo the most recent associations that were performed. More...
 
void RedoAssociation ()
 Redo the most recently undone association. More...
 
int GetUndoCommandCount () const override
 
int GetRedoCommandCount () const override
 
void AssociateFootprint (const CVPCB_ASSOCIATION &aAssociation, bool aNewEntry=true, bool aAddUndoItem=true)
 Associate a footprint with a specific component in the list. More...
 
void BuildSymbolsListBox ()
 
void BuildFootprintsListBox ()
 
void BuildLibrariesListBox ()
 
bool SaveFootprintAssociation (bool doSaveSchematic)
 Save the edits that the user has done by sending them back to Eeschema via the kiway. More...
 
bool ReadNetListAndFpFiles (const std::string &aNetlist)
 Load the netlist file built on the fly by Eeschema and loads footprint libraries from fp lib tables. More...
 
int ReadSchematicNetlist (const std::string &aNetlist)
 Read the netlist (.net) file built on the fly by Eeschema. More...
 
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...
 
void DisplayStatus ()
 Update the information displayed on the status bar at bottom of the main frame. More...
 
bool LoadFootprintFiles ()
 Read the list of footprint (*.mod files) and generate the list of footprints. More...
 
void SendMessageToEESCHEMA (bool aClearHighligntOnly=false)
 Send a remote command to Eeschema via a socket,. More...
 
COMPONENTGetSelectedComponent ()
 Get the selected component from the component listbox. More...
 
void SetSelectedComponent (int aIndex, bool aSkipUpdate=false)
 Set the currently selected component in the components listbox. More...
 
std::vector< unsigned int > GetComponentIndices (CVPCB_MAINFRAME::CRITERIA aCriteria=CVPCB_MAINFRAME::ALL_COMPONENTS)
 Get the indices for all the components meeting the specified criteria in the components listbox. More...
 
wxString GetSelectedFootprint ()
 
void SetStatusText (const wxString &aText, int aNumber=0) override
 
virtual void ParseArgs (wxCmdLineParser &aParser)
 Handle command-line arguments in a frame-specific way. More...
 
virtual bool ShowModal (wxString *aResult=nullptr, wxWindow *aResultantFocusWindow=nullptr)
 Show this wxFrame as if it were a modal dialog, with all other instantiated wxFrames disabled until this KIWAY_PLAYER derivative calls DismissModal(). More...
 
bool Destroy () override
 Our version of Destroy() which is virtual from wxWidgets. More...
 
bool IsModal () const override
 Return true if the frame is shown in our modal mode and false if the frame is shown as an usual frame. More...
 
void SetModal (bool aIsModal)
 
bool IsDismissed ()
 
void DismissModal (bool aRetVal, const wxString &aResult=wxEmptyString)
 
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...
 
EDA_UNITS GetUserUnits () const
 Return the user units currently in use. More...
 
void SetUserUnits (EDA_UNITS aUnits)
 
void ChangeUserUnits (EDA_UNITS aUnits)
 
virtual void ToggleUserUnits ()
 
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...
 
virtual void OnMove (wxMoveEvent &aEvent)
 
virtual void OnSize (wxSizeEvent &aEvent)
 
void OnMaximize (wxMaximizeEvent &aEvent)
 
void SetAutoSaveInterval (int aInterval)
 
int GetAutoSaveInterval () const
 
bool IsType (FRAME_T aType) const
 
FRAME_T GetFrameType () const
 
virtual const SEARCH_STACKsys_search ()
 Return a SEARCH_STACK pertaining to entire program. More...
 
virtual wxString help_name ()
 
void OnKicadAbout (wxCommandEvent &event)
 
void OnPreferences (wxCommandEvent &event)
 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)
 Show the WX_INFOBAR displayed on the top of the canvas with a message and an error icon on the left of the infobar, and an optional closebox to the right. More...
 
void ShowInfoBarError (const wxString &aErrorMsg, bool aShowCloseButton, std::function< void(void)> aCallback)
 Show the WX_INFOBAR displayed on the top of the canvas with a message and an error icon on the left of the infobar, and an optional closebox to the right. More...
 
void ShowInfoBarWarning (const wxString &aWarningMsg, bool aShowCloseButton=false)
 Show the WX_INFOBAR displayed on the top of the canvas with a message and a warning icon on the left of the infobar. More...
 
void ShowInfoBarMsg (const wxString &aMsg, bool aShowCloseButton=false)
 Show the WX_INFOBAR displayed on the top of the canvas with a message and an info icon on the left of the infobar. More...
 
virtual APP_SETTINGS_BASEconfig () const
 Returns the settings object used in SaveSettings(), and is overloaded in KICAD_MANAGER_FRAME. More...
 
virtual void InstallPreferences (PAGED_DIALOG *, PANEL_HOTKEYS_EDITOR *)
 Allow a frame to load its preference panels (if any) into the preferences dialog. More...
 
void LoadWindowState (const wxString &aFileName)
 
virtual void LoadWindowState (const WINDOW_STATE &aState)
 Load frame state info from a configuration file. More...
 
void LoadWindowSettings (const WINDOW_SETTINGS *aCfg)
 Load window settings from the given settings object. More...
 
void SaveWindowSettings (WINDOW_SETTINGS *aCfg)
 Save window settings to the given settings object. More...
 
virtual WINDOW_SETTINGSGetWindowSettings (APP_SETTINGS_BASE *aCfg)
 Return a pointer to the window settings for this frame. More...
 
wxString ConfigBaseName () override
 Get the configuration base name. More...
 
virtual void SaveProjectSettings ()
 Save changes to the project settings to the project (.pro) file. More...
 
void ImportHotkeyConfigFromFile (std::map< std::string, TOOL_ACTION * > aActionMap, const wxString &aDefaultShortname)
 Prompt the user for a hotkey file to read, and read it. More...
 
wxString GetFileFromHistory (int cmdId, const wxString &type, FILE_HISTORY *aFileHistory=nullptr)
 Fetches the file name from the file history list. More...
 
void ClearFileHistory (FILE_HISTORY *aFileHistory=nullptr)
 Removes all files from the file history. More...
 
void UpdateFileHistory (const wxString &FullFileName, FILE_HISTORY *aFileHistory=nullptr)
 Update the list of recently opened files. More...
 
FILE_HISTORYGetFileHistory ()
 Get the frame's main file history. More...
 
void SetMruPath (const wxString &aPath)
 
wxString GetMruPath () const
 
virtual wxString GetCurrentFileName () const
 Get the full filename + path of the currently opened file in the frame. More...
 
void AddStandardHelpMenu (wxMenuBar *aMenuBar)
 Adds the standard KiCad help menu to the menubar. More...
 
bool IsWritable (const wxFileName &aFileName)
 Checks if aFileName can be written. More...
 
void CheckForAutoSaveFile (const wxFileName &aFileName)
 Check if an auto save file exists for aFileName and takes the appropriate action depending on the user input. More...
 
virtual void UpdateStatusBar ()
 Update the status bar information. More...
 
void CommonSettingsChanged (bool aEnvVarsChanged, bool aTextVarsChanged) override
 Notification event that some of the common (suite-wide) settings have changed. 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 ClearUndoORRedoList (UNDO_REDO_LIST aList, int aItemCount=-1)
 Remove the aItemCount of old commands from aList and delete commands, pickers and picked items if needed. More...
 
virtual void ClearUndoRedoList ()
 Clear the undo and redo list using ClearUndoORRedoList() More...
 
virtual void PushCommandToUndoList (PICKED_ITEMS_LIST *aItem)
 Add a command to undo in the undo list. More...
 
virtual void PushCommandToRedoList (PICKED_ITEMS_LIST *aItem)
 Add a command to redo in the redo list. More...
 
virtual PICKED_ITEMS_LISTPopCommandFromUndoList ()
 Return the last command to undo and remove it from list, nothing is deleted. More...
 
virtual PICKED_ITEMS_LISTPopCommandFromRedoList ()
 Return the last command to undo and remove it from list, nothing is deleted. More...
 
int GetMaxUndoItems () const
 
bool NonUserClose (bool aForce)
 
virtual void HandleSystemColorChange ()
 Update the UI in response to a change in the system colors. More...
 
TOOL_MANAGERGetToolManager () const
 Return the MVC controller. More...
 
virtual SELECTIONGetCurrentSelection ()
 Get the current selection from the canvas area. More...
 
virtual void PushTool (const std::string &actionName)
 NB: the definition of "tool" is different at the user level. More...
 
virtual void PopTool (const std::string &actionName)
 
bool ToolStackIsEmpty ()
 
std::string CurrentToolName () const
 
bool IsCurrentTool (const TOOL_ACTION &aAction) const
 
virtual void DisplayToolMsg (const wxString &msg)
 
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...
 
virtual void RefreshCanvas ()
 
HOLDER_TYPE GetType () const
 
KIWAYKiway () const
 Return a reference to the KIWAY that this object has an opportunity to participate in. More...
 
PROJECTPrj () const
 Return a reference to the PROJECT associated with this KIWAY. More...
 
void SetKiway (wxWindow *aDest, KIWAY *aKiway)
 It is only used for debugging, since "this" is not a wxWindow*. More...
 

Static Public Member Functions

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

Public Attributes

FOOTPRINT_LISTm_FootprintsList
 

Protected Member Functions

 CVPCB_MAINFRAME (KIWAY *aKiway, wxWindow *aParent)
 
void setupUIConditions () override
 Setup the UI conditions for the various actions and their controls in this frame. More...
 
void kiway_express (KIWAY_EXPRESS &aEvent)
 event handler, routes to derivative specific virtual KiwayMailIn() More...
 
void language_change (wxCommandEvent &event)
 An event handler called on a language menu selection. More...
 
void onAutoSaveTimer (wxTimerEvent &aEvent)
 Handle the auto save timer event. More...
 
virtual bool isAutoSaveRequired () const
 Return the auto save status of the application. More...
 
virtual bool doAutoSave ()
 This should be overridden by the derived class to handle the auto save feature. More...
 
void onSystemColorChange (wxSysColourChangedEvent &aEvent)
 
virtual void unitsChangeRefresh ()
 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 initExitKey ()
 Sets the common key-pair for exiting the application (Ctrl-Q) and ties it to the wxID_EXIT event id. More...
 
void ensureWindowIsOnScreen ()
 

Static Protected Member Functions

static wxString GetAutoSaveFilePrefix ()
 

Protected Attributes

bool m_modified
 
bool m_skipComponentSelect
 
bool m_initialized
 
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
 
wxSocketServer * m_socketServer
 
std::vector< wxSocketBase * > m_sockets
 interprocess communication More...
 
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_hasAutoSave
 
bool m_autoSaveState
 
int m_autoSaveInterval
 
wxTimer * m_autoSaveTimer
 
int m_undoRedoCountMax
 
wxString m_mruPath
 
EDA_UNITS m_userUnits
 Map containing the UI update handlers registered with wx for each action. More...
 
std::map< int, UIUpdateHandlerm_uiUpdateMap
 Set by the close window event handler after frames are asked if they can close. More...
 
bool m_isClosing
 Set by NonUserClose() to indicate that the user did not request the current close. More...
 
bool m_isNonUserClose
 
TOOL_MANAGERm_toolManager
 
ACTIONSm_actions
 
SELECTION m_dummySelection
 
std::vector< std::string > m_toolStack
 
bool m_immediateActions
 
MOUSE_DRAG_ACTION m_dragAction
 
bool m_moveWarpsCursor
 

Static Protected Attributes

static constexpr int KICAD_AUI_TB_STYLE = wxAUI_TB_DEFAULT_STYLE | wxAUI_TB_PLAIN_BACKGROUND
 < Default style flags used for wxAUI toolbars. More...
 

Private Member Functions

void setupTools ()
 Setup the tool system for the CVPCB main frame. More...
 
void setupEventHandlers ()
 Setup event handlers. More...
 
int buildEquivalenceList (FOOTPRINT_EQUIVALENCE_LIST &aList, wxString *aErrorMessages=nullptr)
 Read the .equ files and populate the list of equivalents. More...
 
void refreshAfterSymbolSearch (COMPONENT *aSymbol)
 

Private Attributes

NETLIST m_netlist
 
int m_filteringOptions
 
ACTION_TOOLBARm_mainToolBar
 
FOOTPRINTS_LISTBOXm_footprintListBox
 
LIBRARY_LISTBOXm_librariesListBox
 
COMPONENTS_LISTBOXm_symbolsListBox
 
wxTextCtrl * m_tcFilterString
 
wxStaticText * m_statusLine1
 
wxStaticText * m_statusLine2
 
wxStaticText * m_statusLine3
 
wxButton * m_saveAndContinue
 
TOOL_DISPATCHERm_toolDispatcher
 
ACTION_MENUm_footprintContextMenu
 
ACTION_MENUm_symbolsContextMenu
 
CVPCB_UNDO_REDO_LIST m_undoList
 
CVPCB_UNDO_REDO_LIST m_redoList
 

Friends

struct CV::IFACE
 

Detailed Description

The CvPcb application main window.

Definition at line 61 of file cvpcb_mainframe.h.

Member Enumeration Documentation

◆ CONTROL_TYPE

The type of the controls present in the application.

Enumerator
CONTROL_NONE 

No controls have focus.

CONTROL_LIBRARY 

Library listbox.

CONTROL_COMPONENT 

Component listbox.

CONTROL_FOOTPRINT 

Footprint listbox.

Definition at line 83 of file cvpcb_mainframe.h.

◆ CRITERIA

Criteria to use to identify sets of components.

Enumerator
ALL_COMPONENTS 

All components.

SEL_COMPONENTS 

Selected components.

NA_COMPONENTS 

Not associated components.

ASSOC_COMPONENTS 

Associated components.

Definition at line 314 of file cvpcb_mainframe.h.

315  {
318  NA_COMPONENTS,
320  };
Not associated components.

◆ CVPCB_FILTER_ACTION

The action to apply to a footprint filter when it is modified.

Enumerator
FILTER_DISABLE 

Turn off the filter.

FILTER_ENABLE 

Turn on the filter.

FILTER_TOGGLE 

Toggle the filter state.

Definition at line 73 of file cvpcb_mainframe.h.

74  {
78  };
Toggle the filter state.

◆ FOCUS_DIR

Directions to rotate the focus through the listboxes is.

Enumerator
CHANGE_FOCUS_RIGHT 
CHANGE_FOCUS_LEFT 

Definition at line 94 of file cvpcb_mainframe.h.

◆ HOLDER_TYPE

enum KIWAY_HOLDER::HOLDER_TYPE
inherited
Enumerator
DIALOG 
FRAME 
PANEL 

Definition at line 39 of file kiway_holder.h.

◆ ITEM_DIR

Directions to move when selecting items.

Enumerator
ITEM_NEXT 

The next item.

ITEM_PREV 

The previous item.

Definition at line 103 of file cvpcb_mainframe.h.

104  {
105  ITEM_NEXT,
106  ITEM_PREV
107  };

◆ UNDO_REDO_LIST

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

Enumerator
UNDO_LIST 
REDO_LIST 

Definition at line 109 of file eda_base_frame.h.

Constructor & Destructor Documentation

◆ ~CVPCB_MAINFRAME()

CVPCB_MAINFRAME::~CVPCB_MAINFRAME ( )

Definition at line 217 of file cvpcb_mainframe.cpp.

218 {
219  // Shutdown all running tools
220  if( m_toolManager )
222 
223  // Clean up the tool infrastructure
224  delete m_actions;
225  delete m_toolManager;
226  delete m_toolDispatcher;
227 
228  m_auimgr.UnInit();
229 }
void ShutdownAllTools()
Shutdown all tools with a currently registered event loop in this tool manager by waking them up with...
wxAuiManager m_auimgr
ACTIONS * m_actions
Definition: tools_holder.h:157
TOOL_DISPATCHER * m_toolDispatcher
TOOL_MANAGER * m_toolManager
Definition: tools_holder.h:156

References TOOLS_HOLDER::m_actions, EDA_BASE_FRAME::m_auimgr, m_toolDispatcher, TOOLS_HOLDER::m_toolManager, and TOOL_MANAGER::ShutdownAllTools().

◆ CVPCB_MAINFRAME()

CVPCB_MAINFRAME::CVPCB_MAINFRAME ( KIWAY aKiway,
wxWindow *  aParent 
)
protected

Definition at line 62 of file cvpcb_mainframe.cpp.

62  :
63  KIWAY_PLAYER( aKiway, aParent, FRAME_CVPCB, _( "Assign Footprints" ), wxDefaultPosition,
65 {
70  m_modified = false;
71  m_skipComponentSelect = false;
75  m_initialized = false;
76  m_aboutTitle = "CvPcb";
77 
78  // Give an icon
79  wxIcon icon;
80  icon.CopyFromBitmap( KiBitmap( BITMAPS::icon_cvpcb ) );
81  SetIcon( icon );
82 
83  SetAutoLayout( true );
84 
85  LoadSettings( config() );
86 
87  setupTools();
91 
92  // Create list of available footprints and symbols of the schematic
96 
97  m_auimgr.SetManagedWindow( this );
98 
99  m_auimgr.AddPane( m_mainToolBar, EDA_PANE().HToolbar().Name( "MainToolbar" ).Top().Layer(6) );
100 
101  m_auimgr.AddPane( m_librariesListBox, EDA_PANE().Palette().Name( "Libraries" ).Left().Layer(1)
102  .Caption( _( "Footprint Libraries" ) )
103  .BestSize((int) ( m_frameSize.x * 0.20 ), m_frameSize.y ) );
104 
105  m_auimgr.AddPane( m_symbolsListBox, EDA_PANE().Palette().Name( "Symbols" ).Center().Layer(0)
106  .Caption( _( "Symbol : Footprint Assignments" ) ) );
107 
108  m_auimgr.AddPane( m_footprintListBox, EDA_PANE().Palette().Name( "Footprints" ).Right().Layer(1)
109  .Caption( _( "Filtered Footprints" ) )
110  .BestSize((int) ( m_frameSize.x * 0.30 ), m_frameSize.y ) );
111 
112  // Build the bottom panel, to display 2 status texts and the buttons:
113  auto bottomPanel = new wxPanel( this );
114  auto panelSizer = new wxBoxSizer( wxVERTICAL );
115 
116  wxFlexGridSizer* fgSizerStatus = new wxFlexGridSizer( 3, 1, 0, 0 );
117  fgSizerStatus->SetFlexibleDirection( wxBOTH );
118  fgSizerStatus->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
119 
120  m_statusLine1 = new wxStaticText( bottomPanel, wxID_ANY, wxEmptyString );
121  fgSizerStatus->Add( m_statusLine1, 0, 0, 5 );
122 
123  m_statusLine2 = new wxStaticText( bottomPanel, wxID_ANY, wxEmptyString );
124  fgSizerStatus->Add( m_statusLine2, 0, 0, 5 );
125 
126  m_statusLine3 = new wxStaticText( bottomPanel, wxID_ANY, wxEmptyString );
127  fgSizerStatus->Add( m_statusLine3, 0, wxBOTTOM, 3 );
128 
129  panelSizer->Add( fgSizerStatus, 1, wxEXPAND|wxLEFT, 2 );
130 
131  wxStaticLine* staticline1 = new wxStaticLine( bottomPanel );
132  panelSizer->Add( staticline1, 0, wxEXPAND, 5 );
133 
134  wxFont statusFont = wxSystemSettings::GetFont( wxSYS_DEFAULT_GUI_FONT );
135  statusFont.SetSymbolicSize( wxFONTSIZE_SMALL );
136  m_statusLine1->SetFont( statusFont );
137  m_statusLine2->SetFont( statusFont );
138  m_statusLine3->SetFont( statusFont );
139 
140  // Add buttons:
141  auto buttonsSizer = new wxBoxSizer( wxHORIZONTAL );
142  auto sdbSizer = new wxStdDialogButtonSizer();
143 
144  m_saveAndContinue = new wxButton( bottomPanel, wxID_ANY,
145  _( "Apply, Save Schematic && Continue" ) );
146  buttonsSizer->Add( m_saveAndContinue, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 20 );
147 
148  auto sdbSizerOK = new wxButton( bottomPanel, wxID_OK );
149  sdbSizer->AddButton( sdbSizerOK );
150  auto sdbSizerCancel = new wxButton( bottomPanel, wxID_CANCEL );
151  sdbSizer->AddButton( sdbSizerCancel );
152  sdbSizer->Realize();
153 
154  buttonsSizer->Add( sdbSizer, 0, 0, 5 );
155  panelSizer->Add( buttonsSizer, 0, wxALIGN_RIGHT|wxALL, 5 );
156 
157  bottomPanel->SetSizer( panelSizer );
158  bottomPanel->Fit();
159 
160  sdbSizerOK->SetDefault();
162 
163  m_auimgr.AddPane( bottomPanel, EDA_PANE().HToolbar().Name( "Buttons" ).Bottom().Layer(6) );
164 
165  m_auimgr.Update();
166  m_initialized = true;
167 
168  if( CVPCB_SETTINGS* cfg = dynamic_cast<CVPCB_SETTINGS*>( config() ) )
169  {
170  if( cfg->m_LibrariesWidth > 0 )
171  {
172  wxAuiPaneInfo& librariesPane = m_auimgr.GetPane( "Libraries" );
173 
174  // wxAUI hack: force width by setting MinSize() and then Fixed()
175  // thanks to ZenJu http://trac.wxwidgets.org/ticket/13180
176  librariesPane.MinSize( cfg->m_LibrariesWidth, -1 );
177  librariesPane.BestSize( cfg->m_LibrariesWidth, -1 );
178  librariesPane.MaxSize( cfg->m_LibrariesWidth, -1 );
179  librariesPane.Fixed();
180  m_auimgr.Update();
181 
182  // now make it resizable again
183  librariesPane.MinSize( 20, -1 );
184  librariesPane.Resizable();
185  m_auimgr.Update();
186  }
187 
188  if( cfg->m_FootprintsWidth > 0 )
189  {
190  wxAuiPaneInfo& footprintsPane = m_auimgr.GetPane( "Footprints" );
191 
192  // wxAUI hack: force width by setting MinSize() and then Fixed()
193  // thanks to ZenJu http://trac.wxwidgets.org/ticket/13180
194  footprintsPane.MinSize( cfg->m_FootprintsWidth, -1 );
195  footprintsPane.BestSize( cfg->m_FootprintsWidth, -1 );
196  footprintsPane.MaxSize( cfg->m_FootprintsWidth, -1 );
197  footprintsPane.Fixed();
198  m_auimgr.Update();
199 
200  // now make it resizable again
201  footprintsPane.MinSize( 20, -1 );
202  footprintsPane.Resizable();
203  m_auimgr.Update();
204  }
205  }
206 
207  // Connect Events
209 
210  // Start the main processing loop
211  m_toolManager->InvokeTool( "cvpcb.Control" );
212 
213  KIPLATFORM::APP::SetShutdownBlockReason( this, _( "Symbol to footprint changes are unsaved" ) );
214 }
KIWAY & Kiway() const
Return a reference to the KIWAY that this object has an opportunity to participate in.
Definition: kiway_holder.h:53
FOOTPRINT_LIST * m_FootprintsList
virtual APP_SETTINGS_BASE * config() const
Returns the settings object used in SaveSettings(), and is overloaded in KICAD_MANAGER_FRAME.
KIWAY_PLAYER(KIWAY *aKiway, wxWindow *aParent, FRAME_T aFrameType, const wxString &aTitle, const wxPoint &aPos, const wxSize &aSize, long aStyle, const wxString &aWdoName=wxFrameNameStr)
#define CVPCB_MAINFRAME_NAME
void setupEventHandlers()
Setup event handlers.
wxAuiManager m_auimgr
wxStaticText * m_statusLine3
COMPONENTS_LISTBOX * m_symbolsListBox
bool InvokeTool(TOOL_ID aToolId)
Call a tool by sending a tool activation event to tool of given ID.
void SetShutdownBlockReason(wxWindow *aWindow, const wxString &aReason)
Sets the block reason why the window/application is preventing OS shutdown.
Definition: gtk/app.cpp:83
wxTextCtrl * m_tcFilterString
static FOOTPRINT_LIST * GetInstance(KIWAY &aKiway)
Factory function to return a FOOTPRINT_LIST via Kiway.
#define NULL
ACTION_TOOLBAR * m_mainToolBar
void LoadSettings(APP_SETTINGS_BASE *aCfg) override
Load common frame parameters from a configuration file.
#define _(s)
#define KICAD_DEFAULT_DRAWFRAME_STYLE
void ReCreateMenuBar() override
Recreates the menu bar.
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
Specialization of the wxAuiPaneInfo class for KiCad panels.
wxStaticText * m_statusLine2
void setupUIConditions() override
Setup the UI conditions for the various actions and their controls in this frame.
TOOL_MANAGER * m_toolManager
Definition: tools_holder.h:156
void FixupCancelButtonCmdKeyCollision(wxWindow *aWindow)
Definition: gtk/ui.cpp:71
FOOTPRINTS_LISTBOX * m_footprintListBox
LIBRARY_LISTBOX * m_librariesListBox
wxButton * m_saveAndContinue
void setupTools()
Setup the tool system for the CVPCB main frame.
wxString m_aboutTitle
wxStaticText * m_statusLine1

References _, BuildFootprintsListBox(), BuildLibrariesListBox(), BuildSymbolsListBox(), PCAD2KICAD::Center, EDA_BASE_FRAME::config(), KIPLATFORM::UI::FixupCancelButtonCmdKeyCollision(), FOOTPRINT_LIST::GetInstance(), icon_cvpcb, TOOL_MANAGER::InvokeTool(), KiBitmap(), KIWAY_HOLDER::Kiway(), PCAD2KICAD::Left, LoadSettings(), EDA_BASE_FRAME::m_aboutTitle, EDA_BASE_FRAME::m_auimgr, m_filteringOptions, m_footprintListBox, m_FootprintsList, EDA_BASE_FRAME::m_frameSize, m_initialized, m_librariesListBox, m_mainToolBar, m_modified, m_saveAndContinue, m_skipComponentSelect, m_statusLine1, m_statusLine2, m_statusLine3, m_symbolsListBox, m_tcFilterString, TOOLS_HOLDER::m_toolManager, NULL, ReCreateHToolbar(), ReCreateMenuBar(), PCAD2KICAD::Right, KIPLATFORM::APP::SetShutdownBlockReason(), setupEventHandlers(), setupTools(), setupUIConditions(), and FOOTPRINTS_LISTBOX::UNFILTERED_FP_LIST.

Member Function Documentation

◆ AddStandardHelpMenu()

void EDA_BASE_FRAME::AddStandardHelpMenu ( wxMenuBar *  aMenuBar)
inherited

Adds the standard KiCad help menu to the menubar.

Definition at line 438 of file eda_base_frame.cpp.

439 {
440  COMMON_CONTROL* commonControl = m_toolManager->GetTool<COMMON_CONTROL>();
441  ACTION_MENU* helpMenu = new ACTION_MENU( false, commonControl );
442 
443  helpMenu->Add( ACTIONS::help );
444  helpMenu->Add( ACTIONS::gettingStarted );
445  helpMenu->Add( ACTIONS::listHotKeys );
446  helpMenu->Add( ACTIONS::getInvolved );
447  helpMenu->Add( ACTIONS::donate );
448  helpMenu->Add( ACTIONS::reportBug );
449 
450  helpMenu->AppendSeparator();
451  helpMenu->Add( _( "&About KiCad" ), "", wxID_ABOUT, BITMAPS::about );
452 
453  aMenuBar->Append( helpMenu, _( "&Help" ) );
454 }
static TOOL_ACTION listHotKeys
Definition: actions.h:178
Defines the structure of a menu based on ACTIONs.
Definition: action_menu.h:48
static TOOL_ACTION reportBug
Cursor control event types.
Definition: actions.h:181
static TOOL_ACTION donate
Definition: actions.h:179
#define _(s)
Handle actions that are shared between different applications.
TOOL_MANAGER * m_toolManager
Definition: tools_holder.h:156
static TOOL_ACTION help
Definition: actions.h:177
static TOOL_ACTION getInvolved
Definition: actions.h:180
static TOOL_ACTION gettingStarted
Definition: actions.h:176

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(), KICAD_MANAGER_FRAME::ReCreateMenuBar(), GERBVIEW_FRAME::ReCreateMenuBar(), SYMBOL_VIEWER_FRAME::ReCreateMenuBar(), SYMBOL_EDIT_FRAME::ReCreateMenuBar(), FOOTPRINT_EDIT_FRAME::ReCreateMenuBar(), FOOTPRINT_VIEWER_FRAME::ReCreateMenuBar(), PL_EDITOR_FRAME::ReCreateMenuBar(), ReCreateMenuBar(), SCH_EDIT_FRAME::ReCreateMenuBar(), and PCB_EDIT_FRAME::ReCreateMenuBar().

◆ AssociateFootprint()

void CVPCB_MAINFRAME::AssociateFootprint ( const CVPCB_ASSOCIATION aAssociation,
bool  aNewEntry = true,
bool  aAddUndoItem = true 
)

Associate a footprint with a specific component in the list.

Associations can be chained into a single undo/redo step by setting aNewEntry to false for every association other than the first one. This will create a new list entry for the first association, and add the subsequent associations to that list.

Parameters
aAssociationis the association to perform
aNewEntryspecifies if this association should be a new entry in the undo list
aAddUndoItemspecifies if an undo item should be created for this association

Definition at line 508 of file cvpcb_mainframe.cpp.

510 {
511  if( m_netlist.IsEmpty() )
512  return;
513 
514  COMPONENT* symbol = m_netlist.GetComponent( aAssociation.GetComponentIndex() );
515 
516  if( symbol == NULL )
517  return;
518 
519  LIB_ID fpid = aAssociation.GetNewFootprint();
520  LIB_ID oldFpid = symbol->GetFPID();
521 
522  // Test for validity of the requested footprint
523  if( !fpid.empty() && !fpid.IsValid() )
524  {
525  wxString msg = wxString::Format( _( "\"%s\" is not a valid footprint." ),
526  fpid.Format().wx_str() );
527  DisplayErrorMessage( this, msg );
528  return;
529  }
530 
531  const KIID& id = symbol->GetKIIDs().front();
532 
533  // Set new footprint to all instances of the selected symbol
534  for( unsigned int idx : GetComponentIndices() )
535  {
536  COMPONENT* candidate = m_netlist.GetComponent( idx );
537  const std::vector<KIID>& kiids = candidate->GetKIIDs();
538 
539  if( std::find( kiids.begin(), kiids.end(), id ) != kiids.end() )
540  {
541  // Set the new footprint
542  candidate->SetFPID( fpid );
543 
544  // create the new symbol description and set it
545  wxString description = wxString::Format( CMP_FORMAT,
546  idx + 1,
547  candidate->GetReference(),
548  candidate->GetValue(),
549  candidate->GetFPID().Format().wx_str() );
550  m_symbolsListBox->SetString( idx, description );
551  }
552  }
553 
554  // Mark the data as being modified
555  m_modified = true;
556 
557  // Update the statusbar and refresh the list
558  DisplayStatus();
559  m_symbolsListBox->Refresh();
560 
561  if( !aAddUndoItem )
562  return;
563 
564  // Update the undo list
565  if ( aNewEntry )
566  {
567  // Create a new entry for this association
568  CVPCB_UNDO_REDO_ENTRIES newEntry;
569  newEntry.emplace_back( CVPCB_ASSOCIATION( aAssociation.GetComponentIndex(), oldFpid,
570  aAssociation.GetNewFootprint() ) );
571  m_undoList.emplace_back( newEntry );
572 
573  // Clear the redo list
574  m_redoList.clear();
575  }
576  else
577  {
578  m_undoList.back().emplace_back( CVPCB_ASSOCIATION( aAssociation.GetComponentIndex(),
579  oldFpid,
580  aAssociation.GetNewFootprint() ) );
581  }
582 
583 }
void DisplayErrorMessage(wxWindow *aParent, const wxString &aText, const wxString &aExtraInfo)
Display an error message with aMessage.
Definition: confirm.cpp:265
#define CMP_FORMAT
The print format to display a schematic component line.
void SetFPID(const LIB_ID &aFPID)
Definition: pcb_netlist.h:132
LIB_ID GetNewFootprint() const
Get the new footprint to associate to the component.
A logical library item identifier and consists of various portions much like a URI.
Definition: lib_id.h:51
COMPONENTS_LISTBOX * m_symbolsListBox
bool IsValid() const
Check if this LID_ID is valid.
Definition: lib_id.h:168
bool empty() const
Definition: lib_id.h:189
const LIB_ID & GetFPID() const
Definition: pcb_netlist.h:133
unsigned int GetComponentIndex() const
Get the index of the component to modify the association of.
Definition: kiid.h:44
#define NULL
const wxString & GetReference() const
Definition: pcb_netlist.h:123
#define _(s)
CVPCB_UNDO_REDO_LIST m_undoList
UTF8 Format() const
Definition: lib_id.cpp:233
Store all of the related footprint information found in a netlist.
Definition: pcb_netlist.h:84
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
COMPONENT * GetComponent(unsigned aIndex)
Return the COMPONENT at aIndex.
Definition: pcb_netlist.h:236
CVPCB_UNDO_REDO_LIST m_redoList
void SetString(unsigned linecount, const wxString &text)
wxString wx_str() const
Definition: utf8.cpp:51
A class to define a footprint association to be made in cvpcb.
bool IsEmpty() const
Definition: pcb_netlist.h:218
const wxString & GetValue() const
Definition: pcb_netlist.h:124
std::vector< unsigned int > GetComponentIndices(CVPCB_MAINFRAME::CRITERIA aCriteria=CVPCB_MAINFRAME::ALL_COMPONENTS)
Get the indices for all the components meeting the specified criteria in the components listbox.
void DisplayStatus()
Update the information displayed on the status bar at bottom of the main frame.
std::vector< CVPCB_ASSOCIATION > CVPCB_UNDO_REDO_ENTRIES
const std::vector< KIID > & GetKIIDs() const
Definition: pcb_netlist.h:140

References _, CMP_FORMAT, DisplayErrorMessage(), DisplayStatus(), LIB_ID::empty(), LIB_ID::Format(), Format(), NETLIST::GetComponent(), CVPCB_ASSOCIATION::GetComponentIndex(), GetComponentIndices(), COMPONENT::GetFPID(), COMPONENT::GetKIIDs(), CVPCB_ASSOCIATION::GetNewFootprint(), COMPONENT::GetReference(), COMPONENT::GetValue(), NETLIST::IsEmpty(), LIB_ID::IsValid(), m_modified, m_netlist, m_redoList, m_symbolsListBox, m_undoList, NULL, COMPONENT::SetFPID(), COMPONENTS_LISTBOX::SetString(), and UTF8::wx_str().

Referenced by CVPCB_ASSOCIATION_TOOL::Associate(), AutomaticFootprintMatching(), CVPCB_ASSOCIATION_TOOL::CutAssoc(), CVPCB_ASSOCIATION_TOOL::DeleteAll(), CVPCB_ASSOCIATION_TOOL::DeleteAssoc(), CVPCB_ASSOCIATION_TOOL::PasteAssoc(), RedoAssociation(), and UndoAssociation().

◆ AutomaticFootprintMatching()

void CVPCB_MAINFRAME::AutomaticFootprintMatching ( )

Called by the automatic association button Read *.equ files to try to find corresponding footprint for each component that is not already linked to a footprint ( a "free" component ) format of a line: 'cmp_ref' 'footprint_name'.

Definition at line 169 of file auto_associate.cpp.

170 {
171  FOOTPRINT_EQUIVALENCE_LIST equivList;
172  wxString msg;
173  wxString error_msg;
174 
175  if( m_netlist.IsEmpty() )
176  return;
177 
178  if( buildEquivalenceList( equivList, &error_msg ) )
179  wxMessageBox( error_msg, _( "Equivalence File Load Error" ), wxOK | wxICON_WARNING, this );
180 
181  // Sort the association list by symbol value. When sorted, finding duplicate definitions
182  // (i.e. 2 or more items having the same symbol value) is easier.
183  std::sort( equivList.begin(), equivList.end(), sortListbyCmpValue );
184 
185  // Display the number of footprint/symbol equivalences.
186  msg.Printf( _( "%lu footprint/symbol equivalences found." ), (unsigned long)equivList.size() );
187  SetStatusText( msg, 0 );
188 
189  // Now, associate each free component with a footprint
190  m_skipComponentSelect = true;
191  error_msg.Empty();
192 
193  bool firstAssoc = true;
194  for( unsigned kk = 0; kk < m_netlist.GetCount(); kk++ )
195  {
196  COMPONENT* component = m_netlist.GetComponent( kk );
197 
198  bool found = false;
199 
200  if( !component->GetFPID().empty() ) // the component has already a footprint
201  continue;
202 
203  // Here a first attempt is made. We can have multiple equivItem of the same value.
204  // When happens, using the footprint filter of components can remove the ambiguity by
205  // filtering equivItem so one can use multiple equivList (for polar and non-polar caps
206  // for example)
207  wxString fpid_candidate;
208 
209  for( unsigned idx = 0; idx < equivList.size(); idx++ )
210  {
211  FOOTPRINT_EQUIVALENCE& equivItem = equivList[idx];
212 
213  if( equivItem.m_ComponentValue.CmpNoCase( component->GetValue() ) != 0 )
214  continue;
215 
217 
218  bool equ_is_unique = true;
219  unsigned next = idx+1;
220  int previous = idx-1;
221 
222  if( next < equivList.size()
223  && equivItem.m_ComponentValue == equivList[next].m_ComponentValue )
224  {
225  equ_is_unique = false;
226  }
227 
228  if( previous >= 0
229  && equivItem.m_ComponentValue == equivList[previous].m_ComponentValue )
230  {
231  equ_is_unique = false;
232  }
233 
234  // If the equivalence is unique, no ambiguity: use the association
235  if( fp && equ_is_unique )
236  {
238  firstAssoc );
239  firstAssoc = false;
240  found = true;
241  break;
242  }
243 
244  // Store the first candidate found in list, when equivalence is not unique
245  // We use it later.
246  if( fp && fpid_candidate.IsEmpty() )
247  fpid_candidate = equivItem.m_FootprintFPID;
248 
249  // The equivalence is not unique: use the footprint filter to try to remove
250  // ambiguity
251  // if the footprint filter does not remove ambiguity, we will use fpid_candidate
252  if( fp )
253  {
254  size_t filtercount = component->GetFootprintFilters().GetCount();
255  found = ( 0 == filtercount ); // if no entries, do not filter
256 
257  for( size_t jj = 0; jj < filtercount && !found; jj++ )
258  found = fp->GetFootprintName().Matches( component->GetFootprintFilters()[jj] );
259  }
260  else
261  {
262  msg.Printf( _( "Component %s: footprint %s not found in any of the project "
263  "footprint libraries." ),
264  component->GetReference(), equivItem.m_FootprintFPID );
265 
266  if( ! error_msg.IsEmpty() )
267  error_msg << wxT("\n\n");
268 
269  error_msg += msg;
270  }
271 
272  if( found )
273  {
275  firstAssoc );
276  firstAssoc = false;
277  break;
278  }
279  }
280 
281  if( found )
282  {
283  continue;
284  }
285  else if( !fpid_candidate.IsEmpty() )
286  {
287  AssociateFootprint( CVPCB_ASSOCIATION( kk, fpid_candidate ), firstAssoc );
288  firstAssoc = false;
289  continue;
290  }
291 
292  // obviously the last chance: there's only one filter matching one footprint
293  if( 1 == component->GetFootprintFilters().GetCount() )
294  {
295  // we do not need to analyze wildcards: single footprint do not
296  // contain them and if there are wildcards it just will not match any
297  if( m_FootprintsList->GetFootprintInfo( component->GetFootprintFilters()[0] ) )
298  {
300  firstAssoc );
301  firstAssoc = false;
302  }
303  }
304  }
305 
306  if( !error_msg.IsEmpty() )
307  wxMessageBox( error_msg, _( "CvPcb Warning" ), wxOK | wxICON_WARNING, this );
308 
309  m_skipComponentSelect = false;
310  m_symbolsListBox->Refresh();
311 }
CITER next(CITER it)
Definition: ptree.cpp:126
FOOTPRINT_LIST * m_FootprintsList
void AssociateFootprint(const CVPCB_ASSOCIATION &aAssociation, bool aNewEntry=true, bool aAddUndoItem=true)
Associate a footprint with a specific component in the list.
bool sortListbyCmpValue(const FOOTPRINT_EQUIVALENCE &ref, const FOOTPRINT_EQUIVALENCE &test)
unsigned GetCount() const
Definition: pcb_netlist.h:228
COMPONENTS_LISTBOX * m_symbolsListBox
bool empty() const
Definition: lib_id.h:189
const LIB_ID & GetFPID() const
Definition: pcb_netlist.h:133
boost::ptr_vector< FOOTPRINT_EQUIVALENCE > FOOTPRINT_EQUIVALENCE_LIST
const wxString & GetReference() const
Definition: pcb_netlist.h:123
void SetStatusText(const wxString &aText, int aNumber=0) override
#define _(s)
FOOTPRINT_INFO * GetFootprintInfo(const wxString &aFootprintName)
Get info for a footprint by id.
Store all of the related footprint information found in a netlist.
Definition: pcb_netlist.h:84
COMPONENT * GetComponent(unsigned aIndex)
Return the COMPONENT at aIndex.
Definition: pcb_netlist.h:236
A class to define a footprint association to be made in cvpcb.
bool IsEmpty() const
Definition: pcb_netlist.h:218
const wxString & GetValue() const
Definition: pcb_netlist.h:124
const wxArrayString & GetFootprintFilters() const
Definition: pcb_netlist.h:143
int buildEquivalenceList(FOOTPRINT_EQUIVALENCE_LIST &aList, wxString *aErrorMessages=nullptr)
Read the .equ files and populate the list of equivalents.
const wxString & GetFootprintName() const

References _, AssociateFootprint(), buildEquivalenceList(), LIB_ID::empty(), NETLIST::GetComponent(), NETLIST::GetCount(), COMPONENT::GetFootprintFilters(), FOOTPRINT_LIST::GetFootprintInfo(), FOOTPRINT_INFO::GetFootprintName(), COMPONENT::GetFPID(), COMPONENT::GetReference(), COMPONENT::GetValue(), NETLIST::IsEmpty(), FOOTPRINT_EQUIVALENCE::m_ComponentValue, FOOTPRINT_EQUIVALENCE::m_FootprintFPID, m_FootprintsList, m_netlist, m_skipComponentSelect, m_symbolsListBox, next(), SetStatusText(), and sortListbyCmpValue().

Referenced by CVPCB_ASSOCIATION_TOOL::AutoAssociate().

◆ buildEquivalenceList()

int CVPCB_MAINFRAME::buildEquivalenceList ( FOOTPRINT_EQUIVALENCE_LIST aList,
wxString *  aErrorMessages = nullptr 
)
private

Read the .equ files and populate the list of equivalents.

Parameters
aListthe list to populate
aErrorMessagesis a pointer to a wxString to store error messages (can be NULL)
Returns
the error count ( 0 = no error)

Definition at line 80 of file auto_associate.cpp.

82 {
83  char line[1024];
84  int error_count = 0;
85  FILE* file;
86  wxFileName fn;
87  wxString tmp, error_msg;
88 
89  SEARCH_STACK& search = Kiface().KifaceSearch();
91 
92  // Find equivalences in all available files, and populates the
93  // equiv_List with all equivalences found in .equ files
94  for( const wxString& equfile : project.m_EquivalenceFiles )
95  {
96  fn = wxExpandEnvVars( equfile );
97 
98  tmp = search.FindValidPath( fn.GetFullPath() );
99 
100  if( !tmp )
101  {
102  error_count++;
103 
104  if( aErrorMessages )
105  {
106  error_msg.Printf( _( "Equivalence file '%s' could not be found in the "
107  "default search paths." ),
108  fn.GetFullName() );
109 
110  if( ! aErrorMessages->IsEmpty() )
111  *aErrorMessages << wxT("\n\n");
112 
113  *aErrorMessages += error_msg;
114  }
115 
116  continue;
117  }
118 
119  file = wxFopen( tmp, wxT( "rt" ) );
120 
121  if( file == NULL )
122  {
123  error_count++;
124 
125  if( aErrorMessages )
126  {
127  error_msg.Printf( _( "Error opening equivalence file '%s'." ), tmp );
128 
129  if( ! aErrorMessages->IsEmpty() )
130  *aErrorMessages << wxT("\n\n");
131 
132  *aErrorMessages += error_msg;
133  }
134 
135  continue;
136  }
137 
138  while( GetLine( file, line, NULL, sizeof( line ) ) != NULL )
139  {
140  if( *line == 0 )
141  continue;
142 
143  wxString wtext = FROM_UTF8( line );
144  wxString value = GetQuotedText( wtext );
145 
146  if( value.IsEmpty() )
147  continue;
148 
149  wxString footprint = GetQuotedText( wtext );
150 
151  if( footprint.IsEmpty() )
152  continue;
153 
154  value.Replace( wxT( " " ), wxT( "_" ) );
155 
156  FOOTPRINT_EQUIVALENCE* equivItem = new FOOTPRINT_EQUIVALENCE();
157  equivItem->m_ComponentValue = value;
158  equivItem->m_FootprintFPID = footprint;
159  aList.push_back( equivItem );
160  }
161 
162  fclose( file );
163  }
164 
165  return error_count;
166 }
wxString FindValidPath(const wxString &aFileName) const
Definition: search_stack.h:70
static wxString FROM_UTF8(const char *cstring)
Convert a UTF8 encoded C string to a wxString for all wxWidgets build modes.
Definition: macros.h:110
wxString GetQuotedText(wxString &text)
virtual PROJECT_FILE & GetProjectFile() const
Definition: project.h:145
Look for files in a number of paths.
Definition: search_stack.h:41
The backing store for a PROJECT, in JSON format.
Definition: project_file.h:64
SEARCH_STACK & KifaceSearch()
Only for DSO specific 'non-library' files.
Definition: kiface_i.h:113
#define NULL
PROJECT & Prj() const
Return a reference to the PROJECT associated with this KIWAY.
KIFACE_I & Kiface()
Global KIFACE_I "get" accessor.
#define _(s)
char * GetLine(FILE *File, char *Line, int *LineNum, int SizeLine)
Read one line line from aFile.
Definition: string.cpp:482

References _, SEARCH_STACK::FindValidPath(), FROM_UTF8(), GetLine(), PROJECT::GetProjectFile(), GetQuotedText(), Kiface(), KIFACE_I::KifaceSearch(), FOOTPRINT_EQUIVALENCE::m_ComponentValue, FOOTPRINT_EQUIVALENCE::m_FootprintFPID, NULL, KIWAY_HOLDER::Prj(), and project.

Referenced by AutomaticFootprintMatching().

◆ BuildFootprintsListBox()

void CVPCB_MAINFRAME::BuildFootprintsListBox ( )

Definition at line 878 of file cvpcb_mainframe.cpp.

879 {
880  wxFont guiFont = wxSystemSettings::GetFont( wxSYS_DEFAULT_GUI_FONT );
881 
882  if( m_footprintListBox == NULL )
883  {
885  m_footprintListBox->SetFont( wxFont( guiFont.GetPointSize(), wxFONTFAMILY_MODERN,
886  wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL ) );
887  }
888 
889  m_footprintListBox->SetFootprints( *m_FootprintsList, wxEmptyString, NULL, wxEmptyString,
891  DisplayStatus();
892 }
FOOTPRINT_LIST * m_FootprintsList
#define NULL
FOOTPRINTS_LISTBOX * m_footprintListBox
void SetFootprints(FOOTPRINT_LIST &aList, const wxString &aLibName, COMPONENT *aComponent, const wxString &aFootPrintFilterPattern, int aFilterType)
Populate the wxListCtrl with the footprints from aList that meet the filter criteria defined by aFilt...
void DisplayStatus()
Update the information displayed on the status bar at bottom of the main frame.

References DisplayStatus(), ID_CVPCB_FOOTPRINT_LIST, m_footprintListBox, m_FootprintsList, NULL, FOOTPRINTS_LISTBOX::SetFootprints(), and FOOTPRINTS_LISTBOX::UNFILTERED_FP_LIST.

Referenced by CVPCB_MAINFRAME(), and ReadNetListAndFpFiles().

◆ BuildLibrariesListBox()

void CVPCB_MAINFRAME::BuildLibrariesListBox ( )

Definition at line 932 of file cvpcb_mainframe.cpp.

933 {
934  wxFont guiFont = wxSystemSettings::GetFont( wxSYS_DEFAULT_GUI_FONT );
935 
936  if( m_librariesListBox == NULL )
937  {
939  m_librariesListBox->SetFont( wxFont( guiFont.GetPointSize(), wxFONTFAMILY_MODERN,
940  wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL ) );
941  }
942 
943  FP_LIB_TABLE* tbl = Prj().PcbFootprintLibs( Kiway() );
944 
945  if( tbl )
946  {
947  wxArrayString libNames;
948 
949  std::vector< wxString > libNickNames = tbl->GetLogicalLibs();
950 
951  for( const wxString& libNickName : libNickNames )
952  libNames.Add( libNickName );
953 
954  m_librariesListBox->SetLibraryList( libNames );
955  }
956 }
void SetLibraryList(const wxArrayString &aList)
KIWAY & Kiway() const
Return a reference to the KIWAY that this object has an opportunity to participate in.
Definition: kiway_holder.h:53
#define NULL
PROJECT & Prj() const
Return a reference to the PROJECT associated with this KIWAY.
virtual FP_LIB_TABLE * PcbFootprintLibs(KIWAY &aKiway)
Return the table of footprint libraries.
Definition: project.cpp:285
LIBRARY_LISTBOX * m_librariesListBox
std::vector< wxString > GetLogicalLibs()
Return the logical library names, all of them that are pertinent to a look up done on this LIB_TABLE.

References LIB_TABLE::GetLogicalLibs(), ID_CVPCB_LIBRARY_LIST, KIWAY_HOLDER::Kiway(), m_librariesListBox, NULL, PROJECT::PcbFootprintLibs(), KIWAY_HOLDER::Prj(), and LIBRARY_LISTBOX::SetLibraryList().

Referenced by CVPCB_MAINFRAME(), and ReadNetListAndFpFiles().

◆ BuildSymbolsListBox()

void CVPCB_MAINFRAME::BuildSymbolsListBox ( )

Definition at line 895 of file cvpcb_mainframe.cpp.

896 {
897  wxString msg;
898  COMPONENT* symbol;
899  wxFont guiFont = wxSystemSettings::GetFont( wxSYS_DEFAULT_GUI_FONT );
900 
901  if( m_symbolsListBox == NULL )
902  {
904  m_symbolsListBox->SetFont( wxFont( guiFont.GetPointSize(), wxFONTFAMILY_MODERN,
905  wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL ) );
906  }
907 
909 
910  for( unsigned i = 0; i < m_netlist.GetCount(); i++ )
911  {
912  symbol = m_netlist.GetComponent( i );
913 
914  msg.Printf( CMP_FORMAT,
915  m_symbolsListBox->GetCount() + 1,
916  symbol->GetReference(),
917  symbol->GetValue(),
918  symbol->GetFPID().Format().wx_str() );
919  m_symbolsListBox->m_ComponentList.Add( msg );
920  }
921 
922  if( m_symbolsListBox->m_ComponentList.Count() )
923  {
924  m_symbolsListBox->SetItemCount( m_symbolsListBox->m_ComponentList.Count() );
925  m_symbolsListBox->SetSelection( 0, true );
926  m_symbolsListBox->RefreshItems( 0L, m_symbolsListBox->m_ComponentList.Count() - 1 );
928  }
929 }
#define CMP_FORMAT
The print format to display a schematic component line.
void SetSelection(int index, bool State=true)
unsigned GetCount() const
Definition: pcb_netlist.h:228
COMPONENTS_LISTBOX * m_symbolsListBox
const LIB_ID & GetFPID() const
Definition: pcb_netlist.h:133
#define NULL
void UpdateWidth(int aLine=-1)
Update the width of the column based on its contents.
const wxString & GetReference() const
Definition: pcb_netlist.h:123
UTF8 Format() const
Definition: lib_id.cpp:233
Store all of the related footprint information found in a netlist.
Definition: pcb_netlist.h:84
COMPONENT * GetComponent(unsigned aIndex)
Return the COMPONENT at aIndex.
Definition: pcb_netlist.h:236
wxArrayString m_ComponentList
Definition: listboxes.h:217
wxString wx_str() const
Definition: utf8.cpp:51
const wxString & GetValue() const
Definition: pcb_netlist.h:124

References CMP_FORMAT, LIB_ID::Format(), NETLIST::GetComponent(), COMPONENTS_LISTBOX::GetCount(), NETLIST::GetCount(), COMPONENT::GetFPID(), COMPONENT::GetReference(), COMPONENT::GetValue(), ID_CVPCB_COMPONENT_LIST, COMPONENTS_LISTBOX::m_ComponentList, m_netlist, m_symbolsListBox, NULL, COMPONENTS_LISTBOX::SetSelection(), ITEMS_LISTBOX_BASE::UpdateWidth(), and UTF8::wx_str().

Referenced by CVPCB_MAINFRAME().

◆ canCloseWindow()

bool CVPCB_MAINFRAME::canCloseWindow ( wxCloseEvent &  aCloseEvent)
overridevirtual

Reimplemented from EDA_BASE_FRAME.

Definition at line 376 of file cvpcb_mainframe.cpp.

377 {
378  if( m_modified )
379  {
380  // Shutdown blocks must be determined and vetoed as early as possible
382  && aEvent.GetId() == wxEVT_QUERY_END_SESSION )
383  {
384  return false;
385  }
386 
387  if( !HandleUnsavedChanges( this, _( "Symbol to Footprint links have been modified. "
388  "Save changes?" ),
389  [&]() -> bool
390  {
391  return SaveFootprintAssociation( false );
392  } ) )
393  {
394  return false;
395  }
396  }
397 
398  return true;
399 }
bool HandleUnsavedChanges(wxWindow *aParent, const wxString &aMessage, const std::function< bool()> &aSaveFunction)
Display a dialog with Save, Cancel and Discard Changes buttons.
Definition: confirm.cpp:207
#define _(s)
bool SupportsShutdownBlockReason()
Whether or not the window supports setting a shutdown block reason.
Definition: gtk/app.cpp:72
bool SaveFootprintAssociation(bool doSaveSchematic)
Save the edits that the user has done by sending them back to Eeschema via the kiway.

References _, HandleUnsavedChanges(), m_modified, SaveFootprintAssociation(), and KIPLATFORM::APP::SupportsShutdownBlockReason().

◆ ChangeUserUnits()

void EDA_BASE_FRAME::ChangeUserUnits ( EDA_UNITS  aUnits)
inherited

Definition at line 1175 of file eda_base_frame.cpp.

1176 {
1177  SetUserUnits( aUnits );
1179 
1180  wxCommandEvent e( UNITS_CHANGED );
1181  ProcessEventLocally( e );
1182 }
virtual void unitsChangeRefresh()
Called when when the units setting has changed to allow for any derived classes to handle refreshing ...
void SetUserUnits(EDA_UNITS aUnits)

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

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

◆ CheckForAutoSaveFile()

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

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

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

Parameters
aFileNameA wxFileName object containing the file name to check.

Definition at line 1063 of file eda_base_frame.cpp.

1064 {
1065  wxCHECK_RET( aFileName.IsOk(), wxT( "Invalid file name!" ) );
1066 
1067  wxFileName autoSaveFileName = aFileName;
1068 
1069  // Check for auto save file.
1070  autoSaveFileName.SetName( GetAutoSaveFilePrefix() + aFileName.GetName() );
1071 
1072  wxLogTrace( traceAutoSave,
1073  wxT( "Checking for auto save file " ) + autoSaveFileName.GetFullPath() );
1074 
1075  if( !autoSaveFileName.FileExists() )
1076  return;
1077 
1078  wxString msg = wxString::Format( _(
1079  "Well this is potentially embarrassing!\n"
1080  "It appears that the last time you were editing the file\n"
1081  "\"%s\"\n"
1082  "it was not saved properly. Do you wish to restore the last saved edits you made?" ),
1083  aFileName.GetFullName()
1084  );
1085 
1086  int response = wxMessageBox( msg, Pgm().App().GetAppDisplayName(), wxYES_NO | wxICON_QUESTION,
1087  this );
1088 
1089  // Make a backup of the current file, delete the file, and rename the auto save file to
1090  // the file name.
1091  if( response == wxYES )
1092  {
1093  if( !wxRenameFile( autoSaveFileName.GetFullPath(), aFileName.GetFullPath() ) )
1094  {
1095  wxMessageBox( _( "The auto save file could not be renamed to the board file name." ),
1096  Pgm().App().GetAppDisplayName(), wxOK | wxICON_EXCLAMATION, this );
1097  }
1098  }
1099  else
1100  {
1101  wxLogTrace( traceAutoSave,
1102  wxT( "Removing auto save file " ) + autoSaveFileName.GetFullPath() );
1103 
1104  // Remove the auto save file when using the previous file as is.
1105  wxRemoveFile( autoSaveFileName.GetFullPath() );
1106  }
1107 }
const wxChar *const traceAutoSave
Flag to enable auto save feature debug tracing.
KIWAY Kiway & Pgm(), KFCTL_STANDALONE
The global Program "get" accessor.
Definition: single_top.cpp:106
#define _(s)
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, const CPTREE &aTree)
Output a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:200
static wxString GetAutoSaveFilePrefix()

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

Referenced by PCB_EDIT_FRAME::OpenProjectFiles(), and SCH_EDIT_FRAME::OpenProjectFiles().

◆ ClearFileHistory()

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

Removes all files from the file history.

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

Definition at line 950 of file eda_base_frame.cpp.

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

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

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

◆ ClearUndoORRedoList()

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

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

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

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

Reimplemented in SCH_EDIT_FRAME, SYMBOL_EDIT_FRAME, PL_EDITOR_FRAME, and PCB_BASE_EDIT_FRAME.

Definition at line 543 of file eda_base_frame.h.

544  { }

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

◆ ClearUndoRedoList()

void EDA_BASE_FRAME::ClearUndoRedoList ( )
virtualinherited

◆ CommonSettingsChanged()

void EDA_BASE_FRAME::CommonSettingsChanged ( bool  aEnvVarsChanged,
bool  aTextVarsChanged 
)
overridevirtualinherited

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

Update menus, toolbars, local variables, etc.

Reimplemented from TOOLS_HOLDER.

Reimplemented in PCB_EDIT_FRAME, PCB_BASE_FRAME, FOOTPRINT_EDIT_FRAME, EDA_DRAW_FRAME, FOOTPRINT_VIEWER_FRAME, KICAD_MANAGER_FRAME, and PL_EDITOR_FRAME.

Definition at line 467 of file eda_base_frame.cpp.

468 {
469  TOOLS_HOLDER::CommonSettingsChanged( aEnvVarsChanged, aTextVarsChanged );
470 
471  COMMON_SETTINGS* settings = Pgm().GetCommonSettings();
472 
473  if( m_fileHistory )
474  {
475  int historySize = settings->m_System.file_history_size;
476  m_fileHistory->SetMaxFiles( (unsigned) std::max( 0, historySize ) );
477  }
478 
479  if( GetBitmapStore()->ThemeChanged() )
480  {
481  ThemeChanged();
482  }
483 
484  if( GetMenuBar() )
485  {
486  // For icons in menus, icon scaling & hotkeys
487  ReCreateMenuBar();
488  GetMenuBar()->Refresh();
489  }
490 }
KIWAY Kiway & Pgm(), KFCTL_STANDALONE
The global Program "get" accessor.
Definition: single_top.cpp:106
void SetMaxFiles(size_t aMaxFiles)
Update the number of files that will be contained inside the file history.
Definition: filehistory.cpp:85
virtual void ThemeChanged()
Process light/dark theme change.
virtual void CommonSettingsChanged(bool aEnvVarsChanged, bool aTextVarsChanged)
Notification event that some of the common (suite-wide) settings have changed.
FILE_HISTORY * m_fileHistory
virtual void ReCreateMenuBar()
Recreates the menu bar.
BITMAP_STORE * GetBitmapStore()
Definition: bitmap.cpp:93

References TOOLS_HOLDER::CommonSettingsChanged(), COMMON_SETTINGS::SYSTEM::file_history_size, GetBitmapStore(), EDA_BASE_FRAME::m_fileHistory, COMMON_SETTINGS::m_System, Pgm(), EDA_BASE_FRAME::ReCreateMenuBar(), FILE_HISTORY::SetMaxFiles(), and EDA_BASE_FRAME::ThemeChanged().

Referenced by EDA_3D_VIEWER_FRAME::CommonSettingsChanged(), KICAD_MANAGER_FRAME::CommonSettingsChanged(), EDA_DRAW_FRAME::CommonSettingsChanged(), and KIWAY::CommonSettingsChanged().

◆ config()

APP_SETTINGS_BASE * EDA_BASE_FRAME::config ( ) const
virtualinherited

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

Reimplemented in SYMBOL_EDIT_FRAME, KICAD_MANAGER_FRAME, and FOOTPRINT_EDIT_FRAME.

Definition at line 791 of file eda_base_frame.cpp.

792 {
793  // KICAD_MANAGER_FRAME overrides this
794  return Kiface().KifaceSettings();
795 }
APP_SETTINGS_BASE * KifaceSettings() const
Definition: kiface_i.h:92
KIFACE_I & Kiface()
Global KIFACE_I "get" accessor.

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

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

◆ ConfigBaseName()

wxString EDA_BASE_FRAME::ConfigBaseName ( )
inlineoverridevirtualinherited

Get the configuration base name.

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

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

Reimplemented from TOOLS_HOLDER.

Definition at line 357 of file eda_base_frame.h.

358  {
359  wxString baseCfgName = m_configName.IsEmpty() ? GetName() : m_configName;
360  return baseCfgName;
361  }
wxString m_configName

References EDA_BASE_FRAME::m_configName.

Referenced by EDA_BASE_FRAME::SaveWindowSettings().

◆ CreateInfoBar()

void EDA_BASE_FRAME::CreateInfoBar ( )
inherited

Definition at line 816 of file eda_base_frame.cpp.

817 {
818 #if defined( __WXOSX_MAC__ )
820 #else
821  m_infoBar = new WX_INFOBAR( this, &m_auimgr );
822 
823  m_auimgr.AddPane( m_infoBar, EDA_PANE().InfoBar().Name( "InfoBar" ).Top().Layer(1) );
824 #endif
825 }
wxAuiManager m_auimgr
virtual wxWindow * GetToolCanvas() const =0
Canvas access.
Specialization of the wxAuiPaneInfo class for KiCad panels.
A modified version of the wxInfoBar class that allows us to:
Definition: infobar.h:73
WX_INFOBAR * m_infoBar

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

◆ CreateServer()

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

Definition at line 49 of file eda_dde.cpp.

50 {
51  wxIPV4address addr;
52 
53  // Set the port number
54  addr.Service( service );
55 
56  // Listen on localhost only if requested
57  if( local )
58  addr.Hostname( HOSTNAME );
59 
60  delete m_socketServer;
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 }
static const wxString HOSTNAME(wxT("localhost"))
wxSocketServer * m_socketServer
Definition: kiway_player.h:218

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

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

◆ CurrentToolName()

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

Definition at line 100 of file tools_holder.cpp.

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

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

Referenced by TOOL_MANAGER::processEvent().

◆ Destroy()

◆ DismissModal()

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

Definition at line 161 of file kiway_player.cpp.

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

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

◆ DisplayStatus()

void CVPCB_MAINFRAME::DisplayStatus ( )

Update the information displayed on the status bar at bottom of the main frame.

When the library or component list controls have the focus, the footprint assignment status of the components is displayed in the first status bar pane and the list of filters for the selected component is displayed in the second status bar pane. When the footprint list control has the focus, the description of the selected footprint is displayed in the first status bar pane and the key words for the selected footprint are displayed in the second status bar pane. The third status bar pane always displays the current footprint list filtering.

Definition at line 657 of file cvpcb_mainframe.cpp.

658 {
659  if( !m_initialized )
660  return;
661 
662  wxString filters, msg;
663  COMPONENT* symbol = GetSelectedComponent();
664 
666  {
667  msg.Empty();
668 
669  if( symbol )
670  {
671  for( unsigned ii = 0; ii < symbol->GetFootprintFilters().GetCount(); ii++ )
672  {
673  if( msg.IsEmpty() )
674  msg += symbol->GetFootprintFilters()[ii];
675  else
676  msg += wxT( ", " ) + symbol->GetFootprintFilters()[ii];
677  }
678  }
679 
680  filters += _( "Keywords" );
681 
682  if( !msg.IsEmpty() )
683  filters += wxString::Format( wxT( " (%s)" ), msg );
684  }
685 
687  {
688  msg.Empty();
689 
690  if( symbol )
691  msg = wxString::Format( wxT( "%i" ), symbol->GetPinCount() );
692 
693  if( !filters.IsEmpty() )
694  filters += wxT( ", " );
695 
696  filters += _( "Pin Count" );
697 
698  if( !msg.IsEmpty() )
699  filters += wxString::Format( wxT( " (%s)" ), msg );
700  }
701 
703  {
705 
706  if( !filters.IsEmpty() )
707  filters += wxT( ", " );
708 
709  filters += _( "Library" );
710 
711  if( !msg.IsEmpty() )
712  filters += wxString::Format( wxT( " (%s)" ), msg );
713  }
714 
715  wxString textFilter = m_tcFilterString->GetValue();
716 
717  if( !textFilter.IsEmpty() )
718  {
719  if( !filters.IsEmpty() )
720  filters += wxT( ", " );
721 
722  filters += _( "Search Text" ) + wxString::Format( wxT( " (%s)" ), textFilter );
723  }
724 
725  if( filters.IsEmpty() )
726  msg = _( "No Filtering" );
727  else
728  msg.Printf( _( "Filtered by %s" ), filters );
729 
730  msg << wxT( ": " ) << m_footprintListBox->GetCount();
731 
732  SetStatusText( msg );
733 
734 
735  msg.Empty();
736  wxString footprintName = GetSelectedFootprint();
737 
738  FOOTPRINT_INFO* fp = m_FootprintsList->GetFootprintInfo( footprintName );
739 
740  if( fp ) // can be NULL if no netlist loaded
741  {
742  msg = wxString::Format( _( "Description: %s; Keywords: %s" ),
743  fp->GetDescription(),
744  fp->GetKeywords() );
745  }
746 
747  SetStatusText( msg, 1 );
748 
749  msg.Empty();
750  wxString lib;
751 
752  // Choose the footprint to get the information on
753  if( fp )
754  {
755  // Use the footprint in the footprint viewer
756  lib = fp->GetLibNickname();
757  }
759  {
760  // Use the footprint of the selected symbol
761  if( symbol )
762  lib = symbol->GetFPID().GetLibNickname();
763  }
765  {
766  // Use the library that is selected
768  }
769 
770  // Extract the library information
771  FP_LIB_TABLE* fptbl = Prj().PcbFootprintLibs( Kiway() );
772 
773  if( fptbl->HasLibrary( lib ) )
774  msg = wxString::Format( _( "Library location: %s" ), fptbl->GetFullURI( lib ) );
775  else
776  msg = wxString::Format( _( "Library location: unknown" ) );
777 
778  SetStatusText( msg, 2 );
779 }
KIWAY & Kiway() const
Return a reference to the KIWAY that this object has an opportunity to participate in.
Definition: kiway_holder.h:53
bool HasLibrary(const wxString &aNickname, bool aCheckEnabled=false) const
Test for the existence of aNickname in the library table.
FOOTPRINT_LIST * m_FootprintsList
wxString GetLibNickname() const override
wxString GetDescription() override
const LIB_ID & GetFPID() const
Definition: pcb_netlist.h:133
wxTextCtrl * m_tcFilterString
CVPCB_MAINFRAME::CONTROL_TYPE GetFocusedControl() const
Find out which control currently has focus.
PROJECT & Prj() const
Return a reference to the PROJECT associated with this KIWAY.
wxString GetFullURI(const wxString &aLibNickname, bool aExpandEnvVars=true) const
Return the full URI of the library mapped to aLibNickname.
wxString GetSelectedLibrary()
void SetStatusText(const wxString &aText, int aNumber=0) override
#define _(s)
const UTF8 & GetLibNickname() const
Return the logical library name portion of a LIB_ID.
Definition: lib_id.h:92
FOOTPRINT_INFO * GetFootprintInfo(const wxString &aFootprintName)
Get info for a footprint by id.
Store all of the related footprint information found in a netlist.
Definition: pcb_netlist.h:84
virtual FP_LIB_TABLE * PcbFootprintLibs(KIWAY &aKiway)
Return the table of footprint libraries.
Definition: project.cpp:285
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
wxString GetSelectedFootprint()
COMPONENT * GetSelectedComponent()
Get the selected component from the component listbox.
FOOTPRINTS_LISTBOX * m_footprintListBox
int GetPinCount() const
Definition: pcb_netlist.h:146
wxString GetKeywords()
const wxArrayString & GetFootprintFilters() const
Definition: pcb_netlist.h:143
LIBRARY_LISTBOX * m_librariesListBox

References _, CONTROL_COMPONENT, CONTROL_LIBRARY, FOOTPRINTS_LISTBOX::FILTERING_BY_COMPONENT_FP_FILTERS, FOOTPRINTS_LISTBOX::FILTERING_BY_LIBRARY, FOOTPRINTS_LISTBOX::FILTERING_BY_PIN_COUNT, Format(), FOOTPRINTS_LISTBOX::GetCount(), FOOTPRINT_INFO::GetDescription(), GetFocusedControl(), COMPONENT::GetFootprintFilters(), FOOTPRINT_LIST::GetFootprintInfo(), COMPONENT::GetFPID(), LIB_TABLE::GetFullURI(), FOOTPRINT_INFO::GetKeywords(), FOOTPRINT_INFO::GetLibNickname(), LIB_ID::GetLibNickname(), COMPONENT::GetPinCount(), GetSelectedComponent(), GetSelectedFootprint(), LIBRARY_LISTBOX::GetSelectedLibrary(), LIB_TABLE::HasLibrary(), KIWAY_HOLDER::Kiway(), m_filteringOptions, m_footprintListBox, m_FootprintsList, m_initialized, m_librariesListBox, m_tcFilterString, PROJECT::PcbFootprintLibs(), KIWAY_HOLDER::Prj(), and SetStatusText().

Referenced by AssociateFootprint(), BuildFootprintsListBox(), CVPCB_ASSOCIATION_TOOL::DeleteAll(), ReadNetListAndFpFiles(), refreshAfterSymbolSearch(), and ShowChangedLanguage().

◆ DisplayToolMsg()

virtual void TOOLS_HOLDER::DisplayToolMsg ( const wxString &  msg)
inlinevirtualinherited

Reimplemented in EDA_DRAW_FRAME.

Definition at line 121 of file tools_holder.h.

121 {};

Referenced by TOOLS_HOLDER::PopTool(), and TOOLS_HOLDER::PushTool().

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

322 {
323  wxCHECK_MSG( false, true, wxT( "Auto save timer function not overridden. Bad programmer!" ) );
324 }

Referenced by EDA_BASE_FRAME::onAutoSaveTimer().

◆ doCloseWindow()

void CVPCB_MAINFRAME::doCloseWindow ( )
overridevirtual

Reimplemented from EDA_BASE_FRAME.

Definition at line 402 of file cvpcb_mainframe.cpp.

403 {
405  GetFootprintViewerFrame()->Close( true );
406 
407  m_modified = false;
408 
409  // clear highlight symbol in schematic:
410  SendMessageToEESCHEMA( true );
411 }
void SendMessageToEESCHEMA(bool aClearHighligntOnly=false)
Send a remote command to Eeschema via a socket,.
DISPLAY_FOOTPRINTS_FRAME * GetFootprintViewerFrame() const

References GetFootprintViewerFrame(), m_modified, and SendMessageToEESCHEMA().

◆ ensureWindowIsOnScreen()

void EDA_BASE_FRAME::ensureWindowIsOnScreen ( )
protectedinherited

Definition at line 633 of file eda_base_frame.cpp.

634 {
635  wxDisplay display( wxDisplay::GetFromWindow( this ) );
636  wxRect clientSize = display.GetClientArea();
637  wxPoint pos = GetPosition();
638  wxSize size = GetWindowSize();
639 
640  wxLogTrace( traceDisplayLocation,
641  "ensureWindowIsOnScreen: clientArea (%d, %d) w %d h %d", clientSize.x, clientSize.y,
642  clientSize.width, clientSize.height );
643 
644  if( pos.y < clientSize.y )
645  {
646  wxLogTrace( traceDisplayLocation,
647  "ensureWindowIsOnScreen: y pos %d below minimum, setting to %d", pos.y,
648  clientSize.y );
649  pos.y = clientSize.y;
650  }
651 
652  if( pos.x < clientSize.x )
653  {
654  wxLogTrace( traceDisplayLocation,
655  "ensureWindowIsOnScreen: x pos %d is off the client rect, setting to %d", pos.x,
656  clientSize.x );
657  pos.x = clientSize.x;
658  }
659 
660  if( pos.x + size.x - clientSize.x > clientSize.width )
661  {
662  int newWidth = clientSize.width - ( pos.x - clientSize.x );
663  wxLogTrace( traceDisplayLocation,
664  "ensureWindowIsOnScreen: effective width %d above available %d, setting to %d",
665  pos.x + size.x, clientSize.width, newWidth );
666  size.x = newWidth;
667  }
668 
669  if( pos.y + size.y - clientSize.y > clientSize.height )
670  {
671  int newHeight = clientSize.height - ( pos.y - clientSize.y );
672  wxLogTrace( traceDisplayLocation,
673  "ensureWindowIsOnScreen: effective height %d above available %d, setting to %d",
674  pos.y + size.y, clientSize.height, newHeight );
675  size.y = newHeight;
676  }
677 
678  wxLogTrace( traceDisplayLocation, "Updating window position (%d, %d) with size (%d, %d)",
679  pos.x, pos.y, size.x, size.y );
680 
681  SetSize( pos.x, pos.y, size.x, size.y );
682 }
const wxChar *const traceDisplayLocation
Flag to enable debug output of display positioning logic.
wxSize GetWindowSize()
Get the undecorated window size that can be used for restoring the window size.

References EDA_BASE_FRAME::GetWindowSize(), and traceDisplayLocation.

Referenced by EDA_BASE_FRAME::OnSize().

◆ ExecuteRemoteCommand()

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

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

Subclasses should override to implement actual command handlers.

Reimplemented in SCH_EDIT_FRAME, and PCB_EDIT_FRAME.

Definition at line 196 of file kiway_player.h.

196 {}

Referenced by KIWAY_PLAYER::OnSockRequest().

◆ FinishAUIInitialization()

void EDA_BASE_FRAME::FinishAUIInitialization ( )
inherited

Definition at line 828 of file eda_base_frame.cpp.

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

References EDA_BASE_FRAME::m_auimgr.

◆ GetAboutTitle()

const wxString& EDA_BASE_FRAME::GetAboutTitle ( ) const
inlineinherited

◆ GetAutoSaveFilePrefix()

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

Definition at line 600 of file eda_base_frame.h.

601  {
602  return wxT( "_autosave-" );
603  }

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

◆ GetAutoSaveInterval()

int EDA_BASE_FRAME::GetAutoSaveInterval ( ) const
inlineinherited

Definition at line 204 of file eda_base_frame.h.

204 { return m_autoSaveInterval; }

References EDA_BASE_FRAME::m_autoSaveInterval.

◆ GetComponentIndices()

std::vector< unsigned int > CVPCB_MAINFRAME::GetComponentIndices ( CVPCB_MAINFRAME::CRITERIA  aCriteria = CVPCB_MAINFRAME::ALL_COMPONENTS)

Get the indices for all the components meeting the specified criteria in the components listbox.

Parameters
aCriteriais the criteria to use for finding the indices
Returns
a vector containing all the indices

Definition at line 989 of file cvpcb_mainframe.cpp.

991 {
992  std::vector<unsigned int> idx;
993  int lastIdx;
994 
995  // Make sure a netlist has been loaded and the box has contents
996  if( m_netlist.IsEmpty() || m_symbolsListBox->GetCount() == 0 )
997  return idx;
998 
999  switch( aCriteria )
1000  {
1002  idx.resize( m_netlist.GetCount() );
1003  std::iota( idx.begin(), idx.end(), 0 );
1004  break;
1005 
1007  // Check to see if anything is selected
1008  if( m_symbolsListBox->GetSelectedItemCount() < 1 )
1009  break;
1010 
1011  // Get the symbols
1012  lastIdx = m_symbolsListBox->GetFirstSelected();
1013  idx.emplace_back( lastIdx );
1014 
1015  lastIdx = m_symbolsListBox->GetNextSelected( lastIdx );
1016  while( lastIdx > 0 )
1017  {
1018  idx.emplace_back( lastIdx );
1019  lastIdx = m_symbolsListBox->GetNextSelected( lastIdx );
1020  }
1021  break;
1022 
1024  for( unsigned int i = 0; i < m_netlist.GetCount(); i++ )
1025  {
1026  if( m_netlist.GetComponent( i )->GetFPID().empty() )
1027  idx.emplace_back( i );
1028  }
1029  break;
1030 
1032  for( unsigned int i = 0; i < m_netlist.GetCount(); i++ )
1033  {
1034  if( !m_netlist.GetComponent( i )->GetFPID().empty() )
1035  idx.emplace_back( i );
1036  }
1037  break;
1038 
1039  default:
1040  wxASSERT_MSG( false, "Invalid symbol selection criteria" );
1041  }
1042 
1043  return idx;
1044 }
unsigned GetCount() const
Definition: pcb_netlist.h:228
COMPONENTS_LISTBOX * m_symbolsListBox
bool empty() const
Definition: lib_id.h:189
const LIB_ID & GetFPID() const
Definition: pcb_netlist.h:133
COMPONENT * GetComponent(unsigned aIndex)
Return the COMPONENT at aIndex.
Definition: pcb_netlist.h:236
bool IsEmpty() const
Definition: pcb_netlist.h:218
Not associated components.

References ALL_COMPONENTS, ASSOC_COMPONENTS, LIB_ID::empty(), NETLIST::GetComponent(), COMPONENTS_LISTBOX::GetCount(), NETLIST::GetCount(), COMPONENT::GetFPID(), NETLIST::IsEmpty(), m_netlist, m_symbolsListBox, NA_COMPONENTS, and SEL_COMPONENTS.

Referenced by CVPCB_ASSOCIATION_TOOL::Associate(), AssociateFootprint(), CVPCB_ASSOCIATION_TOOL::CutAssoc(), CVPCB_ASSOCIATION_TOOL::DeleteAll(), CVPCB_ASSOCIATION_TOOL::DeleteAssoc(), CVPCB_ASSOCIATION_TOOL::PasteAssoc(), and CVPCB_CONTROL::ToNA().

◆ GetCurrentFileName()

virtual wxString EDA_BASE_FRAME::GetCurrentFileName ( ) const
inlinevirtualinherited

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

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

Returns
the filename and full path to the open file

Reimplemented in PCB_EDIT_FRAME, SCH_EDIT_FRAME, PL_EDITOR_FRAME, and KICAD_MANAGER_FRAME.

Definition at line 438 of file eda_base_frame.h.

438 { return wxEmptyString; }

Referenced by EDA_BASE_FRAME::SaveSettings().

◆ GetCurrentSelection()

virtual SELECTION& TOOLS_HOLDER::GetCurrentSelection ( )
inlinevirtualinherited

Get the current selection from the canvas area.

Returns
the current selection.

Reimplemented in PCB_EDIT_FRAME, GERBVIEW_FRAME, SYMBOL_VIEWER_FRAME, SCH_EDIT_FRAME, DISPLAY_FOOTPRINTS_FRAME, SYMBOL_EDIT_FRAME, PL_EDITOR_FRAME, FOOTPRINT_VIEWER_FRAME, and FOOTPRINT_EDIT_FRAME.

Definition at line 101 of file tools_holder.h.

102  {
103  return m_dummySelection;
104  }
SELECTION m_dummySelection
Definition: tools_holder.h:160

References TOOLS_HOLDER::m_dummySelection.

Referenced by EDA_BASE_FRAME::HandleUpdateUIEvent(), and ACTION_MANAGER::RunHotKey().

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

127 { return m_immediateActions; }
bool m_immediateActions
Definition: tools_holder.h:169

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

133 { return m_dragAction; }
MOUSE_DRAG_ACTION m_dragAction
Definition: tools_holder.h:173

References TOOLS_HOLDER::m_dragAction.

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

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

912 {
913  if( !aFileHistory )
914  aFileHistory = m_fileHistory;
915 
916  wxASSERT( aFileHistory );
917 
918  int baseId = aFileHistory->GetBaseId();
919 
920  wxASSERT( cmdId >= baseId && cmdId < baseId + (int) aFileHistory->GetCount() );
921 
922  unsigned i = cmdId - baseId;
923 
924  if( i < aFileHistory->GetCount() )
925  {
926  wxString fn = aFileHistory->GetHistoryFile( i );
927 
928  if( wxFileName::FileExists( fn ) )
929  return fn;
930  else
931  {
932  wxString msg = wxString::Format( _( "File \"%s\" was not found." ), fn );
933  wxMessageBox( msg );
934 
935  aFileHistory->RemoveFileFromHistory( i );
936  }
937  }
938 
939  // Update the menubar to update the file history menu
940  if( GetMenuBar() )
941  {
942  ReCreateMenuBar();
943  GetMenuBar()->Refresh();
944  }
945 
946  return wxEmptyString;
947 }
#define _(s)
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
FILE_HISTORY * m_fileHistory
virtual void ReCreateMenuBar()
Recreates the menu bar.

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

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

◆ GetFileHistory()

FILE_HISTORY& EDA_BASE_FRAME::GetFileHistory ( )
inlineinherited

Get the frame's main file history.

Returns
the main file history

Definition at line 422 of file eda_base_frame.h.

423  {
424  return *m_fileHistory;
425  }
FILE_HISTORY * m_fileHistory

References EDA_BASE_FRAME::m_fileHistory.

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

◆ GetFocusedControl()

CVPCB_MAINFRAME::CONTROL_TYPE CVPCB_MAINFRAME::GetFocusedControl ( ) const

Find out which control currently has focus.

Returns
the control that currently has focus

Definition at line 1061 of file cvpcb_mainframe.cpp.

1062 {
1063  if( m_librariesListBox->HasFocus() )
1065  else if( m_symbolsListBox->HasFocus() )
1067  else if( m_footprintListBox->HasFocus() )
1069 
1071 }
COMPONENTS_LISTBOX * m_symbolsListBox
No controls have focus.
FOOTPRINTS_LISTBOX * m_footprintListBox
LIBRARY_LISTBOX * m_librariesListBox

References CONTROL_COMPONENT, CONTROL_FOOTPRINT, CONTROL_LIBRARY, CONTROL_NONE, m_footprintListBox, m_librariesListBox, and m_symbolsListBox.

Referenced by CVPCB_CONTROL::ChangeFocus(), CVPCB_ASSOCIATION_TOOL::CopyAssoc(), CVPCB_ASSOCIATION_TOOL::CutAssoc(), and DisplayStatus().

◆ GetFocusedControlObject()

wxControl * CVPCB_MAINFRAME::GetFocusedControlObject ( ) const

Get a pointer to the currently focused control.

Returns
the control that currently has focus

Definition at line 1074 of file cvpcb_mainframe.cpp.

1075 {
1076  if( m_librariesListBox->HasFocus() )
1077  return m_librariesListBox;
1078  else if( m_symbolsListBox->HasFocus() )
1079  return m_symbolsListBox;
1080  else if( m_footprintListBox->HasFocus() )
1081  return m_footprintListBox;
1082 
1083  return nullptr;
1084 }
COMPONENTS_LISTBOX * m_symbolsListBox
FOOTPRINTS_LISTBOX * m_footprintListBox
LIBRARY_LISTBOX * m_librariesListBox

References m_footprintListBox, m_librariesListBox, and m_symbolsListBox.

◆ GetFootprintViewerFrame()

DISPLAY_FOOTPRINTS_FRAME * CVPCB_MAINFRAME::GetFootprintViewerFrame ( ) const
Returns
a pointer on the Footprint Viewer frame, if exists, or NULL

Definition at line 1047 of file cvpcb_mainframe.cpp.

1048 {
1049  // returns the Footprint Viewer frame, if exists, or NULL
1050  wxWindow* window = wxWindow::FindWindowByName( FOOTPRINTVIEWER_FRAME_NAME );
1051  return dynamic_cast<DISPLAY_FOOTPRINTS_FRAME*>( window );
1052 }
#define FOOTPRINTVIEWER_FRAME_NAME

References FOOTPRINTVIEWER_FRAME_NAME.

Referenced by doCloseWindow(), GetToolCanvas(), refreshAfterSymbolSearch(), and CVPCB_CONTROL::ShowFootprintViewer().

◆ GetFrameType()

FRAME_T EDA_BASE_FRAME::GetFrameType ( ) const
inlineinherited

Definition at line 207 of file eda_base_frame.h.

207 { return m_ident; }

References EDA_BASE_FRAME::m_ident.

◆ GetInfoBar()

◆ GetMaxUndoItems()

int EDA_BASE_FRAME::GetMaxUndoItems ( ) const
inlineinherited

Definition at line 580 of file eda_base_frame.h.

580 { 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 139 of file tools_holder.h.

139 { return m_moveWarpsCursor; }
bool m_moveWarpsCursor
Definition: tools_holder.h:175

References TOOLS_HOLDER::m_moveWarpsCursor.

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

◆ GetMruPath()

◆ GetRedoCommandCount()

int CVPCB_MAINFRAME::GetRedoCommandCount ( ) const
inlineoverridevirtual

Reimplemented from EDA_BASE_FRAME.

Definition at line 205 of file cvpcb_mainframe.h.

206  {
207  return m_redoList.size();
208  }
CVPCB_UNDO_REDO_LIST m_redoList

References m_redoList.

◆ GetSelectedComponent()

COMPONENT * CVPCB_MAINFRAME::GetSelectedComponent ( )

Get the selected component from the component listbox.

Returns
the selected component

Definition at line 959 of file cvpcb_mainframe.cpp.

960 {
961  int selection = m_symbolsListBox->GetSelection();
962 
963  if( selection >= 0 && selection < (int) m_netlist.GetCount() )
964  return m_netlist.GetComponent( selection );
965 
966  return NULL;
967 }
unsigned GetCount() const
Definition: pcb_netlist.h:228
COMPONENTS_LISTBOX * m_symbolsListBox
#define NULL
COMPONENT * GetComponent(unsigned aIndex)
Return the COMPONENT at aIndex.
Definition: pcb_netlist.h:236

References NETLIST::GetComponent(), NETLIST::GetCount(), ITEMS_LISTBOX_BASE::GetSelection(), m_netlist, m_symbolsListBox, and NULL.

Referenced by CVPCB_ASSOCIATION_TOOL::CopyAssoc(), CVPCB_ASSOCIATION_TOOL::CutAssoc(), DisplayStatus(), DISPLAY_FOOTPRINTS_FRAME::InitDisplay(), and OnSelectComponent().

◆ GetSelectedFootprint()

wxString CVPCB_MAINFRAME::GetSelectedFootprint ( )
Returns
the LIB_ID of the selected footprint in footprint listview or a empty string if no selection

Definition at line 1099 of file cvpcb_mainframe.cpp.

1100 {
1101  // returns the LIB_ID of the selected footprint in footprint listview
1102  // or a empty string
1104 }
FOOTPRINTS_LISTBOX * m_footprintListBox

References FOOTPRINTS_LISTBOX::GetSelectedFootprint(), and m_footprintListBox.

Referenced by CVPCB_ASSOCIATION_TOOL::Associate(), CVPCB_ASSOCIATION_TOOL::CopyAssoc(), DisplayStatus(), and DISPLAY_FOOTPRINTS_FRAME::InitDisplay().

◆ GetSettingsManager()

SETTINGS_MANAGER* EDA_BASE_FRAME::GetSettingsManager ( ) const
inlineinherited

Definition at line 140 of file eda_base_frame.h.

140 { return m_settingsManager; }
SETTINGS_MANAGER * m_settingsManager

References EDA_BASE_FRAME::m_settingsManager.

Referenced by GERBVIEW_FRAME::applyDisplaySettingsToGAL(), KICAD_MANAGER_FRAME::canCloseWindow(), KICAD_MANAGER_FRAME::CreateNewProject(), PCB_EDIT_FRAME::doAutoSave(), SCH_EDIT_FRAME::doAutoSave(), PCB_BASE_EDIT_FRAME::doCloseWindow(), FOOTPRINT_EDIT_FRAME::doCloseWindow(), PCB_EDIT_FRAME::Files_io_from_id(), DIALOG_PLOT_SCHEMATIC::getColorSettings(), DIALOG_PLOT_SCHEMATIC::initDlg(), DIALOG_SCHEMATIC_SETUP::OnAuxiliaryAction(), DIALOG_BOARD_SETUP::OnAuxiliaryAction(), SCH_EDIT_FRAME::OnImportProject(), GERBER_LAYER_WIDGET::OnLayerColorChange(), GERBER_LAYER_WIDGET::OnRenderColorChange(), KICAD_MANAGER_FRAME::OnUnarchiveFiles(), PCB_EDIT_FRAME::OpenProjectFiles(), SCH_EDIT_FRAME::OpenProjectFiles(), PANEL_FP_EDITOR_COLOR_SETTINGS::PANEL_FP_EDITOR_COLOR_SETTINGS(), PANEL_PCBNEW_COLOR_SETTINGS::PANEL_PCBNEW_COLOR_SETTINGS(), SCH_EDIT_FRAME::Save_File(), PCB_EDIT_FRAME::SavePcbCopy(), PCB_EDIT_FRAME::SavePcbFile(), SCH_EDIT_FRAME::SaveProject(), SCH_EDIT_FRAME::SaveProjectSettings(), PCB_EDIT_FRAME::SaveProjectSettings(), FOOTPRINT_EDIT_FRAME::SaveSettings(), PANEL_FP_EDITOR_COLOR_SETTINGS::TransferDataFromWindow(), PANEL_SYM_COLOR_SETTINGS::TransferDataFromWindow(), PANEL_PCBNEW_COLOR_SETTINGS::TransferDataFromWindow(), PANEL_SYM_COLOR_SETTINGS::TransferDataToWindow(), DIALOG_PRINT_PCBNEW::TransferDataToWindow(), and SCH_EDIT_FRAME::~SCH_EDIT_FRAME().

◆ GetSeverity()

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

Reimplemented in PCB_BASE_FRAME.

Definition at line 142 of file eda_base_frame.h.

References RPT_SEVERITY_UNDEFINED.

Referenced by RC_TREE_MODEL::GetValue().

◆ GetToolCanvas()

wxWindow * CVPCB_MAINFRAME::GetToolCanvas ( ) const
overridevirtual

Canvas access.

Implements TOOLS_HOLDER.

Definition at line 1055 of file cvpcb_mainframe.cpp.

1056 {
1057  return GetFootprintViewerFrame();
1058 }
DISPLAY_FOOTPRINTS_FRAME * GetFootprintViewerFrame() const

References GetFootprintViewerFrame().

◆ 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; }
TOOL_MANAGER * m_toolManager
Definition: tools_holder.h:156

References TOOLS_HOLDER::m_toolManager.

Referenced by PROJECT_TREE_ITEM::Activate(), FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), SYMBOL_EDITOR_CONTROL::AddSymbolToSchematic(), APPEARANCE_CONTROLS::APPEARANCE_CONTROLS(), BOARD_COMMIT::BOARD_COMMIT(), FOOTPRINT_VIEWER_FRAME::ClickOnFootprintList(), TOOLS_HOLDER::CommonSettingsChanged(), DIALOG_FOOTPRINT_CHECKER::deleteAllMarkers(), DIALOG_ERC::deleteAllMarkers(), DIALOG_DRC::deleteAllMarkers(), DIALOG_BOARD_REANNOTATE::DIALOG_BOARD_REANNOTATE(), DIALOG_MIGRATE_BUSES::DIALOG_MIGRATE_BUSES(), PL_DRAW_PANEL_GAL::DisplayDrawingSheet(), DIALOG_CLEANUP_GRAPHICS::doCleanup(), DIALOG_CLEANUP_TRACKS_AND_VIAS::doCleanup(), SIM_PLOT_FRAME::doCloseWindow(), DIALOG_GLOBAL_DELETION::doGlobalDeletions(), SCH_FIELD::DoHypertextMenu(), DRAWING_TOOL::DrawVia(), TRACK_WIDTH_MENU::eventHandler(), DIFF_PAIR_MENU::eventHandler(), PCB_EDIT_FRAME::ExecuteRemoteCommand(), SCH_EDIT_FRAME::ExecuteRemoteCommand(), GERBVIEW_FRAME::GERBVIEW_FRAME(), FP_TREE_SYNCHRONIZING_ADAPTER::GetContextMenuTool(), SYMBOL_TREE_SYNCHRONIZING_ADAPTER::GetContextMenuTool(), PL_EDITOR_FRAME::GetLayoutFromRedoList(), PL_EDITOR_FRAME::GetLayoutFromUndoList(), SCH_NAVIGATE_TOOL::HypertextCommand(), ROUTER_TOOL::InlineBreakTrack(), EDA_3D_VIEWER_FRAME::InstallPreferences(), KICAD_MANAGER_FRAME::InstallPreferences(), PL_EDITOR_FRAME::InstallPreferences(), FOOTPRINT_EDIT_FRAME::InstallPreferences(), SYMBOL_EDIT_FRAME::InstallPreferences(), GERBVIEW_FRAME::InstallPreferences(), PCB_EDIT_FRAME::InstallPreferences(), SCH_EDIT_FRAME::InstallPreferences(), PCB_EDIT_FRAME::LoadProjectSettings(), FOOTPRINT_EDIT_FRAME::LoadSettings(), SYMBOL_EDIT_FRAME::LoadSymbol(), PROPERTIES_FRAME::OnAcceptPrms(), DIALOG_DRC::OnActivateDlg(), DIALOG_FOOTPRINT_CHECKER::OnCancelClick(), DIALOG_DRC::OnCancelClick(), DIALOG_INSPECTOR::onCellClicked(), DIALOG_ERC::OnCloseErcDialog(), DIALOG_FOOTPRINT_CHECKER::OnDeleteOneClick(), DIALOG_DRC::OnDeleteOneClick(), DIALOG_DRC::OnDRCItemRClick(), DIALOG_ERC::OnERCItemSelected(), DIALOG_CONSTRAINTS_REPORTER::OnErrorLinkClicked(), DIALOG_INSPECTION_REPORTER::OnErrorLinkClicked(), KICAD_MANAGER_FRAME::OnIdle(), FOOTPRINTS_LISTBOX::OnLeftDClick(), APPEARANCE_CONTROLS::onNetclassContextMenu(), APPEARANCE_CONTROLS::onNetContextMenu(), PANEL_PCBNEW_ACTION_PLUGINS::OnOpenDirectoryButtonClick(), SIM_PLOT_FRAME::onProbe(), PANEL_PCBNEW_ACTION_PLUGINS::OnReloadButtonClick(), DIALOG_ABOUT::onReportBug(), DIALOG_PLOT::onRunDRC(), DIALOG_DRC::OnRunDRCClick(), HIERARCHY_NAVIG_DLG::onSelectSheetPath(), SCH_EDIT_FRAME::onSize(), SYMBOL_TREE_PANE::onSymbolSelected(), DIALOG_FIELDS_EDITOR_GLOBAL::OnTableCellClick(), SIM_PLOT_FRAME::onTune(), PANEL_SELECTION_FILTER::PANEL_SELECTION_FILTER(), DIALOG_PLOT::Plot(), TOOLS_HOLDER::PopTool(), SCH_EDIT_FRAME::PutDataInPreviousState(), FOOTPRINT_WIZARD_FRAME::PythonPluginsReload(), PL_EDITOR_FRAME::RollbackFromUndo(), FOOTPRINT_EDIT_FRAME::SaveFootprintToBoard(), PCB_EDIT_FRAME::SaveProjectSettings(), FOOTPRINT_EDIT_FRAME::SaveSettings(), EDA_3D_VIEWER_FRAME::SaveSettings(), DIALOG_FIND::search(), setupEventHandlers(), APPEARANCE_CONTROLS::showNetclass(), SYMBOL_VIEWER_FRAME::SYMBOL_VIEWER_FRAME(), DIALOG_GRID_SETTINGS::TransferDataFromWindow(), PANEL_3D_DISPLAY_OPTIONS::TransferDataFromWindow(), DIALOG_LIB_EDIT_TEXT::TransferDataFromWindow(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::TransferDataFromWindow(), DIALOG_SYMBOL_PROPERTIES::TransferDataFromWindow(), DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataFromWindow(), DIALOG_FIELDS_EDITOR_GLOBAL::TransferDataToWindow(), DIALOG_LIB_EDIT_TEXT::TransferDataToWindow(), PANEL_3D_DISPLAY_OPTIONS::TransferDataToWindow(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::TransferDataToWindow(), DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::TransferDataToWindow(), EDA_DRAW_FRAME::UpdateMsgPanel(), NET_GRID_TABLE::updateNetVisibility(), DIALOG_NETLIST::~DIALOG_NETLIST(), and DIALOG_UPDATE_PCB::~DIALOG_UPDATE_PCB().

◆ 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:76

References KIWAY_HOLDER::m_type.

Referenced by DIALOG_SHIM::DIALOG_SHIM().

◆ GetUndoCommandCount()

int CVPCB_MAINFRAME::GetUndoCommandCount ( ) const
inlineoverridevirtual

Reimplemented from EDA_BASE_FRAME.

Definition at line 200 of file cvpcb_mainframe.h.

201  {
202  return m_undoList.size();
203  }
CVPCB_UNDO_REDO_LIST m_undoList

References m_undoList.

◆ GetUserUnits()

EDA_UNITS EDA_BASE_FRAME::GetUserUnits ( ) const
inlineinherited

Return the user units currently in use.

Definition at line 126 of file eda_base_frame.h.

127  {
128  return m_userUnits;
129  }
EDA_UNITS m_userUnits
Map containing the UI update handlers registered with wx for each action.

References EDA_BASE_FRAME::m_userUnits.

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

◆ GetWindowSettings()

WINDOW_SETTINGS * EDA_BASE_FRAME::GetWindowSettings ( APP_SETTINGS_BASE aCfg)
virtualinherited

Return a pointer to the window settings for this frame.

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

Parameters
aCfgis this frame's config object

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

Definition at line 785 of file eda_base_frame.cpp.

786 {
787  return &aCfg->m_Window;
788 }
WINDOW_SETTINGS m_Window
Definition: app_settings.h:181

References APP_SETTINGS_BASE::m_Window.

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

◆ GetWindowSize()

wxSize EDA_BASE_FRAME::GetWindowSize ( )
inherited

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

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

Returns
the undecorated window size

Definition at line 1207 of file eda_base_frame.cpp.

1208 {
1209 #ifdef __WXGTK__
1210  // GTK includes the window decorations in the normal GetSize call,
1211  // so we have to use a GTK-specific sizing call that returns the
1212  // non-decorated window size.
1213  int width = 0;
1214  int height = 0;
1215  GTKDoGetSize( &width, &height );
1216 
1217  wxSize winSize( width, height );
1218 #else
1219  wxSize winSize = GetSize();
1220 #endif
1221 
1222  return winSize;
1223 }

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

◆ HandleSystemColorChange()

void EDA_BASE_FRAME::HandleSystemColorChange ( )
virtualinherited

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

Definition at line 1226 of file eda_base_frame.cpp.

1227 {
1228  // Update the icon theme when the system theme changes and update the toolbars
1229  if( GetBitmapStore()->ThemeChanged() )
1230  ThemeChanged();
1231 
1232  // This isn't handled by ThemeChanged()
1233  if( GetMenuBar() )
1234  {
1235  // For icons in menus, icon scaling & hotkeys
1236  ReCreateMenuBar();
1237  GetMenuBar()->Refresh();
1238  }
1239 }
virtual void ThemeChanged()
Process light/dark theme change.
virtual void ReCreateMenuBar()
Recreates the menu bar.
BITMAP_STORE * GetBitmapStore()
Definition: bitmap.cpp:93

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

Referenced by EDA_BASE_FRAME::onSystemColorChange().

◆ HandleUpdateUIEvent()

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

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

enabled, checked, etc.).

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

Definition at line 370 of file eda_base_frame.cpp.

372 {
373  bool checkRes = false;
374  bool enableRes = true;
375  bool showRes = true;
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  aEvent.Enable( enableRes );
392  aEvent.Show( showRes );
393 
394  // wxWidgets 3.1.5+ includes a field in the event that says if the event supports being
395  // checked, since wxMenuItems don't want to be checked unless they actually are checkable
396 #if wxCHECK_VERSION( 3, 1, 5 )
397  if( aEvent.IsCheckable() )
398  aEvent.Check( checkRes );
399 #else
400  bool canCheck = true;
401 
402  // wxMenuItems don't want to be checked unless they actually are checkable, so we have to check to
403  // see if they can be and can't just universally apply a check in this event.
404  if( auto menu = dynamic_cast<wxMenu*>( aEvent.GetEventObject() ) )
405  canCheck = menu->FindItem( aEvent.GetId() )->IsCheckable();
406 
407  if( canCheck )
408  aEvent.Check( checkRes );
409 #endif
410 }
SELECTION_CONDITION showCondition
Returns true if the UI control should be shown.
SELECTION_CONDITION enableCondition
Returns true if the UI control should be enabled.
SELECTION_CONDITION checkCondition
Returns true if the UI control should be checked.
virtual SELECTION & GetCurrentSelection()
Get the current selection from the canvas area.
Definition: tools_holder.h:101

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

Referenced by EDA_BASE_FRAME::RegisterUIUpdateHandler().

◆ help_name()

wxString EDA_BASE_FRAME::help_name ( )
virtualinherited

Reimplemented in KICAD_MANAGER_FRAME.

Definition at line 804 of file eda_base_frame.cpp.

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

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

Referenced by COMMON_CONTROL::ShowHelp().

◆ ImportHotkeyConfigFromFile()

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

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

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

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

1118 {
1119  wxAcceleratorEntry entries[1];
1120  entries[0].Set( wxACCEL_CTRL, int( 'Q' ), wxID_EXIT );
1121  wxAcceleratorTable accel( 1, entries );
1122  SetAcceleratorTable( accel );
1123 }

◆ InstallPreferences()

virtual void EDA_BASE_FRAME::InstallPreferences ( PAGED_DIALOG ,
PANEL_HOTKEYS_EDITOR  
)
inlinevirtualinherited

Allow a frame to load its preference panels (if any) into the preferences dialog.

Parameters
aParenta paged dialog into which the preference panels should be installed.

Reimplemented in SCH_EDIT_FRAME, PCB_EDIT_FRAME, GERBVIEW_FRAME, SYMBOL_EDIT_FRAME, FOOTPRINT_EDIT_FRAME, PL_EDITOR_FRAME, KICAD_MANAGER_FRAME, and EDA_3D_VIEWER_FRAME.

Definition at line 297 of file eda_base_frame.h.

297 { }

Referenced by EDA_BASE_FRAME::OnPreferences().

◆ isAutoSaveRequired()

virtual bool EDA_BASE_FRAME::isAutoSaveRequired ( ) const
inlineprotectedvirtualinherited

Return the auto save status of the application.

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

Reimplemented in SCH_EDIT_FRAME, and PCB_EDIT_FRAME.

Definition at line 615 of file eda_base_frame.h.

615 { return false; }

Referenced by EDA_BASE_FRAME::ProcessEvent().

◆ IsContentModified()

bool CVPCB_MAINFRAME::IsContentModified ( ) const
inlineoverridevirtual

Get if the current associations have been modified but not saved.

Returns
true if the any changes have not been saved

Reimplemented from EDA_BASE_FRAME.

Definition at line 114 of file cvpcb_mainframe.h.

115  {
116  return m_modified;
117  }

References m_modified.

◆ IsCurrentTool()

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

Definition at line 109 of file tools_holder.cpp.

110 {
111  if( m_toolStack.empty() )
112  return &aAction == &ACTIONS::selectionTool;
113  else
114  return m_toolStack.back() == aAction.GetName();
115 }
std::vector< std::string > m_toolStack
Definition: tools_holder.h:162
static TOOL_ACTION selectionTool
Definition: actions.h:153
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 SCH_EDIT_TOOL::Init(), BOARD_EDITOR_CONTROL::Init(), EDIT_TOOL::Init(), SCH_LINE_WIRE_BUS_TOOL::Init(), and EDITOR_CONDITIONS::toolFunc().

◆ IsDismissed()

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

Definition at line 155 of file kiway_player.cpp.

156 {
157  return !m_modal_loop;
158 }
WX_EVENT_LOOP * m_modal_loop
< Points to nested event_loop. NULL means not modal and dismissed.
Definition: kiway_player.h:213

References KIWAY_PLAYER::m_modal_loop.

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

◆ IsModal()

bool KIWAY_PLAYER::IsModal ( ) const
inlineoverridevirtualinherited

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

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

Reimplemented from EDA_BASE_FRAME.

Definition at line 173 of file kiway_player.h.

173 { return m_modal; }

References KIWAY_PLAYER::m_modal.

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

◆ IsType()

bool EDA_BASE_FRAME::IsType ( FRAME_T  aType) const
inlineinherited

Definition at line 206 of file eda_base_frame.h.

206 { return m_ident == aType; }

References EDA_BASE_FRAME::m_ident.

Referenced by SYMBOL_EDITOR_CONTROL::AddLibrary(), PCB_CONTROL::AddLibrary(), SYMBOL_EDITOR_CONTROL::AddSymbol(), ALIGN_DISTRIBUTE_TOOL::AlignBottom(), ALIGN_DISTRIBUTE_TOOL::AlignCenterX(), ALIGN_DISTRIBUTE_TOOL::AlignCenterY(), ALIGN_DISTRIBUTE_TOOL::AlignTop(), BOARD_COMMIT::BOARD_COMMIT(), SYMBOL_EDITOR_CONTROL::CutCopyDelete(), DIALOG_GRID_SETTINGS::DIALOG_GRID_SETTINGS(), DIALOG_MOVE_EXACT::DIALOG_MOVE_EXACT(), DIALOG_PUSH_PAD_PROPERTIES::DIALOG_PUSH_PAD_PROPERTIES(), DIALOG_RULE_AREA_PROPERTIES::DIALOG_RULE_AREA_PROPERTIES(), KIGFX::SCH_VIEW::DisplaySheet(), ALIGN_DISTRIBUTE_TOOL::DistributeHorizontally(), ALIGN_DISTRIBUTE_TOOL::DistributeVertically(), ALIGN_DISTRIBUTE_TOOL::doAlignLeft(), ALIGN_DISTRIBUTE_TOOL::doAlignRight(), ALIGN_DISTRIBUTE_TOOL::doDistributeCentersHorizontally(), ALIGN_DISTRIBUTE_TOOL::doDistributeCentersVertically(), ALIGN_DISTRIBUTE_TOOL::doDistributeGapsHorizontally(), ALIGN_DISTRIBUTE_TOOL::doDistributeGapsVertically(), COMMON_TOOLS::doZoomFit(), SYMBOL_EDITOR_CONTROL::DuplicateSymbol(), SYMBOL_EDITOR_CONTROL::EditSymbol(), SYMBOL_EDITOR_CONTROL::ExportSymbol(), FOOTPRINT::GetMsgPanelInfo(), ALIGN_DISTRIBUTE_TOOL::GetSelections(), CONVERT_TOOL::Init(), SYMBOL_EDITOR_CONTROL::Init(), DIALOG_EDIT_ONE_FIELD::init(), PCB_SELECTION_TOOL::Init(), DIALOG_PAD_PROPERTIES::initValues(), CONVERT_TOOL::LinesToPoly(), PCB_SELECTION_TOOL::Main(), APPEARANCE_CONTROLS::OnColorSwatchChanged(), SYMBOL_EDITOR_CONTROL::OnDeMorgan(), APPEARANCE_CONTROLS::onObjectVisibilityChanged(), PANEL_3D_COLORS::PANEL_3D_COLORS(), PCB_CONTROL::Paste(), SYMBOL_EDITOR_CONTROL::PinLibrary(), POSITION_RELATIVE_TOOL::RelativeItemSelectionMove(), SYMBOL_EDITOR_CONTROL::Revert(), SYMBOL_EDITOR_CONTROL::Save(), APPEARANCE_CONTROLS::setVisibleObjects(), EE_INSPECTION_TOOL::ShowDatasheet(), EE_INSPECTION_TOOL::ShowERCDialog(), SYMBOL_EDITOR_CONTROL::ToggleSymbolTree(), SYMBOL_EDITOR_CONTROL::UnpinLibrary(), and DIALOG_PAGES_SETTINGS::UpdateDrawingSheetExample().

◆ IsWritable()

bool EDA_BASE_FRAME::IsWritable ( const wxFileName &  aFileName)
inherited

Checks if aFileName can be written.

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

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

Definition at line 1019 of file eda_base_frame.cpp.

1020 {
1021  wxString msg;
1022  wxFileName fn = aFileName;
1023 
1024  // Check for absence of a file path with a file name. Unfortunately KiCad
1025  // uses paths relative to the current project path without the ./ part which
1026  // confuses wxFileName. Making the file name path absolute may be less than
1027  // elegant but it solves the problem.
1028  if( fn.GetPath().IsEmpty() && fn.HasName() )
1029  fn.MakeAbsolute();
1030 
1031  wxCHECK_MSG( fn.IsOk(), false,
1032  wxT( "File name object is invalid. Bad programmer!" ) );
1033  wxCHECK_MSG( !fn.GetPath().IsEmpty(), false,
1034  wxT( "File name object path <" ) + fn.GetFullPath() +
1035  wxT( "> is not set. Bad programmer!" ) );
1036 
1037  if( fn.IsDir() && !fn.IsDirWritable() )
1038  {
1039  msg.Printf( _( "You do not have write permissions to folder '%s'." ),
1040  fn.GetPath() );
1041  }
1042  else if( !fn.FileExists() && !fn.IsDirWritable() )
1043  {
1044  msg.Printf( _( "You do not have write permissions to save file '%s' to folder '%s'." ),
1045  fn.GetFullName(), fn.GetPath() );
1046  }
1047  else if( fn.FileExists() && !fn.IsFileWritable() )
1048  {
1049  msg.Printf( _( "You do not have write permissions to save file '%s'." ),
1050  fn.GetFullPath() );
1051  }
1052 
1053  if( !msg.IsEmpty() )
1054  {
1055  wxMessageBox( msg );
1056  return false;
1057  }
1058 
1059  return true;
1060 }
#define _(s)

References _.

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

◆ Kiway()

KIWAY& KIWAY_HOLDER::Kiway ( ) const
inlineinherited

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

A KIWAY_HOLDER is not necessarily a KIWAY_PLAYER.

Definition at line 53 of file kiway_holder.h.

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

References KIWAY_HOLDER::m_kiway.

Referenced by PROJECT_TREE_ITEM::Activate(), FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), PCB_BASE_EDIT_FRAME::AddLibrary(), SYMBOL_EDITOR_CONTROL::AddSymbolToSchematic(), BuildLibrariesListBox(), SYMBOL_EDIT_FRAME::canCloseWindow(), SCH_EDIT_FRAME::canCloseWindow(), KICAD_MANAGER_FRAME::CloseProject(), COMMON_CONTROL::ConfigurePaths(), DIALOG_CHOOSE_FOOTPRINT::ConstructRightPanel(), DIALOG_CHOOSE_SYMBOL::ConstructRightPanel(), PCB_BASE_FRAME::CreateAndShow3D_Frame(), FOOTPRINT_EDITOR_CONTROL::CreateFootprint(), CVPCB_MAINFRAME(), DIALOG_RESCUE_EACH::DIALOG_RESCUE_EACH(), DIALOG_SHIM::DIALOG_SHIM(), DisplayStatus(), SCH_EDIT_FRAME::doCloseWindow(), FIELDS_GRID_TRICKS::doPopupSelection(), FIELDS_EDITOR_GRID_TRICKS::doPopupSelection(), BOARD_EDITOR_CONTROL::EditFpInFpEditor(), SCH_EDITOR_CONTROL::EditWithSymbolEditor(), BACK_ANNOTATE::FetchNetlistFromPCB(), DISPLAY_FOOTPRINTS_FRAME::GetFootprint(), KICAD_MANAGER_FRAME::ImportNonKiCadProject(), SCRIPTING_TOOL::Init(), KICAD_MANAGER_FRAME::language_change(), KIWAY_PLAYER::language_change(), DIALOG_CHANGE_SYMBOLS::launchMatchIdSymbolBrowser(), DIALOG_CHANGE_SYMBOLS::launchNewIdSymbolBrowser(), LIB_TREE_MODEL_ADAPTER::LIB_TREE_MODEL_ADAPTER(), LoadFootprintFiles(), TEXT_BUTTON_SYMBOL_CHOOSER::OnButtonClick(), TEXT_BUTTON_FP_CHOOSER::OnButtonClick(), PL_EDITOR_FRAME::OnExit(), SCH_EDIT_FRAME::OnExit(), FOOTPRINT_EDIT_FRAME::OnExitKiCad(), FOOTPRINT_VIEWER_FRAME::OnExitKiCad(), SYMBOL_EDIT_FRAME::OnExitKiCad(), SAVE_AS_TRAVERSER::OnFile(), DIALOG_CHOOSE_SYMBOL::OnInitDialog(), SCH_EDIT_FRAME::OnOpenCvpcb(), SCH_EDIT_FRAME::OnOpenPcbnew(), EDA_BASE_FRAME::OnPreferences(), DIALOG_SYMBOL_REMAP::OnRemapSymbols(), DIALOG_EDIT_ONE_FIELD::OnTextValueSelectButtonClick(), KICAD_MANAGER_FRAME::OnUnarchiveFiles(), FOOTPRINT_EDIT_FRAME::OnUpdateLoadFootprintFromBoard(), SCH_EDIT_FRAME::OnUpdatePCB(), FOOTPRINT_EDIT_FRAME::OnUpdateSaveFootprintToBoard(), PANEL_PCBNEW_COLOR_SETTINGS::PANEL_PCBNEW_COLOR_SETTINGS(), SCH_BASE_FRAME::PickSymbolFromLibBrowser(), KIWAY_HOLDER::Prj(), SCH_EDIT_TOOL::Properties(), BACK_ANNOTATE::PushNewLinksToPCB(), FOOTPRINT_WIZARD_FRAME::PythonPluginsReload(), ReadNetListAndFpFiles(), FOOTPRINT_VIEWER_FRAME::ReCreateFootprintList(), SCH_EDITOR_CONTROL::rescueProject(), EE_INSPECTION_TOOL::RunSimulation(), SYMBOL_EDIT_FRAME::Save(), SaveFootprintAssociation(), FOOTPRINT_EDIT_FRAME::SaveFootprintToBoard(), LIB_TREE_MODEL_ADAPTER::SavePinnedItems(), EDA_DRAW_FRAME::ScriptingConsoleEnableDisable(), SCH_EDIT_FRAME::SendCrossProbeClearHighlight(), SCH_EDIT_FRAME::SendCrossProbeNetName(), PCB_EDIT_FRAME::SendCrossProbeNetName(), SendMessageToEESCHEMA(), PCB_EDIT_FRAME::SendMessageToEESCHEMA(), SCH_EDIT_FRAME::SendMessageToPCBNEW(), SCH_EDIT_FRAME::sendNetlistToCvpcb(), SCH_EDIT_FRAME::SetCrossProbeConnection(), SYMBOL_EDIT_FRAME::SetCurSymbol(), CVPCB_CONTROL::ShowFootprintViewer(), COMMON_CONTROL::ShowLibraryTable(), COMMON_CONTROL::ShowPlayer(), KICAD_MANAGER_CONTROL::ShowPlayer(), SCH_EDIT_FRAME::ShowSchematicSetupDialog(), SIM_PLOT_FRAME::SIM_PLOT_FRAME(), BOARD_EDITOR_CONTROL::UpdateSchematicFromPCB(), and DIALOG_EXCHANGE_FOOTPRINTS::ViewAndSelectFootprint().

◆ kiway_express()

void KIWAY_PLAYER::kiway_express ( KIWAY_EXPRESS aEvent)
protectedinherited

event handler, routes to derivative specific virtual KiwayMailIn()

Definition at line 176 of file kiway_player.cpp.

177 {
178  // logging support
179  KiwayMailIn( aEvent ); // call the virtual, override in derived.
180 }
virtual void KiwayMailIn(KIWAY_EXPRESS &aEvent)
Receive KIWAY_EXPRESS messages from other players.

References KIWAY_PLAYER::KiwayMailIn().

◆ KiwayMailIn()

void CVPCB_MAINFRAME::KiwayMailIn ( KIWAY_EXPRESS aEvent)
overridevirtual

Receive KIWAY_EXPRESS messages from other players.

Override it in derived classes.

Reimplemented from KIWAY_PLAYER.

Definition at line 1127 of file cvpcb_mainframe.cpp.

1128 {
1129  const std::string& payload = mail.GetPayload();
1130 
1131  switch( mail.Command() )
1132  {
1133  case MAIL_EESCHEMA_NETLIST:
1134  ReadNetListAndFpFiles( payload );
1135  /* @todo
1136  Go into SCH_EDIT_FRAME::OnOpenCvpcb( wxCommandEvent& event ) and trim GNL_ALL down.
1137  */
1138  break;
1139 
1140  default:
1141  ; // ignore most
1142  }
1143 }
bool ReadNetListAndFpFiles(const std::string &aNetlist)
Load the netlist file built on the fly by Eeschema and loads footprint libraries from fp lib tables.

References KIWAY_EXPRESS::Command(), KIWAY_EXPRESS::GetPayload(), MAIL_EESCHEMA_NETLIST, and ReadNetListAndFpFiles().

◆ language_change()

void KIWAY_PLAYER::language_change ( wxCommandEvent &  event)
protectedinherited

An event handler called on a language menu selection.

Definition at line 183 of file kiway_player.cpp.

184 {
185  int id = event.GetId();
186 
187  // tell all the KIWAY_PLAYERs about the language change.
188  Kiway().SetLanguage( id );
189 }
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 SetLanguage(int aLanguage)
Change the language and then calls ShowChangedLanguage() on all #KIWAY_PLAYERs.
Definition: kiway.cpp:475

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

◆ LoadFootprintFiles()

bool CVPCB_MAINFRAME::LoadFootprintFiles ( )

Read the list of footprint (*.mod files) and generate the list of footprints.

For each footprint the following items are stored:

  • the footprint name
  • documentation string
  • associated keywords
Returns
true if libraries are found, false otherwise.

Definition at line 782 of file cvpcb_mainframe.cpp.

783 {
784  FP_LIB_TABLE* fptbl = Prj().PcbFootprintLibs( Kiway() );
785 
786  // Check if there are footprint libraries in the footprint library table.
787  if( !fptbl || !fptbl->GetLogicalLibs().size() )
788  {
789  wxMessageBox( _( "No PCB footprint libraries are listed in the current footprint "
790  "library table." ), _( "Configuration Error" ), wxOK | wxICON_ERROR );
791  return false;
792  }
793 
794  WX_PROGRESS_REPORTER progressReporter( this, _( "Loading Footprint Libraries" ), 2 );
795 
796  m_FootprintsList->ReadFootprintFiles( fptbl, nullptr, &progressReporter );
797 
799  {
801  }
802 
803  return true;
804 }
KIWAY & Kiway() const
Return a reference to the KIWAY that this object has an opportunity to participate in.
Definition: kiway_holder.h:53
FOOTPRINT_LIST * m_FootprintsList
void DisplayErrors(wxTopLevelWindow *aCaller=NULL)
Multi-thread safe progress reporter dialog, intended for use of tasks that paralleize reporting back ...
virtual bool ReadFootprintFiles(FP_LIB_TABLE *aTable, const wxString *aNickname=nullptr, PROGRESS_REPORTER *aProgressReporter=nullptr)=0
Read all the footprints provided by the combination of aTable and aNickname.
PROJECT & Prj() const
Return a reference to the PROJECT associated with this KIWAY.
#define _(s)
virtual FP_LIB_TABLE * PcbFootprintLibs(KIWAY &aKiway)
Return the table of footprint libraries.
Definition: project.cpp:285
unsigned GetErrorCount() const
std::vector< wxString > GetLogicalLibs()
Return the logical library names, all of them that are pertinent to a look up done on this LIB_TABLE.

References _, FOOTPRINT_LIST::DisplayErrors(), FOOTPRINT_LIST::GetErrorCount(), LIB_TABLE::GetLogicalLibs(), KIWAY_HOLDER::Kiway(), m_FootprintsList, PROJECT::PcbFootprintLibs(), KIWAY_HOLDER::Prj(), and FOOTPRINT_LIST::ReadFootprintFiles().

Referenced by ReadNetListAndFpFiles().

◆ LoadSettings()

void CVPCB_MAINFRAME::LoadSettings ( APP_SETTINGS_BASE aCfg)
overridevirtual

Load common frame parameters from a configuration file.

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

Reimplemented from EDA_BASE_FRAME.

Definition at line 446 of file cvpcb_mainframe.cpp.

447 {
449 
450  CVPCB_SETTINGS* cfg = static_cast<CVPCB_SETTINGS*>( aCfg );
451 
453 }
virtual void LoadSettings(APP_SETTINGS_BASE *aCfg)
Load common frame parameters from a configuration file.

References EDA_BASE_FRAME::LoadSettings(), CVPCB_SETTINGS::m_FilterFootprint, and m_filteringOptions.

Referenced by CVPCB_MAINFRAME().

◆ LoadWindowSettings()

void EDA_BASE_FRAME::LoadWindowSettings ( const WINDOW_SETTINGS aCfg)
inherited

Load window settings from the given settings object.

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

Definition at line 685 of file eda_base_frame.cpp.

686 {
687  LoadWindowState( aCfg->state );
688 
689  if( m_hasAutoSave )
690  m_autoSaveInterval = Pgm().GetCommonSettings()->m_System.autosave_interval;
691 
692  m_perspective = aCfg->perspective;
693  m_mruPath = aCfg->mru_path;
694 
695  TOOLS_HOLDER::CommonSettingsChanged( false, false );
696 }
wxString mru_path
Definition: app_settings.h:84
wxString m_mruPath
KIWAY Kiway & Pgm(), KFCTL_STANDALONE
The global Program "get" accessor.
Definition: single_top.cpp:106
void LoadWindowState(const wxString &aFileName)
wxString m_perspective
wxString perspective
Definition: app_settings.h:85
WINDOW_STATE state
Definition: app_settings.h:83
virtual void CommonSettingsChanged(bool aEnvVarsChanged, bool aTextVarsChanged)
Notification event that some of the common (suite-wide) settings have changed.

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

Referenced by EDA_BASE_FRAME::LoadSettings().

◆ LoadWindowState() [1/2]

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

Definition at line 526 of file eda_base_frame.cpp.

527 {
528  if( !Pgm().GetCommonSettings()->m_Session.remember_open_files )
529  return;
530 
531  const PROJECT_FILE_STATE* state = Prj().GetLocalSettings().GetFileState( aFileName );
532 
533  if( state != nullptr )
534  {
535  LoadWindowState( state->window );
536  }
537 }
KIWAY Kiway & Pgm(), KFCTL_STANDALONE
The global Program "get" accessor.
Definition: single_top.cpp:106
void LoadWindowState(const wxString &aFileName)
virtual PROJECT_LOCAL_SETTINGS & GetLocalSettings() const
Definition: project.h:151
PROJECT & Prj() const
Return a reference to the PROJECT associated with this KIWAY.
struct WINDOW_STATE window
const PROJECT_FILE_STATE * GetFileState(const wxString &aFileName)

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

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

◆ LoadWindowState() [2/2]

void EDA_BASE_FRAME::LoadWindowState ( const WINDOW_STATE aState)
virtualinherited

Load frame state info from a configuration file.

Definition at line 540 of file eda_base_frame.cpp.

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

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

◆ NonUserClose()

bool EDA_BASE_FRAME::NonUserClose ( bool  aForce)
inlineinherited

Definition at line 582 of file eda_base_frame.h.

583  {
584  m_isNonUserClose = true;
585  return Close( aForce );
586  }

References EDA_BASE_FRAME::m_isNonUserClose.

Referenced by KIWAY::PlayerClose().

◆ onAutoSaveTimer()

void EDA_BASE_FRAME::onAutoSaveTimer ( wxTimerEvent &  aEvent)
protectedinherited

Handle the auto save timer event.

Definition at line 314 of file eda_base_frame.cpp.

315 {
316  if( !doAutoSave() )
317  m_autoSaveTimer->Start( m_autoSaveInterval * 1000, wxTIMER_ONE_SHOT );
318 }
virtual bool doAutoSave()
This should be overridden by the derived class to handle the auto save feature.
wxTimer * m_autoSaveTimer

References EDA_BASE_FRAME::doAutoSave(), EDA_BASE_FRAME::m_autoSaveInterval, and EDA_BASE_FRAME::m_autoSaveTimer.

Referenced by EDA_BASE_FRAME::commonInit().

◆ OnCharHook()

void EDA_BASE_FRAME::OnCharHook ( wxKeyEvent &  aKeyEvent)
virtualinherited

Capture the key event before it is sent to the GUI.

The basic frame does not capture this event. Editor frames should override this event function to capture and filter these keys when they are used as hotkeys, and skip it if the key is not used as hotkey (otherwise the key events will be not sent to menus).

Reimplemented in FOOTPRINT_VIEWER_FRAME.

Definition at line 327 of file eda_base_frame.cpp.

328 {
329  wxLogTrace( kicadTraceKeyEvent, "EDA_BASE_FRAME::OnCharHook %s", dump( aKeyEvent ) );
330 
331  // Key events can be filtered here.
332  // Currently no filtering is made.
333  aKeyEvent.Skip();
334 }
wxString dump(const wxArrayString &aArray)
Debug helper for printing wxArrayString contents.
const wxChar *const kicadTraceKeyEvent
Flag to enable wxKeyEvent debug tracing.

References dump(), and kicadTraceKeyEvent.

◆ OnEnterFilteringText()

void CVPCB_MAINFRAME::OnEnterFilteringText ( wxCommandEvent &  event)

Called each time the text of m_tcFilterString is changed.

Definition at line 414 of file cvpcb_mainframe.cpp.

415 {
416  // Called when changing the filter string in main toolbar.
417  // If the option FOOTPRINTS_LISTBOX::FILTERING_BY_TEXT_PATTERN is set, update the list
418  // of available footprints which match the filter
419 
420  wxListEvent l_event;
421  OnSelectComponent( l_event );
422 }
void OnSelectComponent(wxListEvent &event)
Called when clicking on a component in component list window:

References OnSelectComponent().

Referenced by ReCreateHToolbar(), and setupEventHandlers().

◆ OnKicadAbout()

void EDA_BASE_FRAME::OnKicadAbout ( wxCommandEvent &  event)
inherited

Definition at line 968 of file eda_base_frame.cpp.

969 {
970  void ShowAboutDialog(EDA_BASE_FRAME * aParent); // See AboutDialog_main.cpp
971  ShowAboutDialog( this );
972 }
void ShowAboutDialog(EDA_BASE_FRAME *aParent)
The base frame for deriving all KiCad main window classes.

References ShowAboutDialog().

◆ OnMaximize()

void EDA_BASE_FRAME::OnMaximize ( wxMaximizeEvent &  aEvent)
inherited

Definition at line 1185 of file eda_base_frame.cpp.

1186 {
1187  // When we maximize the window, we want to save the old information
1188  // so that we can add it to the settings on next window load.
1189  // Contrary to the documentation, this event seems to be generated
1190  // when the window is also being unmaximized on OSX, so we only
1191  // capture the size information when we maximize the window when on OSX.
1192 #ifdef __WXOSX__
1193  if( !IsMaximized() )
1194 #endif
1195  {
1197  m_normalFramePos = GetPosition();
1198  wxLogTrace( traceDisplayLocation, "Maximizing window - Saving position (%d, %d) with size (%d, %d)",
1200  }
1201 
1202  // Skip event to actually maximize the window
1203  aEvent.Skip();
1204 }
const wxChar *const traceDisplayLocation
Flag to enable debug output of display positioning logic.
wxPoint m_normalFramePos
wxSize m_normalFrameSize
wxSize GetWindowSize()
Get the undecorated window size that can be used for restoring the window size.

References EDA_BASE_FRAME::GetWindowSize(), EDA_BASE_FRAME::m_normalFramePos, EDA_BASE_FRAME::m_normalFrameSize, and traceDisplayLocation.

◆ OnMenuEvent()

void EDA_BASE_FRAME::OnMenuEvent ( wxMenuEvent &  event)
inherited

The TOOL_DISPATCHER needs these to work around some issues in wxWidgets where the menu events aren't captured by the menus themselves.

Definition at line 337 of file eda_base_frame.cpp.

338 {
339  if( !m_toolDispatcher )
340  aEvent.Skip();
341  else
343 }
virtual void DispatchWxEvent(wxEvent &aEvent)
Process wxEvents (mostly UI events), translate them to TOOL_EVENTs, and make tools handle those.
TOOL_DISPATCHER * m_toolDispatcher
Definition: tools_holder.h:158

References TOOL_DISPATCHER::DispatchWxEvent(), and TOOLS_HOLDER::m_toolDispatcher.

◆ OnMove()

virtual void EDA_BASE_FRAME::OnMove ( wxMoveEvent &  aEvent)
inlinevirtualinherited

Reimplemented in EDA_DRAW_FRAME.

Definition at line 193 of file eda_base_frame.h.

194  {
195  aEvent.Skip();
196  }

◆ OnPreferences()

void EDA_BASE_FRAME::OnPreferences ( wxCommandEvent &  event)
inherited

Displays the preferences and settings of all opened editors paged dialog.

Definition at line 975 of file eda_base_frame.cpp.

976 {
977  PAGED_DIALOG dlg( this, _( "Preferences" ), true );
978  wxTreebook* book = dlg.GetTreebook();
979 
980  book->AddPage( new PANEL_COMMON_SETTINGS( &dlg, book ), _( "Common" ) );
981 
982  book->AddPage( new PANEL_MOUSE_SETTINGS( &dlg, book ), _( "Mouse and Touchpad" ) );
983 
984  PANEL_HOTKEYS_EDITOR* hotkeysPanel = new PANEL_HOTKEYS_EDITOR( this, book, false );
985  book->AddPage( hotkeysPanel, _( "Hotkeys" ) );
986 
987  wxWindow* viewer3D = nullptr;
988 
989  for( unsigned i = 0; i < KIWAY_PLAYER_COUNT; ++i )
990  {
991  KIWAY_PLAYER* frame = dlg.Kiway().Player( (FRAME_T) i, false );
992 
993  if( frame )
994  {
995  frame->InstallPreferences( &dlg, hotkeysPanel );
996 
997  if( !viewer3D )
998  viewer3D = wxFindWindowByName( QUALIFIED_VIEWER3D_FRAMENAME( frame ) );
999  }
1000  }
1001 
1002  if( viewer3D )
1003  static_cast<EDA_BASE_FRAME*>( viewer3D )->InstallPreferences( &dlg, hotkeysPanel );
1004 
1005  // The Kicad manager frame is not a player so we have to add it by hand
1006  wxWindow* manager = wxFindWindowByName( KICAD_MANAGER_FRAME_NAME );
1007 
1008  if( manager )
1009  static_cast<EDA_BASE_FRAME*>( manager )->InstallPreferences( &dlg, hotkeysPanel );
1010 
1011  for( size_t i = 0; i < book->GetPageCount(); ++i )
1012  book->GetPage( i )->Layout();
1013 
1014  if( dlg.ShowModal() == wxID_OK )
1015  dlg.Kiway().CommonSettingsChanged( false, false );
1016 }
A wxFrame capable of the OpenProjectFiles function, meaning it can load a portion of a KiCad project.
Definition: kiway_player.h:64
KIWAY & Kiway() const
Return a reference to the KIWAY that this object has an opportunity to participate in.
Definition: kiway_holder.h:53
FRAME_T
The set of EDA_BASE_FRAME derivatives, typically stored in EDA_BASE_FRAME::m_Ident.
Definition: frame_type.h:32
virtual KIWAY_PLAYER * Player(FRAME_T aFrameType, bool doCreate=true, wxTopLevelWindow *aParent=nullptr)
Return the KIWAY_PLAYER* given a FRAME_T.
Definition: kiway.cpp:373
#define _(s)
#define KICAD_MANAGER_FRAME_NAME
#define QUALIFIED_VIEWER3D_FRAMENAME(parent)
virtual void InstallPreferences(PAGED_DIALOG *, PANEL_HOTKEYS_EDITOR *)
Allow a frame to load its preference panels (if any) into the preferences dialog.

References _, KIWAY::CommonSettingsChanged(), PAGED_DIALOG::GetTreebook(), EDA_BASE_FRAME::InstallPreferences(), KICAD_MANAGER_FRAME_NAME, KIWAY_HOLDER::Kiway(), KIWAY_PLAYER_COUNT, KIWAY::Player(), and QUALIFIED_VIEWER3D_FRAMENAME.

Referenced by APPEARANCE_CONTROLS::onReadOnlySwatch(), and COMMON_CONTROL::OpenPreferences().

◆ OnSelectComponent()

void CVPCB_MAINFRAME::OnSelectComponent ( wxListEvent &  event)

Called when clicking on a component in component list window:

  • Updates the filtered footprint list, if the filtered list option is selected
  • Updates the current selected footprint in footprint list
  • Updates the footprint shown in footprint display window (if opened)

Definition at line 425 of file cvpcb_mainframe.cpp.

426 {
428  return;
429 
430  wxString libraryName;
431  COMPONENT* symbol = GetSelectedComponent();
432  libraryName = m_librariesListBox->GetSelectedLibrary();
433 
434  m_footprintListBox->SetFootprints( *m_FootprintsList, libraryName, symbol,
435  m_tcFilterString->GetValue(), m_filteringOptions );
436 
437  if( symbol && symbol->GetFPID().IsValid() )
439  else
441 
442  refreshAfterSymbolSearch( symbol );
443 }
FOOTPRINT_LIST * m_FootprintsList
void SetSelectedFootprint(const LIB_ID &aFPID)
bool IsValid() const
Check if this LID_ID is valid.
Definition: lib_id.h:168
const LIB_ID & GetFPID() const
Definition: pcb_netlist.h:133
void refreshAfterSymbolSearch(COMPONENT *aSymbol)
wxTextCtrl * m_tcFilterString
wxString GetSelectedLibrary()
Store all of the related footprint information found in a netlist.
Definition: pcb_netlist.h:84
void SetSelection(int index, bool State=true)
COMPONENT * GetSelectedComponent()
Get the selected component from the component listbox.
FOOTPRINTS_LISTBOX * m_footprintListBox
void SetFootprints(FOOTPRINT_LIST &aList, const wxString &aLibName, COMPONENT *aComponent, const wxString &aFootPrintFilterPattern, int aFilterType)
Populate the wxListCtrl with the footprints from aList that meet the filter criteria defined by aFilt...
LIBRARY_LISTBOX * m_librariesListBox

References COMPONENT::GetFPID(), GetSelectedComponent(), LIBRARY_LISTBOX::GetSelectedLibrary(), ITEMS_LISTBOX_BASE::GetSelection(), LIB_ID::IsValid(), m_filteringOptions, m_footprintListBox, m_FootprintsList, m_librariesListBox, m_skipComponentSelect, m_tcFilterString, refreshAfterSymbolSearch(), FOOTPRINTS_LISTBOX::SetFootprints(), FOOTPRINTS_LISTBOX::SetSelectedFootprint(), and FOOTPRINTS_LISTBOX::SetSelection().

Referenced by OnEnterFilteringText(), COMPONENTS_LISTBOX::OnSelectComponent(), LIBRARY_LISTBOX::OnSelectLibrary(), and SetFootprintFilter().

◆ OnSize()

void EDA_BASE_FRAME::OnSize ( wxSizeEvent &  aEvent)
virtualinherited

Reimplemented in EDA_DRAW_FRAME, FOOTPRINT_VIEWER_FRAME, FOOTPRINT_WIZARD_FRAME, SYMBOL_VIEWER_FRAME, and KICAD_MANAGER_FRAME.

Definition at line 508 of file eda_base_frame.cpp.

509 {
510 #ifdef __WXMAC__
511  int currentDisplay = wxDisplay::GetFromWindow( this );
512 
513  if( m_displayIndex >= 0 && currentDisplay >= 0 && currentDisplay != m_displayIndex )
514  {
515  wxLogTrace( traceDisplayLocation, "OnSize: current display changed %d to %d",
516  m_displayIndex, currentDisplay );
517  m_displayIndex = currentDisplay;
519  }
520 #endif
521 
522  aEvent.Skip();
523 }
const wxChar *const traceDisplayLocation
Flag to enable debug output of display positioning logic.
void ensureWindowIsOnScreen()

References EDA_BASE_FRAME::ensureWindowIsOnScreen(), EDA_BASE_FRAME::m_displayIndex, and traceDisplayLocation.

Referenced by EDA_DRAW_FRAME::OnSize().

◆ OnSockRequest()

void KIWAY_PLAYER::OnSockRequest ( wxSocketEvent &  evt)
inherited

Definition at line 71 of file eda_dde.cpp.

72 {
73  size_t len;
74  wxSocketBase* sock = evt.GetSocket();
75 
76  switch( evt.GetSocketEvent() )
77  {
78  case wxSOCKET_INPUT:
79  sock->Read( client_ipc_buffer, 1 );
80 
81  if( sock->LastCount() == 0 )
82  break; // No data, occurs on opening connection
83 
84  sock->Read( client_ipc_buffer + 1, IPC_BUF_SIZE - 2 );
85  len = 1 + sock->LastCount();
86  client_ipc_buffer[len] = 0;
88  break;
89 
90  case wxSOCKET_LOST:
91  return;
92  break;
93 
94  default:
95  wxPrintf( wxT( "EDA_DRAW_FRAME::OnSockRequest() error: Invalid event !" ) );
96  break;
97  }
98 }
#define IPC_BUF_SIZE
Definition: eda_dde.cpp:39
static char client_ipc_buffer[IPC_BUF_SIZE]
Definition: eda_dde.cpp:40
virtual void ExecuteRemoteCommand(const char *cmdline)
Execute a remote command sent via socket (to port KICAD_PCB_PORT_SERVICE_NUMBER, currently 4242).
Definition: kiway_player.h:196

References client_ipc_buffer, KIWAY_PLAYER::ExecuteRemoteCommand(), and IPC_BUF_SIZE.

◆ OnSockRequestServer()

void KIWAY_PLAYER::OnSockRequestServer ( wxSocketEvent &  evt)
inherited

Definition at line 103 of file eda_dde.cpp.

104 {
105  wxSocketBase* socket;
106  wxSocketServer* server = (wxSocketServer*) evt.GetSocket();
107 
108  socket = server->Accept();
109 
110  if( socket == NULL )
111  return;
112 
113  m_sockets.push_back( socket );
114 
115  socket->Notify( true );
116  socket->SetEventHandler( *this, ID_EDA_SOCKET_EVENT );
117  socket->SetNotify( wxSOCKET_INPUT_FLAG | wxSOCKET_LOST_FLAG );
118 }
#define NULL
std::vector< wxSocketBase * > m_sockets
interprocess communication
Definition: kiway_player.h:219

References ID_EDA_SOCKET_EVENT, KIWAY_PLAYER::m_sockets, and NULL.

◆ onSystemColorChange()

void EDA_BASE_FRAME::onSystemColorChange ( wxSysColourChangedEvent &  aEvent)
protectedinherited

Definition at line 1242 of file eda_base_frame.cpp.

1243 {
1244  // Call the handler to update the colors used in the frame
1246 
1247  // Skip the change event to ensure the rest of the window controls get it
1248  aEvent.Skip();
1249 }
virtual void HandleSystemColorChange()
Update the UI in response to a change in the system colors.

References EDA_BASE_FRAME::HandleSystemColorChange().

◆ OpenProjectFiles()

bool CVPCB_MAINFRAME::OpenProjectFiles ( const std::vector< wxString > &  aFileList,
int  aCtl = 0 
)
overridevirtual

Open a project or set of files given by aFileList.

This is generalized in the direction of worst case. In a typical case aFileList will only hold a single file, like "myboard.kicad_pcb" because any KIWAY_PLAYER is only in one KIWAY and the KIWAY owns the PROJECT. Therefore opening files from multiple projects into the same KIWAY_PLAYER is precluded.

Each derived class should handle this in a way specific to its needs. No filename prompting is done inside here for any file or project. There should be no need to call this with aFileList which is empty. However, calling it with a single filename which does not exist should indicate to the implementer that a new session is being started and that the given name is the desired name for the data file at time of save.

This function does not support "appending". Use a different function for that. Any prior project data tree should be cleared before loading the new stuff. Therefore, one of the first things an implementation should do is test for existence of the first file in the list, and if it does not exist, treat it as a new session, possibly with a UI notification to that effect.

After loading the window should update its Title as part of this operation. If the KIWAY_PLAYER needs to, it can load the *.pro file as part of this operation.

If the KIWAY_PLAYER cannot load any of the file(s) in the list, then it should say why through some GUI interface, and return false.

Parameters
aFileListincludes files that this frame should open according to the knowledge in the derived wxFrame. In almost every case, the list will have only a single file in it.
aCtlis a set of bit flags ORed together from the set of KICTL_* #defined above.
Returns
true if all requested files were opened OK, else false.

Reimplemented from KIWAY_PLAYER.

Definition at line 586 of file cvpcb_mainframe.cpp.

587 {
588  return true;
589 }

◆ ParseArgs()

virtual void KIWAY_PLAYER::ParseArgs ( wxCmdLineParser &  aParser)
inlinevirtualinherited

Handle command-line arguments in a frame-specific way.

The given argument parser has already been initialized with the command line and any options/switches that are handled by the top-level launcher before passing control to the child frame.

Parameters
aParseris the argument parser created by the top-level launcher.

Definition at line 139 of file kiway_player.h.

140  {
141  WXUNUSED( aParser );
142  }

Referenced by PGM_SINGLE_TOP::OnPgmInit().

◆ PopCommandFromRedoList()

PICKED_ITEMS_LIST * EDA_BASE_FRAME::PopCommandFromRedoList ( )
virtualinherited

Return the last command to undo and remove it from list, nothing is deleted.

Definition at line 1169 of file eda_base_frame.cpp.

1170 {
1171  return m_redoList.PopCommand();
1172 }
PICKED_ITEMS_LIST * PopCommand()
UNDO_REDO_CONTAINER m_redoList

References EDA_BASE_FRAME::m_redoList, and UNDO_REDO_CONTAINER::PopCommand().

Referenced by PL_EDITOR_FRAME::GetLayoutFromRedoList(), SYMBOL_EDIT_FRAME::GetSymbolFromRedoList(), and SCH_EDITOR_CONTROL::Redo().

◆ PopCommandFromUndoList()

◆ PopTool()

void TOOLS_HOLDER::PopTool ( const std::string &  actionName)
virtualinherited

Definition at line 61 of file tools_holder.cpp.

62 {
63  // Push/pop events can get out of order (such as when they're generated by the Simulator
64  // frame but not processed until the mouse is back in the Schematic frame), so make sure
65  // we're popping the right stack frame.
66 
67  for( int i = (int) m_toolStack.size() - 1; i >= 0; --i )
68  {
69  if( m_toolStack[ i ] == actionName )
70  {
71  m_toolStack.erase( m_toolStack.begin() + i );
72 
73  // If there's something underneath us, and it's now the top of the stack, then
74  // re-activate it
75  if( ( --i ) >= 0 && i == (int)m_toolStack.size() - 1 )
76  {
77  std::string back = m_toolStack[ i ];
79 
80  if( action )
81  {
82  // Pop the action as running it will push it back onto the stack
83  m_toolStack.pop_back();
84 
85  TOOL_EVENT evt = action->MakeEvent();
86  evt.SetHasPosition( false );
87  evt.SetReactivate( true );
88  GetToolManager()->PostEvent( evt );
89  }
90  }
91  else
93 
94  return;
95  }
96  }
97 }
virtual void DisplayToolMsg(const wxString &msg)
Definition: tools_holder.h:121
void SetReactivate(bool aReactivate=true)
Returns information about difference between current mouse cursor position and the place where draggi...
Definition: tool_event.h:253
TOOL_ACTION * FindAction(const std::string &aActionName) const
Find an action with a given name (if there is one available).
Generic, UI-independent tool event.
Definition: tool_event.h:152
TOOL_MANAGER * m_toolManager
Definition: tools_holder.h:156
std::vector< std::string > m_toolStack
Definition: tools_holder.h:162
Represent a single user action.
Definition: tool_action.h:67
TOOL_EVENT MakeEvent() const
Return the event associated with the action (i.e.
Definition: tool_action.cpp:72
ACTION_MANAGER * GetActionManager() const
Definition: tool_manager.h:199
TOOL_MANAGER * GetToolManager() const
Return the MVC controller.
Definition: tools_holder.h:54
void PostEvent(const TOOL_EVENT &aEvent)
Put an event to the event queue to be processed at the end of event processing cycle.
static TOOL_ACTION selectionTool
Definition: actions.h:153
void SetHasPosition(bool aHasPosition)
Returns if the action associated with this event should be treated as immediate regardless of the cur...
Definition: tool_event.h:241

References TOOLS_HOLDER::DisplayToolMsg(), ACTION_MANAGER::FindAction(), TOOL_MANAGER::GetActionManager(), TOOLS_HOLDER::GetToolManager(), TOOLS_HOLDER::m_toolManager, TOOLS_HOLDER::m_toolStack, TOOL_ACTION::MakeEvent(), TOOL_MANAGER::PostEvent(), ACTIONS::selectionTool, TOOL_EVENT::SetHasPosition(), and TOOL_EVENT::SetReactivate().

Referenced by EDIT_TOOL::copyToClipboard(), SCH_LINE_WIRE_BUS_TOOL::doDrawSegments(), PCB_TOOL_BASE::doInteractiveItemPlacement(), EDIT_TOOL::doMoveSelection(), DRAWING_TOOL::drawArc(), DRAWING_TOOL::DrawDimension(), MICROWAVE_TOOL::drawMicrowaveInductor(), DRAWING_TOOL::drawSegment(), SYMBOL_EDITOR_DRAWING_TOOLS::DrawShape(), PL_DRAWING_TOOLS::DrawShape(), SCH_DRAWING_TOOLS::DrawSheet(), DRAWING_TOOL::DrawZone(), PAD_TOOL::EnumeratePads(), DRAWING_TOOL::InteractivePlaceWithPreview(), ZOOM_TOOL::Main(), PCB_PICKER_TOOL::Main(), PL_EDIT_TOOL::Main(), SYMBOL_EDITOR_MOVE_TOOL::Main(), SCH_MOVE_TOOL::Main(), PICKER_TOOL::Main(), ROUTER_TOOL::MainLoop(), LENGTH_TUNER_TOOL::MainLoop(), GERBVIEW_INSPECTION_TOOL::MeasureTool(), PCB_VIEWER_TOOLS::MeasureTool(), SYMBOL_EDITOR_DRAWING_TOOLS::PlaceAnchor(), BOARD_EDITOR_CONTROL::PlaceFootprint(), SCH_DRAWING_TOOLS::PlaceImage(), DRAWING_TOOL::PlaceImportedGraphics(), PL_DRAWING_TOOLS::PlaceItem(), SCH_DRAWING_TOOLS::PlaceSymbol(), BOARD_EDITOR_CONTROL::PlaceTarget(), DRAWING_TOOL::PlaceText(), DRAWING_TOOL::SetAnchor(), SCH_DRAWING_TOOLS::SingleClickPlace(), SYMBOL_EDITOR_DRAWING_TOOLS::TwoClickPlace(), SCH_DRAWING_TOOLS::TwoClickPlace(), and SCH_LINE_WIRE_BUS_TOOL::UnfoldBus().

◆ PrintMsg()

void EDA_BASE_FRAME::PrintMsg ( const wxString &  text)
inherited

Definition at line 810 of file eda_base_frame.cpp.

811 {
812  SetStatusText( text );
813 }

References text.

Referenced by KICAD_MANAGER_CONTROL::Execute(), TERMINATE_HANDLER::OnTerminate(), and KICAD_MANAGER_FRAME::OnUnarchiveFiles().

◆ Prj()

PROJECT & KIWAY_HOLDER::Prj ( ) const
inherited

Return a reference to the PROJECT associated with this KIWAY.

Definition at line 35 of file kiway_holder.cpp.

36 {
37  return Kiway().Prj();
38 }
KIWAY & Kiway() const
Return a reference to the KIWAY that this object has an opportunity to participate in.
Definition: kiway_holder.h:53
virtual PROJECT & Prj() const
Return the PROJECT associated with this KIWAY.
Definition: kiway.cpp:186

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

Referenced by PCB_BASE_EDIT_FRAME::AddLibrary(), SYMBOL_LIBRARY_MANAGER::addLibrary(), SYMBOL_EDIT_FRAME::addLibTableEntry(), SCH_EDIT_FRAME::AppendSchematic(), AskSaveBoardFileName(), DIALOG_SYMBOL_REMAP::backupProject(), buildEquivalenceList(), BuildLibrariesListBox(), SIM_PLOT_FRAME::canCloseWindow(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::Cfg3DPath(), DIALOG_FOOTPRINT_PROPERTIES::Cfg3DPath(), KICAD_MANAGER_FRAME::CloseProject(), DIALOG_GEN_FOOTPRINT_POSITION::CreateAsciiFiles(), DIALOG_GEN_FOOTPRINT_POSITION::CreateGerberFiles(), PCB_BASE_EDIT_FRAME::createNewLibrary(), PCB_BASE_EDIT_FRAME::CreateNewProjectLibrary(), DIALOG_SYMBOL_REMAP::createProjectSymbolLibTable(), SCH_EDIT_FRAME::CreateScreens(), FOOTPRINT_EDIT_FRAME::DeleteFootprintFromLibrary(), DIALOG_ANNOTATE::DIALOG_ANNOTATE(), DIALOG_BOARD_REANNOTATE::DIALOG_BOARD_REANNOTATE(), DIALOG_BOARD_SETUP::DIALOG_BOARD_SETUP(), DIALOG_BOARD_STATISTICS::DIALOG_BOARD_STATISTICS(), DIALOG_CHANGE_SYMBOLS::DIALOG_CHANGE_SYMBOLS(), DIALOG_CHOOSE_FOOTPRINT::DIALOG_CHOOSE_FOOTPRINT(), DIALOG_CHOOSE_SYMBOL::DIALOG_CHOOSE_SYMBOL(), DIALOG_CONFIG_EQUFILES::DIALOG_CONFIG_EQUFILES(), DIALOG_EXCHANGE_FOOTPRINTS::DIALOG_EXCHANGE_FOOTPRINTS(), DIALOG_EXPORT_SVG::DIALOG_EXPORT_SVG(), DIALOG_FOOTPRINT_PROPERTIES::DIALOG_FOOTPRINT_PROPERTIES(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR(), DIALOG_GEN_FOOTPRINT_POSITION::DIALOG_GEN_FOOTPRINT_POSITION(), DIALOG_NETLIST::DIALOG_NETLIST(), DIALOG_PAGES_SETTINGS::DIALOG_PAGES_SETTINGS(), DIALOG_PLOT::DIALOG_PLOT(), DIALOG_PLOT_SCHEMATIC::DIALOG_PLOT_SCHEMATIC(), DIALOG_SCHEMATIC_SETUP::DIALOG_SCHEMATIC_SETUP(), DIALOG_SYMBOL_REMAP::DIALOG_SYMBOL_REMAP(), DIALOG_UPDATE_FROM_PCB::DIALOG_UPDATE_FROM_PCB(), DIALOG_UPDATE_PCB::DIALOG_UPDATE_PCB(), PL_DRAW_PANEL_GAL::DisplayDrawingSheet(), FOOTPRINT_PREVIEW_PANEL::DisplayFootprint(), SYMBOL_VIEWER_FRAME::DisplayLibInfos(), DisplayStatus(), PCB_EDIT_FRAME::doAutoSave(), SCH_EDIT_FRAME::doAutoSave(), PCB_BASE_EDIT_FRAME::doCloseWindow(), FOOTPRINT_EDIT_FRAME::doCloseWindow(), SCH_EDIT_FRAME::doCloseWindow(), FIELDS_GRID_TRICKS::doPopupSelection(), FIELDS_EDITOR_GRID_TRICKS::doPopupSelection(), KICAD_MANAGER_CONTROL::Execute(), PCB_EDIT_FRAME::Export_IDF3(), PCB_EDIT_FRAME::ExportFootprintsToLibrary(), BOARD_EDITOR_CONTROL::ExportNetlist(), DIALOG_EXPORT_SVG::ExportSVGFile(), SYMBOL_EDITOR_CONTROL::ExportSymbolAsSVG(), SYMBOL_EDITOR_CONTROL::ExportView(), PCB_EDIT_FRAME::ExportVRML_File(), BACK_ANNOTATE::FetchNetlistFromPCB(), PCB_EDIT_FRAME::Files_io_from_id(), PCB_EDIT_FRAME::GenD356File(), DIALOG_GENDRILL::GenDrillAndMapFiles(), FOOTPRINT_VIEWER_FRAME::getCurFootprintName(), SYMBOL_EDIT_FRAME::GetCurLib(), FOOTPRINT_VIEWER_FRAME::getCurNickname(), PCB_BASE_EDIT_FRAME::GetDesignRulesPath(), DISPLAY_FOOTPRINTS_FRAME::GetFootprint(), DIALOG_SYMBOL_REMAP::getLibsNotInGlobalSymbolLibTable(), SCH_BASE_FRAME::GetLibSymbol(), DIALOG_PLOT_SCHEMATIC::getOutputPath(), KICAD_MANAGER_FRAME::GetProjectFileName(), SYMBOL_VIEWER_FRAME::GetSelectedSymbol(), SCH_EDIT_FRAME::importFile(), SCH_EDITOR_CONTROL::ImportFPAssignments(), DIALOG_CONFIG_EQUFILES::Init(), FOOTPRINT_EDIT_FRAME::initLibraryTree(), SIM_PLOT_FRAME::initWorkbook(), SCH_EDIT_FRAME::KiwayMailIn(), SYMBOL_EDIT_FRAME::KiwayMailIn(), EDA_DRAW_FRAME::LibraryFileBrowser(), LoadFootprintFiles(), DIALOG_SPICE_MODEL::loadLibrary(), KICAD_MANAGER_FRAME::LoadProject(), SCH_EDIT_FRAME::LoadProject(), SCH_EDIT_FRAME::LoadProjectSettings(), PCB_EDIT_FRAME::LoadProjectSettings(), SIM_PLOT_FRAME::LoadSettings(), SCH_EDIT_FRAME::LoadSheetFromFile(), SYMBOL_EDIT_FRAME::LoadSymbolFromCurrentLib(), EDA_BASE_FRAME::LoadWindowState(), SIM_PLOT_FRAME::menuSaveWorkbook(), SIM_PLOT_FRAME::menuSaveWorkbookAs(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::On3DModelCellChanged(), DIALOG_FOOTPRINT_PROPERTIES::On3DModelCellChanged(), FOOTPRINT_VIEWER_FRAME::OnActivate(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::OnAdd3DModel(), DIALOG_FOOTPRINT_PROPERTIES::OnAdd3DModel(), DIALOG_BOARD_SETUP::OnAuxiliaryAction(), KICAD_MANAGER_FRAME::OnBrowseInFileExplorer(), TEXT_BUTTON_URL::OnButtonClick(), TEXT_BUTTON_FILE_BROWSER::OnButtonClick(), DIALOG_EDIT_SYMBOLS_LIBID::onClickOrphansButton(), DIALOG_EXPORT_STEP::onExportButton(), DIALOG_GENDRILL::OnGenReportFile(), KICAD_MANAGER_FRAME::OnIdle(), SCH_EDIT_FRAME::OnImportProject(), DIALOG_CHOOSE_SYMBOL::OnInitDialog(), DIALOG_CONFIG_EQUFILES::OnOkClick(), SCH_EDIT_FRAME::OnOpenCvpcb(), KICAD_MANAGER_FRAME::OnOpenFileInTextEditor(), DIALOG_NETLIST::OnOpenNetlistClick(), SCH_EDIT_FRAME::OnOpenPcbnew(), DIALOG_PLOT::OnOutputDirectoryBrowseClicked(), DIALOG_EXPORT_SVG::OnOutputDirectoryBrowseClicked(), DIALOG_GENDRILL::OnOutputDirectoryBrowseClicked(), DIALOG_GEN_FOOTPRINT_POSITION::OnOutputDirectoryBrowseClicked(), DIALOG_PLOT_SCHEMATIC::OnOutputDirectoryBrowseClicked(), DIALOG_BOARD_SETUP::OnPageChange(), DIALOG_SYMBOL_REMAP::OnRemapSymbols(), FOOTPRINT_EDIT_FRAME::OnSaveFootprintAsPng(), DIALOG_ERC::OnSaveReport(), DIALOG_DRC::OnSaveReport(), DIALOG_LABEL_EDITOR::onScintillaCharAdded(), PROPERTIES_FRAME::onScintillaCharAdded(), DIALOG_SCH_EDIT_ONE_FIELD::onScintillaCharAdded(), DIALOG_SPICE_MODEL::onSelectLibrary(), SYMBOL_VIEWER_FRAME::OnSelectSymbol(), KICAD_MANAGER_FRAME::OnUnarchiveFiles(), SCH_EDIT_FRAME::OnUpdatePCB(), PCB_EDIT_FRAME::OpenProjectFiles(), SCH_EDIT_FRAME::OpenProjectFiles(), PANEL_PREVIEW_3D_MODEL::PANEL_PREVIEW_3D_MODEL(), SCH_EDITOR_CONTROL::Paste(), FOOTPRINT_EDITOR_CONTROL::PasteFootprint(), SCH_BASE_FRAME::PickSymbolFromLibTree(), DIALOG_PLOT::Plot(), DIALOG_PLOT_SCHEMATIC::plotOneSheetDxf(), DIALOG_PLOT_SCHEMATIC::plotOneSheetHpgl(), DIALOG_CHOOSE_SYMBOL::PopulateFootprintSelector(), SCH_EDITOR_CONTROL::Print(), EDA_DRAW_FRAME::PrintDrawingSheet(), SCH_EDIT_FRAME::PrintPage(), KICAD_MANAGER_FRAME::PrintPrjInfo(), ReadNetListAndFpFiles(), PCB_EDIT_FRAME::RecreateCmpFileFromBoard(), FOOTPRINT_VIEWER_FRAME::ReCreateFootprintList(), SYMBOL_VIEWER_FRAME::ReCreateLibList(), FOOTPRINT_VIEWER_FRAME::ReCreateLibraryList(), SYMBOL_VIEWER_FRAME::ReCreateSymbolList(), EDA_3D_VIEWER_FRAME::ReloadRequest(), DIALOG_SYMBOL_REMAP::remapSymbolToLibTable(), SYMBOL_EDIT_FRAME::replaceLibTableEntry(), SCH_EDITOR_CONTROL::RescueLegacyProject(), SCH_EDITOR_CONTROL::RescueSymbolLibTableProject(), FOOTPRINT_EDIT_FRAME::restoreLastFootprint(), FOOTPRINT_EDIT_FRAME::retainLastFootprint(), SCH_EDIT_FRAME::Save_File(), FOOTPRINT_EDITOR_CONTROL::SaveAs(), SCH_EDIT_FRAME::SaveEEFile(), FOOTPRINT_EDIT_FRAME::SaveFootprint(), FOOTPRINT_EDIT_FRAME::SaveFootprintAs(), FOOTPRINT_EDIT_FRAME::SaveFootprintInLibrary(), SYMBOL_EDIT_FRAME::saveLibrary(), PCB_EDIT_FRAME::SavePcbFile(), SCH_EDIT_FRAME::SaveProject(), PCB_EDIT_FRAME::SaveProjectSettings(), DIALOG_BOARD_STATISTICS::saveReportClicked(), SIM_PLOT_FRAME::SaveSettings(), EDA_BASE_FRAME::SaveSettings(), SYMBOL_EDIT_FRAME::saveSymbolAs(), SCH_BASE_FRAME::saveSymbolLibTables(), FOOTPRINT_VIEWER_FRAME::SelectAndViewFootprint(), PCB_BASE_FRAME::SelectLibrary(), SYMBOL_EDIT_FRAME::SelectLibraryFromList(), PCB_BASE_EDIT_FRAME::selectLibTable(), SYMBOL_EDIT_FRAME::selectSymLibTable(), FOOTPRINT_VIEWER_FRAME::setCurFootprintName(), SYMBOL_EDIT_FRAME::SetCurLib(), FOOTPRINT_VIEWER_FRAME::setCurNickname(), SYMBOL_EDIT_FRAME::SetCurSymbol(), GERBVIEW_FRAME::SetPageSettings(), EE_INSPECTION_TOOL::ShowDatasheet(), DIALOG_CHOOSE_SYMBOL::ShowFootprintFor(), COMMON_CONTROL::ShowHelp(), SYMBOL_VIEWER_FRAME::ShowModal(), FOOTPRINT_VIEWER_FRAME::ShowModal(), SCH_EDIT_FRAME::ShowSchematicSetupDialog(), SIM_PLOT_FRAME::SIM_PLOT_FRAME(), SYMBOL_LIBRARY_MANAGER::symTable(), SYMBOL_TREE_SYNCHRONIZING_ADAPTER::Sync(), FOOTPRINT_EDIT_FRAME::SyncLibraryTree(), EDA_3D_VIEWER_FRAME::takeScreenshot(), PANEL_SETUP_RULES::TransferDataFromWindow(), DIALOG_SHEET_PROPERTIES::TransferDataFromWindow(), NETLIST_DIALOG::TransferDataFromWindow(), DIALOG_EDIT_SYMBOLS_LIBID::TransferDataFromWindow(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::TransferDataToWindow(), PANEL_SETUP_RULES::TransferDataToWindow(), DIALOG_FOOTPRINT_PROPERTIES::TransferDataToWindow(), DIALOG_PAGES_SETTINGS::UpdateDrawingSheetExample(), FOOTPRINT_VIEWER_FRAME::UpdateTitle(), SIM_PLOT_FRAME::updateTitle(), FOOTPRINT_EDIT_FRAME::UpdateTitle(), SCH_EDIT_FRAME::UpdateTitle(), SCH_EDIT_FRAME::WriteNetListFile(), DIALOG_FOOTPRINT_PROPERTIES::~DIALOG_FOOTPRINT_PROPERTIES(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::~DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR(), and SCH_EDIT_FRAME::~SCH_EDIT_FRAME().

◆ ProcessEvent()

bool EDA_BASE_FRAME::ProcessEvent ( wxEvent &  aEvent)
overrideinherited

Override the default process event handler to implement the auto save feature.

Warning
If you override this function in a derived class, make sure you call down to this or the auto save feature will be disabled.

Definition at line 256 of file eda_base_frame.cpp.

257 {
258 #ifdef __WXMAC__
259  // Apple in its infinite wisdom will raise a disabled window before even passing
260  // us the event, so we have no way to stop it. Instead, we have to catch an
261  // improperly ordered disabled window and quasi-modal dialog here and reorder
262  // them.
263  if( !IsEnabled() && IsActive() )
264  {
265  wxWindow* dlg = findQuasiModalDialog();
266  if( dlg )
267  dlg->Raise();
268  }
269 #endif
270 
271  if( !wxFrame::ProcessEvent( aEvent ) )
272  return false;
273 
274  if( IsShown() && m_hasAutoSave && IsActive() &&
276  {
277  if( !m_autoSaveState )
278  {
279  wxLogTrace( traceAutoSave, wxT( "Starting auto save timer." ) );
280  m_autoSaveTimer->Start( m_autoSaveInterval * 1000, wxTIMER_ONE_SHOT );
281  m_autoSaveState = true;
282  }
283  else if( m_autoSaveTimer->IsRunning() )
284  {
285  wxLogTrace( traceAutoSave, wxT( "Stopping auto save timer." ) );
286  m_autoSaveTimer->Stop();
287  m_autoSaveState = false;
288  }
289  }
290 
291  return true;
292 }
const wxChar *const traceAutoSave
Flag to enable auto save feature debug tracing.
virtual bool isAutoSaveRequired() const
Return the auto save status of the application.
wxTimer * m_autoSaveTimer
wxWindow * findQuasiModalDialog()

References EDA_BASE_FRAME::findQuasiModalDialog(), EDA_BASE_FRAME::isAutoSaveRequired(), EDA_BASE_FRAME::m_autoSaveInterval, EDA_BASE_FRAME::m_autoSaveState, EDA_BASE_FRAME::m_autoSaveTimer, EDA_BASE_FRAME::m_hasAutoSave, and traceAutoSave.

Referenced by COMMON_TOOLS::GridProperties(), SYMBOL_VIEWER_FRAME::onSelectNextSymbol(), SYMBOL_VIEWER_FRAME::onSelectPreviousSymbol(), KIWAY::ProcessEvent(), and SYMBOL_VIEWER_FRAME::ReCreateSymbolList().

◆ ProjectChanged()

virtual void EDA_BASE_FRAME::ProjectChanged ( )
inlinevirtualinherited

Notification event that the project has changed.

Reimplemented in PCB_EDIT_FRAME, and KICAD_MANAGER_FRAME.

Definition at line 510 of file eda_base_frame.h.

510 {}

Referenced by KIWAY::ProjectChanged().

◆ PushCommandToRedoList()

void EDA_BASE_FRAME::PushCommandToRedoList ( PICKED_ITEMS_LIST aItem)
virtualinherited

Add a command to redo in the redo list.

Delete the very old commands when the max count of redo commands is reached.

Definition at line 1148 of file eda_base_frame.cpp.

1149 {
1150  m_redoList.PushCommand( aNewitem );
1151 
1152  // Delete the extra items, if count max reached
1153  if( m_undoRedoCountMax > 0 )
1154  {
1155  int extraitems = GetRedoCommandCount() - m_undoRedoCountMax;
1156 
1157  if( extraitems > 0 )
1158  ClearUndoORRedoList( REDO_LIST, extraitems );
1159  }
1160 }
virtual int GetRedoCommandCount() const
virtual void ClearUndoORRedoList(UNDO_REDO_LIST aList, int aItemCount=-1)
Remove the aItemCount of old commands from aList and delete commands, pickers and picked items if nee...
void PushCommand(PICKED_ITEMS_LIST *aCommand)
UNDO_REDO_CONTAINER m_redoList

References EDA_BASE_FRAME::ClearUndoORRedoList(), EDA_BASE_FRAME::GetRedoCommandCount(), EDA_BASE_FRAME::m_redoList, EDA_BASE_FRAME::m_undoRedoCountMax, UNDO_REDO_CONTAINER::PushCommand(), and EDA_BASE_FRAME::REDO_LIST.

Referenced by PL_EDITOR_FRAME::GetLayoutFromUndoList(), SYMBOL_EDIT_FRAME::GetSymbolFromUndoList(), and SCH_EDITOR_CONTROL::Undo().

◆ PushCommandToUndoList()

void EDA_BASE_FRAME::PushCommandToUndoList ( PICKED_ITEMS_LIST aItem)
virtualinherited

Add a command to undo in the undo list.

Delete the very old commands when the max count of undo commands is reached.

Definition at line 1133 of file eda_base_frame.cpp.

1134 {
1135  m_undoList.PushCommand( aNewitem );
1136 
1137  // Delete the extra items, if count max reached
1138  if( m_undoRedoCountMax > 0 )
1139  {
1140  int extraitems = GetUndoCommandCount() - m_undoRedoCountMax;
1141 
1142  if( extraitems > 0 )
1143  ClearUndoORRedoList( UNDO_LIST, extraitems );
1144  }
1145 }
UNDO_REDO_CONTAINER m_undoList
virtual void ClearUndoORRedoList(UNDO_REDO_LIST aList, int aItemCount=-1)
Remove the aItemCount of old commands from aList and delete commands, pickers and picked items if nee...
void PushCommand(PICKED_ITEMS_LIST *aCommand)
virtual int GetUndoCommandCount() const

References EDA_BASE_FRAME::ClearUndoORRedoList(), EDA_BASE_FRAME::GetUndoCommandCount(), EDA_BASE_FRAME::m_undoList, EDA_BASE_FRAME::m_undoRedoCountMax, UNDO_REDO_CONTAINER::PushCommand(), and EDA_BASE_FRAME::UNDO_LIST.

Referenced by PL_EDITOR_FRAME::GetLayoutFromRedoList(), SYMBOL_EDIT_FRAME::GetSymbolFromRedoList(), SCH_EDITOR_CONTROL::Redo(), PCB_EDIT_FRAME::RunActionPlugin(), PL_EDITOR_FRAME::SaveCopyInUndoList(), SYMBOL_EDIT_FRAME::SaveCopyInUndoList(), SCH_EDIT_FRAME::SaveCopyInUndoList(), and SCH_EDIT_FRAME::StartNewUndo().

◆ PushTool()

void TOOLS_HOLDER::PushTool ( const std::string &  actionName)
virtualinherited

NB: the definition of "tool" is different at the user level.

The implementation uses a single TOOL_BASE derived class to implement several user "tools", such as rectangle and circle, or wire and bus. So each user-level tool is actually a TOOL_ACTION.

Definition at line 44 of file tools_holder.cpp.

45 {
46  m_toolStack.push_back( actionName );
47 
48  // Human cognitive stacking is very shallow; deeper tool stacks just get annoying
49  if( m_toolStack.size() > 3 )
50  m_toolStack.erase( m_toolStack.begin() );
51 
52  TOOL_ACTION* action = m_toolManager->GetActionManager()->FindAction( actionName );
53 
54  if( action )
55  DisplayToolMsg( action->GetLabel() );
56  else
57  DisplayToolMsg( actionName );
58 }
virtual void DisplayToolMsg(const wxString &msg)
Definition: tools_holder.h:121
TOOL_ACTION * FindAction(const std::string &aActionName) const
Find an action with a given name (if there is one available).
wxString GetLabel() const
Definition: tool_action.cpp:83
TOOL_MANAGER * m_toolManager
Definition: tools_holder.h:156
std::vector< std::string > m_toolStack
Definition: tools_holder.h:162
Represent a single user action.
Definition: tool_action.h:67
ACTION_MANAGER * GetActionManager() const
Definition: tool_manager.h:199

References TOOLS_HOLDER::DisplayToolMsg(), ACTION_MANAGER::FindAction(), TOOL_MANAGER::GetActionManager(), TOOL_ACTION::GetLabel(), TOOLS_HOLDER::m_toolManager, and TOOLS_HOLDER::m_toolStack.

Referenced by EDIT_TOOL::copyToClipboard(), PCB_TOOL_BASE::doInteractiveItemPlacement(), EDIT_TOOL::doMoveSelection(), DRAWING_TOOL::DrawArc(), DRAWING_TOOL::DrawCircle(), DRAWING_TOOL::DrawDimension(), DRAWING_TOOL::DrawLine(), MICROWAVE_TOOL::drawMicrowaveInductor(), DRAWING_TOOL::DrawRectangle(), SCH_LINE_WIRE_BUS_TOOL::DrawSegments(), SYMBOL_EDITOR_DRAWING_TOOLS::DrawShape(), PL_DRAWING_TOOLS::DrawShape(), SCH_DRAWING_TOOLS::DrawSheet(), DRAWING_TOOL::DrawZone(), PAD_TOOL::EnumeratePads(), DRAWING_TOOL::InteractivePlaceWithPreview(), ZOOM_TOOL::Main(), PCB_PICKER_TOOL::Main(), PL_EDIT_TOOL::Main(), SYMBOL_EDITOR_MOVE_TOOL::Main(), SCH_MOVE_TOOL::Main(), PICKER_TOOL::Main(), ROUTER_TOOL::MainLoop(), LENGTH_TUNER_TOOL::MainLoop(), GERBVIEW_INSPECTION_TOOL::MeasureTool(), PCB_VIEWER_TOOLS::MeasureTool(), SYMBOL_EDITOR_DRAWING_TOOLS::PlaceAnchor(), BOARD_EDITOR_CONTROL::PlaceFootprint(), SCH_DRAWING_TOOLS::PlaceImage(), DRAWING_TOOL::PlaceImportedGraphics(), PL_DRAWING_TOOLS::PlaceItem(), SCH_DRAWING_TOOLS::PlaceSymbol(), BOARD_EDITOR_CONTROL::PlaceTarget(), DRAWING_TOOL::PlaceText(), DRAWING_TOOL::SetAnchor(), SCH_DRAWING_TOOLS::SingleClickPlace(), SYMBOL_EDITOR_DRAWING_TOOLS::TwoClickPlace(), SCH_DRAWING_TOOLS::TwoClickPlace(), and SCH_LINE_WIRE_BUS_TOOL::UnfoldBus().

◆ ReadNetListAndFpFiles()

bool CVPCB_MAINFRAME::ReadNetListAndFpFiles ( const std::string &  aNetlist)

Load the netlist file built on the fly by Eeschema and loads footprint libraries from fp lib tables.

Parameters
aNetlistis the netlist from Eeschema in KiCad s-expr format. (see CVPCB_MAINFRAME::KiwayMailIn() to know how to get this netlist)

Definition at line 79 of file readwrite_dlgs.cpp.

80 {
81  wxString msg;
82  bool hasMissingNicks = false;
83 
84  ReadSchematicNetlist( aNetlist );
85 
86  if( m_symbolsListBox == NULL )
87  return false;
88 
89  wxSafeYield();
90 
92 
95 
97 
99  {
100  for( unsigned i = 0; i < m_netlist.GetCount(); i++ )
101  {
102  COMPONENT* component = m_netlist.GetComponent( i );
103 
104  if( component->GetFPID().empty() )
105  continue;
106 
107  if( component->GetFPID().IsLegacy() )
108  hasMissingNicks = true;
109  }
110  }
111 
112  // Check if footprint links were generated before the footprint library table was implemented.
113  if( hasMissingNicks )
114  {
115  msg = _( "Some of the assigned footprints are legacy entries with no library names. Would "
116  "you like KiCad to attempt to convert them to the new required LIB_ID format? "
117  "(If you answer no, then these assignments will be cleared and you will need to "
118  "re-assign them manually.)" );
119 
120  if( IsOK( this, msg ) )
121  {
122  msg.Clear();
123 
124  try
125  {
126  for( unsigned i = 0; i < m_netlist.GetCount(); i++ )
127  {
128  COMPONENT* component = m_netlist.GetComponent( i );
129 
130  if( component->GetFPID().IsLegacy() )
131  {
132  // get this first here, it's possibly obsoleted if we get it too soon.
133  FP_LIB_TABLE* tbl = Prj().PcbFootprintLibs( Kiway() );
134 
135  int guess = guessNickname( tbl, (LIB_ID*) &component->GetFPID() );
136 
137  switch( guess )
138  {
139  case 0:
140  m_modified = true;
141  break;
142 
143  case 1:
144  msg += wxString::Format( _(
145  "Component \"%s\" footprint \"%s\" was <b>not found</b> in any library.\n" ),
146  component->GetReference(),
147  component->GetFPID().GetLibItemName().wx_str()
148  );
149  break;
150 
151  case 2:
152  msg += wxString::Format( _(
153  "Component \"%s\" footprint \"%s\" was found in <b>multiple</b> libraries.\n" ),
154  component->GetReference(),
155  component->GetFPID().GetLibItemName().wx_str()
156  );
157  break;
158  }
159  }
160  }
161  }
162  catch( const IO_ERROR& ioe )
163  {
164  msg = ioe.What();
165  msg += wxT( "\n\n" );
166  msg += _( "First check your footprint library table entries." );
167 
168  wxMessageBox( msg, _( "Problematic Footprint Library Tables" ) );
169  return false;
170  }
171 
172  if( msg.size() )
173  {
174  HTML_MESSAGE_BOX dlg( this, wxEmptyString );
175 
176  dlg.MessageSet( _( "The following errors occurred attempting to convert the "
177  "footprint assignments:\n\n" ) );
178  dlg.ListSet( msg );
179  dlg.MessageSet( _( "\nYou will need to reassign them manually if you want them "
180  "to be updated correctly the next time you import the "
181  "netlist in Pcbnew." ) );
182 
183 #if 1
184  dlg.ShowModal();
185 #else
186  dlg.Fit();
187  dlg.Show( true ); // modeless lets user watch while fixing the problems, but its not working.
188 #endif
189  }
190  }
191  else
192  {
193  // Clear the legacy footprint assignments.
194  for( unsigned i = 0; i < m_netlist.GetCount(); i++ )
195  {
196  COMPONENT* component = m_netlist.GetComponent( i );
197 
198  if( component->GetFPID().IsLegacy() )
199  {
200  component->SetFPID( LIB_ID() /* empty */ );
201  m_modified = true;
202  }
203  }
204  }
205  }
206 
207 
208  // Display a dialog to select footprint selection, if the netlist
209  // and the .cmp file give 2 different valid footprints
210  std::vector <int > m_indexes; // indexes of footprints in netlist
211 
212  for( unsigned ii = 0; ii < m_netlist.GetCount(); ii++ )
213  {
214  COMPONENT* component = m_netlist.GetComponent( ii );
215 
216  if( component->GetAltFPID().empty() )
217  continue;
218 
219  if( component->GetFPID().IsLegacy() || component->GetAltFPID().IsLegacy() )
220  continue;
221 
222  m_indexes.push_back( ii );
223  }
224 
225  // If a n assignment conflict is found,
226  // open a dialog to chose between schematic assignment
227  // and .cmp file assignment:
228  if( m_indexes.size() > 0 )
229  {
231 
232  for( unsigned ii = 0; ii < m_indexes.size(); ii++ )
233  {
234  COMPONENT* component = m_netlist.GetComponent( m_indexes[ii] );
235 
236  wxString cmpfpid = component->GetFPID().Format();
237  wxString schfpid = component->GetAltFPID().Format();
238 
239  dlg.Add( component->GetReference(), schfpid, cmpfpid );
240  }
241 
242  if( dlg.ShowModal() == wxID_OK )
243  {
244 
245  // Update the fp selection:
246  for( unsigned ii = 0; ii < m_indexes.size(); ii++ )
247  {
248  COMPONENT* component = m_netlist.GetComponent( m_indexes[ii] );
249 
250  int choice = dlg.GetSelection( component->GetReference() );
251 
252  if( choice == 0 ) // the schematic (alt fpid) is chosen:
253  component->SetFPID( component->GetAltFPID() );
254  }
255  }
256  }
257 
258  // Populates the component list box:
259  for( unsigned i = 0; i < m_netlist.GetCount(); i++ )
260  {
261  COMPONENT* component = m_netlist.GetComponent( i );
262 
263  msg.Printf( CMP_FORMAT, m_symbolsListBox->GetCount() + 1,
264  component->GetReference(),
265  component->GetValue(),
266  FROM_UTF8( component->GetFPID().Format().c_str() ) );
267 
269  }
270 
271  if( !m_netlist.IsEmpty() )
272  m_symbolsListBox->SetSelection( 0, true );
273 
274  DisplayStatus();
275 
276  return true;
277 }
const UTF8 & GetLibItemName() const
Definition: lib_id.h:106
KIWAY & Kiway() const
Return a reference to the KIWAY that this object has an opportunity to participate in.
Definition: kiway_holder.h:53
static wxString FROM_UTF8(const char *cstring)
Convert a UTF8 encoded C string to a wxString for all wxWidgets build modes.
Definition: macros.h:110
#define CMP_FORMAT
The print format to display a schematic component line.
void SetFPID(const LIB_ID &aFPID)
Definition: pcb_netlist.h:132
bool AnyFootprintsLinked() const
void SetSelection(int index, bool State=true)
int ReadSchematicNetlist(const std::string &aNetlist)
Read the netlist (.net) file built on the fly by Eeschema.
unsigned GetCount() const
Definition: pcb_netlist.h:228
A logical library item identifier and consists of various portions much like a URI.
Definition: lib_id.h:51
COMPONENTS_LISTBOX * m_symbolsListBox
bool LoadFootprintFiles()
Read the list of footprint (*.mod files) and generate the list of footprints.
static int guessNickname(FP_LIB_TABLE *aTbl, LIB_ID *aFootprintId)
Return true if the resultant LIB_ID has a certain nickname.
bool empty() const
Definition: lib_id.h:189
void AppendLine(const wxString &text)
const char * c_str() const
Definition: utf8.h:102
const LIB_ID & GetFPID() const
Definition: pcb_netlist.h:133
#define NULL
const LIB_ID & GetAltFPID() const
Definition: pcb_netlist.h:136
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.
const wxString & GetReference() const
Definition: pcb_netlist.h:123
#define _(s)
HTML_MESSAGE_BOX.
UTF8 Format() const
Definition: lib_id.cpp:233
Store all of the related footprint information found in a netlist.
Definition: pcb_netlist.h:84
virtual FP_LIB_TABLE * PcbFootprintLibs(KIWAY &aKiway)
Return the table of footprint libraries.
Definition: project.cpp:285
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
COMPONENT * GetComponent(unsigned aIndex)
Return the COMPONENT at aIndex.
Definition: pcb_netlist.h:236
wxString wx_str() const
Definition: utf8.cpp:51
bool IsEmpty() const
Definition: pcb_netlist.h:218
const wxString & GetValue() const
Definition: pcb_netlist.h:124
bool IsLegacy() const
Definition: lib_id.h:176
Hold an error message and may be used when throwing exceptions containing meaningful error messages.
Definition: ki_exception.h:75
bool IsOK(wxWindow *aParent, const wxString &aMessage)
Display a yes/no dialog with aMessage and returns the user response.
Definition: confirm.cpp:296
void DisplayStatus()
Update the information displayed on the status bar at bottom of the main frame.

References _, DIALOG_FP_CONFLICT_ASSIGNMENT_SELECTOR::Add(), NETLIST::AnyFootprintsLinked(), COMPONENTS_LISTBOX::AppendLine(), BuildFootprintsListBox(), BuildLibrariesListBox(), UTF8::c_str(), COMPONENTS_LISTBOX::Clear(), CMP_FORMAT, DisplayStatus(), LIB_ID::empty(), LIB_ID::Format(), Format(), FROM_UTF8(), COMPONENT::GetAltFPID(), NETLIST::GetComponent(), COMPONENTS_LISTBOX::GetCount(), NETLIST::GetCount(), COMPONENT::GetFPID(), LIB_ID::GetLibItemName(), COMPONENT::GetReference(), DIALOG_FP_CONFLICT_ASSIGNMENT_SELECTOR::GetSelection(), COMPONENT::GetValue(), guessNickname(), NETLIST::IsEmpty(), LIB_ID::IsLegacy(), IsOK(), KIWAY_HOLDER::Kiway(), HTML_MESSAGE_BOX::ListSet(), LoadFootprintFiles(), m_modified, m_netlist, m_symbolsListBox, HTML_MESSAGE_BOX::MessageSet(), NULL, PROJECT::PcbFootprintLibs(), KIWAY_HOLDER::Prj(), ReadSchematicNetlist(), COMPONENT::SetFPID(), COMPONENTS_LISTBOX::SetSelection(), DIALOG_SHIM::Show(), IO_ERROR::What(), and UTF8::wx_str().

Referenced by KiwayMailIn().

◆ ReadSchematicNetlist()

int CVPCB_MAINFRAME::ReadSchematicNetlist ( const std::string &  aNetlist)

Read the netlist (.net) file built on the fly by Eeschema.

Parameters
aNetlistis the netlist buffer filled by Eeschema, in KiCad s-expr format. It is the same netlist as the .net file created by Eeschema. (This method is called by ReadNetListAndFpFiles)

Definition at line 844 of file cvpcb_mainframe.cpp.

845 {
846  STRING_LINE_READER* strrdr = new STRING_LINE_READER( aNetlist, "Eeschema via Kiway" );
847  KICAD_NETLIST_READER netrdr( strrdr, &m_netlist );
848 
849  m_netlist.Clear();
850 
851  try
852  {
853  netrdr.LoadNetlist();
854  }
855  catch( const IO_ERROR& ioe )
856  {
857  wxString msg = wxString::Format( _( "Error loading schematic.\n%s" ),
858  ioe.What().GetData() );
859  wxMessageBox( msg, _( "Load Error" ), wxOK | wxICON_ERROR );
860  return 1;
861  }
862 
863  // We also remove footprint name if it is "$noname" because this is a dummy name,
864  // not the actual name of the footprint.
865  for( unsigned ii = 0; ii < m_netlist.GetCount(); ii++ )
866  {
867  if( m_netlist.GetComponent( ii )->GetFPID().GetLibItemName() == std::string( "$noname" ) )
868  m_netlist.GetComponent( ii )->SetFPID( LIB_ID() );
869  }
870 
871  // Sort symbols by reference:
873 
874  return 0;
875 }
const UTF8 & GetLibItemName() const
Definition: lib_id.h:106
Read the new s-expression based KiCad netlist format.
void SetFPID(const LIB_ID &aFPID)
Definition: pcb_netlist.h:132
unsigned GetCount() const
Definition: pcb_netlist.h:228
A logical library item identifier and consists of various portions much like a URI.
Definition: lib_id.h:51
void SortByReference()
const LIB_ID & GetFPID() const
Definition: pcb_netlist.h:133
virtual const wxString What() const
A composite of Problem() and Where()
Definition: exceptions.cpp:30
#define _(s)
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
COMPONENT * GetComponent(unsigned aIndex)
Return the COMPONENT at aIndex.
Definition: pcb_netlist.h:236
void Clear()
Remove all components from the netlist.
Definition: pcb_netlist.h:223
Is a LINE_READER that reads from a multiline 8 bit wide std::string.
Definition: richio.h:237
Hold an error message and may be used when throwing exceptions containing meaningful error messages.
Definition: ki_exception.h:75

References _, NETLIST::Clear(), Format(), NETLIST::GetComponent(), NETLIST::GetCount(), COMPONENT::GetFPID(), LIB_ID::GetLibItemName(), KICAD_NETLIST_READER::LoadNetlist(), m_netlist, COMPONENT::SetFPID(), NETLIST::SortByReference(), and IO_ERROR::What().

Referenced by ReadNetListAndFpFiles().

◆ ReCreateHToolbar()

void CVPCB_MAINFRAME::ReCreateHToolbar ( )

Definition at line 36 of file toolbars_cvpcb.cpp.

37 {
38  if( m_mainToolBar )
39  {
41  }
42  else
43  {
44  m_mainToolBar = new ACTION_TOOLBAR( this, ID_H_TOOLBAR, wxDefaultPosition, wxDefaultSize,
45  KICAD_AUI_TB_STYLE | wxAUI_TB_HORZ_LAYOUT );
47  }
48 
50 
53 
56 
57 
61 
67 
68  // Add tools for footprint names filtering:
70 
71  // wxGTK with GTK3 has a serious issue with bold texts: strings are incorrectly sized
72  // and truncated after the first space.
73  // so use SetLabelMarkup is a trick to fix this issue.
74  m_mainToolBar->AddSpacer( 15 );
75  wxString msg_bold = _( "Footprint Filters:" );
76  wxStaticText* text = new wxStaticText( m_mainToolBar, wxID_ANY, msg_bold );
77  text->SetFont( m_mainToolBar->GetFont().Bold() );
78 #ifdef __WXGTK3__
79  text->SetLabelMarkup( "<b>" + msg_bold + "</b>" );
80 #endif
81  m_mainToolBar->AddControl( text );
82 
86 
88 
89  m_tcFilterString = new wxTextCtrl( m_mainToolBar, ID_CVPCB_FILTER_TEXT_EDIT, wxEmptyString,
90  wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER );
91 
92  m_tcFilterString->Bind( wxEVT_TEXT_ENTER, &CVPCB_MAINFRAME::OnEnterFilteringText, this );
93 
94  m_mainToolBar->AddControl( m_tcFilterString );
95 
96  // after adding the buttons to the toolbar, must call Realize() to reflect the changes
97  m_mainToolBar->Realize();
98 }
static TOOL_ACTION showFootprintViewer
Open the footprint viewer.
Definition: cvpcb_actions.h:49
Define the structure of a toolbar with buttons that invoke ACTIONs.
static TOOL_ACTION FilterFPbyFPFilters
Footprint Filtering actions.
Definition: cvpcb_actions.h:66
static TOOL_ACTION gotoNextNA
Definition: cvpcb_actions.h:53
static constexpr bool TOGGLE
static TOOL_ACTION gotoPreviousNA
Navigate the component tree.
Definition: cvpcb_actions.h:52
void AddScaledSeparator(wxWindow *aWindow)
Add a separator that introduces space on either side to not squash the tools when scaled.
void Add(const TOOL_ACTION &aAction, bool aIsToggleEntry=false, bool aIsCancellable=false)
Add a TOOL_ACTION-based button to the toolbar.
void SetAuiManager(wxAuiManager *aManager)
Set the AUI manager that this toolbar belongs to.
wxAuiManager m_auimgr
static TOOL_ACTION FilterFPbyLibrary
Definition: cvpcb_actions.h:68
wxTextCtrl * m_tcFilterString
static TOOL_ACTION deleteAll
Definition: cvpcb_actions.h:62
static TOOL_ACTION showFootprintLibTable
Definition: actions.h:175
ACTION_TOOLBAR * m_mainToolBar
#define _(s)
static TOOL_ACTION saveAssociations
Management actions.
Definition: cvpcb_actions.h:56
static TOOL_ACTION autoAssociate
Footprint Association actions.
Definition: cvpcb_actions.h:60
static TOOL_ACTION redo
Definition: actions.h:65
static TOOL_ACTION filterFPbyPin
Definition: cvpcb_actions.h:67
static constexpr int KICAD_AUI_TB_STYLE
< Default style flags used for wxAUI toolbars.
static TOOL_ACTION undo
Definition: actions.h:64
void OnEnterFilteringText(wxCommandEvent &event)
Called each time the text of m_tcFilterString is changed.
void ClearToolbar()
Clear the toolbar and remove all associated menus.

References _, ACTION_TOOLBAR::Add(), ACTION_TOOLBAR::AddScaledSeparator(), CVPCB_ACTIONS::autoAssociate, ACTION_TOOLBAR::ClearToolbar(), CVPCB_ACTIONS::deleteAll, CVPCB_ACTIONS::FilterFPbyFPFilters, CVPCB_ACTIONS::FilterFPbyLibrary, CVPCB_ACTIONS::filterFPbyPin, CVPCB_ACTIONS::gotoNextNA, CVPCB_ACTIONS::gotoPreviousNA, ID_CVPCB_FILTER_TEXT_EDIT, ID_H_TOOLBAR, EDA_BASE_FRAME::KICAD_AUI_TB_STYLE, EDA_BASE_FRAME::m_auimgr, m_mainToolBar, m_tcFilterString, OnEnterFilteringText(), ACTIONS::redo, CVPCB_ACTIONS::saveAssociations, ACTION_TOOLBAR::SetAuiManager(), ACTIONS::showFootprintLibTable, CVPCB_ACTIONS::showFootprintViewer, text, ACTION_TOOLBAR::TOGGLE, and ACTIONS::undo.

Referenced by CVPCB_MAINFRAME(), and ShowChangedLanguage().

◆ ReCreateMenuBar()

void CVPCB_MAINFRAME::ReCreateMenuBar ( )
overridevirtual

Recreates the menu bar.

Needed when the language or icons are changed

Reimplemented from EDA_BASE_FRAME.

Definition at line 37 of file cvpcb/menubar.cpp.

38 {
40  // wxWidgets handles the Mac Application menu behind the scenes, but that means
41  // we always have to start from scratch with a new wxMenuBar.
42  wxMenuBar* oldMenuBar = GetMenuBar();
43  WX_MENUBAR* menuBar = new WX_MENUBAR();
44 
45  //-- File menu -----------------------------------------------------------
46  //
47  ACTION_MENU* fileMenu = new ACTION_MENU( false, tool );
48 
50  fileMenu->AppendSeparator();
51  fileMenu->AddClose( _( "Assign Footprints" ) );
52 
53  //-- Edit menu -----------------------------------------------------------
54  //
55  ACTION_MENU* editMenu = new ACTION_MENU( false, tool );
56 
57  editMenu->Add( ACTIONS::undo );
58  editMenu->Add( ACTIONS::redo );
59 
60  editMenu->AppendSeparator();
61  editMenu->Add( ACTIONS::cut );
62  editMenu->Add( ACTIONS::copy );
63  editMenu->Add( ACTIONS::paste );
64 
65  //-- Preferences menu ----------------------------------------------------
66  //
67  ACTION_MENU* prefsMenu = new ACTION_MENU( false, tool );
68 
69  prefsMenu->Add( ACTIONS::configurePaths );
70  prefsMenu->Add( ACTIONS::showFootprintLibTable );
71 
72  // We can't use ACTIONS::showPreferences yet because wxWidgets moves this on
73  // Mac, and it needs the wxID_PREFERENCES id to find it.
74  prefsMenu->Add( _( "Preferences..." ) + "\tCtrl+,",
75  _( "Show preferences for all open tools" ),
76  wxID_PREFERENCES,
78 
79  prefsMenu->AppendSeparator();
81 
82  prefsMenu->AppendSeparator();
83  AddMenuLanguageList( prefsMenu, tool );
84 
85  //-- Menubar -------------------------------------------------------------
86  //
87  menuBar->Append( fileMenu, _( "&File" ) );
88  menuBar->Append( editMenu, _( "&Edit" ) );
89  menuBar->Append( prefsMenu, _( "&Preferences" ) );
90  AddStandardHelpMenu( menuBar );
91 
92  SetMenuBar( menuBar );
93  delete oldMenuBar;
94 }
static TOOL_ACTION showEquFileTable
Definition: cvpcb_actions.h:57
Defines the structure of a menu based on ACTIONs.
Definition: action_menu.h:48
Wrapper around a wxMenuBar object that prevents the accelerator table from being used.
Definition: wx_menubar.h:45
static TOOL_ACTION copy
Definition: actions.h:67
static TOOL_ACTION showFootprintLibTable
Definition: actions.h:175
void AddStandardHelpMenu(wxMenuBar *aMenuBar)
Adds the standard KiCad help menu to the menubar.
static TOOL_ACTION cut
Definition: actions.h:66
#define _(s)
void AddMenuLanguageList(ACTION_MENU *aMasterMenu, TOOL_INTERACTIVE *aControlTool)
Function AddMenuLanguageList creates a menu list for language choice, and add it as submenu to Master...
static TOOL_ACTION saveAssociations
Management actions.
Definition: cvpcb_actions.h:56
Handle actions that are shared between different applications.
static TOOL_ACTION redo
Definition: actions.h:65
TOOL_MANAGER * m_toolManager
Definition: tools_holder.h:156
wxMenuItem * Add(const wxString &aLabel, int aId, BITMAPS aIcon)
Add a wxWidgets-style entry to the menu.
static TOOL_ACTION undo
Definition: actions.h:64
static TOOL_ACTION configurePaths
Definition: actions.h:173
static TOOL_ACTION paste
Definition: actions.h:68
void AddClose(wxString aAppname="")
Add a standard close item to the menu with the accelerator key CTRL-W.

References _, ACTION_MENU::Add(),