72 myCreateEdgeFrameParent(createEdgeFrameParent),
75 myCreateDefaultEdgeType =
new FXRadioButton(getCollapsableFrame(),
TL(
"Create default edge"),
78 myCreateDefaultShortEdgeType =
new FXRadioButton(getCollapsableFrame(),
TL(
"Create default edge short"),
81 myNoPedestriansCheckButton =
new FXCheckButton(getCollapsableFrame(),
TL(
"Disallow for pedestrians"),
83 myAddSidewalkCheckButton =
new FXCheckButton(getCollapsableFrame(),
TL(
"Add sidewalk"),
85 myAddBikelaneCheckButton =
new FXCheckButton(getCollapsableFrame(),
TL(
"Add bikelane"),
88 myCreateCustomEdgeType =
new FXRadioButton(getCollapsableFrame(),
TL(
"Use edgeType/template"),
91 myEdgeTypesComboBox =
new MFXComboBoxIcon(getCollapsableFrame(), createEdgeFrameParent->getViewNet()->getViewParent()->getGNEAppWindows()->getStaticTooltipMenu(),
105 myCreateDefaultEdgeType->setCheck(TRUE);
107 for (
const auto& junction : createEdgeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getJunctions()) {
108 if (junction.second->getNBNode()->getCrossings().size() > 0) {
109 enableCheckBoxDisablePedestrians();
124 const int index = myEdgeTypesComboBox->getCurrentItem();
128 if (myCreateDefaultEdgeType->getCheck() || myCreateDefaultShortEdgeType->getCheck()) {
130 myAddSidewalkCheckButton->enable();
131 myAddBikelaneCheckButton->enable();
132 myNoPedestriansCheckButton->enable();
134 myCreateFromTemplate->disable();
136 myEdgeTypesComboBox->disable();
138 myAddEdgeTypeButton->disable();
139 myDeleteEdgeTypeButton->disable();
141 myCreateEdgeFrameParent->myEdgeTypeAttributesEditor->showAttributesEditor(myCreateEdgeFrameParent->getViewNet()->getNet()->getACTemplates()->getDefaultEdgeType(),
true);
143 myCreateEdgeFrameParent->myLaneTypeSelector->showLaneTypeSelector();
144 }
else if (myCreateCustomEdgeType->getCheck()) {
146 myAddSidewalkCheckButton->disable();
147 myAddBikelaneCheckButton->disable();
148 myNoPedestriansCheckButton->disable();
150 myAddEdgeTypeButton->enable();
151 myDeleteEdgeTypeButton->enable();
153 if (myEdgeTypesComboBox->getNumItems() == 0) {
155 myEdgeTypesComboBox->disable();
156 myDeleteEdgeTypeButton->disable();
158 myCreateEdgeFrameParent->myEdgeTypeAttributesEditor->hideAttributesEditor();
159 myCreateEdgeFrameParent->myLaneTypeAttributesEditor->hideAttributesEditor();
162 myCreateFromTemplate->enable();
164 myEdgeTypesComboBox->enable();
166 myDeleteEdgeTypeButton->disable();
168 myCreateEdgeFrameParent->myEdgeTypeAttributesEditor->showAttributesEditor(templateEditor->
getEdgeTemplate(),
true);
169 myCreateEdgeFrameParent->myEdgeTypeAttributesEditor->disableAttributesEditor();
171 myCreateEdgeFrameParent->myLaneTypeSelector->showLaneTypeSelector();
174 myCreateFromTemplate->disable();
176 myEdgeTypesComboBox->enable();
178 myEdgeTypeSelected = myCreateEdgeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->retrieveEdgeType(myEdgeTypesComboBox->getText().text(),
false);
180 if (myEdgeTypeSelected) {
182 myCreateEdgeFrameParent->myEdgeTypeAttributesEditor->showAttributesEditor(myEdgeTypeSelected,
true);
184 myCreateEdgeFrameParent->myLaneTypeSelector->showLaneTypeSelector();
187 myCreateEdgeFrameParent->myEdgeTypeAttributesEditor->hideAttributesEditor();
189 myCreateEdgeFrameParent->myLaneTypeSelector->hideLaneTypeSelector();
202 for (
int i = 0; i < myEdgeTypesComboBox->getNumItems(); i++) {
203 if (myEdgeTypesComboBox->getItemText(i) == oldID) {
204 myEdgeTypesComboBox->updateIconItem(i, newID.c_str());
212 return (myCreateDefaultEdgeType->getCheck() == TRUE);
218 return (myCreateDefaultShortEdgeType->getCheck() == TRUE);
224 if (myCreateEdgeFrameParent->getViewNet()->getViewParent()->getInspectorFrame()->getTemplateEditor()->getEdgeTemplate()) {
225 if ((myCreateCustomEdgeType->getCheck() == TRUE) && (myEdgeTypesComboBox->getCurrentItem() == 0)) {
238 myNoPedestriansCheckButton->setCheck(TRUE);
244 if ((myCreateDefaultEdgeType->getCheck() == TRUE) || (myCreateDefaultShortEdgeType->getCheck() == TRUE)) {
247 return myEdgeTypeSelected;
254 return (myNoPedestriansCheckButton->getCheck() == TRUE);
260 return (myAddSidewalkCheckButton->getCheck() == TRUE);
266 return (myAddBikelaneCheckButton->getCheck() == TRUE);
272 myEdgeTypeSelected =
nullptr;
274 if (myCurrentIndex < 0) {
282 for (
int i = 0; i < myEdgeTypesComboBox->getNumItems(); i++) {
283 if (myEdgeTypesComboBox->getItemText(i) == edgeType->
getID()) {
285 myEdgeTypesComboBox->setCurrentItem(i);
288 myCreateDefaultEdgeType->setCheck(FALSE);
289 myCreateDefaultShortEdgeType->setCheck(FALSE);
290 myCreateCustomEdgeType->setCheck(TRUE);
292 refreshEdgeTypeSelector();
300 myCreateDefaultEdgeType->setCheck(FALSE);
301 myCreateDefaultShortEdgeType->setCheck(FALSE);
302 myCreateCustomEdgeType->setCheck(TRUE);
303 refreshEdgeTypeSelector();
310 if (obj == myCreateDefaultEdgeType) {
311 myCreateDefaultEdgeType->setCheck(TRUE);
312 myCreateDefaultShortEdgeType->setCheck(FALSE);
313 myCreateCustomEdgeType->setCheck(FALSE);
314 }
else if (obj == myCreateDefaultShortEdgeType) {
315 myCreateDefaultEdgeType->setCheck(FALSE);
316 myCreateDefaultShortEdgeType->setCheck(TRUE);
317 myCreateCustomEdgeType->setCheck(FALSE);
319 myCreateDefaultEdgeType->setCheck(FALSE);
320 myCreateDefaultShortEdgeType->setCheck(FALSE);
321 myCreateCustomEdgeType->setCheck(TRUE);
324 refreshEdgeTypeSelector();
332 auto net = myCreateEdgeFrameParent->getViewNet()->getNet();
335 myCreateEdgeFrameParent->getViewNet()->getUndoList()->begin(edgeType,
TL(
"create new edge type"));
336 myCreateEdgeFrameParent->getViewNet()->getUndoList()->add(
new GNEChange_EdgeType(edgeType,
true),
true);
337 myCreateEdgeFrameParent->getViewNet()->getUndoList()->end();
339 myEdgeTypeSelected = edgeType;
341 myCurrentIndex = (myEdgeTypesComboBox->getNumItems() - 1);
343 refreshEdgeTypeSelector();
351 if (myEdgeTypeSelected && (myEdgeTypeSelected->getID() == myEdgeTypesComboBox->getText().text())) {
352 myEdgeTypeSelected =
nullptr;
357 myCreateEdgeFrameParent->getViewNet()->getUndoList()->begin(edgeType,
TL(
"delete edge type"));
358 myCreateEdgeFrameParent->getViewNet()->getUndoList()->add(
new GNEChange_EdgeType(edgeType,
false),
true);
359 myCreateEdgeFrameParent->getViewNet()->getUndoList()->end();
361 refreshEdgeTypeSelector();
369 myCurrentIndex = myEdgeTypesComboBox->getCurrentItem();
371 refreshEdgeTypeSelector();
378 if (myCreateEdgeFrameParent->getViewNet()->getViewParent()->getInspectorFrame()->getTemplateEditor()->getEdgeTemplate()) {
380 auto net = myCreateEdgeFrameParent->getViewNet()->getNet();
383 edgeType->
copyTemplate(myCreateEdgeFrameParent->getViewNet()->getViewParent()->getInspectorFrame()->getTemplateEditor()->getEdgeTemplate());
385 myCreateEdgeFrameParent->getViewNet()->getUndoList()->begin(edgeType,
TL(
"create new edge type"));
386 myCreateEdgeFrameParent->getViewNet()->getUndoList()->add(
new GNEChange_EdgeType(edgeType,
true),
true);
387 myCreateEdgeFrameParent->getViewNet()->getUndoList()->end();
389 myEdgeTypeSelected = edgeType;
391 myCurrentIndex = (myEdgeTypesComboBox->getNumItems() - 1);
393 refreshEdgeTypeSelector();
401 if (myAddSidewalkCheckButton->getCheck() == TRUE) {
402 myNoPedestriansCheckButton->setCheck(TRUE);
403 myNoPedestriansCheckButton->disable();
405 myNoPedestriansCheckButton->enable();
408 myCreateEdgeFrameParent->myEdgeTypeAttributesEditor->showAttributesEditor(myCreateEdgeFrameParent->getViewNet()->getNet()->getACTemplates()->getDefaultEdgeType(),
true);
418 const auto& edgeTypes = myCreateEdgeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getEdgeTypes();
420 myEdgeTypesComboBox->clearItems();
425 myEdgeTypesComboBox->appendIconItem((
TL(
"template: ") + templateEditor->
getEdgeTemplate()->
getID()).c_str(),
nullptr);
427 if (edgeTypes.size() > 0) {
429 for (
const auto& edgeType : edgeTypes) {
430 myEdgeTypesComboBox->appendIconItem(edgeType.second->getID().c_str(), edgeType.second->getACIcon());
433 if ((myCurrentIndex < 0) || (myCurrentIndex >= myEdgeTypesComboBox->getNumItems())) {
434 myCurrentIndex = myEdgeTypesComboBox->getNumItems() - 1;
436 myEdgeTypesComboBox->setCurrentItem(myCurrentIndex);
437 myEdgeTypesComboBox->enable();
439 myEdgeTypesComboBox->disable();
449 myCreateEdgeFrameParent(createEdgeFrameParent),
474 refreshLaneTypeSelector();
483 myCreateEdgeFrameParent->myLaneTypeAttributesEditor->hideAttributesEditor();
492 myLaneTypesComboBox->clearItems();
494 if (myCreateEdgeFrameParent->myEdgeTypeSelector->useEdgeTemplate()) {
495 const GNEEdgeTemplate* edgeTemplate = myCreateEdgeFrameParent->getViewNet()->getViewParent()->getInspectorFrame()->getTemplateEditor()->getEdgeTemplate();
498 myLaneTypesComboBox->appendIconItem(laneTemplate->getAttribute(
SUMO_ATTR_ID).c_str(), laneTemplate->getACIcon());
503 myCreateEdgeFrameParent->myLaneTypeAttributesEditor->showAttributesEditor(edgeTemplate->
getLaneTemplates().at(myLaneIndex),
false);
505 myCreateEdgeFrameParent->myLaneTypeAttributesEditor->disableAttributesEditor();
507 myAddLaneTypeButton->disable();
508 myDeleteLaneTypeButton->disable();
511 const GNEEdgeType* edgeType = myCreateEdgeFrameParent->myEdgeTypeSelector->getEdgeTypeSelected();
514 myLaneTypesComboBox->appendIconItem(laneType->getAttribute(
SUMO_ATTR_ID).c_str(), laneType->getACIcon());
519 myCreateEdgeFrameParent->myLaneTypeAttributesEditor->showAttributesEditor(edgeType->
getLaneTypes().at(myLaneIndex),
false);
521 myAddLaneTypeButton->enable();
524 myDeleteLaneTypeButton->enable();
526 myDeleteLaneTypeButton->disable();
537 if (myCreateEdgeFrameParent->myEdgeTypeSelector->useDefaultEdgeType() ||
538 myCreateEdgeFrameParent->myEdgeTypeSelector->useDefaultEdgeTypeShort()) {
540 auto edgeType = myCreateEdgeFrameParent->getViewNet()->getNet()->getACTemplates()->getDefaultEdgeType();
543 refreshLaneTypeSelector();
545 myLaneTypesComboBox->setCurrentItem(myLaneTypesComboBox->getNumItems() - 1);
546 }
else if (!myCreateEdgeFrameParent->myEdgeTypeSelector->useEdgeTemplate()) {
548 const auto edgeType = myCreateEdgeFrameParent->myEdgeTypeSelector->getEdgeTypeSelected();
553 for (
const auto& laneType : edgeType->getLaneTypes()) {
559 myCreateEdgeFrameParent->getViewNet()->getUndoList()->begin(
GUIIcon::LANETYPE,
TL(
"add laneType"));
560 myCreateEdgeFrameParent->getViewNet()->getUndoList()->add(
new GNEChange_EdgeType(edgeType,
false),
true);
561 myCreateEdgeFrameParent->getViewNet()->getUndoList()->add(
new GNEChange_EdgeType(newEdgeType,
true),
true);
562 myCreateEdgeFrameParent->getViewNet()->getUndoList()->end();
564 myLaneIndex = myLaneTypesComboBox->getNumItems() - 1;
566 myCreateEdgeFrameParent->myEdgeTypeSelector->setCurrentEdgeType(newEdgeType);
576 if (myCreateEdgeFrameParent->myEdgeTypeSelector->useDefaultEdgeType() ||
577 myCreateEdgeFrameParent->myEdgeTypeSelector->useDefaultEdgeTypeShort()) {
579 myCreateEdgeFrameParent->getViewNet()->getNet()->getACTemplates()->getDefaultEdgeType()->removeLaneType(myLaneIndex);
581 refreshLaneTypeSelector();
583 myLaneTypesComboBox->setCurrentItem(0);
584 }
else if (!myCreateEdgeFrameParent->myEdgeTypeSelector->useEdgeTemplate()) {
586 const auto edgeType = myCreateEdgeFrameParent->myEdgeTypeSelector->getEdgeTypeSelected();
591 for (
int i = 0; i < (int)edgeType->getLaneTypes().size(); i++) {
592 if (i != myLaneIndex) {
597 myCreateEdgeFrameParent->getViewNet()->getUndoList()->begin(
GUIIcon::LANETYPE,
TL(
"remove laneType"));
598 myCreateEdgeFrameParent->getViewNet()->getUndoList()->add(
new GNEChange_EdgeType(edgeType,
false),
true);
599 myCreateEdgeFrameParent->getViewNet()->getUndoList()->add(
new GNEChange_EdgeType(newEdgeType,
true),
true);
600 myCreateEdgeFrameParent->getViewNet()->getUndoList()->end();
602 myLaneIndex = myLaneTypesComboBox->getNumItems() - 1;
604 myCreateEdgeFrameParent->myEdgeTypeSelector->setCurrentEdgeType(newEdgeType);
614 myLaneIndex = myLaneTypesComboBox->getCurrentItem();
616 refreshLaneTypeSelector();
624 if (myLaneIndex > myLaneTypesComboBox->getNumItems()) {
628 myLaneTypesComboBox->setCurrentItem(myLaneIndex);
637 std::ostringstream information;
640 <<
"- " <<
TL(
"ESC:") <<
"\n"
641 <<
" " <<
TL(
"Deselect origin") <<
"\n"
642 <<
"- " <<
TL(
"Control+Click:") <<
"\n"
643 <<
" " <<
TL(
"Move view") <<
"\n"
644 <<
"- " <<
TL(
"Shift+Click:") <<
"\n"
645 <<
" " <<
TL(
"Splits edge in both directions") <<
"\n"
646 <<
"- " <<
TL(
"Alt+Shift+Click:") <<
"\n"
647 <<
" " <<
TL(
"Splits edge in one direction");
660 GNEFrame(viewParent, viewNet,
TL(
"Create Edge")),
680 const bool oppositeEdge,
const bool chainEdge) {
684 WRITE_WARNING(
TL(
"Select either default edgeType or short edge or a custom edgeType or template"));
699 if (junction ==
nullptr) {
728 std::cout <<
"edge created without an open CommandGroup" << std::endl;
793 std::cout <<
"edge created without an open CommandGroup" << std::endl;
886 std::vector<std::string> disallowList = GNEAttributeCarrier::parse<std::vector<std::string> >(lane->getAttribute(
SUMO_ATTR_DISALLOW));
888 if (std::find(disallowList.begin(), disallowList.end(),
"pedestrian") == disallowList.end()) {
889 disallowList.push_back(
"pedestrian");
900 bool bikelaneFound =
false;
905 bikelaneFound =
true;
909 if (!bikelaneFound) {
912 if (bikelaneWidth !=
"default") {
921 bool sidewalkFound =
false;
926 sidewalkFound =
true;
930 if (!sidewalkFound) {
933 if (sidewalkWidth !=
"default") {
FXDEFMAP(GNECreateEdgeFrame::EdgeTypeSelector) EdgeTypeSelectorMap[]
@ MID_GNE_CREATEEDGEFRAME_CREATEFROMTEMPLATE
create edge type from template
@ MID_GNE_CREATEEDGEFRAME_CHECKBUTTON
check button
@ MID_GNE_CREATEEDGEFRAME_SELECTTEMPLATE
select edge template
@ MID_GNE_CREATEEDGEFRAME_DELETE
delete edge type
@ MID_GNE_CREATEEDGEFRAME_ADD
add new edge type
@ MID_GNE_CREATEEDGEFRAME_SELECTLANE
select lane (used for default and template edges)
@ MID_GNE_CREATEEDGEFRAME_SELECTRADIOBUTTON
#define GUIDesignTextColorRed
red color (for invalid text)
#define GUIDesignComboBoxAttribute
Combo box static (cannot be edited) extended over the matrix column.
#define GUIDesignAuxiliarHorizontalFrame
design for auxiliar (Without borders) horizontal frame used to pack another frames
#define GUIDesignComboBoxVisibleItems
#define GUIDesignTextColorBlack
black color (for correct text)
#define GUIDesignCheckButton
checkButton placed in left position
#define GUIDesignRadioButton
#define GUIDesignLabelFrameInformation
label extended over frame without thick and with text justify to left, used to show information in fr...
#define WRITE_WARNING(msg)
@ SVC_BICYCLE
vehicle is a bicycle
@ SVC_PEDESTRIAN
pedestrian
@ SUMO_ATTR_BIKELANEWIDTH
@ SUMO_ATTR_SIDEWALKWIDTH
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
const std::string getID() const override
get ID (all Attribute Carriers have one)
GNENet * getNet() const
get pointer to net
bool checkAttributes(const bool showWarning)
check if current edited attributes are valid
GNEEdgeType * getEdgeTypeSelected() const
get edgeType selected
~EdgeTypeSelector()
destructor
void useTemplate()
use template
bool useEdgeTemplate() const
check if we have to use edge template
bool useDefaultEdgeTypeShort() const
check if we're using default edge type short
long onUpdCheckButtons(FXObject *, FXSelector, void *)
Called when check buttons are updated.
bool isAddBikelaneEnabled() const
check if add bikelane check button is enabled
void updateIDinComboBox(const std::string &oldID, const std::string &newID)
update id in comboBox
long onCmdAddEdgeType(FXObject *, FXSelector, void *)
Called when the user press button for add a new edge type.
void enableCheckBoxDisablePedestrians()
void enable checkbox for disable pedestrians
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.
long onCmdCreateFromTemplate(FXObject *, FXSelector, void *)
Called when the user press create edgeType from Template.
bool isAddSidewalkEnabled() const
check if add sidewalk check button is enabled
void fillComboBox()
fill comboBox
void refreshEdgeTypeSelector()
refresh edge type selector
bool isNoPedestriansEnabled() const
check if no pedestrian check button is enabled
long onCmdRadioButton(FXObject *, FXSelector, void *)
void setCurrentEdgeType(const GNEEdgeType *edgeType)
set current edgeType
void clearEdgeTypeSelected()
clear edgeType selected
long onCmdSelectEdgeTypeOrTemplate(FXObject *, FXSelector, void *)
Called when the user press select an edgeType or template in comboBox.
void updateComboBox()
update comboBox
long onCmdSelectLaneType(FXObject *, FXSelector, void *)
Called when the user press select an laneType in comboBox.
FXButton * myDeleteLaneTypeButton
button for delete lane type
MFXComboBoxIcon * myLaneTypesComboBox
ComboBox for lane types.
void showLaneTypeSelector()
show lane type selector
LaneTypeSelector(GNECreateEdgeFrame *createEdgeFrameParent)
FOX-declaration.
void hideLaneTypeSelector()
hide lane type selector
~LaneTypeSelector()
destructor
long onCmdAddLaneType(FXObject *, FXSelector, void *)
FXButton * myAddLaneTypeButton
button for create new lane type
long onCmdDeleteLaneType(FXObject *, FXSelector, void *)
Called when the user press button for delete lane type.
void refreshLaneTypeSelector()
refresh LaneTypeSelector
Legend(GNECreateEdgeFrame *createEdgeFrameParent)
constructor
EdgeTypeSelector * getEdgeTypeSelector() const
get edgeType selector
GNEJunction * myJunctionSource
source junction for new edge
void processClick(const Position &clickedPosition, const GNEViewNetHelper::ViewObjectsSelector &viewObjects, const bool oppositeEdge, const bool chainEdge)
handle processClick and set the relative coloring
void abortEdgeCreation()
abort current edge creation
void show()
show create edge frame
GNECreateEdgeFrame::LaneTypeSelector * myLaneTypeSelector
lane type selector
void addSidewalk(GNEEdge *edge, const std::string &sidewalkWidth) const
add sidewalk in the given edge
GNEAttributesEditor * getLaneTypeAttributes() const
get laneType attributes
const GNEJunction * getJunctionSource() const
get junction source for new edge
~GNECreateEdgeFrame()
Destructor.
GNEAttributesEditor * getEdgeTypeAttributes() const
get edgeType attributes
GNEAttributesEditor * myLaneTypeAttributesEditor
internal laneType attributes
GNEAttributesEditor * myEdgeTypeAttributesEditor
internal edgeType attributes
void disablePedestrians(GNEEdge *edge) const
disable pedestrians in the given edge (within undoRedo)
GNECreateEdgeFrame::Legend * myLegend
Legend.
GNECreateEdgeFrame(GNEViewParent *viewParent, GNEViewNet *viewNet)
Constructor.
void addBikelane(GNEEdge *edge, const std::string &bikelaneWidth) const
add bikelane in the given edge
void hide()
hide create edge frame
EdgeTypeSelector * myEdgeTypeSelector
edge type selector
void setUseEdgeTemplate()
set default to using edge template
LaneTypeSelector * getLaneTypeSelector()
get lane type selector
void copyEdgeType(const GNEEdgeType *edgeType, GNEUndoList *undoList)
copy edge attributes from edgeType
NBEdge * getNBEdge() const
returns the internal NBEdge
void copyTemplate(const GNEEdgeTemplate *edgeTemplate, GNEUndoList *undoList)
copy edge attributes from edgetemplate
std::string getAttribute(SumoXMLAttr key) const override
const std::vector< GNELaneTemplate * > & getLaneTemplates() const
get vector with the lane templates of this edge
void copyTemplate(const GNEEdgeTemplate *edgeTemplate)
copy edge template
const std::vector< GNELaneType * > & getLaneTypes() const
get laneTypes
void addLaneType(GNELaneType *laneType)
add laneType
GNEViewNet * getViewNet() const
get view net
GNEViewNet * myViewNet
FOX need this.
virtual void show()
show Frame
virtual void hide()
hide Frame
GNEGroupBoxModule (based on FXGroupBox)
FXVerticalFrame * getCollapsableFrame()
get collapsable frame (used by all elements that will be collapsed if button is toggled)
const GNEHierarchicalContainerChildren< GNELane * > & getChildLanes() const
get child lanes
GNEEdgeTemplate * getEdgeTemplate() const
get edge template (to copy attributes from)
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
GNEEdgeType * getDefaultEdgeType() const
get default edge type
std::vector< GNEEdge * > retrieveEdges(GNEJunction *from, GNEJunction *to) const
get all edges by from and to GNEJunction
GNEEdgeType * retrieveEdgeType(const std::string &id, bool hardFail=true) const
get edge type by id
GNENetHelper::ACTemplate * getACTemplates() const
get all attribute carriers templates used in this net
GNENetHelper::AttributeCarriers * getAttributeCarriers() const
get all attribute carriers used in this net
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
GNEViewNet * getViewNet() const
get view net (used for simplify code)
void end()
End undo command sub-group. If the sub-group is still empty, it will be deleted; otherwise,...
bool hasCommandGroup() const
Check if undoList has command group.
void begin(GUIIcon icon, const std::string &description)
Begin undo command sub-group with current supermode. This begins a new group of commands that are tre...
class used to group all variables related with objects under cursor after a click over view
GNEJunction * getJunctionFront() const
get front junction or a pointer to nullptr
GNENet * getNet() const
get the net object
void updateObjectsInPosition(const Position &pos)
update objects and boundaries in position
GNEViewParent * getViewParent() const
get the net object
GNEUndoList * getUndoList() const
get the undoList object
bool addRestrictedLane(GNELane *lane, SUMOVehicleClass vclass, const bool insertAtFront)
add restricted lane
void setStatusBarText(const std::string &text)
set statusBar text
A single child window which contains a view of the simulation area.
GNEApplicationWindow * getGNEAppWindows() const
get GNE Application Windows
GNEInspectorFrame * getInspectorFrame() const
get frame for inspect elements
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
MFXStaticToolTip * getStaticTooltipMenu() const
get static toolTip for menus
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 GUIVisualizationSettings & getVisualisationSettings() const
get visualization settings (read only)
bool showGrid
Information whether a grid shall be shown.
A list item which allows for custom coloring.
const std::string & getID() const
A point in 2D or 3D with translation and scaling methods.