Skip to content

Commit

Permalink
Addendum to #10084
Browse files Browse the repository at this point in the history
  • Loading branch information
palvarezlopez committed Feb 28, 2022
1 parent 252382b commit 5aa1278
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 57 deletions.
62 changes: 8 additions & 54 deletions src/netedit/frames/common/GNESelectorFrame.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,7 @@ FXDEFMAP(GNESelectorFrame::SelectionOperation) SelectionOperationMap[] = {
FXMAPFUNC(SEL_COMMAND, MID_CHOOSEN_INVERT, GNESelectorFrame::SelectionOperation::onCmdInvert),
FXMAPFUNC(SEL_COMMAND, MID_CHOOSEN_CLEAR, GNESelectorFrame::SelectionOperation::onCmdClear),
FXMAPFUNC(SEL_COMMAND, MID_CHOOSEN_DELETE, GNESelectorFrame::SelectionOperation::onCmdDelete),
FXMAPFUNC(SEL_COMMAND, MID_CHOOSEN_REDUCE, GNESelectorFrame::SelectionOperation::onCmdReduce),
FXMAPFUNC(SEL_UPDATE, MID_CHOOSEN_REDUCE, GNESelectorFrame::SelectionOperation::onUpdNeedsNetworkSelection)
FXMAPFUNC(SEL_COMMAND, MID_CHOOSEN_REDUCE, GNESelectorFrame::SelectionOperation::onCmdReduce)
};

FXDEFMAP(GNESelectorFrame::SelectionHierarchy) SelectionHierarchyMap[] = {
Expand Down Expand Up @@ -409,58 +408,13 @@ GNESelectorFrame::SelectionOperation::onCmdInvert(FXObject*, FXSelector, void*)

long
GNESelectorFrame::SelectionOperation::onCmdReduce(FXObject*, FXSelector, void*) {
// get net
const auto net = mySelectorFrameParent->getViewNet()->getNet();
// split edges and junctions in two groups depending of their selection
std::vector<GNEAttributeCarrier*> selected, unselected;
// reserve both
selected.reserve(net->getAttributeCarriers()->getJunctions().size() + net->getAttributeCarriers()->getEdges().size());
unselected.reserve(net->getAttributeCarriers()->getJunctions().size() + net->getAttributeCarriers()->getEdges().size());
// iterate over junction and edges
for (const auto &junction : net->getAttributeCarriers()->getJunctions()) {
if (junction.second->isAttributeCarrierSelected()) {
selected.push_back(junction.second);
} else {
unselected.push_back(junction.second);
}
}
for (const auto &edges : net->getAttributeCarriers()->getEdges()) {
if (edges.second->isAttributeCarrierSelected()) {
selected.push_back(edges.second);
} else {
unselected.push_back(edges.second);
}
}
// only continue if there is at least one selected element
if (selected.size() > 0) {
// now unselect and delete elements
mySelectorFrameParent->getViewNet()->getUndoList()->begin(Supermode::NETWORK, GUIIcon::SIMPLIFYNETWORK, "simplify network");
for (const auto &AC : selected) {
AC->setAttribute(GNE_ATTR_SELECTED, "false", mySelectorFrameParent->getViewNet()->getUndoList());
}
for (const auto &AC : unselected) {
if (AC->getTagProperty().getTag() == SUMO_TAG_JUNCTION) {
net->deleteJunction(dynamic_cast<GNEJunction*>(AC), mySelectorFrameParent->getViewNet()->getUndoList());
} else if (net->getAttributeCarriers()->retrieveEdge(AC->getID(), false)) {
net->deleteEdge(dynamic_cast<GNEEdge*>(AC), mySelectorFrameParent->getViewNet()->getUndoList(), false);
}
}
// end undoList operation
mySelectorFrameParent->getViewNet()->getUndoList()->end();
}
return 1;
}


long
GNESelectorFrame::SelectionOperation::onUpdNeedsNetworkSelection(FXObject* sender, FXSelector, void*) {
// check if net, viewnet and front attribute exist
if (mySelectorFrameParent->getViewNet()->getEditModes().isCurrentSupermodeNetwork() &&
(mySelectorFrameParent->getViewNet()->getEditModes().networkEditMode == NetworkEditMode::NETWORK_SELECT)) {
sender->handle(this, FXSEL(SEL_COMMAND, ID_ENABLE), nullptr);
} else {
sender->handle(this, FXSEL(SEL_COMMAND, ID_DISABLE), nullptr);
}
// begin undoList operation
mySelectorFrameParent->getViewNet()->getUndoList()->begin(Supermode::NETWORK, GUIIcon::SIMPLIFYNETWORK, "simplify network");
// invert and clear
onCmdInvert(0, 0, 0);
onCmdDelete(0, 0, 0);
// end undoList operation
mySelectorFrameParent->getViewNet()->getUndoList()->end();
return 1;
}

Expand Down
3 changes: 0 additions & 3 deletions src/netedit/frames/common/GNESelectorFrame.h
Original file line number Diff line number Diff line change
Expand Up @@ -234,9 +234,6 @@ class GNESelectorFrame : public GNEFrame {
*/
long onCmdReduce(FXObject*, FXSelector, void*);

/// @brief called when the update/FXCall needs network selection is executed
long onUpdNeedsNetworkSelection(FXObject*, FXSelector, void*);

/// @}

protected:
Expand Down

0 comments on commit 5aa1278

Please sign in to comment.