KiCad PCB EDA Suite
SIM_PLOT_FRAME Class Reference

Implementing SIM_PLOT_FRAME_BASE. More...

#include <sim_plot_frame.h>

Inheritance diagram for SIM_PLOT_FRAME:
SIM_PLOT_FRAME_BASE KIWAY_PLAYER EDA_BASE_FRAME TOOLS_HOLDER KIWAY_HOLDER

Classes

struct  PLOT_INFO
 
class  SIGNAL_CONTEXT_MENU
 

Public Types

enum  HOLDER_TYPE { DIALOG, FRAME, PANEL }
 

Public Member Functions

 SIM_PLOT_FRAME (KIWAY *aKiway, wxWindow *aParent)
 Constructor. More...
 
 ~SIM_PLOT_FRAME ()
 
void StartSimulation (const wxString &aSimCommand=wxEmptyString)
 
void StopSimulation ()
 
bool IsSimulationRunning ()
 
SIM_PANEL_BASENewPlotPanel (SIM_TYPE aSimType)
 Creates a new plot panel for a given simulation type and adds it to the main notebook. More...
 
void AddVoltagePlot (const wxString &aNetName)
 Adds a voltage plot for a given net name. More...
 
void AddCurrentPlot (const wxString &aDeviceName, const wxString &aParam)
 Adds a current plot for a particular device. More...
 
void AddTuner (SCH_COMPONENT *aComponent)
 Adds a tuner for a component. More...
 
void RemoveTuner (TUNER_SLIDER *aTuner, bool aErase=true)
 Removes an existing tuner. More...
 
SIM_PLOT_PANELCurrentPlot () const
 Returns the currently opened plot panel (or NULL if there is none). More...
 
const NETLIST_EXPORTER_PSPICE_SIMGetExporter () const
 Returns the netlist exporter object used for simulations. More...
 
bool GetPlotBgOpt () const
 
wxColor GetPlotColor (int aColorId)
 
int GetPlotColorCount ()
 
void LoadSettings (APP_SETTINGS_BASE *aCfg) override
 Load common frame parameters from a configuration file. More...
 
void SaveSettings (APP_SETTINGS_BASE *aCfg) override
 Saves common frame parameters to a configuration data file. More...
 
WINDOW_SETTINGSGetWindowSettings (APP_SETTINGS_BASE *aCfg) override
 Returns a pointer to the window settings for this frame. More...
 
wxWindow * GetToolCanvas () const override
 Canvas access. More...
 
void m_splitterLeftRightOnIdle (wxIdleEvent &)
 
void m_splitterPlotAndConsoleOnIdle (wxIdleEvent &)
 
void m_splitterSignalsOnIdle (wxIdleEvent &)
 
void m_splitterTuneValuesOnIdle (wxIdleEvent &)
 
virtual bool OpenProjectFiles (const std::vector< wxString > &aFileList, int aCtl=0)
 Function OpenProjectFiles is abstract, and opens a project or set of files given by aFileList. More...
 
virtual void ParseArgs (wxCmdLineParser &aParser)
 Handles command-line arguments in a frame-specific way. More...
 
virtual bool ShowModal (wxString *aResult=NULL, wxWindow *aResultantFocusWindow=NULL)
 Function ShowModal puts up this wxFrame as if it were a modal dialog, with all other instantiated wxFrames disabled until this KIWAY_PLAYER derivative calls DismissModal(). More...
 
virtual void KiwayMailIn (KIWAY_EXPRESS &aEvent)
 Function KiwayMailIn receives KIWAY_EXPRESS messages from other players. More...
 
bool Destroy () override
 Our version of Destroy() which is virtual from wxWidgets. More...
 
bool IsModal () const
 
void SetModal (bool aIsModal)
 
bool IsDismissed ()
 Function IsDismissed returns false only if both the frame is acting in modal mode and it has not been dismissed yet with DismissModal(). More...
 
void DismissModal (bool aRetVal, const wxString &aResult=wxEmptyString)
 
EDA_UNITS GetUserUnits () const
 Return the user units currently in use. More...
 
void SetUserUnits (EDA_UNITS aUnits)
 
void ChangeUserUnits (EDA_UNITS aUnits)
 
virtual void ToggleUserUnits ()
 
SETTINGS_MANAGERGetSettingsManager () const
 
virtual int 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 &event)
 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 OnMove (wxMoveEvent &aEvent)
 
void OnMaximize (wxMaximizeEvent &aEvent)
 
void SetAutoSaveInterval (int aInterval)
 
int GetAutoSaveInterval () const
 
bool IsType (FRAME_T aType) const
 
virtual const SEARCH_STACKsys_search ()
 Return a SEARCH_STACK pertaining to entire program. More...
 
virtual wxString help_name ()
 
void OnKicadAbout (wxCommandEvent &event)
 
void OnPreferences (wxCommandEvent &event)
 
void PrintMsg (const wxString &text)
 
WX_INFOBARGetInfoBar ()
 
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 *)
 Function InstallPreferences Allow a frame to load its preference panels (if any) into the preferences dialog. More...
 
void LoadWindowSettings (WINDOW_SETTINGS *aCfg)
 Loads 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. More...
 
void SaveWindowSettings (WINDOW_SETTINGS *aCfg)
 Saves window settings to the given settings object Normally called by SaveSettings unless the window in question is a child window that stores its settings somewhere other than APP_SETTINGS_BASE::m_Window. More...
 
wxString ConfigBaseName () override
 
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...
 
virtual void ReCreateMenuBar ()
 Recreates the menu bar. More...
 
void AddStandardHelpMenu (wxMenuBar *aMenuBar)
 Adds the standard KiCad help menu to the menubar. More...
 
bool IsWritable (const wxFileName &aFileName)
 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...
 
virtual void SyncToolbars ()
 Update the toolbars (mostly settings/check buttons/checkboxes) with the current controller state. More...
 
virtual void ShowChangedLanguage ()
 Redraw the menus and what not in current language. More...
 
void CommonSettingsChanged (bool aEnvVarsChanged) override
 Notification event that some of the common (suite-wide) settings have changed. More...
 
const wxString & GetAboutTitle () const
 
void SetShutdownBlockReason (const wxString &reason)
 Sets the block reason why the window/application is preventing OS shutdown. More...
 
void RemoveShutdownBlockReason ()
 Removes any shutdown block reason set. More...
 
bool SupportsShutdownBlockReason ()
 Whether or not the window supports setting a shutdown block reason. More...
 
virtual bool IsContentModified ()
 Get if the contents of the frame have been modified since the last save. More...
 
wxSize GetWindowSize ()
 Get the undecorated window size that can be used for restoring the window size. More...
 
TOOL_MANAGERGetToolManager () const
 Return the MVC controller. More...
 
virtual void PushTool (const std::string &actionName)
 NB: the definition of "tool" is different at the user level. More...
 
virtual void PopTool (const std::string &actionName)
 
bool ToolStackIsEmpty ()
 
std::string CurrentToolName () const
 
bool IsCurrentTool (const TOOL_ACTION &aAction) const
 
virtual void DisplayToolMsg (const wxString &msg)
 
bool GetDoImmediateActions () const
 Indicates that hotkeys should perform an immediate action even if another tool is currently active. More...
 
bool GetDragSelects () const
 Indicates that a drag should draw a selection rectangle, even when started over an item. More...
 
bool GetMoveWarpsCursor () const
 Indicates that a move operation should warp the mouse pointer to the origin of the move object. More...
 
virtual void RefreshCanvas ()
 
HOLDER_TYPE GetType ()
 
KIWAYKiway () const
 Function Kiway returns a reference to the KIWAY that this object has an opportunity to participate in. More...
 
PROJECTPrj () const
 Function Prj returns a reference to the PROJECT "associated with" this KIWAY. More...
 
void SetKiway (wxWindow *aDest, KIWAY *aKiway)
 Function SetKiway. More...
 

Protected Member Functions

void kiway_express (KIWAY_EXPRESS &aEvent)
 event handler, routes to derivative specific virtual KiwayMailIn() More...
 
void language_change (wxCommandEvent &event)
 Function language_change is 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...
 
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...
 

Static Protected Member Functions

static wxString GetBackupSuffix ()
 
static wxString GetAutoSaveFilePrefix ()
 

Protected Attributes

wxMenuBar * m_mainMenu
 
wxMenu * m_fileMenu
 
wxMenu * m_simulationMenu
 
wxMenuItem * m_runSimulation
 
wxMenuItem * m_addSignals
 
wxMenuItem * m_probeSignals
 
wxMenuItem * m_tuneValue
 
wxMenuItem * m_showNetlist
 
wxMenuItem * m_settings
 
wxMenu * m_viewMenu
 
wxBoxSizer * m_sizerMain
 
wxToolBar * m_toolBar
 
wxSplitterWindow * m_splitterLeftRight
 
wxPanel * m_panelLeft
 
wxBoxSizer * m_sizer11
 
wxSplitterWindow * m_splitterPlotAndConsole
 
wxPanel * m_plotPanel
 
wxBoxSizer * m_sizerPlot
 
wxAuiNotebook * m_plotNotebook
 
wxPanel * m_panelConsole
 
wxBoxSizer * m_sizerConsole
 
wxTextCtrl * m_simConsole
 
wxPanel * m_sidePanel
 
wxBoxSizer * m_sideSizer
 
wxSplitterWindow * m_splitterSignals
 
wxPanel * m_panelSignals
 
wxStaticText * m_staticTextSignals
 
wxListView * m_signals
 
wxPanel * m_panelCursorsAndTune
 
wxSplitterWindow * m_splitterTuneValues
 
wxPanel * m_panelCursors
 
wxStaticText * m_staticTextCursors
 
wxListCtrl * m_cursors
 
wxPanel * m_tunePanel
 
wxStaticText * m_staticTextTune
 
wxBoxSizer * m_tuneSizer
 
bool m_modal
 
WX_EVENT_LOOPm_modal_loop
 
wxWindow * m_modal_resultant_parent
 
wxString m_modal_string
 
bool m_modal_ret_val
 
FRAME_T m_Ident
 
wxPoint m_FramePos
 
wxSize m_FrameSize
 
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
 
wxString m_mruPath
 
EDA_UNITS m_userUnits
 
TOOL_MANAGERm_toolManager
 
ACTIONSm_actions
 
TOOL_DISPATCHERm_toolDispatcher
 
std::vector< std::string > m_toolStack
 
bool m_immediateActions
 
bool m_dragSelects
 
bool m_moveWarpsCursor
 

Static Protected Attributes

static constexpr int KICAD_AUI_TB_STYLE = wxAUI_TB_DEFAULT_STYLE | wxAUI_TB_PLAIN_BACKGROUND
 

Default style flags used for wxAUI toolbars

More...
 

Private Types

typedef std::map< wxString, TRACE_DESCTRACE_MAP
 

Private Member Functions

void setIconsForMenuItems ()
 Give icons to menuitems of the main menubar. More...
 
void fillDefaultColorList (bool aWhiteBg)
 Fills m_colorList by a default set of colors. More...
 
SIM_PANEL_BASEcurrentPlotWindow () const
 Returns the currently opened plot panel (or NULL if there is none). More...
 
void addPlot (const wxString &aName, SIM_PLOT_TYPE aType, const wxString &aParam)
 Adds a new plot to the current panel. More...
 
void removePlot (const wxString &aPlotName, bool aErase=true)
 Removes a plot with a specific title. More...
 
void updateNetlistExporter ()
 Reloads the current schematic for the netlist exporter. More...
 
bool updatePlot (const TRACE_DESC &aDescriptor, SIM_PLOT_PANEL *aPanel)
 Updates plot in a particular SIM_PLOT_PANEL. More...
 
void updateSignalList ()
 Updates the list of currently plotted signals. More...
 
void updateTuners ()
 Filters out tuners for components that do not exist anymore. More...
 
void applyTuners ()
 Applies component values specified using tunder sliders to the current netlist. More...
 
bool loadWorkbook (const wxString &aPath)
 Loads plot settings from a file. More...
 
bool saveWorkbook (const wxString &aPath)
 Saves plot settings to a file. More...
 
SIM_PLOT_TYPE GetXAxisType (SIM_TYPE aType) const
 Returns X axis for a given simulation type. More...
 
void menuNewPlot (wxCommandEvent &aEvent) override
 
void menuOpenWorkbook (wxCommandEvent &event) override
 
void menuSaveWorkbook (wxCommandEvent &event) override
 
void menuExit (wxCommandEvent &event) override
 
void menuSaveImage (wxCommandEvent &event) override
 
void menuSaveCsv (wxCommandEvent &event) override
 
void menuZoomIn (wxCommandEvent &event) override
 
void menuZoomOut (wxCommandEvent &event) override
 
void menuZoomFit (wxCommandEvent &event) override
 
void menuShowGrid (wxCommandEvent &event) override
 
void menuShowGridUpdate (wxUpdateUIEvent &event) override
 
void menuShowLegend (wxCommandEvent &event) override
 
void menuShowLegendUpdate (wxUpdateUIEvent &event) override
 
void menuShowDotted (wxCommandEvent &event) override
 
void menuShowDottedUpdate (wxUpdateUIEvent &event) override
 
void menuWhiteBackground (wxCommandEvent &event) override
 
void menuShowWhiteBackgroundUpdate (wxUpdateUIEvent &event) override
 
void onPlotChanged (wxAuiNotebookEvent &event) override
 
void onPlotClose (wxAuiNotebookEvent &event) override
 
void onSignalDblClick (wxMouseEvent &event) override
 
void onSignalRClick (wxListEvent &event) override
 
void onSimulate (wxCommandEvent &event)
 
void onSettings (wxCommandEvent &event)
 
void onAddSignal (wxCommandEvent &event)
 
void onProbe (wxCommandEvent &event)
 
void onTune (wxCommandEvent &event)
 
void onShowNetlist (wxCommandEvent &event)
 
void onClose (wxCloseEvent &aEvent)
 
void onCursorUpdate (wxCommandEvent &aEvent)
 
void onSimUpdate (wxCommandEvent &aEvent)
 
void onSimReport (wxCommandEvent &aEvent)
 
void onSimStarted (wxCommandEvent &aEvent)
 
void onSimFinished (wxCommandEvent &aEvent)
 
void setSubWindowsSashSize ()
 

Private Attributes

wxToolBarToolBase * m_toolSimulate
 
wxToolBarToolBase * m_toolAddSignals
 
wxToolBarToolBase * m_toolProbe
 
wxToolBarToolBase * m_toolTune
 
wxToolBarToolBase * m_toolSettings
 
SCH_EDIT_FRAMEm_schematicFrame
 
std::unique_ptr< NETLIST_EXPORTER_PSPICE_SIMm_exporter
 
std::shared_ptr< SPICE_SIMULATORm_simulator
 
SIM_THREAD_REPORTERm_reporter
 
std::map< SIM_PANEL_BASE *, PLOT_INFOm_plots
 

Map of plot panels and associated data

More...
 
std::list< TUNER_SLIDER * > m_tuners
 

List of currently displayed tuners

More...
 
DIALOG_SIM_SETTINGSm_settingsDlg
 
SIM_PLOT_PANELm_lastSimPlot
 

Panel that was used as the most recent one for simulations

More...
 
wxImageList * m_signalsIconColorList
 

imagelists uset to add a small coloured icon to signal names and cursors name, the same color as the corresponding signal traces

More...
 
SIM_PANEL_BASEm_welcomePanel
 

Info panel

More...
 
int m_splitterLeftRightSashPosition
 
int m_splitterPlotAndConsoleSashPosition
 
int m_splitterSignalsSashPosition
 
int m_splitterTuneValuesSashPosition
 
bool m_plotUseWhiteBg
 
unsigned int m_plotNumber
 
std::vector< wxColour > m_colorList
 

The color list to draw traces, bg, fg, axis...

More...
 

Static Private Attributes

static wxString m_savedWorkbooksPath
 

A string to store the path of saved workbooks during a session

More...
 

Detailed Description

Implementing SIM_PLOT_FRAME_BASE.

Definition at line 125 of file sim_plot_frame.h.

Member Typedef Documentation

◆ TRACE_MAP

typedef std::map<wxString, TRACE_DESC> SIM_PLOT_FRAME::TRACE_MAP
private

Definition at line 357 of file sim_plot_frame.h.

Member Enumeration Documentation

◆ HOLDER_TYPE

enum KIWAY_HOLDER::HOLDER_TYPE
inherited
Enumerator
DIALOG 
FRAME 
PANEL 

Definition at line 42 of file kiway_holder.h.

Constructor & Destructor Documentation

◆ SIM_PLOT_FRAME()

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

Constructor.

Definition at line 121 of file sim_plot_frame.cpp.

122  : SIM_PLOT_FRAME_BASE( aParent ),
123  m_lastSimPlot( nullptr ),
124  m_welcomePanel( nullptr ),
125  m_plotNumber( 0 )
126 {
127  SetKiway( this, aKiway );
129 
131 
132  if( m_schematicFrame == NULL )
133  throw std::runtime_error( "There is no schematic window" );
134 
135  // Give an icon
136  wxIcon icon;
137  icon.CopyFromBitmap( KiBitmap( simulator_xpm ) );
138  SetIcon( icon );
139 
140  // Get the previous size and position of windows:
141  LoadSettings( config() );
142 
143  // Prepare the color list to plot traces
145 
146  // Give icons to menuitems
148 
150 
151  if( !m_simulator )
152  {
153  throw std::runtime_error( "Could not create simulator instance" );
154  return;
155  }
156 
157  m_simulator->Init();
158 
159  if( m_savedWorkbooksPath.IsEmpty() )
160  {
162  }
163 
164  m_reporter = new SIM_THREAD_REPORTER( this );
165  m_simulator->SetReporter( m_reporter );
166 
168 
169  Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( SIM_PLOT_FRAME::onClose ), NULL, this );
170  Connect( EVT_SIM_UPDATE, wxCommandEventHandler( SIM_PLOT_FRAME::onSimUpdate ), NULL, this );
171  Connect( EVT_SIM_REPORT, wxCommandEventHandler( SIM_PLOT_FRAME::onSimReport ), NULL, this );
172  Connect( EVT_SIM_STARTED, wxCommandEventHandler( SIM_PLOT_FRAME::onSimStarted ), NULL, this );
173  Connect( EVT_SIM_FINISHED, wxCommandEventHandler( SIM_PLOT_FRAME::onSimFinished ), NULL, this );
174  Connect( EVT_SIM_CURSOR_UPDATE, wxCommandEventHandler( SIM_PLOT_FRAME::onCursorUpdate ), NULL, this );
175 
176  // Toolbar buttons
177  m_toolSimulate = m_toolBar->AddTool( ID_SIM_RUN, _( "Run/Stop Simulation" ),
178  KiBitmap( sim_run_xpm ), _( "Run Simulation" ), wxITEM_NORMAL );
179  m_toolAddSignals = m_toolBar->AddTool( ID_SIM_ADD_SIGNALS, _( "Add Signals" ),
180  KiBitmap( sim_add_signal_xpm ), _( "Add signals to plot" ), wxITEM_NORMAL );
181  m_toolProbe = m_toolBar->AddTool( ID_SIM_PROBE, _( "Probe" ),
182  KiBitmap( sim_probe_xpm ), _( "Probe signals on the schematic" ), wxITEM_NORMAL );
183  m_toolTune = m_toolBar->AddTool( ID_SIM_TUNE, _( "Tune" ),
184  KiBitmap( sim_tune_xpm ), _( "Tune component values" ), wxITEM_NORMAL );
185  m_toolSettings = m_toolBar->AddTool( wxID_ANY, _( "Settings" ),
186  KiBitmap( sim_settings_xpm ), _( "Simulation settings" ), wxITEM_NORMAL );
187 
188  Connect( m_toolSimulate->GetId(), wxEVT_COMMAND_TOOL_CLICKED,
189  wxCommandEventHandler( SIM_PLOT_FRAME::onSimulate ), NULL, this );
190  Connect( m_toolAddSignals->GetId(), wxEVT_COMMAND_TOOL_CLICKED,
191  wxCommandEventHandler( SIM_PLOT_FRAME::onAddSignal ), NULL, this );
192  Connect( m_toolProbe->GetId(), wxEVT_COMMAND_TOOL_CLICKED,
193  wxCommandEventHandler( SIM_PLOT_FRAME::onProbe ), NULL, this );
194  Connect( m_toolTune->GetId(), wxEVT_COMMAND_TOOL_CLICKED,
195  wxCommandEventHandler( SIM_PLOT_FRAME::onTune ), NULL, this );
196  Connect( m_toolSettings->GetId(), wxEVT_COMMAND_TOOL_CLICKED,
197  wxCommandEventHandler( SIM_PLOT_FRAME::onSettings ), NULL, this );
198 
199  // Bind toolbar buttons event to existing menu event handlers, so they behave the same
200  Bind( wxEVT_COMMAND_MENU_SELECTED, &SIM_PLOT_FRAME::onSimulate, this, m_runSimulation->GetId() );
201  Bind( wxEVT_COMMAND_MENU_SELECTED, &SIM_PLOT_FRAME::onAddSignal, this, m_addSignals->GetId() );
202  Bind( wxEVT_COMMAND_MENU_SELECTED, &SIM_PLOT_FRAME::onProbe, this, m_probeSignals->GetId() );
203  Bind( wxEVT_COMMAND_MENU_SELECTED, &SIM_PLOT_FRAME::onTune, this, m_tuneValue->GetId() );
204  Bind( wxEVT_COMMAND_MENU_SELECTED, &SIM_PLOT_FRAME::onShowNetlist, this, m_showNetlist->GetId() );
205  Bind( wxEVT_COMMAND_MENU_SELECTED, &SIM_PLOT_FRAME::onSettings, this, m_settings->GetId() );
206 
207  m_toolBar->Realize();
208 
210  m_plotNotebook->AddPage( m_welcomePanel, _( "Welcome!" ), 1, true );
211 
212  // the settings dialog will be created later, on demand.
213  // if created in the ctor, for some obscure reason, there is an issue
214  // on Windows: when open it, the simulator frame is sent to the background.
215  // instead of being behind the dialog frame (as it does)
217 
218  // resize the subwindows size. At least on Windows, calling wxSafeYield before
219  // resizing the subwindows forces the wxSplitWindows size events automatically generated
220  // by wxWidgets to be executed before our resize code.
221  // Otherwise, the changes made by setSubWindowsSashSize are overwritten by one these
222  // events
223  wxSafeYield();
225 
226  // Ensure the window is on top
227  Raise();
228 }
const BITMAP_OPAQUE simulator_xpm[1]
Definition: simulator.cpp:52
void onAddSignal(wxCommandEvent &event)
void SetKiway(wxWindow *aDest, KIWAY *aKiway)
Function SetKiway.
wxToolBarToolBase * m_toolProbe
void setIconsForMenuItems()
Give icons to menuitems of the main menubar.
void onSimStarted(wxCommandEvent &aEvent)
KIWAY & Kiway() const
Function Kiway returns a reference to the KIWAY that this object has an opportunity to participate in...
Definition: kiway_holder.h:56
bool GetPlotBgOpt() const
wxImageList * m_signalsIconColorList
imagelists uset to add a small coloured icon to signal names and cursors name, the same color as the ...
virtual APP_SETTINGS_BASE * config() const
Returns the settings object used in SaveSettings(), and is overloaded in KICAD_MANAGER_FRAME.
Schematic editor (Eeschema) main window.
void onSimUpdate(wxCommandEvent &aEvent)
SIM_THREAD_REPORTER * m_reporter
std::shared_ptr< SPICE_SIMULATOR > m_simulator
SIM_PANEL_BASE * m_welcomePanel
Info panel
VTBL_ENTRY const wxString GetProjectPath() const
Function GetProjectPath returns the full path of the project.
Definition: project.cpp:122
wxAuiNotebook * m_plotNotebook
SCH_EDIT_FRAME * m_schematicFrame
void setSubWindowsSashSize()
wxBitmap KiBitmap(BITMAP_DEF aBitmap)
Construct a wxBitmap from a memory record, held in a BITMAP_DEF.
Definition: bitmap.cpp:80
const BITMAP_OPAQUE sim_add_signal_xpm[1]
SIM_PLOT_PANEL * m_lastSimPlot
Panel that was used as the most recent one for simulations
#define NULL
VTBL_ENTRY KIWAY_PLAYER * Player(FRAME_T aFrameType, bool doCreate=true, wxTopLevelWindow *aParent=NULL)
Function Player returns the KIWAY_PLAYER* given a FRAME_T.
Definition: kiway.cpp:342
wxMenuItem * m_runSimulation
void onSimReport(wxCommandEvent &aEvent)
PROJECT & Prj() const
Function Prj returns a reference to the PROJECT "associated with" this KIWAY.
void onSimFinished(wxCommandEvent &aEvent)
void fillDefaultColorList(bool aWhiteBg)
Fills m_colorList by a default set of colors.
void onShowNetlist(wxCommandEvent &event)
wxToolBarToolBase * m_toolAddSignals
static std::shared_ptr< SPICE_SIMULATOR > CreateInstance(const std::string &aName)
Creates a simulator instance of particular type (currently only ngspice is handled)
void onTune(wxCommandEvent &event)
wxToolBarToolBase * m_toolSimulate
static wxString m_savedWorkbooksPath
A string to store the path of saved workbooks during a session
void onCursorUpdate(wxCommandEvent &aEvent)
DIALOG_SIM_SETTINGS * m_settingsDlg
const BITMAP_OPAQUE sim_probe_xpm[1]
Definition: sim_probe.cpp:52
void updateNetlistExporter()
Reloads the current schematic for the netlist exporter.
void onSimulate(wxCommandEvent &event)
const BITMAP_OPAQUE sim_tune_xpm[1]
Definition: sim_tune.cpp:39
void onProbe(wxCommandEvent &event)
#define _(s)
Definition: 3d_actions.cpp:33
SIM_PLOT_FRAME_BASE(wxWindow *parent, wxWindowID id=wxID_ANY, const wxString &title=_("Spice Simulator"), const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxSize(564, 531), long style=wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL, const wxString &name=wxT("SIM_PLOT_FRAME"))
unsigned int m_plotNumber
const BITMAP_OPAQUE sim_run_xpm[1]
Definition: sim_run.cpp:35
const BITMAP_OPAQUE sim_settings_xpm[1]
void onSettings(wxCommandEvent &event)
void onClose(wxCloseEvent &aEvent)
void LoadSettings(APP_SETTINGS_BASE *aCfg) override
Load common frame parameters from a configuration file.
wxToolBarToolBase * m_toolTune
wxToolBarToolBase * m_toolSettings

References _, EDA_BASE_FRAME::config(), SPICE_SIMULATOR::CreateInstance(), fillDefaultColorList(), FRAME_SCH, GetPlotBgOpt(), PROJECT::GetProjectPath(), ID_SIM_ADD_SIGNALS, ID_SIM_PROBE, ID_SIM_RUN, ID_SIM_TUNE, KiBitmap(), KIWAY_HOLDER::Kiway(), LoadSettings(), SIM_PLOT_FRAME_BASE::m_addSignals, SIM_PLOT_FRAME_BASE::m_plotNotebook, SIM_PLOT_FRAME_BASE::m_probeSignals, m_reporter, SIM_PLOT_FRAME_BASE::m_runSimulation, m_savedWorkbooksPath, m_schematicFrame, SIM_PLOT_FRAME_BASE::m_settings, m_settingsDlg, SIM_PLOT_FRAME_BASE::m_showNetlist, m_signalsIconColorList, m_simulator, m_toolAddSignals, SIM_PLOT_FRAME_BASE::m_toolBar, m_toolProbe, m_toolSettings, m_toolSimulate, m_toolTune, SIM_PLOT_FRAME_BASE::m_tuneValue, m_welcomePanel, NULL, onAddSignal(), onClose(), onCursorUpdate(), onProbe(), onSettings(), onShowNetlist(), onSimFinished(), onSimReport(), onSimStarted(), onSimulate(), onSimUpdate(), onTune(), KIWAY::Player(), KIWAY_HOLDER::Prj(), setIconsForMenuItems(), KIWAY_HOLDER::SetKiway(), setSubWindowsSashSize(), sim_add_signal_xpm, sim_probe_xpm, sim_run_xpm, sim_settings_xpm, sim_tune_xpm, simulator_xpm, ST_UNKNOWN, and updateNetlistExporter().

◆ ~SIM_PLOT_FRAME()

SIM_PLOT_FRAME::~SIM_PLOT_FRAME ( )

Definition at line 231 of file sim_plot_frame.cpp.

232 {
233  m_simulator->SetReporter( nullptr );
234  delete m_reporter;
235  delete m_signalsIconColorList;
236 
237  if( m_settingsDlg )
238  m_settingsDlg->Destroy();
239 }
wxImageList * m_signalsIconColorList
imagelists uset to add a small coloured icon to signal names and cursors name, the same color as the ...
SIM_THREAD_REPORTER * m_reporter
std::shared_ptr< SPICE_SIMULATOR > m_simulator
DIALOG_SIM_SETTINGS * m_settingsDlg

References m_reporter, m_settingsDlg, m_signalsIconColorList, and m_simulator.

Member Function Documentation

◆ AddCurrentPlot()

void SIM_PLOT_FRAME::AddCurrentPlot ( const wxString &  aDeviceName,
const wxString &  aParam 
)

Adds a current plot for a particular device.

Parameters
aDeviceNameis the device name (e.g. R1, C1).
aParamis the current type (e.g. I, Ic, Id).

Definition at line 521 of file sim_plot_frame.cpp.

522 {
523  addPlot( aDeviceName, SPT_CURRENT, aParam );
524 }
void addPlot(const wxString &aName, SIM_PLOT_TYPE aType, const wxString &aParam)
Adds a new plot to the current panel.

References addPlot(), and SPT_CURRENT.

Referenced by DIALOG_SIGNAL_LIST::addSignalToPlotFrame().

◆ addPlot()

void SIM_PLOT_FRAME::addPlot ( const wxString &  aName,
SIM_PLOT_TYPE  aType,
const wxString &  aParam 
)
private

Adds a new plot to the current panel.

Parameters
aNameis the device/net name.
aTypedescribes the type of plot.
aParamis the parameter for the device/net (e.g. I, Id, V).

Definition at line 593 of file sim_plot_frame.cpp.

594 {
595  SIM_TYPE simType = m_exporter->GetSimType();
596 
597  if( simType == ST_UNKNOWN )
598  {
599  m_simConsole->AppendText( _( "Error: simulation type not defined!\n" ) );
600  m_simConsole->SetInsertionPointEnd();
601  return;
602  }
603  else if( !SIM_PANEL_BASE::IsPlottable( simType ) )
604  {
605  m_simConsole->AppendText( _( "Error: simulation type doesn't support plotting!\n" ) );
606  m_simConsole->SetInsertionPointEnd();
607  return;
608  }
609 
610  // Create a new plot if the current one displays a different type
611  SIM_PLOT_PANEL* plotPanel = CurrentPlot();
612 
613  if( !plotPanel || plotPanel->GetType() != simType )
614  plotPanel = dynamic_cast<SIM_PLOT_PANEL*>( NewPlotPanel( simType ) );
615 
616  wxASSERT( plotPanel );
617 
618  if( !plotPanel ) // Something is wrong
619  return;
620 
621  TRACE_DESC descriptor( *m_exporter, aName, aType, aParam );
622 
623  bool updated = false;
624  SIM_PLOT_TYPE xAxisType = GetXAxisType( simType );
625 
626  if( xAxisType == SPT_LIN_FREQUENCY || xAxisType == SPT_LOG_FREQUENCY )
627  {
628  int baseType = descriptor.GetType() & ~( SPT_AC_MAG | SPT_AC_PHASE );
629 
630  // Add two plots: magnitude & phase
631  TRACE_DESC mag_desc( *m_exporter, descriptor, (SIM_PLOT_TYPE)( baseType | SPT_AC_MAG ) );
632  TRACE_DESC phase_desc( *m_exporter, descriptor, (SIM_PLOT_TYPE)( baseType | SPT_AC_PHASE ) );
633 
634  updated |= updatePlot( mag_desc, plotPanel );
635  updated |= updatePlot( phase_desc, plotPanel );
636  }
637  else
638  {
639  updated = updatePlot( descriptor, plotPanel );
640  }
641 
642  if( updated )
643  {
645  }
646 }
SIM_PANEL_BASE * NewPlotPanel(SIM_TYPE aSimType)
Creates a new plot panel for a given simulation type and adds it to the main notebook.
Trace descriptor class
bool updatePlot(const TRACE_DESC &aDescriptor, SIM_PLOT_PANEL *aPanel)
Updates plot in a particular SIM_PLOT_PANEL.
static bool IsPlottable(SIM_TYPE aSimType)
SIM_PLOT_TYPE GetXAxisType(SIM_TYPE aType) const
Returns X axis for a given simulation type.
SIM_TYPE
Possible simulation types
Definition: sim_types.h:29
SIM_TYPE GetType() const
std::unique_ptr< NETLIST_EXPORTER_PSPICE_SIM > m_exporter
#define _(s)
Definition: 3d_actions.cpp:33
void updateSignalList()
Updates the list of currently plotted signals.
SIM_PLOT_PANEL * CurrentPlot() const
Returns the currently opened plot panel (or NULL if there is none).
SIM_PLOT_TYPE
Possible plot types
Definition: sim_types.h:44

References _, CurrentPlot(), SIM_PANEL_BASE::GetType(), TRACE_DESC::GetType(), GetXAxisType(), SIM_PANEL_BASE::IsPlottable(), m_exporter, SIM_PLOT_FRAME_BASE::m_simConsole, NewPlotPanel(), SPT_AC_MAG, SPT_AC_PHASE, SPT_LIN_FREQUENCY, SPT_LOG_FREQUENCY, ST_UNKNOWN, updatePlot(), and updateSignalList().

Referenced by AddCurrentPlot(), AddVoltagePlot(), and loadWorkbook().

◆ AddStandardHelpMenu()

void EDA_BASE_FRAME::AddStandardHelpMenu ( wxMenuBar *  aMenuBar)
inherited

Adds the standard KiCad help menu to the menubar.

Definition at line 297 of file eda_base_frame.cpp.

298 {
299  COMMON_CONTROL* commonControl = m_toolManager->GetTool<COMMON_CONTROL>();
300  ACTION_MENU* helpMenu = new ACTION_MENU( false );
301 
302  helpMenu->SetTool( commonControl );
303 
304  helpMenu->Add( ACTIONS::help );
305  helpMenu->Add( ACTIONS::gettingStarted );
306  helpMenu->Add( ACTIONS::listHotKeys );
307  helpMenu->Add( ACTIONS::getInvolved );
308  helpMenu->Add( ACTIONS::reportBug );
309 
310  helpMenu->AppendSeparator();
311  helpMenu->Add( _( "&About KiCad" ), "", wxID_ABOUT, about_xpm );
312 
313  aMenuBar->Append( helpMenu, _( "&Help" ) );
314 }
static TOOL_ACTION listHotKeys
Definition: actions.h:171
ACTION_MENU.
Definition: action_menu.h:44
static TOOL_ACTION reportBug
Definition: actions.h:173
const BITMAP_OPAQUE about_xpm[1]
Definition: about.cpp:84
COMMON_CONTROL.
TOOL_MANAGER * m_toolManager
Definition: tools_holder.h:48
#define _(s)
Definition: 3d_actions.cpp:33
static TOOL_ACTION help
Definition: actions.h:170
static TOOL_ACTION getInvolved
Definition: actions.h:172
static TOOL_ACTION gettingStarted
Definition: actions.h:169

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

Referenced by EDA_3D_VIEWER::CreateMenuBar(), LIB_VIEW_FRAME::ReCreateMenuBar(), KICAD_MANAGER_FRAME::ReCreateMenuBar(), FOOTPRINT_EDIT_FRAME::ReCreateMenuBar(), FOOTPRINT_VIEWER_FRAME::ReCreateMenuBar(), LIB_EDIT_FRAME::ReCreateMenuBar(), PL_EDITOR_FRAME::ReCreateMenuBar(), CVPCB_MAINFRAME::ReCreateMenuBar(), GERBVIEW_FRAME::ReCreateMenuBar(), SCH_EDIT_FRAME::ReCreateMenuBar(), and PCB_EDIT_FRAME::ReCreateMenuBar().

◆ AddTuner()

void SIM_PLOT_FRAME::AddTuner ( SCH_COMPONENT aComponent)

Adds a tuner for a component.

Definition at line 527 of file sim_plot_frame.cpp.

528 {
529  SIM_PANEL_BASE* plotPanel = currentPlotWindow();
530 
531  if( !plotPanel || plotPanel == m_welcomePanel )
532  return;
533 
534  // For now limit the tuner tool to RLC components
535  char primitiveType = NETLIST_EXPORTER_PSPICE::GetSpiceField( SF_PRIMITIVE, aComponent, 0 )[0];
536 
537  if( primitiveType != SP_RESISTOR && primitiveType != SP_CAPACITOR && primitiveType != SP_INDUCTOR )
538  return;
539 
540  const wxString componentName = aComponent->GetField( REFERENCE )->GetText();
541 
542  // Do not add multiple instances for the same component
543  auto tunerIt = std::find_if( m_tuners.begin(), m_tuners.end(), [&]( const TUNER_SLIDER* t )
544  {
545  return t->GetComponentName() == componentName;
546  }
547  );
548 
549  if( tunerIt != m_tuners.end() )
550  return; // We already have it
551 
552  try
553  {
554  TUNER_SLIDER* tuner = new TUNER_SLIDER( this, m_tunePanel, aComponent );
555  m_tuneSizer->Add( tuner );
556  m_tuners.push_back( tuner );
557  m_tunePanel->Layout();
558  }
559  catch( const KI_PARAM_ERROR& e )
560  {
561  // Sorry, no bonus
562  DisplayError( nullptr, e.What() );
563  }
564 }
void DisplayError(wxWindow *aParent, const wxString &aText, int aDisplayTime)
Display an error or warning message box with aMessage.
Definition: confirm.cpp:239
std::list< TUNER_SLIDER * > m_tuners
List of currently displayed tuners
SIM_PANEL_BASE * m_welcomePanel
Info panel
Field Reference of part, i.e. "IC21".
SIM_PANEL_BASE * currentPlotWindow() const
Returns the currently opened plot panel (or NULL if there is none).
SCH_FIELD * GetField(int aFieldNdx)
Returns a field in this symbol.
const wxString What() const
Definition: ki_exception.h:58
static wxString GetSpiceField(SPICE_FIELD aField, SCH_COMPONENT *aComponent, unsigned aCtl)
Retrieves either the requested field value or the default value.
Custom widget to handle quick component values modification and simulation on the fly.
Definition: tuner_slider.h:40
virtual const wxString & GetText() const
Return the string associated with the text object.
Definition: eda_text.h:126
KI_PARAM_ERROR is a class used to hold a translatable error message and may be used when throwing exc...
Definition: ki_exception.h:45

References currentPlotWindow(), DisplayError(), SCH_COMPONENT::GetField(), NETLIST_EXPORTER_PSPICE::GetSpiceField(), EDA_TEXT::GetText(), SIM_PLOT_FRAME_BASE::m_tunePanel, m_tuners, SIM_PLOT_FRAME_BASE::m_tuneSizer, m_welcomePanel, REFERENCE, SF_PRIMITIVE, SP_CAPACITOR, SP_INDUCTOR, SP_RESISTOR, and KI_PARAM_ERROR::What().

◆ AddVoltagePlot()

void SIM_PLOT_FRAME::AddVoltagePlot ( const wxString &  aNetName)

Adds a voltage plot for a given net name.

Parameters
aNetNameis the net name for which a voltage plot should be created.

Definition at line 515 of file sim_plot_frame.cpp.

516 {
517  addPlot( aNetName, SPT_VOLTAGE, "V" );
518 }
void addPlot(const wxString &aName, SIM_PLOT_TYPE aType, const wxString &aParam)
Adds a new plot to the current panel.

References addPlot(), and SPT_VOLTAGE.

Referenced by DIALOG_SIGNAL_LIST::addSelectionToPlotFrame(), and DIALOG_SIGNAL_LIST::addSignalToPlotFrame().

◆ applyTuners()

void SIM_PLOT_FRAME::applyTuners ( )
private

Applies component values specified using tunder sliders to the current netlist.

Todo:
no ngspice hardcoding

Definition at line 887 of file sim_plot_frame.cpp.

888 {
889  for( auto& tuner : m_tuners )
890  {
892  std::string command( "alter @" + tuner->GetSpiceName()
893  + "=" + tuner->GetValue().ToSpiceString() );
894 
895  m_simulator->Command( command );
896  }
897 }
std::list< TUNER_SLIDER * > m_tuners
List of currently displayed tuners
std::shared_ptr< SPICE_SIMULATOR > m_simulator

References m_simulator, and m_tuners.

Referenced by onSimUpdate(), and StartSimulation().

◆ ChangeUserUnits()

void EDA_BASE_FRAME::ChangeUserUnits ( EDA_UNITS  aUnits)
inherited

Definition at line 796 of file eda_base_frame.cpp.

797 {
798  SetUserUnits( aUnits );
800 
801  wxCommandEvent e( UNITS_CHANGED );
802  ProcessEventLocally( e );
803 }
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::ImperialUnits(), COMMON_TOOLS::MetricUnits(), 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 743 of file eda_base_frame.cpp.

744 {
745  wxCHECK_RET( aFileName.IsOk(), wxT( "Invalid file name!" ) );
746 
747  wxFileName autoSaveFileName = aFileName;
748 
749  // Check for auto save file.
750  autoSaveFileName.SetName( GetAutoSaveFilePrefix() + aFileName.GetName() );
751 
752  wxLogTrace( traceAutoSave,
753  wxT( "Checking for auto save file " ) + autoSaveFileName.GetFullPath() );
754 
755  if( !autoSaveFileName.FileExists() )
756  return;
757 
758  wxString msg = wxString::Format( _(
759  "Well this is potentially embarrassing!\n"
760  "It appears that the last time you were editing the file\n"
761  "\"%s\"\n"
762  "it was not saved properly. Do you wish to restore the last saved edits you made?" ),
763  GetChars( aFileName.GetFullName() )
764  );
765 
766  int response = wxMessageBox( msg, Pgm().App().GetAppName(), wxYES_NO | wxICON_QUESTION, this );
767 
768  // Make a backup of the current file, delete the file, and rename the auto save file to
769  // the file name.
770  if( response == wxYES )
771  {
772  if( !wxRenameFile( autoSaveFileName.GetFullPath(), aFileName.GetFullPath() ) )
773  {
774  wxMessageBox( _( "The auto save file could not be renamed to the board file name." ),
775  Pgm().App().GetAppName(), wxOK | wxICON_EXCLAMATION, this );
776  }
777  }
778  else
779  {
780  wxLogTrace( traceAutoSave,
781  wxT( "Removing auto save file " ) + autoSaveFileName.GetFullPath() );
782 
783  // Remove the auto save file when using the previous file as is.
784  wxRemoveFile( autoSaveFileName.GetFullPath() );
785  }
786 }
KIWAY Kiway & Pgm(), KFCTL_STANDALONE
The global Program "get" accessor.
Definition: single_top.cpp:104
const wxChar *const traceAutoSave
Flag to enable auto save feature debug tracing.
static wxString GetAutoSaveFilePrefix()
static const wxChar * GetChars(const wxString &s)
Function GetChars returns a wxChar* to the actual wxChar* data within a wxString, and is helpful for ...
Definition: macros.h:153
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, CPTREE &aTree)
Function Format outputs a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:205
#define _(s)
Definition: 3d_actions.cpp:33

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

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

◆ ClearFileHistory()

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

Removes all files from the file history.

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

Definition at line 640 of file eda_base_frame.cpp.

641 {
642  if( !aFileHistory )
643  aFileHistory = m_fileHistory;
644 
645  wxASSERT( aFileHistory );
646 
647  aFileHistory->ClearFileHistory();
648 
649  // Update the menubar to update the file history menu
650  if( GetMenuBar() )
651  {
652  ReCreateMenuBar();
653  GetMenuBar()->Refresh();
654  }
655 }
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().

◆ CommonSettingsChanged()

void EDA_BASE_FRAME::CommonSettingsChanged ( bool  aEnvVarsChanged)
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, KICAD_MANAGER_FRAME, FOOTPRINT_VIEWER_FRAME, and EDA_DRAW_FRAME.

Definition at line 327 of file eda_base_frame.cpp.

328 {
329  TOOLS_HOLDER::CommonSettingsChanged( aEnvVarsChanged );
330 
331  COMMON_SETTINGS* settings = Pgm().GetCommonSettings();
332 
333  if( m_fileHistory )
334  {
335  int historySize = settings->m_System.file_history_size;
336  m_fileHistory->SetMaxFiles( (unsigned) std::max( 0, historySize ) );
337  }
338 
339  if( GetMenuBar() )
340  {
341  // For icons in menus, icon scaling & hotkeys
342  ReCreateMenuBar();
343  GetMenuBar()->Refresh();
344  }
345 }
KIWAY Kiway & Pgm(), KFCTL_STANDALONE
The global Program "get" accessor.
Definition: single_top.cpp:104
virtual void CommonSettingsChanged(bool aEnvVarsChanged)
Notification event that some of the common (suite-wide) settings have changed.
void SetMaxFiles(size_t aMaxFiles)
Update the number of files that will be contained inside the file history.
Definition: filehistory.cpp:83
FILE_HISTORY * m_fileHistory
virtual void ReCreateMenuBar()
Recreates the menu bar.

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

Referenced by EDA_DRAW_FRAME::CommonSettingsChanged(), EDA_3D_VIEWER::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 KICAD_MANAGER_FRAME.

Definition at line 557 of file eda_base_frame.cpp.

558 {
559  // KICAD_MANAGER_FRAME overrides this
560  return Kiface().KifaceSettings();
561 }
APP_SETTINGS_BASE * KifaceSettings() const
Definition: kiface_i.h:103
KIFACE_I & Kiface()
Global KIFACE_I "get" accessor.

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

Referenced by PCB_BASE_FRAME::ActivateGalCanvas(), GERBVIEW_FRAME::ActivateGalCanvas(), BM2CMP_FRAME::BM2CMP_FRAME(), CVPCB_MAINFRAME::CVPCB_MAINFRAME(), DIALOG_GRID_SETTINGS::DIALOG_GRID_SETTINGS(), 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(), LIB_VIEW_FRAME::LIB_VIEW_FRAME(), SCH_BASE_FRAME::libeditconfig(), onClose(), FOOTPRINT_WIZARD_FRAME::OnCloseWindow(), EDA_DRAW_FRAME::OnUpdateSelectGrid(), EDA_DRAW_FRAME::OnUpdateSelectZoom(), PCB_CALCULATOR_FRAME::PCB_CALCULATOR_FRAME(), DISPLAY_FOOTPRINTS_FRAME::SetAutoZoom(), PCB_BASE_EDIT_FRAME::SetBoard(), EDA_DRAW_FRAME::SetGridVisibility(), PL_EDITOR_FRAME::setupTools(), FOOTPRINT_EDIT_FRAME::setupTools(), LIB_VIEW_FRAME::setupTools(), GERBVIEW_FRAME::setupTools(), LIB_EDIT_FRAME::setupTools(), CVPCB_MAINFRAME::setupTools(), SCH_EDIT_FRAME::setupTools(), SIM_PLOT_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
Returns
a base name prefix used in Load/Save settings to build the full name of keys used in config. 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 config can be used.

Reimplemented from TOOLS_HOLDER.

Definition at line 337 of file eda_base_frame.h.

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

References EDA_BASE_FRAME::m_configName.

Referenced by EDA_BASE_FRAME::SaveWindowSettings().

◆ CurrentPlot()

SIM_PLOT_PANEL * SIM_PLOT_FRAME::CurrentPlot ( ) const

Returns the currently opened plot panel (or NULL if there is none).

Definition at line 577 of file sim_plot_frame.cpp.

578 {
579  SIM_PANEL_BASE* curPage = currentPlotWindow();
580 
581  return ( ( !curPage || curPage->GetType() == ST_UNKNOWN ) ?
582  nullptr :
583  dynamic_cast<SIM_PLOT_PANEL*>( curPage ) );
584 }
SIM_PANEL_BASE * currentPlotWindow() const
Returns the currently opened plot panel (or NULL if there is none).
SIM_TYPE GetType() const

References currentPlotWindow(), SIM_PANEL_BASE::GetType(), and ST_UNKNOWN.

Referenced by addPlot(), menuNewPlot(), menuSaveCsv(), menuSaveImage(), menuSaveWorkbook(), menuShowDotted(), menuShowDottedUpdate(), menuShowGrid(), menuShowGridUpdate(), menuShowLegend(), menuShowLegendUpdate(), menuZoomFit(), menuZoomIn(), menuZoomOut(), onAddSignal(), onCursorUpdate(), onSimUpdate(), removePlot(), SIM_PLOT_FRAME::SIGNAL_CONTEXT_MENU::SIGNAL_CONTEXT_MENU(), and updateSignalList().

◆ currentPlotWindow()

SIM_PANEL_BASE* SIM_PLOT_FRAME::currentPlotWindow ( ) const
inlineprivate

Returns the currently opened plot panel (or NULL if there is none).

Definition at line 221 of file sim_plot_frame.h.

222  {
223  return dynamic_cast<SIM_PANEL_BASE*>( m_plotNotebook->GetCurrentPage() );
224  }
wxAuiNotebook * m_plotNotebook

References SIM_PLOT_FRAME_BASE::m_plotNotebook.

Referenced by AddTuner(), CurrentPlot(), onSettings(), onSimFinished(), and StartSimulation().

◆ CurrentToolName()

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

Definition at line 99 of file tools_holder.cpp.

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

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

161 {
162  m_modal_ret_val = aRetVal;
163  m_modal_string = aResult;
164 
165  if( m_modal_loop )
166  {
167  m_modal_loop->Exit();
168  m_modal_loop = 0; // this marks it as dismissed.
169  }
170 
171  Show( false );
172 }
bool m_modal_ret_val
Definition: kiway_player.h:205
wxString m_modal_string
Definition: kiway_player.h:204
WX_EVENT_LOOP * m_modal_loop
Definition: kiway_player.h:202

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

Referenced by FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), FOOTPRINT_WIZARD_FRAME::ExportSelectedFootprint(), LIB_VIEW_FRAME::FinishModal(), LIB_VIEW_FRAME::OnCloseWindow(), FOOTPRINT_VIEWER_FRAME::OnCloseWindow(), and FOOTPRINT_WIZARD_FRAME::OnCloseWindow().

◆ DisplayToolMsg()

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

Reimplemented in EDA_DRAW_FRAME.

Definition at line 89 of file tools_holder.h.

89 {};

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

Definition at line 268 of file eda_base_frame.cpp.

269 {
270  wxCHECK_MSG( false, true, wxT( "Auto save timer function not overridden. Bad programmer!" ) );
271 }

Referenced by EDA_BASE_FRAME::onAutoSaveTimer().

◆ fillDefaultColorList()

void SIM_PLOT_FRAME::fillDefaultColorList ( bool  aWhiteBg)
private

Fills m_colorList by a default set of colors.

Parameters
aWhiteBg= true to use a white (or clear) background false to use a dark background

Definition at line 386 of file sim_plot_frame.cpp.

387 {
388  m_colorList.clear();
389 
390  if( aWhiteBg )
391  {
392  m_colorList.emplace_back( 255, 255, 255 ); // Bg color
393  m_colorList.emplace_back( 0, 0, 0 ); // Fg color (texts)
394  m_colorList.emplace_back( 130, 130, 130 ); // Axis color
395  m_colorList.emplace_back( 0, 0, 0 ); // cursors color
396  }
397  else
398  {
399  m_colorList.emplace_back( 0, 0, 0 ); // Bg color
400  m_colorList.emplace_back( 255, 255, 255 ); // Fg color (texts)
401  m_colorList.emplace_back( 130, 130, 130 ); // Axis color
402  m_colorList.emplace_back( 255, 255, 255 ); // cursors color
403  }
404 
405  // Add a list of color for traces, starting at index SIM_TRACE_COLOR
406  m_colorList.emplace_back( 0xE4, 0x1A, 0x1C );
407  m_colorList.emplace_back( 0x37, 0x7E, 0xB8 );
408  m_colorList.emplace_back( 0x4D, 0xAF, 0x4A );
409  m_colorList.emplace_back( 0x98, 0x4E, 0xA3 );
410  m_colorList.emplace_back( 0xFF, 0x7F, 0x00 );
411  m_colorList.emplace_back( 0xFF, 0xFF, 0x33 );
412  m_colorList.emplace_back( 0xA6, 0x56, 0x28 );
413  m_colorList.emplace_back( 0xF7, 0x81, 0xBF );
414  m_colorList.emplace_back( 0x66, 0xC2, 0xA5 );
415  m_colorList.emplace_back( 0xFC, 0x8D, 0x62 );
416  m_colorList.emplace_back( 0x8D, 0xA0, 0xCB );
417  m_colorList.emplace_back( 0xE7, 0x8A, 0xC3 );
418  m_colorList.emplace_back( 0xA6, 0xD8, 0x54 );
419  m_colorList.emplace_back( 0xFF, 0xD9, 0x2F );
420  m_colorList.emplace_back( 0xE5, 0xC4, 0x94 );
421  m_colorList.emplace_back( 0xB3, 0xB3, 0xB3 );
422 
423 }
std::vector< wxColour > m_colorList
The color list to draw traces, bg, fg, axis...

References m_colorList.

Referenced by menuWhiteBackground(), and SIM_PLOT_FRAME().

◆ GetAboutTitle()

const wxString& EDA_BASE_FRAME::GetAboutTitle ( ) const
inlineinherited

Definition at line 488 of file eda_base_frame.h.

488 { return m_AboutTitle; }
wxString m_AboutTitle

References EDA_BASE_FRAME::m_AboutTitle.

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

◆ GetAutoSaveFilePrefix()

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

Definition at line 165 of file eda_base_frame.h.

166  {
167  return wxT( "_autosave-" );
168  }

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

◆ GetAutoSaveInterval()

int EDA_BASE_FRAME::GetAutoSaveInterval ( ) const
inlineinherited

Definition at line 259 of file eda_base_frame.h.

259 { return m_autoSaveInterval; }

References EDA_BASE_FRAME::m_autoSaveInterval.

◆ GetBackupSuffix()

static wxString EDA_BASE_FRAME::GetBackupSuffix ( )
inlinestaticprotectedinherited
Returns
the suffix to be appended to the file extension on backup

Definition at line 157 of file eda_base_frame.h.

158  {
159  return wxT( "-bak" );
160  }

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

418 { return wxEmptyString; }

Referenced by EDA_BASE_FRAME::SaveSettings().

◆ GetDoImmediateActions()

bool TOOLS_HOLDER::GetDoImmediateActions ( ) const
inlineinherited

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

95 { return m_immediateActions; }
bool m_immediateActions
Definition: tools_holder.h:59

References TOOLS_HOLDER::m_immediateActions.

◆ GetDragSelects()

bool TOOLS_HOLDER::GetDragSelects ( ) const
inlineinherited

Indicates that a drag should draw a selection rectangle, even when started over an item.

Definition at line 101 of file tools_holder.h.

101 { return m_dragSelects; }
bool m_dragSelects
Definition: tools_holder.h:63

References TOOLS_HOLDER::m_dragSelects.

Referenced by EE_SELECTION_TOOL::Main().

◆ GetExporter()

const NETLIST_EXPORTER_PSPICE_SIM * SIM_PLOT_FRAME::GetExporter ( ) const

Returns the netlist exporter object used for simulations.

Definition at line 587 of file sim_plot_frame.cpp.

588 {
589  return m_exporter.get();
590 }
std::unique_ptr< NETLIST_EXPORTER_PSPICE_SIM > m_exporter

References m_exporter.

Referenced by TUNER_SLIDER::TUNER_SLIDER().

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

602 {
603  if( !aFileHistory )
604  aFileHistory = m_fileHistory;
605 
606  wxASSERT( aFileHistory );
607 
608  int baseId = aFileHistory->GetBaseId();
609 
610  wxASSERT( cmdId >= baseId && cmdId < baseId + (int) aFileHistory->GetCount() );
611 
612  unsigned i = cmdId - baseId;
613 
614  if( i < aFileHistory->GetCount() )
615  {
616  wxString fn = aFileHistory->GetHistoryFile( i );
617 
618  if( wxFileName::FileExists( fn ) )
619  return fn;
620  else
621  {
622  wxString msg = wxString::Format( _( "File \"%s\" was not found." ), fn );
623  wxMessageBox( msg );
624 
625  aFileHistory->RemoveFileFromHistory( i );
626  }
627  }
628 
629  // Update the menubar to update the file history menu
630  if( GetMenuBar() )
631  {
632  ReCreateMenuBar();
633  GetMenuBar()->Refresh();
634  }
635 
636  return wxEmptyString;
637 }
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, CPTREE &aTree)
Function Format outputs a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:205
#define _(s)
Definition: 3d_actions.cpp:33
FILE_HISTORY * m_fileHistory
virtual void ReCreateMenuBar()
Recreates the menu bar.

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

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

◆ GetFileHistory()

FILE_HISTORY& EDA_BASE_FRAME::GetFileHistory ( )
inlineinherited

◆ GetInfoBar()

WX_INFOBAR* EDA_BASE_FRAME::GetInfoBar ( )
inlineinherited

Definition at line 277 of file eda_base_frame.h.

277 { return m_infoBar; }
WX_INFOBAR * m_infoBar

References EDA_BASE_FRAME::m_infoBar.

Referenced by PAD_TOOL::EditPad().

◆ GetMoveWarpsCursor()

bool TOOLS_HOLDER::GetMoveWarpsCursor ( ) const
inlineinherited

Indicates that a move operation should warp the mouse pointer to the origin of the move object.

This improves snapping, but some users are alergic to mouse warping.

Definition at line 107 of file tools_holder.h.

107 { return m_moveWarpsCursor; }
bool m_moveWarpsCursor
Definition: tools_holder.h:64

References TOOLS_HOLDER::m_moveWarpsCursor.

Referenced by LIB_MOVE_TOOL::Main(), and SCH_MOVE_TOOL::Main().

◆ GetMruPath()

◆ GetPlotBgOpt()

bool SIM_PLOT_FRAME::GetPlotBgOpt ( ) const
inline
Returns
the current background option for plotting. false for drak bg, true for clear bg

Definition at line 184 of file sim_plot_frame.h.

184 { return m_plotUseWhiteBg; }

References m_plotUseWhiteBg.

Referenced by menuWhiteBackground(), and SIM_PLOT_FRAME().

◆ GetPlotColor()

wxColor SIM_PLOT_FRAME::GetPlotColor ( int  aColorId)
Returns
the wxColor selected in color list.
Parameters
aColorIdis the index in color list

Definition at line 376 of file sim_plot_frame.cpp.

377 {
378  // return the wxColor selected in color list or BLACK is not in list
379  if( aColorId >= 0 && aColorId < (int)m_colorList.size() )
380  return m_colorList[aColorId];
381 
382  return wxColor( 0, 0, 0 );
383 }
std::vector< wxColour > m_colorList
The color list to draw traces, bg, fg, axis...

References m_colorList.

Referenced by SIM_PLOT_PANEL::GetPlotColor().

◆ GetPlotColorCount()

int SIM_PLOT_FRAME::GetPlotColorCount ( )
inline
Returns
the count of colors in color list

Definition at line 195 of file sim_plot_frame.h.

195 { return m_colorList.size(); }
std::vector< wxColour > m_colorList
The color list to draw traces, bg, fg, axis...

References m_colorList.

Referenced by SIM_PLOT_PANEL::generateColor().

◆ GetSettingsManager()

◆ GetSeverity()

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

Reimplemented in PCB_BASE_FRAME.

Definition at line 225 of file eda_base_frame.h.

References RPT_SEVERITY_UNDEFINED.

Referenced by RC_TREE_MODEL::GetValue().

◆ GetToolCanvas()

wxWindow* SIM_PLOT_FRAME::GetToolCanvas ( ) const
inlineoverridevirtual

Canvas access.

Implements TOOLS_HOLDER.

Definition at line 204 of file sim_plot_frame.h.

204 { return nullptr; }

◆ GetToolManager()

TOOL_MANAGER* TOOLS_HOLDER::GetToolManager ( ) const
inlineinherited

Return the MVC controller.

Definition at line 74 of file tools_holder.h.

74 { return m_toolManager; }
TOOL_MANAGER * m_toolManager
Definition: tools_holder.h:48

References TOOLS_HOLDER::m_toolManager.

Referenced by DIALOG_GLOBAL_DELETION::AcceptPcbDelete(), TREEPROJECT_ITEM::Activate(), FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), LIB_CONTROL::AddSymbolToSchematic(), BOARD_COMMIT::BOARD_COMMIT(), FOOTPRINT_VIEWER_FRAME::ClickOnFootprintList(), TOOLS_HOLDER::CommonSettingsChanged(), DIALOG_ERC::deleteAllMarkers(), DIALOG_DRC::deleteAllMarkers(), DIALOG_MIGRATE_BUSES::DIALOG_MIGRATE_BUSES(), PL_DRAW_PANEL_GAL::DisplayWorksheet(), DIALOG_CLEANUP_TRACKS_AND_VIAS::doCleanup(), DIALOG_CLEANUP_GRAPHICS::doCleanup(), DRAWING_TOOL::DrawVia(), TRACK_WIDTH_MENU::eventHandler(), DIFF_PAIR_MENU::eventHandler(), SCH_EDIT_FRAME::ExecuteRemoteCommand(), PCB_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(), KICAD_MANAGER_FRAME::InstallPreferences(), PL_EDITOR_FRAME::InstallPreferences(), FOOTPRINT_EDIT_FRAME::InstallPreferences(), LIB_EDIT_FRAME::InstallPreferences(), GERBVIEW_FRAME::InstallPreferences(), PCB_EDIT_FRAME::InstallPreferences(), SCH_EDIT_FRAME::InstallPreferences(), LIB_VIEW_FRAME::LIB_VIEW_FRAME(), LIB_EDIT_FRAME::LoadPart(), PROPERTIES_FRAME::OnAcceptPrms(), DIALOG_INSPECTOR::onCellClicked(), onClose(), SYMBOL_TREE_PANE::onComponentSelected(), DIALOG_DRC::OnDeleteOneClick(), DIALOG_DRC::OnDRCItemRClick(), DIALOG_ERC::OnERCItemSelected(), FOOTPRINTS_LISTBOX::OnLeftDClick(), onProbe(), DIALOG_PLOT::onRunDRC(), HIERARCHY_NAVIG_DLG::onSelectSheetPath(), DIALOG_FIELDS_EDITOR_GLOBAL::OnTableCellClick(), onTune(), PANEL_SELECTION_FILTER::PANEL_SELECTION_FILTER(), DIALOG_PLOT::Plot(), TOOLS_HOLDER::PopTool(), SCH_EDIT_FRAME::PutDataInPreviousState(), PL_EDITOR_FRAME::RollbackFromUndo(), FOOTPRINT_EDIT_FRAME::SaveFootprintToBoard(), EDA_3D_VIEWER::SaveSettings(), DIALOG_FIND::search(), CVPCB_MAINFRAME::setupEventHandlers(), PCB_LAYER_WIDGET::SyncLayerAlphaIndicators(), DIALOG_GRID_SETTINGS::TransferDataFromWindow(), DIALOG_3D_VIEW_OPTIONS::TransferDataFromWindow(), DIALOG_LIB_EDIT_TEXT::TransferDataFromWindow(), PANEL_SETUP_RULES::TransferDataFromWindow(), PANEL_SETUP_NETCLASSES::TransferDataFromWindow(), DIALOG_FIELDS_EDITOR_GLOBAL::TransferDataToWindow(), DIALOG_LIB_EDIT_TEXT::TransferDataToWindow(), DIALOG_3D_VIEW_OPTIONS::TransferDataToWindow(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::TransferDataToWindow(), DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::TransferDataToWindow(), EDA_DRAW_FRAME::UpdateMsgPanel(), DIALOG_NETLIST::~DIALOG_NETLIST(), and DIALOG_UPDATE_PCB::~DIALOG_UPDATE_PCB().

◆ GetType()

HOLDER_TYPE KIWAY_HOLDER::GetType ( )
inlineinherited

Definition at line 49 of file kiway_holder.h.

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

References KIWAY_HOLDER::m_type.

Referenced by DIALOG_SHIM::DIALOG_SHIM().

◆ GetUserUnits()

EDA_UNITS EDA_BASE_FRAME::GetUserUnits ( ) const
inlineinherited

Return the user units currently in use.

Definition at line 209 of file eda_base_frame.h.

210  {
211  return m_userUnits;
212  }
EDA_UNITS m_userUnits

References EDA_BASE_FRAME::m_userUnits.

Referenced by PANEL_SETUP_TRACKS_AND_VIAS::AppendDiffPairs(), PANEL_SETUP_TRACKS_AND_VIAS::AppendTrackWidth(), PANEL_SETUP_TRACKS_AND_VIAS::AppendViaSize(), MICROWAVE_TOOL::createFootprint(), MICROWAVE_TOOL::createMicrowaveInductor(), GERBVIEW_SELECTION_TOOL::disambiguationMenu(), GERBER_FILE_IMAGE::DisplayImageInfo(), PL_SELECTION_TOOL::doSelectionMenu(), EE_SELECTION_TOOL::doSelectionMenu(), SELECTION_TOOL::doSelectionMenu(), DRAWING_TOOL::drawArc(), DRAWING_TOOL::drawSegment(), EVT_GRID_CMD_CELL_CHANGED(), PCB_EDIT_FRAME::GenFootprintsReport(), PANEL_MODEDIT_DEFAULTS::getGridValue(), PANEL_SETUP_TEXT_AND_GRAPHICS::getGridValue(), LIB_CIRCLE::GetMsgPanelInfo(), LIB_RECTANGLE::GetMsgPanelInfo(), LIB_TEXT::GetMsgPanelInfo(), LIB_ARC::GetMsgPanelInfo(), LIB_POLYLINE::GetMsgPanelInfo(), MARKER_PCB::GetMsgPanelInfo(), LIB_BEZIER::GetMsgPanelInfo(), TEXTE_PCB::GetMsgPanelInfo(), ZONE_CONTAINER::GetMsgPanelInfo(), WS_DRAW_ITEM_BASE::GetMsgPanelInfo(), LIB_PIN::GetMsgPanelInfo(), SCH_BITMAP::GetMsgPanelInfo(), LIB_FIELD::GetMsgPanelInfo(), TRACK::GetMsgPanelInfo(), TEXTE_MODULE::GetMsgPanelInfo(), DRAWSEGMENT::GetMsgPanelInfo(), NETINFO_ITEM::GetMsgPanelInfo(), SCH_TEXT::GetMsgPanelInfo(), VIA::GetMsgPanelInfo(), D_PAD::GetMsgPanelInfo(), LIB_PIN::getMsgPanelInfoBase(), PANEL_SETUP_NETCLASSES::getNetclassValue(), GetUserUnits(), RC_TREE_MODEL::GetValue(), GRID_MENU::GRID_MENU(), GERBVIEW_FRAME::Liste_D_Codes(), PCB_VIEWER_TOOLS::MeasureTool(), GERBVIEW_SELECTION_TOOL::MeasureTool(), PANEL_SETUP_BOARD_STACKUP::onThicknessChange(), DIALOG_SELECT_NET_FROM_LIST::onUnitsChanged(), UNIT_BINDER::onUnitsChanged(), PANEL_SETUP_BOARD_STACKUP::onUpdateThicknessValue(), PANEL_PREV_3D::PANEL_PREV_3D(), PANEL_SETUP_BOARD_STACKUP::PANEL_SETUP_BOARD_STACKUP(), POSITION_RELATIVE_TOOL::PositionRelative(), FOOTPRINT_EDIT_FRAME::ReCreateMenuBar(), LIB_EDIT_FRAME::ReCreateMenuBar(), GERBVIEW_FRAME::ReCreateMenuBar(), SCH_EDIT_FRAME::ReCreateMenuBar(), PCB_EDIT_FRAME::ReCreateMenuBar(), DRC_ITEM::ShowHtml(), DISPLAY_FOOTPRINTS_FRAME::SyncToolbars(), FOOTPRINT_VIEWER_FRAME::SyncToolbars(), FOOTPRINT_EDIT_FRAME::SyncToolbars(), LIB_EDIT_FRAME::SyncToolbars(), GERBVIEW_FRAME::SyncToolbars(), PCB_EDIT_FRAME::SyncToolbars(), SCH_EDIT_FRAME::SyncToolbars(), COMMON_TOOLS::ToggleUnits(), PANEL_SETUP_BOARD_STACKUP::transferDataFromUIToStackup(), PANEL_SETUP_TRACKS_AND_VIAS::TransferDataFromWindow(), PANEL_SETUP_NETCLASSES::TransferDataFromWindow(), PANEL_EESCHEMA_SETTINGS::TransferDataToWindow(), PANEL_GERBVIEW_SETTINGS::TransferDataToWindow(), PANEL_EDIT_OPTIONS::TransferDataToWindow(), PANEL_SETUP_NETCLASSES::TransferDataToWindow(), UNIT_BINDER::UNIT_BINDER(), GRID_MENU::update(), TRACK_WIDTH_MENU::update(), DIFF_PAIR_MENU::update(), GERBVIEW_FRAME::updateDCodeSelectBox(), EDA_DRAW_FRAME::UpdateGridSelectBox(), PNS_TUNE_STATUS_POPUP::UpdateStatus(), PL_EDITOR_FRAME::UpdateStatusBar(), SCH_BASE_FRAME::UpdateStatusBar(), PCB_BASE_FRAME::UpdateStatusBar(), GERBVIEW_FRAME::UpdateStatusBar(), PCB_EDIT_FRAME::UpdateTrackWidthSelectBox(), PCB_EDIT_FRAME::UpdateViaSizeSelectBox(), DRC::userUnits(), PANEL_SETUP_TRACKS_AND_VIAS::validateData(), and PANEL_SETUP_NETCLASSES::validateData().

◆ GetWindowSettings()

WINDOW_SETTINGS * SIM_PLOT_FRAME::GetWindowSettings ( APP_SETTINGS_BASE aCfg)
overridevirtual

Returns 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 from EDA_BASE_FRAME.

Definition at line 279 of file sim_plot_frame.cpp.

280 {
281  auto cfg = dynamic_cast<EESCHEMA_SETTINGS*>( aCfg );
282  wxASSERT( cfg );
283 
284  return cfg ? &cfg->m_Simulator.window : nullptr;
285 }

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

829 {
830 #ifdef __WXGTK__
831  // GTK includes the window decorations in the normal GetSize call,
832  // so we have to use a GTK-specific sizing call that returns the
833  // non-decorated window size.
834  int width = 0;
835  int height = 0;
836  GTKDoGetSize( &width, &height );
837 
838  wxSize winSize( width, height );
839 #else
840  wxSize winSize = GetSize();
841 #endif
842 
843  return winSize;
844 }

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

◆ GetXAxisType()

SIM_PLOT_TYPE SIM_PLOT_FRAME::GetXAxisType ( SIM_TYPE  aType) const
private

Returns X axis for a given simulation type.

Todo:
SPT_LOG_FREQUENCY

Definition at line 1009 of file sim_plot_frame.cpp.

1010 {
1011  switch( aType )
1012  {
1013  case ST_AC:
1014  return SPT_LIN_FREQUENCY;
1016 
1017  case ST_DC:
1018  return SPT_SWEEP;
1019 
1020  case ST_TRANSIENT:
1021  return SPT_TIME;
1022 
1023  default:
1024  wxASSERT_MSG( false, "Unhandled simulation type" );
1025  return (SIM_PLOT_TYPE) 0;
1026  }
1027 }
SIM_PLOT_TYPE
Possible plot types
Definition: sim_types.h:44

References SPT_LIN_FREQUENCY, SPT_SWEEP, SPT_TIME, ST_AC, ST_DC, and ST_TRANSIENT.

Referenced by addPlot().

◆ help_name()

wxString EDA_BASE_FRAME::help_name ( )
virtualinherited

Reimplemented in KICAD_MANAGER_FRAME.

Definition at line 570 of file eda_base_frame.cpp.

571 {
572  return Kiface().GetHelpFileName();
573 }
const wxString & GetHelpFileName() const
Function GetHelpFileName returns just the basename portion of the current help file.
Definition: kiface_i.h:123
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
aActionMap= current hotkey map (over which the imported hotkeys will be applied)
aDefaultShortname= a default short name (extension not needed) like eechema, kicad...

◆ InstallPreferences()

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

Function InstallPreferences 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, LIB_EDIT_FRAME, FOOTPRINT_EDIT_FRAME, PL_EDITOR_FRAME, and KICAD_MANAGER_FRAME.

Definition at line 290 of file eda_base_frame.h.

290 { }

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

Definition at line 180 of file eda_base_frame.h.

180 { return false; }

Referenced by EDA_BASE_FRAME::ProcessEvent().

◆ IsContentModified()

bool EDA_BASE_FRAME::IsContentModified ( )
virtualinherited

Get if the contents of the frame have been modified since the last save.

Returns
true if the contents of the frame have not been saved

Reimplemented in PCB_EDIT_FRAME, SCH_EDIT_FRAME, CVPCB_MAINFRAME, LIB_EDIT_FRAME, PL_EDITOR_FRAME, and FOOTPRINT_EDIT_FRAME.

Definition at line 789 of file eda_base_frame.cpp.

790 {
791  // This function should be overridden in child classes
792  return false;
793 }

◆ IsCurrentTool()

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

Definition at line 108 of file tools_holder.cpp.

109 {
110  if( m_toolStack.empty() )
111  return &aAction == &ACTIONS::selectionTool;
112  else
113  return m_toolStack.back() == aAction.GetName();
114 }
std::vector< std::string > m_toolStack
Definition: tools_holder.h:52
static TOOL_ACTION selectionTool
Definition: actions.h:146
const std::string & GetName() const
Function GetName() Returns name of the action.
Definition: tool_action.h:78

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

Referenced by PCB_INSPECTION_TOOL::HighlightNetTool(), SCH_EDIT_TOOL::Init(), PCB_EDITOR_CONTROL::Init(), SCH_LINE_WIRE_BUS_TOOL::Init(), DISPLAY_FOOTPRINTS_FRAME::SyncToolbars(), FOOTPRINT_VIEWER_FRAME::SyncToolbars(), and LIB_EDIT_FRAME::SyncToolbars().

◆ IsDismissed()

bool KIWAY_PLAYER::IsDismissed ( )
inherited

Function IsDismissed returns false only if both the frame is acting in modal mode and it has not been dismissed yet with DismissModal().

IOW, it will return true if the dialog is not modal or if it is modal and has been dismissed.

Definition at line 154 of file kiway_player.cpp.

155 {
156  return !m_modal_loop;
157 }
WX_EVENT_LOOP * m_modal_loop
Definition: kiway_player.h:202

References KIWAY_PLAYER::m_modal_loop.

Referenced by LIB_VIEW_FRAME::OnCloseWindow(), FOOTPRINT_VIEWER_FRAME::OnCloseWindow(), and FOOTPRINT_WIZARD_FRAME::OnCloseWindow().

◆ IsModal()

◆ IsSimulationRunning()

bool SIM_PLOT_FRAME::IsSimulationRunning ( )

Definition at line 472 of file sim_plot_frame.cpp.

473 {
474  return m_simulator ? m_simulator->IsRunning() : false;
475 }
std::shared_ptr< SPICE_SIMULATOR > m_simulator

References m_simulator.

Referenced by loadWorkbook(), onClose(), onSimFinished(), onSimulate(), and onSimUpdate().

◆ IsType()

bool EDA_BASE_FRAME::IsType ( FRAME_T  aType) const
inlineinherited

Definition at line 261 of file eda_base_frame.h.

261 { return m_Ident == aType; }

References EDA_BASE_FRAME::m_Ident.

Referenced by LIB_CONTROL::AddLibrary(), PCBNEW_CONTROL::AddLibrary(), LIB_CONTROL::AddSymbol(), ALIGN_DISTRIBUTE_TOOL::AlignBottom(), ALIGN_DISTRIBUTE_TOOL::AlignCenterX(), ALIGN_DISTRIBUTE_TOOL::AlignCenterY(), ALIGN_DISTRIBUTE_TOOL::AlignTop(), BOARD_COMMIT::BOARD_COMMIT(), EDA_3D_VIEWER::CreateMenuBar(), LIB_CONTROL::CutCopyDelete(), DIALOG_GRID_SETTINGS::DIALOG_GRID_SETTINGS(), DIALOG_KEEPOUT_AREA_PROPERTIES::DIALOG_KEEPOUT_AREA_PROPERTIES(), DIALOG_MOVE_EXACT::DIALOG_MOVE_EXACT(), DIALOG_PUSH_PAD_PROPERTIES::DIALOG_PUSH_PAD_PROPERTIES(), KIGFX::SCH_VIEW::DisplaySheet(), ALIGN_DISTRIBUTE_TOOL::doAlignLeft(), ALIGN_DISTRIBUTE_TOOL::doAlignRight(), ALIGN_DISTRIBUTE_TOOL::doDistributeCentersHorizontally(), ALIGN_DISTRIBUTE_TOOL::doDistributeCentersVertically(), ALIGN_DISTRIBUTE_TOOL::doDistributeGapsHorizontally(), ALIGN_DISTRIBUTE_TOOL::doDistributeGapsVertically(), LIB_CONTROL::DuplicateSymbol(), LIB_CONTROL::EditSymbol(), LIB_CONTROL::ExportSymbol(), MODULE::GetMsgPanelInfo(), LIB_CONTROL::Init(), DIALOG_EDIT_ONE_FIELD::init(), SELECTION_TOOL::Init(), DIALOG_PAD_PROPERTIES::initValues(), PICKER_TOOL::Main(), LIB_CONTROL::OnDeMorgan(), PCB_LAYER_WIDGET::OnRenderEnable(), PCBNEW_CONTROL::Paste(), LIB_CONTROL::PinLibrary(), POSITION_RELATIVE_TOOL::RelativeItemSelectionMove(), LIB_CONTROL::Revert(), EE_INSPECTION_TOOL::RunERC(), LIB_CONTROL::Save(), LIB_CONTROL::ShowComponentTree(), EE_INSPECTION_TOOL::ShowDatasheet(), LIB_CONTROL::UnpinLibrary(), and COMMON_TOOLS::ZoomFitScreen().

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

700 {
701  wxString msg;
702  wxFileName fn = aFileName;
703 
704  // Check for absence of a file path with a file name. Unfortunately KiCad
705  // uses paths relative to the current project path without the ./ part which
706  // confuses wxFileName. Making the file name path absolute may be less than
707  // elegant but it solves the problem.
708  if( fn.GetPath().IsEmpty() && fn.HasName() )
709  fn.MakeAbsolute();
710 
711  wxCHECK_MSG( fn.IsOk(), false,
712  wxT( "File name object is invalid. Bad programmer!" ) );
713  wxCHECK_MSG( !fn.GetPath().IsEmpty(), false,
714  wxT( "File name object path <" ) + fn.GetFullPath() +
715  wxT( "> is not set. Bad programmer!" ) );
716 
717  if( fn.IsDir() && !fn.IsDirWritable() )
718  {
719  msg.Printf( _( "You do not have write permissions to folder \"%s\"." ),
720  GetChars( fn.GetPath() ) );
721  }
722  else if( !fn.FileExists() && !fn.IsDirWritable() )
723  {
724  msg.Printf( _( "You do not have write permissions to save file \"%s\" to folder \"%s\"." ),
725  GetChars( fn.GetFullName() ), GetChars( fn.GetPath() ) );
726  }
727  else if( fn.FileExists() && !fn.IsFileWritable() )
728  {
729  msg.Printf( _( "You do not have write permissions to save file \"%s\"." ),
730  GetChars( fn.GetFullPath() ) );
731  }
732 
733  if( !msg.IsEmpty() )
734  {
735  wxMessageBox( msg );
736  return false;
737  }
738 
739  return true;
740 }
static const wxChar * GetChars(const wxString &s)
Function GetChars returns a wxChar* to the actual wxChar* data within a wxString, and is helpful for ...
Definition: macros.h:153
#define _(s)
Definition: 3d_actions.cpp:33

References _, and GetChars().

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

◆ Kiway()

KIWAY& KIWAY_HOLDER::Kiway ( ) const
inlineinherited

Function Kiway returns 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 56 of file kiway_holder.h.

57  {
58  wxASSERT( m_kiway ); // smoke out bugs in Debug build, then Release runs fine.
59  return *m_kiway;
60  }
KIWAY * m_kiway
Definition: kiway_holder.h:81

References KIWAY_HOLDER::m_kiway.

Referenced by TREEPROJECT_ITEM::Activate(), FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), PCB_BASE_EDIT_FRAME::AddLibrary(), LIB_CONTROL::AddSymbolToSchematic(), CVPCB_MAINFRAME::BuildLIBRARY_LISTBOX(), COMMON_CONTROL::ConfigurePaths(), DIALOG_CHOOSE_FOOTPRINT::ConstructRightPanel(), DIALOG_CHOOSE_COMPONENT::ConstructRightPanel(), PCB_BASE_FRAME::CreateAndShow3D_Frame(), CVPCB_MAINFRAME::CVPCB_MAINFRAME(), DIALOG_RESCUE_EACH::DIALOG_RESCUE_EACH(), DIALOG_SHIM::DIALOG_SHIM(), CVPCB_MAINFRAME::DisplayStatus(), FIELDS_GRID_TRICKS::doPopupSelection(), FIELDS_EDITOR_GRID_TRICKS::doPopupSelection(), PCB_EDITOR_CONTROL::EditFpInFpEditor(), SCH_EDITOR_CONTROL::EditWithLibEdit(), BACK_ANNOTATE::FetchNetlistFromPCB(), DISPLAY_FOOTPRINTS_FRAME::GetModule(), PCB_EDIT_FRAME::importFile(), KICAD_MANAGER_FRAME::language_change(), KIWAY_PLAYER::language_change(), LIB_TREE_MODEL_ADAPTER::LIB_TREE_MODEL_ADAPTER(), CVPCB_MAINFRAME::LoadFootprintFiles(), KICAD_MANAGER_FRAME::LoadProject(), TEXT_BUTTON_SYMBOL_CHOOSER::OnButtonClick(), TEXT_BUTTON_FP_CHOOSER::OnButtonClick(), KICAD_MANAGER_FRAME::OnCloseWindow(), SCH_EDIT_FRAME::OnCloseWindow(), PL_EDITOR_FRAME::OnExit(), SCH_EDIT_FRAME::OnExit(), FOOTPRINT_EDIT_FRAME::OnExitKiCad(), FOOTPRINT_VIEWER_FRAME::OnExitKiCad(), LIB_EDIT_FRAME::OnExitKiCad(), SAVE_AS_TRAVERSER::OnFile(), KICAD_MANAGER_FRAME::OnImportEagleFiles(), DIALOG_CHOOSE_COMPONENT::OnInitDialog(), SCH_EDIT_FRAME::OnOpenCvpcb(), SCH_EDIT_FRAME::OnOpenPcbnew(), EDA_BASE_FRAME::OnPreferences(), DIALOG_SYMBOL_REMAP::OnRemapSymbols(), DIALOG_EDIT_ONE_FIELD::OnTextValueSelectButtonClick(), FOOTPRINT_EDIT_FRAME::OnUpdateInsertModuleInBoard(), FOOTPRINT_EDIT_FRAME::OnUpdateLoadModuleFromBoard(), SCH_EDIT_FRAME::OnUpdatePCB(), KIWAY_HOLDER::Prj(), CVPCB_MAINFRAME::ReadNetListAndFpFiles(), FOOTPRINT_VIEWER_FRAME::ReCreateFootprintList(), LIB_EDIT_FRAME::refreshSchematic(), SCH_EDITOR_CONTROL::rescueProject(), EE_INSPECTION_TOOL::RunSimulation(), CVPCB_MAINFRAME::SaveFootprintAssociation(), FOOTPRINT_EDIT_FRAME::SaveFootprintToBoard(), LIB_TREE_MODEL_ADAPTER::SavePinnedItems(), SCH_BASE_FRAME::SelectComponentFromLibBrowser(), SCH_EDIT_FRAME::SendCrossProbeClearHighlight(), SCH_EDIT_FRAME::SendCrossProbeNetName(), PCB_EDIT_FRAME::SendCrossProbeNetName(), CVPCB_MAINFRAME::SendMessageToEESCHEMA(), PCB_EDIT_FRAME::SendMessageToEESCHEMA(), SCH_EDIT_FRAME::SendMessageToPCBNEW(), SCH_EDIT_FRAME::sendNetlistToCvpcb(), SCH_EDIT_FRAME::SetCrossProbeConnection(), CVPCB_CONTROL::ShowFootprintViewer(), COMMON_CONTROL::ShowLibraryTable(), COMMON_CONTROL::ShowPlayer(), KICAD_MANAGER_CONTROL::ShowPlayer(), SIM_PLOT_FRAME(), PCB_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 175 of file kiway_player.cpp.

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

References KIWAY_PLAYER::KiwayMailIn().

◆ KiwayMailIn()

void KIWAY_PLAYER::KiwayMailIn ( KIWAY_EXPRESS aEvent)
virtualinherited

Function KiwayMailIn receives KIWAY_EXPRESS messages from other players.

Merely override it in derived classes.

Reimplemented in LIB_EDIT_FRAME, FOOTPRINT_EDIT_FRAME, PCB_EDIT_FRAME, SCH_EDIT_FRAME, and CVPCB_MAINFRAME.

Definition at line 69 of file kiway_player.cpp.

70 {
71  // override this in derived classes.
72 }

Referenced by KIWAY_PLAYER::kiway_express(), and KIWAY::ProcessEvent().

◆ language_change()

void KIWAY_PLAYER::language_change ( wxCommandEvent &  event)
protectedinherited

Function language_change is an event handler called on a language menu selection.

Definition at line 182 of file kiway_player.cpp.

183 {
184  int id = event.GetId();
185 
186  // tell all the KIWAY_PLAYERs about the language change.
187  Kiway().SetLanguage( id );
188 }
KIWAY & Kiway() const
Function Kiway returns a reference to the KIWAY that this object has an opportunity to participate in...
Definition: kiway_holder.h:56
VTBL_ENTRY void SetLanguage(int aLanguage)
Function SetLanguage changes the language and then calls ShowChangedLanguage() on all KIWAY_PLAYERs.
Definition: kiway.cpp:436

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

◆ LoadSettings()

void SIM_PLOT_FRAME::LoadSettings ( APP_SETTINGS_BASE aCfg)
overridevirtual

Load common frame parameters from a configuration file.

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

Reimplemented from EDA_BASE_FRAME.

Definition at line 260 of file sim_plot_frame.cpp.

261 {
262  auto cfg = dynamic_cast<EESCHEMA_SETTINGS*>( aCfg );
263  wxASSERT( cfg );
264 
265  if( cfg )
266  {
268 
269  // Read subwindows sizes (should be > 0 )
270  m_splitterLeftRightSashPosition = cfg->m_Simulator.plot_panel_width;
271  m_splitterPlotAndConsoleSashPosition = cfg->m_Simulator.plot_panel_height;
272  m_splitterSignalsSashPosition = cfg->m_Simulator.signal_panel_height;
273  m_splitterTuneValuesSashPosition = cfg->m_Simulator.cursors_panel_height;
274  m_plotUseWhiteBg = cfg->m_Simulator.white_background;
275  }
276 }
int m_splitterPlotAndConsoleSashPosition
int m_splitterTuneValuesSashPosition
int m_splitterSignalsSashPosition
int m_splitterLeftRightSashPosition
virtual void LoadSettings(APP_SETTINGS_BASE *aCfg)
Load common frame parameters from a configuration file.

References EDA_BASE_FRAME::LoadSettings(), m_plotUseWhiteBg, m_splitterLeftRightSashPosition, m_splitterPlotAndConsoleSashPosition, m_splitterSignalsSashPosition, and m_splitterTuneValuesSashPosition.

Referenced by SIM_PLOT_FRAME().

◆ LoadWindowSettings()

void EDA_BASE_FRAME::LoadWindowSettings ( WINDOW_SETTINGS aCfg)
inherited

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

349 {
350  m_FramePos.x = aCfg->pos_x;
351  m_FramePos.y = aCfg->pos_y;
352  m_FrameSize.x = aCfg->size_x;
353  m_FrameSize.y = aCfg->size_y;
354 
355  wxLogTrace( traceDisplayLocation, "Config position (%d, %d) with size (%d, %d)",
357 
358  // Ensure minimum size is set if the stored config was zero-initialized
360  {
363 
364  wxLogTrace( traceDisplayLocation, "Using minimum size (%d, %d)", m_FrameSize.x, m_FrameSize.y );
365  }
366 
367  wxPoint upperRight( m_FramePos.x + m_FrameSize.x, m_FramePos.y );
368  wxPoint upperLeft( m_FramePos.x, m_FramePos.y );
369 
370  // Check to see if the requested display is still attached to the computer
371  int leftInd = wxDisplay::GetFromPoint( upperLeft );
372  int rightInd = wxDisplay::GetFromPoint( upperRight );
373 
374  wxLogTrace( traceDisplayLocation, "Number of displays: %d", wxDisplay::GetCount() );
375  wxLogTrace( traceDisplayLocation, "Previous display indices: %d and %d", leftInd, rightInd );
376 
377  if( rightInd == wxNOT_FOUND && leftInd == wxNOT_FOUND )
378  {
379  wxLogTrace( traceDisplayLocation, "Previous display not found" );
380 
381  // If it isn't attached, use the first display
382  // Warning wxDisplay has 2 ctor variants. the parameter needs a type:
383  const unsigned int index = 0;
384  wxDisplay display( index );
385  wxRect clientSize = display.GetClientArea();
386 
387  wxLogDebug( "Client size (%d, %d)", clientSize.width, clientSize.height );
388 
389  m_FramePos = wxDefaultPosition;
390 
391  // Ensure the window fits on the display, since the other one could have been larger
392  if( m_FrameSize.x > clientSize.width )
393  m_FrameSize.x = clientSize.width;
394 
395  if( m_FrameSize.y > clientSize.height )
396  m_FrameSize.y = clientSize.height;
397  }
398  else
399  {
400  wxRect clientSize;
401 
402  if( leftInd == wxNOT_FOUND )
403  {
404  // If the top-left point is off-screen, use the display for the top-right point
405  wxDisplay display( rightInd );
406  clientSize = display.GetClientArea();
407  }
408  else
409  {
410  wxDisplay display( leftInd );
411  clientSize = display.GetClientArea();
412  }
413 
414 // The percentage size (represented in decimal) of the region around the screen's border where
415 // an upper corner is not allowed
416 #define SCREEN_BORDER_REGION 0.10
417 
418  int yLim = clientSize.y + ( clientSize.height * ( 1.0 - SCREEN_BORDER_REGION ) );
419  int xLimLeft = clientSize.x + ( clientSize.width * SCREEN_BORDER_REGION );
420  int xLimRight = clientSize.x + ( clientSize.width * ( 1.0 - SCREEN_BORDER_REGION ) );
421 
422  if( upperLeft.x > xLimRight || // Upper left corner too close to right edge of screen
423  upperRight.x < xLimLeft || // Upper right corner too close to left edge of screen
424  upperRight.y > yLim ) // Upper corner too close to the bottom of the screen
425  {
426  m_FramePos = wxDefaultPosition;
427  wxLogTrace( traceDisplayLocation, "Resetting to default position" );
428  }
429  }
430 
431  // Ensure Window title bar is visible
432 #if defined( __WXOSX__ )
433  // for macOSX, the window must be below system (macOSX) toolbar
434  int Ypos_min = 20;
435 #else
436  int Ypos_min = 0;
437 #endif
438  if( m_FramePos.y < Ypos_min )
439  m_FramePos.y = Ypos_min;
440 
441  wxLogTrace( traceDisplayLocation, "Final window position (%d, %d) with size (%d, %d)",
443 
444  SetSize( m_FramePos.x, m_FramePos.y, m_FrameSize.x, m_FrameSize.y );
445 
446  // Center the window if we reset to default
447  if( m_FramePos.x == -1 )
448  {
449  wxLogTrace( traceDisplayLocation, "Centering window" );
450  Center();
451  m_FramePos = GetPosition();
452  }
453 
454  // Record the frame sizes in an un-maximized state
457 
458  // Maximize if we were maximized before
459  if( aCfg->maximized )
460  {
461  wxLogTrace( traceDisplayLocation, "Maximizing window" );
462  Maximize();
463  }
464 
465  if( m_hasAutoSave )
466  m_autoSaveInterval = Pgm().GetCommonSettings()->m_System.autosave_interval;
467 
468  m_perspective = aCfg->perspective;
469  m_mruPath = aCfg->mru_path;
470 
472 }
wxString mru_path
Definition: app_settings.h:71
KIWAY Kiway & Pgm(), KFCTL_STANDALONE
The global Program "get" accessor.
Definition: single_top.cpp:104
wxString m_mruPath
const wxChar *const traceDisplayLocation
Flag to enable debug output of display positioning logic.
virtual void CommonSettingsChanged(bool aEnvVarsChanged)
Notification event that some of the common (suite-wide) settings have changed.
wxString m_perspective
wxSize m_NormalFrameSize
#define SCREEN_BORDER_REGION
wxString perspective
Definition: app_settings.h:74
static const int s_minsize_x
static const int s_minsize_y
wxPoint m_NormalFramePos

References PCAD2KICAD::Center, TOOLS_HOLDER::CommonSettingsChanged(), EDA_BASE_FRAME::m_autoSaveInterval, EDA_BASE_FRAME::m_FramePos, EDA_BASE_FRAME::m_FrameSize, EDA_BASE_FRAME::m_hasAutoSave, EDA_BASE_FRAME::m_mruPath, EDA_BASE_FRAME::m_NormalFramePos, EDA_BASE_FRAME::m_NormalFrameSize, EDA_BASE_FRAME::m_perspective, WINDOW_SETTINGS::maximized, WINDOW_SETTINGS::mru_path, WINDOW_SETTINGS::perspective, Pgm(), WINDOW_SETTINGS::pos_x, WINDOW_SETTINGS::pos_y, s_minsize_x, s_minsize_y, SCREEN_BORDER_REGION, WINDOW_SETTINGS::size_x, WINDOW_SETTINGS::size_y, traceDisplayLocation, wxPoint::x, and wxPoint::y.

Referenced by EDA_BASE_FRAME::LoadSettings().

◆ loadWorkbook()

bool SIM_PLOT_FRAME::loadWorkbook ( const wxString &  aPath)
private

Loads plot settings from a file.

Parameters
aPathis the file name.
Returns
True if successful.

Definition at line 900 of file sim_plot_frame.cpp.

901 {
902  m_plots.clear();
903  m_plotNotebook->DeleteAllPages();
904 
905  wxTextFile file( aPath );
906 
907  if( !file.Open() )
908  return false;
909 
910  long plotsCount;
911 
912  if( !file.GetFirstLine().ToLong( &plotsCount ) ) // GetFirstLine instead of GetNextLine
913  return false;
914 
915  for( long i = 0; i < plotsCount; ++i )
916  {
917  long plotType, tracesCount;
918 
919  if( !file.GetNextLine().ToLong( &plotType ) )
920  return false;
921 
922  SIM_PANEL_BASE* plotPanel = NewPlotPanel( (SIM_TYPE) plotType );
923  m_plots[plotPanel].m_simCommand = file.GetNextLine();
924  StartSimulation( m_plots[plotPanel].m_simCommand );
925 
926  // Perform simulation, so plots can be added with values
927  do
928  {
929  wxThread::This()->Sleep( 50 );
930  }
931  while( IsSimulationRunning() );
932 
933  if( !file.GetNextLine().ToLong( &tracesCount ) )
934  return false;
935 
936  for( long j = 0; j < tracesCount; ++j )
937  {
938  long traceType;
939  wxString name, param;
940 
941  if( !file.GetNextLine().ToLong( &traceType ) )
942  return false;
943 
944  name = file.GetNextLine();
945  param = file.GetNextLine();
946 
947  if( name.IsEmpty() || param.IsEmpty() )
948  return false;
949 
950  addPlot( name, (SIM_PLOT_TYPE) traceType, param );
951  }
952  }
953 
954  return true;
955 }
SIM_PANEL_BASE * NewPlotPanel(SIM_TYPE aSimType)
Creates a new plot panel for a given simulation type and adds it to the main notebook.
std::map< SIM_PANEL_BASE *, PLOT_INFO > m_plots
Map of plot panels and associated data
void StartSimulation(const wxString &aSimCommand=wxEmptyString)
wxAuiNotebook * m_plotNotebook
SIM_TYPE
Possible simulation types
Definition: sim_types.h:29
bool IsSimulationRunning()
const char * name
Definition: DXF_plotter.cpp:60
SIM_PLOT_TYPE
Possible plot types
Definition: sim_types.h:44
void addPlot(const wxString &aName, SIM_PLOT_TYPE aType, const wxString &aParam)
Adds a new plot to the current panel.

References addPlot(), IsSimulationRunning(), SIM_PLOT_FRAME_BASE::m_plotNotebook, m_plots, name, NewPlotPanel(), and StartSimulation().

Referenced by menuOpenWorkbook().

◆ m_splitterLeftRightOnIdle()

void SIM_PLOT_FRAME_BASE::m_splitterLeftRightOnIdle ( wxIdleEvent &  )
inlineinherited

Definition at line 123 of file sim_plot_frame_base.h.

124  {
125  m_splitterLeftRight->SetSashPosition( 700 );
126  m_splitterLeftRight->Disconnect( wxEVT_IDLE, wxIdleEventHandler( SIM_PLOT_FRAME_BASE::m_splitterLeftRightOnIdle ), NULL, this );
127  }
void m_splitterLeftRightOnIdle(wxIdleEvent &)
#define NULL
wxSplitterWindow * m_splitterLeftRight

References SIM_PLOT_FRAME_BASE::m_splitterLeftRight, and NULL.

Referenced by SIM_PLOT_FRAME_BASE::SIM_PLOT_FRAME_BASE().

◆ m_splitterPlotAndConsoleOnIdle()

void SIM_PLOT_FRAME_BASE::m_splitterPlotAndConsoleOnIdle ( wxIdleEvent &  )
inlineinherited

Definition at line 129 of file sim_plot_frame_base.h.

130  {
131  m_splitterPlotAndConsole->SetSashPosition( 500 );
132  m_splitterPlotAndConsole->Disconnect( wxEVT_IDLE, wxIdleEventHandler( SIM_PLOT_FRAME_BASE::m_splitterPlotAndConsoleOnIdle ), NULL, this );
133  }
#define NULL
void m_splitterPlotAndConsoleOnIdle(wxIdleEvent &)
wxSplitterWindow * m_splitterPlotAndConsole

References SIM_PLOT_FRAME_BASE::m_splitterPlotAndConsole, and NULL.

Referenced by SIM_PLOT_FRAME_BASE::SIM_PLOT_FRAME_BASE().

◆ m_splitterSignalsOnIdle()

void SIM_PLOT_FRAME_BASE::m_splitterSignalsOnIdle ( wxIdleEvent &  )
inlineinherited

Definition at line 135 of file sim_plot_frame_base.h.

136  {
137  m_splitterSignals->SetSashPosition( 0 );
138  m_splitterSignals->Disconnect( wxEVT_IDLE, wxIdleEventHandler( SIM_PLOT_FRAME_BASE::m_splitterSignalsOnIdle ), NULL, this );
139  }
wxSplitterWindow * m_splitterSignals
void m_splitterSignalsOnIdle(wxIdleEvent &)
#define NULL

References SIM_PLOT_FRAME_BASE::m_splitterSignals, and NULL.

Referenced by SIM_PLOT_FRAME_BASE::SIM_PLOT_FRAME_BASE().

◆ m_splitterTuneValuesOnIdle()

void SIM_PLOT_FRAME_BASE::m_splitterTuneValuesOnIdle ( wxIdleEvent &  )
inlineinherited

Definition at line 141 of file sim_plot_frame_base.h.

142  {
143  m_splitterTuneValues->SetSashPosition( 0 );
144  m_splitterTuneValues->Disconnect( wxEVT_IDLE, wxIdleEventHandler( SIM_PLOT_FRAME_BASE::m_splitterTuneValuesOnIdle ), NULL, this );
145  }
wxSplitterWindow * m_splitterTuneValues
#define NULL
void m_splitterTuneValuesOnIdle(wxIdleEvent &)

References SIM_PLOT_FRAME_BASE::m_splitterTuneValues, and NULL.

Referenced by SIM_PLOT_FRAME_BASE::SIM_PLOT_FRAME_BASE().

◆ menuExit()

void SIM_PLOT_FRAME::menuExit ( wxCommandEvent &  event)
inlineoverrideprivatevirtual

Reimplemented from SIM_PLOT_FRAME_BASE.

Definition at line 295 of file sim_plot_frame.h.

296  {
297  Close();
298  }

◆ menuNewPlot()

void SIM_PLOT_FRAME::menuNewPlot ( wxCommandEvent &  aEvent)
overrideprivatevirtual

Reimplemented from SIM_PLOT_FRAME_BASE.

Definition at line 1030 of file sim_plot_frame.cpp.

1031 {
1032  SIM_TYPE type = m_exporter->GetSimType();
1033 
1034  if( SIM_PANEL_BASE::IsPlottable( type ) )
1035  {
1036  SIM_PLOT_PANEL* prevPlot = CurrentPlot();
1037  SIM_PLOT_PANEL* newPlot = dynamic_cast<SIM_PLOT_PANEL*>( NewPlotPanel( type ) );
1038 
1039  // If the previous plot had the same type, copy the simulation command
1040  if( prevPlot )
1041  m_plots[newPlot].m_simCommand = m_plots[prevPlot].m_simCommand;
1042  }
1043 }
SIM_PANEL_BASE * NewPlotPanel(SIM_TYPE aSimType)
Creates a new plot panel for a given simulation type and adds it to the main notebook.
std::map< SIM_PANEL_BASE *, PLOT_INFO > m_plots
Map of plot panels and associated data
static bool IsPlottable(SIM_TYPE aSimType)
SIM_TYPE
Possible simulation types
Definition: sim_types.h:29
std::unique_ptr< NETLIST_EXPORTER_PSPICE_SIM > m_exporter
SIM_PLOT_PANEL * CurrentPlot() const
Returns the currently opened plot panel (or NULL if there is none).

References CurrentPlot(), SIM_PANEL_BASE::IsPlottable(), m_exporter, m_plots, and NewPlotPanel().

◆ menuOpenWorkbook()

void SIM_PLOT_FRAME::menuOpenWorkbook ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from SIM_PLOT_FRAME_BASE.

Definition at line 1046 of file sim_plot_frame.cpp.

1047 {
1048  wxFileDialog openDlg( this, _( "Open simulation workbook" ), m_savedWorkbooksPath, "",
1049  WorkbookFileWildcard(), wxFD_OPEN | wxFD_FILE_MUST_EXIST );
1050 
1051  if( openDlg.ShowModal() == wxID_CANCEL )
1052  return;
1053 
1054  m_savedWorkbooksPath = openDlg.GetDirectory();
1055 
1056  if( !loadWorkbook( openDlg.GetPath() ) )
1057  DisplayError( this, _( "There was an error while opening the workbook file" ) );
1058 }
void DisplayError(wxWindow *aParent, const wxString &aText, int aDisplayTime)
Display an error or warning message box with aMessage.
Definition: confirm.cpp:239
bool loadWorkbook(const wxString &aPath)
Loads plot settings from a file.
static wxString m_savedWorkbooksPath
A string to store the path of saved workbooks during a session
#define _(s)
Definition: 3d_actions.cpp:33
wxString WorkbookFileWildcard()

References _, DisplayError(), loadWorkbook(), m_savedWorkbooksPath, and WorkbookFileWildcard().

◆ menuSaveCsv()

void SIM_PLOT_FRAME::menuSaveCsv ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from SIM_PLOT_FRAME_BASE.

Definition at line 1094 of file sim_plot_frame.cpp.

1095 {
1096  if( !CurrentPlot() )
1097  return;
1098 
1099  const wxChar SEPARATOR = ';';
1100 
1101  wxFileDialog saveDlg( this, _( "Save Plot Data" ), "", "",
1102  CsvFileWildcard(), wxFD_SAVE | wxFD_OVERWRITE_PROMPT );
1103 
1104  if( saveDlg.ShowModal() == wxID_CANCEL )
1105  return;
1106 
1107  wxFile out( saveDlg.GetPath(), wxFile::write );
1108  bool timeWritten = false;
1109 
1110  for( const auto& t : CurrentPlot()->GetTraces() )
1111  {
1112  const TRACE* trace = t.second;
1113 
1114  if( !timeWritten )
1115  {
1116  out.Write( wxString::Format( "Time%c", SEPARATOR ) );
1117 
1118  for( double v : trace->GetDataX() )
1119  out.Write( wxString::Format( "%f%c", v, SEPARATOR ) );
1120 
1121  out.Write( "\r\n" );
1122  timeWritten = true;
1123  }
1124 
1125  out.Write( wxString::Format( "%s%c", t.first, SEPARATOR ) );
1126 
1127  for( double v : trace->GetDataY() )
1128  out.Write( wxString::Format( "%f%c", v, SEPARATOR ) );
1129 
1130  out.Write( "\r\n" );
1131  }
1132 
1133  out.Close();
1134 }
const std::vector< double > & GetDataX() const
wxString CsvFileWildcard()
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, CPTREE &aTree)
Function Format outputs a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:205
#define _(s)
Definition: 3d_actions.cpp:33
SIM_PLOT_PANEL * CurrentPlot() const
Returns the currently opened plot panel (or NULL if there is none).
const std::vector< double > & GetDataY() const
const std::map< wxString, TRACE * > & GetTraces() const

References _, CsvFileWildcard(), CurrentPlot(), Format(), TRACE::GetDataX(), TRACE::GetDataY(), and SIM_PLOT_PANEL::GetTraces().

◆ menuSaveImage()

void SIM_PLOT_FRAME::menuSaveImage ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from SIM_PLOT_FRAME_BASE.

Definition at line 1079 of file sim_plot_frame.cpp.

1080 {
1081  if( !CurrentPlot() )
1082  return;
1083 
1084  wxFileDialog saveDlg( this, _( "Save Plot as Image" ), "", "",
1085  PngFileWildcard(), wxFD_SAVE | wxFD_OVERWRITE_PROMPT );
1086 
1087  if( saveDlg.ShowModal() == wxID_CANCEL )
1088  return;
1089 
1090  CurrentPlot()->GetPlotWin()->SaveScreenshot( saveDlg.GetPath(), wxBITMAP_TYPE_PNG );
1091 }
mpWindow * GetPlotWin() const
Getter for math plot window
wxString PngFileWildcard()
#define _(s)
Definition: 3d_actions.cpp:33
SIM_PLOT_PANEL * CurrentPlot() const
Returns the currently opened plot panel (or NULL if there is none).
bool SaveScreenshot(const wxString &filename, wxBitmapType type=wxBITMAP_TYPE_BMP, wxSize imageSize=wxDefaultSize, bool fit=false)
Draw the window on a wxBitmap, then save it to a file.
Definition: mathplot.cpp:3050

References _, CurrentPlot(), SIM_PLOT_PANEL::GetPlotWin(), PngFileWildcard(), and mpWindow::SaveScreenshot().

◆ menuSaveWorkbook()

void SIM_PLOT_FRAME::menuSaveWorkbook ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from SIM_PLOT_FRAME_BASE.

Definition at line 1061 of file sim_plot_frame.cpp.

1062 {
1063  if( !CurrentPlot() )
1064  return;
1065 
1066  wxFileDialog saveDlg( this, _( "Save Simulation Workbook" ), m_savedWorkbooksPath, "",
1067  WorkbookFileWildcard(), wxFD_SAVE | wxFD_OVERWRITE_PROMPT );
1068 
1069  if( saveDlg.ShowModal() == wxID_CANCEL )
1070  return;
1071 
1072  m_savedWorkbooksPath = saveDlg.GetDirectory();
1073 
1074  if( !saveWorkbook( saveDlg.GetPath() ) )
1075  DisplayError( this, _( "There was an error while saving the workbook file" ) );
1076 }
void DisplayError(wxWindow *aParent, const wxString &aText, int aDisplayTime)
Display an error or warning message box with aMessage.
Definition: confirm.cpp:239
bool saveWorkbook(const wxString &aPath)
Saves plot settings to a file.
static wxString m_savedWorkbooksPath
A string to store the path of saved workbooks during a session
#define _(s)
Definition: 3d_actions.cpp:33
SIM_PLOT_PANEL * CurrentPlot() const
Returns the currently opened plot panel (or NULL if there is none).
wxString WorkbookFileWildcard()

References _, CurrentPlot(), DisplayError(), m_savedWorkbooksPath, saveWorkbook(), and WorkbookFileWildcard().

◆ menuShowDotted()

void SIM_PLOT_FRAME::menuShowDotted ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from SIM_PLOT_FRAME_BASE.

Definition at line 1191 of file sim_plot_frame.cpp.

1192 {
1193  SIM_PLOT_PANEL* plot = CurrentPlot();
1194 
1195  if( plot )
1196  plot->SetDottedCurrentPhase( !plot->GetDottedCurrentPhase() );
1197 }
bool GetDottedCurrentPhase() const
void SetDottedCurrentPhase(bool aEnable)
SIM_PLOT_PANEL * CurrentPlot() const
Returns the currently opened plot panel (or NULL if there is none).

References CurrentPlot(), SIM_PLOT_PANEL::GetDottedCurrentPhase(), and SIM_PLOT_PANEL::SetDottedCurrentPhase().

◆ menuShowDottedUpdate()

void SIM_PLOT_FRAME::menuShowDottedUpdate ( wxUpdateUIEvent &  event)
overrideprivatevirtual

Reimplemented from SIM_PLOT_FRAME_BASE.

Definition at line 1200 of file sim_plot_frame.cpp.

1201 {
1202  SIM_PLOT_PANEL* plot = CurrentPlot();
1203 
1204  event.Check( plot ? plot->GetDottedCurrentPhase() : false );
1205 }
bool GetDottedCurrentPhase() const
SIM_PLOT_PANEL * CurrentPlot() const
Returns the currently opened plot panel (or NULL if there is none).

References CurrentPlot(), and SIM_PLOT_PANEL::GetDottedCurrentPhase().

◆ menuShowGrid()

void SIM_PLOT_FRAME::menuShowGrid ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from SIM_PLOT_FRAME_BASE.

Definition at line 1158 of file sim_plot_frame.cpp.

1159 {
1160  SIM_PLOT_PANEL* plot = CurrentPlot();
1161 
1162  if( plot )
1163  plot->ShowGrid( !plot->IsGridShown() );
1164 }
bool IsGridShown() const
void ShowGrid(bool aEnable)
SIM_PLOT_PANEL * CurrentPlot() const
Returns the currently opened plot panel (or NULL if there is none).

References CurrentPlot(), SIM_PLOT_PANEL::IsGridShown(), and SIM_PLOT_PANEL::ShowGrid().

◆ menuShowGridUpdate()

void SIM_PLOT_FRAME::menuShowGridUpdate ( wxUpdateUIEvent &  event)
overrideprivatevirtual

Reimplemented from SIM_PLOT_FRAME_BASE.

Definition at line 1167 of file sim_plot_frame.cpp.

1168 {
1169  SIM_PLOT_PANEL* plot = CurrentPlot();
1170 
1171  event.Check( plot ? plot->IsGridShown() : false );
1172 }
bool IsGridShown() const
SIM_PLOT_PANEL * CurrentPlot() const
Returns the currently opened plot panel (or NULL if there is none).

References CurrentPlot(), and SIM_PLOT_PANEL::IsGridShown().

◆ menuShowLegend()

void SIM_PLOT_FRAME::menuShowLegend ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from SIM_PLOT_FRAME_BASE.

Definition at line 1175 of file sim_plot_frame.cpp.

1176 {
1177  SIM_PLOT_PANEL* plot = CurrentPlot();
1178 
1179  if( plot )
1180  plot->ShowLegend( !plot->IsLegendShown() );
1181 }
bool IsLegendShown() const
void ShowLegend(bool aEnable)
SIM_PLOT_PANEL * CurrentPlot() const
Returns the currently opened plot panel (or NULL if there is none).

References CurrentPlot(), SIM_PLOT_PANEL::IsLegendShown(), and SIM_PLOT_PANEL::ShowLegend().

◆ menuShowLegendUpdate()

void SIM_PLOT_FRAME::menuShowLegendUpdate ( wxUpdateUIEvent &  event)
overrideprivatevirtual

Reimplemented from SIM_PLOT_FRAME_BASE.

Definition at line 1184 of file sim_plot_frame.cpp.

1185 {
1186  SIM_PLOT_PANEL* plot = CurrentPlot();
1187  event.Check( plot ? plot->IsLegendShown() : false );
1188 }
bool IsLegendShown() const
SIM_PLOT_PANEL * CurrentPlot() const
Returns the currently opened plot panel (or NULL if there is none).

References CurrentPlot(), and SIM_PLOT_PANEL::IsLegendShown().

◆ menuShowWhiteBackgroundUpdate()

void SIM_PLOT_FRAME::menuShowWhiteBackgroundUpdate ( wxUpdateUIEvent &  event)
inlineoverrideprivatevirtual

Reimplemented from SIM_PLOT_FRAME_BASE.

Definition at line 312 of file sim_plot_frame.h.

313  {
314  event.Check( m_plotUseWhiteBg );
315  }

References m_plotUseWhiteBg.

◆ menuWhiteBackground()

void SIM_PLOT_FRAME::menuWhiteBackground ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from SIM_PLOT_FRAME_BASE.

Definition at line 1208 of file sim_plot_frame.cpp.

1209 {
1211 
1212  // Rebuild the color list to plot traces
1214 
1215  // Now send changes to all SIM_PLOT_PANEL
1216  for( size_t page = 0; page < m_plotNotebook->GetPageCount(); page++ )
1217  {
1218  wxWindow* curPage = m_plotNotebook->GetPage( page );
1219 
1220  if( curPage == m_welcomePanel )
1221  continue;
1222 
1223  static_cast<SIM_PLOT_PANEL*>( curPage )->UpdatePlotColors();
1224  }
1225 }
bool GetPlotBgOpt() const
SIM_PANEL_BASE * m_welcomePanel
Info panel
wxAuiNotebook * m_plotNotebook
void fillDefaultColorList(bool aWhiteBg)
Fills m_colorList by a default set of colors.

References fillDefaultColorList(), GetPlotBgOpt(), SIM_PLOT_FRAME_BASE::m_plotNotebook, m_plotUseWhiteBg, and m_welcomePanel.

◆ menuZoomFit()

void SIM_PLOT_FRAME::menuZoomFit ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from SIM_PLOT_FRAME_BASE.

Definition at line 1151 of file sim_plot_frame.cpp.

1152 {
1153  if( CurrentPlot() )
1154  CurrentPlot()->GetPlotWin()->Fit();
1155 }
mpWindow * GetPlotWin() const
Getter for math plot window
void Fit() override
Set view to fit global bounding box of all plot layers and refresh display.
Definition: mathplot.cpp:1998
SIM_PLOT_PANEL * CurrentPlot() const
Returns the currently opened plot panel (or NULL if there is none).

References CurrentPlot(), mpWindow::Fit(), and SIM_PLOT_PANEL::GetPlotWin().

◆ menuZoomIn()

void SIM_PLOT_FRAME::menuZoomIn ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from SIM_PLOT_FRAME_BASE.

Definition at line 1137 of file sim_plot_frame.cpp.

1138 {
1139  if( CurrentPlot() )
1140  CurrentPlot()->GetPlotWin()->ZoomIn();
1141 }
mpWindow * GetPlotWin() const
Getter for math plot window
void ZoomIn(const wxPoint &centerPoint=wxDefaultPosition)
Zoom into current view and refresh display.
Definition: mathplot.cpp:2243
SIM_PLOT_PANEL * CurrentPlot() const
Returns the currently opened plot panel (or NULL if there is none).

References CurrentPlot(), SIM_PLOT_PANEL::GetPlotWin(), and mpWindow::ZoomIn().

◆ menuZoomOut()

void SIM_PLOT_FRAME::menuZoomOut ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from SIM_PLOT_FRAME_BASE.

Definition at line 1144 of file sim_plot_frame.cpp.

1145 {
1146  if( CurrentPlot() )
1147  CurrentPlot()->GetPlotWin()->ZoomOut();
1148 }
void ZoomOut(const wxPoint &centerPoint=wxDefaultPosition)
Zoom out current view and refresh display.
Definition: mathplot.cpp:2306
mpWindow * GetPlotWin() const
Getter for math plot window
SIM_PLOT_PANEL * CurrentPlot() const
Returns the currently opened plot panel (or NULL if there is none).

References CurrentPlot(), SIM_PLOT_PANEL::GetPlotWin(), and mpWindow::ZoomOut().

◆ NewPlotPanel()

SIM_PANEL_BASE * SIM_PLOT_FRAME::NewPlotPanel ( SIM_TYPE  aSimType)

Creates a new plot panel for a given simulation type and adds it to the main notebook.

Parameters
aSimTypeis requested simulation type.
Returns
The new plot panel.

Definition at line 478 of file sim_plot_frame.cpp.

479 {
480  SIM_PANEL_BASE* plotPanel;
481 
482  if( SIM_PANEL_BASE::IsPlottable( aSimType ) )
483  {
484  SIM_PLOT_PANEL* panel;
485  panel = new SIM_PLOT_PANEL( aSimType, m_plotNotebook, this, wxID_ANY );
486 
488  Pgm().GetCommonSettings()->m_Input.scroll_modifier_zoom != 0 );
489 
490  plotPanel = dynamic_cast<SIM_PANEL_BASE*>( panel );
491  }
492  else
493  {
494  SIM_NOPLOT_PANEL* panel;
495  panel = new SIM_NOPLOT_PANEL( aSimType, m_plotNotebook, wxID_ANY );
496  plotPanel = dynamic_cast<SIM_PANEL_BASE*>( panel );
497  }
498 
499  if( m_welcomePanel )
500  {
501  m_plotNotebook->DeletePage( 0 );
502  m_welcomePanel = nullptr;
503  }
504 
505  wxString pageTitle( m_simulator->TypeToName( aSimType, true ) );
506  pageTitle.Prepend( wxString::Format( _( "Plot%u - " ), (unsigned int) ++m_plotNumber ) );
507 
508  m_plotNotebook->AddPage( dynamic_cast<wxWindow*>( plotPanel ), pageTitle, true );
509  m_plots[plotPanel] = PLOT_INFO();
510 
511  return plotPanel;
512 }
KIWAY Kiway & Pgm(), KFCTL_STANDALONE
The global Program "get" accessor.
Definition: single_top.cpp:104
void EnableMouseWheelPan(bool enabled)
Enable/disable trackpad friendly panning (2-axis scroll wheel)
Definition: mathplot.h:1217
mpWindow * GetPlotWin() const
Getter for math plot window
std::map< SIM_PANEL_BASE *, PLOT_INFO > m_plots
Map of plot panels and associated data
std::shared_ptr< SPICE_SIMULATOR > m_simulator
SIM_PANEL_BASE * m_welcomePanel
Info panel
static bool IsPlottable(SIM_TYPE aSimType)
wxAuiNotebook * m_plotNotebook
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, CPTREE &aTree)
Function Format outputs a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:205
#define _(s)
Definition: 3d_actions.cpp:33
unsigned int m_plotNumber

References _, mpWindow::EnableMouseWheelPan(), Format(), SIM_PLOT_PANEL::GetPlotWin(), SIM_PANEL_BASE::IsPlottable(), SIM_PLOT_FRAME_BASE::m_plotNotebook, m_plotNumber, m_plots, m_simulator, m_welcomePanel, and Pgm().

Referenced by addPlot(), loadWorkbook(), menuNewPlot(), onSettings(), and onSimFinished().

◆ onAddSignal()

void SIM_PLOT_FRAME::onAddSignal ( wxCommandEvent &  event)
private

Definition at line 1327 of file sim_plot_frame.cpp.

1328 {
1329  SIM_PLOT_PANEL* plotPanel = CurrentPlot();
1330 
1331  if( !plotPanel || !m_exporter || plotPanel->GetType() != m_exporter->GetSimType() )
1332  {
1333  DisplayInfoMessage( this, _( "You need to run plot-providing simulation first." ) );
1334  return;
1335  }
1336 
1337  DIALOG_SIGNAL_LIST dialog( this, m_exporter.get() );
1338  dialog.ShowModal();
1339 }
SIM_TYPE GetType() const
std::unique_ptr< NETLIST_EXPORTER_PSPICE_SIM > m_exporter
#define _(s)
Definition: 3d_actions.cpp:33
SIM_PLOT_PANEL * CurrentPlot() const
Returns the currently opened plot panel (or NULL if there is none).
void DisplayInfoMessage(wxWindow *aParent, const wxString &aMessage, const wxString &aExtraInfo)
Display an informational message box with aMessage.
Definition: confirm.cpp:267

References _, CurrentPlot(), DisplayInfoMessage(), SIM_PANEL_BASE::GetType(), and m_exporter.

Referenced by SIM_PLOT_FRAME().

◆ onAutoSaveTimer()

void EDA_BASE_FRAME::onAutoSaveTimer ( wxTimerEvent &  aEvent)
protectedinherited

Handle the auto save timer event.

Definition at line 261 of file eda_base_frame.cpp.

262 {
263  if( !doAutoSave() )
264  m_autoSaveTimer->Start( m_autoSaveInterval * 1000, wxTIMER_ONE_SHOT );
265 }
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::EDA_BASE_FRAME().

◆ OnCharHook()

void EDA_BASE_FRAME::OnCharHook ( wxKeyEvent &  event)
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 274 of file eda_base_frame.cpp.

275 {
276  wxLogTrace( kicadTraceKeyEvent, "EDA_BASE_FRAME::OnCharHook %s", dump( event ) );
277  // Key events can be filtered here.
278  // Currently no filtering is made.
279  event.Skip();
280 }
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.

◆ onClose()

void SIM_PLOT_FRAME::onClose ( wxCloseEvent &  aEvent)
private

Definition at line 1412 of file sim_plot_frame.cpp.

1413 {
1414  SaveSettings( config() );
1415 
1416  if( IsSimulationRunning() )
1417  m_simulator->Stop();
1418 
1419  // Cancel a running simProbe or simTune tool
1421 
1422  Destroy();
1423 }
virtual APP_SETTINGS_BASE * config() const
Returns the settings object used in SaveSettings(), and is overloaded in KICAD_MANAGER_FRAME.
static TOOL_ACTION cancelInteractive
Definition: actions.h:65
bool RunAction(const std::string &aActionName, bool aNow=false, T aParam=NULL)
Function RunAction() Runs the specified action.
Definition: tool_manager.h:140
std::shared_ptr< SPICE_SIMULATOR > m_simulator
SCH_EDIT_FRAME * m_schematicFrame
void SaveSettings(APP_SETTINGS_BASE *aCfg) override
Saves common frame parameters to a configuration data file.
bool IsSimulationRunning()
bool Destroy() override
Our version of Destroy() which is virtual from wxWidgets.
TOOL_MANAGER * GetToolManager() const
Return the MVC controller.
Definition: tools_holder.h:74

References ACTIONS::cancelInteractive, EDA_BASE_FRAME::config(), KIWAY_PLAYER::Destroy(), TOOLS_HOLDER::GetToolManager(), IsSimulationRunning(), m_schematicFrame, m_simulator, TOOL_MANAGER::RunAction(), and SaveSettings().

Referenced by onShowNetlist(), and SIM_PLOT_FRAME().

◆ onCursorUpdate()

void SIM_PLOT_FRAME::onCursorUpdate ( wxCommandEvent &  aEvent)
private

Definition at line 1426 of file sim_plot_frame.cpp.

1427 {
1428  wxSize size = m_cursors->GetClientSize();
1429  SIM_PLOT_PANEL* plotPanel = CurrentPlot();
1430  m_cursors->ClearAll();
1431 
1432  if( !plotPanel )
1433  return;
1434 
1436  m_cursors->SetImageList(m_signalsIconColorList, wxIMAGE_LIST_SMALL);
1437 
1438  // Fill the signals listctrl
1439  m_cursors->AppendColumn( _( "Signal" ), wxLIST_FORMAT_LEFT, size.x / 2 );
1440  const long X_COL = m_cursors->AppendColumn( plotPanel->GetLabelX(), wxLIST_FORMAT_LEFT, size.x / 4 );
1441 
1442  wxString labelY1 = plotPanel->GetLabelY1();
1443  wxString labelY2 = plotPanel->GetLabelY2();
1444  wxString labelY;
1445 
1446  if( !labelY2.IsEmpty() )
1447  labelY = labelY1 + " / " + labelY2;
1448  else
1449  labelY = labelY1;
1450 
1451  const long Y_COL = m_cursors->AppendColumn( labelY, wxLIST_FORMAT_LEFT, size.x / 4 );
1452 
1453  // Update cursor values
1454  int itemidx = 0;
1455 
1456  for( const auto& trace : plotPanel->GetTraces() )
1457  {
1458  if( CURSOR* cursor = trace.second->GetCursor() )
1459  {
1460  // Find the right icon color in list.
1461  // It is the icon used in m_signals list for the same trace
1462  long iconColor = m_signals->FindItem( -1, trace.first );
1463 
1464  const wxRealPoint coords = cursor->GetCoords();
1465  long idx = m_cursors->InsertItem( itemidx++, trace.first, iconColor );
1466  m_cursors->SetItem( idx, X_COL, SPICE_VALUE( coords.x ).ToSpiceString() );
1467  m_cursors->SetItem( idx, Y_COL, SPICE_VALUE( coords.y ).ToSpiceString() );
1468  }
1469  }
1470 }
wxString ToSpiceString() const
Returns string value in Spice format (e.g.
wxImageList * m_signalsIconColorList
imagelists uset to add a small coloured icon to signal names and cursors name, the same color as the ...
wxString GetLabelY1() const
wxString GetLabelX() const
wxString GetLabelY2() const
Helper class to handle Spice way of expressing values (e.g. 10.5 Meg)
Definition: spice_value.h:32
#define _(s)
Definition: 3d_actions.cpp:33
SIM_PLOT_PANEL * CurrentPlot() const
Returns the currently opened plot panel (or NULL if there is none).
const std::map< wxString, TRACE * > & GetTraces() const
Cursor attached to a trace to follow its values:

References _, CurrentPlot(), SIM_PLOT_PANEL::GetLabelX(), SIM_PLOT_PANEL::GetLabelY1(), SIM_PLOT_PANEL::GetLabelY2(), SIM_PLOT_PANEL::GetTraces(), SIM_PLOT_FRAME_BASE::m_cursors, SIM_PLOT_FRAME_BASE::m_signals, m_signalsIconColorList, and SPICE_VALUE::ToSpiceString().

Referenced by onPlotChanged(), onPlotClose(), removePlot(), and SIM_PLOT_FRAME().

◆ OnKicadAbout()

void EDA_BASE_FRAME::OnKicadAbout ( wxCommandEvent &  event)
inherited

Definition at line 658 of file eda_base_frame.cpp.

659 {
660  void ShowAboutDialog(EDA_BASE_FRAME * aParent); // See AboutDialog_main.cpp
661  ShowAboutDialog( this );
662 }
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 806 of file eda_base_frame.cpp.

807 {
808  // When we maximize the window, we want to save the old information
809  // so that we can add it to the settings on next window load.
810  // Contrary to the documentation, this event seems to be generated
811  // when the window is also being unmaximized on OSX, so we only
812  // capture the size information when we maximize the window when on OSX.
813 #ifdef __WXOSX__
814  if( !IsMaximized() )
815 #endif
816  {
818  m_NormalFramePos = GetPosition();
819  wxLogTrace( traceDisplayLocation, "Maximizing window - Saving position (%d, %d) with size (%d, %d)",
821  }
822 
823  // Skip event to actually maximize the window
824  aEvent.Skip();
825 }
const wxChar *const traceDisplayLocation
Flag to enable debug output of display positioning logic.
wxSize m_NormalFrameSize
wxSize GetWindowSize()
Get the undecorated window size that can be used for restoring the window size.
wxPoint m_NormalFramePos

References EDA_BASE_FRAME::GetWindowSize(), EDA_BASE_FRAME::m_NormalFramePos, EDA_BASE_FRAME::m_NormalFrameSize, traceDisplayLocation, wxPoint::x, and wxPoint::y.

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

284 {
285  if( !m_toolDispatcher )
286  aEvent.Skip();
287  else
289 }
virtual void DispatchWxEvent(wxEvent &aEvent)
Function DispatchWxEvent() Processes wxEvents (mostly UI events), translates them to TOOL_EVENTs,...
TOOL_DISPATCHER * m_toolDispatcher
Definition: tools_holder.h:50

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

251  {
252  aEvent.Skip();
253  }

◆ onPlotChanged()

void SIM_PLOT_FRAME::onPlotChanged ( wxAuiNotebookEvent &  event)
overrideprivatevirtual

Reimplemented from SIM_PLOT_FRAME_BASE.

Definition at line 1245 of file sim_plot_frame.cpp.

1246 {
1247  updateSignalList();
1248  wxCommandEvent dummy;
1249  onCursorUpdate( dummy );
1250 }
void onCursorUpdate(wxCommandEvent &aEvent)
static LIB_PART * dummy()
Used to draw a dummy shape when a LIB_PART is not found in library.
void updateSignalList()
Updates the list of currently plotted signals.

References dummy(), onCursorUpdate(), and updateSignalList().

◆ onPlotClose()

void SIM_PLOT_FRAME::onPlotClose ( wxAuiNotebookEvent &  event)
overrideprivatevirtual

Reimplemented from SIM_PLOT_FRAME_BASE.

Definition at line 1228 of file sim_plot_frame.cpp.

1229 {
1230  int idx = event.GetSelection();
1231 
1232  if( idx == wxNOT_FOUND )
1233  return;
1234 
1235  SIM_PANEL_BASE* plotPanel =
1236  dynamic_cast<SIM_PANEL_BASE*>( m_plotNotebook->GetPage( idx ) );
1237 
1238  m_plots.erase( plotPanel );
1239  updateSignalList();
1240  wxCommandEvent dummy;
1241  onCursorUpdate( dummy );
1242 }
std::map< SIM_PANEL_BASE *, PLOT_INFO > m_plots
Map of plot panels and associated data
wxAuiNotebook * m_plotNotebook
void onCursorUpdate(wxCommandEvent &aEvent)
static LIB_PART * dummy()
Used to draw a dummy shape when a LIB_PART is not found in library.
void updateSignalList()
Updates the list of currently plotted signals.

References dummy(), SIM_PLOT_FRAME_BASE::m_plotNotebook, m_plots, onCursorUpdate(), and updateSignalList().

◆ OnPreferences()

void EDA_BASE_FRAME::OnPreferences ( wxCommandEvent &  event)
inherited

Definition at line 665 of file eda_base_frame.cpp.

666 {
667  PAGED_DIALOG dlg( this, _( "Preferences" ) );
668  wxTreebook* book = dlg.GetTreebook();
669 
670  book->AddPage( new PANEL_COMMON_SETTINGS( &dlg, book ), _( "Common" ) );
671 
672  book->AddPage( new PANEL_MOUSE_SETTINGS( &dlg, book ), _( "Mouse and Touchpad" ) );
673 
674  PANEL_HOTKEYS_EDITOR* hotkeysPanel = new PANEL_HOTKEYS_EDITOR( this, book, false );
675  book->AddPage( hotkeysPanel, _( "Hotkeys" ) );
676 
677  for( unsigned i = 0; i < KIWAY_PLAYER_COUNT; ++i )
678  {
679  KIWAY_PLAYER* frame = dlg.Kiway().Player( (FRAME_T) i, false );
680 
681  if( frame )
682  frame->InstallPreferences( &dlg, hotkeysPanel );
683  }
684 
685  // The Kicad manager frame is not a player so we have to add it by hand
686  wxWindow* manager = wxFindWindowByName( KICAD_MANAGER_FRAME_NAME );
687 
688  if( manager )
689  static_cast<EDA_BASE_FRAME*>( manager )->InstallPreferences( &dlg, hotkeysPanel );
690 
691  for( size_t i = 0; i < book->GetPageCount(); ++i )
692  book->GetPage( i )->Layout();
693 
694  if( dlg.ShowModal() == wxID_OK )
695  dlg.Kiway().CommonSettingsChanged( false );
696 }
KIWAY_PLAYER is a wxFrame capable of the OpenProjectFiles function, meaning it can load a portion of ...
Definition: kiway_player.h:59
KIWAY & Kiway() const
Function Kiway returns a reference to the KIWAY that this object has an opportunity to participate in...
Definition: kiway_holder.h:56
FRAME_T
Enum FRAME_T is the set of EDA_BASE_FRAME derivatives, typically stored in EDA_BASE_FRAME::m_Ident.
Definition: frame_type.h:34
VTBL_ENTRY KIWAY_PLAYER * Player(FRAME_T aFrameType, bool doCreate=true, wxTopLevelWindow *aParent=NULL)
Function Player returns the KIWAY_PLAYER* given a FRAME_T.
Definition: kiway.cpp:342
#define KICAD_MANAGER_FRAME_NAME
#define _(s)
Definition: 3d_actions.cpp:33
virtual void InstallPreferences(PAGED_DIALOG *, PANEL_HOTKEYS_EDITOR *)
Function InstallPreferences Allow a frame to load its preference panels (if any) into the preferences...

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

◆ onProbe()

void SIM_PLOT_FRAME::onProbe ( wxCommandEvent &  event)
private

Definition at line 1342 of file sim_plot_frame.cpp.

1343 {
1344  if( m_schematicFrame == NULL )
1345  return;
1346 
1348  m_schematicFrame->Raise();
1349 }
bool RunAction(const std::string &aActionName, bool aNow=false, T aParam=NULL)
Function RunAction() Runs the specified action.
Definition: tool_manager.h:140
SCH_EDIT_FRAME * m_schematicFrame
#define NULL
static TOOL_ACTION simProbe
Definition: ee_actions.h:198
TOOL_MANAGER * GetToolManager() const
Return the MVC controller.
Definition: tools_holder.h:74

References TOOLS_HOLDER::GetToolManager(), m_schematicFrame, NULL, TOOL_MANAGER::RunAction(), and EE_ACTIONS::simProbe.

Referenced by SIM_PLOT_FRAME().

◆ onSettings()

void SIM_PLOT_FRAME::onSettings ( wxCommandEvent &  event)
private

Definition at line 1290 of file sim_plot_frame.cpp.

1291 {
1292  SIM_PANEL_BASE* plotPanelWindow = currentPlotWindow();
1293 
1294  // Initial processing is required to e.g. display a list of power sources
1296 
1297  if( !m_exporter->ProcessNetlist( NET_ALL_FLAGS ) )
1298  {
1299  DisplayError( this, _( "There were errors during netlist export, aborted." ) );
1300  return;
1301  }
1302 
1303  if( !m_settingsDlg )
1304  m_settingsDlg = new DIALOG_SIM_SETTINGS( this );
1305 
1306  if( plotPanelWindow != m_welcomePanel )
1307  m_settingsDlg->SetSimCommand( m_plots[plotPanelWindow].m_simCommand );
1308 
1310 
1311  if( m_settingsDlg->ShowModal() == wxID_OK )
1312  {
1313  wxString newCommand = m_settingsDlg->GetSimCommand();
1314  SIM_TYPE newSimType = NETLIST_EXPORTER_PSPICE_SIM::CommandToSimType( newCommand );
1315 
1316  // If it is a new simulation type, open a new plot
1317  if( !plotPanelWindow || ( plotPanelWindow && plotPanelWindow->GetType() != newSimType ) )
1318  {
1319  plotPanelWindow = NewPlotPanel( newSimType );
1320  }
1321 
1322  m_plots[plotPanelWindow].m_simCommand = newCommand;
1323  }
1324 }
void DisplayError(wxWindow *aParent, const wxString &aText, int aDisplayTime)
Display an error or warning message box with aMessage.
Definition: confirm.cpp:239
bool SetSimCommand(const wxString &aCommand)
SIM_PANEL_BASE * NewPlotPanel(SIM_TYPE aSimType)
Creates a new plot panel for a given simulation type and adds it to the main notebook.
std::map< SIM_PANEL_BASE *, PLOT_INFO > m_plots
Map of plot panels and associated data
SIM_PANEL_BASE * m_welcomePanel
Info panel
static SIM_TYPE CommandToSimType(const wxString &aCmd)
Returns simulation type basing on a simulation command directive.
const wxString & GetSimCommand() const
SIM_TYPE
Possible simulation types
Definition: sim_types.h:29
SIM_PANEL_BASE * currentPlotWindow() const
Returns the currently opened plot panel (or NULL if there is none).
void SetNetlistExporter(NETLIST_EXPORTER_PSPICE_SIM *aExporter)
SIM_TYPE GetType() const
DIALOG_SIM_SETTINGS * m_settingsDlg
std::unique_ptr< NETLIST_EXPORTER_PSPICE_SIM > m_exporter
void updateNetlistExporter()
Reloads the current schematic for the netlist exporter.
#define _(s)
Definition: 3d_actions.cpp:33

References _, NETLIST_EXPORTER_PSPICE_SIM::CommandToSimType(), currentPlotWindow(), DisplayError(), DIALOG_SIM_SETTINGS::GetSimCommand(), SIM_PANEL_BASE::GetType(), m_exporter, m_plots, m_settingsDlg, m_welcomePanel, NET_ALL_FLAGS, NewPlotPanel(), DIALOG_SIM_SETTINGS::SetNetlistExporter(), DIALOG_SIM_SETTINGS::SetSimCommand(), DIALOG_SIM_SETTINGS::ShowModal(), and updateNetlistExporter().

Referenced by SIM_PLOT_FRAME().

◆ onShowNetlist()

void SIM_PLOT_FRAME::onShowNetlist ( wxCommandEvent &  event)
private

Definition at line 1361 of file sim_plot_frame.cpp.

1362 {
1363  class NETLIST_VIEW_DIALOG : public wxDialog
1364  {
1365  public:
1366  enum
1367  {
1368  MARGIN_LINE_NUMBERS
1369  };
1370 
1371  void onClose( wxCloseEvent& evt )
1372  {
1373  EndModal( GetReturnCode() );
1374  }
1375 
1376  NETLIST_VIEW_DIALOG(wxWindow* parent, wxString source) :
1377  wxDialog(parent, wxID_ANY, "SPICE Netlist",
1378  wxDefaultPosition, wxSize(1500,900),
1379  wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
1380  {
1381  wxStyledTextCtrl* text = new wxStyledTextCtrl( this, wxID_ANY );
1382 
1383  text->SetMarginWidth( MARGIN_LINE_NUMBERS, 50 );
1384  text->StyleSetForeground( wxSTC_STYLE_LINENUMBER, wxColour( 75, 75, 75 ) );
1385  text->StyleSetBackground( wxSTC_STYLE_LINENUMBER, wxColour( 220, 220, 220 ) );
1386  text->SetMarginType( MARGIN_LINE_NUMBERS, wxSTC_MARGIN_NUMBER );
1387 
1388  text->SetWrapMode( wxSTC_WRAP_WORD );
1389 
1390  text->SetText( source );
1391 
1392  text->StyleClearAll();
1393  text->SetLexer( wxSTC_LEX_SPICE );
1394 
1395  wxBoxSizer* sizer = new wxBoxSizer( wxVERTICAL );
1396  sizer->Add( text, 1, wxEXPAND );
1397  SetSizer( sizer );
1398 
1399  Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( NETLIST_VIEW_DIALOG::onClose ), NULL,
1400  this );
1401  }
1402  };
1403 
1404  if( m_schematicFrame == NULL || m_simulator == NULL )
1405  return;
1406 
1407  NETLIST_VIEW_DIALOG dlg( this, m_simulator->GetNetlist() );
1408  dlg.ShowModal();
1409 }
std::shared_ptr< SPICE_SIMULATOR > m_simulator
SCH_EDIT_FRAME * m_schematicFrame
#define NULL
void onClose(wxCloseEvent &aEvent)

References m_schematicFrame, m_simulator, NULL, and onClose().

Referenced by SIM_PLOT_FRAME().

◆ onSignalDblClick()

void SIM_PLOT_FRAME::onSignalDblClick ( wxMouseEvent &  event)
overrideprivatevirtual

Reimplemented from SIM_PLOT_FRAME_BASE.

Definition at line 1253 of file sim_plot_frame.cpp.

1254 {
1255  // Remove signal from the plot panel when double clicked
1256  long idx = m_signals->GetFocusedItem();
1257 
1258  if( idx != wxNOT_FOUND )
1259  removePlot( m_signals->GetItemText( idx, 0 ) );
1260 }
void removePlot(const wxString &aPlotName, bool aErase=true)
Removes a plot with a specific title.

References SIM_PLOT_FRAME_BASE::m_signals, and removePlot().

◆ onSignalRClick()

void SIM_PLOT_FRAME::onSignalRClick ( wxListEvent &  event)
overrideprivatevirtual

Reimplemented from SIM_PLOT_FRAME_BASE.

Definition at line 1263 of file sim_plot_frame.cpp.

1264 {
1265  int idx = event.GetIndex();
1266 
1267  if( idx != wxNOT_FOUND )
1268  m_signals->Select( idx );
1269 
1270  idx = m_signals->GetFirstSelected();
1271 
1272  if( idx != wxNOT_FOUND )
1273  {
1274  const wxString& netName = m_signals->GetItemText( idx, 0 );
1275  SIGNAL_CONTEXT_MENU ctxMenu( netName, this );
1276  m_signals->PopupMenu( &ctxMenu );
1277  }
1278 }

References SIM_PLOT_FRAME_BASE::m_signals.

◆ onSimFinished()

void SIM_PLOT_FRAME::onSimFinished ( wxCommandEvent &  aEvent)
private

Definition at line 1480 of file sim_plot_frame.cpp.

1481 {
1482  m_toolBar->SetToolNormalBitmap( ID_SIM_RUN, KiBitmap( sim_run_xpm ) );
1483  SetCursor( wxCURSOR_ARROW );
1484 
1485  SIM_TYPE simType = m_exporter->GetSimType();
1486 
1487  if( simType == ST_UNKNOWN )
1488  return;
1489 
1490  SIM_PANEL_BASE* plotPanelWindow = currentPlotWindow();
1491 
1492  if( !plotPanelWindow || plotPanelWindow->GetType() != simType )
1493  plotPanelWindow = NewPlotPanel( simType );
1494 
1495  if( IsSimulationRunning() )
1496  return;
1497 
1498  // If there are any signals plotted, update them
1499  if( SIM_PANEL_BASE::IsPlottable( simType ) )
1500  {
1501  TRACE_MAP& traceMap = m_plots[plotPanelWindow].m_traces;
1502  SIM_PLOT_PANEL* plotPanel = dynamic_cast<SIM_PLOT_PANEL*>( plotPanelWindow );
1503 
1504  wxCHECK_RET( plotPanel, "not a SIM_PLOT_PANEL" );
1505 
1506  for( auto it = traceMap.begin(); it != traceMap.end(); /* iteration occurs in the loop */)
1507  {
1508  if( !updatePlot( it->second, plotPanel ) )
1509  {
1510  removePlot( it->first, false );
1511  it = traceMap.erase( it ); // remove a plot that does not exist anymore
1512  }
1513  else
1514  {
1515  ++it;
1516  }
1517  }
1518 
1519  updateSignalList();
1520  plotPanel->GetPlotWin()->UpdateAll();
1521  plotPanel->ResetScales();
1522  }
1523  else if( simType == ST_OP )
1524  {
1525  m_simConsole->AppendText( _( "\n\nSimulation results:\n\n" ) );
1526  m_simConsole->SetInsertionPointEnd();
1527 
1528  for( const auto& vec : m_simulator->AllPlots() )
1529  {
1530  double val = m_simulator->GetRealPlot( vec, 1 ).at( 0 );
1531 
1532  wxString outLine, signal;
1533  SIM_PLOT_TYPE type = m_exporter->VectorToSignal( vec, signal );
1534 
1535  const size_t tab = 25; //characters
1536  size_t padding = ( signal.length() < tab ) ? ( tab - signal.length() ) : 1;
1537 
1538  outLine.Printf( wxT( "%s%s" ), ( signal + wxT( ":" ) ).Pad( padding, wxUniChar( ' ' ) ),
1539  SPICE_VALUE( val ).ToSpiceString() );
1540 
1541  outLine.Append( type == SPT_CURRENT ? "A\n" : "V\n" );
1542 
1543  m_simConsole->AppendText( outLine );
1544  m_simConsole->SetInsertionPointEnd();
1545 
1546  // @todo display calculated values on the schematic
1547  }
1548  }
1549 }
mpWindow * GetPlotWin() const
Getter for math plot window
SIM_PANEL_BASE * NewPlotPanel(SIM_TYPE aSimType)
Creates a new plot panel for a given simulation type and adds it to the main notebook.
std::map< SIM_PANEL_BASE *, PLOT_INFO > m_plots
Map of plot panels and associated data
std::shared_ptr< SPICE_SIMULATOR > m_simulator
bool updatePlot(const TRACE_DESC &aDescriptor, SIM_PLOT_PANEL *aPanel)
Updates plot in a particular SIM_PLOT_PANEL.
static bool IsPlottable(SIM_TYPE aSimType)
void UpdateAll()
Refresh display.
Definition: mathplot.cpp:2820
wxBitmap KiBitmap(BITMAP_DEF aBitmap)
Construct a wxBitmap from a memory record, held in a BITMAP_DEF.
Definition: bitmap.cpp:80
Helper class to handle Spice way of expressing values (e.g. 10.5 Meg)
Definition: spice_value.h:32
SIM_TYPE
Possible simulation types
Definition: sim_types.h:29
SIM_PANEL_BASE * currentPlotWindow() const
Returns the currently opened plot panel (or NULL if there is none).
void ResetScales()
Resets scale ranges to fit the current traces
bool IsSimulationRunning()
SIM_TYPE GetType() const
std::unique_ptr< NETLIST_EXPORTER_PSPICE_SIM > m_exporter
#define _(s)
Definition: 3d_actions.cpp:33
void updateSignalList()
Updates the list of currently plotted signals.
const BITMAP_OPAQUE sim_run_xpm[1]
Definition: sim_run.cpp:35
std::map< wxString, TRACE_DESC > TRACE_MAP
void removePlot(const wxString &aPlotName, bool aErase=true)
Removes a plot with a specific title.
SIM_PLOT_TYPE
Possible plot types
Definition: sim_types.h:44

References _, currentPlotWindow(), SIM_PLOT_PANEL::GetPlotWin(), SIM_PANEL_BASE::GetType(), ID_SIM_RUN, SIM_PANEL_BASE::IsPlottable(), IsSimulationRunning(), KiBitmap(), m_exporter, m_plots, SIM_PLOT_FRAME_BASE::m_simConsole, m_simulator, SIM_PLOT_FRAME_BASE::m_toolBar, NewPlotPanel(), removePlot(), SIM_PLOT_PANEL::ResetScales(), sim_run_xpm, SPT_CURRENT, ST_OP, ST_UNKNOWN, mpWindow::UpdateAll(), updatePlot(), and updateSignalList().

Referenced by SIM_PLOT_FRAME().

◆ onSimReport()

void SIM_PLOT_FRAME::onSimReport ( wxCommandEvent &  aEvent)
private

Definition at line 1574 of file sim_plot_frame.cpp.

1575 {
1576  m_simConsole->AppendText( aEvent.GetString() + "\n" );
1577  m_simConsole->SetInsertionPointEnd();
1578 }

References SIM_PLOT_FRAME_BASE::m_simConsole.

Referenced by SIM_PLOT_FRAME().

◆ onSimStarted()

void SIM_PLOT_FRAME::onSimStarted ( wxCommandEvent &  aEvent)
private

Definition at line 1473 of file sim_plot_frame.cpp.

1474 {
1475  m_toolBar->SetToolNormalBitmap( ID_SIM_RUN, KiBitmap( sim_stop_xpm ) );
1476  SetCursor( wxCURSOR_ARROWWAIT );
1477 }
wxBitmap KiBitmap(BITMAP_DEF aBitmap)
Construct a wxBitmap from a memory record, held in a BITMAP_DEF.
Definition: bitmap.cpp:80
const BITMAP_OPAQUE sim_stop_xpm[1]
Definition: sim_stop.cpp:20

References ID_SIM_RUN, KiBitmap(), SIM_PLOT_FRAME_BASE::m_toolBar, and sim_stop_xpm.

Referenced by SIM_PLOT_FRAME().

◆ onSimulate()

void SIM_PLOT_FRAME::onSimulate ( wxCommandEvent &  event)
private

Definition at line 1281 of file sim_plot_frame.cpp.

1282 {
1283  if( IsSimulationRunning() )
1284  StopSimulation();
1285  else
1286  StartSimulation();
1287 }
void StartSimulation(const wxString &aSimCommand=wxEmptyString)
bool IsSimulationRunning()

References IsSimulationRunning(), StartSimulation(), and StopSimulation().

Referenced by SIM_PLOT_FRAME().

◆ onSimUpdate()

void SIM_PLOT_FRAME::onSimUpdate ( wxCommandEvent &  aEvent)
private

Definition at line 1552 of file sim_plot_frame.cpp.

1553 {
1554  if( IsSimulationRunning() )
1555  StopSimulation();
1556 
1557  if( CurrentPlot() != m_lastSimPlot )
1558  {
1559  // We need to rerun simulation, as the simulator currently stores
1560  // results for another plot
1561  StartSimulation();
1562  }
1563  else
1564  {
1565  // Incremental update
1566  m_simConsole->Clear();
1567  // Do not export netlist, it is already stored in the simulator
1568  applyTuners();
1569  m_simulator->Run();
1570  }
1571 }
void applyTuners()
Applies component values specified using tunder sliders to the current netlist.
std::shared_ptr< SPICE_SIMULATOR > m_simulator
void StartSimulation(const wxString &aSimCommand=wxEmptyString)
SIM_PLOT_PANEL * m_lastSimPlot
Panel that was used as the most recent one for simulations
bool IsSimulationRunning()
SIM_PLOT_PANEL * CurrentPlot() const
Returns the currently opened plot panel (or NULL if there is none).

References applyTuners(), CurrentPlot(), IsSimulationRunning(), m_lastSimPlot, SIM_PLOT_FRAME_BASE::m_simConsole, m_simulator, StartSimulation(), and StopSimulation().

Referenced by SIM_PLOT_FRAME().

◆ onTune()

void SIM_PLOT_FRAME::onTune ( wxCommandEvent &  event)
private

Definition at line 1352 of file sim_plot_frame.cpp.

1353 {
1354  if( m_schematicFrame == NULL )
1355  return;
1356 
1358  m_schematicFrame->Raise();
1359 }
bool RunAction(const std::string &aActionName, bool aNow=false, T aParam=NULL)
Function RunAction() Runs the specified action.
Definition: tool_manager.h:140
SCH_EDIT_FRAME * m_schematicFrame
#define NULL
static TOOL_ACTION simTune
Definition: ee_actions.h:199
TOOL_MANAGER * GetToolManager() const
Return the MVC controller.
Definition: tools_holder.h:74

References TOOLS_HOLDER::GetToolManager(), m_schematicFrame, NULL, TOOL_MANAGER::RunAction(), and EE_ACTIONS::simTune.

Referenced by SIM_PLOT_FRAME().

◆ OpenProjectFiles()

virtual bool KIWAY_PLAYER::OpenProjectFiles ( const std::vector< wxString > &  aFileList,
int  aCtl = 0 
)
inlinevirtualinherited

Function OpenProjectFiles is abstract, and opens 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 implementor 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
bool - true if all requested files were opened OK, else false.

Reimplemented in PCB_EDIT_FRAME, SCH_EDIT_FRAME, FOOTPRINT_EDIT_FRAME, GERBVIEW_FRAME, CVPCB_MAINFRAME, BM2CMP_FRAME, and PL_EDITOR_FRAME.

Definition at line 118 of file kiway_player.h.

119  {
120  // overload me for your wxFrame type.
121 
122  // Any overload should probably do this also:
123  // Prj().MaybeLoadProjectSettings();
124 
125  // Then update the window title.
126 
127  return false;
128  }

Referenced by PCB_EDIT_FRAME::FetchNetlistFromSchematic(), PGM_TEST_FRAME::MacOpenFile(), PGM_SINGLE_TOP::MacOpenFile(), PGM_MOCK_EESCHEMA_FRAME::MacOpenFile(), SCH_EDIT_FRAME::OnOpenPcbnew(), PGM_SINGLE_TOP::OnPgmInit(), SCH_EDIT_FRAME::OnUpdatePCB(), and PCB_EDIT_FRAME::RunEeschema().

◆ ParseArgs()

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

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

139  {
140  WXUNUSED( aParser );
141  }

Referenced by PGM_SINGLE_TOP::OnPgmInit().

◆ 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  GetToolManager()->PostEvent( evt );
88  }
89  }
90  else
92 
93  return;
94  }
95  }
96 }
virtual void DisplayToolMsg(const wxString &msg)
Definition: tools_holder.h:89
TOOL_ACTION * FindAction(const std::string &aActionName) const
Function FindAction() Finds an action with a given name (if there is one available).
TOOL_EVENT.
Definition: tool_event.h:171
TOOL_MANAGER * m_toolManager
Definition: tools_holder.h:48
std::vector< std::string > m_toolStack
Definition: tools_holder.h:52
ACTION_MANAGER * GetActionManager()
Definition: tool_manager.h:194
TOOL_ACTION.
Definition: tool_action.h:46
TOOL_EVENT MakeEvent() const
Function MakeEvent() Returns the event associated with the action (i.e.
Definition: tool_action.h:107
TOOL_MANAGER * GetToolManager() const
Return the MVC controller.
Definition: tools_holder.h:74
void PostEvent(const TOOL_EVENT &aEvent)
Puts an event to the event queue to be processed at the end of event processing cycle.
Definition: tool_manager.h:268
static TOOL_ACTION selectionTool
Definition: actions.h:146
void SetHasPosition(bool aHasPosition)
Definition: tool_event.h:261

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, and TOOL_EVENT::SetHasPosition().

Referenced by SCH_LINE_WIRE_BUS_TOOL::doDrawSegments(), PCB_TOOL_BASE::doInteractiveItemPlacement(), DRAWING_TOOL::drawArc(), DRAWING_TOOL::DrawDimension(), MICROWAVE_TOOL::drawMicrowaveInductor(), DRAWING_TOOL::drawSegment(), LIB_DRAWING_TOOLS::DrawShape(), PL_DRAWING_TOOLS::DrawShape(), SCH_DRAWING_TOOLS::DrawSheet(), DRAWING_TOOL::DrawZone(), PAD_TOOL::EnumeratePads(), ZOOM_TOOL::Main(), PL_EDIT_TOOL::Main(), LIB_MOVE_TOOL::Main(), SCH_MOVE_TOOL::Main(), PCBNEW_PICKER_TOOL::Main(), PICKER_TOOL::Main(), ROUTER_TOOL::MainLoop(), LENGTH_TUNER_TOOL::MainLoop(), PCB_VIEWER_TOOLS::MeasureTool(), GERBVIEW_SELECTION_TOOL::MeasureTool(), EDIT_TOOL::Move(), LIB_DRAWING_TOOLS::PlaceAnchor(), SCH_DRAWING_TOOLS::PlaceComponent(), SCH_DRAWING_TOOLS::PlaceImage(), DRAWING_TOOL::PlaceImportedGraphics(), PL_DRAWING_TOOLS::PlaceItem(), PCB_EDITOR_CONTROL::PlaceModule(), PCB_EDITOR_CONTROL::PlaceTarget(), DRAWING_TOOL::PlaceText(), DRAWING_TOOL::SetAnchor(), SCH_DRAWING_TOOLS::SingleClickPlace(), LIB_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 576 of file eda_base_frame.cpp.

577 {
578  SetStatusText( text );
579 }

◆ Prj()

PROJECT & KIWAY_HOLDER::Prj ( ) const
inherited

Function Prj returns 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
Function Kiway returns a reference to the KIWAY that this object has an opportunity to participate in...
Definition: kiway_holder.h:56
VTBL_ENTRY PROJECT & Prj() const
Function Prj returns the PROJECT associated with this KIWAY.
Definition: kiway.cpp:172

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

Referenced by PCB_BASE_EDIT_FRAME::AddLibrary(), LIB_MANAGER::addLibrary(), SCH_EDIT_FRAME::AppendSchematic(), PCB_EDIT_FRAME::ArchiveModulesOnBoard(), DIALOG_SYMBOL_REMAP::backupProject(), CVPCB_MAINFRAME::buildEquivalenceList(), CVPCB_MAINFRAME::BuildLIBRARY_LISTBOX(), DIALOG_FOOTPRINT_FP_EDITOR::Cfg3DPath(), DIALOG_FOOTPRINT_BOARD_EDITOR::Cfg3DPath(), DIALOG_GEN_FOOTPRINT_POSITION::CreateGerberFiles(), PCB_BASE_EDIT_FRAME::CreateNewLibrary(), DIALOG_PLOT_SCHEMATIC::createPlotFileName(), DIALOG_SYMBOL_REMAP::createProjectSymbolLibTable(), SCH_EDIT_FRAME::CreateScreens(), FOOTPRINT_EDIT_FRAME::DeleteModuleFromLibrary(), DIALOG_BOARD_SETUP::DIALOG_BOARD_SETUP(), DIALOG_BOARD_STATISTICS::DIALOG_BOARD_STATISTICS(), DIALOG_CHOOSE_COMPONENT::DIALOG_CHOOSE_COMPONENT(), DIALOG_CHOOSE_FOOTPRINT::DIALOG_CHOOSE_FOOTPRINT(), DIALOG_CONFIG_EQUFILES::DIALOG_CONFIG_EQUFILES(), DIALOG_FOOTPRINT_BOARD_EDITOR::DIALOG_FOOTPRINT_BOARD_EDITOR(), DIALOG_FOOTPRINT_FP_EDITOR::DIALOG_FOOTPRINT_FP_EDITOR(), DIALOG_PAGES_SETTINGS::DIALOG_PAGES_SETTINGS(), DIALOG_SCHEMATIC_SETUP::DIALOG_SCHEMATIC_SETUP(), DIALOG_SYMBOL_REMAP::DIALOG_SYMBOL_REMAP(), LIB_VIEW_FRAME::DisplayLibInfos(), CVPCB_MAINFRAME::DisplayStatus(), PL_DRAW_PANEL_GAL::DisplayWorksheet(), PCB_EDIT_FRAME::doAutoSave(), FIELDS_GRID_TRICKS::doPopupSelection(), FIELDS_EDITOR_GRID_TRICKS::doPopupSelection(), KICAD_MANAGER_CONTROL::Execute(), PCB_EDIT_FRAME::Export_IDF3(), DIALOG_EXPORT_SVG::ExportSVGFile(), LIB_CONTROL::ExportSymbolAsSVG(), LIB_CONTROL::ExportView(), PCB_EDIT_FRAME::ExportVRML_File(), PCB_EDIT_FRAME::Files_io_from_id(), PCB_EDIT_FRAME::GenD356File(), DIALOG_GENDRILL::GenDrillAndMapFiles(), FOOTPRINT_VIEWER_FRAME::getCurFootprintName(), LIB_EDIT_FRAME::GetCurLib(), FOOTPRINT_VIEWER_FRAME::getCurNickname(), SCH_BASE_FRAME::GetLibPart(), DIALOG_SYMBOL_REMAP::getLibsNotInGlobalSymbolLibTable(), DISPLAY_FOOTPRINTS_FRAME::GetModule(), KICAD_MANAGER_FRAME::GetProjectFileName(), LIB_VIEW_FRAME::GetSelectedSymbol(), FP_THREAD_IFACE::GetTable(), PCB_EDIT_FRAME::importFile(), SCH_EDIT_FRAME::importFile(), SCH_EDITOR_CONTROL::ImportFPAssignments(), DIALOG_CONFIG_EQUFILES::Init(), FOOTPRINT_EDIT_FRAME::initLibraryTree(), LIB_EDIT_FRAME::KiwayMailIn(), EDA_DRAW_FRAME::LibraryFileBrowser(), LIB_EDIT_FRAME::LoadComponentFromCurrentLib(), CVPCB_MAINFRAME::LoadFootprintFiles(), DIALOG_SPICE_MODEL::loadLibrary(), LIB_EDIT_FRAME::LoadOneSymbol(), KICAD_MANAGER_FRAME::LoadProject(), SCH_EDIT_FRAME::LoadProject(), SCH_EDIT_FRAME::LoadProjectSettings(), PCB_EDIT_FRAME::LoadProjectSettings(), DRC::LoadRules(), SCH_EDIT_FRAME::LoadSheetFromFile(), DIALOG_FOOTPRINT_FP_EDITOR::On3DModelCellChanged(), DIALOG_FOOTPRINT_BOARD_EDITOR::On3DModelCellChanged(), FOOTPRINT_VIEWER_FRAME::OnActivate(), DIALOG_FOOTPRINT_FP_EDITOR::OnAdd3DModel(), DIALOG_FOOTPRINT_BOARD_EDITOR::OnAdd3DModel(), KICAD_MANAGER_FRAME::OnBrowseInFileExplorer(), TEXT_BUTTON_URL::OnButtonClick(), TEXT_BUTTON_FILE_BROWSER::OnButtonClick(), DIALOG_EDIT_COMPONENTS_LIBID::onClickOrphansButton(), SCH_EDIT_FRAME::OnCloseWindow(), DIALOG_GENDRILL::OnGenReportFile(), SCH_EDIT_FRAME::OnImportProject(), DIALOG_CHOOSE_COMPONENT::OnInitDialog(), DIALOG_CONFIG_EQUFILES::OnOkClick(), SCH_EDIT_FRAME::OnOpenCvpcb(), KICAD_MANAGER_FRAME::OnOpenFileInTextEditor(), DIALOG_NETLIST::OnOpenNetlistClick(), SCH_EDIT_FRAME::OnOpenPcbnew(), DIALOG_EXPORT_SVG::OnOutputDirectoryBrowseClicked(), DIALOG_PLOT::OnOutputDirectoryBrowseClicked(), DIALOG_PLOT_SCHEMATIC::OnOutputDirectoryBrowseClicked(), DIALOG_GEN_FOOTPRINT_POSITION::OnOutputDirectoryBrowseClicked(), DIALOG_GENDRILL::OnOutputDirectoryBrowseClicked(), DIALOG_SYMBOL_REMAP::OnRemapSymbols(), DIALOG_BOM::OnRunGenerator(), FOOTPRINT_EDIT_FRAME::OnSaveFootprintAsPng(), DIALOG_ERC::OnSaveReport(), DIALOG_DRC::OnSaveReport(), PROPERTIES_FRAME::onScintillaCharAdded(), DIALOG_LABEL_EDITOR::onScintillaCharAdded(), DIALOG_SCH_EDIT_ONE_FIELD::onScintillaCharAdded(), DIALOG_SPICE_MODEL::onSelectLibrary(), LIB_VIEW_FRAME::OnSelectSymbol(), KICAD_MANAGER_FRAME::OnUnarchiveFiles(), SCH_EDIT_FRAME::OnUpdatePCB(), SCH_EDIT_FRAME::OpenProjectFiles(), PCB_EDIT_FRAME::OpenProjectFiles(), PANEL_PREV_3D::PANEL_PREV_3D(), SCH_EDITOR_CONTROL::Paste(), FOOTPRINT_EDITOR_TOOLS::PasteFootprint(), PCB_BASE_EDIT_FRAME::PCB_BASE_EDIT_FRAME(), DIALOG_PLOT::Plot(), DIALOG_PLOT_SCHEMATIC::Plot_1_Page_HPGL(), DIALOG_PLOT_SCHEMATIC::PlotOneSheetDXF(), DIALOG_CHOOSE_COMPONENT::PopulateFootprintSelector(), SCH_EDITOR_CONTROL::Print(), SCH_EDIT_FRAME::PrintPage(), EDA_DRAW_FRAME::PrintWorkSheet(), CVPCB_MAINFRAME::ReadNetListAndFpFiles(), PCB_EDIT_FRAME::RecreateCmpFileFromBoard(), FOOTPRINT_VIEWER_FRAME::ReCreateFootprintList(), FOOTPRINT_VIEWER_FRAME::ReCreateLibraryList(), LIB_VIEW_FRAME::ReCreateListCmp(), LIB_VIEW_FRAME::ReCreateListLib(), EDA_3D_VIEWER::ReloadRequest(), DIALOG_SYMBOL_REMAP::remapSymbolToLibTable(), SCH_EDITOR_CONTROL::RescueLegacyProject(), SCH_EDITOR_CONTROL::RescueSymbolLibTableProject(), FOOTPRINT_EDIT_FRAME::restoreLastFootprint(), FOOTPRINT_EDIT_FRAME::retainLastFootprint(), DIALOG_EDIT_COMPONENTS_LIBID::revertChanges(), SCH_EDIT_FRAME::SaveEEFile(), FOOTPRINT_EDIT_FRAME::SaveFootprint(), FOOTPRINT_EDIT_FRAME::SaveFootprintAs(), FOOTPRINT_EDIT_FRAME::SaveFootprintInLibrary(), LIB_EDIT_FRAME::saveLibrary(), LIB_EDIT_FRAME::SaveOneSymbol(), LIB_EDIT_FRAME::savePartAs(), PCB_EDIT_FRAME::SavePcbFile(), SCH_EDIT_FRAME::SaveProject(), PCB_EDIT_FRAME::SaveProjectSettings(), DIALOG_BOARD_STATISTICS::saveReportClicked(), SCH_BASE_FRAME::saveSymbolLibTables(), FOOTPRINT_VIEWER_FRAME::SelectAndViewFootprint(), SCH_BASE_FRAME::SelectCompFromLibTree(), PCB_BASE_FRAME::SelectLibrary(), LIB_EDIT_FRAME::SelectLibraryFromList(), LIB_EDIT_FRAME::selectSymLibTable(), FOOTPRINT_VIEWER_FRAME::setCurFootprintName(), LIB_EDIT_FRAME::SetCurLib(), FOOTPRINT_VIEWER_FRAME::setCurNickname(), LIB_EDIT_FRAME::SetCurPart(), GERBVIEW_FRAME::SetPageSettings(), EE_INSPECTION_TOOL::ShowDatasheet(), DIALOG_CHOOSE_COMPONENT::ShowFootprintFor(), COMMON_CONTROL::ShowHelp(), LIB_VIEW_FRAME::ShowModal(), FOOTPRINT_VIEWER_FRAME::ShowModal(), SIM_PLOT_FRAME(), LIB_MANAGER::symTable(), SYMBOL_TREE_SYNCHRONIZING_ADAPTER::Sync(), FOOTPRINT_EDIT_FRAME::SyncLibraryTree(), EDA_3D_VIEWER::takeScreenshot(), PANEL_SETUP_RULES::TransferDataFromWindow(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::TransferDataFromWindow(), NETLIST_DIALOG::TransferDataFromWindow(), DIALOG_EDIT_COMPONENTS_LIBID::TransferDataFromWindow(), PANEL_SETUP_RULES::TransferDataToWindow(), DIALOG_FOOTPRINT_FP_EDITOR::TransferDataToWindow(), DIALOG_FOOTPRINT_BOARD_EDITOR::TransferDataToWindow(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::UpdateFieldsFromLibrary(), DIALOG_PAGES_SETTINGS::UpdatePageLayoutExample(), FOOTPRINT_VIEWER_FRAME::UpdateTitle(), FOOTPRINT_EDIT_FRAME::updateTitle(), SCH_EDIT_FRAME::UpdateTitle(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::Validate(), SCH_EDIT_FRAME::WriteNetListFile(), DIALOG_FOOTPRINT_BOARD_EDITOR::~DIALOG_FOOTPRINT_BOARD_EDITOR(), DIALOG_FOOTPRINT_FP_EDITOR::~DIALOG_FOOTPRINT_FP_EDITOR(), and PCB_BASE_EDIT_FRAME::~PCB_BASE_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 203 of file eda_base_frame.cpp.

204 {
205 #ifdef __WXMAC__
206  // Apple in its infinite wisdom will raise a disabled window before even passing
207  // us the event, so we have no way to stop it. Instead, we have to catch an
208  // improperly ordered disabled window and quasi-modal dialog here and reorder
209  // them.
210  if( !IsEnabled() && IsActive() )
211  {
212  wxWindow* dlg = findQuasiModalDialog();
213  if( dlg )
214  dlg->Raise();
215  }
216 #endif
217 
218  if( !wxFrame::ProcessEvent( aEvent ) )
219  return false;
220 
221  if( IsShown() && m_hasAutoSave && IsActive() &&
223  {
224  if( !m_autoSaveState )
225  {
226  wxLogTrace( traceAutoSave, wxT( "Starting auto save timer." ) );
227  m_autoSaveTimer->Start( m_autoSaveInterval * 1000, wxTIMER_ONE_SHOT );
228  m_autoSaveState = true;
229  }
230  else if( m_autoSaveTimer->IsRunning() )
231  {
232  wxLogTrace( traceAutoSave, wxT( "Stopping auto save timer." ) );
233  m_autoSaveTimer->Stop();
234  m_autoSaveState = false;
235  }
236  }
237 
238  return true;
239 }
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(), LIB_VIEW_FRAME::onSelectNextSymbol(), LIB_VIEW_FRAME::onSelectPreviousSymbol(), KIWAY::ProcessEvent(), and LIB_VIEW_FRAME::ReCreateListCmp().

◆ 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:89
TOOL_ACTION * FindAction(const std::string &aActionName) const
Function FindAction() Finds an action with a given name (if there is one available).
wxString GetLabel() const
Definition: tool_action.cpp:69
TOOL_MANAGER * m_toolManager
Definition: tools_holder.h:48
std::vector< std::string > m_toolStack
Definition: tools_holder.h:52
ACTION_MANAGER * GetActionManager()
Definition: tool_manager.h:194
TOOL_ACTION.
Definition: tool_action.h:46

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

Referenced by PCB_TOOL_BASE::doInteractiveItemPlacement(), DRAWING_TOOL::DrawArc(), DRAWING_TOOL::DrawCircle(), DRAWING_TOOL::DrawDimension(), DRAWING_TOOL::DrawLine(), MICROWAVE_TOOL::drawMicrowaveInductor(), DRAWING_TOOL::DrawRectangle(), SCH_LINE_WIRE_BUS_TOOL::DrawSegments(), LIB_DRAWING_TOOLS::DrawShape(), PL_DRAWING_TOOLS::DrawShape(), SCH_DRAWING_TOOLS::DrawSheet(), DRAWING_TOOL::DrawZone(), PAD_TOOL::EnumeratePads(), ZOOM_TOOL::Main(), PL_EDIT_TOOL::Main(), LIB_MOVE_TOOL::Main(), SCH_MOVE_TOOL::Main(), PCBNEW_PICKER_TOOL::Main(), PICKER_TOOL::Main(), ROUTER_TOOL::MainLoop(), LENGTH_TUNER_TOOL::MainLoop(), PCB_VIEWER_TOOLS::MeasureTool(), GERBVIEW_SELECTION_TOOL::MeasureTool(), EDIT_TOOL::Move(), LIB_DRAWING_TOOLS::PlaceAnchor(), SCH_DRAWING_TOOLS::PlaceComponent(), SCH_DRAWING_TOOLS::PlaceImage(), DRAWING_TOOL::PlaceImportedGraphics(), PL_DRAWING_TOOLS::PlaceItem(), PCB_EDITOR_CONTROL::PlaceModule(), PCB_EDITOR_CONTROL::PlaceTarget(), DRAWING_TOOL::PlaceText(), DRAWING_TOOL::SetAnchor(), SCH_DRAWING_TOOLS::SingleClickPlace(), LIB_DRAWING_TOOLS::TwoClickPlace(), SCH_DRAWING_TOOLS::TwoClickPlace(), and SCH_LINE_WIRE_BUS_TOOL::UnfoldBus().

◆ ReCreateMenuBar()

◆ RefreshCanvas()

virtual void TOOLS_HOLDER::RefreshCanvas ( )
inlinevirtualinherited

Reimplemented in EDA_DRAW_FRAME.

Definition at line 119 of file tools_holder.h.

119 { }

Referenced by TOOL_MANAGER::ProcessEvent().

◆ removePlot()

void SIM_PLOT_FRAME::removePlot ( const wxString &  aPlotName,
bool  aErase = true 
)
private

Removes a plot with a specific title.

Parameters
aPlotNameis the full plot title (e.g. I(Net-C1-Pad1)).
aErasedecides if plot should be removed from corresponding TRACE_MAP (see m_plots).

Definition at line 649 of file sim_plot_frame.cpp.

650 {
651  SIM_PLOT_PANEL* plotPanel = CurrentPlot();
652 
653  if( !plotPanel )
654  return;
655 
656  if( aErase )
657  {
658  auto& traceMap = m_plots[plotPanel].m_traces;
659  auto traceIt = traceMap.find( aPlotName );
660  wxASSERT( traceIt != traceMap.end() );
661  traceMap.erase( traceIt );
662  }
663 
664  wxASSERT( plotPanel->TraceShown( aPlotName ) );
665  plotPanel->DeleteTrace( aPlotName );
666  plotPanel->GetPlotWin()->Fit();
667 
669  wxCommandEvent dummy;
671 }
mpWindow * GetPlotWin() const
Getter for math plot window
std::map< SIM_PANEL_BASE *, PLOT_INFO > m_plots
Map of plot panels and associated data
bool DeleteTrace(const wxString &aName)
void onCursorUpdate(wxCommandEvent &aEvent)
void Fit() override
Set view to fit global bounding box of all plot layers and refresh display.
Definition: mathplot.cpp:1998
static LIB_PART * dummy()
Used to draw a dummy shape when a LIB_PART is not found in library.
void updateSignalList()
Updates the list of currently plotted signals.
SIM_PLOT_PANEL * CurrentPlot() const
Returns the currently opened plot panel (or NULL if there is none).
bool TraceShown(const wxString &aName) const

References CurrentPlot(), SIM_PLOT_PANEL::DeleteTrace(), dummy(), mpWindow::Fit(), SIM_PLOT_PANEL::GetPlotWin(), m_plots, onCursorUpdate(), SIM_PLOT_PANEL::TraceShown(), and updateSignalList().

Referenced by onSignalDblClick(), and onSimFinished().

◆ RemoveShutdownBlockReason()

void EDA_BASE_FRAME::RemoveShutdownBlockReason ( )
inherited

Removes any shutdown block reason set.

Definition at line 176 of file eda_base_frame.cpp.

177 {
178 #if defined( _WIN32 )
179  // Windows: Destroys any block reason that may have existed
180  ShutdownBlockReasonDestroy( GetHandle() );
181 #endif
182 }

Referenced by EDA_BASE_FRAME::~EDA_BASE_FRAME().

◆ RemoveTuner()

void SIM_PLOT_FRAME::RemoveTuner ( TUNER_SLIDER aTuner,
bool  aErase = true 
)

Removes an existing tuner.

Parameters
aTuneris the tuner to be removed.
aErasedecides whether the tuner should be also removed from the tuners list. Otherwise it is removed only from the SIM_PLOT_FRAME pane.

Definition at line 567 of file sim_plot_frame.cpp.

568 {
569  if( aErase )
570  m_tuners.remove( aTuner );
571 
572  aTuner->Destroy();
573  m_tunePanel->Layout();
574 }
std::list< TUNER_SLIDER * > m_tuners
List of currently displayed tuners

References SIM_PLOT_FRAME_BASE::m_tunePanel, and m_tuners.

Referenced by TUNER_SLIDER::onClose(), and updateTuners().

◆ SaveProjectSettings()

virtual void EDA_BASE_FRAME::SaveProjectSettings ( )
inlinevirtualinherited

Save changes to the project settings to the project (.pro) file.

The method is virtual so you can override it to call the suitable save method. The base method do nothing

Parameters
aAskForSave= true to open a dialog before saving the settings

Reimplemented in PCB_EDIT_FRAME, and SCH_EDIT_FRAME.

Definition at line 350 of file eda_base_frame.h.

350 {};

Referenced by DIALOG_PAGES_SETTINGS::OnOkClick().

◆ SaveSettings()

void SIM_PLOT_FRAME::SaveSettings ( APP_SETTINGS_BASE aCfg)
overridevirtual

Saves common frame parameters to a configuration data file.

Don't forget to call the base class's SaveSettings() from your derived SaveSettings() otherwise the frames won't remember their positions and sizes.

Reimplemented from EDA_BASE_FRAME.

Definition at line 242 of file sim_plot_frame.cpp.

243 {
244  auto cfg = dynamic_cast<EESCHEMA_SETTINGS*>( aCfg );
245  wxASSERT( cfg );
246 
247  if( cfg )
248  {
250 
251  cfg->m_Simulator.plot_panel_width = m_splitterLeftRight->GetSashPosition();
252  cfg->m_Simulator.plot_panel_height = m_splitterPlotAndConsole->GetSashPosition();
253  cfg->m_Simulator.signal_panel_height = m_splitterSignals->GetSashPosition();
254  cfg->m_Simulator.cursors_panel_height = m_splitterTuneValues->GetSashPosition();
255  cfg->m_Simulator.white_background = m_plotUseWhiteBg;
256  }
257 }
virtual void SaveSettings(APP_SETTINGS_BASE *aCfg)
Saves common frame parameters to a configuration data file.
wxSplitterWindow * m_splitterSignals
wxSplitterWindow * m_splitterTuneValues
wxSplitterWindow * m_splitterLeftRight
wxSplitterWindow * m_splitterPlotAndConsole

References m_plotUseWhiteBg, SIM_PLOT_FRAME_BASE::m_splitterLeftRight, SIM_PLOT_FRAME_BASE::m_splitterPlotAndConsole, SIM_PLOT_FRAME_BASE::m_splitterSignals, SIM_PLOT_FRAME_BASE::m_splitterTuneValues, and EDA_BASE_FRAME::SaveSettings().

Referenced by onClose().

◆ SaveWindowSettings()

void EDA_BASE_FRAME::SaveWindowSettings ( WINDOW_SETTINGS aCfg)
inherited

Saves window settings to the given settings object Normally called by SaveSettings unless the window in question is a child window that stores its settings somewhere other than APP_SETTINGS_BASE::m_Window.

Definition at line 475 of file eda_base_frame.cpp.

476 {
477  wxString text;
478 
479  if( IsIconized() )
480  return;
481 
482  wxString baseCfgName = ConfigBaseName();
483 
484  // If the window is maximized, we use the saved window size from before it was maximized
485  if( IsMaximized() )
486  {
489  }
490  else
491  {
493  m_FramePos = GetPosition();
494  }
495 
496  aCfg->pos_x = m_FramePos.x;
497  aCfg->pos_y = m_FramePos.y;
498  aCfg->size_x = m_FrameSize.x;
499  aCfg->size_y = m_FrameSize.y;
500  aCfg->maximized = IsMaximized();
501 
502  wxLogTrace( traceDisplayLocation, "Saving window maximized: %s", IsMaximized() ? "true" : "false" );
503  wxLogTrace( traceDisplayLocation, "Saving config position (%d, %d) with size (%d, %d)",
505 
506  // TODO(JE) should auto-save in common settings be overwritten by every app?
507  if( m_hasAutoSave )
508  Pgm().GetCommonSettings()->m_System.autosave_interval = m_autoSaveInterval;
509 
510  // Once this is fully implemented, wxAuiManager will be used to maintain
511  // the persistance of the main frame and all it's managed windows and
512  // all of the legacy frame persistence position code can be removed.
513  aCfg->perspective = m_auimgr.SavePerspective().ToStdString();
514 
515  aCfg->mru_path = m_mruPath;
516 }
wxString mru_path
Definition: app_settings.h:71
KIWAY Kiway & Pgm(), KFCTL_STANDALONE
The global Program "get" accessor.
Definition: single_top.cpp:104
wxString m_mruPath
const wxChar *const traceDisplayLocation
Flag to enable debug output of display positioning logic.
wxAuiManager m_auimgr
wxSize m_NormalFrameSize
wxString perspective
Definition: app_settings.h:74
wxSize GetWindowSize()
Get the undecorated window size that can be used for restoring the window size.
wxString ConfigBaseName() override
wxPoint m_NormalFramePos

References EDA_BASE_FRAME::ConfigBaseName(), EDA_BASE_FRAME::GetWindowSize(), EDA_BASE_FRAME::m_auimgr, EDA_BASE_FRAME::m_autoSaveInterval, EDA_BASE_FRAME::m_FramePos, EDA_BASE_FRAME::m_FrameSize, EDA_BASE_FRAME::m_hasAutoSave, EDA_BASE_FRAME::m_mruPath, EDA_BASE_FRAME::m_NormalFramePos, EDA_BASE_FRAME::m_NormalFrameSize, WINDOW_SETTINGS::maximized, WINDOW_SETTINGS::mru_path, WINDOW_SETTINGS::perspective, Pgm(), WINDOW_SETTINGS::pos_x, WINDOW_SETTINGS::pos_y, WINDOW_SETTINGS::size_x, WINDOW_SETTINGS::size_y, traceDisplayLocation, wxPoint::x, and wxPoint::y.

Referenced by EDA_BASE_FRAME::SaveSettings().

◆ saveWorkbook()

bool SIM_PLOT_FRAME::saveWorkbook ( const wxString &  aPath)
private

Saves plot settings to a file.

Parameters
aPathis the file name.
Returns
True if successful.

Definition at line 958 of file sim_plot_frame.cpp.

959 {
960 
961  wxString savePath = aPath;
962 
963  if( !savePath.Lower().EndsWith(".wbk"))
964  {
965  savePath += ".wbk";
966  };
967 
968 
969  wxTextFile file( savePath );
970 
971  if( file.Exists() )
972  {
973  if( !file.Open() )
974  return false;
975 
976  file.Clear();
977  }
978  else
979  {
980  file.Create();
981  }
982 
983  file.AddLine( wxString::Format( "%llu", m_plots.size() ) );
984 
985  for( const auto& plot : m_plots )
986  {
987  if( plot.first )
988  {
989  file.AddLine( wxString::Format( "%d", plot.first->GetType() ) );
990  file.AddLine( plot.second.m_simCommand );
991  file.AddLine( wxString::Format( "%llu", plot.second.m_traces.size() ) );
992 
993  for( const auto& trace : plot.second.m_traces )
994  {
995  file.AddLine( wxString::Format( "%d", trace.second.GetType() ) );
996  file.AddLine( trace.second.GetName() );
997  file.AddLine( trace.second.GetParam() );
998  }
999  }
1000  }
1001 
1002  bool res = file.Write();
1003  file.Close();
1004 
1005  return res;
1006 }
std::map< SIM_PANEL_BASE *, PLOT_INFO > m_plots
Map of plot panels and associated data
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, CPTREE &aTree)
Function Format outputs a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:205

References Format(), and m_plots.

Referenced by menuSaveWorkbook().

◆ SetAutoSaveInterval()

void EDA_BASE_FRAME::SetAutoSaveInterval ( int  aInterval)
inherited

Definition at line 242 of file eda_base_frame.cpp.

243 {
244  m_autoSaveInterval = aInterval;
245 
246  if( m_autoSaveTimer->IsRunning() )
247  {
248  if( m_autoSaveInterval > 0 )
249  {
250  m_autoSaveTimer->Start( m_autoSaveInterval * 1000, wxTIMER_ONE_SHOT );
251  }
252  else
253  {
254  m_autoSaveTimer->Stop();
255  m_autoSaveState = false;
256  }
257  }
258 }
wxTimer * m_autoSaveTimer

References EDA_BASE_FRAME::m_autoSaveInterval, EDA_BASE_FRAME::m_autoSaveState, and EDA_BASE_FRAME::m_autoSaveTimer.

Referenced by EDA_DRAW_FRAME::CommonSettingsChanged().

◆ setIconsForMenuItems()

void SIM_PLOT_FRAME::setIconsForMenuItems ( )
private

Give icons to menuitems of the main menubar.

Definition at line 296 of file sim_plot_frame.cpp.

297 {
298  // Give icons to menuitems of the main menubar
299  BM_MENU_INIT_ITEM bm_list[]
300  {
301  // File menu:
302  { wxID_NEW, simulator_xpm },
303  { wxID_OPEN,directory_browser_xpm },
304  { wxID_SAVE, directory_xpm},
307  { wxID_CLOSE, exit_xpm},
308 
309  // simulator menu:
316 
317  // View menu
318  { wxID_ZOOM_IN, zoom_in_xpm},
319  { wxID_ZOOM_OUT, zoom_out_xpm},
320  { wxID_ZOOM_FIT, zoom_fit_in_page_xpm},
325 
326  { 0, nullptr } // Sentinel
327  };
328 
329  // wxMenuItems are already created and attached to the m_mainMenu wxMenuBar.
330  // A problem is the fact setting bitmaps in wxMenuItems after they are attached
331  // to a wxMenu do not work in all cases.
332  // So the trick is:
333  // Remove the wxMenuItem from its wxMenu
334  // Set the bitmap
335  // Insert the modified wxMenuItem to its previous place
336  for( int ii = 0; bm_list[ii].m_MenuId; ++ii )
337  {
338  wxMenuItem* item = m_mainMenu->FindItem( bm_list[ii].m_MenuId );
339 
340  if( !item || !bm_list[ii].m_Bitmap)
341  continue;
342 
343  wxMenu* menu = item->GetMenu();
344  // Calculate the initial index of item inside the wxMenu parent
345  wxMenuItemList& mlist = menu->GetMenuItems();
346  int mpos = mlist.IndexOf( item );
347 
348  if( mpos >= 0 ) // Should be always the case
349  {
350  // Modify the bitmap
351  menu->Remove( item );
352  AddBitmapToMenuItem( item, KiBitmap( bm_list[ii].m_Bitmap ) );
353  // Insert item to its the initial index
354  menu->Insert( mpos, item );
355  }
356  }
357 }
const BITMAP_OPAQUE simulator_xpm[1]
Definition: simulator.cpp:52
#define ID_MENU_PROBE_SIGNALS
const BITMAP_OPAQUE swap_layer_xpm[1]
Definition: swap_layer.cpp:33
#define ID_SAVE_AS_IMAGE
const BITMAP_OPAQUE add_dashed_line_xpm[1]
const BITMAP_OPAQUE directory_browser_xpm[1]
const BITMAP_OPAQUE text_xpm[1]
Definition: text.cpp:27
const BITMAP_OPAQUE zoom_fit_in_page_xpm[1]
#define ID_MENU_WHITE_BG
#define ID_SAVE_AS_CSV
const BITMAP_OPAQUE zoom_out_xpm[1]
Definition: zoom_out.cpp:58
wxBitmap KiBitmap(BITMAP_DEF aBitmap)
Construct a wxBitmap from a memory record, held in a BITMAP_DEF.
Definition: bitmap.cpp:80
const BITMAP_OPAQUE sim_add_signal_xpm[1]
void AddBitmapToMenuItem(wxMenuItem *aMenu, const wxBitmap &aImage)
Add a bitmap to a menuitem.
Definition: bitmap.cpp:205
#define ID_MENU_SHOW_NETLIST
#define ID_MENU_TUNE_SIGNALS
const BITMAP_OPAQUE exit_xpm[1]
Definition: exit.cpp:63
const BITMAP_OPAQUE grid_xpm[1]
Definition: grid.cpp:21
const BITMAP_OPAQUE export_xpm[1]
Definition: export.cpp:75
#define ID_MENU_SHOW_LEGEND
#define ID_MENU_SET_SIMUL
const BITMAP_OPAQUE directory_xpm[1]
Definition: directory.cpp:30
const BITMAP_OPAQUE sim_probe_xpm[1]
Definition: sim_probe.cpp:52
#define ID_MENU_ADD_SIGNAL
const BITMAP_OPAQUE sim_tune_xpm[1]
Definition: sim_tune.cpp:39
#define ID_MENU_SHOW_GRID
#define ID_MENU_DOTTED
const BITMAP_OPAQUE netlist_xpm[1]
const BITMAP_OPAQUE sim_run_xpm[1]
Definition: sim_run.cpp:35
const BITMAP_OPAQUE sim_settings_xpm[1]
#define ID_MENU_RUN_SIM
const BITMAP_OPAQUE zoom_in_xpm[1]
Definition: zoom_in.cpp:59

References add_dashed_line_xpm, AddBitmapToMenuItem(), directory_browser_xpm, directory_xpm, exit_xpm, export_xpm, grid_xpm, ID_MENU_ADD_SIGNAL, ID_MENU_DOTTED, ID_MENU_PROBE_SIGNALS, ID_MENU_RUN_SIM, ID_MENU_SET_SIMUL, ID_MENU_SHOW_GRID, ID_MENU_SHOW_LEGEND, ID_MENU_SHOW_NETLIST, ID_MENU_TUNE_SIGNALS, ID_MENU_WHITE_BG, ID_SAVE_AS_CSV, ID_SAVE_AS_IMAGE, KiBitmap(), SIM_PLOT_FRAME_BASE::m_mainMenu, netlist_xpm, sim_add_signal_xpm, sim_probe_xpm, sim_run_xpm, sim_settings_xpm, sim_tune_xpm, simulator_xpm, swap_layer_xpm, text_xpm, zoom_fit_in_page_xpm, zoom_in_xpm, and zoom_out_xpm.

Referenced by SIM_PLOT_FRAME().

◆ SetKiway()

void KIWAY_HOLDER::SetKiway ( wxWindow *  aDest,
KIWAY aKiway 
)
inherited

Function SetKiway.

Parameters
aDestis the recipient of aKiway pointer. It is only used for debugging, since "this" is not a wxWindow*. "this" is a KIWAY_HOLDER mix-in.
aKiwayis often from a parent window, or from KIFACE::CreateWindow().

Definition at line 42 of file kiway_holder.cpp.

43 {
44 #if defined(DEBUG)
45  // offer a trap point for debugging most any window
46  wxASSERT( aDest );
47  if( !strcmp( typeid(aDest).name(), "DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB" ) )
48  {
49  int breakhere=1;
50  (void) breakhere;
51  }
52 #endif
53 
54  (void) aDest;
55 
56  m_kiway = aKiway;
57 }
KIWAY * m_kiway
Definition: kiway_holder.h:81
const char * name
Definition: DXF_plotter.cpp:60

References KIWAY_HOLDER::m_kiway, and name.

Referenced by BM2CMP_FRAME::BM2CMP_FRAME(), PCB::IFACE::CreateWindow(), InvokePcbLibTableEditor(), PCB_CALCULATOR_FRAME::PCB_CALCULATOR_FRAME(), and SIM_PLOT_FRAME().

◆ SetModal()

void KIWAY_PLAYER::SetModal ( bool  aIsModal)
inlineinherited

Definition at line 177 of file kiway_player.h.

177 { m_modal = aIsModal; }

References KIWAY_PLAYER::m_modal.

Referenced by FOOTPRINT_VIEWER_FRAME::FOOTPRINT_VIEWER_FRAME(), and LIB_VIEW_FRAME::LIB_VIEW_FRAME().

◆ SetMruPath()

void EDA_BASE_FRAME::SetMruPath ( const wxString &  aPath)
inlineinherited

Definition at line 408 of file eda_base_frame.h.

408 { m_mruPath = aPath; }
wxString m_mruPath

References EDA_BASE_FRAME::m_mruPath.

Referenced by PANEL_HOTKEYS_EDITOR::ImportHotKeys(), and KICAD_MANAGER_FRAME::LoadProject().

◆ SetShutdownBlockReason()

void EDA_BASE_FRAME::SetShutdownBlockReason ( const wxString &  reason)
inherited

Sets the block reason why the window/application is preventing OS shutdown.

This should be set far ahead of any close event.

This is mainly intended for Windows platforms where this is a native feature.

Definition at line 185 of file eda_base_frame.cpp.

186 {
187 #if defined( _WIN32 )
188  // Windows: sets up the pretty message on the shutdown page on why it's being "blocked"
189  // This is used in conjunction with handling WM_QUERYENDSESSION (wxCloseEvent)
190  // ShutdownBlockReasonCreate does not block by itself
191 
192  ShutdownBlockReasonDestroy( GetHandle() ); // Destroys any existing or nonexisting reason
193 
194  if( !ShutdownBlockReasonCreate( GetHandle(), aReason.wc_str() ) )
195  {
196  // Nothing bad happens if this fails, at worst it uses a generic application is preventing shutdown message
197  wxLogDebug( wxT( "ShutdownBlockReasonCreate failed to set reason: %s" ), aReason );
198  }
199 #endif
200 }

Referenced by CVPCB_MAINFRAME::CVPCB_MAINFRAME(), PL_EDITOR_FRAME::OnNewPageLayout(), and SCH_EDIT_FRAME::OpenProjectFiles().

◆ setSubWindowsSashSize()

void SIM_PLOT_FRAME::setSubWindowsSashSize ( )
private

Definition at line 360 of file sim_plot_frame.cpp.

361 {
364 
367 
370 
373 }
wxSplitterWindow * m_splitterSignals
int m_splitterPlotAndConsoleSashPosition
wxSplitterWindow * m_splitterTuneValues
wxSplitterWindow * m_splitterLeftRight
int m_splitterTuneValuesSashPosition
int m_splitterSignalsSashPosition
int m_splitterLeftRightSashPosition
wxSplitterWindow * m_splitterPlotAndConsole

References SIM_PLOT_FRAME_BASE::m_splitterLeftRight, m_splitterLeftRightSashPosition, SIM_PLOT_FRAME_BASE::m_splitterPlotAndConsole, m_splitterPlotAndConsoleSashPosition, SIM_PLOT_FRAME_BASE::m_splitterSignals, m_splitterSignalsSashPosition, SIM_PLOT_FRAME_BASE::m_splitterTuneValues, and m_splitterTuneValuesSashPosition.

Referenced by SIM_PLOT_FRAME().

◆ SetUserUnits()

◆ ShowChangedLanguage()

void EDA_BASE_FRAME::ShowChangedLanguage ( )
virtualinherited

◆ ShowModal()

bool KIWAY_PLAYER::ShowModal ( wxString *  aResult = NULL,
wxWindow *  aResultantFocusWindow = NULL 
)
virtualinherited

Function ShowModal puts up this wxFrame as if it were a modal dialog, with all other instantiated wxFrames disabled until this KIWAY_PLAYER derivative calls DismissModal().

That is, behavior is similar to a modal dialog window. Not all KIWAY_PLAYERs use this interface, so don't call this unless the implementation knows how to call DismissModal() on a button click or double click or some special event which ends the modal behavior.

Parameters
aResultif not NULL, indicates a place to put a resultant string.
aResultantFocusWindowif not NULL, indicates what window to pass focus to on return.
Returns
bool - true if frame implementation called KIWAY_PLAYER::DismissModal() with aRetVal of true.

Reimplemented in FOOTPRINT_VIEWER_FRAME, and LIB_VIEW_FRAME.

Definition at line 75 of file kiway_player.cpp.

76 {
77  wxASSERT_MSG( IsModal(), wxT( "ShowModal() shouldn't be called on non-modal frame" ) );
78 
79  /*
80  This function has a nice interface but a necessarily unsightly implementation.
81  Now the implementation is encapsulated, localizing future changes.
82 
83  It works in tandem with DismissModal(). But only ShowModal() is in the
84  vtable and therefore cross-module capable.
85  */
86 
87  // This is an exception safe way to zero a pointer before returning.
88  // Yes, even though DismissModal() clears this first normally, this is
89  // here in case there's an exception before the dialog is dismissed.
90  struct NULLER
91  {
92  void*& m_what;
93  NULLER( void*& aPtr ) : m_what( aPtr ) {}
94  ~NULLER() { m_what = 0; } // indeed, set it to NULL on destruction
95  } clear_this( (void*&) m_modal_loop );
96 
97 
98  m_modal_resultant_parent = aResultantFocusWindow;
99 
100  Show( true );
101  Raise(); // Needed on some Window managers to always display the frame
102 
103  SetFocus();
104 
105  {
106  // We have to disable all frames but the the modal one.
107  // wxWindowDisabler does that, but it also disables all top level windows
108  // We do not want to disable top level windows which are child of the modal one,
109  // if they are enabled.
110  // An example is an aui toolbar which was moved
111  // or a dialog or another frame or miniframe opened by the modal one.
112  wxWindowList wlist = GetChildren();
113  std::vector<wxWindow*> enabledTopLevelWindows;
114 
115  for( unsigned ii = 0; ii < wlist.size(); ii++ )
116  if( wlist[ii]->IsTopLevel() && wlist[ii]->IsEnabled() )
117  enabledTopLevelWindows.push_back( wlist[ii] );
118 
119  // exception safe way to disable all top level windows except the modal one,
120  // re-enables only those that were disabled on exit
121  wxWindowDisabler toggle( this );
122 
123  for( unsigned ii = 0; ii < enabledTopLevelWindows.size(); ii++ )
124  enabledTopLevelWindows[ii]->Enable( true );
125 
126  WX_EVENT_LOOP event_loop;
127  m_modal_loop = &event_loop;
128  event_loop.Run();
129 
130  } // End of scope for some variables.
131  // End nesting before setting focus below.
132 
133  if( aResult )
134  *aResult = m_modal_string;
135 
136  if( aResultantFocusWindow )
137  {
138  aResultantFocusWindow->Raise();
139 
140  // have the final say, after wxWindowDisabler reenables my parent and
141  // the events settle down, set the focus
142  wxSafeYield();
143  aResultantFocusWindow->SetFocus();
144  }
145 
146  return m_modal_ret_val;
147 }
bool m_modal_ret_val
Definition: kiway_player.h:205
#define WX_EVENT_LOOP
Definition: kiway_player.h:41
wxWindow * m_modal_resultant_parent
Definition: kiway_player.h:203
wxString m_modal_string
Definition: kiway_player.h:204
bool IsModal() const
Definition: kiway_player.h:176
WX_EVENT_LOOP * m_modal_loop
Definition: kiway_player.h:202

References KIWAY_PLAYER::IsModal(), KIWAY_PLAYER::m_modal_loop, KIWAY_PLAYER::m_modal_resultant_parent, KIWAY_PLAYER::m_modal_ret_val, KIWAY_PLAYER::m_modal_string, and WX_EVENT_LOOP.

Referenced by FIELDS_GRID_TRICKS::doPopupSelection(), FIELDS_EDITOR_GRID_TRICKS::doPopupSelection(), TEXT_BUTTON_SYMBOL_CHOOSER::OnButtonClick(), TEXT_BUTTON_FP_CHOOSER::OnButtonClick(), DIALOG_EDIT_ONE_FIELD::OnTextValueSelectButtonClick(), LIB_VIEW_FRAME::ShowModal(), FOOTPRINT_VIEWER_FRAME::ShowModal(), and DIALOG_EXCHANGE_FOOTPRINTS::ViewAndSelectFootprint().

◆ StartSimulation()

void SIM_PLOT_FRAME::StartSimulation ( const wxString &  aSimCommand = wxEmptyString)

Definition at line 426 of file sim_plot_frame.cpp.

427 {
428  STRING_FORMATTER formatter;
429 
430  if( !m_settingsDlg )
431  m_settingsDlg = new DIALOG_SIM_SETTINGS( this );
432 
433  m_simConsole->Clear();
435 
436  if( aSimCommand.IsEmpty() )
437  {
438  SIM_PANEL_BASE* plotPanel = currentPlotWindow();
439  if( plotPanel )
440  m_exporter->SetSimCommand( m_plots[plotPanel].m_simCommand );
441  }
442  else
443  {
444  m_exporter->SetSimCommand( aSimCommand );
445  }
446 
447  if( !m_exporter->Format( &formatter, m_settingsDlg->GetNetlistOptions() ) )
448  {
449  DisplayError( this, _( "There were errors during netlist export, aborted." ) );
450  return;
451  }
452 
453  if( m_exporter->GetSimType() == ST_UNKNOWN )
454  {
455  DisplayInfoMessage( this, _( "You need to select the simulation settings first." ) );
456  return;
457  }
458 
459  m_simulator->LoadNetlist( formatter.GetString() );
460  updateTuners();
461  applyTuners();
462  m_simulator->Run();
463 }
void DisplayError(wxWindow *aParent, const wxString &aText, int aDisplayTime)
Display an error or warning message box with aMessage.
Definition: confirm.cpp:239
void applyTuners()
Applies component values specified using tunder sliders to the current netlist.
std::map< SIM_PANEL_BASE *, PLOT_INFO > m_plots
Map of plot panels and associated data
std::shared_ptr< SPICE_SIMULATOR > m_simulator
SIM_PANEL_BASE * currentPlotWindow() const
Returns the currently opened plot panel (or NULL if there is none).
const std::string & GetString()
Definition: richio.h:475
DIALOG_SIM_SETTINGS * m_settingsDlg
std::unique_ptr< NETLIST_EXPORTER_PSPICE_SIM > m_exporter
void updateNetlistExporter()
Reloads the current schematic for the netlist exporter.
#define _(s)
Definition: 3d_actions.cpp:33
void DisplayInfoMessage(wxWindow *aParent, const wxString &aMessage, const wxString &aExtraInfo)
Display an informational message box with aMessage.
Definition: confirm.cpp:267
STRING_FORMATTER implements OUTPUTFORMATTER to a memory buffer.
Definition: richio.h:445
void updateTuners()
Filters out tuners for components that do not exist anymore.

References _, applyTuners(), currentPlotWindow(), DisplayError(), DisplayInfoMessage(), DIALOG_SIM_SETTINGS::GetNetlistOptions(), STRING_FORMATTER::GetString(), m_exporter, m_plots, m_settingsDlg, SIM_PLOT_FRAME_BASE::m_simConsole, m_simulator, ST_UNKNOWN, updateNetlistExporter(), and updateTuners().

Referenced by loadWorkbook(), onSimulate(), and onSimUpdate().

◆ StopSimulation()

void SIM_PLOT_FRAME::StopSimulation ( )

Definition at line 466 of file sim_plot_frame.cpp.

467 {
468  m_simulator->Stop();
469 }
std::shared_ptr< SPICE_SIMULATOR > m_simulator

References m_simulator.

Referenced by onSimulate(), and onSimUpdate().

◆ SupportsShutdownBlockReason()

bool EDA_BASE_FRAME::SupportsShutdownBlockReason ( )
inherited

Whether or not the window supports setting a shutdown block reason.

Definition at line 166 of file eda_base_frame.cpp.

167 {
168 #if defined( _WIN32 )
169  return true;
170 #else
171  return false;
172 #endif
173 }

Referenced by FOOTPRINT_EDIT_FRAME::OnCloseWindow(), PL_EDITOR_FRAME::OnCloseWindow(), SCH_EDIT_FRAME::OnCloseWindow(), CVPCB_MAINFRAME::OnCloseWindow(), LIB_EDIT_FRAME::OnCloseWindow(), and EDA_BASE_FRAME::~EDA_BASE_FRAME().

◆ SyncToolbars()

virtual void EDA_BASE_FRAME::SyncToolbars ( )
inlinevirtualinherited

◆ sys_search()

const SEARCH_STACK & EDA_BASE_FRAME::sys_search ( )
virtualinherited

Return a SEARCH_STACK pertaining to entire program.

This is overloaded in KICAD_MANAGER_FRAME

Reimplemented in KICAD_MANAGER_FRAME.

Definition at line 564 of file eda_base_frame.cpp.

565 {
566  return Kiface().KifaceSearch();
567 }
SEARCH_STACK & KifaceSearch()
Only for DSO specific 'non-library' files.
Definition: kiface_i.h:127
KIFACE_I & Kiface()
Global KIFACE_I "get" accessor.

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

Referenced by COMMON_CONTROL::ShowHelp().

◆ ToggleUserUnits()

virtual void EDA_BASE_FRAME::ToggleUserUnits ( )
inlinevirtualinherited

Reimplemented in EDA_DRAW_FRAME.

Definition at line 221 of file eda_base_frame.h.

221 { }

Referenced by DIALOG_SHIM::OnCharHook().

◆ ToolStackIsEmpty()

◆ unitsChangeRefresh()

virtual void EDA_BASE_FRAME::unitsChangeRefresh ( )
inlineprotectedvirtualinherited

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.

The default version only updates the status bar. Don't forget to call the default in your derived class or the status bar will not get updated properly.

Reimplemented in PCB_BASE_EDIT_FRAME, GERBVIEW_FRAME, EDA_DRAW_FRAME, and PCB_BASE_FRAME.

Definition at line 195 of file eda_base_frame.h.

195 { }

Referenced by EDA_BASE_FRAME::ChangeUserUnits().

◆ UpdateFileHistory()

void EDA_BASE_FRAME::UpdateFileHistory ( const wxString &  FullFileName,