53#include <python_scripting.h>
90#include <unordered_set>
97#include <wx/cmdline.h>
99#include <wx/filedlg.h>
100#include <wx/socket.h>
117#define DIFF_SYMBOLS_DIALOG_NAME wxT( "DiffSymbolsDialog" )
169 wxIconBundle icon_bundle;
172 icon_bundle.AddIcon( icon );
174 icon_bundle.AddIcon( icon );
176 icon_bundle.AddIcon( icon );
178 icon_bundle.AddIcon( icon );
180 icon_bundle.AddIcon( icon );
182 SetIcons( icon_bundle );
236 .Bottom().Layer( 6 ) );
240 .Caption(
_(
"Schematic Hierarchy" ) )
241 .Left().Layer( 3 ).Position( 1 )
242 .TopDockable(
false )
243 .BottomDockable(
false )
245 .MinSize( FromDIP( wxSize( 120, 60 ) ) )
246 .BestSize( FromDIP( wxSize( 200, 200 ) ) )
247 .FloatingSize( FromDIP( wxSize( 200, 200 ) ) )
248 .FloatingPosition( FromDIP( wxPoint( 50, 50 ) ) )
259 .Left().Layer( 2 ) );
262 .Right().Layer( 2 ) );
271 .Caption(
_(
"Search" ) )
273 .MinSize( FromDIP( wxSize( 180, 60 ) ) )
274 .BestSize( FromDIP( wxSize( 180, 100 ) ) )
275 .FloatingSize( FromDIP( wxSize( 480, 200 ) ) )
277 .DestroyOnClose(
false )
286 wxAuiPaneInfo& selectionFilterPane =
m_auimgr.GetPane( wxS(
"SelectionFilter" ) );
296 selectionFilterPane.dock_proportion = 0;
316 hierarchy_pane.Float();
337 netNavigatorPane.Float();
364 hierarchy_pane.Fixed();
366 netNavigatorPane.Fixed();
370 hierarchy_pane.Resizable();
371 netNavigatorPane.Resizable();
376 hierarchy_pane.MinSize( FromDIP( wxSize( 120, 60 ) ) );
377 netNavigatorPane.MinSize( FromDIP( wxSize( 120, 60 ) ) );
387 GetCanvas()->GetGAL()->SetAxesEnabled(
false );
421 m_apiHandler = std::make_unique<API_HANDLER_SCH>(
this );
422 Pgm().GetApiServer().RegisterHandler( m_apiHandler.get() );
435 DragAcceptFiles(
true );
442 wxPoint canvas_pos =
GetCanvas()->GetScreenPosition();
443 hierarchy_pane.FloatingPosition( canvas_pos.x + 10, canvas_pos.y + 10 );
452 if( !
eeconfig()->m_CrossProbing.flash_selection )
454 wxLogTrace(
"CROSS_PROBE_FLASH",
"StartCrossProbeFlash: aborted (setting disabled) items=%zu", aItems.size() );
459 wxLogTrace(
"CROSS_PROBE_FLASH",
"StartCrossProbeFlash: aborted (no items)" );
465 wxLogTrace(
"CROSS_PROBE_FLASH",
"StartCrossProbeFlash: restarting existing flash (phase=%d)",
m_crossProbeFlashPhase );
469 wxLogTrace(
"CROSS_PROBE_FLASH",
"StartCrossProbeFlash: starting with %zu items", aItems.size() );
480 wxLogTrace(
"CROSS_PROBE_FLASH",
"StartCrossProbeFlash: timer start=%d id=%d", (
int) started,
m_crossProbeFlashTimer.GetId() );
490 wxLogTrace(
"CROSS_PROBE_FLASH",
"Timer fired but not flashing (ignored)" );
535 wxLogTrace(
"CROSS_PROBE_FLASH",
"Flashing complete. Final selection size=%zu",
m_crossProbeFlashItems.size() );
567 catch(
const nlohmann::detail::type_error& e )
569 wxFAIL_MSG( wxString::Format( wxT(
"Settings exception occurred: %s" ), e.what() ) );
615 if( hierarchy_pane.rect.width > 50 )
618 hierarchy_pane.best_size.x = hierarchy_pane.rect.width;
678 auto searchPaneCond =
684 auto propertiesCond =
690 auto hierarchyNavigatorCond =
696 auto netNavigatorCond =
702 auto designBlockCond =
717 auto groupWithDesignBlockLink =
720 if( aSel.Size() != 1 )
728 return group->HasDesignBlockLink();
731#define ENABLE( x ) ACTION_CONDITIONS().Enable( x )
732#define CHECK( x ) ACTION_CONDITIONS().Check( x )
769 auto showHiddenPinsCond =
775 auto showHiddenFieldsCond =
782 auto showDirectiveLabelsCond =
789 auto showERCErrorsCond =
796 auto showERCWarningsCond =
803 auto showERCExclusionsCond =
810 auto markSimExclusionsCond =
817 auto showOPVoltagesCond =
824 auto showOPCurrentsCond =
831 auto showPinAltModeIconsCond =
838 auto showAnnotateAutomaticallyCond =
844 auto remapSymbolsCondition =
853 auto belowRootSheetCondition =
857 return navigateTool && navigateTool->
CanGoUp();
887#define CURRENT_TOOL( action ) mgr->SetConditions( action, CHECK( cond.CurrentTool( action ) ) )
951 repeatItem->ClearFlags();
952 repeatItem->SetParent(
nullptr );
1031 item->ClearCaches();
1033 for(
const std::pair<const wxString, LIB_SYMBOL*>& libSymbol : screen->
GetLibSymbols() )
1035 wxCHECK2( libSymbol.second,
continue );
1036 libSymbol.second->ClearCaches();
1039 if(
Schematic().Settings().m_IntersheetRefsShow )
1068 if(
Kiface().IsSingle() )
1072 if( symbolEditor && !symbolEditor->Close() )
1077 if( symbolViewer && !symbolViewer->Close() )
1084 if( chooser && !chooser->Close() )
1091 if( symbolEditor && symbolEditor->IsSymbolFromSchematic() )
1093 if( !symbolEditor->CanCloseSymbolFromSchematic(
true ) )
1114 wxString msg =
_(
"Save changes to '%s' before closing?" );
1119 return SaveProject();
1137 Pgm().GetApiServer().DeregisterHandler( m_apiHandler.get() );
1167 if(
Prj().GetLocalSettings().ShouldAutoSave() )
1175 if( hierarchy_pane.IsShown() && hierarchy_pane.IsFloating() )
1177 hierarchy_pane.Show(
false );
1191 if( fn.IsFileWritable() )
1192 wxRemoveFile( fn.GetFullPath() );
1198 if( autoSaveFileName.IsFileWritable() )
1199 wxRemoveFile( autoSaveFileName.GetFullPath() );
1250 if( !GetTitle().StartsWith( wxS(
"*" ) ) )
1257 if(
Kiface().IsSingle() )
1259 DisplayError(
this,
_(
"Cannot update the PCB, because the Schematic Editor is opened"
1260 " in stand-alone mode. In order to create/update PCBs from"
1261 " schematics, launch the KiCad shell and create a project." ) );
1266 wxEventBlocker blocker(
this );
1271 fn.SetExt( FILEEXT::PcbFileExtension );
1283 if( !frame->IsVisible() )
1284 frame->Show(
true );
1287 if( frame->IsIconized() )
1288 frame->Iconize(
false );
1292 std::string payload;
1302 if( aRefreshNetNavigator )
1339 if( !
Kiface().IsSingle() )
1344 wxFileDialog dlg(
this,
_(
"New Schematic" ), pro_dir, wxEmptyString,
1347 if( dlg.ShowModal() != wxID_CANCEL )
1350 wxFileName create_me =
1353 if( create_me.FileExists() )
1356 msg.Printf(
_(
"Schematic file '%s' already exists." ), create_me.GetFullName() );
1362 wxASSERT_MSG( create_me.IsAbsolute(), wxS(
"wxFileDialog returned non-absolute path" ) );
1373 if( !
Kiface().IsSingle() )
1381 wxFileDialog dlg(
this,
_(
"Open Schematic" ), pro_dir, wxEmptyString,
1382 wildcards, wxFD_OPEN | wxFD_FILE_MUST_EXIST );
1384 if( dlg.ShowModal() != wxID_CANCEL )
1396 if( kicad_board.IsOk() && !
Schematic().GetFileName().IsEmpty() )
1398 kicad_board.SetExt( FILEEXT::PcbFileExtension );
1399 wxFileName legacy_board( kicad_board );
1401 wxFileName& boardfn = legacy_board;
1403 if( !legacy_board.FileExists() || kicad_board.FileExists() )
1404 boardfn = kicad_board;
1406 if(
Kiface().IsSingle() )
1412 wxEventBlocker blocker(
this);
1424 frame->
OpenProjectFiles( std::vector<wxString>( 1, boardfn.GetFullPath() ) );
1427 if( !frame->IsVisible() )
1428 frame->Show(
true );
1431 if( frame->IsIconized() )
1432 frame->Iconize(
false );
1449 if( !
ReadyToNetlist(
_(
"Assigning footprints requires a fully annotated schematic." ) ) )
1465 player->Show(
true );
1483 if( event.GetId() == wxID_EXIT )
1486 if( event.GetId() == wxID_CLOSE ||
Kiface().IsSingle() )
1508 auto invalidateTextVars =
1511 if(
text->HasTextVars() )
1513 text->ClearRenderCache();
1514 text->ClearBoundingBoxCache();
1521 item->RunOnChildren(
1522 [&invalidateTextVars](
SCH_ITEM* aChild )
1525 invalidateTextVars(
text );
1531 invalidateTextVars(
text );
1567 if( !
pin->GetOperatingPoint().IsEmpty() )
1570 pin->SetOperatingPoint( wxEmptyString );
1573 if( pins.size() == 2 )
1578 if( !op.IsEmpty() && op != wxS(
"--" ) && op != wxS(
"?" ) )
1580 pins[0]->SetOperatingPoint( op );
1586 std::vector<EMBEDDED_FILES*> embeddedFilesStack;
1587 embeddedFilesStack.push_back(
m_schematic->GetEmbeddedFiles() );
1590 embeddedFilesStack.push_back( symbolEmbeddedFiles );
1600 for(
const auto& modelPin : model.
GetPins() )
1602 SCH_PIN* symbolPin = symbol->
GetPin( modelPin.get().symbolPinNumber );
1603 wxString signalName = ref + wxS(
":" ) + modelPin.get().modelPinName;
1604 wxString op =
m_schematic->GetOperatingPoint( signalName,
1608 if( symbolPin && !op.IsEmpty() && op != wxS(
"--" ) && op != wxS(
"?" ) )
1618 for(
const auto& [ key, subgraphList ] :
m_schematic->m_connectionGraph->GetNetMap() )
1623 if( !op.IsEmpty() && op != wxS(
"--" ) && op != wxS(
"?" ) )
1628 double length = 0.0;
1630 if( subgraph->GetSheet().GetExcludedFromSim() )
1633 for(
SCH_ITEM* item : subgraph->GetItems() )
1678 if( otherLabel != label && otherLabel->
GetText() == label->
GetText() )
1698 bool readOnly =
false;
1699 bool unsaved =
false;
1709 title += fn.GetName();
1713 if( sheetPath != title )
1714 title += wxString::Format( wxT(
" [%s]" ), sheetPath );
1717 title += wxS(
" " ) +
_(
"[Read Only]" );
1720 title += wxS(
" " ) +
_(
"[Unsaved]" );
1724 title =
_(
"[no schematic loaded]" );
1727 title += wxT(
" \u2014 " ) +
_(
"Schematic Editor" );
1744 bool hasHighlightedConn = !highlightedConn.IsEmpty();
1746 std::function<void(
SCH_ITEM* )> changeHandler =
1747 [&](
SCH_ITEM* aChangedItem ) ->
void
1756 if( !hasHighlightedConn )
1763 && ( connection->
Name() == highlightedConn
1785 auto invalidateTextVars =
1788 if(
text->HasTextVars() )
1790 text->ClearRenderCache();
1791 text->ClearBoundingBoxCache();
1805 [&invalidateTextVars](
SCH_ITEM* aChild )
1808 invalidateTextVars(
text );
1817 invalidateTextVars(
text );
1823 || !
Schematic().ConnectionGraph()->FindFirstSubgraphByName( highlightedConn ) )
1887 if( !cfg->m_Drawing.field_names.IsEmpty() )
1895 item->ClearCaches();
1906 for(
const auto& [ libItemName, libSymbol ] : screen->
GetLibSymbols() )
1907 libSymbol->ClearCaches();
1939 bool panel_shown = design_blocks_pane_info.IsShown();
1940 design_blocks_pane_info.Caption(
_(
"Design Blocks" ) );
1941 design_blocks_pane_info.Show( panel_shown );
1959#if defined( __WXMSW__ )
1969 SetStatusText( wxString::Format(
_(
"Highlighted net: %s" ),
1974 SetStatusText( wxT(
"" ) );
1996 if( aIncludeAllVisible )
2012 if( item != dsAsItem )
2013 bBoxDoc.
Merge( item->GetBoundingBox() );
2037 if( aItem !=
nullptr && !aItem->
IsSCH_ITEM() )
2044 if( lastItem && lastItem != aItem )
2049 lastBrightenedItemID =
niluuid;
2059 lastBrightenedItemID = aItem->
m_Uuid;
2095 const KIID& aSchematicSymbolUUID )
2103 if( !principalSymbol )
2106 wxString principalRef;
2108 if( principalSymbol->
IsAnnotated( &principalPath ) )
2109 principalRef = principalSymbol->
GetRef( &principalPath,
false );
2111 std::vector< std::pair<SCH_SYMBOL*, SCH_SHEET_PATH> > allUnits;
2119 if( candidateSymbol == principalSymbol
2121 && candidateSymbol->
GetRef( &
path,
false ) == principalRef ) )
2123 allUnits.emplace_back( candidateSymbol,
path );
2128 for(
auto& [ unit,
path ] : allUnits )
2132 path.LastScreen()->Remove( unit );
2134 if( !unit->IsNew() )
2137 unit->SetLibSymbol( aSymbol.
Flatten().release() );
2145 path.LastScreen()->Append( unit );
2152 wxString altName =
pin->GetAlt();
2154 if( altName.IsEmpty() )
2157 if(
pin->GetAlternates().count( altName ) == 0 )
2158 pin->SetAlt( wxEmptyString );
2161 if( !commit.
Empty() )
2162 commit.
Push(
_(
"Save Symbol to Schematic" ) );
2171 sch_item->ClearCaches();
2203 wxCHECK( selectionTool, );
2212 item->SetForceVisible(
true );
2215 else if( item->IsBrightened() )
2217 item->SetForceVisible(
false );
2226 item->RunOnChildren(
2254 wxCHECK( editTool, );
2270 _(
"Compare Symbol with Library" ) );
2284 if( aEvent.GetId() == wxID_APPLY )
2289 [
this, symbolUUID]()
2298 dlg.ShowQuasiModal();
2369 m_netNavigator =
new wxTreeCtrl(
this, wxID_ANY, wxPoint( 0, 0 ), FromDIP( wxSize( 160, 250 ) ),
2370 wxTR_DEFAULT_STYLE | wxNO_BORDER );
2383 if( refreshNetNavigator )
2394 bool refreshSelection = selection.IsOk() && ( selection !=
m_netNavigator->GetRootItem() );
2396 if( refreshSelection )
2418 wxAuiPaneInfo& selectionFilterPane =
m_auimgr.GetPane( wxS(
"SelectionFilter" ) );
2422 bool showFilter = ( hierarchyPane.IsShown() && hierarchyPane.IsDocked() )
2423 || ( netNavigatorPane.IsShown() && netNavigatorPane.IsDocked() )
2424 || ( propertiesPane.IsShown() && propertiesPane.IsDocked() );
2426 selectionFilterPane.Show( showFilter );
2431void SCH_EDIT_FRAME::onPluginAvailabilityChanged( wxCommandEvent& aEvt )
2433 wxLogTrace(
traceApi,
"SCH frame: EDA_EVT_PLUGIN_AVAILABILITY_CHANGED" );
2488 propertiesPaneInfo.Show( show );
2515 hierarchy_pane.Show( !hierarchy_pane.IsShown() );
2519 if( hierarchy_pane.IsShown() )
2521 if( hierarchy_pane.IsFloating() )
2536 if( hierarchy_pane.IsFloating() )
2559 db_library_pane.Show( !db_library_pane.IsShown() );
2561 if( db_library_pane.IsShown() )
2563 if( db_library_pane.IsFloating() )
2578 if( db_library_pane.IsFloating() )
2594 wxCHECK( aSchematic, );
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 unselectAll
static TOOL_ACTION selectItem
Select an item (specified as the event parameter).
static TOOL_ACTION pasteSpecial
static TOOL_ACTION ungroup
static TOOL_ACTION toggleBoundingBoxes
static TOOL_ACTION showSearch
static TOOL_ACTION selectionActivate
Activation of the selection tool.
static TOOL_ACTION duplicate
static TOOL_ACTION doDelete
static TOOL_ACTION selectionTool
static TOOL_ACTION zoomFitScreen
static TOOL_ACTION deleteTool
static TOOL_ACTION zoomTool
static TOOL_ACTION selectionClear
Clear the current selection.
static TOOL_ACTION showProperties
static TOOL_ACTION copyAsText
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...
Handles how to draw a screen (a board, a schematic ...)
void SetContentModified(bool aModified=true)
constexpr BOX2< Vec > & Merge(const BOX2< Vec > &aRect)
Modify the position and size of the rectangle in order to contain aRect.
COMMIT & Modify(EDA_ITEM *aItem, BASE_SCREEN *aScreen=nullptr, RECURSE_MODE aRecurse=RECURSE_MODE::NO_RECURSE)
Modify a given item in the model.
Handle actions that are shared between different applications.
A subgraph is a set of items that are electrically connected on a single sheet.
Dialog to update or change schematic library symbols.
virtual APP_SETTINGS_BASE * config() const
Return 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...
ACTION_TOOLBAR * m_tbRight
TOOLBAR_SETTINGS * m_toolbarSettings
void FinishAUIInitialization()
void UpdateFileHistory(const wxString &FullFileName, FILE_HISTORY *aFileHistory=nullptr)
Update the list of recently opened files.
virtual void RecreateToolbars()
ACTION_TOOLBAR * m_tbLeft
virtual void OnSize(wxSizeEvent &aEvent)
virtual void ClearFileHistory()
Remove all files from the file history.
virtual void OnDropFiles(wxDropFilesEvent &aEvent)
Handle event fired when a file is dropped to the window.
std::map< const wxString, TOOL_ACTION * > m_acceptedExts
Associate file extensions with action to execute.
wxString GetFileFromHistory(int cmdId, const wxString &type, FILE_HISTORY *aFileHistory=nullptr)
Fetch the file name from the file history list.
virtual int GetUndoCommandCount() const
ACTION_TOOLBAR * m_tbTopMain
bool m_isClosing
Set by the close window event handler after frames are asked if they can close.
void ReCreateMenuBar()
Recreate the menu bar.
EDA_DRAW_PANEL_GAL::GAL_TYPE m_canvasType
The current canvas type.
void setupUnits(APP_SETTINGS_BASE *aCfg)
virtual void SwitchCanvas(EDA_DRAW_PANEL_GAL::GAL_TYPE aCanvasType)
Change the current rendering backend.
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.
virtual void resolveCanvasType()
Determine the canvas type to load (with prompt if required) and initializes m_canvasType.
static const wxString PropertiesPaneName()
EDA_MSG_PANEL * m_messagePanel
virtual void SetScreen(BASE_SCREEN *aScreen)
virtual void UpdateMsgPanel()
Redraw the message panel.
void FocusOnLocation(const VECTOR2I &aPos, bool aAllowScroll=true)
Useful to focus on a particular location, in find functions.
virtual void ClearFocus()
SEARCH_PANE * m_searchPane
static const wxString DesignBlocksPaneName()
std::unique_ptr< EDA_SEARCH_DATA > m_findReplaceData
PROPERTIES_PANEL * m_propertiesPanel
bool m_showBorderAndTitleBlock
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.
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.
SELECTION_CONDITION NoActiveTool()
Create a functor testing if there are no tools active in the frame.
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 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.
PANEL_ANNOTATE m_AnnotatePanel
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.
Hold an error message and may be used when throwing exceptions containing meaningful error messages.
APP_SETTINGS_BASE * KifaceSettings() const
void SetDefaultFont(const wxString &aFont)
Contains methods for drawing schematic-specific items.
void SetSchematic(SCHEMATIC *aSchematic)
void Update(const KIGFX::VIEW_ITEM *aItem, int aUpdateFlags) const override
For dynamic VIEWs, inform the associated VIEW that the graphical representation of this item has chan...
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...
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.
KIWAY_PLAYER(KIWAY *aKiway, wxWindow *aParent, FRAME_T aFrameType, const wxString &aTitle, const wxPoint &aPos, const wxSize &aSize, long aStyle, const wxString &aFrameName, const EDA_IU_SCALE &aIuScale)
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 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.
A progress reporter interface for use in multi-threaded environments.
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 SetCurrentSheet(const SCH_SHEET_PATH &aPath)
void Reset()
Initialize this schematic to a blank one, unloading anything existing.
void RecomputeIntersheetRefs()
Update the schematic's page reference map for all global labels, and refresh the labels so that they ...
wxString GetFileName() const
Helper to retrieve the filename from the root sheet screen.
SCHEMATIC_SETTINGS & Settings() const
SCH_ITEM * ResolveItem(const KIID &aID, SCH_SHEET_PATH *aPathOut=nullptr, bool aAllowNullptrReturn=false) const
SCH_SHEET_LIST Hierarchy() const
Return the full schematic flattened hierarchical sheet list.
void SetProject(PROJECT *aPrj)
SCH_SCREEN * RootScreen() const
Helper to retrieve the screen of the root sheet.
void SetSheetNumberAndCount()
Set the m_ScreenNumber and m_NumberOfScreens members for screens.
void RecalculateConnections(SCH_COMMIT *aCommit, SCH_CLEANUP_FLAGS aCleanupFlags, TOOL_MANAGER *aToolManager, PROGRESS_REPORTER *aProgressReporter=nullptr, KIGFX::SCH_VIEW *aSchView=nullptr, std::function< void(SCH_ITEM *)> *aChangedItemHandler=nullptr, PICKED_ITEMS_LIST *aLastChangeList=nullptr)
Generate the connection data for the entire schematic hierarchy.
ERC_SETTINGS & ErcSettings() const
Gather all the actions that are shared by tools.
static TOOL_ACTION rotateCCW
static TOOL_ACTION placeClassLabel
static TOOL_ACTION placeSheetPin
static TOOL_ACTION saveSheetAsDesignBlock
static TOOL_ACTION mirrorV
static TOOL_ACTION drawSheetFromFile
static TOOL_ACTION toggleOPCurrents
static TOOL_ACTION saveToLinkedDesignBlock
static TOOL_ACTION saveSelectionAsDesignBlock
static TOOL_ACTION placeGlobalLabel
static TOOL_ACTION drawTextBox
static TOOL_ACTION toggleAnnotateAuto
static TOOL_ACTION ddAddImage
static TOOL_ACTION drawArc
static TOOL_ACTION drawSheet
static TOOL_ACTION toggleERCWarnings
static TOOL_ACTION toggleDirectiveLabels
static TOOL_ACTION highlightNetTool
static TOOL_ACTION leaveSheet
static TOOL_ACTION ddImportGraphics
static TOOL_ACTION toggleHiddenFields
static TOOL_ACTION drawRectangle
static TOOL_ACTION drawLines
static TOOL_ACTION placeHierLabel
static TOOL_ACTION placeLabel
static TOOL_ACTION drawCircle
static TOOL_ACTION placeBusWireEntry
static TOOL_ACTION drawBezier
static TOOL_ACTION drawWire
static TOOL_ACTION remapSymbols
static TOOL_ACTION rotateCW
static TOOL_ACTION showHierarchy
static TOOL_ACTION showNetNavigator
static TOOL_ACTION placeJunction
static TOOL_ACTION markSimExclusions
static TOOL_ACTION drawRuleArea
static TOOL_ACTION placeSymbol
static TOOL_ACTION placeImage
static TOOL_ACTION toggleERCErrors
static TOOL_ACTION angleSnapModeChanged
static TOOL_ACTION placeLinkedDesignBlock
static TOOL_ACTION drawSheetFromDesignBlock
static TOOL_ACTION mirrorH
static TOOL_ACTION placeDesignBlock
static TOOL_ACTION toggleOPVoltages
static TOOL_ACTION drawBus
static TOOL_ACTION drawTable
static TOOL_ACTION ddAppendFile
static TOOL_ACTION placeSchematicText
static TOOL_ACTION showDesignBlockPanel
static TOOL_ACTION togglePinAltIcons
static TOOL_ACTION toggleERCExclusions
static TOOL_ACTION updateNetHighlighting
static TOOL_ACTION placeNoConnect
static TOOL_ACTION toggleHiddenPins
static TOOL_ACTION syncSheetPins
static TOOL_ACTION placePower
A shim class between EDA_DRAW_FRAME and several derived classes: SYMBOL_EDIT_FRAME,...
SCH_BASE_FRAME(KIWAY *aKiway, wxWindow *aParent, FRAME_T aWindowType, const wxString &aTitle, const wxPoint &aPosition, const wxSize &aSize, long aStyle, const wxString &aFrameName)
SCH_RENDER_SETTINGS * GetRenderSettings()
void doCloseWindow() override
SCH_DRAW_PANEL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.
DIALOG_SCH_FIND * m_findReplaceDialog
void CommonSettingsChanged(int aFlags) 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.
virtual void Push(const wxString &aMessage=wxT("A commit"), int aCommitFlags=0) override
Execute the changes.
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()
Handle design block actions in the schematic editor.
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.
int UpdateNetHighlighting(const TOOL_EVENT &aEvent)
Launch a tool to highlight nets.
Schematic editor (Eeschema) main window.
void DefaultExecFlags()
Reset the execution flags to defaults for external netlist and bom generators.
void OnCrossProbeFlashTimer(wxTimerEvent &aEvent)
int m_crossProbeFlashPhase
void ToggleProperties() override
bool IsContentModified() const override
Get if the current schematic has been modified but not saved.
void RefreshOperatingPointDisplay()
Refresh the display of any operating points.
wxPageSetupDialogData m_pageSetupData
SELECTION & GetCurrentSelection() override
Get the current selection from the canvas area.
const wxString & getAutoSaveFileName() const
wxTreeCtrl * m_netNavigator
std::vector< std::unique_ptr< SCH_ITEM > > m_items_to_repeat
For the repeat-last-item cmd.
void FocusOnItem(EDA_ITEM *aItem, bool aAllowScroll=true) override
Focus on a particular canvas item.
void onResizeNetNavigator(wxSizeEvent &aEvent)
void updateSelectionFilterVisbility() override
Selection filter panel doesn't have a dedicated visibility control, so show it if any other AUI panel...
bool m_highlightedConnChanged
void onNetNavigatorSelChanging(wxTreeEvent &aEvent)
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 ToggleLibraryTree() override
void SetHighlightedConnection(const wxString &aConnection, const NET_NAVIGATOR_ITEM_DATA *aSelection=nullptr)
SCH_SCREEN * GetScreen() const override
Return a pointer to a BASE_SCREEN or one of its derivatives.
bool ReadyToNetlist(const wxString &aAnnotateMessage)
Check if we are ready to write a netlist file for the current schematic.
void onCloseErcDialog(wxCommandEvent &aEvent)
void UpdateHierarchySelection()
Update the hierarchy navigation tree selection (cross-probe from schematic to hierarchy pane).
bool m_syncingPcbToSchSelection
void SetScreen(BASE_SCREEN *aScreen) override
friend class SCH_EDITOR_CONTROL
void SaveSymbolToSchematic(const LIB_SYMBOL &aSymbol, const KIID &aSchematicSymbolUUID)
Update a schematic symbol from a LIB_SYMBOL.
void onSize(wxSizeEvent &aEvent)
void CommonSettingsChanged(int aFlags) override
Called after the preferences dialog is run.
void ShowChangedLanguage() override
Redraw the menus and what not in current language.
void configureToolbars() override
std::vector< wxEvtHandler * > m_schematicChangeListeners
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 CreateDefaultScreens()
SCHEMATIC * m_schematic
The currently loaded schematic.
void onCloseSymbolFieldsTableDialog(wxCommandEvent &aEvent)
SCH_SHEET_PATH & GetCurrentSheet() const
void RecalculateConnections(SCH_COMMIT *aCommit, SCH_CLEANUP_FLAGS aCleanupFlags, PROGRESS_REPORTER *aProgressReporter=nullptr)
Generate the connection data for the entire schematic hierarchy.
void OnLoadFile(wxCommandEvent &event)
SCHEMATIC & Schematic() const
void updateTitle()
Set the main window title bar text.
void SetSchematic(SCHEMATIC *aSchematic)
void ToggleSearch()
Toggle the show/hide state of Search pane.
bool LoadProjectSettings()
Load the KiCad project file (*.pro) settings specific to Eeschema.
void LoadSettings(APP_SETTINGS_BASE *aCfg) override
Load common frame parameters from a configuration file.
void RefreshNetNavigator(const NET_NAVIGATOR_ITEM_DATA *aSelection=nullptr)
wxString GetFullScreenDesc() const override
static const wxString SearchPaneName()
DIALOG_BOOK_REPORTER * GetSymbolDiffDialog()
bool canCloseWindow(wxCloseEvent &aCloseEvent) override
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.
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.
std::vector< KIID > m_crossProbeFlashItems
Items to flash.
void LoadDrawingSheet()
Load the drawing sheet file.
void SetSheetNumberAndCount()
Set the m_ScreenNumber and m_NumberOfScreens members for screens.
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.
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.
void UpdateLabelsHierarchyNavigator()
Update the hierarchy navigation tree labels.
void OnImportProject(wxCommandEvent &event)
double GetSchematicHopOverScale()
static const wxString SchematicHierarchyPaneName()
void setupUIConditions() override
Setup the UI conditions for the various actions and their controls in this frame.
EDA_ITEM * ResolveItem(const KIID &aId, bool aAllowNullptrReturn=false) const override
Fetch an item by KIID.
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 SetCurrentSheet(const SCH_SHEET_PATH &aSheet)
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.
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 IntersheetRefUpdate(SCH_GLOBALLABEL *aItem) override
Callback from schematic ref update.
void OnExit(wxCommandEvent &event)
void AutoRotateItem(SCH_SCREEN *aScreen, SCH_ITEM *aItem)
Automatically set the rotation of an item (if the item supports it).
wxTimer m_crossProbeFlashTimer
Timer to toggle selection visibility.
void AddSchematicChangeListener(wxEvtHandler *aListener)
Add aListener to post #EDA_EVT_SCHEMATIC_CHANGED command events to.
HIERARCHY_PANE * m_hierarchy
DIALOG_SYMBOL_FIELDS_TABLE * m_symbolFieldsTableDialog
std::unique_ptr< GRID_HELPER > MakeGridHelper() override
void UpdateHopOveredWires(SCH_ITEM *aItem)
SEVERITY GetSeverity(int aErrorCode) const override
void onNetNavigatorSelection(wxTreeEvent &aEvent)
void SaveCopyForRepeatItem(const SCH_ITEM *aItem)
Clone aItem and owns that clone in this container.
bool m_crossProbeFlashing
A set of SCH_ITEMs (i.e., without duplicates).
Base class for any item which can be embedded within the SCHEMATIC container class,...
SCH_ITEM * Duplicate(bool addToParentGroup, SCH_COMMIT *aCommit=nullptr, bool doClone=false) const
Routine to create a new copy of given item.
virtual void RunOnChildren(const std::function< void(SCH_ITEM *)> &aFunction, RECURSE_MODE aMode)
SCH_CONNECTION * Connection(const SCH_SHEET_PATH *aSheet=nullptr) const
Retrieve the connection associated with this object in the given sheet.
bool ResolveExcludedFromSim() const
bool AutoRotateOnPlacement() const
autoRotateOnPlacement
SPIN_STYLE GetSpinStyle() const
void AutoplaceFields(SCH_SCREEN *aScreen, AUTOPLACE_ALGO aAlgo) override
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)
Tool that displays edit points allowing to modify items by dragging the points.
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()
Get the full RTree, usually for iterating.
const wxString & GetFileName() const
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 * ResolveItem(const KIID &aID, SCH_SHEET_PATH *aPathOut=nullptr, bool aAllowNullptrReturn=false) 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()
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.
EMBEDDED_FILES * GetEmbeddedFiles() override
SCH_SYMBOLs don't currently support embedded files, but their LIB_SYMBOL counterparts do.
bool IsAnnotated(const SCH_SHEET_PATH *aSheet) const
Check if the symbol has a valid annotation (reference) for the given sheet path.
std::vector< SCH_PIN * > GetPins(const SCH_SHEET_PATH *aSheet) 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 SELECTION_CONDITION HasType(KICAD_T aType)
Create a functor that tests if among the selected items there is at least one of a given type.
static bool NotEmpty(const SELECTION &aSelection)
Test if there are any items selected.
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).
bool UnloadProject(PROJECT *aProject, bool aSave=true)
Save, unload and unregister the given PROJECT.
SIM_MODEL & CreateModel(SIM_MODEL::TYPE aType, const std::vector< SCH_PIN * > &aPins, REPORTER &aReporter)
void SetFilesStack(std::vector< EMBEDDED_FILES * > aFilesStack)
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.
void AddTemplateFieldNames(const wxString &aSerializedFieldNames)
Add a serialized list of template field names.
void DeleteAllFieldNameTemplates(bool aGlobal)
Delete the entire contents.
wxString EnsureFileExtension(const wxString &aFilename, const wxString &aExtension)
It's annoying to throw up nag dialogs when the extension isn't right.
bool HandleUnsavedChanges(wxWindow *aParent, const wxString &aMessage, const std::function< bool()> &aSaveFunction)
Display a dialog with Save, Cancel and Discard Changes buttons.
void DisplayError(wxWindow *aParent, const wxString &aText)
Display an error or warning message box with aMessage.
This file is part of the common library.
wxDEFINE_EVENT(wxEVT_REFRESH_CUSTOM_COMMAND, wxEvent)
#define KICAD_DEFAULT_DRAWFRAME_STYLE
#define SCH_EDIT_FRAME_NAME
#define IGNORE_PARENT_GROUP
@ ID_IMPORT_NON_KICAD_SCH
const wxAuiPaneInfo & defaultSchSelectionFilterPaneInfo(wxWindow *aWindow)
const wxAuiPaneInfo & defaultPropertiesPaneInfo(wxWindow *aWindow)
const wxAuiPaneInfo & defaultNetNavigatorPaneInfo()
const wxAuiPaneInfo & defaultDesignBlocksPaneInfo(wxWindow *aWindow)
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 JpegFileExtension
static const std::string PngFileExtension
static const std::string LegacyPcbFileExtension
static const std::string KiCadSchematicFileExtension
static const std::string AutoSaveFilePrefix
static const std::string SVGFileExtension
static wxString LegacySchematicFileWildcard()
static wxString AllSchematicFilesWildcard()
static wxString KiCadSchematicFileWildcard()
const wxChar *const traceApi
Flag to enable debug output related to the IPC API and its plugin system.
@ ID_EDA_SOCKET_EVENT_SERV
#define KICTL_CREATE
caller thinks requested project files may not exist.
@ 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
#define CURRENT_TOOL(action)
T * GetToolbarSettings(const wxString &aFilename)
T * GetAppSettings(const char *aFilename)
KIWAY Kiway(KFCTL_STANDALONE)
std::vector< FAB_LAYER_COLOR > dummy
wxString UnescapeString(const wxString &aSource)
bool show_directive_labels
int design_blocks_panel_float_width
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
int design_blocks_panel_float_height
bool schematic_hierarchy_float
int design_blocks_panel_docked_width
int properties_panel_width
wxPoint net_nav_panel_float_pos
wxSize net_nav_panel_docked_size
bool show_schematic_hierarchy
Definition for symbol library class.
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.