43 FXIMPLEMENT(
GNEFixAdditionalElements, FXDialogBox, GNEFixAdditionalElementsMap, ARRAYNUMBER(GNEFixAdditionalElementsMap))
57 myAdditionalList =
new AdditionalList(
this, invalidSingleLaneAdditionals, invalidMultiLaneAdditionals);
63 if (myAdditionalList->myInvalidSingleLaneAdditionals.empty()) {
64 myPositionOptions->disablePositionOptions();
67 if (myAdditionalList->myInvalidMultiLaneAdditionals.empty()) {
68 myConsecutiveLaneOptions->disableConsecutiveLaneOptions();
77 myAcceptButton->setFocus();
95 bool continueSaving =
true;
109 i->fixAdditionalProblem();
120 continueSaving =
false;
130 i->fixAdditionalProblem();
135 for (
auto i : copyOfInvalidMultiLaneAdditionals) {
136 if (!i->isAdditionalValid()) {
157 i->fixAdditionalProblem();
162 if (continueSaving) {
164 getApp()->stopModal(
this, TRUE);
167 getApp()->stopModal(
this, FALSE);
176 getApp()->stopModal(
this, FALSE);
185 FXGroupBox(fixAdditionalPositions->myMainFrame,
"Stopping places and E2 detectors with conflicts",
GUIDesignGroupBoxFrameFill),
186 myInvalidSingleLaneAdditionals(invalidSingleLaneAdditionals),
187 myInvalidMultiLaneAdditionals(invalidMultiLaneAdditionals) {
190 myTable->setSelBackColor(FXRGBA(255, 255, 255, 255));
191 myTable->setSelTextColor(FXRGBA(0, 0, 0, 255));
200 myTable->setColumnWidth(1, 160);
201 myTable->setColumnWidth(2, 280);
204 myTable->setColumnText(2,
"Conflict");
205 myTable->getRowHeader()->setWidth(0);
208 FXTableItem* item =
nullptr;
212 item =
new FXTableItem(
"", i->getIcon());
213 item->setIconPosition(FXTableItem::CENTER_X);
214 myTable->setItem(indexRow, 0, item);
216 item =
new FXTableItem(i->getID().c_str());
217 item->setJustify(FXTableItem::LEFT | FXTableItem::CENTER_Y);
218 myTable->setItem(indexRow, 1, item);
220 item =
new FXTableItem(i->getAdditionalProblem().c_str());
221 item->setJustify(FXTableItem::LEFT | FXTableItem::CENTER_Y);
222 myTable->setItem(indexRow, 2, item);
229 item =
new FXTableItem(
"", i->getIcon());
230 item->setIconPosition(FXTableItem::CENTER_X);
231 myTable->setItem(indexRow, 0, item);
233 item =
new FXTableItem(i->getID().c_str());
234 item->setJustify(FXTableItem::LEFT | FXTableItem::CENTER_Y);
235 myTable->setItem(indexRow, 1, item);
237 item =
new FXTableItem((i->getAdditionalProblem()).c_str());
238 item->setJustify(FXTableItem::LEFT | FXTableItem::CENTER_Y);
239 myTable->setItem(indexRow, 2, item);
255 activateFriendlyPositionAndSave =
new FXRadioButton(RadioButtonsLeft,
"Activate friendlyPos and save\t\tFriendly pos parameter will be activated in all stopping places and E2 detectors",
257 saveInvalid =
new FXRadioButton(RadioButtonsLeft,
"Save invalid positions\t\tSave stopping places and E2 detectors with invalid positions",
261 fixPositionsAndSave =
new FXRadioButton(RadioButtonsRight,
"Fix positions and save\t\tPosition of stopping places and E2 detectors will be fixed",
263 selectInvalidStopsAndCancel =
new FXRadioButton(RadioButtonsRight,
"Select invalid additionals\t\tCancel saving of additionals and select invalid stopping places and E2 detectors",
272 if (option == activateFriendlyPositionAndSave) {
273 activateFriendlyPositionAndSave->setCheck(
true);
274 fixPositionsAndSave->setCheck(
false);
275 saveInvalid->setCheck(
false);
276 selectInvalidStopsAndCancel->setCheck(
false);
277 }
else if (option == fixPositionsAndSave) {
278 activateFriendlyPositionAndSave->setCheck(
false);
279 fixPositionsAndSave->setCheck(
true);
280 saveInvalid->setCheck(
false);
281 selectInvalidStopsAndCancel->setCheck(
false);
282 }
else if (option == saveInvalid) {
283 activateFriendlyPositionAndSave->setCheck(
false);
284 fixPositionsAndSave->setCheck(
false);
285 saveInvalid->setCheck(
true);
286 selectInvalidStopsAndCancel->setCheck(
false);
287 }
else if (option == selectInvalidStopsAndCancel) {
288 activateFriendlyPositionAndSave->setCheck(
false);
289 fixPositionsAndSave->setCheck(
false);
290 saveInvalid->setCheck(
false);
291 selectInvalidStopsAndCancel->setCheck(
true);
298 activateFriendlyPositionAndSave->enable();
299 fixPositionsAndSave->enable();
300 saveInvalid->enable();
301 selectInvalidStopsAndCancel->enable();
307 activateFriendlyPositionAndSave->disable();
308 fixPositionsAndSave->disable();
309 saveInvalid->disable();
310 selectInvalidStopsAndCancel->disable();
323 buildConnectionBetweenLanes =
new FXRadioButton(RadioButtonsLeft,
"Build connections between lanes\t\tNew connections will be created between non-connected lanes",
325 removeInvalidElements =
new FXRadioButton(RadioButtonsLeft,
"Remove invalid E2 detectors\t\tRemove Multilane E2 Detectors with non-connected lanes",
331 activateFriendlyPositionAndSave =
new FXRadioButton(RadioButtonsRight,
"Activate friendlyPos and save\t\tFriendly pos parameter will be activated in all stopping places and E2 detectors",
333 fixPositionsAndSave =
new FXRadioButton(RadioButtonsRight,
"Fix positions and save\t\tPosition of stopping places and E2 detectors will be fixed",
344 if (option == buildConnectionBetweenLanes) {
345 buildConnectionBetweenLanes->setCheck(
true);
346 removeInvalidElements->setCheck(
false);
347 }
else if (option == removeInvalidElements) {
348 buildConnectionBetweenLanes->setCheck(
false);
349 removeInvalidElements->setCheck(
true);
352 if (option == activateFriendlyPositionAndSave) {
353 activateFriendlyPositionAndSave->setCheck(
true);
354 fixPositionsAndSave->setCheck(
false);
355 }
else if (option == fixPositionsAndSave) {
356 activateFriendlyPositionAndSave->setCheck(
false);
357 fixPositionsAndSave->setCheck(
true);
364 buildConnectionBetweenLanes->enable();
365 removeInvalidElements->enable();
366 activateFriendlyPositionAndSave->enable();
367 fixPositionsAndSave->enable();
373 buildConnectionBetweenLanes->disable();
374 removeInvalidElements->disable();
375 activateFriendlyPositionAndSave->disable();
376 fixPositionsAndSave->disable();