82 myCreateEdgeFrameParent(createEdgeFrameParent),
83 myEdgeTypeSelected(
nullptr),
84 myDefaultEdgeType(new
GNEEdgeType(createEdgeFrameParent)) {
86 myUseDefaultEdgeType =
new FXRadioButton(
this,
89 myUseCustomEdgeType =
new FXRadioButton(
this,
96 myAddEdgeTypeButton =
new FXButton(horizontalFrameButtons,
99 myDeleteEdgeTypeButton =
new FXButton(horizontalFrameButtons,
102 myResetEdgeTypeButton =
new FXButton(horizontalFrameButtons,
105 myUseDefaultEdgeType->setCheck(TRUE);
119 const auto& edgeTypes = myCreateEdgeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getEdgeTypes();
121 const bool thereAreItems = (templateEditor->
hasTemplate() || (edgeTypes.size() > 0));
125 myCreateEdgeFrameParent->myEdgeTypeParameters->showEdgeTypeParameters();
127 if (myUseDefaultEdgeType->getCheck() == TRUE) {
129 myEdgeTypesComboBox->disable();
131 myAddEdgeTypeButton->disable();
132 myDeleteEdgeTypeButton->disable();
134 myCreateEdgeFrameParent->myEdgeTypeParameters->enableEdgeTypeParameters();
136 myCreateEdgeFrameParent->myEdgeTypeParameters->setEdgeType(myDefaultEdgeType,
false);
137 }
else if (thereAreItems) {
139 myAddEdgeTypeButton->enable();
141 myEdgeTypesComboBox->enable();
143 if (myEdgeTypeSelected) {
147 for (
int i = 0; i < myEdgeTypesComboBox->getNumItems(); i++) {
148 if (myEdgeTypeSelected->getID() == myEdgeTypesComboBox->getItem(i).text()) {
153 myEdgeTypesComboBox->setCurrentItem(index);
155 myDeleteEdgeTypeButton->enable();
157 myCreateEdgeFrameParent->myEdgeTypeParameters->setEdgeType(myEdgeTypeSelected,
true);
159 myCreateEdgeFrameParent->myEdgeTypeParameters->enableEdgeTypeParameters();
162 myEdgeTypesComboBox->setCurrentItem(0);
164 myCreateEdgeFrameParent->myEdgeTypeParameters->setTemplateValues();
166 myDeleteEdgeTypeButton->disable();
168 myCreateEdgeFrameParent->myEdgeTypeParameters->disableEdgeTypeParameters();
169 }
else if (edgeTypes.size() > 0) {
171 myEdgeTypeSelected = edgeTypes.begin()->second;
173 myEdgeTypesComboBox->setCurrentItem(0);
175 myDeleteEdgeTypeButton->enable();
177 myCreateEdgeFrameParent->myEdgeTypeParameters->setEdgeType(myEdgeTypeSelected,
true);
179 myCreateEdgeFrameParent->myEdgeTypeParameters->enableEdgeTypeParameters();
183 myCreateEdgeFrameParent->myEdgeTypeParameters->hideEdgeTypeParameters();
185 myAddEdgeTypeButton->enable();
186 myDeleteEdgeTypeButton->disable();
188 myEdgeTypesComboBox->disable();
197 if (myCreateEdgeFrameParent->getViewNet()->getViewParent()->getInspectorFrame()->getTemplateEditor()->hasTemplate()) {
198 if ((myUseCustomEdgeType->getCheck() == TRUE) && (myEdgeTypesComboBox->getCurrentItem() == 0)){
211 return (myUseDefaultEdgeType->getCheck() == TRUE);
217 return myDefaultEdgeType;
223 return myEdgeTypeSelected;
229 myEdgeTypeSelected =
nullptr;
236 if (obj == myUseDefaultEdgeType) {
238 myUseDefaultEdgeType->setCheck(TRUE, FALSE);
239 myUseCustomEdgeType->setCheck(FALSE, FALSE);
242 myUseDefaultEdgeType->setCheck(FALSE, FALSE);
243 myUseCustomEdgeType->setCheck(TRUE, FALSE);
246 refreshEdgeTypeSelector();
258 myCreateEdgeFrameParent->getViewNet()->getUndoList()->p_begin(
"create new edge type");
259 myCreateEdgeFrameParent->getViewNet()->getUndoList()->add(
new GNEChange_EdgeType(edgeType,
true),
true);
260 myCreateEdgeFrameParent->getViewNet()->getUndoList()->add(
new GNEChange_LaneType(laneType, 0,
true),
true);
261 myCreateEdgeFrameParent->getViewNet()->getUndoList()->p_end();
263 myEdgeTypeSelected = edgeType;
265 refreshEdgeTypeSelector();
273 if (myEdgeTypeSelected && (myEdgeTypeSelected->getID() == myEdgeTypesComboBox->getText().text())) {
274 myEdgeTypeSelected =
nullptr;
279 myCreateEdgeFrameParent->getViewNet()->getUndoList()->p_begin(
"create new edge type");
281 for (
int i = 0; i < (int)edgeType->
getLaneTypes().size(); i++) {
284 myCreateEdgeFrameParent->getViewNet()->getUndoList()->add(
new GNEChange_EdgeType(edgeType,
false),
true);
285 myCreateEdgeFrameParent->getViewNet()->getUndoList()->p_end();
287 refreshEdgeTypeSelector();
297 GNEUndoList *undoList = myCreateEdgeFrameParent->getViewNet()->getUndoList();
299 if (useDefaultEdgeType()) {
303 while (myDefaultEdgeType->getLaneTypes().size() > 1) {
304 myDefaultEdgeType->removeLaneType(myDefaultEdgeType->getLaneTypes().back());
312 }
else if (myEdgeTypeSelected) {
314 undoList->
p_begin(
"reset edgeType '" + myDefaultEdgeType->getID() +
"'");
316 while (myEdgeTypeSelected->getLaneTypes().size() > 1) {
317 myEdgeTypeSelected->removeLaneType((
int)myEdgeTypeSelected->getLaneTypes().size() - 1, undoList);
331 refreshEdgeTypeSelector();
341 const auto& edgeTypes = myCreateEdgeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getEdgeTypes();
343 myEdgeTypeSelected =
nullptr;
345 if (templateEditor->
hasTemplate() && myEdgeTypesComboBox->getCurrentItem() == 0) {
347 myEdgeTypesComboBox->setTextColor(FXRGB(0, 0, 0));
348 myEdgeTypesComboBox->killFocus();
350 myDeleteEdgeTypeButton->disable();
352 myCreateEdgeFrameParent->myEdgeTypeParameters->showEdgeTypeParameters();
354 myCreateEdgeFrameParent->myEdgeTypeParameters->disableEdgeTypeParameters();
356 myCreateEdgeFrameParent->myEdgeTypeParameters->setTemplateValues();
357 }
else if (edgeTypes.count(myEdgeTypesComboBox->getText().text()) > 0) {
359 myEdgeTypesComboBox->setTextColor(FXRGB(0, 0, 0));
360 myEdgeTypesComboBox->killFocus();
362 myDeleteEdgeTypeButton->enable();
364 myCreateEdgeFrameParent->myEdgeTypeParameters->showEdgeTypeParameters();
366 myCreateEdgeFrameParent->myEdgeTypeParameters->enableEdgeTypeParameters();
368 myEdgeTypeSelected = myCreateEdgeFrameParent->myViewNet->getNet()->retrieveEdgeType(myEdgeTypesComboBox->getText().text());
370 myCreateEdgeFrameParent->myEdgeTypeParameters->setEdgeType(myEdgeTypeSelected,
true);
373 myEdgeTypesComboBox->setTextColor(FXRGB(255, 0, 0));
375 myDeleteEdgeTypeButton->disable();
377 myCreateEdgeFrameParent->myEdgeTypeParameters->hideEdgeTypeParameters();
388 const auto& edgeTypes = myCreateEdgeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getEdgeTypes();
390 myEdgeTypesComboBox->clearItems();
396 for (
const auto& edgeType : edgeTypes) {
397 myEdgeTypesComboBox->appendItem(edgeType.second->getID().c_str(),
nullptr);
400 if (myEdgeTypesComboBox->getNumItems() <= 10) {
401 myEdgeTypesComboBox->setNumVisible(myEdgeTypesComboBox->getNumItems());
403 myEdgeTypesComboBox->setNumVisible(10);
430 myCreateEdgeFrameParent(createEdgeFrameParent) {
432 FXHorizontalFrame* horizontalFrameAttribute =
nullptr;
474 const int previousLaneIndex = (myLaneIndex->getNumItems() > 0)? myLaneIndex->getCurrentItem() : 0;
477 if (myCreateEdgeFrameParent->myEdgeTypeSelector->useDefaultEdgeType()) {
478 edgeType = myCreateEdgeFrameParent->myEdgeTypeSelector->getDefaultEdgeType();
480 edgeType = myCreateEdgeFrameParent->myEdgeTypeSelector->getEdgeTypeSelected();
485 myLaneIndex->clearItems();
486 for (
int i = 0; i < (int)edgeType->
getLaneTypes().size(); i++) {
487 myLaneIndex->appendItem(
toString(i).c_str());
490 myLaneIndex->setNumVisible(myLaneIndex->getNumItems());
492 if (previousLaneIndex < (
int)edgeType->
getLaneTypes().size()) {
493 myLaneIndex->setCurrentItem(previousLaneIndex);
495 myLaneIndex->setCurrentItem(0);
499 mySpeed->setTextColor(FXRGB(0, 0, 0));
502 myAllow->setTextColor(FXRGB(0, 0, 0));
505 myDisallow->setTextColor(FXRGB(0, 0, 0));
508 myWidth->setTextColor(FXRGB(0, 0, 0));
511 myParameters->setTextColor(FXRGB(0, 0, 0));
530 myLaneIndex->enable();
532 myAllowButton->enable();
534 myDisallowButton->enable();
535 myDisallow->enable();
542 myLaneIndex->disable();
544 myAllowButton->disable();
546 myDisallowButton->disable();
547 myDisallow->disable();
583 }
else if (myCreateEdgeFrameParent->getEdgeTypeSelector()->getEdgeTypeSelected()) {
597 refreshLaneTypeParameters();
604 if (obj == myLaneIndex) {
606 refreshLaneTypeParameters();
607 }
else if (myCreateEdgeFrameParent->myEdgeTypeSelector->useDefaultEdgeType()) {
608 setAttributeDefaultParameters(obj);
610 setAttributeExistentLaneType(obj);
618 if (obj == myParametersButton) {
622 if (myCreateEdgeFrameParent->myEdgeTypeSelector->useDefaultEdgeType()) {
624 GNELaneType* laneType = myCreateEdgeFrameParent->myEdgeTypeSelector->getDefaultEdgeType()->getLaneTypes().at(myLaneIndex->getCurrentItem());
635 }
else if (myCreateEdgeFrameParent->myEdgeTypeSelector->getEdgeTypeSelected()) {
637 GNELaneType* laneType = myCreateEdgeFrameParent->myEdgeTypeSelector->getEdgeTypeSelected()->getLaneTypes().at(myLaneIndex->getCurrentItem());
651 std::string allow = myAllow->getText().text();
652 std::string disallow = myDisallow->getText().text();
654 GNEAllowDisallow(myCreateEdgeFrameParent->getViewNet(), &allow, &disallow).execute();
656 myAllow->setText(allow.c_str(), FALSE);
657 myDisallow->setText(disallow.c_str(), FALSE);
659 if (myCreateEdgeFrameParent->myEdgeTypeSelector->useDefaultEdgeType()) {
660 myCreateEdgeFrameParent->myEdgeTypeSelector->getDefaultEdgeType()->getLaneTypes().at(myLaneIndex->getCurrentItem())->setAttribute(
SUMO_ATTR_ALLOW, allow.c_str());
661 }
else if (myCreateEdgeFrameParent->myEdgeTypeSelector->getEdgeTypeSelected()) {
662 myCreateEdgeFrameParent->myEdgeTypeSelector->getEdgeTypeSelected()->getLaneTypes().at(myLaneIndex->getCurrentItem())->setAttribute(
SUMO_ATTR_ALLOW, allow.c_str());
686 GNELaneType *defaultLaneType = myCreateEdgeFrameParent->myEdgeTypeSelector->getDefaultEdgeType()->getLaneTypes().at(myLaneIndex->getCurrentItem());
688 if (obj == mySpeed) {
694 mySpeed->setTextColor(FXRGB(0, 0, 0));
695 mySpeed->killFocus();
697 mySpeed->setTextColor(FXRGB(255, 0, 0));
699 }
else if (obj == myAllow) {
705 myAllow->setTextColor(FXRGB(0, 0, 0));
706 myAllow->killFocus();
710 myAllow->setTextColor(FXRGB(255, 0, 0));
712 }
else if (obj == myDisallow) {
718 myDisallow->setTextColor(FXRGB(0, 0, 0));
719 myDisallow->killFocus();
723 myDisallow->setTextColor(FXRGB(255, 0, 0));
725 }
else if (obj == myWidth) {
731 myWidth->setTextColor(FXRGB(0, 0, 0));
732 myWidth->killFocus();
734 myWidth->setTextColor(FXRGB(255, 0, 0));
736 }
else if (obj == myParameters) {
742 myParameters->setTextColor(FXRGB(0, 0, 0));
743 myParameters->killFocus();
745 myParameters->setTextColor(FXRGB(255, 0, 0));
754 GNEUndoList *undoList = myCreateEdgeFrameParent->myViewNet->getUndoList();
756 GNELaneType *laneType = myCreateEdgeFrameParent->myEdgeTypeSelector->getEdgeTypeSelected()->getLaneTypes().at(myLaneIndex->getCurrentItem());
758 if (obj == mySpeed) {
764 mySpeed->setTextColor(FXRGB(0, 0, 0));
765 mySpeed->killFocus();
767 mySpeed->setTextColor(FXRGB(255, 0, 0));
769 }
else if (obj == myAllow) {
775 myAllow->setTextColor(FXRGB(0, 0, 0));
776 myAllow->killFocus();
780 myAllow->setTextColor(FXRGB(255, 0, 0));
782 }
else if (obj == myDisallow) {
788 myDisallow->setTextColor(FXRGB(0, 0, 0));
789 myDisallow->killFocus();
793 myDisallow->setTextColor(FXRGB(255, 0, 0));
795 }
else if (obj == myWidth) {
801 myWidth->setTextColor(FXRGB(0, 0, 0));
802 myWidth->killFocus();
804 myWidth->setTextColor(FXRGB(255, 0, 0));
806 }
else if (obj == myParameters) {
812 myParameters->setTextColor(FXRGB(0, 0, 0));
813 myParameters->killFocus();
815 myParameters->setTextColor(FXRGB(255, 0, 0));
826 myCreateEdgeFrameParent(createEdgeFrameParent) {
828 FXHorizontalFrame* horizontalFrameAttribute =
nullptr;
874 myLaneTypeParameters->showLaneTypeParameters();
883 myLaneTypeParameters->hideLaneTypeParameters();
891 myNumLanes->enable();
893 myAllowButton->enable();
895 myDisallowButton->enable();
896 myDisallow->enable();
898 myPriority->enable();
899 myParameters->enable();
901 myLaneTypeParameters->enableLaneTypeParameters();
909 myNumLanes->disable();
911 myAllowButton->disable();
913 myDisallowButton->disable();
914 myDisallow->disable();
916 myPriority->disable();
917 myParameters->disable();
919 myLaneTypeParameters->disableLaneTypeParameters();
927 myHorizontalFrameID->show();
928 myLabelID->setText(
"edgeType ID");
930 myID->setTextColor(FXRGB(0, 0, 0));
932 myHorizontalFrameID->hide();
936 myNumLanes->setTextColor(FXRGB(0, 0, 0));
939 mySpeed->setTextColor(FXRGB(0, 0, 0));
942 myAllow->setTextColor(FXRGB(0, 0, 0));
945 myDisallow->setTextColor(FXRGB(0, 0, 0));
948 myWidth->setTextColor(FXRGB(0, 0, 0));
951 myPriority->setTextColor(FXRGB(0, 0, 0));
954 myParameters->setTextColor(FXRGB(0, 0, 0));
956 myLaneTypeParameters->refreshLaneTypeParameters();
969 myLabelID->setText(
"template ID");
971 myHorizontalFrameID->show();
997 if (myCreateEdgeFrameParent->myEdgeTypeSelector->useDefaultEdgeType()) {
998 setAttributeDefaultParameters(obj);
1000 setAttributeExistentEdgeType(obj);
1008 if (obj == myParametersButton) {
1012 if (myCreateEdgeFrameParent->myEdgeTypeSelector->useDefaultEdgeType()) {
1018 myParameters->setText(myCreateEdgeFrameParent->myEdgeTypeSelector->getDefaultEdgeType()->getAttribute(
GNE_ATTR_PARAMETERS).c_str(), FALSE);
1023 }
else if (myCreateEdgeFrameParent->myEdgeTypeSelector->getEdgeTypeSelected()) {
1029 myParameters->setText(myCreateEdgeFrameParent->myEdgeTypeSelector->getEdgeTypeSelected()->getAttribute(
GNE_ATTR_PARAMETERS).c_str(), FALSE);
1037 std::string allow = myAllow->getText().text();
1038 std::string disallow = myDisallow->getText().text();
1040 GNEAllowDisallow(myCreateEdgeFrameParent->getViewNet(), &allow, &disallow).execute();
1042 myAllow->setText(allow.c_str(), FALSE);
1043 myDisallow->setText(disallow.c_str(), FALSE);
1045 if (myCreateEdgeFrameParent->myEdgeTypeSelector->useDefaultEdgeType()) {
1046 myCreateEdgeFrameParent->myEdgeTypeSelector->getDefaultEdgeType()->setAttribute(
SUMO_ATTR_ALLOW, allow.c_str());
1047 }
else if (myCreateEdgeFrameParent->myEdgeTypeSelector->getEdgeTypeSelected()) {
1048 myCreateEdgeFrameParent->myEdgeTypeSelector->getEdgeTypeSelected()->setAttribute(
SUMO_ATTR_ALLOW, allow.c_str());
1058 GNEEdgeType *defaultEdgeType = myCreateEdgeFrameParent->myEdgeTypeSelector->getDefaultEdgeType();
1066 myID->setTextColor(FXRGB(0, 0, 0));
1069 myID->setTextColor(FXRGB(255, 0, 0));
1071 }
else if (obj == myNumLanes) {
1075 myNumLanes->setTextColor(FXRGB(0, 0, 0));
1076 myNumLanes->killFocus();
1078 myLaneTypeParameters->updateNumLanes(GNEAttributeCarrier::parse<int>(myNumLanes->getText().text()));
1080 myNumLanes->setTextColor(FXRGB(255, 0, 0));
1082 }
else if (obj == mySpeed) {
1088 mySpeed->setTextColor(FXRGB(0, 0, 0));
1089 mySpeed->killFocus();
1091 mySpeed->setTextColor(FXRGB(255, 0, 0));
1093 }
else if (obj == myAllow) {
1099 myAllow->setTextColor(FXRGB(0, 0, 0));
1100 myAllow->killFocus();
1104 myAllow->setTextColor(FXRGB(255, 0, 0));
1106 }
else if (obj == myDisallow) {
1112 myDisallow->setTextColor(FXRGB(0, 0, 0));
1113 myDisallow->killFocus();
1117 myDisallow->setTextColor(FXRGB(255, 0, 0));
1119 }
else if (obj == myWidth) {
1125 myWidth->setTextColor(FXRGB(0, 0, 0));
1126 myWidth->killFocus();
1128 myWidth->setTextColor(FXRGB(255, 0, 0));
1130 }
else if (obj == myPriority) {
1136 myPriority->setTextColor(FXRGB(0, 0, 0));
1137 myPriority->killFocus();
1139 myPriority->setTextColor(FXRGB(255, 0, 0));
1141 }
else if (obj == myParameters) {
1147 myParameters->setTextColor(FXRGB(0, 0, 0));
1148 myParameters->killFocus();
1150 myParameters->setTextColor(FXRGB(255, 0, 0));
1159 GNEUndoList *undoList = myCreateEdgeFrameParent->myViewNet->getUndoList();
1161 GNEEdgeType *edgeType = myCreateEdgeFrameParent->myEdgeTypeSelector->getEdgeTypeSelected();
1169 myID->setTextColor(FXRGB(0, 0, 0));
1172 myID->setTextColor(FXRGB(255, 0, 0));
1174 }
else if (obj == myNumLanes) {
1178 myNumLanes->setTextColor(FXRGB(0, 0, 0));
1179 myNumLanes->killFocus();
1181 myLaneTypeParameters->updateNumLanes(GNEAttributeCarrier::parse<int>(myNumLanes->getText().text()));
1183 myNumLanes->setTextColor(FXRGB(255, 0, 0));
1185 }
else if (obj == mySpeed) {
1191 mySpeed->setTextColor(FXRGB(0, 0, 0));
1192 mySpeed->killFocus();
1194 mySpeed->setTextColor(FXRGB(255, 0, 0));
1196 }
else if (obj == myAllow) {
1202 myAllow->setTextColor(FXRGB(0, 0, 0));
1203 myAllow->killFocus();
1207 myAllow->setTextColor(FXRGB(255, 0, 0));
1209 }
else if (obj == myDisallow) {
1215 myDisallow->setTextColor(FXRGB(0, 0, 0));
1216 myDisallow->killFocus();
1220 myDisallow->setTextColor(FXRGB(255, 0, 0));
1222 }
else if (obj == myWidth) {
1228 myWidth->setTextColor(FXRGB(0, 0, 0));
1229 myWidth->killFocus();
1231 myWidth->setTextColor(FXRGB(255, 0, 0));
1233 }
else if (obj == myPriority) {
1239 myPriority->setTextColor(FXRGB(0, 0, 0));
1240 myPriority->killFocus();
1242 myPriority->setTextColor(FXRGB(255, 0, 0));
1244 }
else if (obj == myParameters) {
1250 myParameters->setTextColor(FXRGB(0, 0, 0));
1251 myParameters->killFocus();
1253 myParameters->setTextColor(FXRGB(255, 0, 0));
1265 std::ostringstream information;
1268 <<
"- Control+Click:" <<
"\n"
1269 <<
" Move view" <<
"\n"
1270 <<
"- Shift+Click:" <<
"\n"
1271 <<
" Splits edge in both directions" <<
"\n"
1272 <<
"- Alt+Shift+Click:" <<
"\n"
1273 <<
" Splits edge in one direction";
1286 GNEFrame(horizontalFrameParent, viewNet,
"Create Edge"),
1303 const bool oppositeEdge,
const bool chainEdge) {
1316 if (junction ==
nullptr) {
1358 std::cout <<
"edge created without an open CommandGroup )-:\n";
FXDEFMAP(GNECreateEdgeFrame::EdgeTypeSelector) EdgeTypeSelectorMap[]
@ MID_GNE_SET_ATTRIBUTE
attribute edited
@ MID_GNE_CREATEEDGEFRAME_DELETEEDGETYPE
delete edge type
@ MID_GNE_SET_ATTRIBUTE_DIALOG
attribute edited trought dialog
@ MID_GNE_CREATEEDGEFRAME_RESETLANETYPE
reset lane type
@ MID_GNE_CREATEEDGEFRAME_DELETELANETYPE
delete lane type
@ MID_GNE_CREATEEDGEFRAME_SELECTRADIOBUTTON
@ MID_GNE_CREATEEDGEFRAME_SELECTEDGETYPE
select edge type
@ MID_GNE_CREATEEDGEFRAME_ADDEDGETYPE
add new edge type
@ MID_GNE_CREATEEDGEFRAME_RESETEDGETYPE
reset edge type
#define GUIDesignButtonAttribute
button extended over over column with thick and raise frame
#define GUIDesignComboBoxAttribute
Combo box static (cannot be edited) extended over the matrix column.
#define GUIDesignComboBoxNCol
number of column of every combo box
#define GUIDesignTextField
#define GUIDesignAuxiliarHorizontalFrame
design for auxiliar (Without borders) horizontal frame used to pack another frames
#define GUIDesignLabelAttribute
label extended over the matrix column with thick frame
#define GUIDesignLabelFrameThicked
label extended over frame without thick and with text justify to left, used to show information in fr...
#define GUIDesignTextFieldNCol
Num of column of text field.
#define GUIDesignGroupBoxFrame
Group box design extended over frame.
#define GUIDesignTextFieldInt
text field extended over Frame with thick frame (int)
#define GUIDesignRadioButton
@ SUMO_TAG_EDGE
begin/end of the description of an edge
@ GNE_ATTR_PARAMETERS
parameters "key1=value1|key2=value2|...|keyN=valueN"
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
Dialog for edit rerouters.
GNENet * getNet() const
get pointer to net
FXButton * myParametersButton
Button for edit generic parameters.
FXTextField * myWidth
textField for width
void hideEdgeTypeParameters()
hide edge parameters
void enableEdgeTypeParameters()
enable edge parameters
LaneTypeParameters * myLaneTypeParameters
lane parameters
FXHorizontalFrame * myHorizontalFrameID
horizontal frame for ID
long onCmdOpenAttributeDialog(FXObject *obj, FXSelector, void *)
Called when the user open attribute dialog.
void showEdgeTypeParameters()
show edge parameters
void setTemplateValues()
set template values
FXTextField * myNumLanes
textField for numLanes
FXTextField * myID
textField for id
FXButton * myDisallowButton
Button for disallow vehicles.
FXTextField * mySpeed
textField for speed
long onCmdSetAttribute(FXObject *obj, FXSelector, void *)
EdgeTypeParameters(GNECreateEdgeFrame *createEdgeFrameParent)
FOX-declaration.
void setEdgeType(GNEEdgeType *edgeType, bool showID)
set edgeType
void setAttributeDefaultParameters(FXObject *obj)
set attribute for default parameters
~EdgeTypeParameters()
destructor
FXTextField * myParameters
textField for Parameters
FXTextField * myAllow
textField for allow vehicles
void setAttributeExistentEdgeType(FXObject *obj)
set attribute for existent edge type
FXTextField * myPriority
textField for priority
void disableEdgeTypeParameters()
disable edge parameters
FXTextField * myDisallow
textField for disallow vehicles
FXButton * myAllowButton
Button for allow vehicles.
GNEEdgeType * getEdgeTypeSelected() const
get edgeType selected
~EdgeTypeSelector()
destructor
long onCmdSelectEdgeType(FXObject *, FXSelector, void *)
Called when the user press select an edgeType in comboBox.
GNEEdgeType * getDefaultEdgeType() const
get default edgeType
bool useEdgeTemplate() const
check if we have to use edge template
long onCmdAddEdgeType(FXObject *, FXSelector, void *)
Called when the user press button for add a new edge type.
bool useDefaultEdgeType() const
check if we're using default edge type
long onCmdDeleteEdgeType(FXObject *, FXSelector, void *)
Called when the user press button for delete edge type.
GNEEdgeType * myDefaultEdgeType
default edge type
void fillComboBox()
fill comboBox
void refreshEdgeTypeSelector()
refresh edge type selector
long onCmdRadioButton(FXObject *, FXSelector, void *)
void fillDefaultParameters()
fill default parameters
void clearEdgeTypeSelected()
clear edgeType selected
long onCmdResetEdgeType(FXObject *, FXSelector, void *)
Called when the user press button for reset edge type.
~EdgeTypeSelectorLegend()
destructor
EdgeTypeSelectorLegend(GNECreateEdgeFrame *createEdgeFrameParent)
constructor
long onCmdOpenAttributeDialog(FXObject *, FXSelector, void *)
Called when the user open attribute dialog.
void disableLaneTypeParameters()
disable lane parameters
void setAttributeExistentLaneType(FXObject *obj)
set attribute for existent lane type
FXTextField * mySpeed
textField for speed
long onCmdResetLaneType(FXObject *, FXSelector, void *)
Called when the user press button for reset lane type.
long onCmdSetAttribute(FXObject *, FXSelector, void *)
LaneTypeParameters(GNECreateEdgeFrame *createEdgeFrameParent)
FOX-declaration.
~LaneTypeParameters()
destructor
FXTextField * myDisallow
textField for disallow vehicles
void updateNumLanes(int numLanes)
update numLanes
FXTextField * myAllow
textField for allow vehicles
long onCmdDeleteLaneType(FXObject *, FXSelector, void *)
Called when the user press button for delete lane type.
void setAttributes(GNEEdge *edge, GNEUndoList *undoList) const
set attributes
FXButton * myResetLaneTypeButton
button for reset lane type
FXComboBox * myLaneIndex
ComboBox for laneIndex.
FXTextField * myWidth
textField for width
FXButton * myDisallowButton
Button for disallow vehicles.
void enableLaneTypeParameters()
enable lane parameters
FXButton * myDeleteLaneTypeButton
button for delete lane type
FXButton * myParametersButton
Button for edit generic parameters.
FXTextField * myParameters
textField for Parameters
void refreshLaneTypeParameters()
refresh lane paramters
FXButton * myAllowButton
Button for allow vehicles.
void setAttributeDefaultParameters(FXObject *obj)
set attribute for default parameters
void hideLaneTypeParameters()
hide lane parameters
void showLaneTypeParameters()
show lane parameters
void processClick(const Position &clickedPosition, const GNEViewNetHelper::ObjectsUnderCursor &objectsUnderCursor, const bool oppositeEdge, const bool chainEdge)
handle processClick and set the relative colouring
EdgeTypeSelector * getEdgeTypeSelector() const
getcustom edge selector
void abortEdgeCreation()
abort current edge creation
void show()
show create edge frame
GNECreateEdgeFrame(FXHorizontalFrame *horizontalFrameParent, GNEViewNet *viewNet)
Constructor.
void updateObjectsUnderSnappedCursor(const std::vector< GUIGlObject * > &GUIGlObjects)
update objects under snapped cursor
EdgeTypeParameters * myEdgeTypeParameters
edge parameters
const GNEJunction * getJunctionSource() const
get junction source for new edge
~GNECreateEdgeFrame()
Destructor.
EdgeTypeSelectorLegend * myEdgeTypeSelectorLegend
edge selector legend
GNEJunction * myCreateEdgeSource
source junction for new edge
GNEViewNetHelper::ObjectsUnderCursor myObjectsUnderSnappedCursor
objects under snapped cursor
void hide()
hide create edge frame
EdgeTypeSelector * myEdgeTypeSelector
custom edge selector
A road/street connecting two junctions (netedit-version)
void copyEdgeType(const GNEEdgeType *edgeType, GNEUndoList *undoList)
copy edge attributes from edgeType
NBEdge * getNBEdge() const
returns the internal NBEdge
void copyTemplate(const GNEInspectorFrame::TemplateEditor::EdgeTemplate &edgeTemplate, GNEUndoList *undoList)
copy edge attributes from edgetemplate
void setAttribute(SumoXMLAttr key, const std::string &value, GNEUndoList *undoList)
void setAttribute(SumoXMLAttr key, const std::string &value, GNEUndoList *undoList)
bool isValid(SumoXMLAttr key, const std::string &value)
const std::vector< GNELaneType * > & getLaneTypes() const
get laneTypes
std::string getAttribute(SumoXMLAttr key) const
void removeLaneType(GNELaneType *laneType)
remove laneType
void addLaneType(GNELaneType *laneType, const int position)
add laneType
GNEViewNet * myViewNet
View Net.
FXVerticalFrame * myContentFrame
Vertical frame that holds all widgets of frame.
virtual void show()
show Frame
virtual void hide()
hide Frame
const TemplateEditor::EdgeTemplate & getEdgeTemplate() const
get the template edge (to copy attributes from)
bool hasTemplate() const
there is a template
TemplateEditor * getTemplateEditor() const
get template editor
void markAsCreateEdgeSource()
marks as first junction in createEdge-mode
void unMarkAsCreateEdgeSource()
removes mark as first junction in createEdge-mode
bool isValid(SumoXMLAttr key, const std::string &value)
void setAttribute(SumoXMLAttr key, const std::string &value, GNEUndoList *undoList)
std::string getAttribute(SumoXMLAttr key) const
GNEEdgeType * retrieveEdgeType(const std::string &id, bool failHard=true) const
get edge type by id
GNEEdge * createEdge(GNEJunction *src, GNEJunction *dest, GNEEdge *edgeTemplate, GNEUndoList *undoList, const std::string &suggestedName="", bool wasSplit=false, bool allowDuplicateGeom=false, bool recomputeConnections=true)
creates a new edge (unless an edge with the same geometry already exists)
GNEJunction * createJunction(const Position &pos, GNEUndoList *undoList)
creates a new junction
Dialog for edit parameters.
bool hasCommandGroup() const
Check if undoList has command group.
void p_begin(const std::string &description)
Begin undo command sub-group. This begins a new group of commands that are treated as a single comman...
void p_end()
End undo command sub-group. If the sub-group is still empty, it will be deleted; otherwise,...
class used to group all variables related with objects under cursor after a click over view
void updateObjectUnderCursor(const std::vector< GUIGlObject * > &GUIGlObjects)
update objects under cursor (Called only in onLeftBtnPress(...) function)
GNEJunction * getJunctionFront() const
get front junction or a pointer to nullptr
GNENet * getNet() const
get the net object
GNEViewParent * getViewParent() const
get the net object
GNEUndoList * getUndoList() const
get the undoList object
void setStatusBarText(const std::string &text)
set staturBar text
GNEInspectorFrame * getInspectorFrame() const
get frame for inspect elements
static FXIcon * getIcon(const GUIIcon which)
returns a icon previously defined in the enum GUIIcon
Position snapToActiveGrid(const Position &pos, bool snapXY=true) const
Returns a position that is mapped to the closest grid point if the grid is active.
const std::string & getID() const
static const double UNSPECIFIED_WIDTH
unspecified lane width
A storage for options typed value containers)
double getFloat(const std::string &name) const
Returns the double-value of the named option (only for Option_Float)
std::string getString(const std::string &name) const
Returns the string-value of the named option (only for Option_String)
static OptionsCont & getOptions()
Retrieves the options.
A point in 2D or 3D with translation and scaling methods.
std::map< SumoXMLAttr, std::string > edgeParameters
edge parameters