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, see <https://www.gnu.org/licenses/>.
21 */
22
23#ifndef SCH_EDIT_FRAME_H
24#define SCH_EDIT_FRAME_H
25
26#include <stddef.h>
27#include <vector>
28#include <wx/cmndata.h>
29#include <wx/event.h>
30#include <wx/gdicmn.h>
31#include <wx/string.h>
32#include <wx/treectrl.h>
33#include <wx/utils.h>
34#include <wx/filename.h>
35
36#include <core/typeinfo.h>
37#include <eda_base_frame.h>
38#include <eeschema_settings.h>
39#include <math/box2.h>
40#include <sch_base_frame.h>
41#include <template_fieldnames.h>
43#include <map>
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;
62class DIALOG_ERC;
64class RESCUER;
65class HIERARCHY_PANE;
68class API_HANDLER_SCH;
71class wxSearchCtrl;
72class wxGenericTreeCtrl;
73class BITMAP_BUTTON;
74
75
76namespace SCH_CONNECTIVITY
77{
79}
80
87
88
89wxDECLARE_EVENT( EDA_EVT_SCHEMATIC_CHANGING, wxCommandEvent );
90wxDECLARE_EVENT( EDA_EVT_SCHEMATIC_CHANGED, wxCommandEvent );
91
92
96class NET_NAVIGATOR_ITEM_DATA : public wxTreeItemData
97{
98public:
99 NET_NAVIGATOR_ITEM_DATA( const SCH_SHEET_PATH& aSheetPath, const SCH_ITEM* aItem ) :
100 m_sheetPath( aSheetPath ),
101 m_item( aItem )
102 {
103 }
104
106 m_item( nullptr )
107 {
108 }
109
111 const SCH_ITEM* GetItem() const { return m_item; }
112
113 bool operator==( const NET_NAVIGATOR_ITEM_DATA& aRhs ) const
114 {
115 return ( m_sheetPath == aRhs.m_sheetPath ) && ( m_item == aRhs.m_item );
116 }
117
119 {
120 if( this == &aItemData )
121 return *this;
122
123 m_sheetPath = aItemData.m_sheetPath;
124 m_item = aItemData.m_item;
125
126 return *this;
127 }
128
129private:
132};
133
134
139{
140public:
141 SCH_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent );
142 ~SCH_EDIT_FRAME() override;
143
144 SCH_SCREEN* GetScreen() const override;
145
146 SELECTION& GetCurrentSelection() override;
147
148 SCHEMATIC& Schematic() const;
149
150 std::unique_ptr<GRID_HELPER> MakeGridHelper() override;
151
155 bool GetShowAllPins() const override;
156
160 void SaveProjectLocalSettings() override;
161
167 bool LoadProjectSettings();
168
172 void LoadDrawingSheet();
173
174 void ShowSchematicSetupDialog( const wxString& aInitialPage = wxEmptyString );
175
176 void LoadSettings( APP_SETTINGS_BASE* aCfg ) override;
177 void SaveSettings( APP_SETTINGS_BASE* aCfg ) override;
178
180
181 void setupUIConditions() override;
182
188 bool IsContentModified() const override;
189
194 void OnModify() override;
195
196 SEVERITY GetSeverity( int aErrorCode ) const override;
197
201 wxString GetScreenDesc() const override;
202 wxString GetFullScreenDesc() const override;
203
224 void ExecuteRemoteCommand( const char* cmdline ) override;
225
226 void HandleRemoteNetHighlight( const wxString& aNetName );
227
228 void KiwayMailIn( KIWAY_MAIL_EVENT& aEvent ) override;
229
234
238 void AutoRotateItem( SCH_SCREEN* aScreen, SCH_ITEM* aItem );
239
243 void UpdateHierarchyNavigator( bool aRefreshNetNavigator = true, bool aClear = false );
244
252
258
263
264 void AddVariant();
265
266 void RemoveVariant();
267
269
270 void RenameVariant();
271
272 void CopyVariant();
273
281 void UpdateVariantSelectionCtrl( const wxArrayString& aVariantNames );
282
283 void SetCurrentVariant( const wxString& aVariantName );
284
290 bool ShowAddVariantDialog( wxWindow* aParent = nullptr );
291
292 void onVariantSelected( wxCommandEvent& aEvent );
293
297 void TestDanglingEnds();
298
308 void SendSelectItemsToPcb( const std::vector<EDA_ITEM*>& aItems, bool aForce );
309
315 void SendCrossProbeNetName( const wxString& aNetName );
316
322 void SetCrossProbeConnection( const wxString& aName );
323
328
329 const wxString& GetHighlightedConnection() const
330 {
331 return m_highlightedConn;
332 }
333
334 const wxString& GetHighlightedNetChain() const
335 {
337 }
338
339 void SetHighlightedConnection( const wxString& aConnection, const NET_NAVIGATOR_ITEM_DATA* aSelection = nullptr,
340 bool aForceNetNavigatorRefresh = false );
341
343
344 void SetHighlightedNetChain( const wxString& aNetChain )
345 {
346 m_highlightedNetChain = aNetChain;
347 if( m_schematic )
348 m_schematic->SetHighlightedNetChain( aNetChain );
349 }
350
362 bool ReadyToNetlist( const wxString& aAnnotateMessage, bool* aUserCancelled = nullptr );
363
379 bool WriteNetListFile( int aFormat, const wxString& aFullFileName, unsigned aNetlistOptions,
380 REPORTER* aReporter = nullptr );
381
389 void DeleteAnnotation( ANNOTATE_SCOPE_T aAnnotateScope, bool aRecursive, REPORTER& aReporter );
390
416 void AnnotateSymbols( SCH_COMMIT* aCommit, ANNOTATE_SCOPE_T aAnnotateScope, ANNOTATE_ORDER_T aSortOption,
417 ANNOTATE_ALGO_T aAlgoOption, bool aRecursive, int aStartNumber, bool aResetAnnotation,
418 bool aRegroupUnits, bool aRepairTimestamps, REPORTER& aReporter );
419
437 int CheckAnnotate( ANNOTATION_ERROR_HANDLER aErrorHandler, ANNOTATE_SCOPE_T aAnnotateScope,
438 bool aRecursive );
439
446 int ModalAnnotate( const wxString& aMessage );
447
448 // Functions used for hierarchy handling
450
451 void SetCurrentSheet( const SCH_SHEET_PATH& aSheet );
452
453 void UpdateItem( EDA_ITEM* aItem, bool isAddOrDelete = false, bool aUpdateRtree = false ) override;
454
460 void HardRedraw() override;
461
465 void DisplayCurrentSheet();
466
471
478 void OnPageSettingsChange() override;
479
486
487 wxPageSetupDialogData& GetPageSetupData() { return m_pageSetupData; }
488
489 void NewProject();
490 void LoadProject();
491 void ProjectChanged() override;
492
500 bool SaveProject( bool aSaveAs = false );
501
502 bool OpenProjectFiles( const std::vector<wxString>& aFileSet, int aCtl = 0 ) override;
503
510 bool ReloadFromDisk();
511
512 void SetSchematic( SCHEMATIC* aSchematic );
513
514 wxString GetCurrentFileName() const override;
515
516 bool CanAcceptApiCommands() override;
517
525 bool AskToSaveChanges();
526
527 SCH_JUNCTION* AddJunction( SCH_COMMIT* aCommit, SCH_SCREEN* aScreen, const VECTOR2I& aPos );
528
538 bool TrimWire( SCH_COMMIT* aCommit, const VECTOR2I& aStart, const VECTOR2I& aEnd );
539
540 void OnOpenPcbnew();
541 void OnOpenCvpcb();
542 void OnUpdatePCB();
543 void OnAnnotate();
544
552 bool CheckSheetForRecursion( SCH_SHEET* aSheet, SCH_SHEET_PATH* aCurrentSheet );
553
566 bool AllowCaseSensitiveFileNameClashes( const wxString& aOldName,
567 const wxString& aSchematicFileName );
568
602 bool EditSheetProperties( SCH_SHEET* aSheet, SCH_SHEET_PATH* aHierarchy,
603 bool* aIsUndoable = nullptr, bool* aClearAnnotationNewItems = nullptr,
604 bool* aUpdateHierarchyNavigator = nullptr,
605 wxString* aSourceSheetFilename = nullptr );
606
607 void InitSheet( SCH_SHEET* aSheet, const wxString& aNewFilename );
608
626 bool ChangeSheetFile( SCH_SHEET* aSheet, const wxString& aNewFilename,
627 bool* aClearAnnotationNewItems = nullptr,
628 bool* aIsUndoable = nullptr,
629 const wxString* aSourceSheetFilename = nullptr );
630
681 bool LoadSheetFromFile( SCH_SHEET* aSheet, SCH_SHEET_PATH* aCurrentSheet, const wxString& aFileName,
682 bool aSkipRecursionCheck = false, bool aSkipLibCheck = false );
683
690 void DeleteJunction( SCH_COMMIT* aCommit, SCH_ITEM* aItem );
691
692 void UpdateHopOveredWires( SCH_ITEM* aItem );
693
702 void SelectUnit( SCH_SYMBOL* aSymbol, int aUnit, SCH_COMMIT* aCommit = nullptr );
703
712 void SelectBodyStyle( SCH_SYMBOL* aSymbol, int aBodyStyle, SCH_COMMIT* aCommit = nullptr );
713
714 void SetAltPinFunction( SCH_PIN* aPin, const wxString& aFunction );
715
716 /* Undo - redo */
717
734 void SaveCopyInUndoList( SCH_SCREEN* aScreen, SCH_ITEM* aItemToCopy, UNDO_REDO aTypeCommand,
735 bool aAppend );
736
744 void SaveCopyInUndoList( const PICKED_ITEMS_LIST& aItemsList, UNDO_REDO aTypeCommand,
745 bool aAppend );
746
753
765 void ClearUndoORRedoList( UNDO_REDO_LIST whichList, int aItemCount = -1 ) override;
766
770 void SaveCopyForRepeatItem( const SCH_ITEM* aItem );
771 void AddCopyForRepeatItem( const SCH_ITEM* aItem );
772
778 const std::vector<std::unique_ptr<SCH_ITEM>>& GetRepeatItems() const
779 {
780 return m_items_to_repeat;
781 }
782
789 {
790 m_items_to_repeat.clear();
791 }
792
793 EDA_ITEM* ResolveItem( const KIID& aId, bool aAllowNullptrReturn = false ) const override;
794
801
808 bool CreateArchiveLibrary( const wxString& aFileName );
809
810 bool SaveSheetAsDesignBlock( const wxString& aLibraryName, SCH_SHEET_PATH& aSheetPath );
811
812 bool SaveSelectionAsDesignBlock( const wxString& aLibraryName );
813
814 bool UpdateDesignBlockFromSheet( const LIB_ID& aLibId, SCH_SHEET_PATH& aSheetPath );
815
816 bool UpdateDesignBlockFromSelection( const LIB_ID& aLibId );
817
819
820 void SetNetListerCommand( const wxString& aCommand ) { m_netListerCommand = aCommand; }
821
825 void DefaultExecFlags() { m_exec_flags = wxEXEC_SYNC; }
826
832 void SetExecFlags( const int aFlags ) { m_exec_flags |= aFlags; }
833
840 void ClearExecFlags( const int aFlags ) { m_exec_flags &= ~( aFlags ); }
841
842 wxString GetNetListerCommand() const { return m_netListerCommand; }
843
853 bool RecalculateConnections( SCH_COMMIT* aCommit, SCH_CLEANUP_FLAGS aCleanupFlags,
854 PROGRESS_REPORTER* aProgressReporter = nullptr, bool aCleanupDone = false );
855
856 // Commit source cleanup before the exporter's full connectivity rebuild.
857 void PrepareForNetlist();
858
859 // Refresh connectivity-dependent display state after a model rebuild.
860 void RefreshConnectivity( bool aForce = false, const SCH_CONNECTIVITY::CHANGE_SET* aChanges = nullptr );
861
865 void CommonSettingsChanged( int aFlags ) override;
866
868
869 void ShowChangedLanguage() override;
870
871 void SetScreen( BASE_SCREEN* aScreen ) override;
872
873 const BOX2I GetDocumentExtents( bool aIncludeAllVisible = true ) const override;
874
875 void FocusOnItem( EDA_ITEM* aItem, bool aAllowScroll = true ) override;
876
879
888 bool SaveSymbolToSchematic( const LIB_SYMBOL& aSymbol, const KIID& aSchematicSymbolUUID );
889
895
899 void IntersheetRefUpdate( SCH_GLOBALLABEL* aItem ) override;
900
901 void ShowAllIntersheetRefs( bool aShow );
902
907
911 void ToggleSearch();
912
913 void ToggleProperties() override;
914
915 void ToggleLibraryTree() override;
916
918
919
921
923 void ClearErcMarkers();
924 void RefreshErcMarkers();
925
927
928 wxGenericTreeCtrl* GetNetNavigator();
929
931
935 static const wxString SchematicHierarchyPaneName()
936 {
937 return wxT( "SchematicHierarchy" );
938 }
939
943 static const wxString SearchPaneName() { return wxT( "Search" ); }
944
945 bool IsSearchPaneShown() { return m_auimgr.GetPane( SearchPaneName() ).IsShown(); }
946
947 void FocusSearch();
948
958 void AddSchematicChangeListener( wxEvtHandler* aListener );
959
963 void RemoveSchematicChangeListener( wxEvtHandler* aListener );
964
965 static const wxString NetNavigatorPaneName()
966 {
967 return wxS( "NetNavigator" );
968 }
969
970 void RefreshNetNavigator( const NET_NAVIGATOR_ITEM_DATA* aSelection = nullptr,
971 const std::vector<wxString>* aChangedNets = nullptr );
972
973 void MakeNetNavigatorNode( const wxString& aNetName, wxTreeItemId aParentId,
974 const NET_NAVIGATOR_ITEM_DATA* aSelection,
976
977 void SelectNetNavigatorItem( const NET_NAVIGATOR_ITEM_DATA* aSelection = nullptr );
978
979 const SCH_ITEM* SelectNextPrevNetNavigatorItem( bool aNext );
980
981 void ToggleNetNavigator();
982 void FindNetInInspector( const wxString& aNetName );
983
988
989 void ClearToolbarControl( int aId ) override;
990
991 void StartCrossProbeFlash( const std::vector<SCH_ITEM*>& aItems );
992
1000 bool ValidateNewVariantName( const wxString& aName, const wxString& aExcludeName );
1001
1002 DECLARE_EVENT_TABLE()
1003
1004protected:
1010 bool doAutoSave() override;
1011
1012 bool canRunAutoSave() const override;
1013
1018 bool interactiveOperationInProgress() const;
1019
1020 void configureToolbars() override;
1021
1022 void doReCreateMenuBar() override;
1023
1027 void sendNetlistToCvpcb();
1028
1029 void saveProjectSettings() override;
1030
1031 void onCloseSymbolDiffDialog( wxCommandEvent& aEvent );
1032
1033 void onCloseErcDialog( wxCommandEvent& aEvent );
1034
1035 void onCloseSymbolFieldsTableDialog( wxCommandEvent& aEvent );
1036
1037 void unitsChangeRefresh() override;
1038
1039 void updateSelectionFilterVisbility() override;
1040
1041 void onPluginAvailabilityChanged( wxCommandEvent& aEvt );
1042
1043private:
1044 // Called when resizing the Hierarchy Navigator panel
1045 void OnResizeHierarchyNavigator( wxSizeEvent& aEvent );
1046
1047 void onResizeNetNavigator( wxSizeEvent& aEvent );
1048
1049 // Sets up the tool framework
1050 void setupTools();
1051
1052 void OnExit( wxCommandEvent& event );
1053
1054 void OnLoadFile( wxCommandEvent& event );
1055 void OnImportProject();
1056
1057 void OnClearFileHistory( wxCommandEvent& aEvent );
1058
1059 bool canCloseWindow( wxCloseEvent& aCloseEvent ) override;
1060 void doCloseWindow() override;
1061
1070 void updateTitle();
1071
1075 void initScreenZoom();
1076
1086
1094 bool importFile( const wxString& aFileName, int aFileType,
1095 const std::map<std::string, UTF8>* aProperties = nullptr );
1096
1106 bool saveSchematicFile( SCH_SHEET* aSheet, const wxString& aSavePath, bool isSaveAs );
1107
1113 void mapExistingAnnotation( std::map<wxString, wxString>& aMap );
1114
1116
1117 void onNetNavigatorDPIChanged( wxDPIChangedEvent& aEvent );
1118 void onNetNavigatorFilterChanged( wxCommandEvent& aEvent );
1119 void onNetNavigatorKey( wxKeyEvent& aEvent );
1120 void onNetNavigatorItemMenu( wxTreeEvent& aEvent );
1121 void onNetNavigatorContextMenu( wxContextMenuEvent& aEvent );
1122 void onNetNavigatorMenuCommand( wxCommandEvent& aEvent );
1123 void showNetNavigatorMenu( const wxTreeItemId& aItem );
1124
1125 void onNetNavigatorSelection( wxTreeEvent& aEvent );
1126
1127 void onNetNavigatorSelChanging( wxTreeEvent& aEvent );
1128
1130
1131 void OnCrossProbeFlashTimer( wxTimerEvent& aEvent );
1132
1133private:
1134 // The schematic editor control class should be able to access some internal
1135 // functions of the editor frame.
1137
1138 enum
1139 {
1140 ID_NET_NAVIGATOR_EXPAND_ALL = wxID_HIGHEST + 400,
1145 };
1146
1147 void subscribeConnectivity();
1152
1153 wxPageSetupDialogData m_pageSetupData;
1154 std::vector<std::unique_ptr<SCH_ITEM>> m_items_to_repeat;
1155
1160
1166
1167
1173 std::map<wxString, wxTreeItemId> m_netNavigatorNodes;
1176
1177 bool m_syncingPcbToSchSelection; // Recursion guard when synchronizing selection from PCB
1178 // Cross-probe flashing support
1181 std::vector<KIID> m_crossProbeFlashItems;
1185
1186 std::vector<wxEvtHandler*> m_schematicChangeListeners;
1187
1188 std::vector<LIB_ID> m_designBlockHistoryList;
1191
1193
1194 std::unique_ptr<API_HANDLER_SCH> m_apiHandler;
1195 std::unique_ptr<API_HANDLER_COMMON> m_apiHandlerCommon;
1196 std::unique_ptr<API_HANDLER_LIBRARIES> m_apiLibrariesHandler;
1197};
1198
1199
1200#endif // SCH_EDIT_FRAME_H
BOX2< VECTOR2I > BOX2I
Definition box2.h:914
Base class for API handlers related to library management.
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:37
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:46
Carry a payload from one KIWAY_PLAYER to another within a PROJECT.
Definition kiway_mail.h:34
A minimalistic software bus for communications between various DLLs/DSOs (DSOs) within the same KiCad...
Definition kiway.h:348
A logical library item identifier and consists of various portions much like a URI.
Definition lib_id.h:45
Define a library symbol object.
Definition lib_symbol.h:114
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)
The net navigator's tree control.
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:149
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:36
Commit for the schematic and symbol editors.
Definition sch_commit.h:54
One UI operation's hierarchy index.
Main-thread registration owner.
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 ValidateNewVariantName(const wxString &aName, const wxString &aExcludeName)
Validate a user-entered variant name for the rename/copy dialogs.
void ToggleProperties() override
bool interactiveOperationInProgress() const
Return true when a tool other than passive selection or an idle point editor is active.
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
wxString m_netNavigatorConnection
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:37
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...
bool SaveSymbolToSchematic(const LIB_SYMBOL &aSymbol, const KIID &aSchematicSymbolUUID)
Update a schematic symbol from a LIB_SYMBOL.
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:984
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:104
void doCloseWindow() override
std::unique_ptr< API_HANDLER_SCH > m_apiHandler
NET_NAVIGATOR_TREE * m_netNavigator
DIALOG_BOOK_REPORTER * m_diffSymbolDialog
void ToggleLibraryTree() override
SCH_SCREEN * GetScreen() const override
Return a pointer to a BASE_SCREEN or one of its derivatives.
void MakeNetNavigatorNode(const wxString &aNetName, wxTreeItemId aParentId, const NET_NAVIGATOR_ITEM_DATA *aSelection, const SCH_CONNECTIVITY::NAVIGATION_QUERY &aQuery)
wxWindow * createHighlightedNetNavigator()
void onCloseErcDialog(wxCommandEvent &aEvent)
void InitSheet(SCH_SHEET *aSheet, const wxString &aNewFilename)
Definition sheet.cpp:116
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()
void RefreshNetNavigator(const NET_NAVIGATOR_ITEM_DATA *aSelection=nullptr, const std::vector< wxString > *aChangedNets=nullptr)
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
void SelectBodyStyle(SCH_SYMBOL *aSymbol, int aBodyStyle, SCH_COMMIT *aCommit=nullptr)
Change the body style of aSymbol.
void RefreshConnectivity(bool aForce=false, const SCH_CONNECTIVITY::CHANGE_SET *aChanges=nullptr)
bool doAutoSave() override
Save the schematic files that have been modified and not yet saved.
wxChoice * m_currentVariantCtrl
bool UpdateDesignBlockFromSelection(const LIB_ID &aLibId)
void SetCurrentVariant(const wxString &aVariantName)
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:410
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.
bool canRunAutoSave() const override
Return true when it is safe to run an autosave snapshot right now.
void SendSelectItemsToPcb(const std::vector< EDA_ITEM * > &aItems, bool aForce)
Send items to board editor for selection.
BITMAP_BUTTON * m_netNavigatorMenuButton
bool RecalculateConnections(SCH_COMMIT *aCommit, SCH_CLEANUP_FLAGS aCleanupFlags, PROGRESS_REPORTER *aProgressReporter=nullptr, bool aCleanupDone=false)
Generate the connection data for the entire schematic hierarchy.
std::unique_ptr< API_HANDLER_COMMON > m_apiHandlerCommon
bool ReadyToNetlist(const wxString &aAnnotateMessage, bool *aUserCancelled=nullptr)
Check if we are ready to write a netlist file for the current schematic.
void onNetNavigatorKey(wxKeyEvent &aEvent)
wxPageSetupDialogData & GetPageSetupData()
void configureToolbars() override
std::vector< wxEvtHandler * > m_schematicChangeListeners
bool ReloadFromDisk()
Reload the schematic and all its sheets from disk.
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)
bool GetShowAllPins() const override
Allow edit frame to show/hide hidden pins.
bool CanAcceptApiCommands() override
Check if this frame is ready to accept API commands.
PANEL_REMOTE_SYMBOL * m_remoteSymbolPane
bool WriteNetListFile(int aFormat, const wxString &aFullFileName, unsigned aNetlistOptions, REPORTER *aReporter=nullptr)
Create a netlist file.
bool saveSchematicFile(SCH_SHEET *aSheet, const wxString &aSavePath, bool isSaveAs)
Save aSheet to a schematic 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
wxString m_netNavigatorFilterValue
void ProjectChanged() override
Notification event that the project has changed.
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)
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:890
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.
wxSearchCtrl * m_netNavigatorFilter
wxString GetFullScreenDesc() const override
static const wxString SearchPaneName()
DIALOG_BOOK_REPORTER * GetSymbolDiffDialog()
bool canCloseWindow(wxCloseEvent &aCloseEvent) override
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 ...
const wxString & GetHighlightedNetChain() const
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:94
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:848
SCH_DESIGN_BLOCK_PANE * m_designBlocksPane
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.
bool ShowAddVariantDialog(wxWindow *aParent=nullptr)
Show a dialog to create a new variant with name and description.
void SendCrossProbeNetName(const wxString &aNetName)
Send a net name to Pcbnew for highlighting.
std::vector< KIID > m_crossProbeFlashItems
Items to flash.
wxString m_highlightedNetChain
std::map< wxString, wxTreeItemId > m_netNavigatorNodes
void LoadDrawingSheet()
Load the drawing sheet file.
void SetSyncingSelection(bool aSet)
void onNetNavigatorMenuCommand(wxCommandEvent &aEvent)
void KiwayMailIn(KIWAY_MAIL_EVENT &aEvent) override
Receive KIWAY_MAIL_EVENT messages from other players.
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.
const BOX2I GetDocumentExtents(bool aIncludeAllVisible=true) const override
Return bounding box of document with option to not include some items.
std::unique_ptr< API_HANDLER_LIBRARIES > m_apiLibrariesHandler
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:60
void UpdateLabelsHierarchyNavigator()
Update the hierarchy navigation tree labels.
SCH_CONNECTIVITY::SUBSCRIPTION m_connectivitySubscription
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 SetHighlightedConnection(const wxString &aConnection, const NET_NAVIGATOR_ITEM_DATA *aSelection=nullptr, bool aForceNetNavigatorRefresh=false)
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 ...
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)
int CheckAnnotate(ANNOTATION_ERROR_HANDLER aErrorHandler, ANNOTATE_SCOPE_T aAnnotateScope, bool aRecursive)
Check for annotation errors.
Definition annotate.cpp:509
void SetHighlightedNetChain(const wxString &aNetChain)
void SetCrossProbeConnection(const wxString &aName)
Send a connection (net or bus) to Pcbnew for highlighting.
void DisplayCurrentSheet()
Draw the current sheet on the display.
bool ChangeSheetFile(SCH_SHEET *aSheet, const wxString &aNewFilename, bool *aClearAnnotationNewItems=nullptr, bool *aIsUndoable=nullptr, const wxString *aSourceSheetFilename=nullptr)
Change the file backing a schematic sheet.
Definition sheet.cpp:175
void SetNetListerCommand(const wxString &aCommand)
void AnnotateSymbols(SCH_COMMIT *aCommit, ANNOTATE_SCOPE_T aAnnotateScope, ANNOTATE_ORDER_T aSortOption, ANNOTATE_ALGO_T aAlgoOption, bool aRecursive, int aStartNumber, bool aResetAnnotation, bool aRegroupUnits, bool aRepairTimestamps, REPORTER &aReporter)
Annotate the symbols in the schematic that are not currently annotated.
Definition annotate.cpp:225
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 ClearToolbarControl(int aId) override
void SelectNetNavigatorItem(const NET_NAVIGATOR_ITEM_DATA *aSelection=nullptr)
void AddCopyForRepeatItem(const SCH_ITEM *aItem)
DIALOG_SYMBOL_FIELDS_TABLE * GetSymbolFieldsTableDialog()
void OnResizeHierarchyNavigator(wxSizeEvent &aEvent)
void HandleRemoteNetHighlight(const wxString &aNetName)
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.
wxGenericTreeCtrl * GetNetNavigator()
static const wxString NetNavigatorPaneName()
void onNetNavigatorDPIChanged(wxDPIChangedEvent &aEvent)
bool UpdateDesignBlockFromSheet(const LIB_ID &aLibId, SCH_SHEET_PATH &aSheetPath)
void onCloseSymbolDiffDialog(wxCommandEvent &aEvent)
bool SaveSelectionAsDesignBlock(const wxString &aLibraryName)
void TestDanglingEnds()
Test all of the connectable objects in the schematic for unused connection points.
void SelectUnit(SCH_SYMBOL *aSymbol, int aUnit, SCH_COMMIT *aCommit=nullptr)
Change the unit of aSymbol, swapping with another placed unit if the user asks.
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 onPluginAvailabilityChanged(wxCommandEvent &aEvt)
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.
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition sch_item.h:170
Segment description base class to describe items which have 2 end points (track, wire,...
Definition sch_line.h:39
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:48
Schematic symbol object.
Definition sch_symbol.h:75
An 8 bit string that is assuredly encoded in UTF8, and supplies special conversion support to and fro...
Definition utf8.h:67
Base window classes and related definitions.
Value keys and the key session of the schematic connectivity engine.
STL namespace.
PLUGIN_ACTION_SCOPE
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_ALGO_T
Schematic annotation type options.
SCH_CLEANUP_FLAGS
Definition schematic.h:92
Difference between two publications.
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:708