KiCad PCB EDA Suite
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 (C) 2019-2021 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;
38
43{
44public:
45 KICAD_MANAGER_FRAME( wxWindow* parent, const wxString& title,
46 const wxPoint& pos, const wxSize& size );
47
49
50 void OnIdle( wxIdleEvent& event );
51
52 bool canCloseWindow( wxCloseEvent& aCloseEvent ) override;
53 void doCloseWindow() override;
54 void OnSize( wxSizeEvent& event ) override;
55
56 void OnArchiveFiles( wxCommandEvent& event );
57 void OnUnarchiveFiles( wxCommandEvent& event );
58
59 void OnOpenFileInTextEditor( wxCommandEvent& event );
60 void OnBrowseInFileExplorer( wxCommandEvent& event );
61
62 void OnFileHistory( wxCommandEvent& event );
63 void OnClearFileHistory( wxCommandEvent& aEvent );
64 void OnExit( wxCommandEvent& event );
65
67
68 wxString GetCurrentFileName() const override
69 {
70 return GetProjectFileName();
71 }
72
83 void ImportNonKiCadProject( const wxString& aWindowTitle, const wxString& aFilesWildcard,
84 const wxString& aSchFileExtension,
85 const wxString& aPcbFileExtension, int aSchFileType,
86 int aPcbFileType );
87
91 void OnImportCadstarArchiveFiles( wxCommandEvent& event );
92
96 void OnImportEagleFiles( wxCommandEvent& event );
97
101 void PrintPrjInfo();
102
103 void RefreshProjectTree();
104
116 void CreateNewProject( const wxFileName& aProjectFileName, bool aCreateStubFiles = true );
117
121 bool CloseProject( bool aSave );
122 void LoadProject( const wxFileName& aProjectFileName );
123
124
125 void LoadSettings( APP_SETTINGS_BASE* aCfg ) override;
126
127 void SaveSettings( APP_SETTINGS_BASE* aCfg ) override;
128
129 void ShowChangedLanguage() override;
130 void CommonSettingsChanged( bool aEnvVarsChanged, bool aTextVarsChanged ) override;
131 void ProjectChanged() override;
132
137 void OnChangeWatchedPaths( wxCommandEvent& aEvent );
138
139 const wxString GetProjectFileName() const;
140
141 bool IsProjectActive();
142 // read only accessors
143 const wxString SchFileName();
144 const wxString SchLegacyFileName();
145 const wxString PcbFileName();
146 const wxString PcbLegacyFileName();
147
148 void ReCreateTreePrj();
149
150 wxWindow* GetToolCanvas() const override;
151
152 std::shared_ptr<PLUGIN_CONTENT_MANAGER> GetPcm() { return m_pcm; };
153
154 void SetPcmButton( BITMAP_BUTTON* aButton );
155
156 DECLARE_EVENT_TABLE()
157
158protected:
159 virtual void setupUIConditions() override;
160
161 void doReCreateMenuBar() override;
162
163private:
164 void setupTools();
166
167 void DoWithAcceptedFiles() override;
168
169 APP_SETTINGS_BASE* config() const override;
170
172
173 const SEARCH_STACK& sys_search() override;
174
175 wxString help_name() override;
176
177 void language_change( wxCommandEvent& event );
178
180
184
188
192};
193
194
195// The C++ project manager includes a single PROJECT in its link image.
196class PROJECT;
197extern PROJECT& Prj();
198
199#endif
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.
Definition: app_settings.h:110
A bitmap button widget that behaves like an AUI toolbar item's button when it is drawn.
Definition: bitmap_button.h:41
The base frame for deriving all KiCad main window classes.
The main KiCad project manager frame.
std::shared_ptr< PLUGIN_CONTENT_MANAGER > m_pcm
void language_change(wxCommandEvent &event)
void SetPcmButton(BITMAP_BUTTON *aButton)
void doCloseWindow() override
void CreateNewProject(const wxFileName &aProjectFileName, bool aCreateStubFiles=true)
Creates a new project by setting up and initial project, schematic, and board files.
void OnUnarchiveFiles(wxCommandEvent &event)
const SEARCH_STACK & sys_search() override
Return a SEARCH_STACK pertaining to entire program.
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.
PROJECT_TREE_PANE * m_leftWin
const wxString GetProjectFileName() const
void OnBrowseInFileExplorer(wxCommandEvent &event)
KICAD_SETTINGS * kicadSettings() const
const wxString SchFileName()
void OnImportEagleFiles(wxCommandEvent &event)
Open dialog to import Eagle schematic and board files.
void OnExit(wxCommandEvent &event)
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 ImportNonKiCadProject(const wxString &aWindowTitle, const wxString &aFilesWildcard, const wxString &aSchFileExtension, const wxString &aPcbFileExtension, int aSchFileType, int aPcbFileType)
Creates a project and imports a non-KiCad Schematic and PCB.
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
Returns the settings object used in SaveSettings(), and is overloaded in KICAD_MANAGER_FRAME.
const wxString PcbLegacyFileName()
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 RecreateBaseHToolbar()
(Re)Create the horizontal toolbar
void LoadSettings(APP_SETTINGS_BASE *aCfg) override
Load common frame parameters from a configuration file.
void CommonSettingsChanged(bool aEnvVarsChanged, bool aTextVarsChanged) override
Notification event that some of the common (suite-wide) settings have changed.
void OnIdle(wxIdleEvent &event)
void PrintPrjInfo()
Prints the current working directory name and the project name on the text panel.
ACTION_TOOLBAR * m_mainToolBar
void OnArchiveFiles(wxCommandEvent &event)
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.
BITMAP_BUTTON * m_pcmButton
void doReCreateMenuBar() override
PANEL_KICAD_LAUNCHER * m_launcher
wxString help_name() override
const wxString PcbFileName()
PROJECT & Prj() const
Return a reference to the PROJECT associated with this KIWAY.
Main class of Plugin and Content Manager subsystem.
Definition: pcm.h:102
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.
Definition: project_tree.h:39
Container for project specific data.
Definition: project.h:64
Look for files in a number of paths.
Definition: search_stack.h:42
Definition: bitmap.cpp:64