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;
53 class LIB_VIEW_FRAME;
54 class LIB_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;
61 class LIBEDIT_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 
129  virtual bool GetShowAllPins() const { return true; }
130 
131  void SetPageSettings( const PAGE_INFO& aPageSettings ) override;
132  const PAGE_INFO& GetPageSettings () const override;
133  const wxSize GetPageSizeIU() const override;
134 
135  const wxPoint& GetGridOrigin() const override
136  {
137  static wxPoint zero;
138  return zero;
139  }
140  void SetGridOrigin( const wxPoint& aPoint ) override {}
141 
142  const TITLE_BLOCK& GetTitleBlock() const override;
143  void SetTitleBlock( const TITLE_BLOCK& aTitleBlock ) override;
144 
145  void UpdateStatusBar() override;
146 
172  const SCHLIB_FILTER* aFilter,
173  std::vector<COMPONENT_SELECTION>& aHistoryList,
174  bool aUseLibBrowser,
175  int aUnit,
176  int aConvert,
177  bool aShowFootprints,
178  const LIB_ID* aHighlight = nullptr,
179  bool aAllowFields = true );
180 
190  LIB_PART* GetLibPart( const LIB_ID& aLibId, bool aUseCacheLib = false,
191  bool aShowErrorMsg = false );
192 
193  LIB_PART* GetFlattenedLibPart( const LIB_ID& aLibId, bool aShowErrorMsg = false );
194 
208  COMPONENT_SELECTION SelectComponentFromLibBrowser( wxTopLevelWindow* aParent,
209  const SCHLIB_FILTER* aFilter,
210  const LIB_ID& aPreselectedLibid,
211  int aUnit, int aConvert );
212 
213  virtual void RedrawScreen( const wxPoint& aCenterPoint, bool aWarpPointer );
214 
215  virtual void CenterScreen( const wxPoint& aCenterPoint, bool aWarpPointer );
216 
217  void HardRedraw() override;
218 
223  void AddToScreen( EDA_ITEM* aItem, SCH_SCREEN* aScreen );
224 
229  void RemoveFromScreen( EDA_ITEM* aItem, SCH_SCREEN* aScreen );
230 
234  void UpdateItem( EDA_ITEM* aItem, bool isAddOrDelete = false );
235 
239  void RefreshSelection();
240 
244  void SyncView();
245 
250  virtual void OnModify() {}
251 
252  void CommonSettingsChanged( bool aEnvVarsChanged, bool aTextVarsChanged ) override;
253 
258 
259  COLOR_SETTINGS* GetColorSettings() override;
260 
261 protected:
269  bool saveSymbolLibTables( bool aGlobal, bool aProject );
270 
271 };
272 
273 #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 libedit. 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)
Class CAIRO_GAL is the cairo implementation of the graphics abstraction layer.
Definition: color4d.cpp:175
void HardRedraw() override
Rebuild the GAL and redraws the screen.
FRAME_T
Enum FRAME_T is the set of EDA_BASE_FRAME derivatives, typically stored in EDA_BASE_FRAME::m_Ident.
Definition: frame_type.h:34
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.
KIGFX::SCH_RENDER_SETTINGS * GetRenderSettings()
LIB_PART * GetLibPart(const LIB_ID &aLibId, bool aUseCacheLib=false, bool aShowErrorMsg=false)
Load symbol from symbol library table.
COLOR_SETTINGS * GetColorSettings() override
Returns a pointer to the active color theme settings.
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()
TITLE_BLOCK holds the information shown in the lower right corner of a plot, printout,...
Definition: title_block.h:40
Symbol library viewer main window.
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.
PAGE_INFO describes the page size and margins of a paper page on which to eventually print or plot.
Definition: page_info.h:54
SCH_DRAW_PANEL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.
Define a library symbol object.
virtual ~SCH_BASE_FRAME()
KIWAY is a minimalistic software bus for communications between various DLLs/DSOs (DSOs) within the s...
Definition: kiway.h:273
bool saveSymbolLibTables(bool aGlobal, bool aProject)
Saves Symbol Library Tables to disk.
SCH_LAYER_ID
Eeschema drawing layers.
COMPONENT_SELECTION SelectCompFromLibTree(const SCHLIB_FILTER *aFilter, std::vector< COMPONENT_SELECTION > &aHistoryList, bool aUseLibBrowser, int aUnit, int aConvert, bool aShowFootprints, const LIB_ID *aHighlight=nullptr, bool aAllowFields=true)
Function SelectComponentFromLib Calls the library viewer to select component to import into schematic...
Definition: getpart.cpp:88
SCHEMATIC_SETTINGS * m_defaults
void SetPageSettings(const PAGE_INFO &aPageSettings) override
LIBEDIT_SETTINGS * libeditconfig() const
COMPONENT_SELECTION SelectComponentFromLibBrowser(wxTopLevelWindow *aParent, const SCHLIB_FILTER *aFilter, const LIB_ID &aPreselectedLibid, int aUnit, int aConvert)
Function SelectComponentFromLibBrowser Calls the library viewer to select component to import into sc...
Definition: getpart.cpp:44
const PAGE_INFO & GetPageSettings() const override
void SetGridOrigin(const wxPoint &aPoint) override
void UpdateStatusBar() override
Update the status bar information.
The symbol library editor main window.
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
Saves common frame parameters to a configuration data file.
EDA_ITEM is a base class for most all the KiCad significant classes, used in schematics and boards.
Definition: eda_item.h:148
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:70
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: LIB_EDIT_FRAME, LIB_VIEW_FRAME,...
Object used to load, save, search, and otherwise manipulate symbol library files.
COLOR4D is the color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:100