示例#1
0
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();
}
示例#2
0
CmdSymbolInstanceAdd::CmdSymbolInstanceAdd(SI_Symbol& symbol, UndoCommand* parent) throw (Exception) :
    UndoCommand(tr("Add symbol instance"), parent),
    mSchematic(symbol.getSchematic()), mSymbol(&symbol)
{
}