Beispiel #1
0
void SI_SymbolPin::addToSchematic(GraphicsScene& scene) noexcept
{
    Q_ASSERT(mAddedToSchematic == false);
    Q_ASSERT(mRegisteredNetPoint == nullptr);
    mComponentSignalInstance->registerSymbolPin(*this);
    scene.addItem(*mGraphicsItem);
    mAddedToSchematic = true;
    updateErcMessages();
}
Beispiel #2
0
void NetSignal::setName(const CircuitIdentifier& name,
                        bool                     isAutoName) noexcept {
  if ((name == mName) && (isAutoName == mHasAutoName)) {
    return;
  }
  mName        = name;
  mHasAutoName = isAutoName;
  updateErcMessages();
  emit nameChanged(mName);
}
void ComponentSignalInstance::removeFromCircuit() throw (Exception)
{
    if (!mRegisteredSymbolPins.isEmpty())
        throw LogicError(__FILE__, __LINE__);

    if (mNetSignal)
        mNetSignal->unregisterComponentSignal(*this);

    mAddedToCircuit = false;
    updateErcMessages();
}
Beispiel #4
0
void NetSignal::removeFromCircuit() {
  if (!mIsAddedToCircuit) {
    throw LogicError(__FILE__, __LINE__);
  }
  if (isUsed()) {
    throw RuntimeError(__FILE__, __LINE__,
                       QString(tr("The net signal \"%1\" cannot be removed "
                                  "because it is still in use!"))
                           .arg(*mName));
  }
  mNetClass->unregisterNetSignal(*this);  // can throw
  mIsAddedToCircuit = false;
  updateErcMessages();
}
void ComponentSignalInstance::init() throw (Exception)
{
    // create ERC messages
    mErcMsgUnconnectedRequiredSignal.reset(new ErcMsg(mCircuit.getProject(), *this,
        QString("%1/%2").arg(mComponentInstance.getUuid().toStr()).arg(mComponentSignal->getUuid().toStr()),
        "UnconnectedRequiredSignal", ErcMsg::ErcMsgType_t::CircuitError, QString()));
    mErcMsgForcedNetSignalNameConflict.reset(new ErcMsg(mCircuit.getProject(), *this,
        QString("%1/%2").arg(mComponentInstance.getUuid().toStr()).arg(mComponentSignal->getUuid().toStr()),
        "ForcedNetSignalNameConflict", ErcMsg::ErcMsgType_t::SchematicError, QString()));
    updateErcMessages();

    // register to component attributes changed
    connect(&mComponentInstance, &ComponentInstance::attributesChanged,
            this, &ComponentSignalInstance::updateErcMessages);

    // register to net signal name changed
    if (mNetSignal) connect(mNetSignal, &NetSignal::nameChanged, this, &ComponentSignalInstance::netSignalNameChanged);

    if (!checkAttributesValidity()) throw LogicError(__FILE__, __LINE__);
}
void ComponentSignalInstance::setNetSignal(NetSignal* netsignal) throw (Exception)
{
    if (!mAddedToCircuit)
        throw LogicError(__FILE__, __LINE__);

    if (mNetSignal)
    {
        disconnect(mNetSignal, &NetSignal::nameChanged, this, &ComponentSignalInstance::netSignalNameChanged);
        mNetSignal->unregisterComponentSignal(*this);
    }

    mNetSignal = netsignal;

    if (mNetSignal)
    {
        mNetSignal->registerComponentSignal(*this);
        connect(mNetSignal, &NetSignal::nameChanged, this, &ComponentSignalInstance::netSignalNameChanged);
    }

    updateErcMessages();
}
Beispiel #7
0
void SI_SymbolPin::registerNetPoint(SI_NetPoint& netpoint)
{
    Q_ASSERT(mRegisteredNetPoint == nullptr);
    mRegisteredNetPoint = &netpoint;
    updateErcMessages();
}
void ComponentSignalInstance::netSignalNameChanged(const QString& newName) noexcept
{
    Q_UNUSED(newName);
    updateErcMessages();
}