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 <dick@softplc.com>
5  * Copyright (C) 2015-2020 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 <lib_id.h>
31 #include <page_info.h>
32 #include <sch_draw_panel.h>
33 #include <sch_screen.h>
34 #include <schematic_settings.h>
35 
36 #include <stddef.h>
37 #include <utility>
38 #include <vector>
39 #include <wx/event.h>
40 #include <wx/gdicmn.h>
41 #include <wx/string.h>
42 
43 #include <template_fieldnames.h>
44 
45 
46 namespace KIGFX
47 {
48  class SCH_RENDER_SETTINGS;
49 }
50 
51 class PAGE_INFO;
52 class TITLE_BLOCK;
54 class SYMBOL_EDIT_FRAME;
55 class LIB_PART;
56 class PART_LIB;
57 class SCHLIB_FILTER;
58 class LIB_ID;
59 class SYMBOL_LIB_TABLE;
60 class EESCHEMA_SETTINGS;
62 
77 LIB_PART* SchGetLibPart( const LIB_ID& aLibId, SYMBOL_LIB_TABLE* aLibTable,
78  PART_LIB* aCacheLib = NULL, wxWindow* aParent = NULL,
79  bool aShowErrorMsg = false );
80 
91 {
92 protected:
95 
97 
98 public:
99  SCH_BASE_FRAME( KIWAY* aKiway, wxWindow* aParent,
100  FRAME_T aWindowType,
101  const wxString& aTitle,
102  const wxPoint& aPosition, const wxSize& aSize,
103  long aStyle, const wxString & aFrameName );
104 
105  virtual ~SCH_BASE_FRAME();
106 
107  void createCanvas();
108 
109  SCH_DRAW_PANEL* GetCanvas() const override;
110  SCH_SCREEN* GetScreen() const override;
111 
112  EESCHEMA_SETTINGS* eeconfig() const;
113 
115 
116  void LoadSettings( APP_SETTINGS_BASE* aCfg ) override;
117  void SaveSettings( APP_SETTINGS_BASE* aCfg ) override;
118 
120 
122  {
123  return *m_defaults;
124  }
125 
126  COLOR4D GetDrawBgColor() const override;
127 
131  virtual bool GetShowAllPins() const { return true; }
132 
133  void SetPageSettings( const PAGE_INFO& aPageSettings ) override;
134  const PAGE_INFO& GetPageSettings () const override;
135  const wxSize GetPageSizeIU() const override;
136 
137  const wxPoint& GetGridOrigin() const override
138  {
139  static wxPoint zero;
140  return zero;
141  }
142  void SetGridOrigin( const wxPoint& aPoint ) override {}
143 
144  const TITLE_BLOCK& GetTitleBlock() const override;
145  void SetTitleBlock( const TITLE_BLOCK& aTitleBlock ) override;
146 
147  void UpdateStatusBar() override;
148 
174  std::vector<PICKED_SYMBOL>& aHistoryList,
175  bool aUseLibBrowser,
176  int aUnit,
177  int aConvert,
178  bool aShowFootprints,
179  const LIB_ID* aHighlight = nullptr,
180  bool aAllowFields = true );
181 
191  LIB_PART* GetLibPart( const LIB_ID& aLibId, bool aUseCacheLib = false,
192  bool aShowErrorMsg = false );
193 
194  LIB_PART* GetFlattenedLibPart( const LIB_ID& aLibId, bool aShowErrorMsg = false );
195 
209  PICKED_SYMBOL PickSymbolFromLibBrowser( wxTopLevelWindow* aParent,
210  const SCHLIB_FILTER* aFilter,
211  const LIB_ID& aPreselectedLibId,
212  int aUnit, int aConvert );
213 
214  virtual void RedrawScreen( const wxPoint& aCenterPoint, bool aWarpPointer );
215 
216  virtual void CenterScreen( const wxPoint& aCenterPoint, bool aWarpPointer );
217 
218  void HardRedraw() override;
219 
224  void AddToScreen( EDA_ITEM* aItem, SCH_SCREEN* aScreen );
225 
230  void RemoveFromScreen( EDA_ITEM* aItem, SCH_SCREEN* aScreen );
231 
235  void UpdateItem( EDA_ITEM* aItem, bool isAddOrDelete = false );
236 
240  void RefreshSelection();
241 
245  void SyncView();
246 
251  virtual void OnModify() {}
252 
253  void CommonSettingsChanged( bool aEnvVarsChanged, bool aTextVarsChanged ) override;
254 
259 
260  COLOR_SETTINGS* GetColorSettings() const override;
261 
262 protected:
270  bool saveSymbolLibTables( bool aGlobal, bool aProject );
271 
272 };
273 
274 #endif // SCH_BASE_FRAME_H_
void RefreshSelection()
Mark selected items for refresh.
SCH_BASE_FRAME(KIWAY *aKiway, wxWindow *aParent, FRAME_T aWindowType, const wxString &aTitle, const wxPoint &aPosition, const wxSize &aSize, long aStyle, const wxString &aFrameName)
SCHEMATIC_SETTINGS m_base_frame_defaults
These are only used by symbol_editor. Eeschema should be using the one inside the SCHEMATIC.
void UpdateItem(EDA_ITEM *aItem, bool isAddOrDelete=false)
Mark an item for refresh.
LIB_PART * SchGetLibPart(const LIB_ID &aLibId, SYMBOL_LIB_TABLE *aLibTable, PART_LIB *aCacheLib=NULL, wxWindow *aParent=NULL, bool aShowErrorMsg=false)
Load symbol from symbol library table.
virtual void RedrawScreen(const wxPoint &aCenterPoint, bool aWarpPointer)
The Cairo implementation of the graphics abstraction layer.
Definition: color4d.cpp:175
void HardRedraw() override
Rebuild the GAL and redraws the screen.
FRAME_T
The set of EDA_BASE_FRAME derivatives, typically stored in EDA_BASE_FRAME::m_Ident.
Definition: frame_type.h:32
LIB_PART * GetFlattenedLibPart(const LIB_ID &aLibId, bool aShowErrorMsg=false)
SCH_SCREEN * GetScreen() const override
Return a pointer to a BASE_SCREEN or one of its derivatives.
COLOR4D GetLayerColor(SCH_LAYER_ID aLayer)
Helper to retrieve a layer color from the global color settings.
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,...
const wxPoint & GetGridOrigin() const override
Return the absolute coordinates of the origin of the snap grid.
Symbol library viewer main window.
KIGFX::SCH_RENDER_SETTINGS * GetRenderSettings()
LIB_PART * GetLibPart(const LIB_ID &aLibId, bool aUseCacheLib=false, bool aShowErrorMsg=false)
Load symbol from symbol library table.
A logical library item identifier and consists of various portions much like a URI.
Definition: lib_id.h:51
The base class for create windows for drawing purpose.
SCHEMATIC_SETTINGS & GetDefaults()
Hold the information shown in the lower right corner of a plot, printout, or editing view.
Definition: title_block.h:40
const wxSize GetPageSizeIU() const override
Works off of GetPageSettings() to return the size of the paper page in the internal units of this par...
void LoadSettings(APP_SETTINGS_BASE *aCfg) override
Load common frame parameters from a configuration file.
EESCHEMA_SETTINGS * eeconfig() const
APP_SETTINGS_BASE is a settings class that should be derived for each standalone KiCad application.
Definition: app_settings.h:99
#define NULL
void SetTitleBlock(const TITLE_BLOCK &aTitleBlock) override
virtual void OnModify()
Must be called after a model change in order to set the "modify" flag and do other frame-specific pro...
void SyncView()
Mark all items for refresh.
PICKED_SYMBOL PickSymbolFromLibTree(const SCHLIB_FILTER *aFilter, std::vector< PICKED_SYMBOL > &aHistoryList, bool aUseLibBrowser, int aUnit, int aConvert, bool aShowFootprints, const LIB_ID *aHighlight=nullptr, bool aAllowFields=true)
Function PickSymbolFromLibTree Calls the library viewer to select component to import into schematic.
Definition: getpart.cpp:89
Describe the page size and margins of a paper page on which to eventually print or plot.
Definition: page_info.h:53
SCH_DRAW_PANEL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.
Define a library symbol object.
Definition: lib_symbol.h:93
virtual ~SCH_BASE_FRAME()
A minimalistic software bus for communications between various DLLs/DSOs (DSOs) within the same KiCad...
Definition: kiway.h:260
bool saveSymbolLibTables(bool aGlobal, bool aProject)
Saves Symbol Library Tables to disk.
SYMBOL_EDITOR_SETTINGS * libeditconfig() const
SCH_LAYER_ID
Eeschema drawing layers.
SCHEMATIC_SETTINGS * m_defaults
COLOR4D GetDrawBgColor() const override
COLOR_SETTINGS * GetColorSettings() const override
Returns a pointer to the active color theme settings.
void SetPageSettings(const PAGE_INFO &aPageSettings) override
PICKED_SYMBOL PickSymbolFromLibBrowser(wxTopLevelWindow *aParent, const SCHLIB_FILTER *aFilter, const LIB_ID &aPreselectedLibId, int aUnit, int aConvert)
Function PickSymbolFromLibBrowser Calls the library viewer to select component to import into schemat...
Definition: getpart.cpp:43
const PAGE_INFO & GetPageSettings() const override
void SetGridOrigin(const wxPoint &aPoint) override
void UpdateStatusBar() override
Update the status bar information.
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,...
virtual bool GetShowAllPins() const
Allow some frames to show/hide hidden pins.
const TITLE_BLOCK & GetTitleBlock() const override
void SaveSettings(APP_SETTINGS_BASE *aCfg) override
Save common frame parameters to a configuration data file.
A base class for most all the KiCad significant classes used in schematics and boards.
Definition: eda_item.h:149
void CommonSettingsChanged(bool aEnvVarsChanged, bool aTextVarsChanged) override
Notification event that some of the common (suite-wide) settings have changed.
These settings were stored in SCH_BASE_FRAME previously.
SCH_RENDER_SETTINGS Stores schematic-specific render settings.
Definition: sch_painter.h:72
Color settings are a bit different than most of the settings objects in that there can be more than o...
virtual void CenterScreen(const wxPoint &aCenterPoint, bool aWarpPointer)
A shim class between EDA_DRAW_FRAME and several derived classes: SYMBOL_EDIT_FRAME,...
Object used to load, save, search, and otherwise manipulate symbol library files.
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:98
The symbol library editor main window.