52                                                 const wxString& aSearchText )
 
   60    if( !aSearchHierarchy )
 
   61        sheetList.push_back( 
m_frame->GetCurrentSheet() );
 
   63        sheetList = 
m_frame->Schematic().Hierarchy();
 
   79                found = ( *aPath == 
path );
 
   83                found = ( aReference && aReference->CmpNoCase( candidate->
GetRef( &sheet ) ) == 0 );
 
   89                sheetWithSymbolFound = &sheet;
 
   98                        int unit = 
pin->GetLibPin()->GetUnit();
 
  100                        if( unit != 0 && unit != symbol->
GetUnit() )
 
  127        if( *sheetWithSymbolFound != 
m_frame->GetCurrentSheet() )
 
  130                                                                   sheetWithSymbolFound );
 
  145                m_frame->FocusOnItem( symbol );
 
  154        displayRef = *aReference;
 
  163                msg.Printf( 
_( 
"%s pin %s found" ), displayRef, aSearchText );
 
  165                msg.Printf( 
_( 
"%s found but pin %s not found" ), displayRef, aSearchText );
 
  169            msg.Printf( 
_( 
"%s found" ), displayRef );
 
  174        msg.Printf( 
_( 
"%s not found" ), displayRef );
 
  178    m_frame->GetCanvas()->Refresh();
 
 
  203    strncpy( line, cmdline, 
sizeof( line ) - 1 );
 
  204    line[ 
sizeof( line ) - 1 ] = 
'\0';
 
  206    char* idcmd = strtok( line, 
" \n\r" );
 
  207    char* 
text  = strtok( 
nullptr, 
"\"\n\r" );
 
  209    if( idcmd == 
nullptr )
 
  214    if( strcmp( idcmd, 
"$CONFIG" ) == 0 )
 
  219    else if( strcmp( idcmd, 
"$ERC" ) == 0 )
 
  224    else if( strcmp( idcmd, 
"$NET:" ) == 0 )
 
  231        if( 
auto sg = 
Schematic().ConnectionGraph()->FindFirstSubgraphByName( netName ) )
 
  239        SetStatusText( 
_( 
"Highlighted net:" ) + wxS( 
" " ) + 
UnescapeString( netName ) );
 
  242    else if( strcmp( idcmd, 
"$CLEAR:" ) == 0 )
 
  251    if( 
text == 
nullptr )
 
  254    if( strcmp( idcmd, 
"$PART:" ) != 0 )
 
  260    idcmd = strtok( 
nullptr, 
" \n\r" );
 
  262    if( idcmd == 
nullptr )    
 
  269    text = strtok( 
nullptr, 
"\"\n\r" );
 
  271    if( 
text == 
nullptr )
 
  276    if( strcmp( idcmd, 
"$REF:" ) == 0 )
 
  282    else if( strcmp( idcmd, 
"$VAL:" ) == 0 )
 
  288    else if( strcmp( idcmd, 
"$PAD:" ) == 0 )
 
 
  301    std::vector<wxString> parts;
 
  305        switch( item->Type() )
 
  322            parts.push_back( wxT( 
"S" ) + full_path );
 
  345    std::string command = 
"$SELECT: 0,";
 
  347    for( wxString part : parts )
 
 
  376    if( !packet.empty() )
 
 
  401    if( aConnection->
IsNet() )
 
  407    if( aConnection->
Members().empty() )
 
  412    wxString nets = all_members[0]->Name();
 
  414    if( all_members.size() == 1 )
 
  424    for( 
size_t i = 1; i < all_members.size(); i++ )
 
  425        nets << 
"," << all_members[i]->Name();
 
  429    if( !packet.empty() )
 
 
  446    std::string packet = 
"$CLEAR\n";
 
 
  464        std::unordered_map<wxString, std::vector<SCH_REFERENCE>>&             aSyncSymMap,
 
  465        std::unordered_map<wxString, std::unordered_map<wxString, SCH_PIN*>>& aSyncPinMap,
 
  466        bool                                                                  aRecursive = 
false )
 
  483    aSheetPath.
GetSymbols( references, 
false, 
true );
 
  485    for( 
unsigned ii = 0; ii < references.
GetCount(); ii++ )
 
  494        wxString    fullRef = schRef.
GetRef() + refNum;
 
  497        if( fullRef.StartsWith( wxS( 
"#" ) ) )
 
  501        if( refNum.compare( wxS( 
"?" ) ) == 0 )
 
  505        auto symMatchIt = aSyncSymMap.find( fullRef );
 
  507        if( symMatchIt != aSyncSymMap.end() )
 
  509            symMatchIt->second.emplace_back( schRef );
 
  516        auto symPinMatchIt = aSyncPinMap.find( fullRef );
 
  518        if( symPinMatchIt != aSyncPinMap.end() )
 
  520            std::unordered_map<wxString, SCH_PIN*>& pinMap = symPinMatchIt->second;
 
  521            std::vector<SCH_PIN*>                   pinsOnSheet = symbol->
GetPins( &aSheetPath );
 
  525                int pinUnit = 
pin->GetLibPin()->GetUnit();
 
  527                if( pinUnit > 0 && pinUnit != schRef.
GetUnit() )
 
  530                auto pinIt = pinMap.find( 
pin->GetNumber() );
 
  532                if( pinIt != pinMap.end() )
 
 
  544        std::unordered_map<wxString, std::vector<SCH_REFERENCE>>&             aSyncSymMap,
 
  545        std::unordered_map<wxString, std::unordered_map<wxString, SCH_PIN*>>& aSyncPinMap,
 
  546        std::unordered_map<SCH_SHEET_PATH, bool>&                             aCache )
 
  548    auto cacheIt = aCache.find( aSheetPath );
 
  550    if( cacheIt != aCache.end() )
 
  551        return cacheIt->second;
 
  560                                                      aSyncPinMap, aCache );
 
  564            aCache.emplace( aSheetPath, 
false );
 
  570    aSheetPath.
GetSymbols( references, 
false, 
true );
 
  574        aCache.emplace( aSheetPath, 
false );
 
  578    for( 
unsigned ii = 0; ii < references.
GetCount(); ii++ )
 
  586        wxString fullRef = schRef.
GetRef() + refNum;
 
  589        if( fullRef.StartsWith( wxS( 
"#" ) ) )
 
  593        if( refNum.compare( wxS( 
"?" ) ) == 0 )
 
  596        if( aSyncSymMap.find( fullRef ) == aSyncSymMap.end() )
 
  598            aCache.emplace( aSheetPath, 
false );
 
  602        if( aSyncPinMap.find( fullRef ) != aSyncPinMap.end() )
 
  604            aCache.emplace( aSheetPath, 
false );
 
  609    aCache.emplace( aSheetPath, 
true );
 
 
  614std::optional<std::tuple<SCH_SHEET_PATH, SCH_ITEM*, std::vector<SCH_ITEM*>>>
 
  618    wxArrayString syncArray = wxStringTokenize( aSyncStr, wxS( 
"," ) );
 
  620    std::unordered_map<wxString, std::vector<SCH_REFERENCE>>             syncSymMap;
 
  621    std::unordered_map<wxString, std::unordered_map<wxString, SCH_PIN*>> syncPinMap;
 
  622    std::unordered_map<SCH_SHEET_PATH, double>                           symScores;
 
  623    std::unordered_map<SCH_SHEET_PATH, bool>                             fullyWantedCache;
 
  625    std::optional<wxString>                                    focusSymbol;
 
  626    std::optional<std::pair<wxString, wxString>>               focusPin;
 
  627    std::unordered_map<SCH_SHEET_PATH, std::vector<SCH_ITEM*>> focusItemResults;
 
  632    std::vector<SCH_SHEET_PATH> orderedSheets;
 
  633    orderedSheets.reserve( allSheetsList.size() );
 
  639            orderedSheets.push_back( sheetPath );
 
  643    for( 
size_t i = 0; i < syncArray.size(); i++ )
 
  645        wxString syncEntry = syncArray[i];
 
  647        if( syncEntry.empty() )
 
  650        wxString syncData = syncEntry.substr( 1 );
 
  652        switch( syncEntry.GetChar( 0 ).GetValue() )
 
  658            if( aFocusOnFirst && ( i == 0 ) )
 
  659                focusSymbol = symRef;
 
  661            syncSymMap[symRef] = std::vector<SCH_REFERENCE>();
 
  670            if( aFocusOnFirst && ( i == 0 ) )
 
  671                focusPin = std::make_pair( symRef, padNum );
 
  673            syncPinMap[symRef][padNum] = 
nullptr;
 
  683    auto flattenSyncMaps =
 
  684            [&syncSymMap, &syncPinMap]() -> std::vector<SCH_ITEM*>
 
  686                std::vector<SCH_ITEM*> allVec;
 
  688                for( 
const auto& [symRef, symbols] : syncSymMap )
 
  691                        allVec.push_back( ref.GetSymbol() );
 
  694                for( 
const auto& [symRef, pinMap] : syncPinMap )
 
  696                    for( 
const auto& [padNum, 
pin] : pinMap )
 
  699                            allVec.push_back( 
pin );
 
  707            [&syncSymMap, &syncPinMap]()
 
  709                for( 
auto& [symRef, symbols] : syncSymMap )
 
  712                for( 
auto& [reference, pins] : syncPinMap )
 
  714                    for( 
auto& [number, 
pin] : pins )
 
  719    auto syncMapsValuesEmpty =
 
  720            [&syncSymMap, &syncPinMap]() -> 
bool 
  722                for( 
const auto& [symRef, symbols] : syncSymMap )
 
  724                    if( symbols.size() > 0 )
 
  728                for( 
const auto& [symRef, pins] : syncPinMap )
 
  730                    for( 
const auto& [padNum, 
pin] : pins )
 
  740    auto checkFocusItems =
 
  745                    auto findIt = syncSymMap.find( *focusSymbol );
 
  747                    if( findIt != syncSymMap.end() )
 
  749                        if( findIt->second.size() > 0 )
 
  750                            focusItemResults[aSheet].push_back( findIt->second.front().GetSymbol() );
 
  755                    auto findIt = syncPinMap.find( focusPin->first );
 
  757                    if( findIt != syncPinMap.end() )
 
  759                        if( findIt->second[focusPin->second] )
 
  760                            focusItemResults[aSheet].push_back( findIt->second[focusPin->second] );
 
  765    auto makeRetForSheet =
 
  772                std::vector<SCH_ITEM*> itemsVector = flattenSyncMaps();
 
  778                    kiidPath.push_back( item->m_Uuid );
 
  780                    std::optional<SCH_SHEET_PATH> subsheetPath =
 
  787                                                      syncPinMap, fullyWantedCache ) )
 
  789                        itemsVector.push_back( item );
 
  793                return std::make_tuple( aSheet, aFocusItem, itemsVector );
 
  804            checkFocusItems( sheetPath );
 
  807        if( focusItemResults.size() > 0 )
 
  811                const std::vector<SCH_ITEM*>& items = focusItemResults[sheetPath];
 
  814                    return makeRetForSheet( sheetPath, items.front() );
 
  826            if( !syncMapsValuesEmpty() )
 
  829                return makeRetForSheet( sheetPath, 
nullptr );
 
 
  846        std::stringstream ss( payload );
 
  850        std::optional<LIBRARY_TABLE*> optTable =
 
  853        wxCHECK_RET( optTable, 
"Could not load symbol lib table." );
 
  857        while( std::getline( ss, file, 
'\n' ) )
 
  862            wxFileName             fn( file );
 
  866            if( type == SCH_IO_MGR::SCH_FILE_UNKNOWN )
 
  868                wxLogTrace( 
"KIWAY", 
"Unknown file type: %s", fn.GetFullPath() );
 
  872            pi.reset( SCH_IO_MGR::FindPlugin( type ) );
 
  874            if( !
table->HasRow( fn.GetName() ) )
 
  878                row.
SetURI( fn.GetFullPath() );
 
  881                table->Save().map_error(
 
  884                        wxLogError( 
_( 
"Error saving project-specific library table:\n\n%s" ),
 
  889                adapter->
LoadOne( fn.GetName() );
 
  905        if( !
eeconfig()->m_CrossProbing.on_selection )
 
  919        std::string prefix = 
"$SELECT: ";
 
  921        std::string paramStr = payload.substr( prefix.size() );
 
  924        if( paramStr.size() < 2 )
 
  927        std::string syncStr = paramStr.substr( 2 );
 
  929        bool focusOnFirst = ( paramStr[0] == 
'1' );
 
  931        std::optional<std::tuple<SCH_SHEET_PATH, SCH_ITEM*, std::vector<SCH_ITEM*>>> findRet =
 
  936            auto& [sheetPath, focusItem, items] = *findRet;
 
  945            if( 
eeconfig()->m_CrossProbing.flash_selection )
 
  947                wxLogTrace( 
traceCrossProbeFlash, 
"MAIL_SELECTION(_FORCE): flash enabled, items=%zu", items.size() );
 
  954                    std::vector<SCH_ITEM*> itemPtrs;
 
  955                    std::copy( items.begin(), items.end(), std::back_inserter( itemPtrs ) );
 
  971        if( !payload.empty() )
 
  973            wxString annotationMessage( payload );
 
  994        KIID           uuid( payload );
 
 1000                payload = 
static_cast<SCH_SHEET*
>( item )->GetShownName( 
false );
 
 1002                payload = 
static_cast<SCH_SYMBOL*
>( item )->GetRef( &
path, 
true );
 
 1004                payload = item->GetFriendlyName();
 
 1034        std::stringstream ss( payload );
 
 1037        std::string formatStr;
 
 1038        wxCHECK( std::getline( ss, formatStr, delim ),  );
 
 1040        std::string fnameStr;
 
 1041        wxCHECK( std::getline( ss, fnameStr, delim ),  );
 
 1047            importFormat = std::stoi( formatStr );
 
 1049        catch( std::invalid_argument& )
 
 1055        std::map<std::string, UTF8> props;
 
 1059            std::string key, value;
 
 1061            if( !std::getline( ss, key, delim ) )
 
 1064            std::getline( ss, value, delim ); 
 
 1066            props.emplace( key, value );
 
 1070        if( importFormat >= 0 )
 
 1071            importFile( fnameStr, importFormat, props.empty() ? 
nullptr : &props );
 
 1078            payload = 
"success";
 
 
KIFACE_BASE & Kiface()
Global KIFACE_BASE "get" accessor.
 
static TOOL_ACTION showSymbolLibTable
 
static TOOL_ACTION updateSchematicFromPcb
 
static const ADVANCED_CFG & GetCfg()
Get the singleton instance's config, which is shared by all consumers.
 
CROSS_PROBING_SETTINGS m_CrossProbing
 
virtual void Refresh(bool aEraseBackground=true, const wxRect *aRect=nullptr) override
 
A base class for most all the KiCad significant classes used in schematics and boards.
 
virtual const wxString & GetText() const
Return the string associated with the text object.
 
EE_TYPE OfType(KICAD_T aType) const
 
Hold an error message and may be used when throwing exceptions containing meaningful error messages.
 
void UpdateAllItems(int aUpdateFlags)
Update all items in the view according to the given flags.
 
wxString AsString() const
 
Carry a payload from one KIWAY_PLAYER to another within a PROJECT.
 
std::string & GetPayload()
Return the payload, which can be any text but it typically self identifying s-expression.
 
MAIL_T Command()
Returns the MAIL_T associated with this mail.
 
virtual void ExpressMail(FRAME_T aDestination, MAIL_T aCommand, std::string &aPayload, wxWindow *aSource=nullptr, bool aFromOtherThread=false)
Send aPayload to aDestination from aSource.
 
std::optional< LIBRARY_TABLE * > Table(LIBRARY_TABLE_TYPE aType, LIBRARY_TABLE_SCOPE aScope)
Retrieves a given table; creating a new empty project table if a valid project is loaded and the give...
 
void SetNickname(const wxString &aNickname)
 
void SetType(const wxString &aType)
 
void SetURI(const wxString &aUri)
 
Generate the KiCad netlist format supported by Pcbnew.
 
void Format(OUTPUTFORMATTER *aOutputFormatter, int aCtl)
Output this s-expression netlist into aOutputFormatter.
 
virtual LIBRARY_MANAGER & GetLibraryManager() const
 
static SYMBOL_LIBRARY_ADAPTER * SymbolLibAdapter(PROJECT *aProject)
Accessor for project symbol library manager adapter.
 
Holds all the data relating to one schematic.
 
SCH_SHEET_LIST Hierarchy() const
Return the full schematic flattened hierarchical sheet list.
 
SCH_SHEET_PATH & CurrentSheet() const
 
static TOOL_ACTION runERC
Inspection and Editing.
 
static TOOL_ACTION changeSheet
 
static TOOL_ACTION updateNetHighlighting
 
SCH_DRAW_PANEL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.
 
void SyncView()
Mark all items for refresh.
 
EESCHEMA_SETTINGS * eeconfig() const
 
Each graphical item can have a SCH_CONNECTION describing its logical connection (to a bus or net).
 
const std::vector< std::shared_ptr< SCH_CONNECTION > > AllMembers() const
 
wxString Name(bool aIgnoreSheet=false) const
 
const std::vector< std::shared_ptr< SCH_CONNECTION > > & Members() const
 
KIGFX::SCH_VIEW * GetView() const override
Return a pointer to the #VIEW instance used in the panel.
 
void AssignFootprints(const std::string &aChangedSetOfReferences)
 
SCH_ITEM * FindSymbolAndItem(const wxString *aPath, const wxString *aReference, bool aSearchHierarchy, SCH_SEARCH_T aSearchType, const wxString &aSearchText)
Find a symbol in the schematic and an item in this symbol and select it.
 
bool ReadyToNetlist(const wxString &aAnnotateMessage)
Check if we are ready to write a netlist file for the current schematic.
 
bool m_syncingPcbToSchSelection
 
friend class SCH_EDITOR_CONTROL
 
void SendSelectItemsToPcb(const std::vector< EDA_ITEM * > &aItems, bool aForce)
Send items to board editor for selection.
 
void SendCrossProbeClearHighlight()
Tell Pcbnew to clear the existing highlighted net, if one exists.
 
SCHEMATIC * m_schematic
The currently loaded schematic.
 
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.
 
SCHEMATIC & Schematic() const
 
void ExecuteRemoteCommand(const char *cmdline) override
Execute a remote command sent via a socket on port KICAD_SCH_PORT_SERVICE_NUMBER (which defaults to 4...
 
void RefreshNetNavigator(const NET_NAVIGATOR_ITEM_DATA *aSelection=nullptr)
 
SCH_DESIGN_BLOCK_PANE * m_designBlocksPane
 
bool importFile(const wxString &aFileName, int aFileType, const std::map< std::string, UTF8 > *aProperties=nullptr)
Load the given filename but sets the path to the current project path.
 
void SendCrossProbeNetName(const wxString &aNetName)
Send a net name to Pcbnew for highlighting.
 
void StartCrossProbeFlash(const std::vector< SCH_ITEM * > &aItems)
 
wxString m_highlightedConn
The highlighted net or bus or empty string.
 
void SetCrossProbeConnection(const SCH_CONNECTION *aConnection)
Send a connection (net or bus) to Pcbnew for highlighting.
 
void TestDanglingEnds()
Test all of the connectable objects in the schematic for unused connection points.
 
bool SaveProject(bool aSaveAs=false)
Save the currently-open schematic (including its hierarchy) and associated project.
 
void KiwayMailIn(KIWAY_EXPRESS &aEvent) override
Receive KIWAY_EXPRESS messages from other players.
 
static const wxString ShowType(SCH_FILE_T aFileType)
Return a brief name for a plugin, given aFileType enum.
 
static SCH_FILE_T GuessPluginTypeFromLibPath(const wxString &aLibPath, int aCtl=0)
Return a plugin type given a symbol library using the file extension of aLibPath.
 
Base class for any item which can be embedded within the SCHEMATIC container class,...
 
Container to create a flattened list of symbols because in a complex hierarchy, a symbol can be used ...
 
A helper to define a symbol's reference designator in a schematic.
 
void Split()
Attempt to split the reference designator into a name (U) and number (1).
 
bool IsSplitNeeded()
Determine if this reference needs to be split or if it likely already has been.
 
SCH_SYMBOL * GetSymbol() const
 
wxString GetRefNumber() const
 
EE_RTREE & Items()
Get the full RTree, usually for iterating.
 
A container for handling SCH_SHEET_PATH objects in a flattened hierarchy.
 
std::optional< SCH_SHEET_PATH > GetSheetPathByKIIDPath(const KIID_PATH &aPath, bool aIncludeLastSheet=true) const
Finds a SCH_SHEET_PATH that matches the provided KIID_PATH.
 
Handle access to a stack of flattened SCH_SHEET objects by way of a path for creating a flattened sch...
 
void GetSymbols(SCH_REFERENCE_LIST &aReferences, bool aIncludePowerSymbols=true, bool aForceIncludeOrphanSymbols=false) const
Adds SCH_REFERENCE object to aReferences for each symbol in the sheet.
 
KIID_PATH Path() const
Get the sheet path as an KIID_PATH.
 
SCH_SCREEN * LastScreen()
 
bool IsContainedWithin(const SCH_SHEET_PATH &aSheetPathToTest) const
Check if this path is contained inside aSheetPathToTest.
 
wxString PathAsString() const
Return the path of time stamps which do not changes even when editing sheet parameters.
 
Sheet symbol placed in a schematic, and is the entry point for a sub schematic.
 
const BOX2I GetBoundingBox() const override
Return the orthogonal bounding box of this object for display purposes.
 
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
 
SCH_FIELD * GetField(FIELD_T aFieldType)
Return a mandatory field in this symbol.
 
An interface to the global shared library manager that is schematic-specific and linked to one projec...
 
std::optional< LIB_STATUS > LoadOne(const wxString &aNickname)
Loads or reloads the given library, if it exists.
 
A base class for LIB_SYMBOL and SCH_SYMBOL.
 
virtual const wxString GetRef(const SCH_SHEET_PATH *aSheet, bool aIncludeUnit=false) const =0
 
bool SendCommand(int aService, const std::string &aMessage)
Used by a client to sent (by a socket connection) a data to a server.
 
std::optional< std::tuple< SCH_SHEET_PATH, SCH_ITEM *, std::vector< SCH_ITEM * > > > findItemsFromSyncSelection(const SCHEMATIC &aSchematic, const std::string aSyncStr, bool aFocusOnFirst)
 
bool findSymbolsAndPins(const SCH_SHEET_LIST &aSchematicSheetList, const SCH_SHEET_PATH &aSheetPath, std::unordered_map< wxString, std::vector< SCH_REFERENCE > > &aSyncSymMap, std::unordered_map< wxString, std::unordered_map< wxString, SCH_PIN * > > &aSyncPinMap, bool aRecursive=false)
 
bool sheetContainsOnlyWantedItems(const SCH_SHEET_LIST &aSchematicSheetList, const SCH_SHEET_PATH &aSheetPath, std::unordered_map< wxString, std::vector< SCH_REFERENCE > > &aSyncSymMap, std::unordered_map< wxString, std::unordered_map< wxString, SCH_PIN * > > &aSyncPinMap, std::unordered_map< SCH_SHEET_PATH, bool > &aCache)
 
@ FRAME_SCH_SYMBOL_EDITOR
 
const wxChar *const traceCrossProbeFlash
Flag to enable debug output for cross-probe flash operations.
 
std::unique_ptr< T > IO_RELEASER
Helper to hold and release an IO_BASE object when exceptions are thrown.
 
#define KI_FALLTHROUGH
The KI_FALLTHROUGH macro is to be used when switch statement cases should purposely fallthrough from ...
 
@ ALL
All except INITIAL_ADD.
 
PGM_BASE & Pgm()
The global program "get" accessor.
 
int StrPrintf(std::string *result, const char *format,...)
This is like sprintf() but the output is appended to a std::string instead of to a character array.
 
SCH_SEARCH_T
Schematic search type used by the socket link with Pcbnew.
 
KIWAY Kiway(KFCTL_STANDALONE)
 
wxString UnescapeString(const wxString &aSource)
 
wxString From_UTF8(const char *cstring)
 
wxString EscapeString(const wxString &aSource, ESCAPE_CONTEXT aContext)
The Escape/Unescape routines use HTML-entity-reference-style encoding to handle characters which are:...
 
#define TO_UTF8(wxstring)
Convert a wxString to a UTF8 encoded C string for all wxWidgets build modes.
 
bool on_selection
Synchronize the selection for multiple items too.
 
bool zoom_to_fit
Zoom to fit items (ignored if center_on_items is off).
 
bool center_on_items
Automatically pan to cross-probed items.
 
bool auto_highlight
Automatically turn on highlight mode in the target frame.
 
@ REFERENCE
Field Reference of part, i.e. "IC21".
 
wxLogTrace helper definitions.