70#include <wx/display.h>
71#include <wx/stdpaths.h>
74#include <wx/wupdlock.h>
93 return wxWindow::FromDIP( wxSize( 406, 354 ), aWindow );
96 return wxWindow::FromDIP( wxSize( 500, 400 ), aWindow );
106 return wxWindow::FromDIP( wxSize( 850, 540 ), aWindow );
109 return wxWindow::FromDIP( wxSize( 1280, 720 ), aWindow );
134 m_ident = aFrameType;
135 m_maximizeByDefault =
false;
137 m_settingsManager =
nullptr;
138 m_fileHistory =
nullptr;
139 m_supportsAutoSave =
false;
140 m_autoSavePending =
false;
143 m_isNonUserClose =
false;
145 m_autoSaveRequired =
false;
159 GetClientSize( &m_frameSize.x, &m_frameSize.y );
173 const wxPoint& aPos,
const wxSize& aSize,
long aStyle,
174 const wxString& aFrameName,
KIWAY* aKiway,
176 wxFrame( aParent, wxID_ANY, aTitle, aPos, aSize, aStyle, aFrameName ),
192 for( wxWindow* child : aParent->GetChildren() )
196 if( dlg->IsQuasiModal() )
217 wxWindow* cvpcb = wxWindow::FindWindowByName( wxS(
"CvpcbFrame" ) );
239 if( event.CanVeto() )
246 if( event.GetId() == wxEVT_QUERY_END_SESSION
247 || event.GetId() == wxEVT_END_SESSION )
274 if( event.CanVeto() )
304 if( !IsEnabled() && IsActive() )
313 if( !wxFrame::ProcessEvent( aEvent ) )
316 if(
Pgm().m_Quitting )
325 wxLogTrace(
traceAutoSave, wxT(
"Starting auto save timer." ) );
331 wxLogTrace(
traceAutoSave, wxT(
"Stopping auto save timer." ) );
363 wxCHECK_MSG(
false,
true, wxT(
"Auto save timer function not overridden. Bad programmer!" ) );
389 std::placeholders::_1,
395 Bind( wxEVT_UPDATE_UI, evtFunc, aID );
406 Unbind( wxEVT_UPDATE_UI, it->second, aID );
413 bool checkRes =
false;
414 bool enableRes =
true;
427 catch( std::exception& )
436 wxString msg =
_(
"Undo" );
441 aEvent.SetText( msg );
445 wxString msg =
_(
"Redo" );
450 aEvent.SetText( msg );
453 if( isCut || isCopy || isPaste )
455 wxWindow* focus = wxWindow::FindFocus();
456 wxTextEntry* textEntry =
dynamic_cast<wxTextEntry*
>( focus );
458 if( textEntry && isCut && textEntry->CanCut() )
460 else if( textEntry && isCopy && textEntry->CanCopy() )
462 else if( textEntry && isPaste && textEntry->CanPaste() )
464 else if(
dynamic_cast<WX_GRID*
>( focus ) )
468 aEvent.Enable( enableRes );
469 aEvent.Show( showRes );
471 if( aEvent.IsCheckable() )
472 aEvent.Check( checkRes );
480 [] (
const SELECTION& aSel,
int aLangIdentifier )
488 cond.
Check( std::bind( isCurrentLang, std::placeholders::_1,
507 if( control.first == aName )
508 return &control.second;
522 wxWindowUpdateLocker
dummy(
this );
526 std::optional<TOOLBAR_CONFIGURATION> tbConfig;
531 if( tbConfig.has_value() )
546 if( tbConfig.has_value() )
561 if( tbConfig.has_value() )
576 if( tbConfig.has_value() )
644 wxFrame::SetMenuBar( menu_bar );
648 int pos = GetMenuBar()->FindMenu(
_(
"&Help" ) + wxS(
" " ) );
650 if( pos != wxNOT_FOUND )
652 wxMenu* helpMenu = GetMenuBar()->Remove( pos );
653 GetMenuBar()->Append( helpMenu,
_(
"&Help" ) + wxS(
" " ) );
670 helpMenu->AppendSeparator();
674 aMenuBar->Append( helpMenu,
_(
"&Help" ) + wxS(
" " ) );
678 helpMenu->wxMenu::SetTitle(
_(
"&Help" ) + wxS(
" " ) );
690 GetMenuBar()->Refresh();
702 bool running =
Pgm().GetApiServer().Running();
705 Pgm().GetApiServer().Stop();
707 Pgm().GetApiServer().Start();
723 GetMenuBar()->Refresh();
736 wxAuiPaneInfoArray panes =
m_auimgr.GetAllPanes();
738 for(
size_t i = 0; i < panes.GetCount(); ++i )
741 toolbar->RefreshBitmaps();
749 int currentDisplay = wxDisplay::GetFromWindow(
this );
766 if( !
Pgm().GetCommonSettings()->m_Session.remember_open_files )
771 if( state !=
nullptr )
780 bool wasDefault =
false;
804 if( aState.
display >= wxDisplay::GetCount() )
810 const unsigned int index = 0;
811 wxDisplay display( index );
812 wxRect clientSize = display.GetGeometry();
828 wxDisplay display( aState.
display );
829 wxRect clientSize = display.GetClientArea();
831 int yLimTop = clientSize.y;
832 int yLimBottom = clientSize.y + clientSize.height;
833 int xLimLeft = clientSize.x;
834 int xLimRight = clientSize.x + clientSize.width;
836 if( upperLeft.x > xLimRight ||
837 upperRight.x < xLimLeft ||
838 upperLeft.y < yLimTop ||
839 upperLeft.y > yLimBottom )
876 wxDisplay display( wxDisplay::GetFromWindow(
this ) );
877 wxRect clientSize = display.GetClientArea();
878 wxPoint pos = GetPosition();
882 wxS(
"ensureWindowIsOnScreen: clientArea (%d, %d) w %d h %d" ),
883 clientSize.x, clientSize.y,
884 clientSize.width, clientSize.height );
886 if( pos.y < clientSize.y )
889 wxS(
"ensureWindowIsOnScreen: y pos %d below minimum, setting to %d" ), pos.y,
891 pos.y = clientSize.y;
894 if( pos.x < clientSize.x )
897 wxS(
"ensureWindowIsOnScreen: x pos %d is off the client rect, setting to %d" ),
898 pos.x, clientSize.x );
899 pos.x = clientSize.x;
902 if( pos.x + size.x - clientSize.x > clientSize.width )
904 int newWidth = clientSize.width - ( pos.x - clientSize.x );
906 wxS(
"ensureWindowIsOnScreen: effective width %d above available %d, setting "
907 "to %d" ), pos.x + size.x, clientSize.width, newWidth );
911 if( pos.y + size.y - clientSize.y > clientSize.height )
913 int newHeight = clientSize.height - ( pos.y - clientSize.y );
915 wxS(
"ensureWindowIsOnScreen: effective height %d above available %d, setting "
916 "to %d" ), pos.y + size.y, clientSize.height, newHeight );
920 wxLogTrace(
traceDisplayLocation, wxS(
"Updating window position (%d, %d) with size (%d, %d)" ),
921 pos.x, pos.y, size.x, size.y );
923 SetSize( pos.x, pos.y, size.x, size.y );
963 IsMaximized() ? wxS(
"true" ) : wxS(
"false" ) );
1000 if(
Pgm().GetCommonSettings()->m_Session.remember_open_files && !currentlyOpenedFile.IsEmpty() )
1002 wxFileName rfn( currentlyOpenedFile );
1003 rfn.MakeRelativeTo(
Prj().GetProjectPath() );
1011 if( !currentlyOpenedFile.IsEmpty() )
1046 SetStatusText(
text );
1052#if defined( __WXOSX_MAC__ )
1064#if defined( __WXOSX_MAC__ )
1072 m_auimgr.GetPane( wxS(
"InfoBar" ) ).Hide();
1083 if( aShowCloseButton )
1091 std::function<
void(
void)> aCallback )
1095 if( aShowCloseButton )
1109 if( aShowCloseButton )
1120 if( aShowCloseButton )
1132 wxASSERT( aFileHistory );
1140 GetMenuBar()->Refresh();
1151 wxASSERT( aFileHistory );
1153 int baseId = aFileHistory->GetBaseId();
1155 wxASSERT( cmdId >= baseId && cmdId < baseId + (
int) aFileHistory->GetCount() );
1157 unsigned i = cmdId - baseId;
1159 if( i < aFileHistory->GetCount() )
1161 wxString fn = aFileHistory->GetHistoryFile( i );
1163 if( wxFileName::FileExists( fn ) )
1170 aFileHistory->RemoveFileFromHistory( i );
1178 GetMenuBar()->Refresh();
1181 return wxEmptyString;
1190 wxASSERT( aFileHistory );
1198 GetMenuBar()->Refresh();
1218 PAGED_DIALOG dlg(
this,
_(
"Preferences" ),
true,
true, wxEmptyString,
1219 wxWindow::FromDIP( wxSize( 980, 560 ), NULL ) );
1221 dlg.SetEvtHandlerEnabled(
false );
1229 std::vector<int> expand;
1235 ACTION_MANAGER* actionMgr = kicadMgr->GetToolManager()->GetActionManager();
1242 []( wxWindow* aParent ) -> wxWindow*
1249 []( wxWindow* aParent ) -> wxWindow*
1252 },
_(
"Mouse and Touchpad" ) );
1254 book->AddPage( hotkeysPanel,
_(
"Hotkeys" ) );
1257 []( wxWindow* aParent ) -> wxWindow*
1260 },
_(
"Version Control" ) );
1262#ifdef KICAD_USE_SENTRY
1264 []( wxWindow* aParent ) -> wxWindow*
1267 },
_(
"Data Collection" ) );
1270#define LAZY_CTOR( key ) \
1271 [this, kiface]( wxWindow* aParent ) \
1273 return kiface->CreateKiWindow( aParent, key, &Kiway() ); \
1288 expand.push_back( (
int) book->GetPageCount() );
1290 book->AddPage(
new wxPanel( book ),
_(
"Symbol Editor" ) );
1300 expand.push_back( (
int) book->GetPageCount() );
1302 book->AddPage(
new wxPanel( book ),
_(
"Schematic Editor" ) );
1313 _(
"Field Name Templates" ) );
1330 expand.push_back( (
int) book->GetPageCount() );
1332 book->AddPage(
new wxPanel( book ),
_(
"Footprint Editor" ) );
1344 _(
"Graphics Defaults" ) );
1347 expand.push_back( (
int) book->GetPageCount() );
1349 book->AddPage(
new wxPanel( book ),
_(
"PCB Editor" ) );
1362 expand.push_back( (
int) book->GetPageCount() );
1364 book->AddPage(
new wxPanel( book ),
_(
"3D Viewer" ) );
1387 expand.push_back( (
int) book->GetPageCount() );
1389 book->AddPage(
new wxPanel( book ),
_(
"Gerber Viewer" ) );
1398 _(
"Excellon Options" ) );
1414 expand.push_back( (
int) book->GetPageCount() );
1416 book->AddPage(
new wxPanel( book ),
_(
"Drawing Sheet Editor" ) );
1425 []( wxWindow* aParent ) -> wxWindow*
1428 },
_(
"Packages and Updates" ) );
1442 for(
size_t i = 0; i < book->GetPageCount(); ++i )
1443 book->GetPage( i )->Layout();
1445 for(
int page : expand )
1446 book->ExpandNode( page );
1448 if( !aStartPage.IsEmpty() )
1451 dlg.SetEvtHandlerEnabled(
true );
1468 wxString* files = aEvent.GetFiles();
1470 for(
int nb = 0; nb < aEvent.GetNumberOfFiles(); nb++ )
1472 const wxFileName fn = wxFileName( files[nb] );
1473 wxString ext = fn.GetExt();
1492 wxString fn = file.GetFullPath();
1501 wxFileName fn = aFileName;
1507 if( fn.GetPath().IsEmpty() && fn.HasName() )
1510 wxCHECK_MSG( fn.IsOk(),
false,
1511 wxT(
"File name object is invalid. Bad programmer!" ) );
1512 wxCHECK_MSG( !fn.GetPath().IsEmpty(),
false,
1513 wxT(
"File name object path <" ) + fn.GetFullPath() +
1514 wxT(
"> is not set. Bad programmer!" ) );
1516 if( fn.IsDir() && !fn.IsDirWritable() )
1518 msg.Printf(
_(
"Insufficient permissions to folder '%s'." ), fn.GetPath() );
1520 else if( !fn.FileExists() && !fn.IsDirWritable() )
1522 msg.Printf(
_(
"Insufficient permissions to save file '%s'." ), fn.GetFullPath() );
1524 else if( fn.FileExists() && !fn.IsFileWritable() )
1526 msg.Printf(
_(
"Insufficient permissions to save file '%s'." ), fn.GetFullPath() );
1529 if( !msg.IsEmpty() )
1543 if( !
Pgm().IsGUI() )
1546 wxCHECK_RET( aFileName.IsOk(), wxT(
"Invalid file name!" ) );
1548 wxFileName autoSaveFileName = aFileName;
1554 wxT(
"Checking for auto save file " ) + autoSaveFileName.GetFullPath() );
1556 if( !autoSaveFileName.FileExists() )
1559 wxString msg = wxString::Format(
_(
"Well this is potentially embarrassing!\n"
1560 "It appears that the last time you were editing\n"
1562 "KiCad exited before saving.\n"
1564 "Do you wish to open the auto-saved file instead?" ),
1565 aFileName.GetFullName() );
1567 int response = wxMessageBox( msg,
Pgm().App().GetAppDisplayName(), wxYES_NO | wxICON_QUESTION,
1572 if( response == wxYES )
1576 autoSaveFileName.GetFullPath() );
1578 if( !wxRenameFile( autoSaveFileName.GetFullPath(), aFileName.GetFullPath() ) )
1580 wxMessageBox(
_(
"The auto save file could not be renamed to the board file name." ),
1581 Pgm().App().GetAppDisplayName(), wxOK | wxICON_EXCLAMATION,
this );
1593 if( !
Pgm().IsGUI() )
1596 wxCHECK_RET( aFileName.IsOk(), wxT(
"Invalid file name!" ) );
1598 wxFileName autoSaveFn = aFileName;
1601 if( autoSaveFn.FileExists() )
1603 wxLogTrace(
traceAutoSave, wxT(
"Removing auto save file " ) + autoSaveFn.GetFullPath() );
1604 wxRemoveFile( autoSaveFn.GetFullPath() );
1618 wxAcceleratorEntry entries[1];
1619 entries[0].Set( wxACCEL_CTRL,
int(
'Q' ), wxID_EXIT );
1620 wxAcceleratorTable accel( 1, entries );
1621 SetAcceleratorTable( accel );
1641 if( extraitems > 0 )
1656 if( extraitems > 0 )
1679 return wxEmptyString;
1688 return wxEmptyString;
1703 wxCommandEvent e( EDA_EVT_UNITS_CHANGED );
1704 e.SetInt(
static_cast<int>( aUnits ) );
1705 e.SetClientData(
this );
1706 ProcessEventLocally( e );
1718 if( !IsMaximized() )
1724 "Maximizing window - Saving position (%d, %d) with size (%d, %d)",
1737 wxSize winSize = GetSize();
1746 GTKDoGetSize( &width, &height );
1748 winSize.Set( width, height );
1751 wxSize winSize = GetSize();
1769 GetMenuBar()->Refresh();
1795WXLRESULT EDA_BASE_FRAME::MSWWindowProc( WXUINT message, WXWPARAM wParam, WXLPARAM lParam )
1799 if( message == WM_SYSCOMMAND )
1801 if( wParam == SC_KEYMENU && ( lParam >> 16 ) <= 0 )
1805 return wxFrame::MSWWindowProc( message, wParam, lParam );
1813 langsMenu->
SetTitle(
_(
"Set Language" ) );
1814 langsMenu->
SetIcon( BITMAPS::language );
1828 new wxMenuItem( langsMenu,
1830 label, tooltip, wxITEM_CHECK );
1832 langsMenu->Append( item );
1836 aMasterMenu->
Add( langsMenu );
void ShowAboutDialog(EDA_BASE_FRAME *aParent)
KIFACE_BASE & Kiface()
Global KIFACE_BASE "get" accessor.
void ClearScaledBitmapCache()
Wipes out the scaled bitmap cache so that the icon theme can be changed.
BITMAP_STORE * GetBitmapStore()
static TOOL_ACTION reportBug
static TOOL_ACTION donate
static TOOL_ACTION listHotKeys
static TOOL_ACTION getInvolved
static TOOL_ACTION gettingStarted
Manage TOOL_ACTION objects.
const std::map< std::string, TOOL_ACTION * > & GetActions() const
Get a list of currently-registered actions mapped by their name.
static const ADVANCED_CFG & GetCfg()
Get the singleton instance's config, which is shared by all consumers.
APP_SETTINGS_BASE is a settings class that should be derived for each standalone KiCad application.
void ThemeChanged()
Notifies the store that the icon theme has been changed by the user, so caches must be invalidated.
Handle actions that are shared between different applications.
Dialog helper object to sit in the inheritance tree between wxDialog and any class written by wxFormB...
The base frame for deriving all KiCad main window classes.
virtual wxString help_name()
virtual bool doAutoSave()
This should be overridden by the derived class to handle the auto save feature.
void LoadWindowState(const wxString &aFileName)
FRAME_T GetFrameType() const
virtual void UnregisterUIUpdateHandler(int aID) override
Unregister a UI handler for a given ID that was registered using RegisterUIUpdateHandler.
virtual bool isAutoSaveRequired() const
Return the auto save status of the application.
virtual APP_SETTINGS_BASE * config() const
Return the settings object used in SaveSettings(), and is overloaded in KICAD_MANAGER_FRAME.
virtual void handleIconizeEvent(wxIconizeEvent &aEvent)
Handle a window iconize event.
virtual void PushCommandToUndoList(PICKED_ITEMS_LIST *aItem)
Add a command to undo in the undo list.
void windowClosing(wxCloseEvent &event)
(with its unexpected name so it does not collide with the real OnWindowClose() function provided in d...
virtual void OnCharHook(wxKeyEvent &aKeyEvent)
Capture the key event before it is sent to the GUI.
virtual int GetRedoCommandCount() const
void CommonSettingsChanged(int aFlags) override
Notification event that some of the common (suite-wide) settings have changed.
UNDO_REDO_CONTAINER m_undoList
virtual void OnMove(wxMoveEvent &aEvent)
virtual WINDOW_SETTINGS * GetWindowSettings(APP_SETTINGS_BASE *aCfg)
Return a pointer to the window settings for this frame.
virtual void doCloseWindow()
void OnToolbarSizeChanged()
Update toolbars if desired toolbar icon changed.
void OnMenuEvent(wxMenuEvent &event)
The TOOL_DISPATCHER needs these to work around some issues in wxWidgets where the menu events aren't ...
virtual bool IsModal() const
Return true if the frame is shown in our modal mode and false if the frame is shown as an usual frame...
void ShowChangedLanguage() override
Redraw the menus and what not in current language.
virtual void HandleSystemColorChange()
Update the UI in response to a change in the system colors.
virtual void setupUIConditions()
Setup the UI conditions for the various actions and their controls in this frame.
void ensureWindowIsOnScreen()
bool m_isNonUserClose
Set by NonUserClose() to indicate that the user did not request the current close.
void LoadWindowSettings(const WINDOW_SETTINGS *aCfg)
Load window settings from the given settings object.
std::vector< wxFileName > m_AcceptedFiles
virtual void CheckForAutoSaveFile(const wxFileName &aFileName)
Check if an auto save file exists for aFileName and takes the appropriate action depending on the use...
void OnKicadAbout(wxCommandEvent &event)
virtual void UpdateToolbarControlSizes()
Update the sizes of any controls in the toolbars of the frame.
virtual void ClearUndoRedoList()
Clear the undo and redo list using ClearUndoORRedoList()
virtual void DoWithAcceptedFiles()
Execute action on accepted dropped file.
virtual void OnModify()
Must be called after a model change in order to set the "modify" flag and do other frame-specific pro...
wxWindow * findQuasiModalDialog()
static void HandleUpdateUIEvent(wxUpdateUIEvent &aEvent, EDA_BASE_FRAME *aFrame, ACTION_CONDITIONS aCond)
Handle events generated when the UI is trying to figure out the current state of the UI controls rela...
virtual void ClearUndoORRedoList(UNDO_REDO_LIST aList, int aItemCount=-1)
Remove the aItemCount of old commands from aList and delete commands, pickers and picked items if nee...
virtual void ThemeChanged()
Process light/dark theme change.
EDA_BASE_FRAME(wxWindow *aParent, FRAME_T aFrameType, const wxString &aTitle, const wxPoint &aPos, const wxSize &aSize, long aStyle, const wxString &aFrameName, KIWAY *aKiway, const EDA_IU_SCALE &aIuScale)
static constexpr int KICAD_AUI_TB_STYLE
Default style flags used for wxAUI toolbars.
ACTION_TOOLBAR * m_tbRight
void ShowPreferences(wxString aStartPage, wxString aStartParentPage)
Display the preferences and settings of all opened editors paged dialog, starting with a particular p...
void initExitKey()
Set the common key-pair for exiting the application (Ctrl-Q) and ties it to the wxID_EXIT event id.
void OnPreferences(wxCommandEvent &event)
virtual const SEARCH_STACK & sys_search()
Return a SEARCH_STACK pertaining to entire program.
void onAutoSaveTimer(wxTimerEvent &aEvent)
Handle the auto save timer event.
void SaveWindowSettings(WINDOW_SETTINGS *aCfg)
Save window settings to the given settings object.
virtual wxString GetRedoActionDescription() const
TOOLBAR_SETTINGS * m_toolbarSettings
void FinishAUIInitialization()
virtual wxString GetCurrentFileName() const
Get the full filename + path of the currently opened file in the frame.
void ChangeUserUnits(EDA_UNITS aUnits)
void AddMenuLanguageList(ACTION_MENU *aMasterMenu, TOOL_INTERACTIVE *aControlTool)
Create a menu list for language choice, and add it as submenu to MasterMenu.
void SetMenuBar(wxMenuBar *menu_bar) override
void RegisterCustomToolbarControlFactory(const ACTION_TOOLBAR_CONTROL &aControlDesc, const ACTION_TOOLBAR_CONTROL_FACTORY &aControlFactory)
Register a creation factory for toolbar controls that are present in this frame.
void ShowInfoBarMsg(const wxString &aMsg, bool aShowCloseButton=false)
Show the WX_INFOBAR displayed on the top of the canvas with a message and an info icon on the left of...
virtual void configureToolbars()
wxTimer * m_autoSaveTimer
void UpdateFileHistory(const wxString &FullFileName, FILE_HISTORY *aFileHistory=nullptr)
Update the list of recently opened files.
void PrintMsg(const wxString &text)
void commonInit(FRAME_T aFrameType)
Collect common initialization functions used in all CTORs.
virtual bool IsContentModified() const
Get if the contents of the frame have been modified since the last save.
void ShowInfoBarWarning(const wxString &aWarningMsg, bool aShowCloseButton=false)
Show the WX_INFOBAR displayed on the top of the canvas with a message and a warning icon on the left ...
virtual PICKED_ITEMS_LIST * PopCommandFromRedoList()
Return the last command to undo and remove it from list, nothing is deleted.
virtual void RecreateToolbars()
void ClearFileHistory(FILE_HISTORY *aFileHistory=nullptr)
Remove all files from the file history.
std::map< int, UIUpdateHandler > m_uiUpdateMap
Map containing the UI update handlers registered with wx for each action.
std::map< std::string, ACTION_TOOLBAR_CONTROL_FACTORY > m_toolbarControlFactories
ACTION_TOOLBAR_CONTROL_FACTORY * GetCustomToolbarControlFactory(const std::string &aName)
UNDO_REDO_CONTAINER m_redoList
virtual void LoadSettings(APP_SETTINGS_BASE *aCfg)
Load common frame parameters from a configuration file.
FILE_HISTORY * m_fileHistory
ACTION_TOOLBAR * m_tbLeft
virtual void DeleteAutoSaveFile(const wxFileName &aFileName)
virtual void OnSize(wxSizeEvent &aEvent)
virtual wxString GetUndoActionDescription() const
virtual PICKED_ITEMS_LIST * PopCommandFromUndoList()
Return the last command to undo and remove it from list, nothing is deleted.
virtual bool canCloseWindow(wxCloseEvent &aCloseEvent)
bool ProcessEvent(wxEvent &aEvent) override
Override the default process event handler to implement the auto save feature.
bool IsWritable(const wxFileName &aFileName, bool aVerbose=true)
Check if aFileName can be written.
void OnMaximize(wxMaximizeEvent &aEvent)
ACTION_TOOLBAR * m_tbTopAux
virtual void OnDropFiles(wxDropFilesEvent &aEvent)
Handle event fired when a file is dropped to the window.
std::map< const wxString, TOOL_ACTION * > m_acceptedExts
Associate file extensions with action to execute.
void onIconize(wxIconizeEvent &aEvent)
virtual void unitsChangeRefresh()
Called when when the units setting has changed to allow for any derived classes to handle refreshing ...
wxString GetFileFromHistory(int cmdId, const wxString &type, FILE_HISTORY *aFileHistory=nullptr)
Fetch the file name from the file history list.
wxSize GetWindowSize()
Get the undecorated window size that can be used for restoring the window size.
int GetAutoSaveInterval() const
virtual void SaveSettings(APP_SETTINGS_BASE *aCfg)
Save common frame parameters to a configuration data file.
void onSystemColorChange(wxSysColourChangedEvent &aEvent)
virtual int GetUndoCommandCount() const
virtual void RegisterUIUpdateHandler(int aID, const ACTION_CONDITIONS &aConditions) override
Register a UI update handler for the control with ID aID.
ACTION_TOOLBAR * m_tbTopMain
virtual void PushCommandToRedoList(PICKED_ITEMS_LIST *aItem)
Add a command to redo in the redo list.
void ShowInfoBarError(const wxString &aErrorMsg, bool aShowCloseButton=false, WX_INFOBAR::MESSAGE_TYPE aType=WX_INFOBAR::MESSAGE_TYPE::GENERIC)
Show the WX_INFOBAR displayed on the top of the canvas with a message and an error icon on the left o...
bool m_isClosing
Set by the close window event handler after frames are asked if they can close.
void AddStandardHelpMenu(wxMenuBar *aMenuBar)
Add the standard KiCad help menu to the menubar.
void ReCreateMenuBar()
Recreate the menu bar.
virtual void doReCreateMenuBar()
WX_INFOBAR * GetInfoBar()
Specialization of the wxAuiPaneInfo class for KiCad panels.
This class implements a file history object to store a list of files, that can then be added to a men...
void AddFileToHistory(const wxString &aFile) override
Adds a file to the history.
void ClearFileHistory()
Clear all entries from the file history.
void Save(APP_SETTINGS_BASE &aSettings)
Saves history into a JSON settings object.
void SetMaxFiles(size_t aMaxFiles)
Update the number of files that will be contained inside the file history.
void Load(const APP_SETTINGS_BASE &aSettings)
Loads history from a JSON settings object.
The main KiCad project manager frame.
SEARCH_STACK & KifaceSearch()
Only for DSO specific 'non-library' files.
APP_SETTINGS_BASE * KifaceSettings() const
void GetActions(std::vector< TOOL_ACTION * > &aActions) const override
Append this Kiface's registered actions to the given list.
const wxString & GetHelpFileName() const
Return just the basename portion of the current help file.
A mix in class which holds the location of a wxWindow's KIWAY.
PROJECT & Prj() const
Return a reference to the PROJECT associated with this KIWAY.
KIWAY & Kiway() const
Return a reference to the KIWAY that this object has an opportunity to participate in.
A minimalistic software bus for communications between various DLLs/DSOs (DSOs) within the same KiCad...
virtual KIFACE * KiFACE(FACE_T aFaceId, bool doLoad=true)
Return the KIFACE* given a FACE_T.
virtual void CommonSettingsChanged(int aFlags=0)
Call CommonSettingsChanged() on all KIWAY_PLAYERs.
WX_TREEBOOK * GetTreebook()
void SetInitialPage(const wxString &aPage, const wxString &aParentPage=wxEmptyString)
std::vector< TOOL_ACTION * > & ActionsList()
static wxString GetDefaultUserProjectsPath()
Gets the default path we point users to create projects.
virtual COMMON_SETTINGS * GetCommonSettings() const
virtual int GetSelectedLanguageIdentifier() const
virtual SETTINGS_MANAGER & GetSettingsManager() const
A holder to handle information on schematic or board items.
void SaveFileState(const wxString &aFileName, const WINDOW_SETTINGS *aWindowCfg, bool aOpen)
const PROJECT_FILE_STATE * GetFileState(const wxString &aFileName)
virtual PROJECT_LOCAL_SETTINGS & GetLocalSettings() const
Look for files in a number of paths.
void PushCommand(PICKED_ITEMS_LIST *aCommand)
PICKED_ITEMS_LIST * PopCommand()
std::vector< PICKED_ITEMS_LIST * > m_CommandsList
void SetUserUnits(EDA_UNITS aUnits)
Simple wrapper around wxBusyCursor for used with the generic BUSY_INDICATOR interface.
A modified version of the wxInfoBar class that allows us to:
void RemoveAllButtons()
Remove all the buttons that have been added by the user.
void ShowMessageFor(const wxString &aMessage, int aTime, int aFlags=wxICON_INFORMATION, MESSAGE_TYPE aType=WX_INFOBAR::MESSAGE_TYPE::GENERIC)
Show the infobar with the provided message and icon for a specific period of time.
MESSAGE_TYPE
Sets the type of message for special handling if needed.
void Dismiss() override
Dismisses the infobar and updates the containing layout and AUI manager (if one is provided).
void AddCloseButton(const wxString &aTooltip=_("Hide this message."))
Add the default close button to the infobar on the right side.
void SetCallback(std::function< void(void)> aCallback)
Provide a callback to be called when the infobar is dismissed (either by user action or timer).
bool AddLazyPage(std::function< wxWindow *(wxWindow *aParent)> aLazyCtor, const wxString &text, bool bSelect=false, int imageId=NO_IMAGE)
bool AddLazySubPage(std::function< wxWindow *(wxWindow *aParent)> aLazyCtor, const wxString &text, bool bSelect=false, int imageId=NO_IMAGE)
void DisplayErrorMessage(wxWindow *aParent, const wxString &aText, const wxString &aExtraInfo)
Display an error message with aMessage.
This file is part of the common library.
const int minSize
Push and Shove router track width and via size dialog.
static const wxSize minSizeLookup(FRAME_T aFrameType, wxWindow *aWindow)
static const wxSize defaultSize(FRAME_T aFrameType, wxWindow *aWindow)
wxWindow * findQuasiModalDialog(wxWindow *aParent)
Base window classes and related definitions.
#define KICAD_MANAGER_FRAME_NAME
#define DEFAULT_MAX_UNDO_ITEMS
std::function< void(wxUpdateUIEvent &) > UIUpdateHandler
This is the handler functor for the update UI events.
void SocketCleanup()
Must be called to clean up the socket thread used by SendCommand.
FRAME_T
The set of EDA_BASE_FRAME derivatives, typically stored in EDA_BASE_FRAME::m_Ident.
@ FRAME_SCH_SYMBOL_EDITOR
@ PANEL_SCH_FIELD_NAME_TEMPLATES
@ PANEL_GBR_DISPLAY_OPTIONS
@ PANEL_FP_DEFAULT_GRAPHICS_VALUES
@ PANEL_FP_DISPLAY_OPTIONS
@ PANEL_FP_DEFAULT_FIELDS
@ PANEL_PCB_ACTION_PLUGINS
@ PANEL_3DV_DISPLAY_OPTIONS
@ PANEL_DS_DISPLAY_OPTIONS
@ PANEL_GBR_EXCELLON_OPTIONS
static const std::string GerberFileExtension
static const std::string AutoSaveFilePrefix
static bool IsGerberFileExtension(const wxString &ext)
const wxChar *const traceAutoSave
Flag to enable auto save feature debug tracing.
const wxChar *const kicadTraceKeyEvent
Flag to enable wxKeyEvent debug tracing.
const wxChar *const traceDisplayLocation
Flag to enable debug output of display positioning logic.
void ReadHotKeyConfigIntoActions(const wxString &aFileName, std::vector< TOOL_ACTION * > &aActions)
Read a hotkey config file into a list of actions.
Common command IDs shared by more than one of the KiCad applications.
PGM_BASE & Pgm()
The global program "get" accessor.
LANGUAGE_DESCR LanguagesList[]
An array containing all the languages that KiCad supports.
std::vector< FAB_LAYER_COLOR > dummy
Functors that can be used to figure out how the action controls should be displayed in the UI and if ...
SELECTION_CONDITION enableCondition
Returns true if the UI control should be enabled.
SELECTION_CONDITION checkCondition
Returns true if the UI control should be checked.
SELECTION_CONDITION showCondition
Returns true if the UI control should be shown.
ACTION_CONDITIONS & Check(const SELECTION_CONDITION &aCondition)
Implement a participant in the KIWAY alchemy.
int m_KI_Lang_Identifier
KiCad identifier used in menu selection (See id.h)
wxString m_Lang_Label
Labels used in menus.
struct WINDOW_STATE window
Store the common settings that are saved and loaded for each window / frame.
Store the window positioning/state.
IFACE KIFACE_BASE kiface("pcb_test_frame", KIWAY::FACE_PCB)
wxString dump(const wxArrayString &aArray)
Debug helper for printing wxArrayString contents.
wxLogTrace helper definitions.