71 myCreateEdgeFrameParent(createEdgeFrameParent),
72 myDefaultEdgeType(new
GNEEdgeType(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"),
105 myCreateDefaultEdgeType->setCheck(TRUE);
107 for (
const auto& junction : createEdgeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getJunctions()) {
108 if (junction.second->getNBNode()->getCrossings().size() > 0) {
109 enableCheckBoxDisablePedestrians();
125 const int index = myEdgeTypesComboBox->getCurrentItem();
129 if (myCreateDefaultEdgeType->getCheck() || myCreateDefaultShortEdgeType->getCheck()) {
131 myAddSidewalkCheckButton->enable();
132 myAddBikelaneCheckButton->enable();
133 myNoPedestriansCheckButton->enable();
135 myCreateFromTemplate->disable();
137 myEdgeTypesComboBox->disable();
139 myAddEdgeTypeButton->disable();
140 myDeleteEdgeTypeButton->disable();
142 myCreateEdgeFrameParent->myEdgeTypeAttributesEditor->showAttributesEditor(myDefaultEdgeType,
true);
144 myCreateEdgeFrameParent->myLaneTypeSelector->showLaneTypeSelector();
145 }
else if (myCreateCustomEdgeType->getCheck()) {
147 myAddSidewalkCheckButton->disable();
148 myAddBikelaneCheckButton->disable();
149 myNoPedestriansCheckButton->disable();
151 myAddEdgeTypeButton->enable();
152 myDeleteEdgeTypeButton->enable();
154 if (myEdgeTypesComboBox->getNumItems() == 0) {
156 myEdgeTypesComboBox->disable();
157 myDeleteEdgeTypeButton->disable();
159 myCreateEdgeFrameParent->myEdgeTypeAttributesEditor->hideAttributesEditor();
160 myCreateEdgeFrameParent->myLaneTypeAttributesEditor->hideAttributesEditor();
163 myCreateFromTemplate->enable();
165 myEdgeTypesComboBox->enable();
167 myDeleteEdgeTypeButton->disable();
169 myCreateEdgeFrameParent->myEdgeTypeAttributesEditor->showAttributesEditor(templateEditor->
getEdgeTemplate(),
true);
170 myCreateEdgeFrameParent->myEdgeTypeAttributesEditor->disableAttributesEditor();
172 myCreateEdgeFrameParent->myLaneTypeSelector->showLaneTypeSelector();
175 myCreateFromTemplate->disable();
177 myEdgeTypesComboBox->enable();
179 myEdgeTypeSelected = myCreateEdgeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->retrieveEdgeType(myEdgeTypesComboBox->getText().text(),
false);
181 if (myEdgeTypeSelected) {
183 myCreateEdgeFrameParent->myEdgeTypeAttributesEditor->showAttributesEditor(myEdgeTypeSelected,
true);
185 myCreateEdgeFrameParent->myLaneTypeSelector->showLaneTypeSelector();
188 myCreateEdgeFrameParent->myEdgeTypeAttributesEditor->hideAttributesEditor();
190 myCreateEdgeFrameParent->myLaneTypeSelector->hideLaneTypeSelector();
192 myEdgeTypesComboBox->setTextColor(FXRGB(255, 0, 0));
203 for (
int i = 0; i < myEdgeTypesComboBox->getNumItems(); i++) {
204 if (myEdgeTypesComboBox->getItemText(i) == oldID) {
205 myEdgeTypesComboBox->updateIconItem(i, newID.c_str());
213 return (myCreateDefaultEdgeType->getCheck() == TRUE);
219 return (myCreateDefaultShortEdgeType->getCheck() == TRUE);
225 if (myCreateEdgeFrameParent->getViewNet()->getViewParent()->getInspectorFrame()->getTemplateEditor()->getEdgeTemplate()) {
226 if ((myCreateCustomEdgeType->getCheck() == TRUE) && (myEdgeTypesComboBox->getCurrentItem() == 0)) {
239 myNoPedestriansCheckButton->setCheck(TRUE);
245 return myDefaultEdgeType;
251 if ((myCreateDefaultEdgeType->getCheck() == TRUE) || (myCreateDefaultShortEdgeType->getCheck() == TRUE)) {
252 return myDefaultEdgeType;
254 return myEdgeTypeSelected;
261 return (myNoPedestriansCheckButton->getCheck() == TRUE);
267 return (myAddSidewalkCheckButton->getCheck() == TRUE);
273 return (myAddBikelaneCheckButton->getCheck() == TRUE);
279 myEdgeTypeSelected =
nullptr;
281 if (myCurrentIndex < 0) {
289 for (
int i = 0; i < myEdgeTypesComboBox->getNumItems(); i++) {
290 if (myEdgeTypesComboBox->getItemText(i) == edgeType->
getID()) {
292 myEdgeTypesComboBox->setCurrentItem(i);
295 myCreateDefaultEdgeType->setCheck(FALSE);
296 myCreateDefaultShortEdgeType->setCheck(FALSE);
297 myCreateCustomEdgeType->setCheck(TRUE);
299 refreshEdgeTypeSelector();
307 myCreateDefaultEdgeType->setCheck(FALSE);
308 myCreateDefaultShortEdgeType->setCheck(FALSE);
309 myCreateCustomEdgeType->setCheck(TRUE);
310 refreshEdgeTypeSelector();
317 if (obj == myCreateDefaultEdgeType) {
318 myCreateDefaultEdgeType->setCheck(TRUE);
319 myCreateDefaultShortEdgeType->setCheck(FALSE);
320 myCreateCustomEdgeType->setCheck(FALSE);
321 }
else if (obj == myCreateDefaultShortEdgeType) {
322 myCreateDefaultEdgeType->setCheck(FALSE);
323 myCreateDefaultShortEdgeType->setCheck(TRUE);
324 myCreateCustomEdgeType->setCheck(FALSE);
326 myCreateDefaultEdgeType->setCheck(FALSE);
327 myCreateDefaultShortEdgeType->setCheck(FALSE);
328 myCreateCustomEdgeType->setCheck(TRUE);
331 refreshEdgeTypeSelector();
341 myCreateEdgeFrameParent->getViewNet()->getUndoList()->begin(edgeType,
TL(
"create new edge type"));
342 myCreateEdgeFrameParent->getViewNet()->getUndoList()->add(
new GNEChange_EdgeType(edgeType,
true),
true);
343 myCreateEdgeFrameParent->getViewNet()->getUndoList()->end();
345 myEdgeTypeSelected = edgeType;
347 myCurrentIndex = (myEdgeTypesComboBox->getNumItems() - 1);
349 refreshEdgeTypeSelector();
357 if (myEdgeTypeSelected && (myEdgeTypeSelected->getID() == myEdgeTypesComboBox->getText().text())) {
358 myEdgeTypeSelected =
nullptr;
363 myCreateEdgeFrameParent->getViewNet()->getUndoList()->begin(edgeType,
TL(
"delete edge type"));
364 myCreateEdgeFrameParent->getViewNet()->getUndoList()->add(
new GNEChange_EdgeType(edgeType,
false),
true);
365 myCreateEdgeFrameParent->getViewNet()->getUndoList()->end();
367 refreshEdgeTypeSelector();
375 myCurrentIndex = myEdgeTypesComboBox->getCurrentItem();
377 refreshEdgeTypeSelector();
384 if (myCreateEdgeFrameParent->getViewNet()->getViewParent()->getInspectorFrame()->getTemplateEditor()->getEdgeTemplate()) {
388 edgeType->
copyTemplate(myCreateEdgeFrameParent->getViewNet()->getViewParent()->getInspectorFrame()->getTemplateEditor()->getEdgeTemplate());
390 myCreateEdgeFrameParent->getViewNet()->getUndoList()->begin(edgeType,
TL(
"create new edge type"));
391 myCreateEdgeFrameParent->getViewNet()->getUndoList()->add(
new GNEChange_EdgeType(edgeType,
true),
true);
392 myCreateEdgeFrameParent->getViewNet()->getUndoList()->end();
394 myEdgeTypeSelected = edgeType;
396 myCurrentIndex = (myEdgeTypesComboBox->getNumItems() - 1);
398 refreshEdgeTypeSelector();
406 if (myAddSidewalkCheckButton->getCheck() == TRUE) {
407 myNoPedestriansCheckButton->setCheck(TRUE);
408 myNoPedestriansCheckButton->disable();
410 myNoPedestriansCheckButton->enable();
413 myCreateEdgeFrameParent->myEdgeTypeAttributesEditor->showAttributesEditor(myDefaultEdgeType,
true);
423 const auto& edgeTypes = myCreateEdgeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getEdgeTypes();
425 myEdgeTypesComboBox->clearItems();
427 myEdgeTypesComboBox->setTextColor(FXRGB(0, 0, 0));
430 myEdgeTypesComboBox->appendIconItem((
TL(
"template: ") + templateEditor->
getEdgeTemplate()->
getID()).c_str(),
nullptr);
432 if (edgeTypes.size() > 0) {
434 for (
const auto& edgeType : edgeTypes) {
435 myEdgeTypesComboBox->appendIconItem(edgeType.second->getID().c_str(), edgeType.second->getACIcon());
438 if ((myCurrentIndex < 0) || (myCurrentIndex >= myEdgeTypesComboBox->getNumItems())) {
439 myCurrentIndex = myEdgeTypesComboBox->getNumItems() - 1;
441 myEdgeTypesComboBox->setCurrentItem(myCurrentIndex);
442 myEdgeTypesComboBox->enable();
444 myEdgeTypesComboBox->disable();
454 myCreateEdgeFrameParent(createEdgeFrameParent),
479 refreshLaneTypeSelector();
488 myCreateEdgeFrameParent->myLaneTypeAttributesEditor->hideAttributesEditor();
497 myLaneTypesComboBox->clearItems();
499 if (myCreateEdgeFrameParent->myEdgeTypeSelector->useEdgeTemplate()) {
500 const GNEEdgeTemplate* edgeTemplate = myCreateEdgeFrameParent->getViewNet()->getViewParent()->getInspectorFrame()->getTemplateEditor()->getEdgeTemplate();
503 myLaneTypesComboBox->appendIconItem(laneTemplate->getAttribute(
SUMO_ATTR_ID).c_str(), laneTemplate->getACIcon());
508 myCreateEdgeFrameParent->myLaneTypeAttributesEditor->showAttributesEditor(edgeTemplate->
getLaneTemplates().at(myLaneIndex),
false);
510 myCreateEdgeFrameParent->myLaneTypeAttributesEditor->disableAttributesEditor();
512 myAddLaneTypeButton->disable();
513 myDeleteLaneTypeButton->disable();
516 const GNEEdgeType* edgeType = myCreateEdgeFrameParent->myEdgeTypeSelector->getEdgeTypeSelected();
519 myLaneTypesComboBox->appendIconItem(laneType->getAttribute(
SUMO_ATTR_ID).c_str(), laneType->getACIcon());
524 myCreateEdgeFrameParent->myLaneTypeAttributesEditor->showAttributesEditor(edgeType->
getLaneTypes().at(myLaneIndex),
false);
526 myAddLaneTypeButton->enable();
529 myDeleteLaneTypeButton->enable();
531 myDeleteLaneTypeButton->disable();
542 if (myCreateEdgeFrameParent->myEdgeTypeSelector->useDefaultEdgeType() ||
543 myCreateEdgeFrameParent->myEdgeTypeSelector->useDefaultEdgeTypeShort()) {
545 myCreateEdgeFrameParent->myEdgeTypeSelector->getDefaultEdgeType()->addLaneType(
new GNELaneType(myCreateEdgeFrameParent->myEdgeTypeSelector->getDefaultEdgeType()));
547 refreshLaneTypeSelector();
549 myLaneTypesComboBox->setCurrentItem(myLaneTypesComboBox->getNumItems() - 1);
550 }
else if (!myCreateEdgeFrameParent->myEdgeTypeSelector->useEdgeTemplate()) {
552 const auto edgeType = myCreateEdgeFrameParent->myEdgeTypeSelector->getEdgeTypeSelected();
557 for (
const auto& laneType : edgeType->getLaneTypes()) {
563 myCreateEdgeFrameParent->getViewNet()->getUndoList()->begin(
GUIIcon::LANETYPE,
TL(
"add laneType"));
564 myCreateEdgeFrameParent->getViewNet()->getUndoList()->add(
new GNEChange_EdgeType(edgeType,
false),
true);
565 myCreateEdgeFrameParent->getViewNet()->getUndoList()->add(
new GNEChange_EdgeType(newEdgeType,
true),
true);
566 myCreateEdgeFrameParent->getViewNet()->getUndoList()->end();
568 myLaneIndex = myLaneTypesComboBox->getNumItems() - 1;
570 myCreateEdgeFrameParent->myEdgeTypeSelector->setCurrentEdgeType(newEdgeType);
580 if (myCreateEdgeFrameParent->myEdgeTypeSelector->useDefaultEdgeType() ||
581 myCreateEdgeFrameParent->myEdgeTypeSelector->useDefaultEdgeTypeShort()) {
583 myCreateEdgeFrameParent->myEdgeTypeSelector->getDefaultEdgeType()->removeLaneType(myLaneIndex);
585 refreshLaneTypeSelector();
587 myLaneTypesComboBox->setCurrentItem(0);
588 }
else if (!myCreateEdgeFrameParent->myEdgeTypeSelector->useEdgeTemplate()) {
590 const auto edgeType = myCreateEdgeFrameParent->myEdgeTypeSelector->getEdgeTypeSelected();
595 for (
int i = 0; i < (int)edgeType->getLaneTypes().size(); i++) {
596 if (i != myLaneIndex) {
601 myCreateEdgeFrameParent->getViewNet()->getUndoList()->begin(
GUIIcon::LANETYPE,
TL(
"remove laneType"));
602 myCreateEdgeFrameParent->getViewNet()->getUndoList()->add(
new GNEChange_EdgeType(edgeType,
false),
true);
603 myCreateEdgeFrameParent->getViewNet()->getUndoList()->add(
new GNEChange_EdgeType(newEdgeType,
true),
true);
604 myCreateEdgeFrameParent->getViewNet()->getUndoList()->end();
606 myLaneIndex = myLaneTypesComboBox->getNumItems() - 1;
608 myCreateEdgeFrameParent->myEdgeTypeSelector->setCurrentEdgeType(newEdgeType);
618 myLaneIndex = myLaneTypesComboBox->getCurrentItem();
620 refreshLaneTypeSelector();
628 if (myLaneIndex > myLaneTypesComboBox->getNumItems()) {
632 myLaneTypesComboBox->setCurrentItem(myLaneIndex);
641 std::ostringstream information;
644 <<
"- " <<
TL(
"ESC:") <<
"\n"
645 <<
" " <<
TL(
"Deselect origin") <<
"\n"
646 <<
"- " <<
TL(
"Control+Click:") <<
"\n"
647 <<
" " <<
TL(
"Move view") <<
"\n"
648 <<
"- " <<
TL(
"Shift+Click:") <<
"\n"
649 <<
" " <<
TL(
"Splits edge in both directions") <<
"\n"
650 <<
"- " <<
TL(
"Alt+Shift+Click:") <<
"\n"
651 <<
" " <<
TL(
"Splits edge in one direction");
664 GNEFrame(viewParent, viewNet,
TL(
"Create Edge")),
684 const bool oppositeEdge,
const bool chainEdge) {
688 WRITE_WARNING(
TL(
"Select either default edgeType or short edge or a custom edgeType or template"));
701 if (junction ==
nullptr) {
730 std::cout <<
"edge created without an open CommandGroup" << std::endl;
795 std::cout <<
"edge created without an open CommandGroup" << std::endl;
888 std::vector<std::string> disallowList = GNEAttributeCarrier::parse<std::vector<std::string> >(lane->getAttribute(
SUMO_ATTR_DISALLOW));
890 if (std::find(disallowList.begin(), disallowList.end(),
"pedestrian") == disallowList.end()) {
891 disallowList.push_back(
"pedestrian");
902 bool bikelaneFound =
false;
907 bikelaneFound =
true;
911 if (!bikelaneFound) {
914 if (bikelaneWidth !=
"default") {
923 bool sidewalkFound =
false;
928 sidewalkFound =
true;
932 if (!sidewalkFound) {
935 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 GUIDesignComboBoxAttribute
Combo box static (cannot be edited) extended over the matrix column.
#define GUIDesignComboBoxNCol
number of column of every combo box
#define GUIDesignAuxiliarHorizontalFrame
design for auxiliar (Without borders) horizontal frame used to pack another frames
#define GUIDesignComboBoxVisibleItems
#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
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
GNEEdgeType * getDefaultEdgeType() const
get default edgeType
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.
GNEEdgeType * myDefaultEdgeType
default 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
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 GNEEdgeTemplate *edgeTemplate, GNEUndoList *undoList)
copy edge attributes from edgetemplate
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
std::string getAttribute(SumoXMLAttr key) const
GNEViewNet * myViewNet
FOX need this.
virtual void show()
show Frame
virtual void hide()
hide Frame
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
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::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
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.
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
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.
MFXGroupBoxModule (based on FXGroupBox)
FXVerticalFrame * getCollapsableFrame()
get collapsable frame (used by all elements that will be collapsed if button is toggled)
const std::string & getID() const
A point in 2D or 3D with translation and scaling methods.