62 myPersonTypeFrameParent(personTypeFrameParent),
63 myCurrentPersonType(
nullptr) {
67 for (
const auto& i : myPersonTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers().demandElements.at(
SUMO_TAG_PTYPE)) {
68 myTypeMatchBox->appendItem(i.first.c_str());
73 if (myTypeMatchBox->getNumItems() <= 20) {
74 myTypeMatchBox->setNumVisible((
int)myTypeMatchBox->getNumItems());
76 myTypeMatchBox->setNumVisible(20);
88 return myCurrentPersonType;
94 myCurrentPersonType = vType;
95 refreshPersonTypeSelector();
102 myTypeMatchBox->clearItems();
104 for (
const auto& i : myPersonTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers().demandElements.at(
SUMO_TAG_PTYPE)) {
105 myTypeMatchBox->appendItem(i.first.c_str());
108 if (myTypeMatchBox->getNumItems() <= 20) {
109 myTypeMatchBox->setNumVisible((
int)myTypeMatchBox->getNumItems());
111 myTypeMatchBox->setNumVisible(20);
114 for (
int i = 0; i < (int)myTypeMatchBox->getNumItems(); i++) {
115 if (myTypeMatchBox->getItem(i).text() == myCurrentPersonType->getID()) {
116 myTypeMatchBox->setCurrentItem(i);
125 for (
int i = 0; i < (int)myTypeMatchBox->getNumItems(); i++) {
126 if (myTypeMatchBox->getItem(i).text() == myCurrentPersonType->getID()) {
127 myTypeMatchBox->setCurrentItem(i);
132 myPersonTypeFrameParent->myPersonTypeEditor->refreshPersonTypeEditorModul();
134 myPersonTypeFrameParent->myPersonTypeAttributesEditor->showAttributeEditorModul({myCurrentPersonType},
false,
true);
141 for (
const auto& i : myPersonTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers().demandElements.at(
SUMO_TAG_PTYPE)) {
142 if (i.first == myTypeMatchBox->getText().text()) {
144 myCurrentPersonType = i.second;
146 myTypeMatchBox->setTextColor(FXRGB(0, 0, 0));
148 myPersonTypeFrameParent->myPersonTypeEditor->refreshPersonTypeEditorModul();
150 myPersonTypeFrameParent->myPersonTypeAttributesEditor->showAttributeEditorModul({myCurrentPersonType},
false,
true);
152 WRITE_DEBUG((
"Selected item '" + myTypeMatchBox->getText() +
"' in PersonTypeSelector").text());
156 myCurrentPersonType =
nullptr;
158 myPersonTypeFrameParent->myPersonTypeEditor->refreshPersonTypeEditorModul();
160 myPersonTypeFrameParent->myPersonTypeAttributesEditor->hideAttributesEditorModul();
162 myTypeMatchBox->setTextColor(FXRGB(255, 0, 0));
164 WRITE_DEBUG(
"Selected invalid item in PersonTypeSelector");
174 myPersonTypeFrameParent(personTypeFrameParent) {
191 refreshPersonTypeEditorModul();
205 if (myPersonTypeFrameParent->myPersonTypeSelector->getCurrentPersonType() ==
nullptr) {
207 myDeletePersonTypeButton->disable();
208 myResetDefaultPersonTypeButton->disable();
209 myCopyPersonTypeButton->disable();
210 }
else if (GNEAttributeCarrier::parse<bool>(myPersonTypeFrameParent->myPersonTypeSelector->getCurrentPersonType()->getAttribute(
GNE_ATTR_DEFAULT_VTYPE))) {
212 myCopyPersonTypeButton->enable();
214 myDeletePersonTypeButton->hide();
215 myResetDefaultPersonTypeButton->show();
217 if (GNEAttributeCarrier::parse<bool>(myPersonTypeFrameParent->myPersonTypeSelector->getCurrentPersonType()->getAttribute(
GNE_ATTR_DEFAULT_VTYPE_MODIFIED))) {
218 myResetDefaultPersonTypeButton->enable();
220 myResetDefaultPersonTypeButton->disable();
224 myCopyPersonTypeButton->enable();
226 myDeletePersonTypeButton->show();
227 myDeletePersonTypeButton->enable();
228 myResetDefaultPersonTypeButton->hide();
238 std::string personTypeID = myPersonTypeFrameParent->myViewNet->getNet()->generateDemandElementID(
"",
SUMO_TAG_PTYPE);
242 myPersonTypeFrameParent->myViewNet->getUndoList()->p_begin(
"create person type");
244 myPersonTypeFrameParent->myViewNet->getUndoList()->p_end();
246 myPersonTypeFrameParent->myPersonTypeSelector->setCurrentPersonType(personType);
248 myPersonTypeFrameParent->myPersonTypeEditor->refreshPersonTypeEditorModul();
256 if (myPersonTypeFrameParent->myPersonTypeSelector->getCurrentPersonType()->getChildDemandElements().size() > 0) {
257 std::string plural = myPersonTypeFrameParent->myPersonTypeSelector->getCurrentPersonType()->getChildDemandElements().size() == 1 ? (
"") : (
"s");
259 WRITE_DEBUG(
"Opening FXMessageBox 'remove vType'");
261 FXuint answer = FXMessageBox::question(getApp(), MBOX_YES_NO,
263 (
"Delete " +
toString(
SUMO_TAG_PTYPE) +
" '" + myPersonTypeFrameParent->myPersonTypeSelector->getCurrentPersonType()->getID() +
264 "' will remove " +
toString(myPersonTypeFrameParent->myPersonTypeSelector->getCurrentPersonType()->getChildDemandElements().size()) +
265 " person" + plural +
". Continue?").c_str());
269 WRITE_DEBUG(
"Closed FXMessageBox 'remove vType' with 'No'");
270 }
else if (answer == 4) {
271 WRITE_DEBUG(
"Closed FXMessageBox 'remove vType' with 'ESC'");
275 myPersonTypeFrameParent->myViewNet->getUndoList()->p_begin(
"delete person type");
277 myPersonTypeFrameParent->myViewNet->getNet()->deleteDemandElement(myPersonTypeFrameParent->myPersonTypeSelector->getCurrentPersonType(),
278 myPersonTypeFrameParent->myViewNet->getUndoList());
280 myPersonTypeFrameParent->myViewNet->getUndoList()->p_end();
284 myPersonTypeFrameParent->myViewNet->getUndoList()->p_begin(
"delete person type");
286 myPersonTypeFrameParent->myViewNet->getNet()->deleteDemandElement(myPersonTypeFrameParent->myPersonTypeSelector->getCurrentPersonType(),
287 myPersonTypeFrameParent->myViewNet->getUndoList());
289 myPersonTypeFrameParent->myViewNet->getUndoList()->p_end();
298 myPersonTypeFrameParent->getViewNet()->getUndoList()->p_begin(
"reset default person type values");
303 myPersonTypeFrameParent->myPersonTypeSelector->getCurrentPersonType()->setAttribute(i.getAttr(),
"", myPersonTypeFrameParent->myViewNet->getUndoList());
311 myPersonTypeFrameParent->myPersonTypeSelector->getCurrentPersonType()->setAttribute(
GNE_ATTR_DEFAULT_VTYPE_MODIFIED,
"false", myPersonTypeFrameParent->myViewNet->getUndoList());
313 myPersonTypeFrameParent->getViewNet()->getUndoList()->p_end();
315 myPersonTypeFrameParent->myPersonTypeSelector->refreshPersonTypeSelector();
323 std::string personTypeID = myPersonTypeFrameParent->myViewNet->getNet()->generateDemandElementID(
"",
SUMO_TAG_PTYPE);
325 GNEVehicleType* vType = dynamic_cast<GNEVehicleType*>(myPersonTypeFrameParent->myPersonTypeSelector->getCurrentPersonType());
331 myPersonTypeFrameParent->myViewNet->getUndoList()->p_begin(
"copy person type");
333 myPersonTypeFrameParent->myViewNet->getUndoList()->add(
new GNEChange_DemandElement(personTypeCopy,
true),
true);
335 myPersonTypeFrameParent->myViewNet->getUndoList()->p_end();
337 myPersonTypeFrameParent->myPersonTypeSelector->refreshPersonTypeSelector();
339 myPersonTypeFrameParent->myPersonTypeSelector->setCurrentPersonType(personTypeCopy);
341 myPersonTypeFrameParent->myPersonTypeEditor->refreshPersonTypeEditorModul();
351 GNEFrame(horizontalFrameParent, viewNet,
"Person Types") {