54#include <python_scripting.h>
88#include <unordered_set>
95#include <wx/cmdline.h>
97#include <wx/filedlg.h>
109#define DIFF_SYMBOLS_DIALOG_NAME wxT( "DiffSymbolsDialog" )
139 m_ercDialog(
nullptr ),
140 m_diffSymbolDialog(
nullptr ),
141 m_symbolFieldsTableDialog(
nullptr ),
142 m_netNavigator(
nullptr ),
143 m_highlightedConnChanged( false )
145 m_maximizeByDefault =
true;
148 m_showBorderAndTitleBlock =
true;
149 m_supportsAutoSave =
true;
150 m_syncingPcbToSchSelection =
false;
151 m_aboutTitle =
_HKI(
"KiCad Schematic Editor" );
152 m_show_search =
false;
154 m_findReplaceDialog =
nullptr;
156 m_findReplaceData = std::make_unique<SCH_SEARCH_DATA>();
160 wxIconBundle icon_bundle;
163 icon_bundle.AddIcon( icon );
165 icon_bundle.AddIcon( icon );
167 icon_bundle.AddIcon( icon );
169 icon_bundle.AddIcon( icon );
171 icon_bundle.AddIcon( icon );
173 SetIcons( icon_bundle );
175 LoadSettings( eeconfig() );
182 SetCurrentSheet( root );
189 ReCreateOptToolbar();
193 &SCH_EDIT_FRAME::onPluginAvailabilityChanged,
this );
199 m_pageSetupData.GetPrintData().SetPrintMode( wxPRINT_MODE_PRINTER );
200 m_pageSetupData.GetPrintData().SetQuality( wxPRINT_QUALITY_MEDIUM );
201 m_pageSetupData.GetPrintData().SetBin( wxPRINTBIN_AUTO );
202 m_pageSetupData.GetPrintData().SetNoCopies( 1 );
207 m_propertiesPanel->SetSplitterProportion( eeconfig()->m_AuiPanels.properties_splitter );
211 m_auimgr.SetManagedWindow(
this );
216 m_auimgr.AddPane( m_mainToolBar,
EDA_PANE().HToolbar().Name( wxS(
"MainToolbar" ) )
219 m_auimgr.AddPane( m_messagePanel,
EDA_PANE().Messages().Name( wxS(
"MsgPanel" ) )
220 .Bottom().Layer( 6 ) );
223 m_auimgr.AddPane( m_hierarchy,
EDA_PANE().Palette().Name( SchematicHierarchyPaneName() )
224 .Caption(
_(
"Schematic Hierarchy" ) )
225 .Left().Layer( 3 ).Position( 1 )
226 .TopDockable(
false )
227 .BottomDockable(
false )
228 .CloseButton(
false )
229 .MinSize( FromDIP( wxSize( 120, 60 ) ) )
230 .BestSize( FromDIP( wxSize( 200, 200 ) ) )
231 .FloatingSize( FromDIP( wxSize( 200, 200 ) ) )
232 .FloatingPosition( FromDIP( wxPoint( 50, 50 ) ) )
240 m_auimgr.AddPane( m_optionsToolBar,
EDA_PANE().VToolbar().Name( wxS(
"OptToolbar" ) )
241 .Left().Layer( 2 ) );
243 m_auimgr.AddPane( m_drawToolBar,
EDA_PANE().VToolbar().Name( wxS(
"ToolsToolbar" ) )
244 .Right().Layer( 2 ) );
247 m_auimgr.AddPane( GetCanvas(),
EDA_PANE().Canvas().Name( wxS(
"DrawFrame" ) )
250 m_auimgr.AddPane( m_searchPane,
EDA_PANE()
251 .Name( SearchPaneName() )
253 .Caption(
_(
"Search" ) )
255 .MinSize( FromDIP( wxSize( 180, 60 ) ) )
256 .BestSize( FromDIP( wxSize( 180, 100 ) ) )
257 .FloatingSize( FromDIP( wxSize( 480, 200 ) ) )
258 .CloseButton(
false )
259 .DestroyOnClose(
false )
260 .Show( m_show_search ) );
262 FinishAUIInitialization();
265 SwitchCanvas( m_canvasType );
267 GetCanvas()->GetGAL()->SetAxesEnabled(
false );
272 wxAuiPaneInfo& hierarchy_pane = m_auimgr.GetPane( SchematicHierarchyPaneName() );
273 wxAuiPaneInfo& netNavigatorPane = m_auimgr.GetPane( NetNavigatorPaneName() );
274 wxAuiPaneInfo& propertiesPane = m_auimgr.GetPane( PropertiesPaneName() );
275 wxAuiPaneInfo& selectionFilterPane = m_auimgr.GetPane( wxS(
"SelectionFilter" ) );
281 updateSelectionFilterVisbility();
284 selectionFilterPane.dock_proportion = 0;
305 hierarchy_pane.Float();
311 wxAuiPaneInfo& searchPane = m_auimgr.GetPane( SearchPaneName() );
320 wxAuiPaneInfo& searchPane = m_auimgr.GetPane( SearchPaneName() );
326 netNavigatorPane.Float();
351 hierarchy_pane.Fixed();
353 netNavigatorPane.Fixed();
357 hierarchy_pane.Resizable();
358 netNavigatorPane.Resizable();
363 hierarchy_pane.MinSize( FromDIP( wxSize( 120, 60 ) ) );
364 netNavigatorPane.MinSize( FromDIP( wxSize( 120, 60 ) ) );
371 LoadProjectSettings();
392 setupUnits( eeconfig() );
401 m_apiHandler = std::make_unique<API_HANDLER_SCH>(
this );
402 Pgm().GetApiServer().RegisterHandler( m_apiHandler.get() );
410 DragAcceptFiles(
true );
417 wxPoint canvas_pos = GetCanvas()->GetScreenPosition();
418 hierarchy_pane.FloatingPosition( canvas_pos.x + 10, canvas_pos.y + 10 );
430 Pgm().GetApiServer().DeregisterHandler( m_apiHandler.get() );
432 &SCH_EDIT_FRAME::onPluginAvailabilityChanged,
this );
460 catch(
const nlohmann::detail::type_error& e )
462 wxFAIL_MSG( wxString::Format( wxT(
"Settings exception occurred: %s" ), e.what() ) );
494 if( hierarchy_pane.rect.width > 50 )
497 hierarchy_pane.best_size.x = hierarchy_pane.rect.width;
555 auto searchPaneCond =
561 auto propertiesCond =
567 auto hierarchyNavigatorCond =
573 auto netNavigatorCond =
588#define ENABLE( x ) ACTION_CONDITIONS().Enable( x )
589#define CHECK( x ) ACTION_CONDITIONS().Check( x )
603 CHECK( cond.
Units( EDA_UNITS::MILLIMETRES ) ) );
633 if( SCRIPTING::IsWxAvailable() )
639 auto showHiddenPinsCond =
645 auto showHiddenFieldsCond =
652 auto showDirectiveLabelsCond =
659 auto showERCErrorsCond =
666 auto showERCWarningsCond =
673 auto showERCExclusionsCond =
680 auto markSimExclusionsCond =
687 auto showOPVoltagesCond =
694 auto showOPCurrentsCond =
701 auto showAnnotateAutomaticallyCond =
708 auto remapSymbolsCondition =
717 auto belowRootSheetCondition =
721 return navigateTool && navigateTool->
CanGoUp();
747#define CURRENT_TOOL( action ) mgr->SetConditions( action, CHECK( cond.CurrentTool( action ) ) )
804 std::unique_ptr<SCH_ITEM> repeatItem(
static_cast<SCH_ITEM*
>( aItem->
Duplicate() ) );
807 repeatItem->ClearFlags();
906 for(
const std::pair<const wxString, LIB_SYMBOL*>& libSymbol : screen->
GetLibSymbols() )
908 wxCHECK2( libSymbol.second,
continue );
909 libSymbol.second->ClearCaches();
912 if(
Schematic().Settings().m_IntersheetRefsShow )
945 if( symbolEditor && !symbolEditor->Close() )
950 if( symbolViewer && !symbolViewer->Close() )
957 if( chooser && !chooser->Close() )
964 if( symbolEditor && symbolEditor->IsSymbolFromSchematic() )
966 if( !symbolEditor->CanCloseSymbolFromSchematic(
true ) )
987 wxString msg =
_(
"Save changes to '%s' before closing?" );
992 return SaveProject();
1014 Unbind( EDA_EVT_CLOSE_DIALOG_SYMBOL_FIELDS_TABLE,
1064 if( hierarchy_pane.IsShown() && hierarchy_pane.IsFloating() )
1066 hierarchy_pane.Show(
false );
1080 if( fn.IsFileWritable() )
1081 wxRemoveFile( fn.GetFullPath() );
1087 if( autoSaveFileName.IsFileWritable() )
1088 wxRemoveFile( autoSaveFileName.GetFullPath() );
1132 if( !GetTitle().StartsWith( wxS(
"*" ) ) )
1139 if(
Kiface().IsSingle() )
1141 DisplayError(
this,
_(
"Cannot update the PCB, because the Schematic Editor is opened"
1142 " in stand-alone mode. In order to create/update PCBs from"
1143 " schematics, launch the KiCad shell and create a project." ) );
1152 fn.SetExt( FILEEXT::PcbFileExtension );
1164 if( !frame->IsVisible() )
1165 frame->Show(
true );
1168 if( frame->IsIconized() )
1169 frame->Iconize(
false );
1173 std::string payload;
1183 if( aRefreshNetNavigator )
1204 wxString findString;
1208 if( selection.
Size() == 1 )
1212 switch( front->
Type() )
1235 if( findString.Contains( wxT(
"\n" ) ) )
1236 findString = findString.Before(
'\n' );
1250 wxDefaultPosition, wxDefaultSize,
1251 aReplace ? wxFR_REPLACEDIALOG : 0 );
1305 if( !
Kiface().IsSingle() )
1310 wxFileDialog dlg(
this,
_(
"New Schematic" ), pro_dir, wxEmptyString,
1313 if( dlg.ShowModal() != wxID_CANCEL )
1316 wxFileName create_me =
1319 if( create_me.FileExists() )
1322 msg.Printf(
_(
"Schematic file '%s' already exists." ), create_me.GetFullName() );
1328 wxASSERT_MSG( create_me.IsAbsolute(), wxS(
"wxFileDialog returned non-absolute path" ) );
1339 if( !
Kiface().IsSingle() )
1347 wxFileDialog dlg(
this,
_(
"Open Schematic" ), pro_dir, wxEmptyString,
1348 wildcards, wxFD_OPEN | wxFD_FILE_MUST_EXIST );
1350 if( dlg.ShowModal() != wxID_CANCEL )
1362 if( kicad_board.IsOk() && !
Schematic().GetFileName().IsEmpty() )
1364 kicad_board.SetExt( FILEEXT::PcbFileExtension );
1365 wxFileName legacy_board( kicad_board );
1367 wxFileName& boardfn = legacy_board;
1369 if( !legacy_board.FileExists() || kicad_board.FileExists() )
1370 boardfn = kicad_board;
1372 if(
Kiface().IsSingle() )
1389 frame->
OpenProjectFiles( std::vector<wxString>( 1, boardfn.GetFullPath() ) );
1392 if( !frame->IsVisible() )
1393 frame->Show(
true );
1396 if( frame->IsIconized() )
1397 frame->Iconize(
false );
1405 wxASSERT(
Kiface().IsSingle() );
1416 if( !
ReadyToNetlist(
_(
"Assigning footprints requires a fully annotated schematic." ) ) )
1432 player->Show(
true );
1450 if( event.GetId() == wxID_EXIT )
1453 if( event.GetId() == wxID_CLOSE ||
Kiface().IsSingle() )
1467 cfg->
GetPrintDC()->SetLogicalFunction( wxCOPY );
1490 auto invalidateTextVars =
1493 if(
text->HasTextVars() )
1495 text->ClearRenderCache();
1496 text->ClearBoundingBoxCache();
1503 item->RunOnChildren(
1504 [&invalidateTextVars](
SCH_ITEM* aChild )
1507 invalidateTextVars(
text );
1512 invalidateTextVars(
text );
1547 if( !
pin->GetOperatingPoint().IsEmpty() )
1550 pin->SetOperatingPoint( wxEmptyString );
1553 if( pins.size() == 2 )
1558 if( !op.IsEmpty() && op != wxS(
"--" ) && op != wxS(
"?" ) )
1560 pins[0]->SetOperatingPoint( op );
1573 for(
const auto& modelPin : model.
GetPins() )
1575 SCH_PIN* symbolPin = symbol->
GetPin( modelPin.get().symbolPinNumber );
1576 wxString signalName = ref + wxS(
":" ) + modelPin.get().modelPinName;
1581 if( symbolPin && !op.IsEmpty() && op != wxS(
"--" ) && op != wxS(
"?" ) )
1596 if( !op.IsEmpty() && op != wxS(
"--" ) && op != wxS(
"?" ) )
1601 double length = 0.0;
1603 if( subgraph->GetSheet().GetExcludedFromSim() )
1606 for(
SCH_ITEM* item : subgraph->GetItems() )
1651 if( otherLabel != label && otherLabel->
GetText() == label->
GetText() )
1671 bool readOnly =
false;
1672 bool unsaved =
false;
1682 title += fn.GetName();
1686 if( sheetPath != title )
1687 title += wxString::Format( wxT(
" [%s]" ), sheetPath );
1690 title += wxS(
" " ) +
_(
"[Read Only]" );
1693 title += wxS(
" " ) +
_(
"[Unsaved]" );
1697 title =
_(
"[no schematic loaded]" );
1700 title += wxT(
" \u2014 " ) +
_(
"Schematic Editor" );
1716 bool hasHighlightedConn = !highlightedConn.IsEmpty();
1722 aCommit = &localCommit;
1741 wxLogTrace(
"CONN_PROFILE",
"SchematicCleanUp() %0.4f ms", timer.
msecs() );
1747 std::function<void(
SCH_ITEM* )> changeHandler =
1748 [&](
SCH_ITEM* aChangedItem ) ->
void
1757 if( !hasHighlightedConn )
1764 && ( connection->
Name() == highlightedConn
1775 std::unordered_set<SCH_SCREEN*> all_screens;
1778 all_screens.insert(
path.LastScreen() );
1797 std::set<SCH_ITEM*> changed_items;
1798 std::set<VECTOR2I> pts;
1799 std::set<std::pair<SCH_SHEET_PATH, SCH_ITEM*>> item_paths;
1802 std::unordered_set<SCH_SCREEN*> changed_screens;
1803 std::set<std::pair<SCH_RULE_AREA*, SCH_SCREEN*>> changed_rule_areas;
1804 std::vector<CHANGED_ITEM> changed_connectable_items;
1807 auto addItemToChangeSet = [&changed_items, &pts, &item_paths]( CHANGED_ITEM itemData )
1809 std::vector<SCH_SHEET_PATH>& paths = itemData.screen->GetClientSheetPaths();
1811 std::vector<VECTOR2I> tmp_pts = itemData.item->GetConnectionPoints();
1812 pts.insert( tmp_pts.begin(), tmp_pts.end() );
1813 changed_items.insert( itemData.item );
1816 item_paths.insert( std::make_pair(
path, itemData.item ) );
1818 if( !itemData.linked_item || !itemData.linked_item->IsConnectable() )
1821 tmp_pts = itemData.linked_item->GetConnectionPoints();
1822 pts.insert( tmp_pts.begin(), tmp_pts.end() );
1823 changed_items.insert( itemData.linked_item );
1829 std::vector<SCH_PIN*> pins = symbol->GetPins();
1830 changed_items.insert( pins.begin(), pins.end() );
1834 item_paths.insert( std::make_pair(
path, itemData.linked_item ) );
1838 for(
unsigned ii = 0; ii < changed_list->
GetCount(); ++ii )
1844 case UNDO_REDO::CHANGED:
1845 case UNDO_REDO::NEWITEM:
1846 case UNDO_REDO::DELETED:
1859 changed_screens.insert( screen );
1868 changed_rule_areas.insert( { ruleArea, screen } );
1874 changed_connectable_items.push_back( { item, linked_item, screen } );
1880 std::vector<std::pair<SCH_RULE_AREA*, SCH_SCREEN*>> forceUpdateRuleAreas =
1883 std::for_each( forceUpdateRuleAreas.begin(), forceUpdateRuleAreas.end(),
1884 [&]( std::pair<SCH_RULE_AREA*, SCH_SCREEN*>& updatedRuleArea )
1886 changed_rule_areas.insert( updatedRuleArea );
1891 for(
const std::pair<SCH_RULE_AREA*, SCH_SCREEN*>& changedRuleArea : changed_rule_areas )
1894 changedRuleArea.first->GetPastAndPresentContainedItems() )
1896 addItemToChangeSet( { containedItem,
nullptr, changedRuleArea.second } );
1901 for( CHANGED_ITEM& changed_item_data : changed_connectable_items )
1903 addItemToChangeSet( changed_item_data );
1909 const std::vector<VECTOR2I> labelConnectionPoints =
1910 changed_item_data.item->GetConnectionPoints();
1913 changed_item_data.screen->Items().Overlapping(
1916 for(
SCH_ITEM* candidateRuleArea : candidateRuleAreas )
1926 { containedItem,
nullptr, changed_item_data.screen } );
1937 if( !item->IsConnectable() )
1942 if( item->HitTest( pt ) )
1943 changed_items.insert( item );
1945 else if( item->Type() ==
SCH_SYMBOL_T && item->IsConnected( pt ) )
1948 std::vector<SCH_PIN*> pins = symbol->
GetPins();
1950 changed_items.insert( pins.begin(), pins.end() );
1956 wxCHECK2( sheet,
continue );
1958 std::vector<SCH_SHEET_PIN*> sheetPins = sheet->
GetPins();
1959 changed_items.insert( sheetPins.begin(), sheetPins.end() );
1963 if( item->IsConnected( pt ) )
1964 changed_items.insert( item );
1969 std::set<std::pair<SCH_SHEET_PATH, SCH_ITEM*>> all_items =
1972 all_items.insert( item_paths.begin(), item_paths.end() );
1978 for(
auto&[
path, item ] : all_items )
1980 wxCHECK2( item,
continue );
1981 item->SetConnectivityDirty();
1984 new_graph.
Recalculate( list,
false, &changeHandler );
1995 auto invalidateTextVars =
1998 if(
text->HasTextVars() )
2000 text->ClearRenderCache();
2001 text->ClearBoundingBoxCache();
2015 [&invalidateTextVars](
SCH_ITEM* aChild )
2018 invalidateTextVars(
text );
2026 invalidateTextVars(
text );
2039 if( !localCommit.
Empty() )
2040 localCommit.
Push(
_(
"Schematic Cleanup" ) );
2049 field.ClearBoundingBoxCache();
2052 GetCanvas()->GetView()->Update( label );
2096 item->ClearCaches();
2098 for(
const auto& [ libItemName, libSymbol ] : screen->
GetLibSymbols() )
2099 libSymbol->ClearCaches();
2143#if defined( __WXMSW__ )
2153 SetStatusText( wxString::Format(
_(
"Highlighted net: %s" ),
2158 SetStatusText( wxT(
"" ) );
2180 if( aIncludeAllVisible )
2196 if( item != dsAsItem )
2197 bBoxDoc.
Merge( item->GetBoundingBox() );
2225 if( lastItem && lastItem != aItem )
2230 lastBrightenedItemID =
niluuid;
2240 lastBrightenedItemID = aItem->
m_Uuid;
2276 const KIID& aSchematicSymbolUUID )
2280 SCH_ITEM* item = sheets.
GetItem( aSchematicSymbolUUID, &principalPath );
2284 if( !principalSymbol )
2287 wxString principalRef;
2289 if( principalSymbol->
IsAnnotated( &principalPath ) )
2290 principalRef = principalSymbol->
GetRef( &principalPath,
false );
2292 std::vector< std::pair<SCH_SYMBOL*, SCH_SHEET_PATH> > allUnits;
2300 if( candidateSymbol == principalSymbol
2302 && candidateSymbol->
GetRef( &
path,
false ) == principalRef ) )
2304 allUnits.emplace_back( candidateSymbol,
path );
2309 for(
auto& [ unit,
path ] : allUnits )
2313 path.LastScreen()->Remove( unit );
2315 if( !unit->IsNew() )
2318 unit->SetLibSymbol( aSymbol.
Flatten().release() );
2326 path.LastScreen()->Append( unit );
2330 if( !commit.
Empty() )
2331 commit.
Push(
_(
"Save Symbol to Schematic" ) );
2340 sch_item->ClearCaches();
2371 wxCHECK( selectionTool, );
2380 item->SetForceVisible(
true );
2383 else if( item->IsBrightened() )
2385 item->SetForceVisible(
false );
2394 item->RunOnChildren(
2421 wxCHECK( editTool, );
2436 _(
"Compare Symbol with Library" ) );
2514 m_netNavigator =
new wxTreeCtrl(
this, wxID_ANY, wxPoint( 0, 0 ),
2515 FromDIP( wxSize( 160, 250 ) ),
2516 wxTR_DEFAULT_STYLE | wxNO_BORDER );
2529 if( refreshNetNavigator )
2540 bool refreshSelection = selection.IsOk() && ( selection !=
m_netNavigator->GetRootItem() );
2542 if( refreshSelection )
2564 wxAuiPaneInfo& selectionFilterPane =
m_auimgr.GetPane( wxS(
"SelectionFilter" ) );
2568 bool showFilter = ( hierarchyPane.IsShown() && hierarchyPane.IsDocked() )
2569 || ( netNavigatorPane.IsShown() && netNavigatorPane.IsDocked() )
2570 || ( propertiesPane.IsShown() && propertiesPane.IsDocked() );
2572 selectionFilterPane.Show( showFilter );
2576void SCH_EDIT_FRAME::onPluginAvailabilityChanged( wxCommandEvent& aEvt )
2578 wxLogTrace(
traceApi,
"SCH frame: EDA_EVT_PLUGIN_AVAILABILITY_CHANGED" );
const KICOMMON_API wxEventTypeTag< wxCommandEvent > EDA_EVT_PLUGIN_AVAILABILITY_CHANGED
Notifies other parts of KiCad when plugin availability changes.
constexpr EDA_IU_SCALE schIUScale
KIFACE_BASE & Kiface()
Global KIFACE_BASE "get" accessor.
wxBitmap KiBitmap(BITMAPS aBitmap, int aHeightTag)
Construct a wxBitmap from an image identifier Returns the image from the active theme if the image ha...
static TOOL_ACTION toggleGrid
static TOOL_ACTION cancelInteractive
static TOOL_ACTION millimetersUnits
static TOOL_ACTION unselectAll
static TOOL_ACTION updateFind
static TOOL_ACTION pasteSpecial
static TOOL_ACTION milsUnits
static TOOL_ACTION toggleBoundingBoxes
static TOOL_ACTION showSearch
static TOOL_ACTION duplicate
static TOOL_ACTION inchesUnits
static TOOL_ACTION toggleCursorStyle
static TOOL_ACTION doDelete
static TOOL_ACTION selectionTool
static TOOL_ACTION zoomFitScreen
static TOOL_ACTION deleteTool
static TOOL_ACTION zoomTool
static TOOL_ACTION showProperties
static TOOL_ACTION toggleGridOverrides
static TOOL_ACTION selectAll
Manage TOOL_ACTION objects.
void SetConditions(const TOOL_ACTION &aAction, const ACTION_CONDITIONS &aConditions)
Set the conditions the UI elements for activating a specific tool action should use for determining t...
static const ADVANCED_CFG & GetCfg()
Get the singleton instance's config, which is shared by all consumers.
Handles how to draw a screen (a board, a schematic ...)
void SetPageNumber(const wxString &aPageNumber)
void SetContentModified(bool aModified=true)
BOX2< Vec > & Merge(const BOX2< Vec > &aRect)
Modify the position and size of the rectangle in order to contain aRect.
COLOR4D GetColor(int aLayer) const
COMMIT & Modify(EDA_ITEM *aItem, BASE_SCREEN *aScreen=nullptr)
Create an undo entry for an item that has been already modified.
bool Empty() const
Returns status of an item.
Handle actions that are shared between different applications.
Calculate the connectivity of a schematic and generates netlists.
const NET_MAP & GetNetMap() const
CONNECTION_SUBGRAPH * FindFirstSubgraphByName(const wxString &aNetName)
Retrieve a subgraph for the given net name, if one exists.
std::set< std::pair< SCH_SHEET_PATH, SCH_ITEM * > > ExtractAffectedItems(const std::set< SCH_ITEM * > &aItems)
For a set of items, this will remove the connected items and their associated data including subgraph...
void SetLastCodes(const CONNECTION_GRAPH *aOther)
void Merge(CONNECTION_GRAPH &aGraph)
Combine the input graph contents into the current graph.
void Recalculate(const SCH_SHEET_LIST &aSheetList, bool aUnconditional=false, std::function< void(SCH_ITEM *)> *aChangedItemHandler=nullptr)
Update the connection graph for the given list of sheets.
A subgraph is a set of items that are electrically connected on a single sheet.
wxArrayString GetFindEntries() const
wxArrayString GetReplaceEntries() const
void SetReplaceEntries(const wxArrayString &aEntries)
void SetFindEntries(const wxArrayString &aEntries, const wxString &aFindString)
bool Show(bool show) override
virtual APP_SETTINGS_BASE * config() const
Returns the settings object used in SaveSettings(), and is overloaded in KICAD_MANAGER_FRAME.
UNDO_REDO_CONTAINER m_undoList
void ShowChangedLanguage() override
Redraw the menus and what not in current language.
virtual void setupUIConditions()
Setup the UI conditions for the various actions and their controls in this frame.
virtual void ClearUndoRedoList()
Clear the undo and redo list using ClearUndoORRedoList()
SETTINGS_MANAGER * GetSettingsManager() const
virtual void OnModify()
Must be called after a model change in order to set the "modify" flag and do other frame-specific pro...
void UpdateFileHistory(const wxString &FullFileName, FILE_HISTORY *aFileHistory=nullptr)
Update the list of recently opened files.
void ClearFileHistory(FILE_HISTORY *aFileHistory=nullptr)
Removes all files from the file history.
virtual void OnSize(wxSizeEvent &aEvent)
virtual void OnDropFiles(wxDropFilesEvent &aEvent)
Handles event fired when a file is dropped to the window.
wxString GetFileFromHistory(int cmdId, const wxString &type, FILE_HISTORY *aFileHistory=nullptr)
Fetches the file name from the file history list.
virtual int GetUndoCommandCount() const
wxArrayString m_replaceStringHistoryList
EDA_DRAW_PANEL_GAL::GAL_TYPE m_canvasType
virtual void OnSize(wxSizeEvent &event) override
Recalculate the size of toolbars and display panel when the frame size changes.
GAL_DISPLAY_OPTIONS_IMPL & GetGalDisplayOptions()
Return a reference to the gal rendering options used by GAL for rendering.
static const wxString PropertiesPaneName()
void FocusOnLocation(const VECTOR2I &aPos)
Useful to focus on a particular location, in find functions.
virtual void SetScreen(BASE_SCREEN *aScreen)
void RecreateToolbars()
Rebuild all toolbars, and update the checked state of check tools.
virtual void UpdateMsgPanel()
Redraw the message panel.
void PrintDrawingSheet(const RENDER_SETTINGS *aSettings, BASE_SCREEN *aScreen, const std::map< wxString, wxString > *aProperties, double aMils2Iu, const wxString &aFilename, const wxString &aSheetLayer=wxEmptyString)
Prints the drawing-sheet (frame and title block).
wxArrayString m_findStringHistoryList
std::unique_ptr< EDA_SEARCH_DATA > m_findReplaceData
PROPERTIES_PANEL * m_propertiesPanel
GAL_TYPE GetBackend() const
Return the type of backend currently used by GAL canvas.
void ForceRefresh()
Force a redraw.
virtual void Refresh(bool aEraseBackground=true, const wxRect *aRect=nullptr) override
void SetEventDispatcher(TOOL_DISPATCHER *aEventDispatcher)
Set a dispatcher that processes events and forwards them to tools.
A base class for most all the KiCad significant classes used in schematics and boards.
virtual const VECTOR2I GetFocusPosition() const
Similar to GetPosition, but allows items to return their visual center rather than their anchor.
KICAD_T Type() const
Returns the type of object.
bool IsBrightened() const
Specialization of the wxAuiPaneInfo class for KiCad panels.
SHAPE_POLY_SET & GetPolyShape()
A mix-in class (via multiple inheritance) that handles texts such as labels, parts,...
virtual const wxString & GetText() const
Return the string associated with the text object.
virtual void ClearBoundingBoxCache()
SELECTION_CONDITION BoundingBoxes()
SELECTION_CONDITION RedoAvailable()
Create a functor that tests if there are any items in the redo queue.
SELECTION_CONDITION CurrentTool(const TOOL_ACTION &aTool)
Create a functor testing if the specified tool is the current active tool in the frame.
SELECTION_CONDITION ScriptingConsoleVisible()
Create a functor testing if the python scripting console window is visible.
SELECTION_CONDITION Units(EDA_UNITS aUnit)
Create a functor that tests if the frame has the specified units.
SELECTION_CONDITION GridVisible()
Create a functor testing if the grid is visible in a frame.
SELECTION_CONDITION GridOverrides()
Create a functor testing if the grid overrides wires is enabled in a frame.
SELECTION_CONDITION FullscreenCursor()
Create a functor testing if the cursor is full screen in a frame.
PANEL_ANNOTATE m_AnnotatePanel
Gather all the actions that are shared by tools.
static TOOL_ACTION mirrorV
static TOOL_ACTION remapSymbols
static TOOL_ACTION selectionActivate
Activation of the selection tool.
static TOOL_ACTION toggleAnnotateAuto
static TOOL_ACTION lineMode90
static TOOL_ACTION toggleHiddenPins
static TOOL_ACTION drawTable
static TOOL_ACTION placeSymbol
static TOOL_ACTION clearSelection
Clears the current selection.
static TOOL_ACTION showPythonConsole
static TOOL_ACTION toggleERCWarnings
static TOOL_ACTION drawRuleArea
static TOOL_ACTION toggleERCExclusions
static TOOL_ACTION placeClassLabel
static TOOL_ACTION drawWire
static TOOL_ACTION drawCircle
static TOOL_ACTION rotateCCW
static TOOL_ACTION lineModeFree
static TOOL_ACTION drawBus
static TOOL_ACTION toggleERCErrors
static TOOL_ACTION placePower
static TOOL_ACTION placeSheetPin
static TOOL_ACTION drawLines
static TOOL_ACTION toggleOPCurrents
static TOOL_ACTION mirrorH
static TOOL_ACTION highlightNetTool
static TOOL_ACTION updateNetHighlighting
static TOOL_ACTION syncSheetPins
static TOOL_ACTION rotateCW
static TOOL_ACTION leaveSheet
static TOOL_ACTION toggleHiddenFields
static TOOL_ACTION placeGlobalLabel
static TOOL_ACTION ddAppendFile
static TOOL_ACTION placeHierLabel
static TOOL_ACTION drawTextBox
static TOOL_ACTION showNetNavigator
static TOOL_ACTION drawRectangle
static TOOL_ACTION placeImage
static TOOL_ACTION toggleDirectiveLabels
static TOOL_ACTION showHierarchy
static TOOL_ACTION placeSchematicText
static TOOL_ACTION toggleOPVoltages
static TOOL_ACTION drawArc
static TOOL_ACTION lineMode45
static TOOL_ACTION drawSheet
static TOOL_ACTION markSimExclusions
static TOOL_ACTION placeLabel
static TOOL_ACTION placeBusWireEntry
static TOOL_ACTION placeJunction
static TOOL_ACTION placeNoConnect
Tool that displays edit points allowing to modify items by dragging the points.
EE_TYPE Overlapping(const BOX2I &aRect) const
EE_TYPE OfType(KICAD_T aType) const
SEVERITY GetSeverity(int aErrorCode) const
void ReadWindowSettings(WINDOW_SETTINGS &aCfg)
Read GAL config options from application-level config.
void UpdateLabelsHierarchyTree()
Update the labels of the hierarchical tree of the schematic.
void UpdateHierarchySelection()
Updates the tree's selection to match current page.
void UpdateHierarchyTree()
Update the hierarchical tree of the schematic.
Hold an error message and may be used when throwing exceptions containing meaningful error messages.
APP_SETTINGS_BASE * KifaceSettings() const
A color representation with 4 components: red, green, blue, alpha.
wxColour ToColour() const
Container for all the knowledge about how graphical objects are drawn on any output surface/device.
void SetDefaultFont(const wxString &aFont)
wxDC * GetPrintDC() const
Contains methods for drawing schematic-specific items.
DS_PROXY_VIEW_ITEM * GetDrawingSheet() const
void SetScale(double aScale, VECTOR2D aAnchor={ 0, 0 }) override
Set the scaling factor, zooming around a given anchor point.
An abstract base class for deriving all objects that can be added to a VIEW.
Hold a (potentially large) number of VIEW_ITEMs and renders them on a graphics device provided by the...
virtual void Update(const VIEW_ITEM *aItem, int aUpdateFlags) const
For dynamic VIEWs, inform the associated VIEW that the graphical representation of this item has chan...
void SetLayerVisible(int aLayer, bool aVisible=true)
Control the visibility of a particular layer.
PAINTER * GetPainter() const
Return the painter object used by the view for drawing #VIEW_ITEMS.
void SetCenter(const VECTOR2D &aCenter)
Set the center point of the VIEW (i.e.
void UpdateAllItemsConditionally(int aUpdateFlags, std::function< bool(VIEW_ITEM *)> aCondition)
Update items in the view according to the given flags and condition.
A wxFrame capable of the OpenProjectFiles function, meaning it can load a portion of a KiCad project.
bool Destroy() override
Our version of Destroy() which is virtual from wxWidgets.
virtual bool OpenProjectFiles(const std::vector< wxString > &aFileList, int aCtl=0)
Open a project or set of files given by aFileList.
void OnSockRequestServer(wxSocketEvent &evt)
void OnSockRequest(wxSocketEvent &evt)
A minimalistic software bus for communications between various DLLs/DSOs (DSOs) within the same KiCad...
virtual KIWAY_PLAYER * Player(FRAME_T aFrameType, bool doCreate=true, wxTopLevelWindow *aParent=nullptr)
Return the KIWAY_PLAYER* given a FRAME_T.
virtual bool PlayerClose(FRAME_T aFrameType, bool doForce)
Call the KIWAY_PLAYER::Close( bool force ) function on the window and if not vetoed,...
virtual void ExpressMail(FRAME_T aDestination, MAIL_T aCommand, std::string &aPayload, wxWindow *aSource=nullptr)
Send aPayload to aDestination from aSource.
Define a library symbol object.
std::unique_ptr< LIB_SYMBOL > Flatten() const
Return a flattened symbol inheritance to the caller.
Tree view item data for the net navigator.
A singleton reporter that reports to nowhere.
int GetHeightIU(double aIUScale) const
Gets the page height in IU.
int GetWidthIU(double aIUScale) const
Gets the page width in IU.
virtual SETTINGS_MANAGER & GetSettingsManager() const
A holder to handle information on schematic or board items.
UNDO_REDO GetPickedItemStatus(unsigned int aIdx) const
EDA_ITEM * GetPickedItemLink(unsigned int aIdx) const
unsigned GetCount() const
BASE_SCREEN * GetScreenForItem(unsigned int aIdx) const
EDA_ITEM * GetPickedItem(unsigned int aIdx) const
A small class to help profiling.
void Stop()
Save the time when this function was called, and set the counter stane to stop.
double msecs(bool aSinceLast=false)
virtual const wxString GetProjectFullName() const
Return the full path and name of the project.
virtual const wxString GetProjectPath() const
Return the full path of the project.
virtual const wxString AbsolutePath(const wxString &aFileName) const
Fix up aFileName if it is relative to the project's directory to be an absolute path and filename.
These are loaded from Eeschema settings but then overwritten by the project settings.
TEMPLATES m_TemplateFieldNames
bool m_IntersheetRefsShow
Holds all the data relating to one schematic.
void Reset()
Initialize this schematic to a blank one, unloading anything existing.
CONNECTION_GRAPH * m_connectionGraph
Holds and calculates connectivity information of this schematic.
SCH_SHEET_PATH & CurrentSheet() const override
void OnSchSheetChanged()
Notify the schematic and its listeners that the current sheet has been changed.
wxString GetOperatingPoint(const wxString &aNetName, int aPrecision, const wxString &aRange)
wxString GetFileName() const override
Helper to retrieve the filename from the root sheet screen.
SCHEMATIC_SETTINGS & Settings() const
CONNECTION_GRAPH * ConnectionGraph() const override
SCH_SHEET_LIST BuildUnorderedSheetList() const
void SetCurrentSheet(const SCH_SHEET_PATH &aPath) override
SCH_ITEM * GetItem(const KIID &aID, SCH_SHEET_PATH *aPathOut=nullptr) const
void SetRoot(SCH_SHEET *aRootSheet)
Initialize the schematic with a new root sheet.
void SetProject(PROJECT *aPrj)
SCH_SCREEN * RootScreen() const
Helper to retrieve the screen of the root sheet.
void RecomputeIntersheetRefs(const std::function< void(SCH_GLOBALLABEL *)> &aItemCallback)
Update the schematic's page reference map for all global labels, and refresh the labels so that they ...
bool IsValid() const
A simple test if the schematic is loaded, not a complete one.
void RemoveAllListeners()
Remove all listeners.
SCH_SHEET_LIST BuildSheetListSortedByPageNumbers() const override
void SetSheetNumberAndCount()
Set the m_ScreenNumber and m_NumberOfScreens members for screens.
ERC_SETTINGS & ErcSettings() const
A shim class between EDA_DRAW_FRAME and several derived classes: SYMBOL_EDIT_FRAME,...
SCH_RENDER_SETTINGS * GetRenderSettings()
SCH_DRAW_PANEL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.
void CommonSettingsChanged(bool aEnvVarsChanged, bool aTextVarsChanged) override
Notification event that some of the common (suite-wide) settings have changed.
EESCHEMA_SETTINGS * eeconfig() const
PANEL_SCH_SELECTION_FILTER * m_selectionFilterPanel
virtual void UpdateItem(EDA_ITEM *aItem, bool isAddOrDelete=false, bool aUpdateRtree=false)
Mark an item for refresh.
COLOR_SETTINGS * GetColorSettings(bool aForceRefresh=false) const override
Returns a pointer to the active color theme settings.
virtual void Push(const wxString &aMessage=wxT("A commit"), int aCommitFlags=0) override
Revert the commit by restoring the modified items state.
Each graphical item can have a SCH_CONNECTION describing its logical connection (to a bus or net).
bool HasDriverChanged() const
wxString Name(bool aIgnoreSheet=false) const
void ClearDriverChanged()
KIGFX::SCH_VIEW * GetView() const override
Return a pointer to the #VIEW instance used in the panel.
void DisplaySheet(SCH_SCREEN *aScreen)
Group generic conditions for PCB editor states.
SELECTION_CONDITION LineMode(LINE_MODE aMode)
Create a functor that tests if the frame is in the specified line drawing mode.
Handle actions specific to the schematic editor.
int UpdateNetHighlighting(const TOOL_EVENT &aEvent)
Launch a tool to highlight nets.
Schematic editor (Eeschema) main window.
bool IsContentModified() const override
Get if the current schematic has been modified but not saved.
void RefreshOperatingPointDisplay()
Refresh the display of any operaintg points.
SELECTION & GetCurrentSelection() override
Get the current selection from the canvas area.
EDA_ITEM * GetItem(const KIID &aId) const override
Fetch an item by KIID.
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 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 m_highlightedConnChanged
void onNetNavigatorSelChanging(wxTreeEvent &aEvent)
void OnOpenCvpcb(wxCommandEvent &event)
void OnModify() override
Must be called after a schematic change in order to set the "modify" flag and update other data struc...
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 doCloseWindow() override
DIALOG_BOOK_REPORTER * m_diffSymbolDialog
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.
void onCloseErcDialog(wxCommandEvent &aEvent)
void ShowFindReplaceDialog(bool aReplace)
Run the Find or Find & Replace dialog.
void UpdateHierarchySelection()
Update the hierarchy navigation tree selection (cross-probe from schematic to hierarchy pane).
void SetScreen(BASE_SCREEN *aScreen) override
void OnFindDialogClose()
Notification that the Find dialog has closed.
void SaveSymbolToSchematic(const LIB_SYMBOL &aSymbol, const KIID &aSchematicSymbolUUID)
Update a schematic symbol from a LIB_SYMBOL.
void SchematicCleanUp(SCH_COMMIT *aCommit, SCH_SCREEN *aScreen=nullptr)
Perform routine schematic cleaning including breaking wire and buses and deleting identical objects s...
void UpdateHierarchyNavigator(bool aRefreshNetNavigator=true)
Update the hierarchy navigation tree and history.
void onSize(wxSizeEvent &aEvent)
void ShowChangedLanguage() override
std::vector< wxEvtHandler * > m_schematicChangeListeners
void CommonSettingsChanged(bool aEnvVarsChanged, bool aTextVarsChanged) override
Called after the preferences dialog is run.
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.
void OnAppendProject(wxCommandEvent &event)
SCHEMATIC * m_schematic
The currently loaded schematic.
void onCloseSymbolFieldsTableDialog(wxCommandEvent &aEvent)
void ClearFindReplaceStatus()
SCH_SHEET_PATH & GetCurrentSheet() const
void OnLoadFile(wxCommandEvent &event)
SCHEMATIC & Schematic() const
void updateTitle()
Set the main window title bar text.
void RefreshNetNavigator(const NET_NAVIGATOR_ITEM_DATA *aSelection=nullptr)
wxString GetFullScreenDesc() const override
static const wxString SearchPaneName()
DIALOG_BOOK_REPORTER * GetSymbolDiffDialog()
bool canCloseWindow(wxCloseEvent &aCloseEvent) override
void OnUpdatePCB(wxCommandEvent &event)
void RecomputeIntersheetRefs()
Update the schematic's page reference map for all global labels, and refresh the labels so that they ...
DIALOG_ERC * GetErcDialog()
void sendNetlistToCvpcb()
Send the KiCad netlist over to CVPCB.
void OnOpenPcbnew(wxCommandEvent &event)
void SetSheetNumberAndCount()
Set the m_ScreenNumber and m_NumberOfScreens members for screens.
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
Returns bbox of document with option to not include some items.
void RecalculateConnections(SCH_COMMIT *aCommit, SCH_CLEANUP_FLAGS aCleanupFlags)
Generate the connection data for the entire schematic hierarchy.
void initScreenZoom()
Initialize the zoom value of the current screen and mark the screen as zoom-initialized.
void UpdateLabelsHierarchyNavigator()
Update the hierarchy navigation tree labels.
void OnImportProject(wxCommandEvent &event)
static const wxString SchematicHierarchyPaneName()
void setupUIConditions() override
Setup the UI conditions for the various actions and their controls in this frame.
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.
void ShowFindReplaceStatus(const wxString &aMsg, int aStatusTime)
void SetCurrentSheet(const SCH_SHEET_PATH &aSheet)
virtual void PrintPage(const RENDER_SETTINGS *aSettings) override
Plot or print the current sheet to the clipboard.
int GetSchematicJunctionSize()
void DisplayCurrentSheet()
Draw the current sheet on the display.
~SCH_EDIT_FRAME() override
const wxString & GetHighlightedConnection() const
void UpdateItem(EDA_ITEM *aItem, bool isAddOrDelete=false, bool aUpdateRtree=false) override
Mark an item for refresh.
void UpdateNetHighlightStatus()
wxString GetScreenDesc() const override
Return a human-readable description of the current screen.
DIALOG_SCH_FIND * m_findReplaceDialog
void AddCopyForRepeatItem(const SCH_ITEM *aItem)
DIALOG_SYMBOL_FIELDS_TABLE * GetSymbolFieldsTableDialog()
void OnResizeHierarchyNavigator(wxSizeEvent &aEvent)
wxString GetCurrentFileName() const override
Get the full filename + path of the currently opened file in the frame.
wxString m_highlightedConn
The highlighted net or bus or empty string.
static const wxString NetNavigatorPaneName()
void onCloseSymbolDiffDialog(wxCommandEvent &aEvent)
wxTreeCtrl * createHighlightedNetNavigator()
void OnExit(wxCommandEvent &event)
void AutoRotateItem(SCH_SCREEN *aScreen, SCH_ITEM *aItem)
Automatically set the rotation of an item (if the item supports it)
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
SEVERITY GetSeverity(int aErrorCode) const override
void onNetNavigatorSelection(wxTreeEvent &aEvent)
void ReCreateHToolbar() override
void FocusOnItem(SCH_ITEM *aItem)
void SaveCopyForRepeatItem(const SCH_ITEM *aItem)
Clone aItem and owns that clone in this container.
Instances are attached to a symbol or sheet and provide a place for the symbol's value,...
Base class for any item which can be embedded within the SCHEMATIC container class,...
virtual bool IsConnectable() const
virtual void RunOnChildren(const std::function< void(SCH_ITEM *)> &aFunction)
SCH_CONNECTION * Connection(const SCH_SHEET_PATH *aSheet=nullptr) const
Retrieve the connection associated with this object in the given sheet.
SCH_ITEM * Duplicate(bool doClone=false) const
Routine to create a new copy of given item.
bool AutoRotateOnPlacement() const
autoRotateOnPlacement
SPIN_STYLE GetSpinStyle() const
void AutoplaceFields(SCH_SCREEN *aScreen, bool aManual) override
std::vector< SCH_FIELD > & GetFields()
virtual void SetSpinStyle(SPIN_STYLE aSpinStyle)
Segment description base class to describe items which have 2 end points (track, wire,...
void SetOperatingPoint(const wxString &aText)
bool IsWire() const
Return true if the line is a wire.
const wxString & GetOperatingPoint() const
void SetOperatingPoint(const wxString &aText)
virtual std::vector< SHAPE * > MakeEffectiveShapes(bool aEdgeOnly=false) const override
Make a set of SHAPE objects representing the EDA_SHAPE.
void ResetDirectivesAndItems(KIGFX::SCH_VIEW *view)
Clears and resets items and directives attached to this rule area.
std::unordered_set< SCH_ITEM * > GetPastAndPresentContainedItems() const
Fetches all items which were, or are, within the rule area.
static std::vector< std::pair< SCH_RULE_AREA *, SCH_SCREEN * > > UpdateRuleAreasInScreens(std::unordered_set< SCH_SCREEN * > &screens, KIGFX::SCH_VIEW *view)
Updates all rule area connectvity / caches in the given sheet paths.
Container class that holds multiple SCH_SCREEN objects in a hierarchy.
bool HasNoFullyDefinedLibIds()
Test all of the schematic symbols to see if all LIB_ID objects library nickname is not set.
const PAGE_INFO & GetPageSettings() const
void Clear(bool aFree=true)
Delete all draw items and clears the project settings.
void TestDanglingEnds(const SCH_SHEET_PATH *aPath=nullptr, std::function< void(SCH_ITEM *)> *aChangedHandler=nullptr) const
Test all of the connectable objects in the schematic for unused connection points.
const std::map< wxString, LIB_SYMBOL * > & GetLibSymbols() const
Fetch a list of unique LIB_SYMBOL object pointers required to properly render each SCH_SYMBOL in this...
double m_LastZoomLevel
last value for the zoom level, useful in Eeschema when changing the current displayed sheet to reuse ...
EE_RTREE & Items()
Gets the full RTree, usually for iterating.
const wxString & GetFileName() const
const KIID & GetUuid() const
void Print(const SCH_RENDER_SETTINGS *aSettings)
Print all the items in the screen to aDC.
void SetFileName(const wxString &aFileName)
Set the file name for this screen to aFileName.
void Update(SCH_ITEM *aItem, bool aUpdateLibSymbol=true)
Update aItem's bounding box in the tree.
SPIN_STYLE GetLabelOrientationForPoint(const VECTOR2I &aPosition, SPIN_STYLE aDefaultOrientation, const SCH_SHEET_PATH *aSheet) const
A container for handling SCH_SHEET_PATH objects in a flattened hierarchy.
SCH_ITEM * GetItem(const KIID &aID, SCH_SHEET_PATH *aPathOut=nullptr) const
Fetch a SCH_ITEM by ID.
bool IsModified() const
Check the entire hierarchy for any modifications.
Handle access to a stack of flattened SCH_SHEET objects by way of a path for creating a flattened sch...
wxString PathHumanReadable(bool aUseShortRootName=true, bool aStripTrailingSeparator=false) const
Return the sheet path in a human readable form made from the sheet names.
void UpdateAllScreenReferences() const
Update all the symbol references for this sheet path.
SCH_SCREEN * LastScreen()
bool GetExcludedFromSim() const
void SetPageNumber(const wxString &aPageNumber)
Set the sheet instance user definable page number.
SCH_SHEET * Last() const
Return a pointer to the last SCH_SHEET of the list.
void push_back(SCH_SHEET *aSheet)
Forwarded method from std::vector.
void clear()
Forwarded method from std::vector.
Sheet symbol placed in a schematic, and is the entry point for a sub schematic.
void SetScreen(SCH_SCREEN *aScreen)
Set the SCH_SCREEN associated with this sheet to aScreen.
std::vector< SCH_SHEET_PIN * > & GetPins()
bool IsAnnotated(const SCH_SHEET_PATH *aSheet) const
Check if the symbol has a valid annotation (reference) for the given sheet path.
SCH_FIELD * GetField(MANDATORY_FIELD_T aFieldType)
Return a mandatory field in this symbol.
std::vector< SCH_PIN * > GetPins(const SCH_SHEET_PATH *aSheet=nullptr) const
Retrieve a list of the SCH_PINs for the given sheet path.
SCH_PIN * GetPin(const wxString &number) const
Find a symbol pin by number.
const wxString GetRef(const SCH_SHEET_PATH *aSheet, bool aIncludeUnit=false) const override
VECTOR2I GetPosition() const override
static bool Idle(const SELECTION &aSelection)
Test if there no items selected or being edited.
static bool ShowAlways(const SELECTION &aSelection)
The default condition function (always returns true).
int Size() const
Returns the number of selected parts.
T * GetAppSettings()
Returns a handle to the a given settings by type If the settings have already been loaded,...
bool UnloadProject(PROJECT *aProject, bool aSave=true)
Saves, unloads and unregisters the given PROJECT.
bool CollideEdge(const VECTOR2I &aPoint, VERTEX_INDEX *aClosestVertex=nullptr, int aClearance=0) const
Check whether aPoint collides with any edge of any of the contours of the polygon.
SIM_MODEL & CreateModel(SIM_MODEL::TYPE aType, const std::vector< SCH_PIN * > &aPins, REPORTER &aReporter)
const SPICE_GENERATOR & SpiceGenerator() const
std::vector< std::reference_wrapper< const SIM_MODEL_PIN > > GetPins() const
virtual std::string ItemName(const SPICE_ITEM &aItem) const
Symbol library viewer main window.
The symbol library editor main window.
Symbol library viewer main window.
bool GetExcludedFromSim() const override
void AddTemplateFieldNames(const wxString &aSerializedFieldNames)
Add a serialized list of template field names.
void DeleteAllFieldNameTemplates(bool aGlobal)
Delete the entire contents.
std::vector< PICKED_ITEMS_LIST * > m_CommandsList
void RemoveAllButtons()
Remove all the buttons that have been added by the user.
void ShowMessageFor(const wxString &aMessage, int aTime, int aFlags=wxICON_INFORMATION, MESSAGE_TYPE aType=WX_INFOBAR::MESSAGE_TYPE::GENERIC)
Show the infobar with the provided message and icon for a specific period of time.
void Dismiss() override
Dismisses the infobar and updates the containing layout and AUI manager (if one is provided).
void AddCloseButton(const wxString &aTooltip=_("Hide this message."))
Add the default close button to the infobar on the right side.
wxString EnsureFileExtension(const wxString &aFilename, const wxString &aExtension)
It's annoying to throw up nag dialogs when the extension isn't right.
void DisplayError(wxWindow *aParent, const wxString &aText, int aDisplayTime)
Display an error or warning message box with aMessage.
bool HandleUnsavedChanges(wxWindow *aParent, const wxString &aMessage, const std::function< bool()> &aSaveFunction)
Display a dialog with Save, Cancel and Discard Changes buttons.
This file is part of the common library.
#define KICAD_DEFAULT_DRAWFRAME_STYLE
#define SCH_EDIT_FRAME_NAME
@ ID_IMPORT_NON_KICAD_SCH
const wxAuiPaneInfo & defaultSchSelectionFilterPaneInfo(wxWindow *aWindow)
const wxAuiPaneInfo & defaultPropertiesPaneInfo(wxWindow *aWindow)
const wxAuiPaneInfo & defaultNetNavigatorPaneInfo()
EVT_MENU_RANGE(ID_GERBVIEW_DRILL_FILE1, ID_GERBVIEW_DRILL_FILEMAX, GERBVIEW_FRAME::OnDrlFileHistory) EVT_MENU_RANGE(ID_GERBVIEW_ZIP_FILE1
const wxString PCBNEW_EXE
@ FRAME_SCH_SYMBOL_EDITOR
int ExecuteFile(const wxString &aEditorName, const wxString &aFileName, wxProcess *aCallback, bool aFileForKicad)
Call the executable file aEditorName with the parameter aFileName.
static const std::string NetlistFileExtension
static const std::string LegacyPcbFileExtension
static const std::string KiCadSchematicFileExtension
static const std::string AutoSaveFilePrefix
static wxString LegacySchematicFileWildcard()
static wxString AllSchematicFilesWildcard()
static wxString KiCadSchematicFileWildcard()
const wxChar *const traceApi
Flag to enable debug output related to the API plugin system.
@ ID_EDA_SOCKET_EVENT_SERV
#define KICTL_CREATE
caller thinks requested project files may not exist.
@ LAYER_SCHEMATIC_BACKGROUND
@ REPAINT
Item needs to be redrawn.
@ GEOMETRY
Position or shape has changed.
PGM_BASE & Pgm()
The global Program "get" accessor.
#define DIFF_SYMBOLS_DIALOG_NAME
wxDEFINE_EVENT(EDA_EVT_SCHEMATIC_CHANGING, wxCommandEvent)
#define CURRENT_TOOL(action)
KIWAY Kiway(KFCTL_STANDALONE)
std::vector< FAB_LAYER_COLOR > dummy
wxString UnescapeString(const wxString &aSource)
bool show_directive_labels
int hierarchy_panel_docked_width
int hierarchy_panel_float_width
int search_panel_dock_direction
int hierarchy_panel_docked_height
int hierarchy_panel_float_height
wxSize net_nav_panel_float_size
bool schematic_hierarchy_float
int properties_panel_width
wxPoint net_nav_panel_float_pos
wxSize net_nav_panel_docked_size
bool show_schematic_hierarchy
The EE_TYPE struct provides a type-specific auto-range iterator to the RTree.
Definition for symbol library class.
@ VALUE_FIELD
Field Value of part, i.e. "3.3K".
VECTOR2< int32_t > VECTOR2I
Definition of file extensions used in Kicad.
void SetAuiPaneSize(wxAuiManager &aManager, wxAuiPaneInfo &aPane, int aWidth, int aHeight)
Sets the size of an AUI pane, working around http://trac.wxwidgets.org/ticket/13180.