Skip to content

Commit

Permalink
Fixed problem overwriting elements. Refs #16027
Browse files Browse the repository at this point in the history
  • Loading branch information
palvarezlopez committed Jan 27, 2025
1 parent cc34cc5 commit 2af454e
Show file tree
Hide file tree
Showing 6 changed files with 18 additions and 19 deletions.
4 changes: 2 additions & 2 deletions src/netedit/elements/additional/GNEAdditionalHandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2066,13 +2066,13 @@ GNEAdditionalHandler::checkDuplicatedAdditional(const SumoXMLTag tag, const std:
if (additional) {
if (!myAllowUndoRedo) {
// only overwrite if allow undo-redo
return writeErrorDuplicated(tag, id, tagChecked);
return writeWarningDuplicated(tag, id, tagChecked);
} else if (myOverwrite) {
// delete additional (and all of their childrens)
myNet->deleteAdditional(additional, myNet->getViewNet()->getUndoList());
} else {
// duplicated additional
return writeErrorDuplicated(tag, id, tagChecked);
return writeWarningDuplicated(tag, id, tagChecked);
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions src/netedit/elements/data/GNEDataHandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -273,13 +273,13 @@ GNEDataHandler::checkDuplicatedDataSet(const std::string& id) {
if (dataSet) {
if (!myAllowUndoRedo) {
// only overwrite if allow undo-redo
return writeErrorDuplicated(SUMO_TAG_DATASET, id, SUMO_TAG_DATASET);
return writeWarningDuplicated(SUMO_TAG_DATASET, id, SUMO_TAG_DATASET);
} else if (myOverwrite) {
// delete demand element (and all of their childrens)
myNet->deleteDataSet(dataSet, myNet->getViewNet()->getUndoList());
} else {
// duplicated dataSet
return writeErrorDuplicated(SUMO_TAG_DATASET, id, SUMO_TAG_DATASET);
return writeWarningDuplicated(SUMO_TAG_DATASET, id, SUMO_TAG_DATASET);
}
}
return true;
Expand Down
4 changes: 2 additions & 2 deletions src/netedit/elements/data/GNEMeanDataHandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -191,13 +191,13 @@ GNEMeanDataHandler::checkDuplicatedMeanDataElement(const SumoXMLTag tag, const s
if (meanDataElement) {
if (!myAllowUndoRedo) {
// only overwrite if allow undo-redo
return writeErrorDuplicated(SUMO_TAG_DATASET, id, SUMO_TAG_DATASET);
return writeWarningDuplicated(SUMO_TAG_DATASET, id, SUMO_TAG_DATASET);
} else if (myOverwrite) {
// delete meanData element (and all of their childrens)
myNet->deleteMeanData(meanDataElement, myNet->getViewNet()->getUndoList());
} else {
// duplicated demand
return writeErrorDuplicated(SUMO_TAG_DATASET, id, SUMO_TAG_DATASET);
return writeWarningDuplicated(SUMO_TAG_DATASET, id, SUMO_TAG_DATASET);
}
}
return true;
Expand Down
7 changes: 3 additions & 4 deletions src/netedit/elements/demand/GNERouteHandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2625,14 +2625,13 @@ GNERouteHandler::checkElement(const SumoXMLTag tag, GNEDemandElement* demandElem
if (demandElement) {
if (myAllowUndoRedo && myOverwrite) {
writeWarningOverwritting(tag, demandElement->getID());
myNet->getViewNet()->getUndoList()->begin(demandElement, TL("delete ") + demandElement->getTagStr() + " '" + demandElement->getID() + "'");
myNet->getViewNet()->getUndoList()->add(new GNEChange_DemandElement(demandElement, false), true);
myNet->getViewNet()->getUndoList()->end();
// delete element
myNet->deleteDemandElement(demandElement, myNet->getViewNet()->getUndoList());
// continue creating new element
return true;
} else {
// write errorduplicated demand element
return writeErrorDuplicated(tag, demandElement->getID(), demandElement->getTagProperty().getTag());
return writeWarningDuplicated(tag, demandElement->getID(), demandElement->getTagProperty().getTag());
}
} else {
return true;
Expand Down
12 changes: 6 additions & 6 deletions src/utils/handlers/CommonHandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -328,6 +328,12 @@ CommonHandler::writeWarningOverwritting(const SumoXMLTag tag, const std::string&
}


bool
CommonHandler::writeWarningDuplicated(const SumoXMLTag tag, const std::string& id, const SumoXMLTag checkedTag) {
return writeError(TLF("Could not build % with ID '%' in netedit; Found another % with the same ID.", toString(tag), id, toString(checkedTag)));
}


bool
CommonHandler::writeError(const std::string& error) {
WRITE_ERROR(error);
Expand All @@ -342,12 +348,6 @@ CommonHandler::writeErrorInvalidPosition(const SumoXMLTag tag, const std::string
}


bool
CommonHandler::writeErrorDuplicated(const SumoXMLTag tag, const std::string& id, const SumoXMLTag checkedTag) {
return writeError(TLF("Could not build % with ID '%' in netedit; Found another % with the same ID.", toString(tag), id, toString(checkedTag)));
}


bool
CommonHandler::writeErrorEmptyEdges(const SumoXMLTag tag, const std::string& id) {
return writeError(TLF("Could not build % with ID '%' in netedit; List of edges cannot be empty.", toString(tag), id));
Expand Down
6 changes: 3 additions & 3 deletions src/utils/handlers/CommonHandler.h
Original file line number Diff line number Diff line change
Expand Up @@ -109,15 +109,15 @@ class CommonHandler {
/// @brief write warning overwritting element
void writeWarningOverwritting(const SumoXMLTag tag, const std::string& id);

/// @brief write warning duplicated element
bool writeWarningDuplicated(const SumoXMLTag tag, const std::string& id, const SumoXMLTag checkedTag);

/// @brief write error and enable error creating element
bool writeError(const std::string& error);

/// @brief write error "invalid position"
bool writeErrorInvalidPosition(const SumoXMLTag tag, const std::string& id);

/// @brief write error duplicated element
bool writeErrorDuplicated(const SumoXMLTag tag, const std::string& id, const SumoXMLTag checkedTag);

/// @brief write error "empty edges"
bool writeErrorEmptyEdges(const SumoXMLTag tag, const std::string& id);

Expand Down

0 comments on commit 2af454e

Please sign in to comment.