35#define TEMPORAL_FILENAME std::string()
65 myTypeFrameParent(typeFrameParent),
68 myTypeComboBox =
new MFXComboBoxIcon(getCollapsableFrame(), typeFrameParent->getViewNet()->getViewParent()->getGNEAppWindows()->getStaticTooltipMenu(),
71 for (
const auto& vType : myTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getDemandElements().at(
SUMO_TAG_VTYPE)) {
73 myTypeComboBox->appendIconItem(vType.second->getID().c_str(), vType.second->getACIcon(), FXRGB(255, 255, 200));
77 for (
const auto& vType : myTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getDemandElements().at(
SUMO_TAG_VTYPE)) {
79 myTypeComboBox->appendIconItem(vType.second->getID().c_str(), vType.second->getACIcon());
84 myTypeComboBox->setCurrentItem(myTypeComboBox->findItem(
DEFAULT_VTYPE_ID.c_str()));
102 refreshTypeSelector(
true);
110 myTypeComboBox->clearItems();
112 for (
const auto& vType : myTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getDemandElements().at(
SUMO_TAG_VTYPE)) {
114 myTypeComboBox->appendIconItem(vType.second->getID().c_str(), vType.second->getACIcon(), FXRGB(255, 255, 200));
118 std::map<std::string, GNEDemandElement*> types;
119 for (
const auto& vType : myTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getDemandElements().at(
SUMO_TAG_VTYPE)) {
121 types[vType.second->getID()] = vType.second;
124 for (
const auto& vType : types) {
125 myTypeComboBox->appendIconItem(vType.first.c_str(), vType.second->getACIcon());
129 for (
int i = 0; i < (int)myTypeComboBox->getNumItems(); i++) {
130 if (myTypeComboBox->getItemText(i) ==
myCurrentType->getID()) {
131 myTypeComboBox->setCurrentItem(i);
141 for (
int i = 0; i < (int)myTypeComboBox->getNumItems(); i++) {
142 if (myTypeComboBox->getItemText(i) ==
myCurrentType->getID()) {
143 myTypeComboBox->setCurrentItem(i);
150 myTypeFrameParent->myTypeEditor->refreshTypeEditorModule();
152 myTypeFrameParent->myTypeAttributesEditor->showAttributesEditor(
myCurrentType,
true);
160 for (
const auto& vType : myTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getDemandElements().at(
SUMO_TAG_VTYPE)) {
161 if (vType.second->getID() == myTypeComboBox->getText().text()) {
167 myTypeFrameParent->myTypeEditor->refreshTypeEditorModule();
169 myTypeFrameParent->myTypeAttributesEditor->showAttributesEditor(
myCurrentType,
true);
171 myTypeFrameParent->getViewNet()->updateViewNet();
177 myTypeFrameParent->myTypeEditor->refreshTypeEditorModule();
179 myTypeFrameParent->myTypeAttributesEditor->hideAttributesEditor();
183 myTypeFrameParent->getViewNet()->updateViewNet();
193 myTypeFrameParent(typeFrameParent) {
208 refreshTypeEditorModule();
222 if (myTypeFrameParent->myTypeSelector->getCurrentType() ==
nullptr) {
224 myDeleteResetTypeButton->disable();
225 myCopyTypeButton->disable();
226 }
else if (GNEAttributeCarrier::parse<bool>(myTypeFrameParent->myTypeSelector->getCurrentType()->getAttribute(
GNE_ATTR_DEFAULT_VTYPE))) {
228 myCopyTypeButton->enable();
230 myDeleteResetTypeButton->setText(
TL(
"Reset Type"));
234 myDeleteResetTypeButton->enable();
236 myDeleteResetTypeButton->disable();
240 myCopyTypeButton->enable();
242 myDeleteResetTypeButton->setText(
TL(
"Delete Type"));
244 myDeleteResetTypeButton->enable();
254 const std::string typeID = myTypeFrameParent->myViewNet->getNet()->getAttributeCarriers()->generateDemandElementID(
SUMO_TAG_VTYPE);
258 myTypeFrameParent->myViewNet->getUndoList()->begin(type,
TL(
"create vehicle type"));
260 myTypeFrameParent->myViewNet->getUndoList()->end();
262 myTypeFrameParent->myTypeSelector->setCurrentType(type);
282 const std::string typeID = myTypeFrameParent->myViewNet->getNet()->getAttributeCarriers()->generateDemandElementID(
SUMO_TAG_VTYPE);
284 GNEVType* vType =
dynamic_cast<GNEVType*
>(myTypeFrameParent->myTypeSelector->getCurrentType());
290 myTypeFrameParent->myViewNet->getUndoList()->begin(typeCopy,
TL(
"copy vehicle type"));
294 myTypeFrameParent->myViewNet->getUndoList()->end();
296 myTypeFrameParent->myTypeSelector->setCurrentType(typeCopy);
305 myTypeFrameParent->getViewNet()->getUndoList()->begin(
GUIIcon::VTYPE,
TL(
"reset default vehicle type values"));
307 for (
const auto& attrProperty : myTypeFrameParent->getViewNet()->getNet()->getACTemplates()->getTemplateAC(
SUMO_TAG_VTYPE)->getTagProperty()->getAttributeProperties()) {
310 myTypeFrameParent->myTypeSelector->getCurrentType()->setAttribute(attrProperty->getAttr(),
"", myTypeFrameParent->myViewNet->getUndoList());
328 myTypeFrameParent->myTypeSelector->getCurrentType()->setAttribute(
GNE_ATTR_DEFAULT_VTYPE_MODIFIED,
"false", myTypeFrameParent->myViewNet->getUndoList());
330 myTypeFrameParent->getViewNet()->getUndoList()->end();
332 myTypeFrameParent->myTypeSelector->refreshTypeSelector(
true);
339 if (myTypeFrameParent->myTypeSelector->getCurrentType()->getChildDemandElements().size() > 0) {
341 std::string title =
TLF(
"remove % '%'",
toString(
SUMO_TAG_VTYPE), myTypeFrameParent->myTypeSelector->getCurrentType()->getID());
343 const std::string numChildren =
toString(myTypeFrameParent->myTypeSelector->getCurrentType()->getChildDemandElements().size());
345 if (myTypeFrameParent->myTypeSelector->getCurrentType()->getChildDemandElements().size() == 1) {
346 info =
TLF(
"Delete % '%' will remove one vehicle. Continue?",
toString(
SUMO_TAG_VTYPE), myTypeFrameParent->myTypeSelector->getCurrentType()->getID());
348 info =
TLF(
"Delete % '%' will remove % vehicles. Continue?",
toString(
SUMO_TAG_VTYPE), myTypeFrameParent->myTypeSelector->getCurrentType()->getID(), numChildren);
355 myTypeFrameParent->myViewNet->getUndoList()->begin(myTypeFrameParent->myTypeSelector->getCurrentType(), (
"delete vehicle type"));
357 myTypeFrameParent->myViewNet->getNet()->deleteDemandElement(myTypeFrameParent->myTypeSelector->getCurrentType(),
358 myTypeFrameParent->myViewNet->getUndoList());
360 myTypeFrameParent->myViewNet->getUndoList()->end();
364 myTypeFrameParent->myViewNet->getUndoList()->begin(myTypeFrameParent->myTypeSelector->getCurrentType(), (
"delete vehicle type"));
366 myTypeFrameParent->myViewNet->getNet()->deleteDemandElement(myTypeFrameParent->myTypeSelector->getCurrentType(),
367 myTypeFrameParent->myViewNet->getUndoList());
369 myTypeFrameParent->myViewNet->getUndoList()->end();
#define TEMPORAL_FILENAME
FXDEFMAP(GNETypeFrame::TypeSelector) typeSelectorMap[]
@ MID_GNE_DELETE
delete element
@ MID_GNE_COPY
copy element
@ MID_GNE_CREATE
create element
@ MID_GNE_SET_TYPE
used to select a type of element in a combo box
#define GUIDesignTextColorRed
red color (for invalid text)
#define GUIDesignComboBox
#define GUIDesignComboBoxVisibleItems
#define GUIDesignTextColorBlack
black color (for correct text)
const std::string DEFAULT_TAXITYPE_ID
const std::string DEFAULT_RAILTYPE_ID
const std::string DEFAULT_PEDTYPE_ID
const std::set< std::string > DEFAULT_VTYPES
const std::string DEFAULT_VTYPE_ID
const std::string DEFAULT_CONTAINERTYPE_ID
@ SVC_RAIL
vehicle is a not electrified rail
@ SVC_PASSENGER
vehicle is a passenger car (a "normal" car)
@ SVC_BICYCLE
vehicle is a bicycle
@ SVC_TAXI
vehicle is a taxi
@ SVC_PEDESTRIAN
pedestrian
const std::string DEFAULT_BIKETYPE_ID
@ SUMO_TAG_VTYPE
description of a vehicle/person/container type
SumoXMLAttr
Numbers representing SUMO-XML - attributes.
@ GNE_ATTR_DEFAULT_VTYPE
Flag to check if VType is a default VType.
@ GNE_ATTR_DEFAULT_VTYPE_MODIFIED
Flag to check if a default VType was modified.
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
void showAttributesEditor(GNEAttributeCarrier *AC, const bool primaryAttributeEditor)
edit attributes of the given AC (usually the edited template AC)
GNEViewNet * myViewNet
FOX need this.
virtual void show()
show Frame
virtual void hide()
hide Frame
GNEDemandElement * retrieveDemandElement(SumoXMLTag type, const std::string &id, bool hardFail=true) const
Returns the named demand element.
GNENetHelper::AttributeCarriers * getAttributeCarriers() const
get all attribute carriers used in this net
void resetType()
reset type
long onCmdDeleteResetType(FXObject *, FXSelector, void *)
Called when "Delete/Reset Vehicle Type" button is clicked.
void deleteType()
delete type
void showTypeEditorModule()
show TypeEditor modul
FXButton * myCreateTypeButton
"create vehicle type" button
long onCmdCreateType(FXObject *, FXSelector, void *)
FXButton * myDeleteResetTypeButton
"delete/reset vehicle type" button
FXButton * myCopyTypeButton
"copy vehicle type"
TypeEditor(GNETypeFrame *typeFrameParent)
FOX-declaration.
void hideTypeEditorModule()
hide TypeEditor box
void refreshTypeEditorModule()
update TypeEditor modul
long onCmdCopyType(FXObject *, FXSelector, void *)
Called when "Copy Vehicle Type" button is clicked.
void setCurrentType(GNEDemandElement *vType)
set current Vehicle Type
long onCmdSelectItem(FXObject *, FXSelector, void *)
Called when the user select another element in ComboBox.
void refreshTypeSelector(const bool updateModuls)
refresh vehicle type selector
GNEDemandElement * getCurrentType() const
get current Vehicle Type
~TypeSelector()
destructor
GNETypeFrame(GNEViewParent *viewParent, GNEViewNet *viewNet)
Constructor.
TypeSelector * getTypeSelector() const
get vehicle type selector
GNEAttributesEditor * myTypeAttributesEditor
editorinternal vehicle type attributes
TypeEditor * myTypeEditor
Vehicle Type editor (Create, copy, etc.)
~GNETypeFrame()
Destructor.
TypeSelector * myTypeSelector
vehicle type selector
void attributeUpdated(SumoXMLAttr attribute)
function called after set a valid attribute in AttributeCreator/AttributeEditor/ParametersEditor/....
GNENet * getNet() const
get the net object
A single child window which contains a view of the simulation area.
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
MFXGroupBoxModule (based on FXGroupBox)
FXVerticalFrame * getCollapsableFrame()
get collapsable frame (used by all elements that will be collapsed if button is toggled)