72 myCreateEdgeFrameParent(createEdgeFrameParent),
73 myDefaultEdgeType(new
GNEEdgeType(createEdgeFrameParent)),
76 myCreateDefaultEdgeType =
new FXRadioButton(getCollapsableFrame(),
TL(
"Create default edge"),
79 myCreateDefaultShortEdgeType =
new FXRadioButton(getCollapsableFrame(),
TL(
"Create default edge short"),
82 myNoPedestriansCheckButton =
new FXCheckButton(getCollapsableFrame(),
TL(
"Disallow for pedestrians"),
84 myAddSidewalkCheckButton =
new FXCheckButton(getCollapsableFrame(),
TL(
"Add sidewalk"),
86 myAddBikelaneCheckButton =
new FXCheckButton(getCollapsableFrame(),
TL(
"Add bikelane"),
89 myCreateCustomEdgeType =
new FXRadioButton(getCollapsableFrame(),
TL(
"Use edgeType/template"),
92 myEdgeTypesComboBox =
new MFXComboBoxIcon(getCollapsableFrame(), createEdgeFrameParent->getViewNet()->getViewParent()->getGNEAppWindows()->getStaticTooltipMenu(),
106 myCreateDefaultEdgeType->setCheck(TRUE);
108 for (
const auto& junction : createEdgeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getJunctions()) {
109 if (junction.second->getNBNode()->getCrossings().size() > 0) {
110 enableCheckBoxDisablePedestrians();
126 const int index = myEdgeTypesComboBox->getCurrentItem();
130 if (myCreateDefaultEdgeType->getCheck() || myCreateDefaultShortEdgeType->getCheck()) {
132 myAddSidewalkCheckButton->enable();
133 myAddBikelaneCheckButton->enable();
134 myNoPedestriansCheckButton->enable();
136 myCreateFromTemplate->disable();
138 myEdgeTypesComboBox->disable();
140 myAddEdgeTypeButton->disable();
141 myDeleteEdgeTypeButton->disable();
143 myCreateEdgeFrameParent->myEdgeTypeAttributesEditor->showAttributesEditor(myDefaultEdgeType,
true);
145 myCreateEdgeFrameParent->myLaneTypeSelector->showLaneTypeSelector();
146 }
else if (myCreateCustomEdgeType->getCheck()) {
148 myAddSidewalkCheckButton->disable();
149 myAddBikelaneCheckButton->disable();
150 myNoPedestriansCheckButton->disable();
152 myAddEdgeTypeButton->enable();
153 myDeleteEdgeTypeButton->enable();
155 if (myEdgeTypesComboBox->getNumItems() == 0) {
157 myEdgeTypesComboBox->disable();
158 myDeleteEdgeTypeButton->disable();
160 myCreateEdgeFrameParent->myEdgeTypeAttributesEditor->hideAttributesEditor();
161 myCreateEdgeFrameParent->myLaneTypeAttributesEditor->hideAttributesEditor();
164 myCreateFromTemplate->enable();
166 myEdgeTypesComboBox->enable();
168 myDeleteEdgeTypeButton->disable();
170 myCreateEdgeFrameParent->myEdgeTypeAttributesEditor->showAttributesEditor(templateEditor->
getEdgeTemplate(),
true);
171 myCreateEdgeFrameParent->myEdgeTypeAttributesEditor->disableAttributesEditor();
173 myCreateEdgeFrameParent->myLaneTypeSelector->showLaneTypeSelector();
176 myCreateFromTemplate->disable();
178 myEdgeTypesComboBox->enable();
180 myEdgeTypeSelected = myCreateEdgeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->retrieveEdgeType(myEdgeTypesComboBox->getText().text(),
false);
182 if (myEdgeTypeSelected) {
184 myCreateEdgeFrameParent->myEdgeTypeAttributesEditor->showAttributesEditor(myEdgeTypeSelected,
true);
186 myCreateEdgeFrameParent->myLaneTypeSelector->showLaneTypeSelector();
189 myCreateEdgeFrameParent->myEdgeTypeAttributesEditor->hideAttributesEditor();
191 myCreateEdgeFrameParent->myLaneTypeSelector->hideLaneTypeSelector();
204 for (
int i = 0; i < myEdgeTypesComboBox->getNumItems(); i++) {
205 if (myEdgeTypesComboBox->getItemText(i) == oldID) {
206 myEdgeTypesComboBox->updateIconItem(i, newID.c_str());
214 return (myCreateDefaultEdgeType->getCheck() == TRUE);
220 return (myCreateDefaultShortEdgeType->getCheck() == TRUE);
226 if (myCreateEdgeFrameParent->getViewNet()->getViewParent()->getInspectorFrame()->getTemplateEditor()->getEdgeTemplate()) {
227 if ((myCreateCustomEdgeType->getCheck() == TRUE) && (myEdgeTypesComboBox->getCurrentItem() == 0)) {
240 myNoPedestriansCheckButton->setCheck(TRUE);
246 return myDefaultEdgeType;
252 if ((myCreateDefaultEdgeType->getCheck() == TRUE) || (myCreateDefaultShortEdgeType->getCheck() == TRUE)) {
253 return myDefaultEdgeType;
255 return myEdgeTypeSelected;
262 return (myNoPedestriansCheckButton->getCheck() == TRUE);
268 return (myAddSidewalkCheckButton->getCheck() == TRUE);
274 return (myAddBikelaneCheckButton->getCheck() == TRUE);
280 myEdgeTypeSelected =
nullptr;
282 if (myCurrentIndex < 0) {
290 for (
int i = 0; i < myEdgeTypesComboBox->getNumItems(); i++) {
291 if (myEdgeTypesComboBox->getItemText(i) == edgeType->
getID()) {
293 myEdgeTypesComboBox->setCurrentItem(i);
296 myCreateDefaultEdgeType->setCheck(FALSE);
297 myCreateDefaultShortEdgeType->setCheck(FALSE);
298 myCreateCustomEdgeType->setCheck(TRUE);
300 refreshEdgeTypeSelector();
308 myCreateDefaultEdgeType->setCheck(FALSE);
309 myCreateDefaultShortEdgeType->setCheck(FALSE);
310 myCreateCustomEdgeType->setCheck(TRUE);
311 refreshEdgeTypeSelector();
318 if (obj == myCreateDefaultEdgeType) {
319 myCreateDefaultEdgeType->setCheck(TRUE);
320 myCreateDefaultShortEdgeType->setCheck(FALSE);
321 myCreateCustomEdgeType->setCheck(FALSE);
322 }
else if (obj == myCreateDefaultShortEdgeType) {
323 myCreateDefaultEdgeType->setCheck(FALSE);
324 myCreateDefaultShortEdgeType->setCheck(TRUE);
325 myCreateCustomEdgeType->setCheck(FALSE);
327 myCreateDefaultEdgeType->setCheck(FALSE);
328 myCreateDefaultShortEdgeType->setCheck(FALSE);
329 myCreateCustomEdgeType->setCheck(TRUE);
332 refreshEdgeTypeSelector();
342 myCreateEdgeFrameParent->getViewNet()->getUndoList()->begin(edgeType,
TL(
"create new edge type"));
343 myCreateEdgeFrameParent->getViewNet()->getUndoList()->add(
new GNEChange_EdgeType(edgeType,
true),
true);
344 myCreateEdgeFrameParent->getViewNet()->getUndoList()->end();
346 myEdgeTypeSelected = edgeType;
348 myCurrentIndex = (myEdgeTypesComboBox->getNumItems() - 1);
350 refreshEdgeTypeSelector();
358 if (myEdgeTypeSelected && (myEdgeTypeSelected->getID() == myEdgeTypesComboBox->getText().text())) {
359 myEdgeTypeSelected =
nullptr;
364 myCreateEdgeFrameParent->getViewNet()->getUndoList()->begin(edgeType,
TL(
"delete edge type"));
365 myCreateEdgeFrameParent->getViewNet()->getUndoList()->add(
new GNEChange_EdgeType(edgeType,
false),
true);
366 myCreateEdgeFrameParent->getViewNet()->getUndoList()->end();
368 refreshEdgeTypeSelector();
376 myCurrentIndex = myEdgeTypesComboBox->getCurrentItem();
378 refreshEdgeTypeSelector();
385 if (myCreateEdgeFrameParent->getViewNet()->getViewParent()->getInspectorFrame()->getTemplateEditor()->getEdgeTemplate()) {
389 edgeType->
copyTemplate(myCreateEdgeFrameParent->getViewNet()->getViewParent()->getInspectorFrame()->getTemplateEditor()->getEdgeTemplate());
391 myCreateEdgeFrameParent->getViewNet()->getUndoList()->begin(edgeType,
TL(
"create new edge type"));
392 myCreateEdgeFrameParent->getViewNet()->getUndoList()->add(
new GNEChange_EdgeType(edgeType,
true),
true);
393 myCreateEdgeFrameParent->getViewNet()->getUndoList()->end();
395 myEdgeTypeSelected = edgeType;
397 myCurrentIndex = (myEdgeTypesComboBox->getNumItems() - 1);
399 refreshEdgeTypeSelector();
407 if (myAddSidewalkCheckButton->getCheck() == TRUE) {
408 myNoPedestriansCheckButton->setCheck(TRUE);
409 myNoPedestriansCheckButton->disable();
411 myNoPedestriansCheckButton->enable();
414 myCreateEdgeFrameParent->myEdgeTypeAttributesEditor->showAttributesEditor(myDefaultEdgeType,
true);
424 const auto& edgeTypes = myCreateEdgeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getEdgeTypes();
426 myEdgeTypesComboBox->clearItems();
431 myEdgeTypesComboBox->appendIconItem((
TL(
"template: ") + templateEditor->
getEdgeTemplate()->
getID()).c_str(),
nullptr);
433 if (edgeTypes.size() > 0) {
435 for (
const auto& edgeType : edgeTypes) {
436 myEdgeTypesComboBox->appendIconItem(edgeType.second->getID().c_str(), edgeType.second->getACIcon());
439 if ((myCurrentIndex < 0) || (myCurrentIndex >= myEdgeTypesComboBox->getNumItems())) {
440 myCurrentIndex = myEdgeTypesComboBox->getNumItems() - 1;
442 myEdgeTypesComboBox->setCurrentItem(myCurrentIndex);
443 myEdgeTypesComboBox->enable();
445 myEdgeTypesComboBox->disable();
455 myCreateEdgeFrameParent(createEdgeFrameParent),
480 refreshLaneTypeSelector();
489 myCreateEdgeFrameParent->myLaneTypeAttributesEditor->hideAttributesEditor();
498 myLaneTypesComboBox->clearItems();
500 if (myCreateEdgeFrameParent->myEdgeTypeSelector->useEdgeTemplate()) {
501 const GNEEdgeTemplate* edgeTemplate = myCreateEdgeFrameParent->getViewNet()->getViewParent()->getInspectorFrame()->getTemplateEditor()->getEdgeTemplate();
504 myLaneTypesComboBox->appendIconItem(laneTemplate->getAttribute(
SUMO_ATTR_ID).c_str(), laneTemplate->getACIcon());
509 myCreateEdgeFrameParent->myLaneTypeAttributesEditor->showAttributesEditor(edgeTemplate->
getLaneTemplates().at(myLaneIndex),
false);
511 myCreateEdgeFrameParent->myLaneTypeAttributesEditor->disableAttributesEditor();
513 myAddLaneTypeButton->disable();
514 myDeleteLaneTypeButton->disable();
517 const GNEEdgeType* edgeType = myCreateEdgeFrameParent->myEdgeTypeSelector->getEdgeTypeSelected();
520 myLaneTypesComboBox->appendIconItem(laneType->getAttribute(
SUMO_ATTR_ID).c_str(), laneType->getACIcon());
525 myCreateEdgeFrameParent->myLaneTypeAttributesEditor->showAttributesEditor(edgeType->
getLaneTypes().at(myLaneIndex),
false);
527 myAddLaneTypeButton->enable();
530 myDeleteLaneTypeButton->enable();
532 myDeleteLaneTypeButton->disable();
543 if (myCreateEdgeFrameParent->myEdgeTypeSelector->useDefaultEdgeType() ||
544 myCreateEdgeFrameParent->myEdgeTypeSelector->useDefaultEdgeTypeShort()) {
546 myCreateEdgeFrameParent->myEdgeTypeSelector->getDefaultEdgeType()->addLaneType(
new GNELaneType(myCreateEdgeFrameParent->myEdgeTypeSelector->getDefaultEdgeType()));
548 refreshLaneTypeSelector();
550 myLaneTypesComboBox->setCurrentItem(myLaneTypesComboBox->getNumItems() - 1);
551 }
else if (!myCreateEdgeFrameParent->myEdgeTypeSelector->useEdgeTemplate()) {
553 const auto edgeType = myCreateEdgeFrameParent->myEdgeTypeSelector->getEdgeTypeSelected();
558 for (
const auto& laneType : edgeType->getLaneTypes()) {
564 myCreateEdgeFrameParent->getViewNet()->getUndoList()->begin(
GUIIcon::LANETYPE,
TL(
"add laneType"));
565 myCreateEdgeFrameParent->getViewNet()->getUndoList()->add(
new GNEChange_EdgeType(edgeType,
false),
true);
566 myCreateEdgeFrameParent->getViewNet()->getUndoList()->add(
new GNEChange_EdgeType(newEdgeType,
true),
true);
567 myCreateEdgeFrameParent->getViewNet()->getUndoList()->end();
569 myLaneIndex = myLaneTypesComboBox->getNumItems() - 1;
571 myCreateEdgeFrameParent->myEdgeTypeSelector->setCurrentEdgeType(newEdgeType);
581 if (myCreateEdgeFrameParent->myEdgeTypeSelector->useDefaultEdgeType() ||
582 myCreateEdgeFrameParent->myEdgeTypeSelector->useDefaultEdgeTypeShort()) {
584 myCreateEdgeFrameParent->myEdgeTypeSelector->getDefaultEdgeType()->removeLaneType(myLaneIndex);
586 refreshLaneTypeSelector();
588 myLaneTypesComboBox->setCurrentItem(0);
589 }
else if (!myCreateEdgeFrameParent->myEdgeTypeSelector->useEdgeTemplate()) {
591 const auto edgeType = myCreateEdgeFrameParent->myEdgeTypeSelector->getEdgeTypeSelected();
596 for (
int i = 0; i < (int)edgeType->getLaneTypes().size(); i++) {
597 if (i != myLaneIndex) {
602 myCreateEdgeFrameParent->getViewNet()->getUndoList()->begin(
GUIIcon::LANETYPE,
TL(
"remove laneType"));
603 myCreateEdgeFrameParent->getViewNet()->getUndoList()->add(
new GNEChange_EdgeType(edgeType,
false),
true);
604 myCreateEdgeFrameParent->getViewNet()->getUndoList()->add(
new GNEChange_EdgeType(newEdgeType,
true),
true);
605 myCreateEdgeFrameParent->getViewNet()->getUndoList()->end();
607 myLaneIndex = myLaneTypesComboBox->getNumItems() - 1;
609 myCreateEdgeFrameParent->myEdgeTypeSelector->setCurrentEdgeType(newEdgeType);
619 myLaneIndex = myLaneTypesComboBox->getCurrentItem();
621 refreshLaneTypeSelector();
629 if (myLaneIndex > myLaneTypesComboBox->getNumItems()) {
633 myLaneTypesComboBox->setCurrentItem(myLaneIndex);
642 std::ostringstream information;
645 <<
"- " <<
TL(
"ESC:") <<
"\n"
646 <<
" " <<
TL(
"Deselect origin") <<
"\n"
647 <<
"- " <<
TL(
"Control+Click:") <<
"\n"
648 <<
" " <<
TL(
"Move view") <<
"\n"
649 <<
"- " <<
TL(
"Shift+Click:") <<
"\n"
650 <<
" " <<
TL(
"Splits edge in both directions") <<
"\n"
651 <<
"- " <<
TL(
"Alt+Shift+Click:") <<
"\n"
652 <<
" " <<
TL(
"Splits edge in one direction");
665 GNEFrame(viewParent, viewNet,
TL(
"Create Edge")),
685 const bool oppositeEdge,
const bool chainEdge) {
689 WRITE_WARNING(
TL(
"Select either default edgeType or short edge or a custom edgeType or template"));
702 if (junction ==
nullptr) {
731 std::cout <<
"edge created without an open CommandGroup" << std::endl;
796 std::cout <<
"edge created without an open CommandGroup" << std::endl;
889 std::vector<std::string> disallowList = GNEAttributeCarrier::parse<std::vector<std::string> >(lane->getAttribute(
SUMO_ATTR_DISALLOW));
891 if (std::find(disallowList.begin(), disallowList.end(),
"pedestrian") == disallowList.end()) {
892 disallowList.push_back(
"pedestrian");
903 bool bikelaneFound =
false;
908 bikelaneFound =
true;
912 if (!bikelaneFound) {
915 if (bikelaneWidth !=
"default") {
924 bool sidewalkFound =
false;
929 sidewalkFound =
true;
933 if (!sidewalkFound) {
936 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
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
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
std::string getAttribute(SumoXMLAttr key) const override
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
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.
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.
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.