KiCad PCB EDA Suite
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 <stambaughw@gmail.com>
6  * Copyright (C) 2004-2021 KiCad Developers, see AUTHORS.txt for contributors.
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License
10  * as published by the Free Software Foundation; either version 2
11  * of the License, or (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, you may find one here:
20  * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
21  * or you may search the http://www.gnu.org website for the version 2 license,
22  * or you may write to the Free Software Foundation, Inc.,
23  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
24  */
25 
26 #ifndef SCH_EDIT_FRAME_H
27 #define SCH_EDIT_FRAME_H
28 
29 #include <stddef.h>
30 #include <vector>
31 #include <wx/cmndata.h>
32 #include <wx/event.h>
33 #include <wx/gdicmn.h>
34 #include <wx/string.h>
35 #include <wx/utils.h>
36 
37 #include <config_params.h>
38 #include <core/typeinfo.h>
39 #include <eda_base_frame.h>
40 #include <eeschema_settings.h>
41 #include <math/box2.h>
42 #include <sch_base_frame.h>
43 #include <sch_text.h> // enum PINSHEETLABEL_SHAPE
44 #include <template_fieldnames.h>
45 #include <undo_redo_container.h>
46 
47 class STATUS_TEXT_POPUP;
48 
49 class SCH_ITEM;
50 class EDA_ITEM;
51 class SCH_LINE;
52 class SCH_TEXT;
53 class SCH_BITMAP;
54 class SCH_SHEET;
55 class SCH_SHEET_PATH;
56 class SCH_SHEET_PIN;
57 class SCH_COMPONENT;
58 class SCH_FIELD;
59 class SCH_JUNCTION;
60 class SCHEMATIC;
61 class DIALOG_SCH_FIND;
62 class wxFindReplaceData;
63 class RESCUER;
65 
66 // @todo Move this to transform alone with all of the transform manipulation code.
69 {
70  CMP_NORMAL, // Normal orientation, no rotation or mirror
71  CMP_ROTATE_CLOCKWISE, // Rotate -90
73  CMP_ORIENT_0, // No rotation and no mirror id CMP_NORMAL
74  CMP_ORIENT_90, // Rotate 90, no mirror
75  CMP_ORIENT_180, // Rotate 180, no mirror
76  CMP_ORIENT_270, // Rotate -90, no mirror
77  CMP_MIRROR_X = 0x100, // Mirror around X axis
78  CMP_MIRROR_Y = 0x200 // Mirror around Y axis
79 };
80 
81 
84 {
88 };
89 
90 
93 {
97 };
99 
100 
103 {
108 };
110 
111 
114 {
117 };
118 
119 
121 {
125 };
126 
127 
132 {
133 public:
134  SCH_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent );
135  ~SCH_EDIT_FRAME() override;
136 
137  SCH_SCREEN* GetScreen() const override;
138 
139  SELECTION& GetCurrentSelection() override;
140 
141  SCHEMATIC& Schematic() const;
142 
146  bool GetShowAllPins() const override;
147 
151  void SaveProjectSettings() override;
152 
158  bool LoadProjectSettings();
159 
160  void ShowSchematicSetupDialog( const wxString& aInitialPage = wxEmptyString );
161 
162  void LoadSettings( APP_SETTINGS_BASE* aCfg ) override;
163  void SaveSettings( APP_SETTINGS_BASE* aCfg ) override;
164 
165  void CreateScreens();
166  void ReCreateHToolbar() override;
167  void ReCreateVToolbar() override;
168  void ReCreateOptToolbar() override;
169  void ReCreateMenuBar() override;
170 
171  void setupUIConditions() override;
172 
178  bool IsContentModified() override;
179 
184  void OnModify() override;
185 
189  void RecordERCExclusions();
190 
194  void ResolveERCExclusions();
195 
199  wxString GetScreenDesc() const override;
200 
219  void ExecuteRemoteCommand( const char* cmdline ) override;
220 
221  void KiwayMailIn( KIWAY_EXPRESS& aEvent ) override;
222 
227  void AddItemToScreenAndUndoList( SCH_SCREEN* aScreen, SCH_ITEM* aItem, bool aUndoAppend );
228 
232  void ShowFindReplaceDialog( bool aReplace );
233 
239  void UpdateHierarchyNavigator( bool aForceUpdate = false );
240 
245 
246  void ShowFindReplaceStatus( const wxString& aMsg, int aStatusTime );
247  void ClearFindReplaceStatus();
248 
252  wxFindReplaceData* GetFindReplaceData();
253 
257  void OnFindDialogClose();
258 
270  bool BreakSegment( SCH_LINE* aSegment, const wxPoint& aPoint,
271  SCH_LINE** aNewSegment = nullptr, SCH_SCREEN* aScreen = nullptr );
272 
283  bool BreakSegments( const wxPoint& aPoint, SCH_SCREEN* aScreen = nullptr );
284 
294  bool BreakSegmentsOnJunctions( SCH_SCREEN* aScreen = nullptr );
295 
300  void TestDanglingEnds();
301 
313  void SendMessageToPCBNEW( EDA_ITEM* aObjectToSync, SCH_COMPONENT* aPart );
314 
320  void SendCrossProbeNetName( const wxString& aNetName );
321 
327  void SetCrossProbeConnection( const SCH_CONNECTION* aConnection );
328 
333 
335  {
336  return m_highlightedConn;
337  }
338 
339  void SetHighlightedConnection( const SCH_CONNECTION* aConnection )
340  {
341  m_highlightedConn = aConnection;
342  }
343 
352  bool ReadyToNetlist( const wxString& aAnnotateMessage );
353 
369  bool WriteNetListFile( int aFormat, const wxString& aFullFileName, unsigned aNetlistOptions,
370  REPORTER* aReporter = nullptr );
371 
378  void DeleteAnnotation( ANNOTATE_SCOPE_T aAnnotateScope, bool* appendUndo );
379 
401  void AnnotateSymbols( ANNOTATE_SCOPE_T aAnnotateScope, ANNOTATE_ORDER_T aSortOption,
402  ANNOTATE_ALGO_T aAlgoOption, int aStartNumber, bool aResetAnnotation,
403  bool aRepairTimestamps, REPORTER& aReporter );
404 
421  int CheckAnnotate( ANNOTATION_ERROR_HANDLER aErrorHandler,
422  ANNOTATE_SCOPE_T aAnnotateScope = ANNOTATE_ALL );
423 
430  int ModalAnnotate( const wxString& aMessage );
431 
432  // Functions used for hierarchy handling
434 
435  void SetCurrentSheet( const SCH_SHEET_PATH& aSheet );
436 
440  void HardRedraw() override;
441 
445  void DisplayCurrentSheet();
446 
451 
458  void OnPageSettingsChange() override;
459 
468 
474  void SetSheetNumberAndCount();
475 
476  wxPageSetupDialogData& GetPageSetupData() { return m_pageSetupData; }
477 
478  void NewProject();
479  void LoadProject();
480 
481  void Save_File( bool doSaveAs = false );
482 
483  bool SaveProject();
484 
485  bool OpenProjectFiles( const std::vector<wxString>& aFileSet, int aCtl = 0 ) override;
486 
487  wxString GetCurrentFileName() const override;
488 
494  bool AppendSchematic();
495 
505  bool SaveEEFile( SCH_SHEET* aSheet, bool aSaveUnderNewName = false );
506 
507 
515  bool AskToSaveChanges();
516 
517  SCH_JUNCTION* AddJunction( SCH_SCREEN* aScreen, const wxPoint& aPos, bool aAppendToUndo,
518  bool aFinal = true );
519 
529  bool SchematicCleanUp( SCH_SCREEN* aScreen = nullptr );
530 
541  bool TrimWire( const wxPoint& aStart, const wxPoint& aEnd );
542 
548  std::vector<wxPoint> GetSchematicConnections();
549 
550  void OnOpenPcbnew( wxCommandEvent& event );
551  void OnOpenCvpcb( wxCommandEvent& event );
552  void OnUpdatePCB( wxCommandEvent& event );
553  void OnAnnotate( wxCommandEvent& event );
554 
563  bool CheckSheetForRecursion( SCH_SHEET* aSheet, SCH_SHEET_PATH* aHierarchy );
564 
576  bool AllowCaseSensitiveFileNameClashes( const wxString& aSchematicFileName );
577 
606  bool EditSheetProperties( SCH_SHEET* aSheet, SCH_SHEET_PATH* aHierarchy,
607  bool* aClearAnnotationNewItems );
608 
609  void InitSheet( SCH_SHEET* aSheet, const wxString& aNewFilename );
610 
655  bool LoadSheetFromFile( SCH_SHEET* aSheet, SCH_SHEET_PATH* aHierarchy,
656  const wxString& aFileName );
657 
664  void DeleteJunction( SCH_ITEM* aItem, bool aAppend = false );
665 
666  void ConvertPart( SCH_COMPONENT* aSymbol );
667 
668  void SelectUnit( SCH_COMPONENT* aSymbol, int aUnit );
669 
670  /* Undo - redo */
671 
675  void StartNewUndo();
676 
692  void SaveCopyInUndoList( SCH_SCREEN* aScreen, SCH_ITEM* aItemToCopy, UNDO_REDO aTypeCommand,
693  bool aAppend );
694 
702  void SaveCopyInUndoList( const PICKED_ITEMS_LIST& aItemsList, UNDO_REDO aTypeCommand,
703  bool aAppend );
704 
711 
723  void ClearUndoORRedoList( UNDO_REDO_LIST whichList, int aItemCount = -1 ) override;
724 
728  void SaveCopyForRepeatItem( const SCH_ITEM* aItem );
729 
736 
737  EDA_ITEM* GetItem( const KIID& aId ) const override;
738 
744 
754  bool CreateArchiveLibraryCacheFile( bool aUseCurrentSheetFilename = false );
755 
762  bool CreateArchiveLibrary( const wxString& aFileName );
763 
767  virtual void PrintPage( const RENDER_SETTINGS* aSettings ) override;
768 
769  void SetNetListerCommand( const wxString& aCommand ) { m_netListerCommand = aCommand; }
770 
774  void DefaultExecFlags() { m_exec_flags = wxEXEC_SYNC; }
775 
781  void SetExecFlags( const int aFlags ) { m_exec_flags |= aFlags; }
782 
789  void ClearExecFlags( const int aFlags ) { m_exec_flags &= ~( aFlags ); }
790 
791  wxString GetNetListerCommand() const { return m_netListerCommand; }
792 
796  void RecalculateConnections( SCH_CLEANUP_FLAGS aCleanupFlags );
797 
801  void InstallPreferences( PAGED_DIALOG* aParent, PANEL_HOTKEYS_EDITOR* aHotkeysPanel ) override;
802 
806  void CommonSettingsChanged( bool aEnvVarsChanged, bool aTextVarsChanged ) override;
807 
809 
810  void ShowChangedLanguage() override;
811 
812  void SetScreen( BASE_SCREEN* aScreen ) override;
813 
814  const BOX2I GetDocumentExtents( bool aIncludeAllVisible = true ) const override;
815 
816  void FixupJunctions();
817 
818  void FocusOnItem( SCH_ITEM* aItem );
819 
827  void SaveSymbolToSchematic( const LIB_PART& aSymbol );
828 
834 
835  void ShowAllIntersheetRefs( bool aShow );
836 
837  DECLARE_EVENT_TABLE()
838 
839 protected:
845  bool doAutoSave() override;
846 
850  bool isAutoSaveRequired() const override;
851 
855  void sendNetlistToCvpcb();
856 
857  void onSize( wxSizeEvent& aEvent );
858 
859 private:
860  // Sets up the tool framework
861  void setupTools();
862 
863  void OnExit( wxCommandEvent& event );
864 
865  void OnLoadFile( wxCommandEvent& event );
866  void OnAppendProject( wxCommandEvent& event );
867  void OnImportProject( wxCommandEvent& event );
868 
869  void OnClearFileHistory( wxCommandEvent& aEvent );
870 
871  bool canCloseWindow( wxCloseEvent& aCloseEvent ) override;
872  void doCloseWindow() override;
873 
882  void UpdateTitle();
883 
887  void initScreenZoom();
888 
897  bool checkForNoFullyDefinedLibIds( SCH_SHEET* aSheet );
898 
905  bool importFile( const wxString& aFileName, int aFileType );
906 
912  void mapExistingAnnotation( std::map<wxString, wxString>& aMap );
913 
914 private:
915  // The schematic editor control class should be able to access some internal
916  // functions of the editor frame.
917  friend class SCH_EDITOR_CONTROL;
918 
921 
922  wxPageSetupDialogData m_pageSetupData;
925  int m_exec_flags;
927 
930 };
931 
932 
933 #endif // SCH_EDIT_FRAME_H
void SetCurrentSheet(const SCH_SHEET_PATH &aSheet)
bool ReadyToNetlist(const wxString &aAnnotateMessage)
Check if we are ready to write a netlist file for the current schematic.
bool CheckSheetForRecursion(SCH_SHEET *aSheet, SCH_SHEET_PATH *aHierarchy)
Verify that aSheet will not cause a recursion error in aHierarchy.
Definition: sheet.cpp:46
wxString m_netListerCommand
Command line to call a custom net list generator.
void ShowFindReplaceStatus(const wxString &aMsg, int aStatusTime)
Instances are attached to a symbol or sheet and provide a place for the symbol's value,...
Definition: sch_field.h:50
void onSize(wxSizeEvent &aEvent)
void OnOpenCvpcb(wxCommandEvent &event)
void Save_File(bool doSaveAs=false)
bool SchematicCleanUp(SCH_SCREEN *aScreen=nullptr)
Perform routine schematic cleaning including breaking wire and buses and deleting identical objects s...
SCHEMATIC * m_schematic
The currently loaded schematic.
Carry a payload from one KIWAY_PLAYER to another within a PROJECT.
Definition: kiway_express.h:38
void DefaultExecFlags()
Reset the execution flags to defaults for external netlist and bom generators.
void UpdateNetHighlightStatus()
HIERARCHY_NAVIG_DLG * FindHierarchyNavigator()
bool OpenProjectFiles(const std::vector< wxString > &aFileSet, int aCtl=0) override
Open a project or set of files given by aFileList.
Annotate the selection.
void mapExistingAnnotation(std::map< wxString, wxString > &aMap)
Fill a map of uuid -> reference from the currently loaded schematic.
Definition: annotate.cpp:38
void OnLoadFile(wxCommandEvent &event)
wxFindReplaceData * GetFindReplaceData()
Get the find criteria (as set by the dialog).
Annotate the full schematic.
void SendCrossProbeNetName(const wxString &aNetName)
Sends a net name to Pcbnew for highlighting.
SELECTION & GetCurrentSelection() override
Get the current selection from the canvas area.
void RecalculateConnections(SCH_CLEANUP_FLAGS aCleanupFlags)
Generate the connection data for the entire schematic hierarchy.
virtual void PrintPage(const RENDER_SETTINGS *aSettings) override
Plot or print the current sheet to the clipboard.
Container for all the knowledge about how graphical objects are drawn on any output surface/device.
void SaveProjectSettings() override
Save changes to the project settings to the project (.pro) file.
COMPONENT_ORIENTATION_T
enum used in RotationMiroir()
Holds all the data relating to one schematic.
Definition: schematic.h:59
void StartNewUndo()
Create a new, blank stack for future Undo commands to be pushed to.
ANNOTATE_ORDER_T
Schematic annotation order options.
bool BreakSegments(const wxPoint &aPoint, SCH_SCREEN *aScreen=nullptr)
Check every wire and bus for a intersection at aPoint and break into two segments at aPoint if an int...
void SetScreen(BASE_SCREEN *aScreen) override
const SCH_CONNECTION * GetHighlightedConnection() const
void ReCreateMenuBar() override
Recreates the menu bar.
Extension of STATUS_POPUP for displaying a single line text.
Definition: status_popup.h:79
void SendCrossProbeClearHighlight()
Tell Pcbnew to clear the existing highlighted net, if one exists.
const BOX2I GetDocumentExtents(bool aIncludeAllVisible=true) const override
Returns bbox of document with option to not include some items.
bool AskToSaveChanges()
Check if any of the screens has unsaved changes and asks the user whether to save or drop them.
void ResolveERCExclusions()
Update markers to match recorded exclusions.
void UpdateTitle()
Set the main window title bar text.
void OnAppendProject(wxCommandEvent &event)
void InitSheet(SCH_SHEET *aSheet, const wxString &aNewFilename)
Definition: sheet.cpp:95
void DeleteAnnotation(ANNOTATE_SCOPE_T aAnnotateScope, bool *appendUndo)
Clear the current component annotation.
Definition: annotate.cpp:63
Definition: bitmap.cpp:63
void setupUIConditions() override
Setup the UI conditions for the various actions and their controls in this frame.
void DrawCurrentSheetToClipboard()
Use the wxWidgets print code to draw an image of the current sheet onto the clipboard.
Definition: sheet.cpp:483
void ConvertPart(SCH_COMPONENT *aSymbol)
Definition: getpart.cpp:237
SCH_CLEANUP_FLAGS
Schematic editor (Eeschema) main window.
void OnPageSettingsChange() override
Called when modifying the page settings.
void AnnotateSymbols(ANNOTATE_SCOPE_T aAnnotateScope, ANNOTATE_ORDER_T aSortOption, ANNOTATE_ALGO_T aAlgoOption, int aStartNumber, bool aResetAnnotation, bool aRepairTimestamps, REPORTER &aReporter)
Annotate the symbols in the schematic that are not currently annotated.
Definition: annotate.cpp:126
void DisplayCurrentSheet()
Draw the current sheet on the display.
Definition: hierarch.cpp:286
A pure virtual class used to derive REPORTER objects from.
Definition: reporter.h:64
void OnFindDialogClose()
Notification that the Find dialog has closed.
int CheckAnnotate(ANNOTATION_ERROR_HANDLER aErrorHandler, ANNOTATE_SCOPE_T aAnnotateScope=ANNOTATE_ALL)
Check for annotation errors.
Definition: annotate.cpp:334
bool canCloseWindow(wxCloseEvent &aCloseEvent) override
bool importFile(const wxString &aFileName, int aFileType)
Load the given filename but sets the path to the current project path.
bool SaveEEFile(SCH_SHEET *aSheet, bool aSaveUnderNewName=false)
Save aSheet to a schematic file.
UNDO_REDO
Undo Redo considerations: Basically we have 3 cases New item Deleted item Modified item there is also...
void OnImportProject(wxCommandEvent &event)
SCH_JUNCTION * AddJunction(SCH_SCREEN *aScreen, const wxPoint &aPos, bool aAppendToUndo, bool aFinal=true)
SCH_SCREEN * GetScreen() const override
Return a pointer to a BASE_SCREEN or one of its derivatives.
wxString GetScreenDesc() const override
Return a human-readable description of the current screen.
Handle actions specific to the schematic editor.
void ShowChangedLanguage() override
Redraw the menus and what not in current language.
void OnClearFileHistory(wxCommandEvent &aEvent)
void SendMessageToPCBNEW(EDA_ITEM *aObjectToSync, SCH_COMPONENT *aPart)
Send a message to Pcbnew via a socket connection.
void SaveSymbolToSchematic(const LIB_PART &aSymbol)
Update the LIB_PART of the currently selected symbol.
Definition: kiid.h:44
void doCloseWindow() override
void ReCreateHToolbar() override
bool LoadSheetFromFile(SCH_SHEET *aSheet, SCH_SHEET_PATH *aHierarchy, const wxString &aFileName)
Load a the KiCad schematic file aFileName into the sheet aSheet.
Definition: sheet.cpp:103
bool AllowCaseSensitiveFileNameClashes(const wxString &aSchematicFileName)
Check aSchematicFileName for a potential file name case sensitivity clashes.
Definition: sheet.cpp:559
APP_SETTINGS_BASE is a settings class that should be derived for each standalone KiCad application.
Definition: app_settings.h:99
void TestDanglingEnds()
Test all of the connectable objects in the schematic for unused connection points.
void HardRedraw() override
Rebuild the GAL and redraw the screen.
wxPageSetupDialogData m_pageSetupData
bool WriteNetListFile(int aFormat, const wxString &aFullFileName, unsigned aNetlistOptions, REPORTER *aReporter=nullptr)
Create a netlist file.
Handles how to draw a screen (a board, a schematic ...)
Definition: base_screen.h:40
Annotate by position of component in the schematic sheet object list.
void SaveCopyForRepeatItem(const SCH_ITEM *aItem)
Clone aItem and owns that clone in this container.
void initScreenZoom()
Initialize the zoom value of the current screen and mark the screen as zoom-initialized.
void ShowAllIntersheetRefs(bool aShow)
Annotate using the first free reference number starting at the sheet number * 100.
SCHEMATIC & Schematic() const
void UpdateHierarchyNavigator(bool aForceUpdate=false)
Run the Hierarchy Navigator dialog.
Define a library symbol object.
Definition: lib_symbol.h:93
Base window classes and related definitions.
bool AppendSchematic()
Import a KiCad schematic into the current sheet.
bool CreateArchiveLibraryCacheFile(bool aUseCurrentSheetFilename=false)
Create a symbol library file with the name of the root document plus the '-cache' suffix,...
Definition: libarch.cpp:42
void KiwayMailIn(KIWAY_EXPRESS &aEvent) override
Receive KIWAY_EXPRESS messages from other players.
std::vector< wxPoint > GetSchematicConnections()
Collect a unique list of all possible connection points in the schematic.
A minimalistic software bus for communications between various DLLs/DSOs (DSOs) within the same KiCad...
Definition: kiway.h:260
ANNOTATE_SCOPE_T
Schematic annotation scope options.
SCH_ITEM * m_item_to_repeat
Last item to insert by the repeat command.
DIALOG_SCH_FIND * m_findReplaceDialog
Define a sheet pin (label) used in sheets to create hierarchical schematics.
Definition: sch_sheet_pin.h:65
bool isAutoSaveRequired() const override
Return true if the schematic has been modified.
Handle access to a stack of flattened SCH_SHEET objects by way of a path for creating a flattened sch...
wxPageSetupDialogData & GetPageSetupData()
A holder to handle information on schematic or board items.
void OnUpdatePCB(wxCommandEvent &event)
void ReCreateOptToolbar() override
Object to handle a bitmap image that can be inserted in a schematic.
Definition: sch_bitmap.h:40
bool LoadProjectSettings()
Load the KiCad project file (*.pro) settings specific to Eeschema.
const SCH_CONNECTION * m_highlightedConn
The highlighted net or bus, or nullptr.
Sheet symbol placed in a schematic, and is the entry point for a sub schematic.
Definition: sch_sheet.h:54
bool doAutoSave() override
Save the schematic files that have been modified and not yet saved.
Annotate by Y position from top to bottom.
UNDO_REDO_LIST
Remove the aItemCount of old commands from aList and delete commands, pickers and picked items if nee...
bool BreakSegmentsOnJunctions(SCH_SCREEN *aScreen=nullptr)
Test all junctions and bus entries in the schematic for intersections with wires and buses and breaks...
void OnAnnotate(wxCommandEvent &event)
Annotate incrementally using the first free reference number.
void ClearFindReplaceStatus()
void SelectUnit(SCH_COMPONENT *aSymbol, int aUnit)
Definition: getpart.cpp:198
void SetHighlightedConnection(const SCH_CONNECTION *aConnection)
void ClearExecFlags(const int aFlags)
Clear (removes) specified flags that not needed for next execution of external generator of the netli...
bool BreakSegment(SCH_LINE *aSegment, const wxPoint &aPoint, SCH_LINE **aNewSegment=nullptr, SCH_SCREEN *aScreen=nullptr)
Break a single segment into two at the specified point.
SCH_ITEM * GetRepeatItem() const
Return the item which is to be repeated with the insert key.
int ModalAnnotate(const wxString &aMessage)
Run a modal version of the annotate dialog for a specific purpose.
void AddItemToScreenAndUndoList(SCH_SCREEN *aScreen, SCH_ITEM *aItem, bool aUndoAppend)
Add an item to the schematic and adds the changes to the undo/redo container.
SCH_SEARCH_T
Schematic search type used by the socket link with Pcbnew.
void InstallPreferences(PAGED_DIALOG *aParent, PANEL_HOTKEYS_EDITOR *aHotkeysPanel) override
Allow Eeschema to install its preferences panels into the preferences dialog.
void OnExit(wxCommandEvent &event)
Segment description base class to describe items which have 2 end points (track, wire,...
Definition: sch_line.h:37
SCH_EDIT_FRAME(KIWAY *aKiway, wxWindow *aParent)
void SetSheetNumberAndCount()
Set the m_ScreenNumber and m_NumberOfScreens members for screens.
Each graphical item can have a SCH_CONNECTION describing its logical connection (to a bus or net).
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.
void LoadSettings(APP_SETTINGS_BASE *aCfg) override
Load common frame parameters from a configuration file.
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.
void RecomputeIntersheetRefs()
Update the schematic's page reference map for all global labels, and refresh the labels so that they ...
void DeleteJunction(SCH_ITEM *aItem, bool aAppend=false)
Removes a given junction and heals any wire segments under the junction.
void RollbackSchematicFromUndo()
Perform an undo of the last edit WITHOUT logging a corresponding redo.
ANNOTATE_ALGO_T
Schematic annotation type options.
Annotate by X position from left to right.
void ShowFindReplaceDialog(bool aReplace)
Run the Find or Find & Replace dialog.
void OnOpenPcbnew(wxCommandEvent &event)
Schematic symbol object.
Definition: sch_symbol.h:78
void SetCrossProbeConnection(const SCH_CONNECTION *aConnection)
Send a connection (net or bus) to Pcbnew for highlighting.
A base class for most all the KiCad significant classes used in schematics and boards.
Definition: eda_item.h:150
wxString GetCurrentFileName() const override
Get the full filename + path of the currently opened file in the frame.
~SCH_EDIT_FRAME() override
void ExecuteRemoteCommand(const char *cmdline) override
Execute a remote command sent by Pcbnew via a socket connection.
wxString GetUniqueFilenameForCurrentSheet()
bool EditSheetProperties(SCH_SHEET *aSheet, SCH_SHEET_PATH *aHierarchy, bool *aClearAnnotationNewItems)
Edit an existing sheet or add a new sheet to the schematic.
Definition: sheet.cpp:467
Annotate using the first free reference number starting at the sheet number * 1000.
wxString GetNetListerCommand() const
SCH_SHEET_PATH & GetCurrentSheet() const
bool TrimWire(const wxPoint &aStart, const wxPoint &aEnd)
If any single wire passes through both points, remove the portion between the two points,...
void FocusOnItem(SCH_ITEM *aItem)
void PutDataInPreviousState(PICKED_ITEMS_LIST *aList)
Restore an undo or redo command to put data pointed by aList in the previous state.
EDA_ITEM * GetItem(const KIID &aId) const override
Fetch an item by KIID.
void OnModify() override
Must be called after a schematic change in order to set the "modify" flag of the current screen and u...
Annotate the current sheet.
void SaveSettings(APP_SETTINGS_BASE *aCfg) override
Save common frame parameters to a configuration data file.
bool IsContentModified() override
Get if the current schematic has been modified but not saved.
bool checkForNoFullyDefinedLibIds(SCH_SHEET *aSheet)
Verify that the symbol library links aSheet and all of it's child sheets have been remapped to the sy...
Definition: sheet.cpp:74
void ClearUndoORRedoList(UNDO_REDO_LIST whichList, int aItemCount=-1) override
Free the undo or redo list from aList element.
int m_exec_flags
Flags of the wxExecute() function to call a custom net list generator.
void ShowSchematicSetupDialog(const wxString &aInitialPage=wxEmptyString)
void CommonSettingsChanged(bool aEnvVarsChanged, bool aTextVarsChanged) override
Called after the preferences dialog is run.
bool CreateArchiveLibrary(const wxString &aFileName)
Create a library aFileName that contains all components used in the current schematic.
Definition: libarch.cpp:65
void SetExecFlags(const int aFlags)
Set (adds) specified flags for next execution of external generator of the netlist or bom.
A shim class between EDA_DRAW_FRAME and several derived classes: SYMBOL_EDIT_FRAME,...
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:197
void SetNetListerCommand(const wxString &aCommand)
void RecordERCExclusions()
Scan existing markers and record data from any that are Excluded.
bool GetShowAllPins() const override
Allow edit frame to show/hide hidden pins.
void ReCreateVToolbar() override
void sendNetlistToCvpcb()
Send the KiCad netlist over to CVPCB.