Eclipse SUMO - Simulation of Urban MObility
GNEInspectorFrame.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 /****************************************************************************/
16 // The Widget for modifying network-element attributes (i.e. lane speed)
17 /****************************************************************************/
18 
19 
20 // ===========================================================================
21 // included modules
22 // ===========================================================================
23 #include <config.h>
24 
27 #include <netedit/GNENet.h>
28 #include <netedit/GNEViewNet.h>
29 #include <netedit/GNEUndoList.h>
30 #include <netedit/GNEViewParent.h>
34 
35 #include "GNEInspectorFrame.h"
36 #include "GNEDeleteFrame.h"
37 
38 
39 // ===========================================================================
40 // FOX callback mapping
41 // ===========================================================================
42 
43 FXDEFMAP(GNEInspectorFrame) GNEInspectorFrameMap[] = {
45 };
46 
47 FXDEFMAP(GNEInspectorFrame::OverlappedInspection) OverlappedInspectionMap[] = {
53 };
54 
55 FXDEFMAP(GNEInspectorFrame::NeteditAttributesEditor) NeteditAttributesEditorMap[] = {
58 };
59 
60 FXDEFMAP(GNEInspectorFrame::GEOAttributesEditor) GEOAttributesEditorMap[] = {
63 };
64 
65 FXDEFMAP(GNEInspectorFrame::TemplateEditor) TemplateEditorMap[] = {
69 };
70 
71 // Object implementation
72 FXIMPLEMENT(GNEInspectorFrame, FXVerticalFrame, GNEInspectorFrameMap, ARRAYNUMBER(GNEInspectorFrameMap))
73 FXIMPLEMENT(GNEInspectorFrame::OverlappedInspection, FXGroupBox, OverlappedInspectionMap, ARRAYNUMBER(OverlappedInspectionMap))
74 FXIMPLEMENT(GNEInspectorFrame::NeteditAttributesEditor, FXGroupBox, NeteditAttributesEditorMap, ARRAYNUMBER(NeteditAttributesEditorMap))
75 FXIMPLEMENT(GNEInspectorFrame::GEOAttributesEditor, FXGroupBox, GEOAttributesEditorMap, ARRAYNUMBER(GEOAttributesEditorMap))
76 FXIMPLEMENT(GNEInspectorFrame::TemplateEditor, FXGroupBox, TemplateEditorMap, ARRAYNUMBER(TemplateEditorMap))
77 
78 
79 // ===========================================================================
80 // method definitions
81 // ===========================================================================
82 
83 GNEInspectorFrame::GNEInspectorFrame(FXHorizontalFrame* horizontalFrameParent, GNEViewNet* viewNet):
84  GNEFrame(horizontalFrameParent, viewNet, "Inspector"),
85  myPreviousElementInspect(nullptr),
86  myPreviousElementDelete(nullptr) {
87 
88  // Create back button
89  myBackButton = new FXButton(myHeaderLeftFrame, "", GUIIconSubSys::getIcon(ICON_BIGARROWLEFT), this, MID_GNE_INSPECTORFRAME_GOBACK, GUIDesignButtonIconRectangular);
90  myHeaderLeftFrame->hide();
91  myBackButton->hide();
92 
93  // Create Overlapped Inspection modul
94  myOverlappedInspection = new OverlappedInspection(this);
95 
96  // Create Attributes Editor modul
97  myAttributesEditor = new GNEFrameAttributesModuls::AttributesEditor(this);
98 
99  // Create GEO Parameters Editor modul
100  myGEOAttributesEditor = new GEOAttributesEditor(this);
101 
102  // create Generic parameters Editor modul
103  myGenericParametersEditor = new GNEFrameAttributesModuls::GenericParametersEditor(this);
104 
105  // Create Netedit Attributes Editor modul
106  myNeteditAttributesEditor = new NeteditAttributesEditor(this);
107 
108  // Create Template editor modul
109  myTemplateEditor = new TemplateEditor(this);
110 
111  // Create AttributeCarrierHierarchy modul
112  myAttributeCarrierHierarchy = new GNEFrameModuls::AttributeCarrierHierarchy(this);
113 }
114 
115 
117 
118 
119 void
121  // inspect a null element to reset inspector frame
122  inspectSingleElement(nullptr);
123  GNEFrame::show();
124 }
125 
126 
127 void
129  myViewNet->setDottedAC(nullptr);
130  GNEFrame::hide();
131 }
132 
133 
134 bool
136  // first check if we have clicked over an Attribute Carrier
137  if (objectsUnderCursor.getAttributeCarrierFront()) {
138  // change the selected attribute carrier if mySelectEdges is enabled and clicked element is a getLaneFront() and shift key isn't pressed
140  objectsUnderCursor.swapLane2Edge();
141  }
142  // if Control key is Pressed, select instead inspect element
144  // Check if this GLobject type is locked
146  // toogle netElement selection
147  if (objectsUnderCursor.getAttributeCarrierFront()->isAttributeCarrierSelected()) {
148  objectsUnderCursor.getAttributeCarrierFront()->unselectAttributeCarrier();
149  } else {
150  objectsUnderCursor.getAttributeCarrierFront()->selectAttributeCarrier();
151  }
152  }
153  } else {
154  // first check if we clicked over a OverlappedInspection point
156  if (!myOverlappedInspection->previousElement(clickedPosition)) {
157  // inspect attribute carrier, (or multiselection if AC is selected)
158  inspectClickedElement(objectsUnderCursor, clickedPosition);
159  }
160  } else if (!myOverlappedInspection->nextElement(clickedPosition)) {
161  // inspect attribute carrier, (or multiselection if AC is selected)
162  inspectClickedElement(objectsUnderCursor, clickedPosition);
163  }
164  // focus upper element of inspector frame
166  }
167  return true;
168  } else {
169  return false;
170  }
171 }
172 
173 
174 bool
176  // first check if we have clicked over a demand element
177  if (objectsUnderCursor.getDemandElementFront()) {
178  // if Control key is Pressed, select instead inspect element
180  // Check if this GLobject type is locked
182  // toogle netElement selection
183  if (objectsUnderCursor.getAttributeCarrierFront()->isAttributeCarrierSelected()) {
184  objectsUnderCursor.getAttributeCarrierFront()->unselectAttributeCarrier();
185  } else {
186  objectsUnderCursor.getAttributeCarrierFront()->selectAttributeCarrier();
187  }
188  }
189  } else {
190  // first check if we clicked over a OverlappedInspection point
192  if (!myOverlappedInspection->previousElement(clickedPosition)) {
193  // inspect attribute carrier, (or multiselection if AC is selected)
194  inspectClickedElement(objectsUnderCursor, clickedPosition);
195  }
196  } else if (!myOverlappedInspection->nextElement(clickedPosition)) {
197  // inspect attribute carrier, (or multiselection if AC is selected)
198  inspectClickedElement(objectsUnderCursor, clickedPosition);
199  }
200  // focus upper element of inspector frame
202  }
203  return true;
204  } else {
205  return false;
206  }
207 }
208 
209 
210 void
212  // Use the implementation of inspect for multiple AttributeCarriers to avoid repetition of code
213  std::vector<GNEAttributeCarrier*> itemsToInspect;
214  if (AC != nullptr) {
215  myViewNet->setDottedAC(AC);
216  if (AC->isAttributeCarrierSelected()) {
217  // obtain selected ACs depending of current supermode
218  std::vector<GNEAttributeCarrier*> selectedACs = myViewNet->getNet()->getSelectedAttributeCarriers(false);
219  // iterate over selected ACs
220  for (const auto& i : selectedACs) {
221  // filter ACs to inspect using Tag as criterium
222  if (i->getTagProperty().getTag() == AC->getTagProperty().getTag()) {
223  itemsToInspect.push_back(i);
224  }
225  }
226  } else {
227  itemsToInspect.push_back(AC);
228  }
229  }
230  inspectMultisection(itemsToInspect);
231 }
232 
233 
234 void
235 GNEInspectorFrame::inspectMultisection(const std::vector<GNEAttributeCarrier*>& ACs) {
236  // hide back button
237  myHeaderLeftFrame->hide();
238  myBackButton->hide();
239  // Hide all elements
247  // If vector of attribute Carriers contain data
248  if (ACs.size() > 0) {
249  // Set header
250  std::string headerString;
251  if (ACs.front()->getTagProperty().isNetElement()) {
252  headerString = "Net: ";
253  } else if (ACs.front()->getTagProperty().isAdditional()) {
254  headerString = "Additional: ";
255  } else if (ACs.front()->getTagProperty().isShape()) {
256  headerString = "Shape: ";
257  }
258  if (ACs.size() > 1) {
259  headerString += toString(ACs.size()) + " ";
260  }
261  headerString += ACs.front()->getTagStr();
262  if (ACs.size() > 1) {
263  headerString += "s";
264  }
265  // Set headerString into header label
266  getFrameHeaderLabel()->setText(headerString.c_str());
267 
268  // Show attributes editor
270 
271  // show netedit attributes editor if we're inspecting elements with Netedit Attributes
273 
274  // Show GEO Attributes Editor if we're inspecting elements with GEO Attributes
276 
277  // show generic attributes editor
278  if (ACs.size() == 1) {
280  } else {
282  }
283 
284  // If attributes correspond to an Edge and we aren't in demand mode, show template editor
286 
287  // if we inspect a single Attribute carrier vector, show their children
288  if (ACs.size() == 1) {
290  }
291  } else {
292  getFrameHeaderLabel()->setText("Inspect");
293  myContentFrame->recalc();
294  }
295 }
296 
297 
298 void
300  // Show back button if myPreviousElementInspect was defined
301  myPreviousElementInspect = previousElement;
302  if (myPreviousElementInspect != nullptr) {
303  // disable myPreviousElementDelete to avoid inconsistences
304  myPreviousElementDelete = nullptr;
306  myHeaderLeftFrame->show();
307  myBackButton->show();
308  }
309 }
310 
311 
312 void
313 GNEInspectorFrame::inspectFromDeleteFrame(GNEAttributeCarrier* AC, GNEAttributeCarrier* previousElement, bool previousElementWasMarked) {
314  myPreviousElementDelete = previousElement;
315  myPreviousElementDeleteWasMarked = previousElementWasMarked;
316  // Show back button if myPreviousElementDelete is valid
317  if (myPreviousElementDelete != nullptr) {
318  // disable myPreviousElementInspect to avoid inconsistences
319  myPreviousElementInspect = nullptr;
321  myHeaderLeftFrame->show();
322  myBackButton->show();
323  }
324 }
325 
326 
327 void
329  // Only remove if there is inspected ACs
330  if (myAttributesEditor->getEditedACs().size() > 0) {
331  myViewNet->setDottedAC(nullptr);
332  // Inspect empty selection (to hide all Editors)
334  }
335 }
336 
337 
340  return myAttributesEditor;
341 }
342 
343 
346  return myTemplateEditor;
347 }
348 
349 
352  return myOverlappedInspection;
353 }
354 
355 
356 long
357 GNEInspectorFrame::onCmdGoBack(FXObject*, FXSelector, void*) {
358  // Inspect previous element or go back to Delete Frame
361  myPreviousElementInspect = nullptr;
362  } else if (myPreviousElementDelete != nullptr) {
363  myPreviousElementDelete = nullptr;
364  // Hide inspect frame and show delete frame
365  hide();
367  }
368  return 1;
369 }
370 
371 
372 void
374  // refresh Attribute Editor
376  // refresh GenericParameters
378  // refresh AC Hierarchy
380 }
381 
382 
383 void
385  if (objectsUnderCursor.getAttributeCarrierFront()) {
386  // inspect front element
387  inspectSingleElement(objectsUnderCursor.getAttributeCarrierFront());
388  // if element has overlapped elements, show Overlapped Inspection modul
389  if (objectsUnderCursor.getClickedAttributeCarriers().size() > 1) {
390  myOverlappedInspection->showOverlappedInspection(objectsUnderCursor, clickedPosition);
391  } else {
393  }
394  }
395 }
396 
397 
398 void
403 }
404 
405 // ---------------------------------------------------------------------------
406 // GNEInspectorFrame::OverlappedInspection - methods
407 // ---------------------------------------------------------------------------
408 
410  FXGroupBox(inspectorFrameParent->myContentFrame, "Overlapped elements", GUIDesignGroupBoxFrame),
411  myInspectorFrameParent(inspectorFrameParent),
412  myItemIndex(0) {
413  FXHorizontalFrame* frameButtons = new FXHorizontalFrame(this, GUIDesignAuxiliarHorizontalFrame);
414  // Create previous Item Button
416  // create current index button
417  myCurrentIndexButton = new FXButton(frameButtons, "", nullptr, this, MID_GNE_OVERLAPPED_SHOWLIST, GUIDesignButton);
418  // Create next Item Button
420  // Create list of overlapped elements (by default hidden)
422  // disable vertical scrolling
423  myOverlappedElementList->setScrollStyle(VSCROLLING_OFF);
424  // by default list of overlapped elements is hidden)
425  myOverlappedElementList->hide();
426  // Create help button
427  myHelpButton = new FXButton(this, "Help", nullptr, this, MID_HELP, GUIDesignButtonRectangular);
428 }
429 
430 
432 
433 
434 void
436  myOverlappedACs = objectsUnderCursor.getClickedAttributeCarriers();
437  mySavedClickedPosition = clickedPosition;
438  // by default we inspect first element
439  myItemIndex = 0;
440  // update text of current index button
441  myCurrentIndexButton->setText(("1 / " + toString(myOverlappedACs.size())).c_str());
442  // clear and fill list again
443  myOverlappedElementList->clearItems();
444  for (int i = 0; i < (int)objectsUnderCursor.getClickedAttributeCarriers().size(); i++) {
445  myOverlappedElementList->insertItem(i, objectsUnderCursor.getClickedAttributeCarriers().at(i)->getID().c_str(), objectsUnderCursor.getClickedAttributeCarriers().at(i)->getIcon());
446  }
447  // set first element as selected element
448  myOverlappedElementList->getItem(0)->setSelected(TRUE);
449  // by default list hidden
450  myOverlappedElementList->hide();
451  // show template editor
452  show();
453 }
454 
455 
456 void
458  // hide template editor
459  hide();
460 }
461 
462 
463 bool
465  return shown();
466 }
467 
468 
469 bool
471  return (mySavedClickedPosition.distanceSquaredTo2D(clickedPosition) < 0.25);
472 }
473 
474 
475 bool
477  // first check if OverlappedInspection is shown
478  if (shown()) {
479  // check if given position is near saved position
480  if (checkSavedPosition(clickedPosition)) {
481  // inspect next element
482  onCmdNextElement(0, 0, 0);
483  return true;
484  } else {
485  return false;
486  }
487  } else {
488  return false;
489  }
490 }
491 
492 
493 bool
495  // first check if OverlappedInspection is shown
496  if (shown()) {
497  // check if given position is near saved position
498  if (checkSavedPosition(clickedPosition)) {
499  // inspect previousElement
500  onCmdPreviousElement(0, 0, 0);
501  return true;
502  } else {
503  return false;
504  }
505  } else {
506  return false;
507  }
508 }
509 
510 
511 long
513  // unselect current list element
514  myOverlappedElementList->getItem((int)myItemIndex)->setSelected(FALSE);
515  // set index (it works as a ring)
516  if (myItemIndex > 0) {
517  myItemIndex--;
518  } else {
519  myItemIndex = (myOverlappedACs.size() - 1);
520  }
521  // selected current list element
522  myOverlappedElementList->getItem((int)myItemIndex)->setSelected(TRUE);
523  // inspect overlapped attribute carrier
524  inspectOverlappedAttributeCarrier();
525  return 1;
526 }
527 
528 
529 long
531  // unselect current list element
532  myOverlappedElementList->getItem((int)myItemIndex)->setSelected(FALSE);
533  // set index (it works as a ring)
534  myItemIndex = (myItemIndex + 1) % myOverlappedACs.size();
535  // selected current list element
536  myOverlappedElementList->getItem((int)myItemIndex)->setSelected(TRUE);
537  // inspect overlapped attribute carrier
538  inspectOverlappedAttributeCarrier();
539  return 1;
540 }
541 
542 
543 long
545  // show or hidde element list
546  if (myOverlappedElementList->shown()) {
547  myOverlappedElementList->hide();
548  } else {
549  myOverlappedElementList->show();
550  }
551  myOverlappedElementList->recalc();
552  // recalc and update frame
553  recalc();
554  return 1;
555 }
556 
557 long
559  for (int i = 0; i < myOverlappedElementList->getNumItems(); i++) {
560  if (myOverlappedElementList->getItem(i)->isSelected()) {
561  myItemIndex = i;
562  // inspect overlapped attribute carrier
563  inspectOverlappedAttributeCarrier();
564  return 1;
565  }
566  }
567  return 0;
568 }
569 
570 
571 long
573  FXDialogBox* helpDialog = new FXDialogBox(this, "GEO attributes Help", GUIDesignDialogBox);
574  std::ostringstream help;
575  help
576  << " - Click in the same position\n"
577  << " for inspect next element\n"
578  << " - Shift + Click in the same\n"
579  << " position for inspect\n"
580  << " previous element";
581  new FXLabel(helpDialog, help.str().c_str(), nullptr, GUIDesignLabelFrameInformation);
582  // "OK"
583  new FXButton(helpDialog, "OK\t\tclose", GUIIconSubSys::getIcon(ICON_ACCEPT), helpDialog, FXDialogBox::ID_ACCEPT, GUIDesignButtonOK);
584  helpDialog->create();
585  helpDialog->show();
586  return 1;
587 }
588 
589 
590 void
592  // change current inspected item
593  GNEAttributeCarrier* AC = myOverlappedACs.at(myItemIndex);
594  // if is an lane and selectEdges checkBox is enabled, inspect their edge
595  if (AC->getTagProperty().getTag() == SUMO_TAG_LANE && myInspectorFrameParent->getViewNet()->getNetworkViewOptions().selectEdges()) {
596  myInspectorFrameParent->inspectSingleElement(&dynamic_cast<GNELane*>(AC)->getParentEdge());
597  } else {
598  myInspectorFrameParent->inspectSingleElement(AC);
599  }
600  // show OverlappedInspection again (because it's hidden in inspectSingleElement)
601  show();
602  // update current index button
603  myCurrentIndexButton->setText((toString(myItemIndex + 1) + " / " + toString(myOverlappedACs.size())).c_str());
604  // update view (due dotted contour)
605  myInspectorFrameParent->getViewNet()->update();
606 }
607 
608 // ---------------------------------------------------------------------------
609 // GNEInspectorFrame::NeteditAttributesEditor - methods
610 // ---------------------------------------------------------------------------
611 
613  FXGroupBox(inspectorFrameParent->myContentFrame, "Netedit attributes", GUIDesignGroupBoxFrame),
614  myInspectorFrameParent(inspectorFrameParent) {
615 
616  // Create elements for additional parent
620 
621  // Create elements for block movement
623  myLabelBlockMovement = new FXLabel(myHorizontalFrameBlockMovement, "Block move", nullptr, GUIDesignLabelAttribute);
625 
626  // Create elements for block shape
627  myHorizontalFrameBlockShape = new FXHorizontalFrame(this, GUIDesignAuxiliarHorizontalFrame);
628  myLabelBlockShape = new FXLabel(myHorizontalFrameBlockShape, "Block shape", nullptr, GUIDesignLabelAttribute);
630 
631  // Create elements for close shape
632  myHorizontalFrameCloseShape = new FXHorizontalFrame(this, GUIDesignAuxiliarHorizontalFrame);
633  myLabelCloseShape = new FXLabel(myHorizontalFrameCloseShape, "Close shape", nullptr, GUIDesignLabelAttribute);
635 
636  // Create help button
637  myHelpButton = new FXButton(this, "Help", nullptr, this, MID_HELP, GUIDesignButtonRectangular);
638 }
639 
640 
642 
643 
644 void
646  if (myInspectorFrameParent->myAttributesEditor->getEditedACs().size() > 0) {
647  // enable all editable elements
648  myTextFieldAdditionalParent->enable();
649  myCheckBoxBlockMovement->enable();
650  myCheckBoxBlockShape->enable();
651  myCheckBoxCloseShape->enable();
652  // obtain tag property (only for improve code legibility)
653  const auto& tagValue = myInspectorFrameParent->myAttributesEditor->getEditedACs().front()->getTagProperty();
654  // Check if item can be moved
655  if (tagValue.canBlockMovement()) {
656  // show NeteditAttributesEditor
657  show();
658  // Iterate over AC to obtain values
659  bool value = true;
660  for (const auto& i : myInspectorFrameParent->myAttributesEditor->getEditedACs()) {
661  value &= GNEAttributeCarrier::parse<bool>(i->getAttribute(GNE_ATTR_BLOCK_MOVEMENT));
662  }
663  // show block movement frame
664  myHorizontalFrameBlockMovement->show();
665  // set check box value and update label
666  if (value) {
667  myCheckBoxBlockMovement->setCheck(true);
668  myCheckBoxBlockMovement->setText("true");
669  } else {
670  myCheckBoxBlockMovement->setCheck(false);
671  myCheckBoxBlockMovement->setText("false");
672  }
673  }
674  // check if item can block their shape
675  if (tagValue.canBlockShape()) {
676  // show NeteditAttributesEditor
677  show();
678  // Iterate over AC to obtain values
679  bool value = true;
680  for (const auto& i : myInspectorFrameParent->myAttributesEditor->getEditedACs()) {
681  value &= GNEAttributeCarrier::parse<bool>(i->getAttribute(GNE_ATTR_BLOCK_SHAPE));
682  }
683  // show block shape frame
684  myHorizontalFrameBlockShape->show();
685  // set check box value and update label
686  if (value) {
687  myCheckBoxBlockShape->setCheck(true);
688  myCheckBoxBlockShape->setText("true");
689  } else {
690  myCheckBoxBlockShape->setCheck(false);
691  myCheckBoxBlockShape->setText("false");
692  }
693  }
694  // check if item can block their shape
695  if (tagValue.canCloseShape()) {
696  // show NeteditAttributesEditor
697  show();
698  // Iterate over AC to obtain values
699  bool value = true;
700  for (const auto& i : myInspectorFrameParent->myAttributesEditor->getEditedACs()) {
701  value &= GNEAttributeCarrier::parse<bool>(i->getAttribute(GNE_ATTR_CLOSE_SHAPE));
702  }
703  // show close shape frame
704  myHorizontalFrameCloseShape->show();
705  // set check box value and update label
706  if (value) {
707  myCheckBoxCloseShape->setCheck(true);
708  myCheckBoxCloseShape->setText("true");
709  } else {
710  myCheckBoxCloseShape->setCheck(false);
711  myCheckBoxCloseShape->setText("false");
712  }
713  }
714  // Check if item has another item as parent and can be reparemt
715  if (tagValue.hasParent() && tagValue.canBeReparent()) {
716  // show NeteditAttributesEditor
717  show();
718  // obtain additional Parent
719  std::set<std::string> parents;
720  for (const auto& i : myInspectorFrameParent->myAttributesEditor->getEditedACs()) {
721  parents.insert(i->getAttribute(GNE_ATTR_PARENT));
722  }
723  // show additional parent frame
724  myHorizontalFrameAdditionalParent->show();
725  // set Label and TextField with the Tag and ID of parent
726  myLabelAdditionalParent->setText((toString(myInspectorFrameParent->myAttributesEditor->getEditedACs().front()->getTagProperty().getParentTag()) + " parent").c_str());
727  myTextFieldAdditionalParent->setText(toString(parents).c_str());
728  }
729  // disable all editable elements if we're in demand mode and inspected AC isn't a demand element
730  if (((myInspectorFrameParent->getViewNet()->getEditModes().currentSupermode == GNE_SUPERMODE_NETWORK) && myInspectorFrameParent->myAttributesEditor->getEditedACs().front()->getTagProperty().isDemandElement()) ||
731  ((myInspectorFrameParent->getViewNet()->getEditModes().currentSupermode == GNE_SUPERMODE_DEMAND) && !myInspectorFrameParent->myAttributesEditor->getEditedACs().front()->getTagProperty().isDemandElement())) {
732  myTextFieldAdditionalParent->disable();
733  myCheckBoxBlockMovement->disable();
734  myCheckBoxBlockShape->disable();
735  myCheckBoxCloseShape->disable();
736  }
737  }
738 }
739 
740 
741 void
743  // hide all elements of GroupBox
744  myHorizontalFrameAdditionalParent->hide();
745  myHorizontalFrameBlockMovement->hide();
746  myHorizontalFrameBlockShape->hide();
747  myHorizontalFrameCloseShape->hide();
748  // hide groupbox
749  hide();
750 }
751 
752 
753 void
755  if (myInspectorFrameParent->myAttributesEditor->getEditedACs().size() > 0) {
756  // refresh block movement
757  if (myHorizontalFrameBlockMovement->shown()) {
758  // Iterate over AC to obtain values
759  bool value = true;
760  for (const auto& i : myInspectorFrameParent->myAttributesEditor->getEditedACs()) {
761  value &= GNEAttributeCarrier::parse<bool>(i->getAttribute(GNE_ATTR_BLOCK_MOVEMENT));
762  }
763  // set check box value and update label
764  if (value) {
765  myCheckBoxBlockMovement->setCheck(true);
766  myCheckBoxBlockMovement->setText("true");
767  } else {
768  myCheckBoxBlockMovement->setCheck(false);
769  myCheckBoxBlockMovement->setText("false");
770  }
771  }
772  // refresh block shape
773  if (myHorizontalFrameBlockShape->shown()) {
774  // Iterate over AC to obtain values
775  bool value = true;
776  for (const auto& i : myInspectorFrameParent->myAttributesEditor->getEditedACs()) {
777  value &= GNEAttributeCarrier::parse<bool>(i->getAttribute(GNE_ATTR_BLOCK_SHAPE));
778  }
779  // set check box value and update label
780  if (value) {
781  myCheckBoxBlockShape->setCheck(true);
782  myCheckBoxBlockShape->setText("true");
783  } else {
784  myCheckBoxBlockShape->setCheck(false);
785  myCheckBoxBlockShape->setText("false");
786  }
787  }
788  // refresh close shape
789  if (myHorizontalFrameCloseShape->shown()) {
790  // Iterate over AC to obtain values
791  bool value = true;
792  for (const auto& i : myInspectorFrameParent->myAttributesEditor->getEditedACs()) {
793  value &= GNEAttributeCarrier::parse<bool>(i->getAttribute(GNE_ATTR_CLOSE_SHAPE));
794  }
795  // set check box value and update label
796  if (value) {
797  myCheckBoxCloseShape->setCheck(true);
798  myCheckBoxCloseShape->setText("true");
799  } else {
800  myCheckBoxCloseShape->setCheck(false);
801  myCheckBoxCloseShape->setText("false");
802  }
803  }
804  // Check if item has another item as parent (Currently only for single Additionals)
805  if (myHorizontalFrameAdditionalParent->shown() && ((myTextFieldAdditionalParent->getTextColor() == FXRGB(0, 0, 0)) || forceRefresh)) {
806  // set Label and TextField with the Tag and ID of parent
807  myLabelAdditionalParent->setText((toString(myInspectorFrameParent->myAttributesEditor->getEditedACs().front()->getTagProperty().getParentTag()) + " parent").c_str());
808  myTextFieldAdditionalParent->setText(myInspectorFrameParent->myAttributesEditor->getEditedACs().front()->getAttribute(GNE_ATTR_PARENT).c_str());
809  }
810  }
811 }
812 
813 
814 long
816  // make sure that ACs has elements
817  if (myInspectorFrameParent->myAttributesEditor->getEditedACs().size() > 0) {
818  // check if we're changing multiple attributes
819  if (myInspectorFrameParent->myAttributesEditor->getEditedACs().size() > 1) {
820  myInspectorFrameParent->getViewNet()->getUndoList()->p_begin("Change multiple attributes");
821  }
822  if (obj == myCheckBoxBlockMovement) {
823  // set new values in all inspected Attribute Carriers
824  for (const auto& i : myInspectorFrameParent->myAttributesEditor->getEditedACs()) {
825  if (myCheckBoxBlockMovement->getCheck() == 1) {
826  i->setAttribute(GNE_ATTR_BLOCK_MOVEMENT, "true", myInspectorFrameParent->getViewNet()->getUndoList());
827  myCheckBoxBlockMovement->setText("true");
828  } else {
829  i->setAttribute(GNE_ATTR_BLOCK_MOVEMENT, "false", myInspectorFrameParent->getViewNet()->getUndoList());
830  myCheckBoxBlockMovement->setText("false");
831  }
832  }
833  } else if (obj == myCheckBoxBlockShape) {
834  // set new values in all inspected Attribute Carriers
835  for (const auto& i : myInspectorFrameParent->myAttributesEditor->getEditedACs()) {
836  if (myCheckBoxBlockShape->getCheck() == 1) {
837  i->setAttribute(GNE_ATTR_BLOCK_SHAPE, "true", myInspectorFrameParent->getViewNet()->getUndoList());
838  myCheckBoxBlockShape->setText("true");
839  } else {
840  i->setAttribute(GNE_ATTR_BLOCK_SHAPE, "false", myInspectorFrameParent->getViewNet()->getUndoList());
841  myCheckBoxBlockShape->setText("false");
842  }
843  }
844  } else if (obj == myCheckBoxCloseShape) {
845  // set new values in all inspected Attribute Carriers
846  for (const auto& i : myInspectorFrameParent->myAttributesEditor->getEditedACs()) {
847  if (myCheckBoxCloseShape->getCheck() == 1) {
848  i->setAttribute(GNE_ATTR_CLOSE_SHAPE, "true", myInspectorFrameParent->getViewNet()->getUndoList());
849  myCheckBoxCloseShape->setText("true");
850  } else {
851  i->setAttribute(GNE_ATTR_CLOSE_SHAPE, "false", myInspectorFrameParent->getViewNet()->getUndoList());
852  myCheckBoxCloseShape->setText("false");
853  }
854  }
855  } else if (obj == myTextFieldAdditionalParent) {
856  if (myInspectorFrameParent->myAttributesEditor->getEditedACs().front()->isValid(GNE_ATTR_PARENT, myTextFieldAdditionalParent->getText().text())) {
857  // change parent of all inspected elements
858  for (const auto& i : myInspectorFrameParent->myAttributesEditor->getEditedACs()) {
859  i->setAttribute(GNE_ATTR_PARENT, myTextFieldAdditionalParent->getText().text(), myInspectorFrameParent->getViewNet()->getUndoList());
860  }
861  myTextFieldAdditionalParent->setTextColor(FXRGB(0, 0, 0));
862  } else {
863  myTextFieldAdditionalParent->setTextColor(FXRGB(255, 0, 0));
864  myTextFieldAdditionalParent->killFocus();
865  }
866  }
867  // finish change multiple attributes
868  if (myInspectorFrameParent->myAttributesEditor->getEditedACs().size() > 1) {
869  myInspectorFrameParent->getViewNet()->getUndoList()->p_end();
870  }
871  // force refresh values of AttributesEditor and GEOAttributesEditor
872  myInspectorFrameParent->myAttributesEditor->refreshAttributeEditor(true, true);
873  myInspectorFrameParent->myGEOAttributesEditor->refreshGEOAttributesEditor(true);
874  }
875  return 1;
876 }
877 
878 
879 long
881  return 0;
882 }
883 
884 // ---------------------------------------------------------------------------
885 // GNEInspectorFrame::GEOAttributesEditor - methods
886 // ---------------------------------------------------------------------------
887 
889  FXGroupBox(inspectorFrameParent->myContentFrame, "GEO Attributes", GUIDesignGroupBoxFrame),
890  myInspectorFrameParent(inspectorFrameParent) {
891 
892  // Create Frame for GEOAttribute
893  myGEOAttributeFrame = new FXHorizontalFrame(this, GUIDesignAuxiliarHorizontalFrame);
894  myGEOAttributeLabel = new FXLabel(myGEOAttributeFrame, "Undefined GEO Attribute", nullptr, GUIDesignLabelAttribute);
896 
897  // Create Frame for use GEO
898  myUseGEOFrame = new FXHorizontalFrame(this, GUIDesignAuxiliarHorizontalFrame);
899  myUseGEOLabel = new FXLabel(myUseGEOFrame, toString(SUMO_ATTR_GEO).c_str(), nullptr, GUIDesignLabelAttribute);
900  myUseGEOCheckButton = new FXCheckButton(myUseGEOFrame, "false", this, MID_GNE_SET_ATTRIBUTE, GUIDesignCheckButton);
901 
902  // Create help button
903  myHelpButton = new FXButton(this, "Help", nullptr, this, MID_HELP, GUIDesignButtonRectangular);
904 }
905 
906 
908 
909 
910 void
912  // make sure that ACs has elements
913  if (myInspectorFrameParent->myAttributesEditor->getEditedACs().size() > 0) {
914  // enable all editable elements
915  myGEOAttributeTextField->enable();
916  myUseGEOCheckButton->enable();
917  // obtain tag property (only for improve code legibility)
918  const auto& tagProperty = myInspectorFrameParent->myAttributesEditor->getEditedACs().front()->getTagProperty();
919  // check if item can use a geo position
920  if (tagProperty.hasGEOPosition() || tagProperty.hasGEOShape()) {
921  // show GEOAttributesEditor
922  show();
923  // Iterate over AC to obtain values
924  bool value = true;
925  for (const auto& i : myInspectorFrameParent->myAttributesEditor->getEditedACs()) {
926  value &= GNEAttributeCarrier::parse<bool>(i->getAttribute(SUMO_ATTR_GEO));
927  }
928  // show use geo frame
929  myUseGEOFrame->show();
930  // set UseGEOCheckButton value of and update label (only if geo conversion is defined)
931  if (GeoConvHelper::getFinal().getProjString() != "!") {
932  myUseGEOCheckButton->enable();
933  if (value) {
934  myUseGEOCheckButton->setCheck(true);
935  myUseGEOCheckButton->setText("true");
936  } else {
937  myUseGEOCheckButton->setCheck(false);
938  myUseGEOCheckButton->setText("false");
939  }
940  } else {
941  myUseGEOCheckButton->disable();
942  }
943  // now specify if a single position or an entire shape must be shown (note: cannot be shown both at the same time, and GEO Shape/Position only works for single selections)
944  if (tagProperty.hasGEOPosition() && myInspectorFrameParent->myAttributesEditor->getEditedACs().size() == 1) {
945  myGEOAttributeFrame->show();
946  myGEOAttributeLabel->setText(toString(SUMO_ATTR_GEOPOSITION).c_str());
947  myGEOAttributeTextField->setTextColor(FXRGB(0, 0, 0));
948  // only allow edit if geo conversion is defined
949  if (GeoConvHelper::getFinal().getProjString() != "!") {
950  myGEOAttributeTextField->enable();
951  myGEOAttributeTextField->setText(myInspectorFrameParent->myAttributesEditor->getEditedACs().front()->getAttribute(SUMO_ATTR_GEOPOSITION).c_str());
952  } else {
953  myGEOAttributeTextField->disable();
954  myGEOAttributeTextField->setText("No geo-conversion defined");
955  }
956  } else if (tagProperty.hasGEOShape() && myInspectorFrameParent->myAttributesEditor->getEditedACs().size() == 1) {
957  myGEOAttributeFrame->show();
958  myGEOAttributeLabel->setText(toString(SUMO_ATTR_GEOSHAPE).c_str());
959  myGEOAttributeTextField->setTextColor(FXRGB(0, 0, 0));
960  // only allow edit if geo conversion is defined
961  if (GeoConvHelper::getFinal().getProjString() != "!") {
962  myGEOAttributeTextField->enable();
963  myGEOAttributeTextField->setText(myInspectorFrameParent->myAttributesEditor->getEditedACs().front()->getAttribute(SUMO_ATTR_GEOSHAPE).c_str());
964  } else {
965  myGEOAttributeTextField->disable();
966  myGEOAttributeTextField->setText("No geo-conversion defined");
967  }
968  }
969  }
970  // disable all editable elements if we're in demand mode and inspected AC isn't a demand element
971  if (((myInspectorFrameParent->getViewNet()->getEditModes().currentSupermode == GNE_SUPERMODE_NETWORK) && myInspectorFrameParent->myAttributesEditor->getEditedACs().front()->getTagProperty().isDemandElement()) ||
972  ((myInspectorFrameParent->getViewNet()->getEditModes().currentSupermode == GNE_SUPERMODE_DEMAND) && !myInspectorFrameParent->myAttributesEditor->getEditedACs().front()->getTagProperty().isDemandElement())) {
973  myGEOAttributeTextField->disable();
974  myUseGEOCheckButton->disable();
975  }
976  }
977 }
978 
979 
980 void
982  // hide all elements of GroupBox
983  myGEOAttributeFrame->hide();
984  myUseGEOFrame->hide();
985  // hide groupbox
986  hide();
987 }
988 
989 
990 void
992  // obtain tag property (only for improve code legibility)
993  const auto& tagProperty = myInspectorFrameParent->myAttributesEditor->getEditedACs().front()->getTagProperty();
994  // Check that myGEOAttributeFrame is shown
995  if ((GeoConvHelper::getFinal().getProjString() != "!") && myGEOAttributeFrame->shown() && ((myGEOAttributeTextField->getTextColor() == FXRGB(0, 0, 0)) || forceRefresh)) {
996  if (tagProperty.hasGEOPosition()) {
997  myGEOAttributeTextField->setText(myInspectorFrameParent->myAttributesEditor->getEditedACs().front()->getAttribute(SUMO_ATTR_GEOPOSITION).c_str());
998  } else if (tagProperty.hasGEOShape()) {
999  myGEOAttributeTextField->setText(myInspectorFrameParent->myAttributesEditor->getEditedACs().front()->getAttribute(SUMO_ATTR_GEOSHAPE).c_str());
1000  }
1001  myGEOAttributeTextField->setTextColor(FXRGB(0, 0, 0));
1002  }
1003 }
1004 
1005 
1006 long
1008  // make sure that ACs has elements
1009  if ((GeoConvHelper::getFinal().getProjString() != "!") && (myInspectorFrameParent->myAttributesEditor->getEditedACs().size() > 0)) {
1010  if (obj == myGEOAttributeTextField) {
1011  // obtain tag property (only for improve code legibility)
1012  const auto& tagProperty = myInspectorFrameParent->myAttributesEditor->getEditedACs().front()->getTagProperty();
1013  // Change GEO Attribute depending of type (Position or shape)
1014  if (tagProperty.hasGEOPosition()) {
1015  if (myInspectorFrameParent->myAttributesEditor->getEditedACs().front()->isValid(SUMO_ATTR_GEOPOSITION, myGEOAttributeTextField->getText().text())) {
1016  myInspectorFrameParent->myAttributesEditor->getEditedACs().front()->setAttribute(SUMO_ATTR_GEOPOSITION, myGEOAttributeTextField->getText().text(), myInspectorFrameParent->getViewNet()->getUndoList());
1017  myGEOAttributeTextField->setTextColor(FXRGB(0, 0, 0));
1018  } else {
1019  myGEOAttributeTextField->setTextColor(FXRGB(255, 0, 0));
1020  myGEOAttributeTextField->killFocus();
1021  }
1022  } else if (tagProperty.hasGEOShape()) {
1023  if (myInspectorFrameParent->myAttributesEditor->getEditedACs().front()->isValid(SUMO_ATTR_GEOSHAPE, myGEOAttributeTextField->getText().text())) {
1024  myInspectorFrameParent->myAttributesEditor->getEditedACs().front()->setAttribute(SUMO_ATTR_GEOSHAPE, myGEOAttributeTextField->getText().text(), myInspectorFrameParent->getViewNet()->getUndoList());
1025  myGEOAttributeTextField->setTextColor(FXRGB(0, 0, 0));
1026  } else {
1027  myGEOAttributeTextField->setTextColor(FXRGB(255, 0, 0));
1028  myGEOAttributeTextField->killFocus();
1029  }
1030  } else {
1031  throw ProcessError("myGEOAttributeTextField must be hidden becaurse there isn't GEO Attribute to edit");
1032  }
1033  } else if (obj == myUseGEOCheckButton) {
1034  // update GEO Attribute of entire selection
1035  for (const auto& i : myInspectorFrameParent->myAttributesEditor->getEditedACs()) {
1036  if (myUseGEOCheckButton->getCheck() == 1) {
1037  i->setAttribute(SUMO_ATTR_GEO, "true", myInspectorFrameParent->getViewNet()->getUndoList());
1038  myUseGEOCheckButton->setText("true");
1039  } else {
1040  i->setAttribute(SUMO_ATTR_GEO, "false", myInspectorFrameParent->getViewNet()->getUndoList());
1041  myUseGEOCheckButton->setText("false");
1042  }
1043  }
1044  }
1045  // force refresh values of Attributes editor and NeteditAttributesEditor
1046  myInspectorFrameParent->myAttributesEditor->refreshAttributeEditor(true, true);
1047  myInspectorFrameParent->myNeteditAttributesEditor->refreshNeteditAttributesEditor(true);
1048  }
1049  return 1;
1050 }
1051 
1052 
1053 long
1055  FXDialogBox* helpDialog = new FXDialogBox(this, "GEO attributes Help", GUIDesignDialogBox);
1056  std::ostringstream help;
1057  help
1058  << " SUMO uses the World Geodetic System 84 (WGS84/UTM).\n"
1059  << " For a GEO-referenced network, geo coordinates are represented as pairs of Longitude and Latitude\n"
1060  << " in decimal degrees without extra symbols. (N,W..)\n"
1061  << " - Longitude: East-west position of a point on the Earth's surface.\n"
1062  << " - Latitude: North-south position of a point on the Earth's surface.\n"
1063  << " - CheckBox 'geo' enables or disables saving position in GEO coordinates\n";
1064  new FXLabel(helpDialog, help.str().c_str(), nullptr, GUIDesignLabelFrameInformation);
1065  // "OK"
1066  new FXButton(helpDialog, "OK\t\tclose", GUIIconSubSys::getIcon(ICON_ACCEPT), helpDialog, FXDialogBox::ID_ACCEPT, GUIDesignButtonOK);
1067  helpDialog->create();
1068  helpDialog->show();
1069  return 1;
1070 }
1071 
1072 // ---------------------------------------------------------------------------
1073 // GNEInspectorFrame::TemplateEditor - methods
1074 // ---------------------------------------------------------------------------
1075 
1077  FXGroupBox(inspectorFrameParent->myContentFrame, "Templates", GUIDesignGroupBoxFrame),
1078  myInspectorFrameParent(inspectorFrameParent),
1079  myEdgeTemplate(nullptr) {
1080 
1081  // Create copy template button
1082  myCopyTemplateButton = new FXButton(this, "", nullptr, this, MID_GNE_TEMPLATE_COPY, GUIDesignButton);
1083  myCopyTemplateButton->hide();
1084 
1085  // Create set template button
1086  mySetTemplateButton = new FXButton(this, "Set as Template\t\t", nullptr, this, MID_GNE_TEMPLATE_SET, GUIDesignButton);
1087  mySetTemplateButton->hide();
1088 }
1089 
1090 
1092  if (myEdgeTemplate) {
1093  // delete template
1094  myEdgeTemplate->decRef("GNEInspectorFrame::~GNEInspectorFrame");
1095  if (myEdgeTemplate->unreferenced()) {
1096  delete myEdgeTemplate;
1097  }
1098  }
1099 }
1100 
1101 
1102 void
1104  // show template editor only if we're editing an edge in Network mode
1105  if ((myInspectorFrameParent->getViewNet()->getEditModes().currentSupermode == GNE_SUPERMODE_NETWORK) &&
1106  (myInspectorFrameParent->myAttributesEditor->getEditedACs().front()->getTagProperty().getTag() == SUMO_TAG_EDGE)) {
1107  show();
1108  // show "Copy Template" (caption supplied via onUpdate)
1109  myCopyTemplateButton->show();
1110  // show "Set As Template"
1111  if (myInspectorFrameParent->myAttributesEditor->getEditedACs().size() == 1) {
1112  mySetTemplateButton->show();
1113  mySetTemplateButton->setText(("Set edge '" + myInspectorFrameParent->myAttributesEditor->getEditedACs().front()->getID() + "' as Template").c_str());
1114  }
1115  }
1116 }
1117 
1118 
1119 void
1121  // hide buttons
1122  myCopyTemplateButton->hide();
1123  mySetTemplateButton->hide();
1124  // hide template editor
1125  hide();
1126 }
1127 
1128 
1129 GNEEdge*
1131  return myEdgeTemplate;
1132 }
1133 
1134 
1135 void
1137  if (myEdgeTemplate) {
1138  myEdgeTemplate->decRef("GNEInspectorFrame::setEdgeTemplate");
1139  if (myEdgeTemplate->unreferenced()) {
1140  delete myEdgeTemplate;
1141  }
1142  }
1143  myEdgeTemplate = tpl;
1144  myEdgeTemplate->incRef("GNEInspectorFrame::setEdgeTemplate");
1145 }
1146 
1147 
1148 long
1150  for (const auto& it : myInspectorFrameParent->myAttributesEditor->getEditedACs()) {
1151  GNEEdge* edge = dynamic_cast<GNEEdge*>(it);
1152  assert(edge);
1153  edge->copyTemplate(myEdgeTemplate, myInspectorFrameParent->getViewNet()->getUndoList());
1154  myInspectorFrameParent->inspectMultisection(myInspectorFrameParent->myAttributesEditor->getEditedACs());
1155  }
1156  return 1;
1157 }
1158 
1159 
1160 long
1162  assert(myInspectorFrameParent->myAttributesEditor->getEditedACs().size() == 1);
1163  GNEEdge* edge = dynamic_cast<GNEEdge*>(myInspectorFrameParent->myAttributesEditor->getEditedACs().front());
1164  assert(edge);
1165  setEdgeTemplate(edge);
1166  return 1;
1167 }
1168 
1169 
1170 long
1171 GNEInspectorFrame::TemplateEditor::onUpdCopyTemplate(FXObject* sender, FXSelector, void*) {
1172  // declare caption for button
1173  FXString caption;
1174  if (myEdgeTemplate) {
1175  if (myInspectorFrameParent->myAttributesEditor->getEditedACs().size() == 1) {
1176  caption = ("Copy '" + myEdgeTemplate->getMicrosimID() + "' into edge '" + myInspectorFrameParent->myAttributesEditor->getEditedACs().front()->getID() + "'").c_str();
1177  } else {
1178  caption = ("Copy '" + myEdgeTemplate->getMicrosimID() + "' into " + toString(myInspectorFrameParent->myAttributesEditor->getEditedACs().size()) + " selected edges").c_str();
1179  }
1180  sender->handle(this, FXSEL(SEL_COMMAND, ID_ENABLE), nullptr);
1181  } else {
1182  caption = "No edge Template Set";
1183  sender->handle(this, FXSEL(SEL_COMMAND, ID_DISABLE), nullptr);
1184  }
1185  sender->handle(this, FXSEL(SEL_COMMAND, FXLabel::ID_SETSTRINGVALUE), (void*)&caption);
1186  return 1;
1187 }
1188 
1189 /****************************************************************************/
GNEInspectorFrame::TemplateEditor::onCmdCopyTemplate
long onCmdCopyTemplate(FXObject *, FXSelector, void *)
copy edge attributes from edge template
Definition: GNEInspectorFrame.cpp:1149
GNEViewParent::getSelectorFrame
GNESelectorFrame * getSelectorFrame() const
get frame for GNE_NMODE_SELECT
Definition: GNEViewParent.cpp:185
MID_GNE_OVERLAPPED_SHOWLIST
show list of overlapped elements
Definition: GUIAppEnum.h:675
GNEFrameModuls::AttributeCarrierHierarchy::hideAttributeCarrierHierarchy
void hideAttributeCarrierHierarchy()
hide AttributeCarrierHierarchy
Definition: GNEFrameModuls.cpp:845
GNEInspectorFrame::inspectMultisection
void inspectMultisection(const std::vector< GNEAttributeCarrier * > &ACs)
Inspect the given multi-selection.
Definition: GNEInspectorFrame.cpp:235
GUIDesignAuxiliarHorizontalFrame
#define GUIDesignAuxiliarHorizontalFrame
design for auxiliar (Without borders) horizontal frame used to pack another frames
Definition: GUIDesigns.h:289
GNEInspectorFrame::NeteditAttributesEditor::myHorizontalFrameCloseShape
FXHorizontalFrame * myHorizontalFrameCloseShape
@frame horizontal frame for close shape
Definition: GNEInspectorFrame.h:196
GNEInspectorFrame::GEOAttributesEditor::myGEOAttributeLabel
FXLabel * myGEOAttributeLabel
Label for GEOAttribute.
Definition: GNEInspectorFrame.h:254
ICON_ACCEPT
Definition: GUIIcons.h:380
GNEInspectorFrame::NeteditAttributesEditor::hideNeteditAttributesEditor
void hideNeteditAttributesEditor()
hide netedit attributes editor
Definition: GNEInspectorFrame.cpp:742
GNEFrameModuls::AttributeCarrierHierarchy::showAttributeCarrierHierarchy
void showAttributeCarrierHierarchy(GNEAttributeCarrier *AC)
show AttributeCarrierHierarchy
Definition: GNEFrameModuls.cpp:834
GNEInspectorFrame::clearInspectedAC
void clearInspectedAC()
Clear all current inspected ACs.
Definition: GNEInspectorFrame.cpp:328
SUMO_ATTR_GEOSHAPE
Definition: SUMOXMLDefinitions.h:814
GNEInspectorFrame::GEOAttributesEditor::~GEOAttributesEditor
~GEOAttributesEditor()
destructor
Definition: GNEInspectorFrame.cpp:907
GNEInspectorFrame::myBackButton
FXButton * myBackButton
back Button
Definition: GNEInspectorFrame.h:426
GUIDesignTextFieldNCol
#define GUIDesignTextFieldNCol
Num of column of text field.
Definition: GUIDesigns.h:58
GNEEdge::copyTemplate
void copyTemplate(GNEEdge *tpl, GNEUndoList *undolist)
copy edge attributes from tpl
Definition: GNEEdge.cpp:808
GNEViewNetHelper::KeyPressed::shiftKeyPressed
bool shiftKeyPressed() const
check if SHIFT key was pressed during click
Definition: GNEViewNetHelper.cpp:387
GNEInspectorFrame::OverlappedInspection::previousElement
bool previousElement(const Position &clickedPosition)
try to go to previous element if clicked position is near to saved position
Definition: GNEInspectorFrame.cpp:494
MID_GNE_INSPECTORFRAME_GOBACK
go back to the previous element
Definition: GUIAppEnum.h:713
GNEInspectorFrame::inspectSingleElement
void inspectSingleElement(GNEAttributeCarrier *AC)
Inspect a single element.
Definition: GNEInspectorFrame.cpp:211
GNEInspectorFrame::onCmdGoBack
long onCmdGoBack(FXObject *, FXSelector, void *)
called when user toogle the go back button
Definition: GNEInspectorFrame.cpp:357
GUIDesignLabelAttribute
#define GUIDesignLabelAttribute
label extended over the matrix column with thick frame and height of 23
Definition: GUIDesigns.h:186
GNEInspectorFrame::NeteditAttributesEditor::myHorizontalFrameBlockMovement
FXHorizontalFrame * myHorizontalFrameBlockMovement
@frame horizontal frame for block movement
Definition: GNEInspectorFrame.h:178
GNEFrameAttributesModuls::GenericParametersEditor::refreshGenericParametersEditor
void refreshGenericParametersEditor()
refresh netedit attributes
Definition: GNEFrameAttributesModuls.cpp:1689
GNEInspectorFrame::OverlappedInspection::onCmdShowList
long onCmdShowList(FXObject *, FXSelector, void *)
show list of overlapped elements
Definition: GNEInspectorFrame.cpp:544
GNEInspectorFrame::TemplateEditor::onUpdCopyTemplate
long onUpdCopyTemplate(FXObject *, FXSelector, void *)
update the copy button with the name of the template
Definition: GNEInspectorFrame.cpp:1171
GNEInspectorFrame::OverlappedInspection::myCurrentIndexButton
FXButton * myCurrentIndexButton
Button for current index.
Definition: GNEInspectorFrame.h:103
GNEFrameAttributesModuls::AttributesEditor::getEditedACs
const std::vector< GNEAttributeCarrier * > & getEditedACs() const
get current edited ACs
Definition: GNEFrameAttributesModuls.cpp:1546
GNEInspectorFrame::myAttributeCarrierHierarchy
GNEFrameModuls::AttributeCarrierHierarchy * myAttributeCarrierHierarchy
Attribute Carrier Hierarchy.
Definition: GNEInspectorFrame.h:423
GNEFrame::myHeaderLeftFrame
FXHorizontalFrame * myHeaderLeftFrame
fame for left header elements
Definition: GNEFrame.h:129
GNEViewNetHelper::KeyPressed::controlKeyPressed
bool controlKeyPressed() const
check if CONTROL key was pressed during click
Definition: GNEViewNetHelper.cpp:397
MID_GNE_OVERLAPPED_ITEMSELECTED
list item selected in overlapped modul
Definition: GUIAppEnum.h:677
GNEInspectorFrame::myPreviousElementInspect
GNEAttributeCarrier * myPreviousElementInspect
pointer to previous element called by Inspector Frame
Definition: GNEInspectorFrame.h:429
GNEInspectorFrame::NeteditAttributesEditor::refreshNeteditAttributesEditor
void refreshNeteditAttributesEditor(bool forceRefresh)
refresh netedit attributes
Definition: GNEInspectorFrame.cpp:754
GNEInspectorFrame::OverlappedInspection::inspectOverlappedAttributeCarrier
void inspectOverlappedAttributeCarrier()
inspect attributeCarrier correspond to current index
Definition: GNEInspectorFrame.cpp:591
GNEInspectorFrame::inspectClickedElement
void inspectClickedElement(const GNEViewNetHelper::ObjectsUnderCursor &objectsUnderCursor, const Position &clickedPosition)
Inspect a singe element (the front of AC AttributeCarriers of ObjectUnderCursor.
Definition: GNEInspectorFrame.cpp:384
GNENet::getSelectedAttributeCarriers
std::vector< GNEAttributeCarrier * > getSelectedAttributeCarriers(bool ignoreCurrentSupermode)
get all selected attribute carriers (or only relative to current supermode
Definition: GNENet.cpp:2073
SUMO_TAG_LANE
begin/end of the description of a single lane
Definition: SUMOXMLDefinitions.h:50
GUIDesignButtonOK
#define GUIDesignButtonOK
Definition: GUIDesigns.h:114
MID_GNE_OVERLAPPED_NEXT
inspect next element in overlapped modul
Definition: GUIAppEnum.h:671
GNEFrameAttributesModuls::GenericParametersEditor::showGenericParametersEditor
void showGenericParametersEditor(GNEAttributeCarrier *AC)
show netedit attributes editor (used for edit generic parameters of an existent AC)
Definition: GNEFrameAttributesModuls.cpp:1637
GNEAttributeCarrier::selectAttributeCarrier
virtual void selectAttributeCarrier(bool changeFlag=true)=0
GNEFrame
Definition: GNEFrame.h:35
GNEInspectorFrame::myPreviousElementDelete
GNEAttributeCarrier * myPreviousElementDelete
pointer to previous element called by Delete Frame
Definition: GNEInspectorFrame.h:432
GNEViewNet
Definition: GNEViewNet.h:43
GNEViewParent::getDeleteFrame
GNEDeleteFrame * getDeleteFrame() const
get frame for GNE_NMODE_DELETE
Definition: GNEViewParent.cpp:221
GNEInspectorFrame::GEOAttributesEditor::myUseGEOLabel
FXLabel * myUseGEOLabel
Label for use GEO.
Definition: GNEInspectorFrame.h:263
GNEInspectorFrame::myGEOAttributesEditor
GEOAttributesEditor * myGEOAttributesEditor
GEO Attributes editor.
Definition: GNEInspectorFrame.h:414
GNEInspectorFrame::NeteditAttributesEditor::myHorizontalFrameAdditionalParent
FXHorizontalFrame * myHorizontalFrameAdditionalParent
@frame horizontal frame for change additional parent
Definition: GNEInspectorFrame.h:169
GNEInspectorFrame::GEOAttributesEditor::refreshGEOAttributesEditor
void refreshGEOAttributesEditor(bool forceRefresh)
refresh GEO attributes editor
Definition: GNEInspectorFrame.cpp:991
GUIDesigns.h
ICON_BIGARROWLEFT
Definition: GUIIcons.h:186
GUIDesignTextField
#define GUIDesignTextField
Definition: GUIDesigns.h:34
MID_GNE_SET_ATTRIBUTE
attribute edited
Definition: GUIAppEnum.h:619
GNEInspectorFrame::NeteditAttributesEditor::myCheckBoxCloseShape
FXCheckButton * myCheckBoxCloseShape
pointer to check box "Block movement"
Definition: GNEInspectorFrame.h:202
GUIIconSubSys::getIcon
static FXIcon * getIcon(GUIIcon which)
returns a icon previously defined in the enum GUIIcon
Definition: GUIIconSubSys.cpp:602
GNEInspectorFrame::NeteditAttributesEditor::myLabelCloseShape
FXLabel * myLabelCloseShape
Label for close shape.
Definition: GNEInspectorFrame.h:199
GNEInspectorFrame::TemplateEditor::~TemplateEditor
~TemplateEditor()
destructor
Definition: GNEInspectorFrame.cpp:1091
GNEInspectorFrame::attributeUpdated
void attributeUpdated()
function called after set a valid attribute in AttributeEditor
Definition: GNEInspectorFrame.cpp:399
GNEInspectorFrame::inspectFromDeleteFrame
void inspectFromDeleteFrame(GNEAttributeCarrier *AC, GNEAttributeCarrier *previousElement, bool previousElementWasMarked)
inspect called from DeleteFrame
Definition: GNEInspectorFrame.cpp:313
GNEFrame::myContentFrame
FXVerticalFrame * myContentFrame
Vertical frame that holds all widgets of frame.
Definition: GNEFrame.h:123
GNEInspectorFrame::OverlappedInspection::overlappedInspectionShown
bool overlappedInspectionShown() const
check if overlappedInspection modul is shown
Definition: GNEInspectorFrame.cpp:464
GNEInspectorFrame::GEOAttributesEditor::showGEOAttributesEditor
void showGEOAttributesEditor()
show GEO attributes editor
Definition: GNEInspectorFrame.cpp:911
GNEInspectorFrame::NeteditAttributesEditor::onCmdSetNeteditAttribute
long onCmdSetNeteditAttribute(FXObject *, FXSelector, void *)
Definition: GNEInspectorFrame.cpp:815
GUIDesignButton
#define GUIDesignButton
Definition: GUIDesigns.h:66
GNEAttributeCarrier::TagProperties::getTag
SumoXMLTag getTag() const
get Tag vinculated with this attribute Property
Definition: GNEAttributeCarrier.cpp:521
GNEFrameAttributesModuls::AttributesEditor
Definition: GNEFrameAttributesModuls.h:305
GUIAppEnum.h
MID_GNE_TEMPLATE_SET
set object as template
Definition: GUIAppEnum.h:661
GUIDesignLabelFrameInformation
#define GUIDesignLabelFrameInformation
label extended over frame without thick and with text justify to left, used to show information in fr...
Definition: GUIDesigns.h:210
GUIDesignButtonRectangular
#define GUIDesignButtonRectangular
little button rectangular (46x23) used in frames (For example, in "help" buttons)
Definition: GUIDesigns.h:72
GNEEdge
A road/street connecting two junctions (netedit-version)
Definition: GNEEdge.h:50
GNEInspectorFrame::OverlappedInspection::~OverlappedInspection
~OverlappedInspection()
destructor
Definition: GNEInspectorFrame.cpp:431
GNEInspectorFrame::GEOAttributesEditor::myGEOAttributeTextField
FXTextField * myGEOAttributeTextField
textField for GEOAttribute
Definition: GNEInspectorFrame.h:257
GNEDeleteFrame.h
MID_HELP
help button
Definition: GUIAppEnum.h:536
GNEViewNet::getNet
GNENet * getNet() const
get the net object
Definition: GNEViewNet.cpp:927
GNEInspectorFrame::TemplateEditor::mySetTemplateButton
FXButton * mySetTemplateButton
set template button
Definition: GNEInspectorFrame.h:324
GNEInspectorFrame::NeteditAttributesEditor::myLabelBlockMovement
FXLabel * myLabelBlockMovement
Label for Check blocked movement.
Definition: GNEInspectorFrame.h:181
GNEFrame::focusUpperElement
void focusUpperElement()
focus upper element of frame
Definition: GNEFrame.cpp:102
GNEInspectorFrame::NeteditAttributesEditor::showNeteditAttributesEditor
void showNeteditAttributesEditor()
show netedit attributes editor
Definition: GNEInspectorFrame.cpp:645
GNEInspectorFrame::~GNEInspectorFrame
~GNEInspectorFrame()
Destructor.
Definition: GNEInspectorFrame.cpp:116
GNEInspectorFrame::GEOAttributesEditor::GEOAttributesEditor
GEOAttributesEditor()
FOX needs this.
Definition: GNEInspectorFrame.h:244
GNEInspectorFrame::NeteditAttributesEditor::myTextFieldAdditionalParent
FXTextField * myTextFieldAdditionalParent
pointer for change additional parent
Definition: GNEInspectorFrame.h:175
GNEInspectorFrame::TemplateEditor::getEdgeTemplate
GNEEdge * getEdgeTemplate() const
get the template edge (to copy attributes from)
Definition: GNEInspectorFrame.cpp:1130
GNEInspectorFrame::NeteditAttributesEditor::myHorizontalFrameBlockShape
FXHorizontalFrame * myHorizontalFrameBlockShape
@frame horizontal frame for block shape
Definition: GNEInspectorFrame.h:187
GNEAttributeCarrier::getTagProperty
const TagProperties & getTagProperty() const
get Tag Property assigned to this object
Definition: GNEAttributeCarrier.cpp:1171
GNEInspectorFrame::OverlappedInspection::myOverlappedElementList
FXList * myOverlappedElementList
list of overlapped elements
Definition: GNEInspectorFrame.h:109
GNEInspectorFrame::NeteditAttributesEditor::myLabelBlockShape
FXLabel * myLabelBlockShape
Label for Check blocked shape.
Definition: GNEInspectorFrame.h:190
GNEInspectorFrame::NeteditAttributesEditor::onCmdNeteditAttributeHelp
long onCmdNeteditAttributeHelp(FXObject *, FXSelector, void *)
Called when user press the help button.
Definition: GNEInspectorFrame.cpp:880
GeoConvHelper::getFinal
static const GeoConvHelper & getFinal()
the coordinate transformation for writing the location element and for tracking the original coordina...
Definition: GeoConvHelper.h:106
GNEViewNetHelper::ObjectsUnderCursor
class used to group all variables related with objects under cursor after a click over view
Definition: GNEViewNetHelper.h:149
GNEInspectorFrame::NeteditAttributesEditor::myLabelAdditionalParent
FXLabel * myLabelAdditionalParent
Label for additional parent.
Definition: GNEInspectorFrame.h:172
GNEInspectorFrame::myGenericParametersEditor
GNEFrameAttributesModuls::GenericParametersEditor * myGenericParametersEditor
Generic parameters editor.
Definition: GNEInspectorFrame.h:417
GNEViewNet::getNetworkViewOptions
const GNEViewNetHelper::NetworkViewOptions & getNetworkViewOptions() const
get network view options
Definition: GNEViewNet.cpp:411
GNEInspectorFrame::OverlappedInspection::onCmdNextElement
long onCmdNextElement(FXObject *, FXSelector, void *)
Inspect next Element (from top to bot)
Definition: GNEInspectorFrame.cpp:530
GNEViewNet.h
GNEInspectorFrame::NeteditAttributesEditor::myCheckBoxBlockMovement
FXCheckButton * myCheckBoxBlockMovement
pointer to check box "Block movement"
Definition: GNEInspectorFrame.h:184
GNEInspectorFrame::GEOAttributesEditor::onCmdGEOAttributeHelp
long onCmdGEOAttributeHelp(FXObject *, FXSelector, void *)
Called when user press the help button.
Definition: GNEInspectorFrame.cpp:1054
GNEInspectorFrame::TemplateEditor::showTemplateEditor
void showTemplateEditor()
show template editor
Definition: GNEInspectorFrame.cpp:1103
SUMO_TAG_EDGE
begin/end of the description of an edge
Definition: SUMOXMLDefinitions.h:48
GNEInspectorFrame::OverlappedInspection::myPreviousElement
FXButton * myPreviousElement
Previous element button.
Definition: GNEInspectorFrame.h:100
GNE_ATTR_CLOSE_SHAPE
Close shape of a polygon (Used by GNEPolys)
Definition: SUMOXMLDefinitions.h:982
GNE_SUPERMODE_NETWORK
Network mode (Edges, junctions, etc..)
Definition: GNEViewNetHelper.h:47
ProcessError
Definition: UtilExceptions.h:40
GNEInspectorFrame::updateFrameAfterUndoRedo
void updateFrameAfterUndoRedo()
function called after undo/redo in the current frame (can be reimplemented in frame children)
Definition: GNEInspectorFrame.cpp:373
GNEInspectorFrame::getTemplateEditor
TemplateEditor * getTemplateEditor() const
get template editor
Definition: GNEInspectorFrame.cpp:345
GNEInspectorFrame::myTemplateEditor
TemplateEditor * myTemplateEditor
Template editor.
Definition: GNEInspectorFrame.h:420
GNEViewNet::getKeyPressed
const GNEViewNetHelper::KeyPressed & getKeyPressed() const
get Key Pressed modul
Definition: GNEViewNet.cpp:423
GUIDesignCheckButton
#define GUIDesignCheckButton
checkButton placed in left position
Definition: GUIDesigns.h:131
Position
A point in 2D or 3D with translation and scaling methods.
Definition: Position.h:39
GNEInspectorFrame::GEOAttributesEditor
Definition: GNEInspectorFrame.h:212
GNEEdge.h
GUIDesignButtonIconRectangular
#define GUIDesignButtonIconRectangular
button only with icon (46x23)
Definition: GUIDesigns.h:78
GNE_ATTR_BLOCK_SHAPE
block shape of a graphic element (Used mainly in GNEShapes)
Definition: SUMOXMLDefinitions.h:980
GNEFrame::myViewNet
GNEViewNet * myViewNet
View Net.
Definition: GNEFrame.h:120
GNEFrameModuls::AttributeCarrierHierarchy
Definition: GNEFrameModuls.h:291
GNEInspectorFrame::myAttributesEditor
GNEFrameAttributesModuls::AttributesEditor * myAttributesEditor
Attribute editor.
Definition: GNEInspectorFrame.h:408
GNEInspectorFrame::OverlappedInspection::onCmdListItemSelected
long onCmdListItemSelected(FXObject *, FXSelector, void *)
called when a list item is selected
Definition: GNEInspectorFrame.cpp:558
SUMO_ATTR_GEOPOSITION
Definition: SUMOXMLDefinitions.h:815
GUIDesignGroupBoxFrame
#define GUIDesignGroupBoxFrame
Group box design extended over frame.
Definition: GUIDesigns.h:255
GNEInspectorFrame::NeteditAttributesEditor::~NeteditAttributesEditor
~NeteditAttributesEditor()
destructor
Definition: GNEInspectorFrame.cpp:641
GNEFrameAttributesModuls::AttributesEditor::hideAttributesEditorModul
void hideAttributesEditorModul()
hide attribute editor
Definition: GNEFrameAttributesModuls.cpp:1492
GNEDeleteFrame::show
void show()
show delete frame
Definition: GNEDeleteFrame.cpp:100
GNEInspectorFrame::NeteditAttributesEditor::myHelpButton
FXButton * myHelpButton
button for help
Definition: GNEInspectorFrame.h:205
GNEInspectorFrame::GEOAttributesEditor::myUseGEOFrame
FXHorizontalFrame * myUseGEOFrame
horizontal frame for use GEO
Definition: GNEInspectorFrame.h:260
GNEInspectorFrame::OverlappedInspection::hideOverlappedInspection
void hideOverlappedInspection()
hide template editor
Definition: GNEInspectorFrame.cpp:457
GNEInspectorFrame::GEOAttributesEditor::onCmdSetGEOAttribute
long onCmdSetGEOAttribute(FXObject *, FXSelector, void *)
Called when user change the current GEO Attribute.
Definition: GNEInspectorFrame.cpp:1007
GNELane.h
GNEInspectorFrame::OverlappedInspection::showOverlappedInspection
void showOverlappedInspection(const GNEViewNetHelper::ObjectsUnderCursor &objectsUnderCursor, const Position &clickedPosition)
show template editor
Definition: GNEInspectorFrame.cpp:435
GNEInspectorFrame::NeteditAttributesEditor::NeteditAttributesEditor
NeteditAttributesEditor()
FOX needs this.
Definition: GNEInspectorFrame.h:162
GNEInspectorFrame::getAttributesEditor
GNEFrameAttributesModuls::AttributesEditor * getAttributesEditor() const
get AttributesEditor
Definition: GNEInspectorFrame.cpp:339
GNEAttributeCarrier::isAttributeCarrierSelected
virtual bool isAttributeCarrierSelected() const =0
check if attribute carrier is selected
GNEInspectorFrame::myNeteditAttributesEditor
NeteditAttributesEditor * myNeteditAttributesEditor
Netedit Attributes editor.
Definition: GNEInspectorFrame.h:411
GNEViewNetHelper::ObjectsUnderCursor::getGlTypeFront
GUIGlObjectType getGlTypeFront() const
get front GUI GL object type (or a pointer to nullptr if there isn't)
Definition: GNEViewNetHelper.cpp:209
GNEInspectorFrame::myOverlappedInspection
OverlappedInspection * myOverlappedInspection
Overlapped Inspection.
Definition: GNEInspectorFrame.h:405
GNEViewParent.h
GNEInspectorFrame::OverlappedInspection::checkSavedPosition
bool checkSavedPosition(const Position &clickedPosition) const
check if given position is near to saved position
Definition: GNEInspectorFrame.cpp:470
toString
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
Definition: ToString.h:48
GNESelectorFrame.h
GNEInspectorFrame::GEOAttributesEditor::myHelpButton
FXButton * myHelpButton
button for help
Definition: GNEInspectorFrame.h:269
GNEInspectorFrame::TemplateEditor::setEdgeTemplate
void setEdgeTemplate(GNEEdge *tpl)
seh the template edge (we assume shared responsibility via reference counting)
Definition: GNEInspectorFrame.cpp:1136
GNEInspectorFrame::OverlappedInspection::myNextElement
FXButton * myNextElement
Next element button.
Definition: GNEInspectorFrame.h:106
GNEInspectorFrame::NeteditAttributesEditor::myCheckBoxBlockShape
FXCheckButton * myCheckBoxBlockShape
pointer to check box "Block Shape"
Definition: GNEInspectorFrame.h:193
GNEInspectorFrame::NeteditAttributesEditor
Definition: GNEInspectorFrame.h:131
MID_GNE_TEMPLATE_COPY
copy template
Definition: GUIAppEnum.h:663
MID_GNE_OVERLAPPED_PREVIOUS
inspect previous element in overlapped modul
Definition: GUIAppEnum.h:673
GNEInspectorFrame::inspectChild
void inspectChild(GNEAttributeCarrier *AC, GNEAttributeCarrier *previousElement)
inspect child of already inspected element
Definition: GNEInspectorFrame.cpp:299
GNE_SUPERMODE_DEMAND
Demanding mode (Routes, Vehicles etc..)
Definition: GNEViewNetHelper.h:49
GNEInspectorFrame::hide
void hide()
hide inspector frame
Definition: GNEInspectorFrame.cpp:128
GNEInspectorFrame::TemplateEditor::hideTemplateEditor
void hideTemplateEditor()
hide template editor
Definition: GNEInspectorFrame.cpp:1120
GNEViewNetHelper::ObjectsUnderCursor::getDemandElementFront
GNEDemandElement * getDemandElementFront() const
get front net element element (or a pointer to nullptr if there isn't)
Definition: GNEViewNetHelper.cpp:259
GNE_ATTR_BLOCK_MOVEMENT
block movement of a graphic element
Definition: SUMOXMLDefinitions.h:978
GNEFrameAttributesModuls::AttributesEditor::refreshAttributeEditor
void refreshAttributeEditor(bool forceRefreshShape, bool forceRefreshPosition)
refresh attribute editor (only the valid values will be refresh)
Definition: GNEFrameAttributesModuls.cpp:1501
GNEInspectorFrame::TemplateEditor
Definition: GNEInspectorFrame.h:276
GNEReferenceCounter::incRef
void incRef(const std::string &debugMsg="")
Increarse reference.
Definition: GNEReferenceCounter.h:68
GNEViewNetHelper::NetworkViewOptions::selectEdges
bool selectEdges() const
check if select edges checkbox is enabled
Definition: GNEViewNetHelper.cpp:1626
GNEInspectorFrame::OverlappedInspection::onCmdOverlappingHelp
long onCmdOverlappingHelp(FXObject *, FXSelector, void *)
Called when user press the help button.
Definition: GNEInspectorFrame.cpp:572
ICON_BIGARROWRIGHT
Definition: GUIIcons.h:187
GNEInspectorFrame::myPreviousElementDeleteWasMarked
bool myPreviousElementDeleteWasMarked
flag to ckec if myPreviousElementDelete was marked in Delete Frame
Definition: GNEInspectorFrame.h:435
GNEInspectorFrame::OverlappedInspection::nextElement
bool nextElement(const Position &clickedPosition)
try to go to next element if clicked position is near to saved position
Definition: GNEInspectorFrame.cpp:476
GNEViewNet::setDottedAC
void setDottedAC(const GNEAttributeCarrier *AC)
set attributeCarrier under cursor
Definition: GNEViewNet.cpp:945
GNEFrameAttributesModuls::GenericParametersEditor::hideGenericParametersEditor
void hideGenericParametersEditor()
hide netedit attributes editor
Definition: GNEFrameAttributesModuls.cpp:1681
GNEInspectorFrame::processDemandSupermodeClick
bool processDemandSupermodeClick(const Position &clickedPosition, GNEViewNetHelper::ObjectsUnderCursor &objectsUnderCursor)
process click over Viewnet in Supermode Demand
Definition: GNEInspectorFrame.cpp:175
GNEInspectorFrame::OverlappedInspection
FOX-declaration.
Definition: GNEInspectorFrame.h:43
GNEFrameAttributesModuls::GenericParametersEditor
Definition: GNEFrameAttributesModuls.h:398
config.h
GNEInspectorFrame::GEOAttributesEditor::myUseGEOCheckButton
FXCheckButton * myUseGEOCheckButton
checkBox for use GEO
Definition: GNEInspectorFrame.h:266
GNEInspectorFrame::OverlappedInspection::onCmdPreviousElement
long onCmdPreviousElement(FXObject *, FXSelector, void *)
Inspect previous element (from top to bot)
Definition: GNEInspectorFrame.cpp:512
FXDEFMAP
FXDEFMAP(GNEInspectorFrame) GNEInspectorFrameMap[]
GNEViewNetHelper::ObjectsUnderCursor::getClickedAttributeCarriers
const std::vector< GNEAttributeCarrier * > & getClickedAttributeCarriers() const
get vector with clicked ACs
Definition: GNEViewNetHelper.cpp:349
GNEInspectorFrame::OverlappedInspection::myHelpButton
FXButton * myHelpButton
button for help
Definition: GNEInspectorFrame.h:112
GNEViewNetHelper::ObjectsUnderCursor::getAttributeCarrierFront
GNEAttributeCarrier * getAttributeCarrierFront() const
get front attribute carrier (or a pointer to nullptr if there isn't)
Definition: GNEViewNetHelper.cpp:219
GNESelectorFrame::LockGLObjectTypes::IsObjectTypeLocked
bool IsObjectTypeLocked(const GUIGlObjectType type) const
check if an object is locked
Definition: GNESelectorFrame.cpp:580
GNEInspectorFrame.h
GNEFrameModuls::AttributeCarrierHierarchy::refreshAttributeCarrierHierarchy
void refreshAttributeCarrierHierarchy()
refresh AttributeCarrierHierarchy
Definition: GNEFrameModuls.cpp:863
GNEInspectorFrame::getOverlappedInspection
OverlappedInspection * getOverlappedInspection() const
get OverlappedInspection modul
Definition: GNEInspectorFrame.cpp:351
GNEInspectorFrame::TemplateEditor::onCmdSetTemplate
long onCmdSetTemplate(FXObject *, FXSelector, void *)
set current edge as new template
Definition: GNEInspectorFrame.cpp:1161
GNEInspectorFrame::GEOAttributesEditor::hideGEOAttributesEditor
void hideGEOAttributesEditor()
hide GEO attributes editor
Definition: GNEInspectorFrame.cpp:981
GNEInspectorFrame::TemplateEditor::TemplateEditor
TemplateEditor()
FOX needs this.
Definition: GNEInspectorFrame.h:314
GNEInspectorFrame::TemplateEditor::myCopyTemplateButton
FXButton * myCopyTemplateButton
copy template button
Definition: GNEInspectorFrame.h:321
GNEFrame::show
virtual void show()
show Frame
Definition: GNEFrame.cpp:108
GUIDesignListSingleElement
#define GUIDesignListSingleElement
design for FXList sthat only allow a single selected elements selected
Definition: GUIDesigns.h:529
GNEInspectorFrame
Definition: GNEInspectorFrame.h:34
GNEAttributeCarrier
Definition: GNEAttributeCarrier.h:54
GNEFrame::getFrameHeaderLabel
FXLabel * getFrameHeaderLabel() const
get the label for the frame's header
Definition: GNEFrame.cpp:139
SUMO_ATTR_GEO
Definition: SUMOXMLDefinitions.h:813
GNEFrame::hide
virtual void hide()
hide Frame
Definition: GNEFrame.cpp:117
GNEInspectorFrame::GEOAttributesEditor::myGEOAttributeFrame
FXHorizontalFrame * myGEOAttributeFrame
horizontal frame for GEOAttribute
Definition: GNEInspectorFrame.h:251
GNENet.h
GNEViewNet::getViewParent
GNEViewParent * getViewParent() const
get the net object
Definition: GNEViewNet.cpp:921
GNESelectorFrame::getLockGLObjectTypes
LockGLObjectTypes * getLockGLObjectTypes() const
get selected items Modul
Definition: GNESelectorFrame.cpp:460
GNEAttributeCarrier::unselectAttributeCarrier
virtual void unselectAttributeCarrier(bool changeFlag=true)=0
unselect attribute carrier using GUIGlobalSelection
GNEInspectorFrame::processNetworkSupermodeClick
bool processNetworkSupermodeClick(const Position &clickedPosition, GNEViewNetHelper::ObjectsUnderCursor &objectsUnderCursor)
process click over Viewnet in Supermode Network
Definition: GNEInspectorFrame.cpp:135
GNEViewNetHelper::ObjectsUnderCursor::swapLane2Edge
void swapLane2Edge()
swap lane to edge
Definition: GNEViewNetHelper.cpp:172
GNEUndoList.h
GNEInspectorFrame::show
void show()
show inspector frame
Definition: GNEInspectorFrame.cpp:120
GNEInspectorFrame::OverlappedInspection::OverlappedInspection
OverlappedInspection()
FOX needs this.
Definition: GNEInspectorFrame.h:93
GUIDesignDialogBox
#define GUIDesignDialogBox
Definition: GUIDesigns.h:449
GNE_ATTR_PARENT
parent of an additional element
Definition: SUMOXMLDefinitions.h:984
GNEFrameAttributesModuls::AttributesEditor::showAttributeEditorModul
void showAttributeEditorModul(const std::vector< GNEAttributeCarrier * > &ACs, bool includeExtended)
show attributes of multiple ACs
Definition: GNEFrameAttributesModuls.cpp:1429