Eclipse SUMO - Simulation of Urban MObility
GNEFixAdditionalElements.cpp
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2001-2019 German Aerospace Center (DLR) and others.
4 // This program and the accompanying materials
5 // are made available under the terms of the Eclipse Public License v2.0
6 // which accompanies this distribution, and is available at
7 // http://www.eclipse.org/legal/epl-v20.html
8 // SPDX-License-Identifier: EPL-2.0
9 /****************************************************************************/
14 // Dialog used to fix additional elements
15 /****************************************************************************/
16 
17 // ===========================================================================
18 // included modules
19 // ===========================================================================
20 #include <config.h>
21 
25 #include <netedit/GNENet.h>
26 #include <netedit/GNEViewNet.h>
27 #include <netedit/GNEUndoList.h>
28 
30 
31 
32 // ===========================================================================
33 // FOX callback mapping
34 // ===========================================================================
35 
36 FXDEFMAP(GNEFixAdditionalElements) GNEFixAdditionalElementsMap[] = {
40 };
41 
42 // Object implementation
43 FXIMPLEMENT(GNEFixAdditionalElements, FXDialogBox, GNEFixAdditionalElementsMap, ARRAYNUMBER(GNEFixAdditionalElementsMap))
44 
45 // ===========================================================================
46 // member method definitions
47 // ===========================================================================
48 
49 GNEFixAdditionalElements::GNEFixAdditionalElements(GNEViewNet* viewNet, const std::vector<GNEAdditional*>& invalidSingleLaneAdditionals, const std::vector<GNEAdditional*>& invalidMultiLaneAdditionals) :
50  FXDialogBox(viewNet->getApp(), ("Fix additional problems"), GUIDesignDialogBoxExplicit(500, 380)),
51  myViewNet(viewNet) {
52  // set busStop icon for this dialog
54  // create main frame
55  myMainFrame = new FXVerticalFrame(this, GUIDesignAuxiliarFrame);
56  // create AdditionalList
57  myAdditionalList = new AdditionalList(this, invalidSingleLaneAdditionals, invalidMultiLaneAdditionals);
58  // create position options
59  myPositionOptions = new PositionOptions(this);
60  // create consecutive lane options
61  myConsecutiveLaneOptions = new ConsecutiveLaneOptions(this);
62  // check if position options has to be disabled
63  if (myAdditionalList->myInvalidSingleLaneAdditionals.empty()) {
64  myPositionOptions->disablePositionOptions();
65  }
66  // check if consecutive lane options has to be disabled
67  if (myAdditionalList->myInvalidMultiLaneAdditionals.empty()) {
68  myConsecutiveLaneOptions->disableConsecutiveLaneOptions();
69  }
70  // create dialog buttons bot centered
71  FXHorizontalFrame* buttonsFrame = new FXHorizontalFrame(myMainFrame, GUIDesignHorizontalFrame);
72  new FXHorizontalFrame(buttonsFrame, GUIDesignAuxiliarHorizontalFrame);
73  myAcceptButton = new FXButton(buttonsFrame, FXWindow::tr("&Accept"), GUIIconSubSys::getIcon(ICON_ACCEPT), this, MID_GNE_ADDITIONALDIALOG_BUTTONACCEPT, GUIDesignButtonAccept);
74  myCancelButton = new FXButton(buttonsFrame, FXWindow::tr("&Cancel"), GUIIconSubSys::getIcon(ICON_CANCEL), this, MID_GNE_ADDITIONALDIALOG_BUTTONCANCEL, GUIDesignButtonCancel);
75  new FXHorizontalFrame(buttonsFrame, GUIDesignAuxiliarHorizontalFrame);
76  // set focus in accept button
77  myAcceptButton->setFocus();
78 }
79 
80 
82 }
83 
84 
85 long
86 GNEFixAdditionalElements::onCmdSelectOption(FXObject* obj, FXSelector, void*) {
89  return 1;
90 }
91 
92 
93 long
94 GNEFixAdditionalElements::onCmdAccept(FXObject*, FXSelector, void*) {
95  bool continueSaving = true;
96  // first check options from single lane additionals
98  if (myPositionOptions->activateFriendlyPositionAndSave->getCheck() == TRUE) {
99  myViewNet->getUndoList()->p_begin("change " + toString(SUMO_ATTR_FRIENDLY_POS) + " of invalid additionals");
100  // iterate over invalid single lane elements to enable friendly position
102  i->setAttribute(SUMO_ATTR_FRIENDLY_POS, "true", myViewNet->getUndoList());
103  }
105  } else if (myPositionOptions->fixPositionsAndSave->getCheck() == TRUE) {
106  myViewNet->getUndoList()->p_begin("fix positions of invalid additionals");
107  // iterate over invalid single lane elements to fix positions
109  i->fixAdditionalProblem();
110  }
112  } else if (myPositionOptions->selectInvalidStopsAndCancel->getCheck() == TRUE) {
113  myViewNet->getUndoList()->p_begin("select invalid additionals");
114  // iterate over invalid single lane elements to select all elements
116  i->setAttribute(GNE_ATTR_SELECTED, "true", myViewNet->getUndoList());
117  }
119  // abort saving
120  continueSaving = false;
121  }
122  }
123  // now check options from multi lane additionals
125  myViewNet->getUndoList()->p_begin("fix multilane additionals problems");
126  // fix problems of consecutive lanes
127  if (myConsecutiveLaneOptions->buildConnectionBetweenLanes->getCheck() == TRUE) {
128  // iterate over invalid single lane elements to enable friendly position
130  i->fixAdditionalProblem();
131  }
132  // we need to check if after first fix there is still Invalid MultiL-ane Additionals with errors
133  auto copyOfInvalidMultiLaneAdditionals = myAdditionalList->myInvalidMultiLaneAdditionals;
135  for (auto i : copyOfInvalidMultiLaneAdditionals) {
136  if (!i->isAdditionalValid()) {
138  }
139  }
140  } else if (myConsecutiveLaneOptions->removeInvalidElements->getCheck() == TRUE) {
141  // iterate over invalid single lane elements to fix positions
144  }
145  // clear myInvalidMultiLaneAdditionals due there isn't more invalid multi lane additionals
147  }
148  // fix problem of positions
149  if (myPositionOptions->activateFriendlyPositionAndSave->getCheck() == TRUE) {
150  // iterate over invalid single lane elements to enable friendly position
152  i->setAttribute(SUMO_ATTR_FRIENDLY_POS, "true", myViewNet->getUndoList());
153  }
154  } else if (myPositionOptions->fixPositionsAndSave->getCheck() == TRUE) {
155  // iterate over invalid single lane elements to fix positions
157  i->fixAdditionalProblem();
158  }
159  }
161  }
162  if (continueSaving) {
163  // stop modal with TRUE (continue saving)
164  getApp()->stopModal(this, TRUE);
165  } else {
166  // stop modal with TRUE (abort saving)
167  getApp()->stopModal(this, FALSE);
168  }
169  return 1;
170 }
171 
172 
173 long
174 GNEFixAdditionalElements::onCmdCancel(FXObject*, FXSelector, void*) {
175  // Stop Modal (abort saving)
176  getApp()->stopModal(this, FALSE);
177  return 1;
178 }
179 
180 // ---------------------------------------------------------------------------
181 // GNEFixDemandElements::DemandList - methods
182 // ---------------------------------------------------------------------------
183 
184 GNEFixAdditionalElements::AdditionalList::AdditionalList(GNEFixAdditionalElements* fixAdditionalPositions, const std::vector<GNEAdditional*>& invalidSingleLaneAdditionals, const std::vector<GNEAdditional*>& invalidMultiLaneAdditionals) :
185  FXGroupBox(fixAdditionalPositions->myMainFrame, "Stopping places and E2 detectors with conflicts", GUIDesignGroupBoxFrameFill),
186  myInvalidSingleLaneAdditionals(invalidSingleLaneAdditionals),
187  myInvalidMultiLaneAdditionals(invalidMultiLaneAdditionals) {
188  // Create table, copy intervals and update table
190  myTable->setSelBackColor(FXRGBA(255, 255, 255, 255));
191  myTable->setSelTextColor(FXRGBA(0, 0, 0, 255));
192  myTable->setEditable(false);
193  // clear table
194  myTable->clearItems();
195  // set number of rows
196  myTable->setTableSize(int(myInvalidSingleLaneAdditionals.size() + myInvalidMultiLaneAdditionals.size()), 3);
197  // Configure list
198  myTable->setVisibleColumns(4);
199  myTable->setColumnWidth(0, GUIDesignTableIconCellWidth);
200  myTable->setColumnWidth(1, 160);
201  myTable->setColumnWidth(2, 280);
202  myTable->setColumnText(0, "");
203  myTable->setColumnText(1, toString(SUMO_ATTR_ID).c_str());
204  myTable->setColumnText(2, "Conflict");
205  myTable->getRowHeader()->setWidth(0);
206  // Declare index for rows and pointer to FXTableItem
207  int indexRow = 0;
208  FXTableItem* item = nullptr;
209  // iterate over single lane additionals
210  for (auto i : myInvalidSingleLaneAdditionals) {
211  // Set icon
212  item = new FXTableItem("", i->getIcon());
213  item->setIconPosition(FXTableItem::CENTER_X);
214  myTable->setItem(indexRow, 0, item);
215  // Set ID
216  item = new FXTableItem(i->getID().c_str());
217  item->setJustify(FXTableItem::LEFT | FXTableItem::CENTER_Y);
218  myTable->setItem(indexRow, 1, item);
219  // Set conflict
220  item = new FXTableItem(i->getAdditionalProblem().c_str());
221  item->setJustify(FXTableItem::LEFT | FXTableItem::CENTER_Y);
222  myTable->setItem(indexRow, 2, item);
223  // Update index
224  indexRow++;
225  }
226  // iterate over multi lane additionals
227  for (auto i : myInvalidMultiLaneAdditionals) {
228  // Set icon
229  item = new FXTableItem("", i->getIcon());
230  item->setIconPosition(FXTableItem::CENTER_X);
231  myTable->setItem(indexRow, 0, item);
232  // Set ID
233  item = new FXTableItem(i->getID().c_str());
234  item->setJustify(FXTableItem::LEFT | FXTableItem::CENTER_Y);
235  myTable->setItem(indexRow, 1, item);
236  // set conflict
237  item = new FXTableItem((i->getAdditionalProblem()).c_str());
238  item->setJustify(FXTableItem::LEFT | FXTableItem::CENTER_Y);
239  myTable->setItem(indexRow, 2, item);
240  // Update index
241  indexRow++;
242  }
243 }
244 
245 // ---------------------------------------------------------------------------
246 // GNEFixAdditionalElements::PositionOptions - methods
247 // ---------------------------------------------------------------------------
248 
250  FXGroupBox(fixAdditionalPositions->myMainFrame, "Select a solution for StoppingPlaces and E2 detectors", GUIDesignGroupBoxFrame) {
251  // create horizontal frames for radio buttons
252  FXHorizontalFrame* RadioButtons = new FXHorizontalFrame(this, GUIDesignHorizontalFrame);
253  // create Vertical Frame for left options
254  FXVerticalFrame* RadioButtonsLeft = new FXVerticalFrame(RadioButtons, GUIDesignAuxiliarVerticalFrame);
255  activateFriendlyPositionAndSave = new FXRadioButton(RadioButtonsLeft, "Activate friendlyPos and save\t\tFriendly pos parameter will be activated in all stopping places and E2 detectors",
256  fixAdditionalPositions, MID_CHOOSEN_OPERATION, GUIDesignRadioButton);
257  saveInvalid = new FXRadioButton(RadioButtonsLeft, "Save invalid positions\t\tSave stopping places and E2 detectors with invalid positions",
258  fixAdditionalPositions, MID_CHOOSEN_OPERATION, GUIDesignRadioButton);
259  // create Vertical Frame for right options
260  FXVerticalFrame* RadioButtonsRight = new FXVerticalFrame(RadioButtons, GUIDesignAuxiliarVerticalFrame);
261  fixPositionsAndSave = new FXRadioButton(RadioButtonsRight, "Fix positions and save\t\tPosition of stopping places and E2 detectors will be fixed",
262  fixAdditionalPositions, MID_CHOOSEN_OPERATION, GUIDesignRadioButton);
263  selectInvalidStopsAndCancel = new FXRadioButton(RadioButtonsRight, "Select invalid additionals\t\tCancel saving of additionals and select invalid stopping places and E2 detectors",
264  fixAdditionalPositions, MID_CHOOSEN_OPERATION, GUIDesignRadioButton);
265  // leave option "activateFriendlyPositionAndSave" as default
266  activateFriendlyPositionAndSave->setCheck(true);
267 }
268 
269 
270 void
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);
292  }
293 }
294 
295 
296 void
298  activateFriendlyPositionAndSave->enable();
299  fixPositionsAndSave->enable();
300  saveInvalid->enable();
301  selectInvalidStopsAndCancel->enable();
302 }
303 
304 
305 void
307  activateFriendlyPositionAndSave->disable();
308  fixPositionsAndSave->disable();
309  saveInvalid->disable();
310  selectInvalidStopsAndCancel->disable();
311 }
312 
313 // ---------------------------------------------------------------------------
314 // GNEFixAdditionalElements::ConsecutiveLaneOptions - methods
315 // ---------------------------------------------------------------------------
316 
318  FXGroupBox(fixAdditionalPositions->myMainFrame, "Select a solution for Multilane E2 detectors", GUIDesignGroupBoxFrame) {
319  // create horizontal frames for radio buttons
320  FXHorizontalFrame* RadioButtons = new FXHorizontalFrame(this, GUIDesignHorizontalFrame);
321  // create Vertical Frame for left options
322  FXVerticalFrame* RadioButtonsLeft = new FXVerticalFrame(RadioButtons, GUIDesignAuxiliarVerticalFrame);
323  buildConnectionBetweenLanes = new FXRadioButton(RadioButtonsLeft, "Build connections between lanes\t\tNew connections will be created between non-connected lanes",
324  fixAdditionalPositions, MID_CHOOSEN_OPERATION, GUIDesignRadioButton);
325  removeInvalidElements = new FXRadioButton(RadioButtonsLeft, "Remove invalid E2 detectors\t\tRemove Multilane E2 Detectors with non-connected lanes",
326  fixAdditionalPositions, MID_CHOOSEN_OPERATION, GUIDesignRadioButton);
327  // add a vertical separator beween both options
328  new FXVerticalSeparator(RadioButtons, GUIDesignVerticalSeparator);
329  // create Vertical Frame for right options
330  FXVerticalFrame* RadioButtonsRight = new FXVerticalFrame(RadioButtons, GUIDesignAuxiliarVerticalFrame);
331  activateFriendlyPositionAndSave = new FXRadioButton(RadioButtonsRight, "Activate friendlyPos and save\t\tFriendly pos parameter will be activated in all stopping places and E2 detectors",
332  fixAdditionalPositions, MID_CHOOSEN_OPERATION, GUIDesignRadioButton);
333  fixPositionsAndSave = new FXRadioButton(RadioButtonsRight, "Fix positions and save\t\tPosition of stopping places and E2 detectors will be fixed",
334  fixAdditionalPositions, MID_CHOOSEN_OPERATION, GUIDesignRadioButton);
335  // leave option "buildConnectionBetweenLanes" and "activateFriendlyPositionAndSave" as default
336  buildConnectionBetweenLanes->setCheck(true);
337  activateFriendlyPositionAndSave->setCheck(true);
338 }
339 
340 
341 void
343  // set top buttons
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);
350  }
351  // set down buttons
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);
358  }
359 }
360 
361 
362 void
364  buildConnectionBetweenLanes->enable();
365  removeInvalidElements->enable();
366  activateFriendlyPositionAndSave->enable();
367  fixPositionsAndSave->enable();
368 }
369 
370 
371 void
373  buildConnectionBetweenLanes->disable();
374  removeInvalidElements->disable();
375  activateFriendlyPositionAndSave->disable();
376  fixPositionsAndSave->disable();
377 }
378 
379 /****************************************************************************/
GUIDesignAuxiliarHorizontalFrame
#define GUIDesignAuxiliarHorizontalFrame
design for auxiliar (Without borders) horizontal frame used to pack another frames
Definition: GUIDesigns.h:273
GNEFixAdditionalElements::ConsecutiveLaneOptions::removeInvalidElements
FXRadioButton * removeInvalidElements
Option "remove invalid elements".
Definition: GNEFixAdditionalElements.h:132
ICON_ACCEPT
@ ICON_ACCEPT
Definition: GUIIcons.h:386
GNEFixAdditionalElements::ConsecutiveLaneOptions
groupbox for group all radio buttons related to additionals with consecutive lanes
Definition: GNEFixAdditionalElements.h:113
GNEFixAdditionalElements::PositionOptions::selectInvalidStopsAndCancel
FXRadioButton * selectInvalidStopsAndCancel
Option "Select invalid stops and cancel".
Definition: GNEFixAdditionalElements.h:109
GNEAdditional
An Element which don't belongs to GNENet but has influency in the simulation.
Definition: GNEAdditional.h:48
GNEAdditional.h
GNEFixAdditionalElements::AdditionalList::myInvalidSingleLaneAdditionals
std::vector< GNEAdditional * > myInvalidSingleLaneAdditionals
vector with the invalid single-lane additionals
Definition: GNEFixAdditionalElements.h:74
GNEFixAdditionalElements::PositionOptions::activateFriendlyPositionAndSave
FXRadioButton * activateFriendlyPositionAndSave
Option "Activate friendlyPos and save".
Definition: GNEFixAdditionalElements.h:100
GNEFixAdditionalElements::ConsecutiveLaneOptions::ConsecutiveLaneOptions
ConsecutiveLaneOptions(GNEFixAdditionalElements *fixAdditionalPositions)
build consecutive lane Options
Definition: GNEFixAdditionalElements.cpp:317
GNEFixAdditionalElements::AdditionalList
groupbox for list
Definition: GNEFixAdditionalElements.h:67
GNEUndoList::p_end
void p_end()
End undo command sub-group. If the sub-group is still empty, it will be deleted; otherwise,...
Definition: GNEUndoList.cpp:79
GNEFixAdditionalElements::onCmdCancel
long onCmdCancel(FXObject *, FXSelector, void *)
event after press cancel button
Definition: GNEFixAdditionalElements.cpp:174
GNEFixAdditionalElements::PositionOptions::PositionOptions
PositionOptions(GNEFixAdditionalElements *fixAdditionalPositions)
build Position Options
Definition: GNEFixAdditionalElements.cpp:249
GNEFixAdditionalElements
Dialog for edit rerouters.
Definition: GNEFixAdditionalElements.h:42
GNEFixAdditionalElements::PositionOptions::saveInvalid
FXRadioButton * saveInvalid
Option "Save invalid".
Definition: GNEFixAdditionalElements.h:106
GNENet::deleteAdditional
void deleteAdditional(GNEAdditional *additional, GNEUndoList *undoList)
remove additional
Definition: GNENet.cpp:628
GNEFixAdditionalElements::PositionOptions::disablePositionOptions
void disablePositionOptions()
disable position options
Definition: GNEFixAdditionalElements.cpp:306
GNEFixAdditionalElements.h
GNEViewNet
Definition: GNEViewNet.h:42
SUMO_ATTR_ID
@ SUMO_ATTR_ID
Definition: SUMOXMLDefinitions.h:378
GUIDesigns.h
GUIIconSubSys::getIcon
static FXIcon * getIcon(GUIIcon which)
returns a icon previously defined in the enum GUIIcon
Definition: GUIIconSubSys.cpp:609
GUIDesignDialogBoxExplicit
#define GUIDesignDialogBoxExplicit(width, height)
design for dialog box with specift width and height (for example, additional dialogs)
Definition: GUIDesigns.h:445
GUIAppEnum.h
GNEViewNet::getNet
GNENet * getNet() const
get the net object
Definition: GNEViewNet.cpp:1014
GUIDesignTableIconCellWidth
#define GUIDesignTableIconCellWidth
width of cells that only contains an Icon
Definition: GUIDesigns.h:467
GNEFixAdditionalElements::AdditionalList::AdditionalList
AdditionalList(GNEFixAdditionalElements *fixAdditionalPositions, const std::vector< GNEAdditional * > &invalidSingleLaneAdditionals, const std::vector< GNEAdditional * > &invalidMultiLaneAdditionals)
constructor
Definition: GNEFixAdditionalElements.cpp:184
GUIDesignAuxiliarVerticalFrame
#define GUIDesignAuxiliarVerticalFrame
design for auxiliar (Without borders) horizontal frame used to pack another frames
Definition: GUIDesigns.h:276
GUIDesignHorizontalFrame
#define GUIDesignHorizontalFrame
Definition: GUIDesigns.h:224
GNEViewNet.h
MID_GNE_ADDITIONALDIALOG_BUTTONACCEPT
@ MID_GNE_ADDITIONALDIALOG_BUTTONACCEPT
accept button
Definition: GUIAppEnum.h:969
MID_GNE_FIXSTOPPINGPLACES_CHANGE
@ MID_GNE_FIXSTOPPINGPLACES_CHANGE
FixStoppingPlaces dialog.
Definition: GUIAppEnum.h:1060
GNEFixAdditionalElements::ConsecutiveLaneOptions::enableConsecutiveLaneOptions
void enableConsecutiveLaneOptions()
enable consecutive lane options
Definition: GNEFixAdditionalElements.cpp:363
GNEViewNet::getUndoList
GNEUndoList * getUndoList() const
get the undoList object
Definition: GNEViewNet.cpp:1020
GUIDesignGroupBoxFrame
#define GUIDesignGroupBoxFrame
Group box design extended over frame.
Definition: GUIDesigns.h:239
GNEFixAdditionalElements::ConsecutiveLaneOptions::selectOption
void selectOption(FXObject *option)
select option
Definition: GNEFixAdditionalElements.cpp:342
GUIDesignGroupBoxFrameFill
#define GUIDesignGroupBoxFrameFill
Group box design extended over frame (X and Y)
Definition: GUIDesigns.h:242
GNEFixAdditionalElements::myConsecutiveLaneOptions
ConsecutiveLaneOptions * myConsecutiveLaneOptions
consecutive lane options
Definition: GNEFixAdditionalElements.h:156
SUMO_ATTR_FRIENDLY_POS
@ SUMO_ATTR_FRIENDLY_POS
Definition: SUMOXMLDefinitions.h:765
GNEFixAdditionalElements::myViewNet
GNEViewNet * myViewNet
view net
Definition: GNEFixAdditionalElements.h:144
GNEFixAdditionalElements::~GNEFixAdditionalElements
~GNEFixAdditionalElements()
destructor
Definition: GNEFixAdditionalElements.cpp:81
GNEFixAdditionalElements::AdditionalList::myTable
FXTable * myTable
list with the stoppingPlaces and detectors
Definition: GNEFixAdditionalElements.h:80
GNEFixAdditionalElements::myMainFrame
FXVerticalFrame * myMainFrame
main
Definition: GNEFixAdditionalElements.h:147
GUIDesignButtonAccept
#define GUIDesignButtonAccept
Accept Button.
Definition: GUIDesigns.h:101
GNEFixAdditionalElements::PositionOptions::enablePositionOptions
void enablePositionOptions()
enable position options
Definition: GNEFixAdditionalElements.cpp:297
toString
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
Definition: ToString.h:47
GNEFixAdditionalElements::ConsecutiveLaneOptions::buildConnectionBetweenLanes
FXRadioButton * buildConnectionBetweenLanes
Option "build connections between lanes".
Definition: GNEFixAdditionalElements.h:129
GNEFixAdditionalElements::myAdditionalList
AdditionalList * myAdditionalList
Additional List.
Definition: GNEFixAdditionalElements.h:150
MID_GNE_ADDITIONALDIALOG_BUTTONCANCEL
@ MID_GNE_ADDITIONALDIALOG_BUTTONCANCEL
cancel button
Definition: GUIAppEnum.h:971
GNEFixAdditionalElements::ConsecutiveLaneOptions::disableConsecutiveLaneOptions
void disableConsecutiveLaneOptions()
disable consecutive lane options
Definition: GNEFixAdditionalElements.cpp:372
GNEFixAdditionalElements::PositionOptions::selectOption
void selectOption(FXObject *option)
select option
Definition: GNEFixAdditionalElements.cpp:271
GNEFixAdditionalElements::AdditionalList::myInvalidMultiLaneAdditionals
std::vector< GNEAdditional * > myInvalidMultiLaneAdditionals
vector with the invalid multi-lane additionals
Definition: GNEFixAdditionalElements.h:77
GUIDesignRadioButton
#define GUIDesignRadioButton
Definition: GUIDesigns.h:139
ICON_CANCEL
@ ICON_CANCEL
Definition: GUIIcons.h:387
GNEFixAdditionalElements::ConsecutiveLaneOptions::activateFriendlyPositionAndSave
FXRadioButton * activateFriendlyPositionAndSave
Option "Activate friendlyPos and save".
Definition: GNEFixAdditionalElements.h:135
GUIDesignVerticalSeparator
#define GUIDesignVerticalSeparator
vertical separator
Definition: GUIDesigns.h:324
GNEFixAdditionalElements::onCmdAccept
long onCmdAccept(FXObject *, FXSelector, void *)
event after press accept button
Definition: GNEFixAdditionalElements.cpp:94
GNEFixAdditionalElements::PositionOptions
groupbox for group all radio buttons related to additionals with single lanes
Definition: GNEFixAdditionalElements.h:84
GNEFixAdditionalElements::onCmdSelectOption
long onCmdSelectOption(FXObject *obj, FXSelector, void *)
Definition: GNEFixAdditionalElements.cpp:86
GUIDesignAuxiliarFrame
#define GUIDesignAuxiliarFrame
design for auxiliar (Without borders) frames used to pack another frames extended in all directions
Definition: GUIDesigns.h:270
GUIDesignButtonCancel
#define GUIDesignButtonCancel
Cancel Button.
Definition: GUIDesigns.h:104
config.h
GNE_ATTR_SELECTED
@ GNE_ATTR_SELECTED
element is selected
Definition: SUMOXMLDefinitions.h:971
ICON_BUSSTOP
@ ICON_BUSSTOP
Definition: GUIIcons.h:268
GUIDesignTableAdditionals
#define GUIDesignTableAdditionals
design for tables used in additional dialogs
Definition: GUIDesigns.h:464
GNEFixAdditionalElements::PositionOptions::fixPositionsAndSave
FXRadioButton * fixPositionsAndSave
Option "Fix Positions and save".
Definition: GNEFixAdditionalElements.h:103
GNEUndoList::p_begin
void p_begin(const std::string &description)
Begin undo command sub-group. This begins a new group of commands that are treated as a single comman...
Definition: GNEUndoList.cpp:72
GNEFixAdditionalElements::myPositionOptions
PositionOptions * myPositionOptions
position options
Definition: GNEFixAdditionalElements.h:153
FXDEFMAP
FXDEFMAP(GNEFixAdditionalElements) GNEFixAdditionalElementsMap[]
GNENet.h
GNEUndoList.h
MID_CHOOSEN_OPERATION
@ MID_CHOOSEN_OPERATION
set type of selection
Definition: GUIAppEnum.h:510
GNEFixAdditionalElements::ConsecutiveLaneOptions::fixPositionsAndSave
FXRadioButton * fixPositionsAndSave
Option "Fix Positions and save".
Definition: GNEFixAdditionalElements.h:138