KiCad PCB EDA Suite
Loading...
Searching...
No Matches
sch_edit_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 Jean-Pierre Charras, jp.charras wanadoo.fr
5 * Copyright (C) 2008 Wayne Stambaugh <[email protected]>
6 * Copyright (C) 2023 CERN (www.cern.ch)
7 * Copyright The KiCad Developers, see AUTHORS.txt for contributors.
8 *
9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License
11 * as published by the Free Software Foundation; either version 2
12 * of the License, or (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, you may find one here:
21 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
22 * or you may search the http://www.gnu.org website for the version 2 license,
23 * or you may write to the Free Software Foundation, Inc.,
24 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
25 */
26
27#ifndef SCH_EDIT_FRAME_H
28#define SCH_EDIT_FRAME_H
29
30#include <stddef.h>
31#include <vector>
32#include <wx/cmndata.h>
33#include <wx/event.h>
34#include <wx/gdicmn.h>
35#include <wx/string.h>
36#include <wx/treectrl.h>
37#include <wx/utils.h>
38
39#include <core/typeinfo.h>
40#include <eda_base_frame.h>
41#include <eeschema_settings.h>
42#include <math/box2.h>
43#include <sch_base_frame.h>
44#include <template_fieldnames.h>
45
46class SCH_ITEM;
47class EDA_ITEM;
48class SCH_LINE;
49class SCH_TEXT;
50class SCH_BITMAP;
51class SCH_SHEET;
52class SCH_SHEET_PATH;
53class SCH_SHEET_PIN;
54class SCH_SYMBOL;
55class SCH_FIELD;
56class SCH_JUNCTION;
57class SCHEMATIC;
58class SCH_COMMIT;
61class DIALOG_ERC;
63class RESCUER;
64class HIERARCHY_PANE;
65class API_HANDLER_SCH;
68class wxSearchCtrl;
69class BITMAP_BUTTON;
70
71
78
79
80wxDECLARE_EVENT( EDA_EVT_SCHEMATIC_CHANGING, wxCommandEvent );
81wxDECLARE_EVENT( EDA_EVT_SCHEMATIC_CHANGED, wxCommandEvent );
82
83
87class NET_NAVIGATOR_ITEM_DATA : public wxTreeItemData
88{
89public:
90 NET_NAVIGATOR_ITEM_DATA( const SCH_SHEET_PATH& aSheetPath, const SCH_ITEM* aItem ) :
91 m_sheetPath( aSheetPath ),
92 m_item( aItem )
93 {
94 }
95
97 m_item( nullptr )
98 {
99 }
100
102 const SCH_ITEM* GetItem() const { return m_item; }
103
104 bool operator==( const NET_NAVIGATOR_ITEM_DATA& aRhs ) const
105 {
106 return ( m_sheetPath == aRhs.m_sheetPath ) && ( m_item == aRhs.m_item );
107 }
108
110 {
111 if( this == &aItemData )
112 return *this;
113
114 m_sheetPath = aItemData.m_sheetPath;
115 m_item = aItemData.m_item;
116
117 return *this;
118 }
119
120private:
123};
124
125
130{
131public:
132 SCH_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent );
133 ~SCH_EDIT_FRAME() override;
134
135 SCH_SCREEN* GetScreen() const override;
136
137 SELECTION& GetCurrentSelection() override;
138
139 SCHEMATIC& Schematic() const;
140
141 std::unique_ptr<GRID_HELPER> MakeGridHelper() override;
142
146 bool GetShowAllPins() const override;
147
151 void SaveProjectLocalSettings() override;
152
158 bool LoadProjectSettings();
159
163 void LoadDrawingSheet();
164
165 void ShowSchematicSetupDialog( const wxString& aInitialPage = wxEmptyString );
166
167 void LoadSettings( APP_SETTINGS_BASE* aCfg ) override;
168 void SaveSettings( APP_SETTINGS_BASE* aCfg ) override;
169
171
172 void setupUIConditions() override;
173
179 bool IsContentModified() const override;
180
185 void OnModify() override;
186
187 SEVERITY GetSeverity( int aErrorCode ) const override;
188
192 wxString GetScreenDesc() const override;
193 wxString GetFullScreenDesc() const override;
194
215 void ExecuteRemoteCommand( const char* cmdline ) override;
216
217 void KiwayMailIn( KIWAY_EXPRESS& aEvent ) override;
218
223
227 void AutoRotateItem( SCH_SCREEN* aScreen, SCH_ITEM* aItem );
228
232 void UpdateHierarchyNavigator( bool aRefreshNetNavigator = true, bool aClear = false );
233
241
247
252
253 void AddVariant();
254
255 void RemoveVariant();
256
264 void UpdateVariantSelectionCtrl( const wxArrayString& aVariantNames );
265
266 void SetCurrentVariant( const wxString& aVariantName );
267
268 void onVariantSelected( wxCommandEvent& aEvent );
269
275 void TestDanglingEnds();
276
286 void SendSelectItemsToPcb( const std::vector<EDA_ITEM*>& aItems, bool aForce );
287
293 void SendCrossProbeNetName( const wxString& aNetName );
294
300 void SetCrossProbeConnection( const SCH_CONNECTION* aConnection );
301
306
307 const wxString& GetHighlightedConnection() const
308 {
309 return m_highlightedConn;
310 }
311
312 void SetHighlightedConnection( const wxString& aConnection,
313 const NET_NAVIGATOR_ITEM_DATA* aSelection = nullptr );
314
316
325 bool ReadyToNetlist( const wxString& aAnnotateMessage );
326
342 bool WriteNetListFile( int aFormat, const wxString& aFullFileName, unsigned aNetlistOptions,
343 REPORTER* aReporter = nullptr );
344
352 void DeleteAnnotation( ANNOTATE_SCOPE_T aAnnotateScope, bool aRecursive, REPORTER& aReporter );
353
378 void AnnotateSymbols( SCH_COMMIT* aCommit, ANNOTATE_SCOPE_T aAnnotateScope,
379 ANNOTATE_ORDER_T aSortOption, ANNOTATE_ALGO_T aAlgoOption,
380 bool aRecursive, int aStartNumber, bool aResetAnnotation,
381 bool aRepairTimestamps, REPORTER& aReporter );
382
399 int CheckAnnotate( ANNOTATION_ERROR_HANDLER aErrorHandler,
400 ANNOTATE_SCOPE_T aAnnotateScope = ANNOTATE_ALL,
401 bool aRecursive = true );
402
409 int ModalAnnotate( const wxString& aMessage );
410
411 // Functions used for hierarchy handling
413
414 void SetCurrentSheet( const SCH_SHEET_PATH& aSheet );
415
416 void UpdateItem( EDA_ITEM* aItem, bool isAddOrDelete = false, bool aUpdateRtree = false ) override;
417
423 void HardRedraw() override;
424
428 void DisplayCurrentSheet();
429
434
441 void OnPageSettingsChange() override;
442
449
450 wxPageSetupDialogData& GetPageSetupData() { return m_pageSetupData; }
451
452 void NewProject();
453 void LoadProject();
454
462 bool SaveProject( bool aSaveAs = false );
463
464 bool OpenProjectFiles( const std::vector<wxString>& aFileSet, int aCtl = 0 ) override;
465
466 void SetSchematic( SCHEMATIC* aSchematic );
467
468 wxString GetCurrentFileName() const override;
469
477 bool AskToSaveChanges();
478
479 SCH_JUNCTION* AddJunction( SCH_COMMIT* aCommit, SCH_SCREEN* aScreen, const VECTOR2I& aPos );
480
490 bool TrimWire( SCH_COMMIT* aCommit, const VECTOR2I& aStart, const VECTOR2I& aEnd );
491
492 void OnOpenPcbnew();
493 void OnOpenCvpcb();
494 void OnUpdatePCB();
495 void OnAnnotate();
496
504 bool CheckSheetForRecursion( SCH_SHEET* aSheet, SCH_SHEET_PATH* aCurrentSheet );
505
517 bool AllowCaseSensitiveFileNameClashes( const wxString& aOldName,
518 const wxString& aSchematicFileName );
519
553 bool EditSheetProperties( SCH_SHEET* aSheet, SCH_SHEET_PATH* aHierarchy,
554 bool* aIsUndoable = nullptr, bool* aClearAnnotationNewItems = nullptr,
555 bool* aUpdateHierarchyNavigator = nullptr,
556 wxString* aSourceSheetFilename = nullptr );
557
558 void InitSheet( SCH_SHEET* aSheet, const wxString& aNewFilename );
559
610 bool LoadSheetFromFile( SCH_SHEET* aSheet, SCH_SHEET_PATH* aCurrentSheet, const wxString& aFileName,
611 bool aSkipRecursionCheck = false, bool aSkipLibCheck = false );
612
618 void DeleteJunction( SCH_COMMIT* aCommit, SCH_ITEM* aItem );
619
620 void UpdateHopOveredWires( SCH_ITEM* aItem );
621
622 void SelectUnit( SCH_SYMBOL* aSymbol, int aUnit );
623
624 void SelectBodyStyle( SCH_SYMBOL* aSymbol, int aBodyStyle );
625
626 void SetAltPinFunction( SCH_PIN* aPin, const wxString& aFunction );
627
628 /* Undo - redo */
629
645 void SaveCopyInUndoList( SCH_SCREEN* aScreen, SCH_ITEM* aItemToCopy, UNDO_REDO aTypeCommand,
646 bool aAppend );
647
655 void SaveCopyInUndoList( const PICKED_ITEMS_LIST& aItemsList, UNDO_REDO aTypeCommand,
656 bool aAppend );
657
664
676 void ClearUndoORRedoList( UNDO_REDO_LIST whichList, int aItemCount = -1 ) override;
677
681 void SaveCopyForRepeatItem( const SCH_ITEM* aItem );
682 void AddCopyForRepeatItem( const SCH_ITEM* aItem );
683
689 const std::vector<std::unique_ptr<SCH_ITEM>>& GetRepeatItems() const
690 {
691 return m_items_to_repeat;
692 }
693
700 {
701 m_items_to_repeat.clear();
702 }
703
704 EDA_ITEM* ResolveItem( const KIID& aId, bool aAllowNullptrReturn = false ) const override;
705
712
719 bool CreateArchiveLibrary( const wxString& aFileName );
720
721 bool SaveSheetAsDesignBlock( const wxString& aLibraryName, SCH_SHEET_PATH& aSheetPath );
722
723 bool SaveSelectionAsDesignBlock( const wxString& aLibraryName );
724
725 bool SaveSheetToDesignBlock( const LIB_ID& aLibId, SCH_SHEET_PATH& aSheetPath );
726
727 bool SaveSelectionToDesignBlock( const LIB_ID& aLibId );
728
730
731 void SetNetListerCommand( const wxString& aCommand ) { m_netListerCommand = aCommand; }
732
736 void DefaultExecFlags() { m_exec_flags = wxEXEC_SYNC; }
737
743 void SetExecFlags( const int aFlags ) { m_exec_flags |= aFlags; }
744
751 void ClearExecFlags( const int aFlags ) { m_exec_flags &= ~( aFlags ); }
752
753 wxString GetNetListerCommand() const { return m_netListerCommand; }
754
758 void RecalculateConnections( SCH_COMMIT* aCommit, SCH_CLEANUP_FLAGS aCleanupFlags,
759 PROGRESS_REPORTER* aProgressReporter = nullptr );
760
764 void CommonSettingsChanged( int aFlags ) override;
765
767
768 void ShowChangedLanguage() override;
769
770 void SetScreen( BASE_SCREEN* aScreen ) override;
771
772 const BOX2I GetDocumentExtents( bool aIncludeAllVisible = true ) const override;
773
776
777 void FocusOnItem( EDA_ITEM* aItem, bool aAllowScroll = true ) override;
778
780
789 void SaveSymbolToSchematic( const LIB_SYMBOL& aSymbol, const KIID& aSchematicSymbolUUID );
790
796
800 void IntersheetRefUpdate( SCH_GLOBALLABEL* aItem ) override;
801
802 void ShowAllIntersheetRefs( bool aShow );
803
808
812 void ToggleSearch();
813
814 void ToggleProperties() override;
815
816 void ToggleLibraryTree() override;
817
819
821
823
824 wxTreeCtrl* GetNetNavigator() { return m_netNavigator; }
825
827
831 static const wxString SchematicHierarchyPaneName()
832 {
833 return wxT( "SchematicHierarchy" );
834 }
835
839 static const wxString SearchPaneName() { return wxT( "Search" ); }
840
841 bool IsSearchPaneShown() { return m_auimgr.GetPane( SearchPaneName() ).IsShown(); }
842
843 void FocusSearch();
844
854 void AddSchematicChangeListener( wxEvtHandler* aListener );
855
859 void RemoveSchematicChangeListener( wxEvtHandler* aListener );
860
861 static const wxString NetNavigatorPaneName()
862 {
863 return wxS( "NetNavigator" );
864 }
865
866 void RefreshNetNavigator( const NET_NAVIGATOR_ITEM_DATA* aSelection = nullptr );
867
868 void MakeNetNavigatorNode( const wxString& aNetName, wxTreeItemId aParentId,
869 const NET_NAVIGATOR_ITEM_DATA* aSelection,
870 bool aSingleSheetSchematic );
871
872 void SelectNetNavigatorItem( const NET_NAVIGATOR_ITEM_DATA* aSelection = nullptr );
873
874 const SCH_ITEM* SelectNextPrevNetNavigatorItem( bool aNext );
875
876 void ToggleNetNavigator();
877 void FindNetInInspector( const wxString& aNetName );
878
883
884 DECLARE_EVENT_TABLE()
885
886protected:
892 bool doAutoSave() override;
893
894 void configureToolbars() override;
895
896 void doReCreateMenuBar() override;
897
901 void sendNetlistToCvpcb();
902
903 void onSize( wxSizeEvent& aEvent );
904
905 void saveProjectSettings() override;
906
907 void onCloseSymbolDiffDialog( wxCommandEvent& aEvent );
908
909 void onCloseErcDialog( wxCommandEvent& aEvent );
910
911 void onCloseSymbolFieldsTableDialog( wxCommandEvent& aEvent );
912
913 void unitsChangeRefresh() override;
914
915 void updateSelectionFilterVisbility() override;
916
917#ifdef KICAD_IPC_API
918 void onPluginAvailabilityChanged( wxCommandEvent& aEvt );
919#endif
920
921private:
922 // Called when resizing the Hierarchy Navigator panel
923 void OnResizeHierarchyNavigator( wxSizeEvent& aEvent );
924
925 void onResizeNetNavigator( wxSizeEvent& aEvent );
926
927 // Sets up the tool framework
928 void setupTools();
929
930 void OnExit( wxCommandEvent& event );
931
932 void OnLoadFile( wxCommandEvent& event );
933 void OnImportProject( wxCommandEvent& event );
934
935 void OnClearFileHistory( wxCommandEvent& aEvent );
936
937 bool canCloseWindow( wxCloseEvent& aCloseEvent ) override;
938 void doCloseWindow() override;
939
948 void updateTitle();
949
953 void initScreenZoom();
954
964
971 bool importFile( const wxString& aFileName, int aFileType,
972 const std::map<std::string, UTF8>* aProperties = nullptr );
973
981 bool saveSchematicFile( SCH_SHEET* aSheet, const wxString& aSavePath );
982
988 void mapExistingAnnotation( std::map<wxString, wxString>& aMap );
989
991
992 const wxString& getAutoSaveFileName() const;
993
995
996 void onNetNavigatorFilterChanged( wxCommandEvent& aEvent );
997 void onNetNavigatorKey( wxKeyEvent& aEvent );
998 void onNetNavigatorItemMenu( wxTreeEvent& aEvent );
999 void onNetNavigatorContextMenu( wxContextMenuEvent& aEvent );
1000 void onNetNavigatorMenuCommand( wxCommandEvent& aEvent );
1001 void showNetNavigatorMenu( const wxTreeItemId& aItem );
1002
1003 void onNetNavigatorSelection( wxTreeEvent& aEvent );
1004
1005 void onNetNavigatorSelChanging( wxTreeEvent& aEvent );
1006
1008
1009 void StartCrossProbeFlash( const std::vector<SCH_ITEM*>& aItems );
1010 void OnCrossProbeFlashTimer( wxTimerEvent& aEvent );
1011
1012private:
1013 // The schematic editor control class should be able to access some internal
1014 // functions of the editor frame.
1016
1017 enum
1018 {
1019 ID_NET_NAVIGATOR_EXPAND_ALL = wxID_HIGHEST + 400,
1024 };
1025
1028
1029 wxPageSetupDialogData m_pageSetupData;
1030 std::vector<std::unique_ptr<SCH_ITEM>> m_items_to_repeat;
1031
1036
1042
1043
1044 wxTreeCtrl* m_netNavigator;
1049
1050 bool m_syncingPcbToSchSelection; // Recursion guard when synchronizing selection from PCB
1051 // Cross-probe flashing support
1054 std::vector<KIID> m_crossProbeFlashItems;
1058
1059 std::vector<wxEvtHandler*> m_schematicChangeListeners;
1060
1061 std::vector<LIB_ID> m_designBlockHistoryList;
1063
1065
1066#ifdef KICAD_IPC_API
1067 std::unique_ptr<API_HANDLER_SCH> m_apiHandler;
1068#endif
1069};
1070
1071
1072#endif // SCH_EDIT_FRAME_H
PLUGIN_ACTION_SCOPE
Definition api_plugin.h:56
BOX2< VECTOR2I > BOX2I
Definition box2.h:922
APP_SETTINGS_BASE is a settings class that should be derived for each standalone KiCad application.
Handles how to draw a screen (a board, a schematic ...)
Definition base_screen.h:41
A bitmap button widget that behaves like an AUI toolbar item's button when it is drawn.
UNDO_REDO_LIST
Specify whether we are interacting with the undo or redo stacks.
wxAuiManager m_auimgr
A base class for most all the KiCad significant classes used in schematics and boards.
Definition eda_item.h:98
Definition kiid.h:49
Carry a payload from one KIWAY_PLAYER to another within a PROJECT.
A minimalistic software bus for communications between various DLLs/DSOs (DSOs) within the same KiCad...
Definition kiway.h:292
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:85
Tree view item data for the net navigator.
const SCH_ITEM * m_item
const SCH_ITEM * GetItem() const
bool operator==(const NET_NAVIGATOR_ITEM_DATA &aRhs) const
NET_NAVIGATOR_ITEM_DATA(const SCH_SHEET_PATH &aSheetPath, const SCH_ITEM *aItem)
SCH_SHEET_PATH & GetSheetPath()
NET_NAVIGATOR_ITEM_DATA & operator=(const NET_NAVIGATOR_ITEM_DATA &aItemData)
A holder to handle information on schematic or board items.
A progress reporter interface for use in multi-threaded environments.
A pure virtual class used to derive REPORTER objects from.
Definition reporter.h:73
Holds all the data relating to one schematic.
Definition schematic.h:88
SCH_BASE_FRAME(KIWAY *aKiway, wxWindow *aParent, FRAME_T aWindowType, const wxString &aTitle, const wxPoint &aPosition, const wxSize &aSize, long aStyle, const wxString &aFrameName)
Object to handle a bitmap image that can be inserted in a schematic.
Definition sch_bitmap.h:40
Each graphical item can have a SCH_CONNECTION describing its logical connection (to a bus or net).
void ShowSchematicSetupDialog(const wxString &aInitialPage=wxEmptyString)
void RollbackSchematicFromUndo()
Perform an undo of the last edit without logging a corresponding redo.
void DefaultExecFlags()
Reset the execution flags to defaults for external netlist and bom generators.
bool IsSyncingSelection()
void OnCrossProbeFlashTimer(wxTimerEvent &aEvent)
bool SaveSheetToDesignBlock(const LIB_ID &aLibId, SCH_SHEET_PATH &aSheetPath)
void ToggleProperties() override
bool IsContentModified() const override
Get if the current schematic has been modified but not saved.
void RefreshOperatingPointDisplay()
Refresh the display of any operating points.
wxPageSetupDialogData m_pageSetupData
SCH_DESIGN_BLOCK_PANE * GetDesignBlockPane() const
SELECTION & GetCurrentSelection() override
Get the current selection from the canvas area.
void mapExistingAnnotation(std::map< wxString, wxString > &aMap)
Fill a map of uuid -> reference from the currently loaded schematic.
Definition annotate.cpp:39
const wxString & getAutoSaveFileName() const
wxTreeCtrl * m_netNavigator
std::vector< std::unique_ptr< SCH_ITEM > > m_items_to_repeat
For the repeat-last-item cmd.
void FocusOnItem(EDA_ITEM *aItem, bool aAllowScroll=true) override
Focus on a particular canvas item.
void onResizeNetNavigator(wxSizeEvent &aEvent)
void updateSelectionFilterVisbility() override
Selection filter panel doesn't have a dedicated visibility control, so show it if any other AUI panel...
void onNetNavigatorSelChanging(wxTreeEvent &aEvent)
void SetExecFlags(const int aFlags)
Set (adds) specified flags for next execution of external generator of the netlist or bom.
bool AllowCaseSensitiveFileNameClashes(const wxString &aOldName, const wxString &aSchematicFileName)
Check aSchematicFileName for a potential file name case sensitivity clashes.
Definition sheet.cpp:726
void OnModify() override
Must be called after a schematic change in order to set the "modify" flag and update other data struc...
void showNetNavigatorMenu(const wxTreeItemId &aItem)
void ShowAllIntersheetRefs(bool aShow)
void SaveProjectLocalSettings() override
Save changes to the project settings to the project (.pro) file.
bool OpenProjectFiles(const std::vector< wxString > &aFileSet, int aCtl=0) override
Open a project or set of files given by aFileList.
void DeleteAnnotation(ANNOTATE_SCOPE_T aAnnotateScope, bool aRecursive, REPORTER &aReporter)
Clear the current symbol annotation.
Definition annotate.cpp:60
void doCloseWindow() override
DIALOG_BOOK_REPORTER * m_diffSymbolDialog
void ToggleLibraryTree() override
void SetHighlightedConnection(const wxString &aConnection, const NET_NAVIGATOR_ITEM_DATA *aSelection=nullptr)
SCH_SCREEN * GetScreen() const override
Return a pointer to a BASE_SCREEN or one of its derivatives.
bool ReadyToNetlist(const wxString &aAnnotateMessage)
Check if we are ready to write a netlist file for the current schematic.
wxWindow * createHighlightedNetNavigator()
void onCloseErcDialog(wxCommandEvent &aEvent)
void InitSheet(SCH_SHEET *aSheet, const wxString &aNewFilename)
Definition sheet.cpp:112
void UpdateHierarchySelection()
Update the hierarchy navigation tree selection (cross-probe from schematic to hierarchy pane).
void SaveCopyInUndoList(SCH_SCREEN *aScreen, SCH_ITEM *aItemToCopy, UNDO_REDO aTypeCommand, bool aAppend)
Create a copy of the current schematic item, and put it in the undo list.
bool m_syncingPcbToSchSelection
void DirtyHighlightedConnection()
bool SaveSelectionToDesignBlock(const LIB_ID &aLibId)
void SetScreen(BASE_SCREEN *aScreen) override
bool AskToSaveChanges()
Check if any of the screens has unsaved changes and asks the user whether to save or drop them.
wxString GetNetListerCommand() const
friend class SCH_EDITOR_CONTROL
bool doAutoSave() override
Save the schematic files that have been modified and not yet saved.
wxChoice * m_currentVariantCtrl
void SaveSymbolToSchematic(const LIB_SYMBOL &aSymbol, const KIID &aSchematicSymbolUUID)
Update a schematic symbol from a LIB_SYMBOL.
void SetCurrentVariant(const wxString &aVariantName)
void onSize(wxSizeEvent &aEvent)
DIALOG_SCHEMATIC_SETUP * m_schematicSetupDialog
bool LoadSheetFromFile(SCH_SHEET *aSheet, SCH_SHEET_PATH *aCurrentSheet, const wxString &aFileName, bool aSkipRecursionCheck=false, bool aSkipLibCheck=false)
Load a the KiCad schematic file aFileName into the sheet aSheet.
Definition sheet.cpp:171
void SetAltPinFunction(SCH_PIN *aPin, const wxString &aFunction)
void CommonSettingsChanged(int aFlags) override
Called after the preferences dialog is run.
void UpdateVariantSelectionCtrl(const wxArrayString &aVariantNames)
Update the variant name control on the main toolbar.
void doReCreateMenuBar() override
void ShowChangedLanguage() override
Redraw the menus and what not in current language.
void SendSelectItemsToPcb(const std::vector< EDA_ITEM * > &aItems, bool aForce)
Send items to board editor for selection.
BITMAP_BUTTON * m_netNavigatorMenuButton
void onNetNavigatorKey(wxKeyEvent &aEvent)
wxPageSetupDialogData & GetPageSetupData()
void configureToolbars() override
std::vector< wxEvtHandler * > m_schematicChangeListeners
void AnnotateSymbols(SCH_COMMIT *aCommit, ANNOTATE_SCOPE_T aAnnotateScope, ANNOTATE_ORDER_T aSortOption, ANNOTATE_ALGO_T aAlgoOption, bool aRecursive, int aStartNumber, bool aResetAnnotation, bool aRepairTimestamps, REPORTER &aReporter)
Annotate the symbols in the schematic that are not currently annotated.
Definition annotate.cpp:212
void SendCrossProbeClearHighlight()
Tell Pcbnew to clear the existing highlighted net, if one exists.
void HardRedraw() override
Rebuild the GAL and redraw the screen.
void OnClearFileHistory(wxCommandEvent &aEvent)
void MakeNetNavigatorNode(const wxString &aNetName, wxTreeItemId aParentId, const NET_NAVIGATOR_ITEM_DATA *aSelection, bool aSingleSheetSchematic)
bool GetShowAllPins() const override
Allow edit frame to show/hide hidden pins.
void SelectBodyStyle(SCH_SYMBOL *aSymbol, int aBodyStyle)
bool WriteNetListFile(int aFormat, const wxString &aFullFileName, unsigned aNetlistOptions, REPORTER *aReporter=nullptr)
Create a netlist file.
void ClearUndoORRedoList(UNDO_REDO_LIST whichList, int aItemCount=-1) override
Free the undo or redo list from aList element.
SCHEMATIC * m_schematic
The currently loaded schematic.
void onNetNavigatorFilterChanged(wxCommandEvent &aEvent)
void onCloseSymbolFieldsTableDialog(wxCommandEvent &aEvent)
SCH_SHEET_PATH & GetCurrentSheet() const
void RecalculateConnections(SCH_COMMIT *aCommit, SCH_CLEANUP_FLAGS aCleanupFlags, PROGRESS_REPORTER *aProgressReporter=nullptr)
Generate the connection data for the entire schematic hierarchy.
wxString m_netNavigatorFilterValue
void OnLoadFile(wxCommandEvent &event)
const SCH_ITEM * GetSelectedNetNavigatorItem() const
PLUGIN_ACTION_SCOPE PluginActionScope() const override
SCHEMATIC & Schematic() const
void updateTitle()
Set the main window title bar text.
void ExecuteRemoteCommand(const char *cmdline) override
Execute a remote command sent via a socket on port KICAD_SCH_PORT_SERVICE_NUMBER (which defaults to 4...
const std::vector< std::unique_ptr< SCH_ITEM > > & GetRepeatItems() const
Return the items which are to be repeated with the insert key.
void SetSchematic(SCHEMATIC *aSchematic)
bool saveSchematicFile(SCH_SHEET *aSheet, const wxString &aSavePath)
Save aSheet to a schematic file.
void ToggleSearch()
Toggle the show/hide state of Search pane.
void DrawCurrentSheetToClipboard()
Use the wxWidgets print code to draw an image of the current sheet onto the clipboard.
Definition sheet.cpp:628
bool LoadProjectSettings()
Load the KiCad project file (*.pro) settings specific to Eeschema.
void LoadSettings(APP_SETTINGS_BASE *aCfg) override
Load common frame parameters from a configuration file.
void RefreshNetNavigator(const NET_NAVIGATOR_ITEM_DATA *aSelection=nullptr)
wxSearchCtrl * m_netNavigatorFilter
wxString GetFullScreenDesc() const override
static const wxString SearchPaneName()
DIALOG_BOOK_REPORTER * GetSymbolDiffDialog()
bool canCloseWindow(wxCloseEvent &aCloseEvent) override
wxTreeCtrl * GetNetNavigator()
void onNetNavigatorContextMenu(wxContextMenuEvent &aEvent)
int m_exec_flags
Flags of the wxExecute() function to call a custom net list generator.
void RecomputeIntersheetRefs()
Update the schematic's page reference map for all global labels, and refresh the labels so that they ...
bool checkForNoFullyDefinedLibIds(SCH_SHEET *aSheet)
Verify that the symbol library links aSheet and all of its child sheets have been remapped to the sym...
Definition sheet.cpp:90
DIALOG_ERC * GetErcDialog()
void sendNetlistToCvpcb()
Send the KiCad netlist over to CVPCB.
bool EditSheetProperties(SCH_SHEET *aSheet, SCH_SHEET_PATH *aHierarchy, bool *aIsUndoable=nullptr, bool *aClearAnnotationNewItems=nullptr, bool *aUpdateHierarchyNavigator=nullptr, wxString *aSourceSheetFilename=nullptr)
Edit an existing sheet or add a new sheet to the schematic.
Definition sheet.cpp:607
SCH_DESIGN_BLOCK_PANE * m_designBlocksPane
bool updateAutoSaveFile()
void UpdateHierarchyNavigator(bool aRefreshNetNavigator=true, bool aClear=false)
Update the hierarchy navigation tree and history.
SCH_EDIT_FRAME(KIWAY *aKiway, wxWindow *aParent)
void ToggleSchematicHierarchy()
Toggle the show/hide state of the left side schematic navigation panel.
bool importFile(const wxString &aFileName, int aFileType, const std::map< std::string, UTF8 > *aProperties=nullptr)
Load the given filename but sets the path to the current project path.
void SendCrossProbeNetName(const wxString &aNetName)
Send a net name to Pcbnew for highlighting.
std::vector< KIID > m_crossProbeFlashItems
Items to flash.
void LoadDrawingSheet()
Load the drawing sheet file.
void onNetNavigatorMenuCommand(wxCommandEvent &aEvent)
const SCH_ITEM * SelectNextPrevNetNavigatorItem(bool aNext)
void SetSheetNumberAndCount()
Set the m_ScreenNumber and m_NumberOfScreens members for screens.
void SaveSettings(APP_SETTINGS_BASE *aCfg) override
Save common frame parameters to a configuration data file.
std::vector< LIB_ID > m_designBlockHistoryList
void OnPageSettingsChange() override
Called when modifying the page settings.
void ClearRepeatItemsList()
Clear the list of items which are to be repeated with the insert key.
void SelectUnit(SCH_SYMBOL *aSymbol, int aUnit)
const BOX2I GetDocumentExtents(bool aIncludeAllVisible=true) const override
Return bounding box of document with option to not include some items.
void CaptureHierarchyPaneSize()
void StartCrossProbeFlash(const std::vector< SCH_ITEM * > &aItems)
void initScreenZoom()
Initialize the zoom value of the current screen and mark the screen as zoom-initialized.
bool CheckSheetForRecursion(SCH_SHEET *aSheet, SCH_SHEET_PATH *aCurrentSheet)
Verify that aSheet will not cause a recursion error in aCurrentSheet.
Definition sheet.cpp:56
void UpdateLabelsHierarchyNavigator()
Update the hierarchy navigation tree labels.
void OnImportProject(wxCommandEvent &event)
double GetSchematicHopOverScale()
void ClearExecFlags(const int aFlags)
Clear (removes) specified flags that not needed for next execution of external generator of the netli...
static const wxString SchematicHierarchyPaneName()
void setupUIConditions() override
Setup the UI conditions for the various actions and their controls in this frame.
EDA_ITEM * ResolveItem(const KIID &aId, bool aAllowNullptrReturn=false) const override
Fetch an item by KIID.
wxString m_netNavigatorMenuNetName
void unitsChangeRefresh() override
Called when when the units setting has changed to allow for any derived classes to handle refreshing ...
int CheckAnnotate(ANNOTATION_ERROR_HANDLER aErrorHandler, ANNOTATE_SCOPE_T aAnnotateScope=ANNOTATE_ALL, bool aRecursive=true)
Check for annotation errors.
Definition annotate.cpp:462
void RemoveSchematicChangeListener(wxEvtHandler *aListener)
Remove aListener to from the schematic changed listener list.
bool CreateArchiveLibrary(const wxString &aFileName)
Create a library aFileName that contains all symbols used in the current schematic.
void SetCurrentSheet(const SCH_SHEET_PATH &aSheet)
void DisplayCurrentSheet()
Draw the current sheet on the display.
void SetNetListerCommand(const wxString &aCommand)
void PutDataInPreviousState(PICKED_ITEMS_LIST *aList)
Restore an undo or redo command to put data pointed by aList in the previous state.
int ModalAnnotate(const wxString &aMessage)
Run a modal version of the annotate dialog for a specific purpose.
~SCH_EDIT_FRAME() override
void onVariantSelected(wxCommandEvent &aEvent)
const wxString & GetHighlightedConnection() const
DIALOG_ERC * m_ercDialog
void UpdateItem(EDA_ITEM *aItem, bool isAddOrDelete=false, bool aUpdateRtree=false) override
Mark an item for refresh.
wxString m_netListerCommand
Command line to call a custom net list generator.
bool TrimWire(SCH_COMMIT *aCommit, const VECTOR2I &aStart, const VECTOR2I &aEnd)
If any single wire passes through both points, remove the portion between the two points,...
void UpdateNetHighlightStatus()
wxString GetScreenDesc() const override
Return a human-readable description of the current screen.
void onNetNavigatorItemMenu(wxTreeEvent &aEvent)
void SelectNetNavigatorItem(const NET_NAVIGATOR_ITEM_DATA *aSelection=nullptr)
void AddCopyForRepeatItem(const SCH_ITEM *aItem)
DIALOG_SYMBOL_FIELDS_TABLE * GetSymbolFieldsTableDialog()
void OnResizeHierarchyNavigator(wxSizeEvent &aEvent)
bool SaveSheetAsDesignBlock(const wxString &aLibraryName, SCH_SHEET_PATH &aSheetPath)
wxString GetCurrentFileName() const override
Get the full filename + path of the currently opened file in the frame.
void UpdateDesignBlockOptions()
Design block panel options have changed and the panel needs to be refreshed.
wxString m_highlightedConn
The highlighted net or bus or empty string.
static const wxString NetNavigatorPaneName()
void SetCrossProbeConnection(const SCH_CONNECTION *aConnection)
Send a connection (net or bus) to Pcbnew for highlighting.
void onCloseSymbolDiffDialog(wxCommandEvent &aEvent)
bool SaveSelectionAsDesignBlock(const wxString &aLibraryName)
void TestDanglingEnds()
Test all of the connectable objects in the schematic for unused connection points.
bool SaveProject(bool aSaveAs=false)
Save the currently-open schematic (including its hierarchy) and associated project.
void IntersheetRefUpdate(SCH_GLOBALLABEL *aItem) override
Callback from schematic ref update.
void saveProjectSettings() override
Save any design-related project settings associated with this frame.
void OnExit(wxCommandEvent &event)
void DeleteJunction(SCH_COMMIT *aCommit, SCH_ITEM *aItem)
Remove a given junction and heals any wire segments under the junction.
void AutoRotateItem(SCH_SCREEN *aScreen, SCH_ITEM *aItem)
Automatically set the rotation of an item (if the item supports it).
wxTimer m_crossProbeFlashTimer
Timer to toggle selection visibility.
void AddSchematicChangeListener(wxEvtHandler *aListener)
Add aListener to post #EDA_EVT_SCHEMATIC_CHANGED command events to.
HIERARCHY_PANE * m_hierarchy
DIALOG_SYMBOL_FIELDS_TABLE * m_symbolFieldsTableDialog
std::unique_ptr< GRID_HELPER > MakeGridHelper() override
void UpdateHopOveredWires(SCH_ITEM *aItem)
SEVERITY GetSeverity(int aErrorCode) const override
void onNetNavigatorSelection(wxTreeEvent &aEvent)
void FindNetInInspector(const wxString &aNetName)
SCH_JUNCTION * AddJunction(SCH_COMMIT *aCommit, SCH_SCREEN *aScreen, const VECTOR2I &aPos)
void SaveCopyForRepeatItem(const SCH_ITEM *aItem)
Clone aItem and owns that clone in this container.
void KiwayMailIn(KIWAY_EXPRESS &aEvent) override
Receive KIWAY_EXPRESS messages from other players.
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition sch_item.h:167
Segment description base class to describe items which have 2 end points (track, wire,...
Definition sch_line.h:42
Handle access to a stack of flattened SCH_SHEET objects by way of a path for creating a flattened sch...
Define a sheet pin (label) used in sheets to create hierarchical schematics.
Sheet symbol placed in a schematic, and is the entry point for a sub schematic.
Definition sch_sheet.h:47
Schematic symbol object.
Definition sch_symbol.h:76
Base window classes and related definitions.
SEVERITY
wxDECLARE_EVENT(EDA_EVT_SCHEMATIC_CHANGING, wxCommandEvent)
SCH_SEARCH_T
Schematic search type used by the socket link with Pcbnew.
@ HIGHLIGHT_SYMBOL
@ HIGHLIGHT_PIN
std::function< void(ERCE_T aType, const wxString &aMsg, SCH_REFERENCE *aItemA, SCH_REFERENCE *aItemB)> ANNOTATION_ERROR_HANDLER
Define a standard error handler for annotation errors.
ANNOTATE_ORDER_T
Schematic annotation order options.
ANNOTATE_SCOPE_T
Schematic annotation scope options.
@ ANNOTATE_ALL
Annotate the full schematic.
ANNOTATE_ALGO_T
Schematic annotation type options.
SCH_CLEANUP_FLAGS
Definition schematic.h:74
UNDO_REDO
Undo Redo considerations: Basically we have 3 cases New item Deleted item Modified item there is also...
VECTOR2< int32_t > VECTOR2I
Definition vector2d.h:695