KiCad PCB EDA Suite
sch_base_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) 2015 SoftPLC Corporation, Dick Hollenbeck <[email protected]>
5 * Copyright (C) 2015-2022 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 SCH_BASE_FRAME_H_
26#define SCH_BASE_FRAME_H_
27
28#include <eda_draw_frame.h>
29#include <frame_type.h>
30#include <sch_draw_panel.h>
31#include <sch_screen.h>
32#include <schematic_settings.h>
33
34#include <stddef.h>
35#include <utility>
36#include <vector>
37#include <wx/event.h>
38#include <wx/gdicmn.h>
39#include <wx/string.h>
40
41#include <template_fieldnames.h>
42
43
44namespace KIGFX
45{
46 class SCH_RENDER_SETTINGS;
47}
48
49class PAGE_INFO;
50class TITLE_BLOCK;
53class LIB_SYMBOL;
54class SYMBOL_LIB;
56class LIB_ID;
61
76LIB_SYMBOL* SchGetLibSymbol( const LIB_ID& aLibId, SYMBOL_LIB_TABLE* aLibTable,
77 SYMBOL_LIB* aCacheLib = nullptr, wxWindow* aParent = nullptr,
78 bool aShowErrorMsg = false );
79
90{
91public:
92 SCH_BASE_FRAME( KIWAY* aKiway, wxWindow* aParent, FRAME_T aWindowType, const wxString& aTitle,
93 const wxPoint& aPosition, const wxSize& aSize, long aStyle,
94 const wxString & aFrameName );
95
96 virtual ~SCH_BASE_FRAME();
97
98 void createCanvas();
99
100 SCH_DRAW_PANEL* GetCanvas() const override;
101 SCH_SCREEN* GetScreen() const override;
102
104
106
107 void LoadSettings( APP_SETTINGS_BASE* aCfg ) override;
108 void SaveSettings( APP_SETTINGS_BASE* aCfg ) override;
109
111
112 COLOR4D GetDrawBgColor() const override;
113
117 virtual bool GetShowAllPins() const { return true; }
118
119 void SetPageSettings( const PAGE_INFO& aPageSettings ) override;
120 const PAGE_INFO& GetPageSettings () const override;
121 const wxSize GetPageSizeIU() const override;
122
123 const VECTOR2I& GetGridOrigin() const override
124 {
125 static VECTOR2I zero;
126 return zero;
127 }
128 void SetGridOrigin( const VECTOR2I& aPoint ) override {}
129
130 const TITLE_BLOCK& GetTitleBlock() const override;
131 void SetTitleBlock( const TITLE_BLOCK& aTitleBlock ) override;
132
133 void UpdateStatusBar() override;
134
157 std::vector<PICKED_SYMBOL>& aHistoryList,
158 bool aUseLibBrowser,
159 int aUnit,
160 int aConvert,
161 bool aShowFootprints,
162 const LIB_ID* aHighlight = nullptr,
163 bool aAllowFields = true );
164
174 LIB_SYMBOL* GetLibSymbol( const LIB_ID& aLibId, bool aUseCacheLib = false,
175 bool aShowErrorMsg = false );
176
189 PICKED_SYMBOL PickSymbolFromLibBrowser( wxTopLevelWindow* aParent,
190 const SYMBOL_LIBRARY_FILTER* aFilter,
191 const LIB_ID& aPreselectedLibId,
192 int aUnit, int aConvert );
193
201 wxString SelectLibraryFromList();
202
209 SYMBOL_LIB_TABLE* SelectSymLibTable( bool aOptional = false );
210
211 virtual void RedrawScreen( const VECTOR2I& aCenterPoint, bool aWarpPointer );
212
213 void HardRedraw() override;
214
219 void AddToScreen( EDA_ITEM* aItem, SCH_SCREEN* aScreen );
220
225 void RemoveFromScreen( EDA_ITEM* aItem, SCH_SCREEN* aScreen );
226
230 virtual void UpdateItem( EDA_ITEM* aItem, bool isAddOrDelete = false,
231 bool aUpdateRtree = false );
232
237
241 void SyncView();
242
243 void CommonSettingsChanged( bool aEnvVarsChanged, bool aTextVarsChanged ) override;
244
249
250 COLOR_SETTINGS* GetColorSettings( bool aForceRefresh = false ) const override;
251
252 void ActivateGalCanvas() override;
253
254protected:
255 void handleActivateEvent( wxActivateEvent& aEvent ) override;
256
257 void handleIconizeEvent( wxIconizeEvent& aEvent ) override;
258
266 bool saveSymbolLibTables( bool aGlobal, bool aProject );
267
271
272private:
273#if defined( KICAD_USE_3DCONNEXION )
274 NL_SCHEMATIC_PLUGIN* m_spaceMouse;
275#endif
276};
277
278#endif // SCH_BASE_FRAME_H_
APP_SETTINGS_BASE is a settings class that should be derived for each standalone KiCad application.
Definition: app_settings.h:101
Color settings are a bit different than most of the settings objects in that there can be more than o...
The base class for create windows for drawing purpose.
A base class for most all the KiCad significant classes used in schematics and boards.
Definition: eda_item.h:85
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:104
Store schematic specific render settings.
Definition: sch_painter.h:71
A minimalistic software bus for communications between various DLLs/DSOs (DSOs) within the same KiCad...
Definition: kiway.h:273
A logical library item identifier and consists of various portions much like a URI.
Definition: lib_id.h:49
Define a library symbol object.
Definition: lib_symbol.h:98
The class that implements the public interface to the SpaceMouse plug-in.
Describe the page size and margins of a paper page on which to eventually print or plot.
Definition: page_info.h:54
These settings were stored in SCH_BASE_FRAME previously.
A shim class between EDA_DRAW_FRAME and several derived classes: SYMBOL_EDIT_FRAME,...
void SetGridOrigin(const VECTOR2I &aPoint) override
virtual void RedrawScreen(const VECTOR2I &aCenterPoint, bool aWarpPointer)
SCH_BASE_FRAME(KIWAY *aKiway, wxWindow *aParent, FRAME_T aWindowType, const wxString &aTitle, const wxPoint &aPosition, const wxSize &aSize, long aStyle, const wxString &aFrameName)
void UpdateStatusBar() override
Update the status bar information.
void ActivateGalCanvas() override
Use to start up the GAL drawing canvas.
void SetPageSettings(const PAGE_INFO &aPageSettings) override
void SaveSettings(APP_SETTINGS_BASE *aCfg) override
Save common frame parameters to a configuration data file.
void handleIconizeEvent(wxIconizeEvent &aEvent) override
Handle a window iconize event.
void LoadSettings(APP_SETTINGS_BASE *aCfg) override
Load common frame parameters from a configuration file.
SCH_SCREEN * GetScreen() const override
Return a pointer to a BASE_SCREEN or one of its derivatives.
PICKED_SYMBOL PickSymbolFromLibBrowser(wxTopLevelWindow *aParent, const SYMBOL_LIBRARY_FILTER *aFilter, const LIB_ID &aPreselectedLibId, int aUnit, int aConvert)
Call the library viewer to select symbol to import into schematic.
Definition: picksymbol.cpp:47
SYMBOL_EDITOR_SETTINGS * libeditconfig() const
SCH_DRAW_PANEL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.
void HardRedraw() override
Rebuild the GAL and redraws the screen.
SCHEMATIC_SETTINGS m_base_frame_defaults
These are only used by symbol_editor.
SYMBOL_LIB_TABLE * SelectSymLibTable(bool aOptional=false)
Display a dialog asking the user to select a symbol library table.
wxString SelectLibraryFromList()
Display a list of loaded libraries and allows the user to select a library.
void SyncView()
Mark all items for refresh.
const wxSize GetPageSizeIU() const override
Works off of GetPageSettings() to return the size of the paper page in the internal units of this par...
PICKED_SYMBOL PickSymbolFromLibTree(const SYMBOL_LIBRARY_FILTER *aFilter, std::vector< PICKED_SYMBOL > &aHistoryList, bool aUseLibBrowser, int aUnit, int aConvert, bool aShowFootprints, const LIB_ID *aHighlight=nullptr, bool aAllowFields=true)
Call the library viewer to select symbol to import into schematic.
Definition: picksymbol.cpp:93
virtual ~SCH_BASE_FRAME()
const TITLE_BLOCK & GetTitleBlock() const override
void CommonSettingsChanged(bool aEnvVarsChanged, bool aTextVarsChanged) override
Notification event that some of the common (suite-wide) settings have changed.
const VECTOR2I & GetGridOrigin() const override
Return the absolute coordinates of the origin of the snap grid.
bool saveSymbolLibTables(bool aGlobal, bool aProject)
Save Symbol Library Tables to disk.
void RefreshZoomDependentItems()
Mark selected items for refresh.
EESCHEMA_SETTINGS * eeconfig() const
void SetTitleBlock(const TITLE_BLOCK &aTitleBlock) override
LIB_SYMBOL * GetLibSymbol(const LIB_ID &aLibId, bool aUseCacheLib=false, bool aShowErrorMsg=false)
Load symbol from symbol library table.
KIGFX::SCH_RENDER_SETTINGS * GetRenderSettings()
virtual void UpdateItem(EDA_ITEM *aItem, bool isAddOrDelete=false, bool aUpdateRtree=false)
Mark an item for refresh.
void handleActivateEvent(wxActivateEvent &aEvent) override
Handle a window activation event.
virtual bool GetShowAllPins() const
Allow some frames to show/hide hidden pins.
COLOR_SETTINGS * GetColorSettings(bool aForceRefresh=false) const override
Returns a pointer to the active color theme settings.
const PAGE_INFO & GetPageSettings() const override
COLOR4D GetDrawBgColor() const override
void RemoveFromScreen(EDA_ITEM *aItem, SCH_SCREEN *aScreen)
Remove an item from the screen (and view) aScreen is the screen the item is located on,...
void AddToScreen(EDA_ITEM *aItem, SCH_SCREEN *aScreen)
Add an item to the screen (and view) aScreen is the screen the item is located on,...
COLOR4D GetLayerColor(SCH_LAYER_ID aLayer)
Helper to retrieve a layer color from the global color settings.
The symbol library editor main window.
Helper object to filter a list of libraries.
Object used to load, save, search, and otherwise manipulate symbol library files.
Symbol library viewer main window.
Hold the information shown in the lower right corner of a plot, printout, or editing view.
Definition: title_block.h:41
FRAME_T
The set of EDA_BASE_FRAME derivatives, typically stored in EDA_BASE_FRAME::m_Ident.
Definition: frame_type.h:33
SCH_LAYER_ID
Eeschema drawing layers.
Definition: layer_ids.h:341
The Cairo implementation of the graphics abstraction layer.
Definition: color4d.cpp:266
LIB_SYMBOL * SchGetLibSymbol(const LIB_ID &aLibId, SYMBOL_LIB_TABLE *aLibTable, SYMBOL_LIB *aCacheLib=nullptr, wxWindow *aParent=nullptr, bool aShowErrorMsg=false)
Load symbol from symbol library table.