77FXIMPLEMENT(
GNEInspectorFrame, FXVerticalFrame, GNEInspectorFrameMap, ARRAYNUMBER(GNEInspectorFrameMap))
94 myInspectorFrameParent(inspectorFrameParent) {
99 myLabelParentAdditional =
new FXLabel(getCollapsableFrame(),
"Parent",
nullptr,
GUIDesignLabelThick(JUSTIFY_NORMAL));
102 inspectorFrameParent->getViewNet()->getViewParent()->getGNEAppWindows()->getStaticTooltipMenu(),
119 const auto& ACs = myInspectorFrameParent->getViewNet()->getInspectedAttributeCarriers();
121 if (ACs.size() > 0) {
123 myTextFieldParentAdditional->enable();
124 myCheckBoxCloseShape->enable();
126 const auto& tagValue = ACs.front()->getTagProperty();
128 if (ACs.size() == 1) {
132 myMarkFrontElementButton->show();
134 if (myInspectorFrameParent->getViewNet()->getFrontAttributeCarrier() == ACs.front()) {
135 myMarkFrontElementButton->disable();
137 myMarkFrontElementButton->enable();
141 if (tagValue.canCloseShape()) {
146 for (
const auto& inspectedAC : ACs) {
150 myHorizontalFrameCloseShape->show();
152 myHelpButton->show();
155 myCheckBoxCloseShape->setCheck(
true);
156 myCheckBoxCloseShape->setText(
"true");
158 myCheckBoxCloseShape->setCheck(
false);
159 myCheckBoxCloseShape->setText(
"false");
163 if (tagValue.isChild() && tagValue.canBeReparent()) {
167 std::set<std::string> parents;
168 for (
const auto& inspectedAC : ACs) {
172 myLabelParentAdditional->show();
173 myTextFieldParentAdditional->show();
174 mySetNewParentButton->show();
176 mySetNewParentButton->setChecked(
false);
177 mySetNewParentButton->setText(
TL(
"Set new parent"));
182 myHelpButton->show();
184 myLabelParentAdditional->setText((parentTagProperty.getTagStr() +
" parent").c_str());
185 myTextFieldParentAdditional->setText(
toString(parents).c_str());
189 myTextFieldParentAdditional->disable();
190 myCheckBoxCloseShape->disable();
199 myLabelParentAdditional->hide();
200 myTextFieldParentAdditional->hide();
201 mySetNewParentButton->hide();
202 myHorizontalFrameCloseShape->hide();
203 myMarkFrontElementButton->hide();
204 myHelpButton->hide();
213 const auto& ACs = myInspectorFrameParent->myAttributesEditor->getFrameParent()->getViewNet()->getInspectedAttributeCarriers();
214 if (ACs.size() > 0) {
216 if (myInspectorFrameParent->getViewNet()->getFrontAttributeCarrier() == ACs.front()) {
217 myMarkFrontElementButton->disable();
219 myMarkFrontElementButton->enable();
222 if (myHorizontalFrameCloseShape->shown()) {
225 for (
const auto& i : ACs) {
230 myCheckBoxCloseShape->setCheck(
true);
231 myCheckBoxCloseShape->setText(
"true");
233 myCheckBoxCloseShape->setCheck(
false);
234 myCheckBoxCloseShape->setText(
"false");
238 if (myTextFieldParentAdditional->shown() && ((myTextFieldParentAdditional->getTextColor() == FXRGB(0, 0, 0)) || forceRefresh)) {
240 myLabelParentAdditional->setText((
toString(ACs.front()->getTagProperty().getParentTags().front()) +
" parent").c_str());
241 myTextFieldParentAdditional->setText(ACs.front()->getAttribute(
GNE_ATTR_PARENT).c_str());
252 return (mySetNewParentButton->shown() && mySetNewParentButton->amChecked());
259 const auto& ACs = myInspectorFrameParent->myAttributesEditor->getFrameParent()->getViewNet()->getInspectedAttributeCarriers();
261 if ((ACs.size() > 0) && clickedAC) {
263 for (
const auto& parentTag : ACs.front()->getTagProperty().getParentTags()) {
266 if (ACs.size() > 1) {
267 myInspectorFrameParent->myViewNet->getUndoList()->begin(ACs.front(),
"Change multiple attributes");
270 for (
const auto& AC : ACs) {
271 AC->setAttribute(
GNE_ATTR_PARENT, clickedAC->
getID(), myInspectorFrameParent->myViewNet->getUndoList());
274 if (ACs.size() > 1) {
275 myInspectorFrameParent->myViewNet->getUndoList()->end();
280 refreshNeteditAttributesEditor(
true);
289 if (mySetNewParentButton->amChecked()) {
290 onCmdSetNeteditAttribute(mySetNewParentButton, 0,
nullptr);
297 const auto& ACs = myInspectorFrameParent->myAttributesEditor->getFrameParent()->getViewNet()->getInspectedAttributeCarriers();
299 if (ACs.size() > 0) {
301 if (ACs.size() > 1) {
302 myInspectorFrameParent->myViewNet->getUndoList()->begin(ACs.front(),
"Change multiple attributes");
304 if (obj == mySetNewParentButton) {
305 if (mySetNewParentButton->amChecked()) {
306 mySetNewParentButton->setText(
TL(
"Set new parent"));
307 mySetNewParentButton->setChecked(
false);
309 mySetNewParentButton->setText((
"Click over " +
toString(ACs.front()->getTagProperty().getParentTags().front())).c_str());
310 mySetNewParentButton->setChecked(
true);
312 }
else if (obj == myCheckBoxCloseShape) {
314 for (
const auto& AC : ACs) {
315 if (myCheckBoxCloseShape->getCheck() == 1) {
316 AC->setAttribute(
GNE_ATTR_CLOSE_SHAPE,
"true", myInspectorFrameParent->myViewNet->getUndoList());
317 myCheckBoxCloseShape->setText(
"true");
319 AC->setAttribute(
GNE_ATTR_CLOSE_SHAPE,
"false", myInspectorFrameParent->myViewNet->getUndoList());
320 myCheckBoxCloseShape->setText(
"false");
323 }
else if (obj == myTextFieldParentAdditional) {
324 if (ACs.front()->isValid(
GNE_ATTR_PARENT, myTextFieldParentAdditional->getText().text())) {
326 for (
const auto& AC : ACs) {
327 AC->setAttribute(
GNE_ATTR_PARENT, myTextFieldParentAdditional->getText().text(), myInspectorFrameParent->myViewNet->getUndoList());
329 myTextFieldParentAdditional->setTextColor(FXRGB(0, 0, 0));
330 myTextFieldParentAdditional->killFocus();
332 myTextFieldParentAdditional->setTextColor(FXRGB(255, 0, 0));
336 if (ACs.size() > 1) {
337 myInspectorFrameParent->myViewNet->getUndoList()->end();
340 myInspectorFrameParent->myAttributesEditor->refreshAttributeEditor(
true,
true);
341 myInspectorFrameParent->myGEOAttributesEditor->refreshGEOAttributesEditor(
true);
350 if (myInspectorFrameParent->myAttributesEditor->getFrameParent()->getViewNet()->getInspectedAttributeCarriers().size() == 1) {
352 myInspectorFrameParent->getViewNet()->setFrontAttributeCarrier(myInspectorFrameParent->myAttributesEditor->getFrameParent()->getViewNet()->getInspectedAttributeCarriers().front());
354 myMarkFrontElementButton->disable();
363 FXDialogBox* additionalNeteditAttributesHelpDialog =
new FXDialogBox(getCollapsableFrame(),
"Netedit Attributes Help",
GUIDesignDialogBox);
366 std::ostringstream help;
368 <<
TL(
"- Mark as front element: Mark element as front element (Will be drawn over all other elements)\n")
369 <<
TL(
"- Block movement: disable movement in move mode\n")
370 <<
TL(
"- Block shape: Disable moving of shape's vertices and edges. Entire shape can be moved'.\n")
371 <<
TL(
"- Close shape: Add or remove the last vertex with the same position of first edge'.");
383 WRITE_DEBUG(
"Opening NeteditAttributesEditor help dialog");
385 additionalNeteditAttributesHelpDialog->create();
387 additionalNeteditAttributesHelpDialog->show(PLACEMENT_CURSOR);
391 getApp()->runModalFor(additionalNeteditAttributesHelpDialog);
393 WRITE_DEBUG(
"Closing NeteditAttributesEditor help dialog");
403 myInspectorFrameParent(inspectorFrameParent) {
426 if (myInspectorFrameParent->myAttributesEditor->getFrameParent()->getViewNet()->getInspectedAttributeCarriers().size() > 0) {
428 myGEOAttributeTextField->enable();
429 myUseGEOCheckButton->enable();
431 const auto& tagProperty = myInspectorFrameParent->myAttributesEditor->getFrameParent()->getViewNet()->getInspectedAttributeCarriers().front()->getTagProperty();
433 if (tagProperty.hasGEOShape()) {
438 for (
const auto& i : myInspectorFrameParent->myAttributesEditor->getFrameParent()->getViewNet()->getInspectedAttributeCarriers()) {
439 value &= GNEAttributeCarrier::parse<bool>(i->getAttribute(
SUMO_ATTR_GEO));
442 myUseGEOFrame->show();
445 myUseGEOCheckButton->enable();
447 myUseGEOCheckButton->setCheck(
true);
448 myUseGEOCheckButton->setText(
"true");
450 myUseGEOCheckButton->setCheck(
false);
451 myUseGEOCheckButton->setText(
"false");
454 myUseGEOCheckButton->disable();
456 if (tagProperty.hasGEOShape() && myInspectorFrameParent->myAttributesEditor->getFrameParent()->getViewNet()->getInspectedAttributeCarriers().size() == 1) {
457 myGEOAttributeFrame->show();
459 myGEOAttributeTextField->setTextColor(FXRGB(0, 0, 0));
462 myGEOAttributeTextField->enable();
463 myGEOAttributeTextField->setText(myInspectorFrameParent->myAttributesEditor->getFrameParent()->getViewNet()->getInspectedAttributeCarriers().front()->getAttribute(
SUMO_ATTR_GEOSHAPE).c_str());
465 myGEOAttributeTextField->disable();
466 myGEOAttributeTextField->setText(
TL(
"No geo-conversion defined"));
471 if (
GNEFrameAttributeModules::isSupermodeValid(myInspectorFrameParent->getViewNet(), myInspectorFrameParent->myAttributesEditor->getFrameParent()->getViewNet()->getInspectedAttributeCarriers().front()) ==
false) {
472 myGEOAttributeTextField->disable();
473 myUseGEOCheckButton->disable();
482 myGEOAttributeFrame->hide();
483 myUseGEOFrame->hide();
492 const auto& tagProperty = myInspectorFrameParent->myAttributesEditor->getFrameParent()->getViewNet()->getInspectedAttributeCarriers().front()->getTagProperty();
494 if ((
GeoConvHelper::getFinal().getProjString() !=
"!") && myGEOAttributeFrame->shown() && ((myGEOAttributeTextField->getTextColor() == FXRGB(0, 0, 0)) || forceRefresh)) {
495 if (tagProperty.hasGEOShape()) {
496 myGEOAttributeTextField->setText(myInspectorFrameParent->myAttributesEditor->getFrameParent()->getViewNet()->getInspectedAttributeCarriers().front()->getAttribute(
SUMO_ATTR_GEOSHAPE).c_str());
498 myGEOAttributeTextField->setTextColor(FXRGB(0, 0, 0));
506 if ((
GeoConvHelper::getFinal().getProjString() !=
"!") && (myInspectorFrameParent->myAttributesEditor->getFrameParent()->getViewNet()->getInspectedAttributeCarriers().size() > 0)) {
507 if (obj == myGEOAttributeTextField) {
509 const auto& tagProperty = myInspectorFrameParent->myAttributesEditor->getFrameParent()->getViewNet()->getInspectedAttributeCarriers().front()->getTagProperty();
511 if (tagProperty.hasGEOShape()) {
512 if (myInspectorFrameParent->myAttributesEditor->getFrameParent()->getViewNet()->getInspectedAttributeCarriers().front()->isValid(
SUMO_ATTR_GEOSHAPE, myGEOAttributeTextField->getText().text())) {
513 myInspectorFrameParent->myAttributesEditor->getFrameParent()->getViewNet()->getInspectedAttributeCarriers().front()->setAttribute(
SUMO_ATTR_GEOSHAPE, myGEOAttributeTextField->getText().text(), myInspectorFrameParent->myViewNet->getUndoList());
514 myGEOAttributeTextField->setTextColor(FXRGB(0, 0, 0));
515 myGEOAttributeTextField->killFocus();
517 myGEOAttributeTextField->setTextColor(FXRGB(255, 0, 0));
520 throw ProcessError(
"myGEOAttributeTextField must be hidden because there isn't GEO Attribute to edit");
522 }
else if (obj == myUseGEOCheckButton) {
524 for (
const auto& i : myInspectorFrameParent->myAttributesEditor->getFrameParent()->getViewNet()->getInspectedAttributeCarriers()) {
525 if (myUseGEOCheckButton->getCheck() == 1) {
526 i->setAttribute(
SUMO_ATTR_GEO,
"true", myInspectorFrameParent->myViewNet->getUndoList());
527 myUseGEOCheckButton->setText(
"true");
529 i->setAttribute(
SUMO_ATTR_GEO,
"false", myInspectorFrameParent->myViewNet->getUndoList());
530 myUseGEOCheckButton->setText(
"false");
535 myInspectorFrameParent->myAttributesEditor->refreshAttributeEditor(
true,
true);
536 myInspectorFrameParent->myNeteditAttributesEditor->refreshNeteditAttributesEditor(
true);
544 FXDialogBox* helpDialog =
new FXDialogBox(getCollapsableFrame(),
"GEO attributes Help",
GUIDesignDialogBox);
545 std::ostringstream help;
547 <<
TL(
" SUMO uses the World Geodetic System 84 (WGS84/UTM).\n")
548 <<
TL(
" For a GEO-referenced network, geo coordinates are represented as pairs of Longitude and Latitude\n")
549 <<
TL(
" in decimal degrees without extra symbols. (N,W..)\n")
550 <<
TL(
" - Longitude: East-west position of a point on the Earth's surface.\n")
551 <<
TL(
" - Latitude: North-south position of a point on the Earth's surface.\n")
552 <<
TL(
" - CheckBox 'geo' enables or disables saving position in GEO coordinates\n");
556 helpDialog->create();
567 myInspectorFrameParent(inspectorFrameParent),
568 myEdgeTemplate(nullptr) {
585 if (myInspectorFrameParent->myViewNet->getEditModes().isCurrentSupermodeNetwork()) {
586 for (
const auto& AC : myInspectorFrameParent->myAttributesEditor->getFrameParent()->getViewNet()->getInspectedAttributeCarriers()) {
608 return myEdgeTemplate;
615 if (myEdgeTemplate) {
616 delete myEdgeTemplate;
617 myEdgeTemplate =
nullptr;
623 myInspectorFrameParent->myAttributesEditor->getFrameParent()->getViewNet()->getViewParent()->getCreateEdgeFrame()->setUseEdgeTemplate();
630 if (myEdgeTemplate) {
631 myEdgeTemplate->updateLaneTemplates();
633 myInspectorFrameParent->myAttributesEditor->getFrameParent()->getViewNet()->getViewParent()->getCreateEdgeFrame()->setUseEdgeTemplate();
640 if (shown() && mySetTemplateButton->isEnabled()) {
641 onCmdSetTemplate(
nullptr, 0,
nullptr);
649 if (shown() && myCopyTemplateButton->isEnabled()) {
650 onCmdCopyTemplate(
nullptr, 0,
nullptr);
658 if (shown() && myClearTemplateButton->isEnabled()) {
659 onCmdClearTemplate(
nullptr, 0,
nullptr);
667 for (
const auto& AC : myInspectorFrameParent->myAttributesEditor->getFrameParent()->getViewNet()->getInspectedAttributeCarriers()) {
670 setEdgeTemplate(myInspectorFrameParent->myViewNet->getNet()->getAttributeCarriers()->retrieveEdge(AC->getID()));
682 if (myEdgeTemplate) {
684 myInspectorFrameParent->myViewNet->getUndoList()->begin(myEdgeTemplate,
"copy edge template");
686 for (
const auto& inspectedAC : myInspectorFrameParent->myAttributesEditor->getFrameParent()->getViewNet()->getInspectedAttributeCarriers()) {
688 if (inspectedAC->getID() != myEdgeTemplate->getID()) {
690 myInspectorFrameParent->myViewNet->getNet()->getAttributeCarriers()->retrieveEdge(inspectedAC->getID())->copyTemplate(myEdgeTemplate, myInspectorFrameParent->myViewNet->getUndoList());
694 myInspectorFrameParent->myViewNet->getUndoList()->end();
696 myInspectorFrameParent->myAttributesEditor->refreshAttributeEditor(
true,
true);
705 setEdgeTemplate(
nullptr);
714 const auto& inspectedACs = myInspectorFrameParent->myAttributesEditor->getFrameParent()->getViewNet()->getInspectedAttributeCarriers();
716 if (inspectedACs.size() == 1) {
717 mySetTemplateButton->setText((
TLF(
"Set edge '%' as Template", inspectedACs.front()->getID())).c_str());
718 mySetTemplateButton->show();
720 mySetTemplateButton->hide();
723 if (myEdgeTemplate) {
725 if (inspectedACs.size() == 1) {
726 myCopyTemplateButton->setText((
"Copy '" + myEdgeTemplate->getID() +
"' into edge '" + inspectedACs.front()->getID() +
"'").c_str());
728 myCopyTemplateButton->setText((
"Copy '" + myEdgeTemplate->getID() +
"' into " +
toString(inspectedACs.size()) +
" selected edges").c_str());
731 myCopyTemplateButton->enable();
732 myClearTemplateButton->enable();
735 myCopyTemplateButton->setText(
TL(
"No edge Template Set"));
737 myCopyTemplateButton->disable();
738 myClearTemplateButton->disable();
748 myInspectorFrameParent(inspectorFrameParent) {
760 if (myInspectorFrameParent->myAttributesEditor->getFrameParent()->getViewNet()->getInspectedAttributeCarriers().size() == 1) {
762 const GNEAttributeCarrier* AC = myInspectorFrameParent->myAttributesEditor->getFrameParent()->getViewNet()->getInspectedAttributeCarriers().front();
766 myOpenAdditionalDialog->setText(
TL(
"Open rerouter dialog"));
772 myOpenAdditionalDialog->setText(
TL(
"Open calibrator dialog"));
778 myOpenAdditionalDialog->setText(
TL(
"Open calibrator lane dialog"));
784 myOpenAdditionalDialog->setText(
TL(
"Open VSS dialog"));
806 if (myInspectorFrameParent->myAttributesEditor->getFrameParent()->getViewNet()->getInspectedAttributeCarriers().size() == 1) {
808 GNEAttributeCarrier* AC = myInspectorFrameParent->myAttributesEditor->getFrameParent()->getViewNet()->getInspectedAttributeCarriers().front();
829 GNEFrame(viewParent, viewNet,
"Inspector"),
895 if (AC->isAttributeCarrierSelected()) {
898 AC->selectAttributeCarrier();
930 if (AC->isAttributeCarrierSelected()) {
933 AC->selectAttributeCarrier();
965 if (AC->isAttributeCarrierSelected()) {
968 AC->selectAttributeCarrier();
994 std::vector<GNEAttributeCarrier*> itemsToInspect;
1001 for (
const auto& selectedAC : selectedACs) {
1004 itemsToInspect.push_back(selectedAC);
1008 itemsToInspect.push_back(AC);
1032 if (ACs.size() > 0) {
1034 std::string headerString;
1035 if (ACs.front()->getTagProperty().isNetworkElement()) {
1036 headerString =
"Net: ";
1037 }
else if (ACs.front()->getTagProperty().isAdditionalElement()) {
1038 headerString =
"Additional: ";
1039 }
else if (ACs.front()->getTagProperty().isShapeElement()) {
1040 headerString =
"Shape: ";
1041 }
else if (ACs.front()->getTagProperty().isTAZElement()) {
1042 headerString =
"TAZ: ";
1043 }
else if (ACs.front()->getTagProperty().isWireElement()) {
1044 headerString =
"WIRE: ";
1045 }
else if (ACs.front()->getTagProperty().isVehicle()) {
1046 headerString =
"Vehicle: ";
1047 }
else if (ACs.front()->getTagProperty().isRoute()) {
1048 headerString =
"Route: ";
1049 }
else if (ACs.front()->getTagProperty().isPerson()) {
1050 headerString =
"Person: ";
1051 }
else if (ACs.front()->getTagProperty().isPlanPerson()) {
1052 headerString =
"PersonPlan: ";
1053 }
else if (ACs.front()->getTagProperty().isContainer()) {
1054 headerString =
"Container: ";
1055 }
else if (ACs.front()->getTagProperty().isPlanContainer()) {
1056 headerString =
"ContainerPlan: ";
1057 }
else if (ACs.front()->getTagProperty().isVehicleStop()) {
1058 headerString =
"Stop: ";
1059 }
else if (ACs.front()->getTagProperty().isDataElement()) {
1060 headerString =
"Data: ";
1062 if (ACs.size() > 1) {
1063 headerString +=
toString(ACs.size()) +
" ";
1065 headerString += ACs.front()->getTagStr();
1066 if (ACs.size() > 1) {
1067 headerString +=
"s";
1091 if (ACs.size() == 1) {
FXDEFMAP(GNEInspectorFrame) GNEInspectorFrameMap[]
@ MID_GNE_SET_ATTRIBUTE
attribute edited
@ MID_GNE_INSPECTORFRAME_GOBACK
go back to the previous element
@ MID_OPEN_ADDITIONAL_DIALOG
open additional dialog (used in netedit)
@ MID_HOTKEY_SHIFT_F2_TEMPLATE_COPY
copy template
@ MID_GNE_MARKFRONTELEMENT
mark item as front element
@ MID_HOTKEY_SHIFT_F1_TEMPLATE_SET
set template
@ MID_HOTKEY_SHIFT_F3_TEMPLATE_CLEAR
clear template
#define GUIDesignMFXCheckableButton
checkable button extended over frame
#define GUIDesignTextField
#define GUIDesignAuxiliarHorizontalFrame
design for auxiliar (Without borders) horizontal frame used to pack another frames
#define GUIDesignDialogBox
#define GUIDesignButtonRectangular
little rectangular button used in frames (For example, in "help" buttons)
#define GUIDesignTextFieldNCol
Num of column of text field.
#define GUIDesignButtonOK
#define GUIDesignLabelThick(justify)
label extended over frame with thick and with text justify to left
#define GUIDesignCheckButton
checkButton placed in left position
#define GUIDesignHorizontalSeparator
#define GUIDesignLabelThickedFixed(width)
label thicked, icon before text, text centered and custom width
#define GUIDesignLabelFrameInformation
label extended over frame without thick and with text justify to left, used to show information in fr...
@ SUMO_TAG_REROUTER
A rerouter.
@ GNE_TAG_CALIBRATOR_LANE
A calibrator placed over lane.
@ SUMO_TAG_CALIBRATOR
A calibrator placed over edge.
@ SUMO_TAG_VSS
A variable speed sign.
@ SUMO_TAG_EDGE
begin/end of the description of an edge
SumoXMLAttr
Numbers representing SUMO-XML - attributes.
@ GNE_ATTR_PARENT
parent of an additional element
@ GNE_ATTR_CLOSE_SHAPE
Close shape of a polygon (Used by GNEPolys)
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
const std::string getID() const
get ID (all Attribute Carriers have one)
bool isAttributeCarrierSelected() const
check if attribute carrier is selected
const GNETagProperties & getTagProperty() const
get tagProperty associated with this Attribute Carrier
void unselectAttributeCarrier(const bool changeFlag=true)
unselect attribute carrier using GUIGlobalSelection
Dialog for edit calibrators.
void show()
show delete frame
A road/street connecting two junctions (netedit-version)
void hideHierarchicalElementTree()
hide GNEElementTree
void refreshHierarchicalElementTree()
refresh GNEElementTree
void showHierarchicalElementTree(GNEAttributeCarrier *AC)
show GNEElementTree
void refreshAttributeEditor(bool forceRefreshShape, bool forceRefreshPosition)
refresh attribute editor (only the valid values will be refresh)
GNEFrame * getFrameParent() const
pointer to GNEFrame parent
void showAttributeEditorModule(bool includeExtended)
show attributes of multiple ACs
void hideAttributesEditorModule()
hide attribute editor
void refreshParametersEditor()
refresh netedit attributes
void hideParametersEditor()
hide netedit attributes EditorInspector
void showParametersEditor()
show netedit attributes EditorInspector
static bool isSupermodeValid(const GNEViewNet *viewNet, const GNEAttributeCarrier *AC)
return true if AC can be edited in the current supermode
void setFrameWidth(const int newWidth)
set width of GNEFrame
void focusUpperElement()
focus upper element of frame
GNEViewNet * getViewNet() const
get view net
FXLabel * getFrameHeaderLabel() const
get the label for the frame's header
GNEViewNet * myViewNet
FOX need this.
virtual void show()
show Frame
virtual void hide()
hide Frame
FXHorizontalFrame * myHeaderLeftFrame
fame for left header elements
FXButton * myOpenAdditionalDialog
button for open additional dialog
long onCmdOpenAdditionalDialog(FXObject *, FXSelector, void *)
void hideAdditionalDialog()
hide netedit attributes editor
AdditionalDialog(GNEInspectorFrame *inspectorFrameParent)
FOX-declaration.
~AdditionalDialog()
destructor
void showAdditionalDialog()
show netedit attributes editor
FXCheckButton * myUseGEOCheckButton
checkBox for use GEO
long onCmdGEOAttributeHelp(FXObject *, FXSelector, void *)
Called when user press the help button.
FXButton * myHelpButton
button for help
void showGEOAttributesEditor()
show GEO attributes editor
FXTextField * myGEOAttributeTextField
textField for GEOAttribute
FXLabel * myUseGEOLabel
Label for use GEO.
FXHorizontalFrame * myUseGEOFrame
horizontal frame for use GEO
GEOAttributesEditor(GNEInspectorFrame *inspectorFrameParent)
FOX-declaration.
long onCmdSetGEOAttribute(FXObject *, FXSelector, void *)
Called when user change the current GEO Attribute.
FXLabel * myGEOAttributeLabel
Label for GEOAttribute.
~GEOAttributesEditor()
destructor
void refreshGEOAttributesEditor(bool forceRefresh)
refresh GEO attributes editor
void hideGEOAttributesEditor()
hide GEO attributes editor
FXHorizontalFrame * myGEOAttributeFrame
horizontal frame for GEOAttribute
bool isSelectingParent() const
check if we're selecting a new parent
long onCmdNeteditAttributeHelp(FXObject *, FXSelector, void *)
Called when user press the help button.
long onCmdSetNeteditAttribute(FXObject *, FXSelector, void *)
long onCmdMarkFrontElement(FXObject *, FXSelector, void *)
Called when user press button "Mark front element".
void refreshNeteditAttributesEditor(bool forceRefresh)
refresh netedit attributes
void setNewParent(GNEAttributeCarrier *clickedAC)
set new parent
void hideNeteditAttributesEditor()
hide netedit attributes editor
void stopSelectParent()
stop select new parent
void showNeteditAttributesEditor()
show netedit attributes editor
~NeteditAttributesEditor()
destructor
void updateButtons()
FOX need this.
void hideTemplateEditor()
hide template editor
void clearTemplate()
clear template (used by shortcut)
void setEdgeTemplate(const GNEEdge *edge)
set edge template
~TemplateEditor()
destructor
FXButton * myClearTemplateButton
clear template button
FXButton * mySetTemplateButton
set template button
long onCmdCopyTemplate(FXObject *, FXSelector, void *)
copy edge attributes from edge template
void setTemplate()
set template (used by shortcut)
TemplateEditor(GNEInspectorFrame *inspectorFrameParent)
FOX-declaration.
FXButton * myCopyTemplateButton
copy template button
long onCmdSetTemplate(FXObject *, FXSelector, void *)
GNEEdgeTemplate * getEdgeTemplate() const
get edge template (to copy attributes from)
void copyTemplate()
copy template (used by shortcut)
void updateEdgeTemplate()
update edge template
bool showTemplateEditor()
show template editor
long onCmdClearTemplate(FXObject *, FXSelector, void *)
clear current edge template
NeteditAttributesEditor * myNeteditAttributesEditor
Netedit Attributes editor.
GNEAttributeCarrier * myPreviousElementDelete
pointer to previous element called by Delete Frame
GNEFrameAttributeModules::AttributesEditor * getAttributesEditor() const
get AttributesEditor
void inspectChild(GNEAttributeCarrier *AC, GNEAttributeCarrier *previousElement)
inspect child of already inspected element
void inspectSingleElement(GNEAttributeCarrier *AC)
Inspect a single element.
GNEFrameAttributeModules::AttributesEditor * myAttributesEditor
Attribute editor.
void selectedOverlappedElement(GNEAttributeCarrier *AC)
open GNEAttributesCreator extended dialog (can be reimplemented in frame children)
TemplateEditor * getTemplateEditor() const
get template editor
GNEInspectorFrame(GNEViewParent *viewParent, GNEViewNet *viewNet)
Constructor.
bool processDemandSupermodeClick(const Position &clickedPosition, GNEViewNetHelper::ViewObjectsSelector &viewObjects)
process click over Viewnet in Supermode Demand
GNEElementTree * getHierarchicalElementTree() const
get GNEElementTree modul
void clearInspectedAC()
Clear all current inspected ACs.
long onCmdGoBack(FXObject *, FXSelector, void *)
called when user toggle the go back button
void attributeUpdated(SumoXMLAttr attribute)
function called after set a valid attribute in AttributeEditor
void show()
show inspector frame
GNEFrameAttributeModules::ParametersEditor * myParametersEditor
Parameters editor inspector.
GEOAttributesEditor * myGEOAttributesEditor
GEO Attributes editor.
GNEAttributeCarrier * myPreviousElementInspect
Pointer to previous element called by Inspector Frame.
bool myPreviousElementDeleteWasMarked
flag to ckec if myPreviousElementDelete was marked in Delete Frame
GNEOverlappedInspection * myOverlappedInspection
Overlapped Inspection.
GNEOverlappedInspection * getOverlappedInspection() const
get GNEOverlappedInspection modul
AdditionalDialog * myAdditionalDialog
Additional dialog.
void hide()
hide inspector frame
void inspectFromDeleteFrame(GNEAttributeCarrier *AC, GNEAttributeCarrier *previousElement, bool previousElementWasMarked)
inspect called from DeleteFrame
GNEInspectorFrame::NeteditAttributesEditor * getNeteditAttributesEditor() const
get Netedit Attributes editor
bool processNetworkSupermodeClick(const Position &clickedPosition, GNEViewNetHelper::ViewObjectsSelector &viewObjects)
process click over Viewnet in Supermode Network
FXButton * myBackButton
Back Button.
GNEElementTree * myHierarchicalElementTree
Attribute Carrier Hierarchy.
void inspectClickedElement(const GNEViewNetHelper::ViewObjectsSelector &viewObjects, const Position &clickedPosition)
FOX need this.
void inspectMultisection(const std::vector< GNEAttributeCarrier * > &ACs)
Inspect the given multi-selection.
~GNEInspectorFrame()
Destructor.
TemplateEditor * myTemplateEditor
Template editor.
void updateFrameAfterUndoRedo()
function called after undo/redo in the current frame (can be reimplemented in frame children)
bool processDataSupermodeClick(const Position &clickedPosition, GNEViewNetHelper::ViewObjectsSelector &viewObjects)
process click over Viewnet in Supermode Data
std::vector< GNEAttributeCarrier * > getSelectedAttributeCarriers(const bool ignoreCurrentSupermode)
get all selected attribute carriers (or only relative to current supermode
GNENetHelper::AttributeCarriers * getAttributeCarriers() const
get all attribute carriers used in this net
void hideOverlappedInspection()
hide template editor
void showOverlappedInspection(const GNEViewNetHelper::ViewObjectsSelector &viewObjects, const Position &clickedPosition)
show template editor
bool nextElement(const Position &clickedPosition)
try to go to next element if clicked position is near to saved position
bool previousElement(const Position &clickedPosition)
try to go to previous element if clicked position is near to saved position
Dialog for edit rerouters.
SumoXMLTag getTag() const
get Tag vinculated with this attribute Property
class used to group all variables related with objects under cursor after a click over view
GNEAttributeCarrier * getAttributeCarrierFront() const
get front attribute carrier or a pointer to nullptr
GNENet * getNet() const
get the net object
const GNEViewNetHelper::MouseButtonKeyPressed & getMouseButtonKeyPressed() const
get Key Pressed module
GNEViewParent * getViewParent() const
get the net object
const std::vector< GNEAttributeCarrier * > & getInspectedAttributeCarriers() const
get inspected attribute carriers
void setInspectedAttributeCarriers(const std::vector< GNEAttributeCarrier * > ACs)
set inspected attributeCarrier
void updateViewNet(const bool ignoreViewUpdater=true) const
Mark the entire GNEViewNet to be repainted later.
A single child window which contains a view of the simulation area.
GNEDeleteFrame * getDeleteFrame() const
get frame for delete elements
int getFrameAreaWidth() const
get frame area width
static FXButton * buildFXButton(FXComposite *p, const std::string &text, const std::string &tip, const std::string &help, FXIcon *ic, FXObject *tgt, FXSelector sel, FXuint opts=BUTTON_NORMAL, FXint x=0, FXint y=0, FXint w=0, FXint h=0, FXint pl=DEFAULT_PAD, FXint pr=DEFAULT_PAD, FXint pt=DEFAULT_PAD, FXint pb=DEFAULT_PAD)
build button
static FXIcon * getIcon(const GUIIcon which)
returns a icon previously defined in the enum GUIIcon
static const GeoConvHelper & getFinal()
the coordinate transformation for writing the location element and for tracking the original coordina...
MFXGroupBoxModule (based on FXGroupBox)
FXVerticalFrame * getCollapsableFrame()
get collapsable frame (used by all elements that will be collapsed if button is toggled)
A point in 2D or 3D with translation and scaling methods.