72 myCreateEdgeFrameParent(createEdgeFrameParent),
75 myCreateDefaultEdgeType =
new FXRadioButton(getCollapsableFrame(),
TL(
"Create default edge"),
78 myCreateDefaultShortEdgeType =
new FXRadioButton(getCollapsableFrame(),
TL(
"Create default edge short"),
80 myCreateDefaultShortEdgeType->hide();
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();
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(myCreateEdgeFrameParent->getViewNet()->getNet()->getACTemplates()->getDefaultEdgeType(),
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();
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 if ((myCreateDefaultEdgeType->getCheck() == TRUE) || (myCreateDefaultShortEdgeType->getCheck() == TRUE)) {
248 return myEdgeTypeSelected;
255 return (myNoPedestriansCheckButton->getCheck() == TRUE);
261 return (myAddSidewalkCheckButton->getCheck() == TRUE);
267 return (myAddBikelaneCheckButton->getCheck() == TRUE);
273 myEdgeTypeSelected =
nullptr;
275 if (myCurrentIndex < 0) {
283 for (
int i = 0; i < myEdgeTypesComboBox->getNumItems(); i++) {
284 if (myEdgeTypesComboBox->getItemText(i) == edgeType->
getID()) {
286 myEdgeTypesComboBox->setCurrentItem(i);
289 myCreateDefaultEdgeType->setCheck(FALSE);
290 myCreateDefaultShortEdgeType->setCheck(FALSE);
291 myCreateCustomEdgeType->setCheck(TRUE);
293 refreshEdgeTypeSelector();
301 myCreateDefaultEdgeType->setCheck(FALSE);
302 myCreateDefaultShortEdgeType->setCheck(FALSE);
303 myCreateCustomEdgeType->setCheck(TRUE);
304 refreshEdgeTypeSelector();
311 myCreateDefaultShortEdgeType->show();
313 myCreateDefaultShortEdgeType->hide();
321 if (obj == myCreateDefaultEdgeType) {
322 myCreateDefaultEdgeType->setCheck(TRUE);
323 myCreateDefaultShortEdgeType->setCheck(FALSE);
324 myCreateCustomEdgeType->setCheck(FALSE);
325 }
else if (obj == myCreateDefaultShortEdgeType) {
326 myCreateDefaultEdgeType->setCheck(FALSE);
327 myCreateDefaultShortEdgeType->setCheck(TRUE);
328 myCreateCustomEdgeType->setCheck(FALSE);
330 myCreateDefaultEdgeType->setCheck(FALSE);
331 myCreateDefaultShortEdgeType->setCheck(FALSE);
332 myCreateCustomEdgeType->setCheck(TRUE);
335 refreshEdgeTypeSelector();
343 auto net = myCreateEdgeFrameParent->getViewNet()->getNet();
346 myCreateEdgeFrameParent->getViewNet()->getUndoList()->begin(edgeType,
TL(
"create new edge type"));
347 myCreateEdgeFrameParent->getViewNet()->getUndoList()->add(
new GNEChange_EdgeType(edgeType,
true),
true);
348 myCreateEdgeFrameParent->getViewNet()->getUndoList()->end();
350 myEdgeTypeSelected = edgeType;
352 myCurrentIndex = (myEdgeTypesComboBox->getNumItems() - 1);
354 refreshEdgeTypeSelector();
362 if (myEdgeTypeSelected && (myEdgeTypeSelected->getID() == myEdgeTypesComboBox->getText().text())) {
363 myEdgeTypeSelected =
nullptr;
368 myCreateEdgeFrameParent->getViewNet()->getUndoList()->begin(edgeType,
TL(
"delete edge type"));
369 myCreateEdgeFrameParent->getViewNet()->getUndoList()->add(
new GNEChange_EdgeType(edgeType,
false),
true);
370 myCreateEdgeFrameParent->getViewNet()->getUndoList()->end();
372 refreshEdgeTypeSelector();
380 myCurrentIndex = myEdgeTypesComboBox->getCurrentItem();
382 refreshEdgeTypeSelector();
389 if (myCreateEdgeFrameParent->getViewNet()->getViewParent()->getInspectorFrame()->getTemplateEditor()->getEdgeTemplate()) {
391 auto net = myCreateEdgeFrameParent->getViewNet()->getNet();
394 edgeType->
copyTemplate(myCreateEdgeFrameParent->getViewNet()->getViewParent()->getInspectorFrame()->getTemplateEditor()->getEdgeTemplate());
396 myCreateEdgeFrameParent->getViewNet()->getUndoList()->begin(edgeType,
TL(
"create new edge type"));
397 myCreateEdgeFrameParent->getViewNet()->getUndoList()->add(
new GNEChange_EdgeType(edgeType,
true),
true);
398 myCreateEdgeFrameParent->getViewNet()->getUndoList()->end();
400 myEdgeTypeSelected = edgeType;
402 myCurrentIndex = (myEdgeTypesComboBox->getNumItems() - 1);
404 refreshEdgeTypeSelector();
412 if (myAddSidewalkCheckButton->getCheck() == TRUE) {
413 myNoPedestriansCheckButton->setCheck(TRUE);
414 myNoPedestriansCheckButton->disable();
416 myNoPedestriansCheckButton->enable();
419 myCreateEdgeFrameParent->myEdgeTypeAttributesEditor->showAttributesEditor(myCreateEdgeFrameParent->getViewNet()->getNet()->getACTemplates()->getDefaultEdgeType(),
true);
429 const auto& edgeTypes = myCreateEdgeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getEdgeTypes();
431 myEdgeTypesComboBox->clearItems();
436 myEdgeTypesComboBox->appendIconItem((
TL(
"template: ") + templateEditor->
getEdgeTemplate()->
getID()).c_str(),
nullptr);
438 if (edgeTypes.size() > 0) {
440 for (
const auto& edgeType : edgeTypes) {
441 myEdgeTypesComboBox->appendIconItem(edgeType.second->getID().c_str(), edgeType.second->getACIcon());
444 if ((myCurrentIndex < 0) || (myCurrentIndex >= myEdgeTypesComboBox->getNumItems())) {
445 myCurrentIndex = myEdgeTypesComboBox->getNumItems() - 1;
447 myEdgeTypesComboBox->setCurrentItem(myCurrentIndex);
448 myEdgeTypesComboBox->enable();
450 myEdgeTypesComboBox->disable();
460 myCreateEdgeFrameParent(createEdgeFrameParent),
485 refreshLaneTypeSelector();
494 myCreateEdgeFrameParent->myLaneTypeAttributesEditor->hideAttributesEditor();
503 myLaneTypesComboBox->clearItems();
505 if (myCreateEdgeFrameParent->myEdgeTypeSelector->useEdgeTemplate()) {
506 const GNEEdgeTemplate* edgeTemplate = myCreateEdgeFrameParent->getViewNet()->getViewParent()->getInspectorFrame()->getTemplateEditor()->getEdgeTemplate();
509 myLaneTypesComboBox->appendIconItem(laneTemplate->getAttribute(
SUMO_ATTR_ID).c_str(), laneTemplate->getACIcon());
514 myCreateEdgeFrameParent->myLaneTypeAttributesEditor->showAttributesEditor(edgeTemplate->
getLaneTemplates().at(myLaneIndex),
false);
516 myCreateEdgeFrameParent->myLaneTypeAttributesEditor->disableAttributesEditor();
518 myAddLaneTypeButton->disable();
519 myDeleteLaneTypeButton->disable();
522 const GNEEdgeType* edgeType = myCreateEdgeFrameParent->myEdgeTypeSelector->getEdgeTypeSelected();
525 myLaneTypesComboBox->appendIconItem(laneType->getAttribute(
SUMO_ATTR_ID).c_str(), laneType->getACIcon());
530 myCreateEdgeFrameParent->myLaneTypeAttributesEditor->showAttributesEditor(edgeType->
getLaneTypes().at(myLaneIndex),
false);
532 myAddLaneTypeButton->enable();
535 myDeleteLaneTypeButton->enable();
537 myDeleteLaneTypeButton->disable();
548 if (myCreateEdgeFrameParent->myEdgeTypeSelector->useDefaultEdgeType() ||
549 myCreateEdgeFrameParent->myEdgeTypeSelector->useDefaultEdgeTypeShort()) {
551 auto edgeType = myCreateEdgeFrameParent->getViewNet()->getNet()->getACTemplates()->getDefaultEdgeType();
554 refreshLaneTypeSelector();
556 myLaneTypesComboBox->setCurrentItem(myLaneTypesComboBox->getNumItems() - 1);
557 }
else if (!myCreateEdgeFrameParent->myEdgeTypeSelector->useEdgeTemplate()) {
559 const auto edgeType = myCreateEdgeFrameParent->myEdgeTypeSelector->getEdgeTypeSelected();
564 for (
const auto& laneType : edgeType->getLaneTypes()) {
570 myCreateEdgeFrameParent->getViewNet()->getUndoList()->begin(
GUIIcon::LANETYPE,
TL(
"add laneType"));
571 myCreateEdgeFrameParent->getViewNet()->getUndoList()->add(
new GNEChange_EdgeType(edgeType,
false),
true);
572 myCreateEdgeFrameParent->getViewNet()->getUndoList()->add(
new GNEChange_EdgeType(newEdgeType,
true),
true);
573 myCreateEdgeFrameParent->getViewNet()->getUndoList()->end();
575 myLaneIndex = myLaneTypesComboBox->getNumItems() - 1;
577 myCreateEdgeFrameParent->myEdgeTypeSelector->setCurrentEdgeType(newEdgeType);
587 if (myCreateEdgeFrameParent->myEdgeTypeSelector->useDefaultEdgeType() ||
588 myCreateEdgeFrameParent->myEdgeTypeSelector->useDefaultEdgeTypeShort()) {
590 myCreateEdgeFrameParent->getViewNet()->getNet()->getACTemplates()->getDefaultEdgeType()->removeLaneType(myLaneIndex);
592 refreshLaneTypeSelector();
594 myLaneTypesComboBox->setCurrentItem(0);
595 }
else if (!myCreateEdgeFrameParent->myEdgeTypeSelector->useEdgeTemplate()) {
597 const auto edgeType = myCreateEdgeFrameParent->myEdgeTypeSelector->getEdgeTypeSelected();
602 for (
int i = 0; i < (int)edgeType->getLaneTypes().size(); i++) {
603 if (i != myLaneIndex) {
608 myCreateEdgeFrameParent->getViewNet()->getUndoList()->begin(
GUIIcon::LANETYPE,
TL(
"remove laneType"));
609 myCreateEdgeFrameParent->getViewNet()->getUndoList()->add(
new GNEChange_EdgeType(edgeType,
false),
true);
610 myCreateEdgeFrameParent->getViewNet()->getUndoList()->add(
new GNEChange_EdgeType(newEdgeType,
true),
true);
611 myCreateEdgeFrameParent->getViewNet()->getUndoList()->end();
613 myLaneIndex = myLaneTypesComboBox->getNumItems() - 1;
615 myCreateEdgeFrameParent->myEdgeTypeSelector->setCurrentEdgeType(newEdgeType);
625 myLaneIndex = myLaneTypesComboBox->getCurrentItem();
627 refreshLaneTypeSelector();
635 if (myLaneIndex >= myLaneTypesComboBox->getNumItems()) {
639 myLaneTypesComboBox->setCurrentItem(myLaneIndex);
648 std::ostringstream information;
651 <<
"- " <<
TL(
"ESC:") <<
"\n"
652 <<
" " <<
TL(
"Deselect origin") <<
"\n"
653 <<
"- " <<
TL(
"Control+Click:") <<
"\n"
654 <<
" " <<
TL(
"Move view") <<
"\n"
655 <<
"- " <<
TL(
"Shift+Click:") <<
"\n"
656 <<
" " <<
TL(
"Splits edge in both directions") <<
"\n"
657 <<
"- " <<
TL(
"Alt+Shift+Click:") <<
"\n"
658 <<
" " <<
TL(
"Splits edge in one direction");
671 GNEFrame(viewParent, viewNet,
TL(
"Create Edge")),
691 const bool oppositeEdge,
const bool chainEdge) {
695 WRITE_WARNING(
TL(
"Select either default edgeType or short edge or a custom edgeType or template"));
710 if (junction ==
nullptr) {
739 std::cout <<
"edge created without an open CommandGroup" << std::endl;
804 std::cout <<
"edge created without an open CommandGroup" << std::endl;
897 std::vector<std::string> disallowList = GNEAttributeCarrier::parse<std::vector<std::string> >(lane->getAttribute(
SUMO_ATTR_DISALLOW));
899 if (std::find(disallowList.begin(), disallowList.end(),
"pedestrian") == disallowList.end()) {
900 disallowList.push_back(
"pedestrian");
911 bool bikelaneFound =
false;
916 bikelaneFound =
true;
920 if (!bikelaneFound) {
923 if (bikelaneWidth !=
"default") {
932 bool sidewalkFound =
false;
937 sidewalkFound =
true;
941 if (!sidewalkFound) {
944 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 showDefaultShortEdgeCheckBox(const bool value)
check if show default short edge checkbox (only in JuPedSim view)
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.