63 myTypeFrameParent(typeFrameParent),
68 for (
const auto& vType : myTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getDemandElements().at(
SUMO_TAG_VTYPE)) {
70 myTypeComboBox->appendIconItem(vType->getID().c_str(), vType->getACIcon(), FXRGB(255, 255, 200));
74 for (
const auto& vType : myTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getDemandElements().at(
SUMO_TAG_VTYPE)) {
76 myTypeComboBox->appendIconItem(vType->getID().c_str(), vType->getACIcon());
82 if (myTypeComboBox->getNumItems() <= 20) {
83 myTypeComboBox->setNumVisible((
int)myTypeComboBox->getNumItems());
85 myTypeComboBox->setNumVisible(20);
104 refreshTypeSelector();
112 myTypeComboBox->clearItems();
114 for (
const auto& vType : myTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getDemandElements().at(
SUMO_TAG_VTYPE)) {
116 myTypeComboBox->appendIconItem(vType->getID().c_str(), vType->getACIcon(), FXRGB(255, 255, 200));
120 std::map<std::string, GNEDemandElement*> types;
121 for (
const auto& vType : myTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getDemandElements().at(
SUMO_TAG_VTYPE)) {
123 types[vType->getID()] = vType;
126 for (
const auto& vType : types) {
127 myTypeComboBox->appendIconItem(vType.first.c_str(), vType.second->getACIcon());
130 if (myTypeComboBox->getNumItems() <= 20) {
131 myTypeComboBox->setNumVisible((
int)myTypeComboBox->getNumItems());
133 myTypeComboBox->setNumVisible(20);
137 for (
int i = 0; i < (int)myTypeComboBox->getNumItems(); i++) {
138 if (myTypeComboBox->getItem(i).text() ==
myCurrentType->getID()) {
139 myTypeComboBox->setCurrentItem(i);
149 for (
int i = 0; i < (int)myTypeComboBox->getNumItems(); i++) {
150 if (myTypeComboBox->getItem(i).text() ==
myCurrentType->getID()) {
151 myTypeComboBox->setCurrentItem(i);
156 myTypeFrameParent->myTypeEditor->refreshTypeEditorModule();
158 myTypeFrameParent->getViewNet()->setInspectedAttributeCarriers({
myCurrentType});
160 myTypeFrameParent->myTypeAttributesEditor->showAttributeEditorModule(
false);
161 myTypeFrameParent->myAttributesEditorExtended->showAttributesEditorExtendedModule();
162 myTypeFrameParent->myParametersEditor->refreshParametersEditor();
177 for (
const auto& vType : myTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getDemandElements().at(
SUMO_TAG_VTYPE)) {
178 if (vType->getID() == myTypeComboBox->getText().text()) {
182 myTypeComboBox->setTextColor(FXRGB(0, 0, 0));
184 myTypeFrameParent->myTypeEditor->refreshTypeEditorModule();
186 myTypeFrameParent->getViewNet()->setInspectedAttributeCarriers({
myCurrentType});
188 myTypeFrameParent->myTypeAttributesEditor->showAttributeEditorModule(
false);
189 myTypeFrameParent->myAttributesEditorExtended->showAttributesEditorExtendedModule();
190 myTypeFrameParent->myParametersEditor->refreshParametersEditor();
192 WRITE_DEBUG((
"Selected item '" + myTypeComboBox->getText() +
"' in TypeSelector").text());
194 myTypeFrameParent->getViewNet()->updateViewNet();
200 myTypeFrameParent->myTypeEditor->refreshTypeEditorModule();
202 myTypeFrameParent->myTypeAttributesEditor->hideAttributesEditorModule();
203 myTypeFrameParent->myAttributesEditorExtended->hideAttributesEditorExtendedModule();
205 myTypeComboBox->setTextColor(FXRGB(255, 0, 0));
207 WRITE_DEBUG(
"Selected invalid item in TypeSelector");
209 myTypeFrameParent->getViewNet()->updateViewNet();
219 myTypeFrameParent(typeFrameParent) {
234 refreshTypeEditorModule();
248 if (myTypeFrameParent->myTypeSelector->getCurrentType() ==
nullptr) {
250 myDeleteResetTypeButton->disable();
251 myCopyTypeButton->disable();
252 }
else if (GNEAttributeCarrier::parse<bool>(myTypeFrameParent->myTypeSelector->getCurrentType()->getAttribute(
GNE_ATTR_DEFAULT_VTYPE))) {
254 myCopyTypeButton->enable();
256 myDeleteResetTypeButton->setText(
TL(
"Reset Type"));
260 myDeleteResetTypeButton->enable();
262 myDeleteResetTypeButton->disable();
266 myCopyTypeButton->enable();
268 myDeleteResetTypeButton->setText(
TL(
"Delete Type"));
270 myDeleteResetTypeButton->enable();
280 const std::string typeID = myTypeFrameParent->myViewNet->getNet()->getAttributeCarriers()->generateDemandElementID(
SUMO_TAG_VTYPE);
284 myTypeFrameParent->myViewNet->getUndoList()->begin(
GUIIcon::VTYPE,
"create vehicle type");
286 myTypeFrameParent->myViewNet->getUndoList()->end();
288 myTypeFrameParent->myTypeSelector->setCurrentType(type);
308 const std::string typeID = myTypeFrameParent->myViewNet->getNet()->getAttributeCarriers()->generateDemandElementID(
SUMO_TAG_VTYPE);
310 GNEVType* vType =
dynamic_cast<GNEVType*
>(myTypeFrameParent->myTypeSelector->getCurrentType());
316 myTypeFrameParent->myViewNet->getUndoList()->begin(
GUIIcon::VTYPE,
"copy vehicle type");
320 myTypeFrameParent->myViewNet->getUndoList()->end();
322 myTypeFrameParent->myTypeSelector->setCurrentType(typeCopy);
331 myTypeFrameParent->getViewNet()->getUndoList()->begin(
GUIIcon::VTYPE,
"reset default vehicle type values");
336 myTypeFrameParent->myTypeSelector->getCurrentType()->setAttribute(attrProperty.getAttr(),
"", myTypeFrameParent->myViewNet->getUndoList());
354 myTypeFrameParent->myTypeSelector->getCurrentType()->setAttribute(
GNE_ATTR_DEFAULT_VTYPE_MODIFIED,
"false", myTypeFrameParent->myViewNet->getUndoList());
356 myTypeFrameParent->getViewNet()->getUndoList()->end();
358 myTypeFrameParent->myTypeSelector->refreshTypeSelector();
365 if (myTypeFrameParent->myTypeSelector->getCurrentType()->getChildDemandElements().size() > 0) {
366 std::string plural = myTypeFrameParent->myTypeSelector->getCurrentType()->getChildDemandElements().size() == 1 ? (
"") : (
"s");
368 WRITE_DEBUG(
"Opening FXMessageBox 'remove vType'");
370 FXuint answer = FXMessageBox::question(getApp(), MBOX_YES_NO,
372 (
"Delete " +
toString(
SUMO_TAG_VTYPE) +
" '" + myTypeFrameParent->myTypeSelector->getCurrentType()->getID() +
373 "' will remove " +
toString(myTypeFrameParent->myTypeSelector->getCurrentType()->getChildDemandElements().size()) +
374 " vehicle" + plural +
". Continue?").c_str());
378 WRITE_DEBUG(
"Closed FXMessageBox 'remove vType' with 'No'");
379 }
else if (answer == 4) {
380 WRITE_DEBUG(
"Closed FXMessageBox 'remove vType' with 'ESC'");
384 myTypeFrameParent->myViewNet->getUndoList()->begin(
GUIIcon::VTYPE,
"delete vehicle type");
386 myTypeFrameParent->myViewNet->getNet()->deleteDemandElement(myTypeFrameParent->myTypeSelector->getCurrentType(),
387 myTypeFrameParent->myViewNet->getUndoList());
389 myTypeFrameParent->myViewNet->getUndoList()->end();
393 myTypeFrameParent->myViewNet->getUndoList()->begin(
GUIIcon::VTYPE,
"delete vehicle type");
395 myTypeFrameParent->myViewNet->getNet()->deleteDemandElement(myTypeFrameParent->myTypeSelector->getCurrentType(),
396 myTypeFrameParent->myViewNet->getUndoList());
398 myTypeFrameParent->myViewNet->getUndoList()->end();
407 GNEFrame(viewParent, viewNet,
"Types") {
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
@ 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_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
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)
const GNETagProperties & getTagProperty() const
get tagProperty associated with this Attribute Carrier
An Element which don't belong to GNENet but has influence in the simulation.
void showAttributesEditorExtendedModule()
show AttributesEditorExtended modul
GNEFrame * getFrameParent() const
pointer to GNEFrame parent
void showAttributeEditorModule(bool includeExtended)
show attributes of multiple ACs
GNEViewNet * getViewNet() const
get view net
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
void refreshTypeSelectorIDs()
refresh vehicle type selector (only IDs, without refreshing attributes)
long onCmdSelectItem(FXObject *, FXSelector, void *)
Called when the user select another element in ComboBox.
GNEDemandElement * getCurrentType() const
get current Vehicle Type
void refreshTypeSelector()
refresh vehicle type selector
~TypeSelector()
destructor
GNEFrameAttributeModules::AttributesEditorExtended * myAttributesEditorExtended
modul for open extended attributes dialog
void attributesEditorExtendedDialogOpened()
open GNEAttributesCreator extended dialog (used for editing advance attributes of Vehicle Types)
GNEFrameAttributeModules::ParametersEditor * myParametersEditor
Parameters editor inspector.
GNETypeFrame(GNEViewParent *viewParent, GNEViewNet *viewNet)
Constructor.
TypeSelector * getTypeSelector() const
get vehicle type selector
GNEFrameAttributeModules::AttributesEditor * 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/....
Dialog for editing calibrator vehicle types.
GNENet * getNet() const
get the net object
void setInspectedAttributeCarriers(const std::vector< GNEAttributeCarrier * > ACs)
set inspected attributeCarrier
A single child window which contains a view of the simulation area.
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)