Skip to content

Commit

Permalink
Fixed #15936
Browse files Browse the repository at this point in the history
  • Loading branch information
palvarezlopez committed Dec 20, 2024
1 parent d9d433c commit 2f97d9a
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 22 deletions.
24 changes: 16 additions & 8 deletions src/netedit/GNEViewNetHelper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -381,17 +381,30 @@ GNEViewNetHelper::ViewObjectsSelector::updateObjects() {
}


void
GNEViewNetHelper::ViewObjectsSelector::filterAllExcept(GUIGlObjectType exception) {
// get all elements to filter
std::vector<const GUIGlObject*> glElements;
for (const auto& glElement : myViewObjects.GUIGlObjects) {
if (glElement->getType() != exception) {
glElements.push_back(glElement);
}
}
myViewObjects.filterElements(glElements);
}


void
GNEViewNetHelper::ViewObjectsSelector::filterBySuperMode() {
if (myViewNet->getEditModes().isCurrentSupermodeNetwork()) {
filterDemandElements(true);
filterDataElements();
} else if (myViewNet->getEditModes().isCurrentSupermodeDemand()) {
filterNetworkElements(true);
filterNetworkElements();
filterAdditionals(true, true);
filterDataElements();
} else if (myViewNet->getEditModes().isCurrentSupermodeData()) {
filterNetworkElements(true);
filterNetworkElements();
filterDemandElements(true);
}
}
Expand Down Expand Up @@ -495,15 +508,10 @@ GNEViewNetHelper::ViewObjectsSelector::filterAdditionals(const bool includeStopp


void
GNEViewNetHelper::ViewObjectsSelector::filterNetworkElements(const bool includeJunctions) {
GNEViewNetHelper::ViewObjectsSelector::filterNetworkElements() {
// get all elements to filter
std::vector<const GUIGlObject*> networkElements;
for (const auto& networkElement : myViewObjects.networkElements) {
if (!includeJunctions && (networkElement->getType() == GLO_JUNCTION)) {
continue;
} else {
networkElements.push_back(networkElement);
}
networkElements.push_back(networkElement);
}
myViewObjects.filterElements(networkElements);
Expand Down
5 changes: 4 additions & 1 deletion src/netedit/GNEViewNetHelper.h
Original file line number Diff line number Diff line change
Expand Up @@ -332,6 +332,9 @@ struct GNEViewNetHelper {
/// @brief update objects (using gViewObjectsHandler)
void updateObjects();

/// @brief filter all elements except the given GLO type
void filterAllExcept(GUIGlObjectType exception);

/// @brief filter by supermode
void filterBySuperMode();

Expand Down Expand Up @@ -360,7 +363,7 @@ struct GNEViewNetHelper {
void filterAdditionals(const bool includeStoppigPlaces, const bool includeTAZs);

/// @brief filter (remove) network elements
void filterNetworkElements(const bool includeJunctions);
void filterNetworkElements();

/// @brief filter (remove) demand elements
void filterDemandElements(const bool includeRoutes);
Expand Down
24 changes: 14 additions & 10 deletions src/netedit/frames/GNEOverlappedInspection.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ FXIMPLEMENT(GNEOverlappedInspection, MFXGroupBoxModule, OverlappedInsp
// ===========================================================================

GNEOverlappedInspection::GNEOverlappedInspection(GNEFrame* frameParent, const bool onlyJunctions) :
MFXGroupBoxModule(frameParent, myOnlyJunctions? TL("Overlapped junctions") : TL("Overlapped elements")),
MFXGroupBoxModule(frameParent, onlyJunctions? TL("Overlapped junctions") : TL("Overlapped elements")),
myFrameParent(frameParent),
myOnlyJunctions(onlyJunctions) {
FXHorizontalFrame* frameButtons = new FXHorizontalFrame(getCollapsableFrame(), GUIDesignAuxiliarHorizontalFrame);
Expand All @@ -66,6 +66,8 @@ GNEOverlappedInspection::GNEOverlappedInspection(GNEFrame* frameParent, const bo
myOverlappedElementList->hide();
// Create help button
myHelpButton = GUIDesigns::buildFXButton(getCollapsableFrame(), TL("Help"), "", "", nullptr, this, MID_HELP, GUIDesignButtonRectangular);
// by default hidden
hide();
}


Expand All @@ -74,15 +76,16 @@ GNEOverlappedInspection::~GNEOverlappedInspection() {}

void
GNEOverlappedInspection::showOverlappedInspection(GNEViewNetHelper::ViewObjectsSelector& viewObjects, const Position &clickedPosition, const bool shiftKeyPressed) {
// filtger edges if we clicked over a lane
if (viewObjects.getAttributeCarrierFront() && viewObjects.getAttributeCarrierFront() == viewObjects.getLaneFront()) {
viewObjects.filterEdges();
}
// filter by supermode
viewObjects.filterBySuperMode();
// check if filter all except junctions
if (myOnlyJunctions) {
viewObjects.filterNetworkElements(false);
viewObjects.filterAllExcept(GLO_JUNCTION);
} else {
// filter by supermode
viewObjects.filterBySuperMode();
// filtger edges if we clicked over a lane
if (viewObjects.getAttributeCarrierFront() && viewObjects.getAttributeCarrierFront() == viewObjects.getLaneFront()) {
viewObjects.filterEdges();
}
}
// in this point, check if we want to iterate over existent overlapped inspection, or we want to inspet a new set of elements
if ((myClickedPosition != Position::INVALID) && (myClickedPosition.distanceSquaredTo(clickedPosition) < 1)) {
Expand All @@ -94,6 +97,7 @@ GNEOverlappedInspection::showOverlappedInspection(GNEViewNetHelper::ViewObjectsS
} else {
myOverlappedACs = viewObjects.getAttributeCarriers();
myItemIndex = 0;
myOverlappedElementList->hide();
}
// update clicked position and refresh overlapped inspection
myClickedPosition = clickedPosition;
Expand Down Expand Up @@ -159,7 +163,7 @@ GNEOverlappedInspection::onCmdInspectPreviousElement(FXObject*, FXSelector, void
if (myItemIndex > 0) {
myItemIndex--;
} else {
myItemIndex = (myOverlappedACs.size() - 1);
myItemIndex = ((int)myOverlappedACs.size() - 1);
}
refreshOverlappedInspection();
}
Expand Down Expand Up @@ -225,7 +229,7 @@ GNEOverlappedInspection::onCmdOverlappingHelp(FXObject*, FXSelector, void*) {
// "OK"
GUIDesigns::buildFXButton(helpDialog, TL("OK"), "", TL("close"), GUIIconSubSys::getIcon(GUIIcon::ACCEPT), helpDialog, FXDialogBox::ID_ACCEPT, GUIDesignButtonOK);
helpDialog->create();
helpDialog->show();
helpDialog->show(PLACEMENT_SCREEN);
return 1;
}

Expand Down
2 changes: 1 addition & 1 deletion src/netedit/frames/GNEOverlappedInspection.h
Original file line number Diff line number Diff line change
Expand Up @@ -111,5 +111,5 @@ class GNEOverlappedInspection : public MFXGroupBoxModule {
std::vector<GNEAttributeCarrier*> myOverlappedACs;

/// @brief current index item
size_t myItemIndex = 0;
int myItemIndex = 0;
};
4 changes: 2 additions & 2 deletions src/netedit/frames/common/GNEInspectorFrame.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -356,8 +356,8 @@ GNEInspectorFrame::inspectElements(const std::vector<GNEAttributeCarrier*>& ACs,

void
GNEInspectorFrame::clearInspection() {
myViewNet->getInspectedElements().clearInspectedElements();
refreshInspection();
// simply clear overlapped inspection (it refresh inspector frame)
myOverlappedInspection->clearOverlappedInspection();
}


Expand Down

0 comments on commit 2f97d9a

Please sign in to comment.