32#define TEMPORAL_FILENAME std::string()
62 myTypeFrameParent(typeFrameParent),
68 for (
const auto& vType : myTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getDemandElements().at(
SUMO_TAG_VTYPE)) {
70 myTypeComboBox->appendIconItem(vType.second->getID().c_str(), vType.second->getACIcon(), FXRGB(255, 255, 200));
74 for (
const auto& vType : myTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getDemandElements().at(
SUMO_TAG_VTYPE)) {
76 myTypeComboBox->appendIconItem(vType.second->getID().c_str(), vType.second->getACIcon());
81 myTypeComboBox->setCurrentItem(myTypeComboBox->findItem(
DEFAULT_VTYPE_ID.c_str()));
99 refreshTypeSelector(
true);
107 myTypeComboBox->clearItems();
109 for (
const auto& vType : myTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getDemandElements().at(
SUMO_TAG_VTYPE)) {
111 myTypeComboBox->appendIconItem(vType.second->getID().c_str(), vType.second->getACIcon(), FXRGB(255, 255, 200));
115 std::map<std::string, GNEDemandElement*> types;
116 for (
const auto& vType : myTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getDemandElements().at(
SUMO_TAG_VTYPE)) {
118 types[vType.second->getID()] = vType.second;
121 for (
const auto& vType : types) {
122 myTypeComboBox->appendIconItem(vType.first.c_str(), vType.second->getACIcon());
126 for (
int i = 0; i < (int)myTypeComboBox->getNumItems(); i++) {
127 if (myTypeComboBox->getItemText(i) ==
myCurrentType->getID()) {
128 myTypeComboBox->setCurrentItem(i);
138 for (
int i = 0; i < (int)myTypeComboBox->getNumItems(); i++) {
139 if (myTypeComboBox->getItemText(i) ==
myCurrentType->getID()) {
140 myTypeComboBox->setCurrentItem(i);
147 myTypeFrameParent->myTypeEditor->refreshTypeEditorModule();
149 myTypeFrameParent->myTypeAttributesEditor->showAttributesEditor(
myCurrentType,
true);
157 for (
const auto& vType : myTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getDemandElements().at(
SUMO_TAG_VTYPE)) {
158 if (vType.second->getID() == myTypeComboBox->getText().text()) {
162 myTypeComboBox->setTextColor(FXRGB(0, 0, 0));
164 myTypeFrameParent->myTypeEditor->refreshTypeEditorModule();
166 myTypeFrameParent->myTypeAttributesEditor->showAttributesEditor(
myCurrentType,
true);
168 myTypeFrameParent->getViewNet()->updateViewNet();
174 myTypeFrameParent->myTypeEditor->refreshTypeEditorModule();
176 myTypeFrameParent->myTypeAttributesEditor->hideAttributesEditor();
178 myTypeComboBox->setTextColor(FXRGB(255, 0, 0));
180 myTypeFrameParent->getViewNet()->updateViewNet();
190 myTypeFrameParent(typeFrameParent) {
205 refreshTypeEditorModule();
219 if (myTypeFrameParent->myTypeSelector->getCurrentType() ==
nullptr) {
221 myDeleteResetTypeButton->disable();
222 myCopyTypeButton->disable();
223 }
else if (GNEAttributeCarrier::parse<bool>(myTypeFrameParent->myTypeSelector->getCurrentType()->getAttribute(
GNE_ATTR_DEFAULT_VTYPE))) {
225 myCopyTypeButton->enable();
227 myDeleteResetTypeButton->setText(
TL(
"Reset Type"));
231 myDeleteResetTypeButton->enable();
233 myDeleteResetTypeButton->disable();
237 myCopyTypeButton->enable();
239 myDeleteResetTypeButton->setText(
TL(
"Delete Type"));
241 myDeleteResetTypeButton->enable();
251 const std::string typeID = myTypeFrameParent->myViewNet->getNet()->getAttributeCarriers()->generateDemandElementID(
SUMO_TAG_VTYPE);
255 myTypeFrameParent->myViewNet->getUndoList()->begin(type,
TL(
"create vehicle type"));
257 myTypeFrameParent->myViewNet->getUndoList()->end();
259 myTypeFrameParent->myTypeSelector->setCurrentType(type);
279 const std::string typeID = myTypeFrameParent->myViewNet->getNet()->getAttributeCarriers()->generateDemandElementID(
SUMO_TAG_VTYPE);
281 GNEVType* vType =
dynamic_cast<GNEVType*
>(myTypeFrameParent->myTypeSelector->getCurrentType());
287 myTypeFrameParent->myViewNet->getUndoList()->begin(typeCopy,
TL(
"copy vehicle type"));
291 myTypeFrameParent->myViewNet->getUndoList()->end();
293 myTypeFrameParent->myTypeSelector->setCurrentType(typeCopy);
302 myTypeFrameParent->getViewNet()->getUndoList()->begin(
GUIIcon::VTYPE,
TL(
"reset default vehicle type values"));
304 for (
const auto& attrProperty : myTypeFrameParent->getViewNet()->getNet()->getACTemplates()->getTemplateAC(
SUMO_TAG_VTYPE)->getTagProperty()->getAttributeProperties()) {
307 myTypeFrameParent->myTypeSelector->getCurrentType()->setAttribute(attrProperty->getAttr(),
"", myTypeFrameParent->myViewNet->getUndoList());
325 myTypeFrameParent->myTypeSelector->getCurrentType()->setAttribute(
GNE_ATTR_DEFAULT_VTYPE_MODIFIED,
"false", myTypeFrameParent->myViewNet->getUndoList());
327 myTypeFrameParent->getViewNet()->getUndoList()->end();
329 myTypeFrameParent->myTypeSelector->refreshTypeSelector(
true);
336 if (myTypeFrameParent->myTypeSelector->getCurrentType()->getChildDemandElements().size() > 0) {
337 std::string plural = myTypeFrameParent->myTypeSelector->getCurrentType()->getChildDemandElements().size() == 1 ? (
"") : (
"s");
339 FXuint answer = FXMessageBox::question(getApp(), MBOX_YES_NO,
341 (
"Delete " +
toString(
SUMO_TAG_VTYPE) +
" '" + myTypeFrameParent->myTypeSelector->getCurrentType()->getID() +
342 "' will remove " +
toString(myTypeFrameParent->myTypeSelector->getCurrentType()->getChildDemandElements().size()) +
343 " vehicle" + plural +
". Continue?").c_str());
346 myTypeFrameParent->myViewNet->getUndoList()->begin(myTypeFrameParent->myTypeSelector->getCurrentType(), (
"delete vehicle type"));
348 myTypeFrameParent->myViewNet->getNet()->deleteDemandElement(myTypeFrameParent->myTypeSelector->getCurrentType(),
349 myTypeFrameParent->myViewNet->getUndoList());
351 myTypeFrameParent->myViewNet->getUndoList()->end();
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();
#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 GUIDesignComboBox
#define GUIDesignComboBoxNCol
number of column of every combo box
#define GUIDesignComboBoxVisibleItems
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)