Ejemplo n.º 1
0
void TransWidget::AcceptTrans()
{
    if(edited==NULL)
    {
        emit reportError(QString("Please, select a transition to edit, edit it and then press OK."));
        OKButton->setDisabled(true);
        sourceNameCombo->clear();
        destNameCombo->clear();
        return;
    }
    if(!mod->checkTransitonExists(edited))
    {
        emit reportError(QString("The Transition You have been editing has been deleted"));
        edited=NULL;
        OKButton->setDisabled(true);
        sourceNameCombo->clear();
        destNameCombo->clear();
        return;
    }
    if (edited->startItem()->getName()==sourceNameCombo->currentText() && edited->endItem()->getName()==destNameCombo->currentText())
    {
        if(mod->checkTransCondAvailabe(edited, conditionLineEdit->text()))
        {
            edited->setCondition(conditionLineEdit->text());
            edited->setSubtask(mod->getState(stateCombo->currentText()));
            OKButton->setDisabled(false);
            edited->setToolTip(QString().fromStdString(edited->Print()));
        }
        else //that condition is already used for the source state
        {
            emit reportError(QString("The condition you specified is already in use for the source state."));
        }
    }
    else if( ( edited->startItem()->getName() == sourceNameCombo->currentText() && mod->checkTransCondAvailabe(edited, conditionLineEdit->text()) )
            ||mod->checkTransCondAvailabe(mod->getState(sourceNameCombo->currentText()), conditionLineEdit->text()))
    {
        QString subtaskName = mod->getSubNameOfTrans(edited);
        QGraphicsScene * scene = edited->getScene();
        /*if(edited->startItem()->getName()!=sourceNameCombo->currentText())
        {
            mod->changeSourceStateofTrans(edited, sourceNameCombo->currentText());
        }else{}
        if(edited->endItem()->getName()!=destNameCombo->currentText())
        {
            mod->changeDestStateofTrans(edited, destNameCombo->currentText());
        }else{}
        edited->setCondition(conditionLineEdit->text());
        edited->setSubtask(mod->getState(stateCombo->currentText()));
        OKButton->setDisabled(false);
        edited->setToolTip(QString().fromStdString(edited->Print()));*/
Transition * todelete = edited;
        mod->deleteTransition(edited);
        scene->removeItem(todelete);
        delete todelete;//?

        Transition * tr = new Transition(mod->getState(sourceNameCombo->currentText(), subtaskName), mod->getState(destNameCombo->currentText(), subtaskName));
        tr->setScene(scene);
        tr->setCondition(conditionLineEdit->text());
        tr->setSubtask(mod->getState(stateCombo->currentText()));
        tr->startItem()->addTransition(tr);
        if(tr->startItem()!=tr->endItem())tr->endItem()->addTransition(tr);
        tr->setZValue(-1000.0);
        tr->updatePosition();

        tr->setToolTip(QString().fromStdString(tr->Print()));
        scene->addItem(tr);
        bool test = mod->tryInsertTransition(tr);

        this->TransSelected(tr);
    }
    else
    {
        emit reportError(QString("The condition you specified is already in use for the source state."));
    }
}