SI_SymbolPin::SI_SymbolPin(SI_Symbol& symbol, const Uuid& pinUuid) : SI_Base(), mCircuit(symbol.getSchematic().getProject().getCircuit()), mSymbol(symbol), mSymbolPin(nullptr), mComponentSignal(nullptr), mPinSignalMapItem(nullptr), mComponentSignalInstance(nullptr), mAddedToSchematic(false), mRegisteredNetPoint(nullptr), mGraphicsItem(nullptr) { // read attributes mSymbolPin = mSymbol.getLibSymbol().getPinByUuid(pinUuid); if (!mSymbolPin) { throw RuntimeError(__FILE__, __LINE__, pinUuid.toStr(), QString(tr("Invalid symbol pin UUID: \"%1\"")).arg(pinUuid.toStr())); } mPinSignalMapItem = mSymbol.getCompSymbVarItem().getPinSignalMapItemOfPin(pinUuid); if (!mPinSignalMapItem) { throw RuntimeError(__FILE__, __LINE__, QString(), QString(tr("Pin \"%1\" not found in pin-signal-map of symbol instance \"%2\".")) .arg(pinUuid.toStr(), symbol.getUuid().toStr())); } Uuid cmpSignalUuid = mPinSignalMapItem->getSignalUuid(); mComponentSignalInstance = mSymbol.getComponentInstance().getSignalInstance(cmpSignalUuid); mComponentSignal = mSymbol.getComponentInstance().getLibComponent().getSignalByUuid(cmpSignalUuid); mGraphicsItem = new SGI_SymbolPin(*this); updatePosition(); // create ERC messages mErcMsgUnconnectedRequiredPin.reset(new ErcMsg(mCircuit.getProject(), *this, QString("%1/%2").arg(mSymbol.getUuid().toStr()).arg(mSymbolPin->getUuid().toStr()), "UnconnectedRequiredPin", ErcMsg::ErcMsgType_t::SchematicError)); updateErcMessages(); }
CmdSymbolInstanceAdd::CmdSymbolInstanceAdd(SI_Symbol& symbol, UndoCommand* parent) throw (Exception) : UndoCommand(tr("Add symbol instance"), parent), mSchematic(symbol.getSchematic()), mSymbol(&symbol) { }