KiCad PCB EDA Suite
Loading...
Searching...
No Matches
kicad_manager_frame.h
Go to the documentation of this file.
1/*
2 * This program source code file is part of KiCad, a free EDA CAD application.
3 *
4 * Copyright (C) 2013 CERN (www.cern.ch)
5 * Copyright The KiCad Developers, see AUTHORS.txt for contributors.
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 2
10 * of the License, or (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, you may find one here:
19 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
20 * or you may search the http://www.gnu.org website for the version 2 license,
21 * or you may write to the Free Software Foundation, Inc.,
22 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
23 */
24
25#ifndef KICAD_H
26#define KICAD_H
27
28#include <kiway_player.h>
29
30class ACTION_TOOLBAR;
31class BITMAP_BUTTON;
32class EDA_BASE_FRAME;
33class KICAD_SETTINGS;
36class PROJECT_TREE;
38class UPDATE_MANAGER;
39
44{
45public:
46 KICAD_MANAGER_FRAME( wxWindow* parent, const wxString& title,
47 const wxPoint& pos, const wxSize& size );
48
50
51 void OnIdle( wxIdleEvent& event );
52
53 bool canCloseWindow( wxCloseEvent& aCloseEvent ) override;
54 void doCloseWindow() override;
55 void OnSize( wxSizeEvent& event ) override;
56
57 void UnarchiveFiles();
58
59 void OnOpenFileInTextEditor( wxCommandEvent& event );
60 void OnEditAdvancedCfg( wxCommandEvent& event );
61
62 void OnFileHistory( wxCommandEvent& event );
63 void OnClearFileHistory( wxCommandEvent& aEvent );
64 void OnExit( wxCommandEvent& event );
65
70 wxStatusBar* OnCreateStatusBar( int number, long style, wxWindowID id,
71 const wxString& name ) override;
72
76 void HideTabsIfNeeded();
77
78 wxString GetCurrentFileName() const override
79 {
80 return GetProjectFileName();
81 }
82
93 void ImportNonKiCadProject( const wxString& aWindowTitle, const wxString& aFilesWildcard,
94 const std::vector<std::string>& aSchFileExtensions,
95 const std::vector<std::string>& aPcbFileExtensions,
96 int aSchFileType, int aPcbFileType );
97
101 void OnImportAltiumProjectFiles( wxCommandEvent& event );
102
106 void OnImportCadstarArchiveFiles( wxCommandEvent& event );
107
111 void OnImportEagleFiles( wxCommandEvent& event );
112
116 void OnImportEasyEdaFiles( wxCommandEvent& event );
117
121 void OnImportEasyEdaProFiles( wxCommandEvent& event );
122
126 void PrintPrjInfo();
127
128 void RefreshProjectTree();
129
141 void CreateNewProject( const wxFileName& aProjectFileName, bool aCreateStubFiles = true );
142
146 bool CloseProject( bool aSave );
147 void LoadProject( const wxFileName& aProjectFileName );
148
149 void OpenJobsFile( const wxFileName& aFileName, bool aCreate = false,
150 bool aResaveProjectPreferences = true );
151
152
153 void LoadSettings( APP_SETTINGS_BASE* aCfg ) override;
154
155 void SaveSettings( APP_SETTINGS_BASE* aCfg ) override;
156
157 void ShowChangedLanguage() override;
158 void CommonSettingsChanged( int aFlags ) override;
159 void ProjectChanged() override;
160
165 void OnChangeWatchedPaths( wxCommandEvent& aEvent );
166
167 const wxString GetProjectFileName() const;
168
169 bool IsProjectActive();
170 // read only accessors
171 const wxString SchFileName();
172 const wxString SchLegacyFileName();
173 const wxString PcbFileName();
174 const wxString PcbLegacyFileName();
175
176 void ReCreateTreePrj();
177
185 void SaveOpenJobSetsToLocalSettings( bool aIsExplicitUserSave = false );
186
187 wxWindow* GetToolCanvas() const override;
188
189 std::shared_ptr<PLUGIN_CONTENT_MANAGER> GetPcm() { return m_pcm; };
190
191 void SetPcmButton( BITMAP_BUTTON* aButton );
192
193 void CreatePCM(); // creates the PLUGIN_CONTENT_MANAGER
194
195 // Used only on Windows: stores the info message about file watcher
197
198 DECLARE_EVENT_TABLE()
199
200protected:
201 virtual void setupUIConditions() override;
202
203 void doReCreateMenuBar() override;
204
206
207 void onNotebookPageCloseRequest( wxAuiNotebookEvent& evt );
208
209 void onNotebookPageCountChanged( wxAuiNotebookEvent& evt );
210
211private:
212 void setupTools();
214
215 void DoWithAcceptedFiles() override;
216
217 APP_SETTINGS_BASE* config() const override;
218
220
221 const SEARCH_STACK& sys_search() override;
222
223 wxString help_name() override;
224
225 void language_change( wxCommandEvent& event );
226
228
229private:
233
235 wxAuiNotebook* m_notebook;
238
243};
244
245
246// The C++ project manager includes a single PROJECT in its link image.
247class PROJECT;
248extern PROJECT& Prj();
249
250#endif
const char * name
Define the structure of a toolbar with buttons that invoke ACTIONs.
APP_SETTINGS_BASE is a settings class that should be derived for each standalone KiCad application.
A bitmap button widget that behaves like an AUI toolbar item's button when it is drawn.
The base frame for deriving all KiCad main window classes.
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)
std::shared_ptr< PLUGIN_CONTENT_MANAGER > m_pcm
void language_change(wxCommandEvent &event)
void SetPcmButton(BITMAP_BUTTON *aButton)
void CreateNewProject(const wxFileName &aProjectFileName, bool aCreateStubFiles=true)
Creates a new project by setting up and initial project, schematic, and board files.
const SEARCH_STACK & sys_search() override
Return a SEARCH_STACK pertaining to entire program.
void OnImportEasyEdaProFiles(wxCommandEvent &event)
Open dialog to import EasyEDA Pro schematic and board files.
void ProjectChanged() override
Notification event that the project has changed.
void ShowChangedLanguage() override
Redraw the menus and what not in current language.
const wxString SchLegacyFileName()
wxWindow * GetToolCanvas() const override
Canvas access.
void OnImportEasyEdaFiles(wxCommandEvent &event)
Open dialog to import EasyEDA Std schematic and board files.
PROJECT_TREE_PANE * m_leftWin
void OnImportAltiumProjectFiles(wxCommandEvent &event)
Open dialog to import Altium project files.
const wxString GetProjectFileName() const
KICAD_SETTINGS * kicadSettings() const
void OnImportEagleFiles(wxCommandEvent &event)
Open dialog to import Eagle schematic and board files.
wxStatusBar * OnCreateStatusBar(int number, long style, wxWindowID id, const wxString &name) override
Create the status line (like a wxStatusBar).
void OnExit(wxCommandEvent &event)
void OpenJobsFile(const wxFileName &aFileName, bool aCreate=false, bool aResaveProjectPreferences=true)
void OnChangeWatchedPaths(wxCommandEvent &aEvent)
Called by sending a event with id = ID_INIT_WATCHED_PATHS rebuild the list of watched paths.
void LoadProject(const wxFileName &aProjectFileName)
std::shared_ptr< PLUGIN_CONTENT_MANAGER > GetPcm()
bool canCloseWindow(wxCloseEvent &aCloseEvent) override
void OnSize(wxSizeEvent &event) override
virtual void setupUIConditions() override
Setup the UI conditions for the various actions and their controls in this frame.
void OnFileHistory(wxCommandEvent &event)
void DoWithAcceptedFiles() override
Execute action on accepted dropped file.
void OnOpenFileInTextEditor(wxCommandEvent &event)
APP_SETTINGS_BASE * config() const override
Return the settings object used in SaveSettings(), and is overloaded in KICAD_MANAGER_FRAME.
const wxString PcbLegacyFileName()
void OnEditAdvancedCfg(wxCommandEvent &event)
KICAD_MANAGER_FRAME(wxWindow *parent, const wxString &title, const wxPoint &pos, const wxSize &size)
bool CloseProject(bool aSave)
Closes the project, and saves it if aSave is true;.
wxString GetCurrentFileName() const override
Get the full filename + path of the currently opened file in the frame.
void onNotebookPageCloseRequest(wxAuiNotebookEvent &evt)
void CommonSettingsChanged(int aFlags) override
Notification event that some of the common (suite-wide) settings have changed.
void LoadSettings(APP_SETTINGS_BASE *aCfg) override
Load common frame parameters from a configuration file.
void OnIdle(wxIdleEvent &event)
void PrintPrjInfo()
Prints the current working directory name and the project name on the text panel.
void SaveOpenJobSetsToLocalSettings(bool aIsExplicitUserSave=false)
void onNotebookPageCountChanged(wxAuiNotebookEvent &evt)
void OnClearFileHistory(wxCommandEvent &aEvent)
void OnImportCadstarArchiveFiles(wxCommandEvent &event)
Open dialog to import CADSTAR Schematic and PCB Archive files.
void SaveSettings(APP_SETTINGS_BASE *aCfg) override
Save common frame parameters to a configuration data file.
void ImportNonKiCadProject(const wxString &aWindowTitle, const wxString &aFilesWildcard, const std::vector< std::string > &aSchFileExtensions, const std::vector< std::string > &aPcbFileExtensions, int aSchFileType, int aPcbFileType)
Creates a project and imports a non-KiCad Schematic and PCB.
BITMAP_BUTTON * m_pcmButton
void doReCreateMenuBar() override
PANEL_KICAD_LAUNCHER * m_launcher
void HideTabsIfNeeded()
Hides the tabs for Editor notebook if there is only 1 page.
wxString help_name() override
std::unique_ptr< UPDATE_MANAGER > m_updateManager
PROJECT & Prj() const
Return a reference to the PROJECT associated with this KIWAY.
Main class of Plugin and Content Manager subsystem.
Definition pcm.h:106
PROJECT_TREE_PANE Window to display the tree files.
PROJECT_TREE This is the class to show (as a tree) the files in the project directory.
Container for project specific data.
Definition project.h:65
Look for files in a number of paths.
STL class.
STL namespace.