62 myTypeFrameParent(typeFrameParent),
63 myCurrentType(
nullptr) {
68 myTypeMatchBox->appendItem(defaultvType.c_str());
71 for (
const auto& vType : myTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getDemandElements().at(
SUMO_TAG_VTYPE)) {
73 myTypeMatchBox->appendItem(vType->getID().c_str());
79 if (myTypeMatchBox->getNumItems() <= 20) {
80 myTypeMatchBox->setNumVisible((
int)myTypeMatchBox->getNumItems());
82 myTypeMatchBox->setNumVisible(20);
100 myCurrentType = vType;
101 refreshTypeSelector();
109 myTypeMatchBox->clearItems();
112 myTypeMatchBox->appendItem(defaultvType.c_str());
115 for (
const auto& vType : myTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getDemandElements().at(
SUMO_TAG_VTYPE)) {
117 myTypeMatchBox->appendItem(vType->getID().c_str());
121 if (myTypeMatchBox->getNumItems() <= 20) {
122 myTypeMatchBox->setNumVisible((
int)myTypeMatchBox->getNumItems());
124 myTypeMatchBox->setNumVisible(20);
128 for (
int i = 0; i < (int)myTypeMatchBox->getNumItems(); i++) {
129 if (myTypeMatchBox->getItem(i).text() == myCurrentType->getID()) {
130 myTypeMatchBox->setCurrentItem(i);
140 for (
int i = 0; i < (int)myTypeMatchBox->getNumItems(); i++) {
141 if (myTypeMatchBox->getItem(i).text() == myCurrentType->getID()) {
142 myTypeMatchBox->setCurrentItem(i);
147 myTypeFrameParent->myTypeEditor->refreshTypeEditorModule();
149 myTypeFrameParent->getViewNet()->setInspectedAttributeCarriers({myCurrentType});
151 myTypeFrameParent->myTypeAttributesEditor->showAttributeEditorModule(
false,
true);
158 myTypeMatchBox->setItem(myTypeMatchBox->getCurrentItem(), myCurrentType->getID().c_str());
166 for (
const auto& vType : myTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers()->getDemandElements().at(
SUMO_TAG_VTYPE)) {
167 if (vType->getID() == myTypeMatchBox->getText().text()) {
169 myCurrentType = vType;
171 myTypeMatchBox->setTextColor(FXRGB(0, 0, 0));
173 myTypeFrameParent->myTypeEditor->refreshTypeEditorModule();
175 myTypeFrameParent->getViewNet()->setInspectedAttributeCarriers({myCurrentType});
177 myTypeFrameParent->myTypeAttributesEditor->showAttributeEditorModule(
false,
true);
179 WRITE_DEBUG((
"Selected item '" + myTypeMatchBox->getText() +
"' in TypeSelector").text());
183 myCurrentType =
nullptr;
185 myTypeFrameParent->myTypeEditor->refreshTypeEditorModule();
187 myTypeFrameParent->myTypeAttributesEditor->hideAttributesEditorModule();
189 myTypeMatchBox->setTextColor(FXRGB(255, 0, 0));
191 WRITE_DEBUG(
"Selected invalid item in TypeSelector");
201 myTypeFrameParent(typeFrameParent) {
216 refreshTypeEditorModule();
230 if (myTypeFrameParent->myTypeSelector->getCurrentType() ==
nullptr) {
232 myDeleteResetTypeButton->disable();
233 myCopyTypeButton->disable();
234 }
else if (GNEAttributeCarrier::parse<bool>(myTypeFrameParent->myTypeSelector->getCurrentType()->getAttribute(
GNE_ATTR_DEFAULT_VTYPE))) {
236 myCopyTypeButton->enable();
238 myDeleteResetTypeButton->setText(
"Reset type");
242 myDeleteResetTypeButton->enable();
244 myDeleteResetTypeButton->disable();
248 myCopyTypeButton->enable();
250 myDeleteResetTypeButton->setText(
"Delete type");
252 myDeleteResetTypeButton->enable();
262 const std::string typeID = myTypeFrameParent->myViewNet->getNet()->getAttributeCarriers()->generateDemandElementID(
SUMO_TAG_VTYPE);
266 myTypeFrameParent->myViewNet->getUndoList()->begin(
GUIIcon::VTYPE,
"create vehicle type");
268 myTypeFrameParent->myViewNet->getUndoList()->end();
270 myTypeFrameParent->myTypeSelector->setCurrentType(type);
272 myTypeFrameParent->myTypeEditor->refreshTypeEditorModule();
292 const std::string typeID = myTypeFrameParent->myViewNet->getNet()->getAttributeCarriers()->generateDemandElementID(
SUMO_TAG_VTYPE);
294 GNEVType* vType =
dynamic_cast<GNEVType*
>(myTypeFrameParent->myTypeSelector->getCurrentType());
300 myTypeFrameParent->myViewNet->getUndoList()->begin(
GUIIcon::VTYPE,
"copy vehicle type");
304 myTypeFrameParent->myViewNet->getUndoList()->end();
306 myTypeFrameParent->myTypeSelector->refreshTypeSelector();
308 myTypeFrameParent->myTypeSelector->setCurrentType(typeCopy);
310 myTypeFrameParent->myTypeEditor->refreshTypeEditorModule();
319 myTypeFrameParent->getViewNet()->getUndoList()->begin(
GUIIcon::VTYPE,
"reset default vehicle type values");
324 myTypeFrameParent->myTypeSelector->getCurrentType()->setAttribute(attrProperty.getAttr(),
"", myTypeFrameParent->myViewNet->getUndoList());
340 myTypeFrameParent->myTypeSelector->getCurrentType()->setAttribute(
GNE_ATTR_DEFAULT_VTYPE_MODIFIED,
"false", myTypeFrameParent->myViewNet->getUndoList());
342 myTypeFrameParent->getViewNet()->getUndoList()->end();
344 myTypeFrameParent->myTypeSelector->refreshTypeSelector();
351 if (myTypeFrameParent->myTypeSelector->getCurrentType()->getChildDemandElements().size() > 0) {
352 std::string plural = myTypeFrameParent->myTypeSelector->getCurrentType()->getChildDemandElements().size() == 1 ? (
"") : (
"s");
354 WRITE_DEBUG(
"Opening FXMessageBox 'remove vType'");
356 FXuint answer = FXMessageBox::question(getApp(), MBOX_YES_NO,
358 (
"Delete " +
toString(
SUMO_TAG_VTYPE) +
" '" + myTypeFrameParent->myTypeSelector->getCurrentType()->getID() +
359 "' will remove " +
toString(myTypeFrameParent->myTypeSelector->getCurrentType()->getChildDemandElements().size()) +
360 " vehicle" + plural +
". Continue?").c_str());
364 WRITE_DEBUG(
"Closed FXMessageBox 'remove vType' with 'No'");
365 }
else if (answer == 4) {
366 WRITE_DEBUG(
"Closed FXMessageBox 'remove vType' with 'ESC'");
370 myTypeFrameParent->myViewNet->getUndoList()->begin(
GUIIcon::VTYPE,
"delete vehicle type");
372 myTypeFrameParent->myViewNet->getNet()->deleteDemandElement(myTypeFrameParent->myTypeSelector->getCurrentType(),
373 myTypeFrameParent->myViewNet->getUndoList());
375 myTypeFrameParent->myViewNet->getUndoList()->end();
379 myTypeFrameParent->myViewNet->getUndoList()->begin(
GUIIcon::VTYPE,
"delete vehicle type");
381 myTypeFrameParent->myViewNet->getNet()->deleteDemandElement(myTypeFrameParent->myTypeSelector->getCurrentType(),
382 myTypeFrameParent->myViewNet->getUndoList());
384 myTypeFrameParent->myViewNet->getUndoList()->end();
393 GNEFrame(horizontalFrameParent, 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_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_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
@ 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)
FXGroupBoxModule (based on FXGroupBox)
FXVerticalFrame * getCollapsableFrame()
get collapsable frame (used by all elements that will be collapsed if button is toogled)
const GNETagProperties & getTagProperty() const
get tagProperty associated with this Attribute Carrier
An Element which don't belongs to GNENet but has influency in the simulation.
void showAttributeEditorModule(bool includeExtended, bool forceAttributeEnabled)
show attributes of multiple ACs
GNEFrame * getFrameParent() const
pointer to GNEFrame parent
GNEViewNet * getViewNet() const
get view net
GNEViewNet * myViewNet
View Net.
FXVerticalFrame * myContentFrame
Vertical frame that holds all widgets of frame.
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 *)
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 AttributesCreator extended dialog (used for editing advance attributes of Vehicle Types)
TypeSelector * getTypeSelector() const
get vehicle type selector
void attributeUpdated()
function called after set a valid attribute in AttributeCreator/AttributeEditor/ParametersEditor/....
GNETypeFrame(FXHorizontalFrame *horizontalFrameParent, GNEViewNet *viewNet)
Constructor.
GNEFrameAttributeModules::AttributesEditor * myTypeAttributesEditor
editorinternal vehicle type attributes
TypeEditor * myTypeEditor
Vehicle Type editor (Create, copy, etc.)
~GNETypeFrame()
Destructor.
TypeSelector * myTypeSelector
vehicle type selector
Dialog for edit rerouter intervals.
GNENet * getNet() const
get the net object
void setInspectedAttributeCarriers(const std::vector< GNEAttributeCarrier * > ACs)
set inspected attributeCarrier
static FXIcon * getIcon(const GUIIcon which)
returns a icon previously defined in the enum GUIIcon