Skip to content

Commit

Permalink
Updated check functions in edges and lanes. Refs #14175
Browse files Browse the repository at this point in the history
  • Loading branch information
palvarezlopez committed Dec 20, 2023
1 parent 993794b commit f092f2a
Show file tree
Hide file tree
Showing 6 changed files with 67 additions and 34 deletions.
30 changes: 20 additions & 10 deletions src/netedit/GNEViewNet.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1300,6 +1300,18 @@ GNEViewNet::getRelDataAttrs() const {
return std::vector<std::string>(keys.begin(), keys.end());
}


bool
GNEViewNet::checkSelectEdges() const {
if ((myNetworkViewOptions.selectEdges() && !myMouseButtonKeyPressed.shiftKeyPressed()) ||
(!myNetworkViewOptions.selectEdges() && myMouseButtonKeyPressed.shiftKeyPressed())) {
return true;
} else {
return false;
}
}


int
GNEViewNet::doPaintGL(int mode, const Boundary& bound) {
// set lefthand and laneIcons
Expand Down Expand Up @@ -2730,11 +2742,11 @@ GNEViewNet::onCmdSelectPolygonElements(FXObject*, FXSelector, void*) {
// iterate over obtained GUIGlIDs
for (const auto& AC : myViewObjectsSelector.getAttributeCarriers()) {
if (AC->getTagProperty().getTag() == SUMO_TAG_EDGE) {
if (myNetworkViewOptions.selectEdges() && myNet->getAttributeCarriers()->isNetworkElementAroundShape(AC, polygonUnderMouse->getShape())) {
if (checkSelectEdges() && myNet->getAttributeCarriers()->isNetworkElementAroundShape(AC, polygonUnderMouse->getShape())) {
filteredACs.push_back(AC);
}
} else if (AC->getTagProperty().getTag() == SUMO_TAG_LANE) {
if (!myNetworkViewOptions.selectEdges() && myNet->getAttributeCarriers()->isNetworkElementAroundShape(AC, polygonUnderMouse->getShape())) {
if (!checkSelectEdges() && myNet->getAttributeCarriers()->isNetworkElementAroundShape(AC, polygonUnderMouse->getShape())) {
filteredACs.push_back(AC);
}
} else if ((AC != polygonUnderMouse) && myNet->getAttributeCarriers()->isNetworkElementAroundShape(AC, polygonUnderMouse->getShape())) {
Expand Down Expand Up @@ -3234,8 +3246,7 @@ GNEViewNet::updateCursor() {
setDragCursor(GUICursorSubSys::getCursor(GUICursor::MOVEVIEW));
} else if (cursorInspect) {
// special case for inspect lanes
if (myNetworkViewOptions.selectEdges() && myMouseButtonKeyPressed.shiftKeyPressed() &&
myEditModes.isCurrentSupermodeNetwork() && (myEditModes.networkEditMode == NetworkEditMode::NETWORK_INSPECT)) {
if (checkSelectEdges() && myEditModes.isCurrentSupermodeNetwork() && (myEditModes.networkEditMode == NetworkEditMode::NETWORK_INSPECT)) {
// inspect lane cursor
setDefaultCursor(GUICursorSubSys::getCursor(GUICursor::INSPECT_LANE));
setDragCursor(GUICursorSubSys::getCursor(GUICursor::INSPECT_LANE));
Expand All @@ -3246,8 +3257,7 @@ GNEViewNet::updateCursor() {
}
} else if (cursorSelect) {
// special case for select lanes
if (myNetworkViewOptions.selectEdges() && myMouseButtonKeyPressed.shiftKeyPressed() &&
myEditModes.isCurrentSupermodeNetwork() && (myEditModes.networkEditMode == NetworkEditMode::NETWORK_SELECT)) {
if (checkSelectEdges() && myEditModes.isCurrentSupermodeNetwork() && (myEditModes.networkEditMode == NetworkEditMode::NETWORK_SELECT)) {
// select lane cursor
setDefaultCursor(GUICursorSubSys::getCursor(GUICursor::SELECT_LANE));
setDragCursor(GUICursorSubSys::getCursor(GUICursor::SELECT_LANE));
Expand Down Expand Up @@ -5503,7 +5513,7 @@ GNEViewNet::processLeftButtonPressNetwork(void* eventData) {
switch (myEditModes.networkEditMode) {
case NetworkEditMode::NETWORK_INSPECT: {
// first swap lane to edges if mySelectEdges is enabled and shift key isn't pressed
if (myNetworkViewOptions.selectEdges() && (myMouseButtonKeyPressed.shiftKeyPressed() == false)) {
if (checkSelectEdges()) {
myViewObjectsSelector.filterLanes();
} else {
myViewObjectsSelector.filterEdges();
Expand All @@ -5523,7 +5533,7 @@ GNEViewNet::processLeftButtonPressNetwork(void* eventData) {
}
case NetworkEditMode::NETWORK_DELETE: {
// first swap lane to edges if mySelectEdges is enabled and shift key isn't pressed
if (myNetworkViewOptions.selectEdges() && (myMouseButtonKeyPressed.shiftKeyPressed() == false)) {
if (checkSelectEdges()) {
myViewObjectsSelector.filterLanes();
} else {
myViewObjectsSelector.filterEdges();
Expand Down Expand Up @@ -5553,7 +5563,7 @@ GNEViewNet::processLeftButtonPressNetwork(void* eventData) {
}
case NetworkEditMode::NETWORK_SELECT:
// first swap lane to edges if mySelectEdges is enabled and shift key isn't pressed
if (myNetworkViewOptions.selectEdges() && (myMouseButtonKeyPressed.shiftKeyPressed() == false)) {
if (checkSelectEdges()) {
myViewObjectsSelector.filterLanes();
} else {
myViewObjectsSelector.filterEdges();
Expand Down Expand Up @@ -5605,7 +5615,7 @@ GNEViewNet::processLeftButtonPressNetwork(void* eventData) {
}
case NetworkEditMode::NETWORK_MOVE: {
// first swap lane to edges if mySelectEdges is enabled and shift key isn't pressed
if (myNetworkViewOptions.selectEdges() && (myMouseButtonKeyPressed.shiftKeyPressed() == false)) {
if (checkSelectEdges()) {
myViewObjectsSelector.filterLanes();
} else {
myViewObjectsSelector.filterEdges();
Expand Down
3 changes: 3 additions & 0 deletions src/netedit/GNEViewNet.h
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,9 @@ class GNEViewNet : public GUISUMOAbstractView {
/// @brief return list of loaded edgeRelation and tazRelation attributes
std::vector<std::string> getRelDataAttrs() const;

/// @brief check if select edges (toggle using button or shift)
bool checkSelectEdges() const;

/// @brief open object dialog
void openObjectDialogAtCursor(const FXEvent* ev);

Expand Down
2 changes: 1 addition & 1 deletion src/netedit/elements/network/GNECrossing.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ GNECrossing::checkDrawDeleteContour() const {
// get edit modes
const auto& editModes = myNet->getViewNet()->getEditModes();
// check if we're in select mode
if (editModes.isCurrentSupermodeNetwork() && (editModes.networkEditMode == NetworkEditMode::NETWORK_SELECT)) {
if (editModes.isCurrentSupermodeNetwork() && (editModes.networkEditMode == NetworkEditMode::NETWORK_DELETE)) {
return myNet->getViewNet()->checkOverLockedElement(this, mySelected);
} else {
return false;
Expand Down
30 changes: 20 additions & 10 deletions src/netedit/elements/network/GNEEdge.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -294,11 +294,16 @@ GNEEdge::checkDrawOverContour() const {

bool
GNEEdge::checkDrawDeleteContour() const {
// get edit modes
const auto& editModes = myNet->getViewNet()->getEditModes();
// check if we're in delete mode
if (editModes.isCurrentSupermodeNetwork() && (editModes.networkEditMode == NetworkEditMode::NETWORK_DELETE)) {
return myNet->getViewNet()->checkOverLockedElement(this, mySelected);
// first check if we're selecting edges or lanes
if (myNet->getViewNet()->checkSelectEdges()) {
// get edit modes
const auto& editModes = myNet->getViewNet()->getEditModes();
// check if we're in delete mode
if (editModes.isCurrentSupermodeNetwork() && (editModes.networkEditMode == NetworkEditMode::NETWORK_DELETE)) {
return myNet->getViewNet()->checkOverLockedElement(this, mySelected);
} else {
return false;
}
} else {
return false;
}
Expand All @@ -307,11 +312,16 @@ GNEEdge::checkDrawDeleteContour() const {

bool
GNEEdge::checkDrawSelectContour() const {
// get edit modes
const auto& editModes = myNet->getViewNet()->getEditModes();
// check if we're in select mode
if (editModes.isCurrentSupermodeNetwork() && (editModes.networkEditMode == NetworkEditMode::NETWORK_SELECT)) {
return myNet->getViewNet()->checkOverLockedElement(this, mySelected);
// first check if we're selecting edges or lanes
if (myNet->getViewNet()->checkSelectEdges()) {
// get edit modes
const auto& editModes = myNet->getViewNet()->getEditModes();
// check if we're in select mode
if (editModes.isCurrentSupermodeNetwork() && (editModes.networkEditMode == NetworkEditMode::NETWORK_SELECT)) {
return myNet->getViewNet()->checkOverLockedElement(this, mySelected);
} else {
return false;
}
} else {
return false;
}
Expand Down
34 changes: 22 additions & 12 deletions src/netedit/elements/network/GNELane.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -386,26 +386,36 @@ GNELane::checkDrawOverContour() const {

bool
GNELane::checkDrawDeleteContour() const {
// get edit modes
const auto& editModes = myNet->getViewNet()->getEditModes();
// check if we're in delete mode
if (editModes.isCurrentSupermodeNetwork() && (editModes.networkEditMode == NetworkEditMode::NETWORK_DELETE)) {
return myNet->getViewNet()->checkOverLockedElement(this, mySelected);
} else {
// first check if we're selecting edges or lanes
if (myNet->getViewNet()->checkSelectEdges()) {
return false;
} else {
// get edit modes
const auto& editModes = myNet->getViewNet()->getEditModes();
// check if we're in delete mode
if (editModes.isCurrentSupermodeNetwork() && (editModes.networkEditMode == NetworkEditMode::NETWORK_DELETE)) {
return myNet->getViewNet()->checkOverLockedElement(this, mySelected);
} else {
return false;
}
}
}


bool
GNELane::checkDrawSelectContour() const {
// get edit modes
const auto& editModes = myNet->getViewNet()->getEditModes();
// check if we're in select mode
if (editModes.isCurrentSupermodeNetwork() && (editModes.networkEditMode == NetworkEditMode::NETWORK_SELECT)) {
return myNet->getViewNet()->checkOverLockedElement(this, mySelected);
} else {
// first check if we're selecting edges or lanes
if (myNet->getViewNet()->checkSelectEdges()) {
return false;
} else {
// get edit modes
const auto& editModes = myNet->getViewNet()->getEditModes();
// check if we're in select mode
if (editModes.isCurrentSupermodeNetwork() && (editModes.networkEditMode == NetworkEditMode::NETWORK_SELECT)) {
return myNet->getViewNet()->checkOverLockedElement(this, mySelected);
} else {
return false;
}
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/netedit/frames/common/GNESelectorFrame.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -493,7 +493,7 @@ GNESelectorFrame::SelectionOperation::processNetworkElementSelection(const bool
ignoreLocking = askContinueIfLock();
return true;
}
} else if (mySelectorFrameParent->myViewNet->getNetworkViewOptions().selectEdges()) {
} else if (mySelectorFrameParent->myViewNet->checkSelectEdges()) {
// check if edge selection is locked
if (ignoreLocking || !locks.isObjectLocked(GLO_EDGE, false)) {
if (onlyCount) {
Expand Down

0 comments on commit f092f2a

Please sign in to comment.