56 TL(
"Remove invalid edges"),
"",
57 TL(
"Remove invalid edges"),
61 TL(
"Save invalid edges"),
"",
62 TL(
"Save invalid edges"),
66 TL(
"Select invalid edges"),
"",
67 TL(
"Select invalid edges and abort saving"),
70 registerOption(myRemoveInvalidEdges);
71 registerOption(mySaveInvalidEdges);
72 registerOption(mySelectInvalidEdges);
74 myRemoveInvalidEdges->setCheck(
true);
86 if (myConflictedElements.size() > 0) {
87 auto net = myFixElementDialogParent->getApplicationWindow()->getViewNet()->getNet();
88 auto undoList = myFixElementDialogParent->getApplicationWindow()->getUndoList();
90 if (myRemoveInvalidEdges->getCheck() == TRUE) {
94 for (
const auto& conflictedElement : myConflictedElements) {
95 net->deleteEdge(net->getAttributeCarriers()->retrieveEdge(conflictedElement.getID()), undoList,
false);
99 }
else if (mySelectInvalidEdges->getCheck() == TRUE) {
103 for (
const auto& conflictedElement : myConflictedElements) {
104 conflictedElement.getElement()->setAttribute(
GNE_ATTR_SELECTED,
"true", undoList);
118 if (obj == myRemoveInvalidEdges) {
119 myRemoveInvalidEdges->setCheck(
true);
120 mySaveInvalidEdges->setCheck(
false);
121 mySelectInvalidEdges->setCheck(
false);
122 }
else if (obj == mySaveInvalidEdges) {
123 myRemoveInvalidEdges->setCheck(
false);
124 mySaveInvalidEdges->setCheck(
true);
125 mySelectInvalidEdges->setCheck(
false);
126 }
else if (obj == mySelectInvalidEdges) {
127 myRemoveInvalidEdges->setCheck(
false);
128 mySaveInvalidEdges->setCheck(
false);
129 mySelectInvalidEdges->setCheck(
true);
142 TL(
"Remove invalid crossings"),
"",
143 TL(
"Remove invalid crossings"),
147 TL(
"Save invalid crossings"),
"",
148 TL(
"Save invalid crossings"),
152 TL(
"Select invalid crossing"),
"",
153 TL(
"Select invalid crossing and abort saving"),
167 if (solution ==
"removeInvalidCrossings") {
168 myRemoveInvalidCrossings->setCheck(TRUE, TRUE);
169 }
else if (solution ==
"saveInvalidCrossings") {
170 mySaveInvalidCrossings->setCheck(TRUE, TRUE);
171 }
else if (solution ==
"selectInvalidCrossings") {
172 mySelectInvalidCrossings->setCheck(TRUE, TRUE);
179 if (myConflictedElements.size() > 0) {
180 auto net = myFixElementDialogParent->getApplicationWindow()->getViewNet()->getNet();
181 auto undoList = myFixElementDialogParent->getApplicationWindow()->getUndoList();
183 if (myRemoveInvalidCrossings->getCheck() == TRUE) {
187 for (
const auto& conflictedElement : myConflictedElements) {
188 net->deleteCrossing(net->getAttributeCarriers()->retrieveCrossing(conflictedElement.getElement()), undoList);
192 }
else if (mySelectInvalidCrossings->getCheck() == TRUE) {
196 for (
const auto& conflictedElement : myConflictedElements) {
197 conflictedElement.getElement()->setAttribute(
GNE_ATTR_SELECTED,
"true", undoList);
211 if (obj == myRemoveInvalidCrossings) {
212 myRemoveInvalidCrossings->setCheck(
true);
213 mySaveInvalidCrossings->setCheck(
false);
214 mySelectInvalidCrossings->setCheck(
false);
215 }
else if (obj == mySaveInvalidCrossings) {
216 myRemoveInvalidCrossings->setCheck(
false);
217 mySaveInvalidCrossings->setCheck(
true);
218 mySelectInvalidCrossings->setCheck(
false);
219 }
else if (obj == mySelectInvalidCrossings) {
220 myRemoveInvalidCrossings->setCheck(
false);
221 mySaveInvalidCrossings->setCheck(
false);
222 mySelectInvalidCrossings->setCheck(
true);
232 const std::vector<GNENetworkElement*>& elements) :
239 std::vector<ConflictElement> invalidEdges, invalidCrossings;
241 for (
const auto& invalidNetworkElement : elements) {
243 auto fixElement = ConflictElement(invalidNetworkElement,
244 invalidNetworkElement->getID(),
245 invalidNetworkElement->getACIcon(),
246 invalidNetworkElement->getNetworkElementProblem());
248 if (invalidNetworkElement->getTagProperty()->getTag() ==
SUMO_TAG_EDGE) {
249 invalidEdges.push_back(fixElement);
250 }
else if (invalidNetworkElement->getTagProperty()->getTag() ==
SUMO_TAG_CROSSING) {
251 invalidCrossings.push_back(fixElement);
FXDEFMAP(GNEFixNetworkElements::FixEdgeOptions) FixEdgeOptionsMap[]
@ MID_CHOOSEN_OPERATION
set type of selection
#define GUIDesignRadioButtonFix
design for radio button with fixed height (used in fix elements dialogs)
GUIIcon
An enumeration of icons used by the gui applications.
@ SUMO_TAG_CROSSING
crossing between edges for pedestrians
@ SUMO_TAG_EDGE
begin/end of the description of an edge
@ GNE_ATTR_SELECTED
element is selected
The main window of Netedit.
void openDialog(FXWindow *focusableElement=nullptr)
open dialog
void registerOption(FXWindow *option)
add option to options container (used for adjust width and enable/disable)
void setInvalidElements(const std::vector< ConflictElement > &conflictedElements)
set invalid elements to fix
FXVerticalFrame * myRightFrameOptions
vertical right frame for options
FXVerticalFrame * myLeftFrameOptions
vertical left frame for options
FXVerticalFrame * myLeftFrame
left frame for fix options
groupbox for all radio buttons related with fix crossing options
FixCrossingOptions(GNEFixNetworkElements *fixNetworkElementsParent)
FOX-declaration.
FXRadioButton * mySelectInvalidCrossings
Option "Select invalid crossings and cancel".
long onCmdSelectOption(FXObject *obj, FXSelector, void *)
called when user select a option
void selectInternalTestSolution(const std::string &solution)
select internal test solution
FXRadioButton * myRemoveInvalidCrossings
FOX needs this.
FXRadioButton * mySaveInvalidCrossings
Option "save invalid crossings".
bool applyFixOption()
apply selected fix option
groupbox for all radio buttons related with fix edges options
void selectInternalTestSolution(const std::string &solution)
select internal test solution
bool applyFixOption()
apply selected fix option
long onCmdSelectOption(FXObject *obj, FXSelector, void *)
called when user select a option
FixEdgeOptions * myFixEdgeOptions
fix edge options
FixCrossingOptions * myFixCrossingOptions
fix crossing options
~GNEFixNetworkElements()
destructor
GNEFixNetworkElements(GNEApplicationWindow *mainWindow, const std::vector< GNENetworkElement * > &elements)
Constructor.
static FXRadioButton * buildFXRadioButton(FXComposite *p, const std::string &text, const std::string &tip, const std::string &help, FXObject *tgt, FXSelector sel, FXuint opts=RADIOBUTTON_NORMAL, FXint x=0, FXint y=0, FXint w=0, FXint h=0, FXint pl=DEFAULT_PAD, FXint pr=DEFAULT_PAD, FXint pt=DEFAULT_PAD, FXint pb=DEFAULT_PAD)
build radio button
MFXGroupBoxModule (based on FXGroupBox)