63 myPersonTypeFrameParent(personTypeFrameParent),
64 myCurrentPersonType(
nullptr) {
68 for (
const auto& i : myPersonTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers().demandElements.at(
SUMO_TAG_PTYPE)) {
69 myTypeMatchBox->appendItem(i.first.c_str());
74 if (myTypeMatchBox->getNumItems() <= 20) {
75 myTypeMatchBox->setNumVisible((
int)myTypeMatchBox->getNumItems());
77 myTypeMatchBox->setNumVisible(20);
89 return myCurrentPersonType;
95 myCurrentPersonType = vType;
96 refreshPersonTypeSelector();
103 myTypeMatchBox->clearItems();
105 for (
const auto& i : myPersonTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers().demandElements.at(
SUMO_TAG_PTYPE)) {
106 myTypeMatchBox->appendItem(i.first.c_str());
109 if (myTypeMatchBox->getNumItems() <= 20) {
110 myTypeMatchBox->setNumVisible((
int)myTypeMatchBox->getNumItems());
112 myTypeMatchBox->setNumVisible(20);
115 for (
int i = 0; i < (int)myTypeMatchBox->getNumItems(); i++) {
116 if (myTypeMatchBox->getItem(i).text() == myCurrentPersonType->getID()) {
117 myTypeMatchBox->setCurrentItem(i);
126 for (
int i = 0; i < (int)myTypeMatchBox->getNumItems(); i++) {
127 if (myTypeMatchBox->getItem(i).text() == myCurrentPersonType->getID()) {
128 myTypeMatchBox->setCurrentItem(i);
133 myPersonTypeFrameParent->myPersonTypeEditor->refreshPersonTypeEditorModul();
135 myPersonTypeFrameParent->myPersonTypeAttributesEditor->showAttributeEditorModul({myCurrentPersonType},
false);
142 for (
const auto& i : myPersonTypeFrameParent->getViewNet()->getNet()->getAttributeCarriers().demandElements.at(
SUMO_TAG_PTYPE)) {
143 if (i.first == myTypeMatchBox->getText().text()) {
145 myCurrentPersonType = i.second;
147 myTypeMatchBox->setTextColor(FXRGB(0, 0, 0));
149 myPersonTypeFrameParent->myPersonTypeEditor->refreshPersonTypeEditorModul();
151 myPersonTypeFrameParent->myPersonTypeAttributesEditor->showAttributeEditorModul({myCurrentPersonType},
false);
153 WRITE_DEBUG((
"Selected item '" + myTypeMatchBox->getText() +
"' in PersonTypeSelector").text());
157 myCurrentPersonType =
nullptr;
159 myPersonTypeFrameParent->myPersonTypeEditor->refreshPersonTypeEditorModul();
161 myPersonTypeFrameParent->myPersonTypeAttributesEditor->hideAttributesEditorModul();
163 myTypeMatchBox->setTextColor(FXRGB(255, 0, 0));
165 WRITE_DEBUG(
"Selected invalid item in PersonTypeSelector");
175 myPersonTypeFrameParent(personTypeFrameParent) {
192 refreshPersonTypeEditorModul();
206 if (myPersonTypeFrameParent->myPersonTypeSelector->getCurrentPersonType() ==
nullptr) {
208 myDeletePersonTypeButton->disable();
209 myResetDefaultPersonTypeButton->disable();
210 myCopyPersonTypeButton->disable();
211 }
else if (GNEAttributeCarrier::parse<bool>(myPersonTypeFrameParent->myPersonTypeSelector->getCurrentPersonType()->getAttribute(
GNE_ATTR_DEFAULT_VTYPE))) {
213 myCopyPersonTypeButton->enable();
215 myDeletePersonTypeButton->hide();
216 myResetDefaultPersonTypeButton->show();
218 if (GNEAttributeCarrier::parse<bool>(myPersonTypeFrameParent->myPersonTypeSelector->getCurrentPersonType()->getAttribute(
GNE_ATTR_DEFAULT_VTYPE_MODIFIED))) {
219 myResetDefaultPersonTypeButton->enable();
221 myResetDefaultPersonTypeButton->disable();
225 myCopyPersonTypeButton->enable();
227 myDeletePersonTypeButton->show();
228 myDeletePersonTypeButton->enable();
229 myResetDefaultPersonTypeButton->hide();
239 std::string personTypeID = myPersonTypeFrameParent->myViewNet->getNet()->generateDemandElementID(
"",
SUMO_TAG_PTYPE);
243 myPersonTypeFrameParent->myViewNet->getUndoList()->p_begin(
"create person type");
245 myPersonTypeFrameParent->myViewNet->getUndoList()->p_end();
247 myPersonTypeFrameParent->myPersonTypeSelector->setCurrentPersonType(personType);
249 myPersonTypeFrameParent->myPersonTypeEditor->refreshPersonTypeEditorModul();
257 if (myPersonTypeFrameParent->myPersonTypeSelector->getCurrentPersonType()->getDemandElementChildren().size() > 0) {
258 std::string plural = myPersonTypeFrameParent->myPersonTypeSelector->getCurrentPersonType()->getDemandElementChildren().size() == 1 ? (
"") : (
"s");
260 WRITE_DEBUG(
"Opening FXMessageBox 'remove vType'");
262 FXuint answer = FXMessageBox::question(getApp(), MBOX_YES_NO,
264 (
"Delete " +
toString(
SUMO_TAG_PTYPE) +
" '" + myPersonTypeFrameParent->myPersonTypeSelector->getCurrentPersonType()->getID() +
265 "' will remove " +
toString(myPersonTypeFrameParent->myPersonTypeSelector->getCurrentPersonType()->getDemandElementChildren().size()) +
266 " person" + plural +
". Continue?").c_str());
270 WRITE_DEBUG(
"Closed FXMessageBox 'remove vType' with 'No'");
271 }
else if (answer == 4) {
272 WRITE_DEBUG(
"Closed FXMessageBox 'remove vType' with 'ESC'");
276 myPersonTypeFrameParent->myViewNet->getUndoList()->p_begin(
"delete person type");
278 myPersonTypeFrameParent->myViewNet->getNet()->deleteDemandElement(myPersonTypeFrameParent->myPersonTypeSelector->getCurrentPersonType(),
279 myPersonTypeFrameParent->myViewNet->getUndoList());
281 myPersonTypeFrameParent->myViewNet->getUndoList()->p_end();
285 myPersonTypeFrameParent->myViewNet->getUndoList()->p_begin(
"delete person type");
287 myPersonTypeFrameParent->myViewNet->getNet()->deleteDemandElement(myPersonTypeFrameParent->myPersonTypeSelector->getCurrentPersonType(),
288 myPersonTypeFrameParent->myViewNet->getUndoList());
290 myPersonTypeFrameParent->myViewNet->getUndoList()->p_end();
299 myPersonTypeFrameParent->getViewNet()->getUndoList()->p_begin(
"reset default person type values");
304 myPersonTypeFrameParent->myPersonTypeSelector->getCurrentPersonType()->setAttribute(i.getAttr(),
"", myPersonTypeFrameParent->myViewNet->getUndoList());
312 myPersonTypeFrameParent->myPersonTypeSelector->getCurrentPersonType()->setAttribute(
GNE_ATTR_DEFAULT_VTYPE_MODIFIED,
"false", myPersonTypeFrameParent->myViewNet->getUndoList());
314 myPersonTypeFrameParent->getViewNet()->getUndoList()->p_end();
316 myPersonTypeFrameParent->myPersonTypeSelector->refreshPersonTypeSelector();
324 std::string personTypeID = myPersonTypeFrameParent->myViewNet->getNet()->generateDemandElementID(
"",
SUMO_TAG_PTYPE);
326 GNEVehicleType* vType = dynamic_cast<GNEVehicleType*>(myPersonTypeFrameParent->myPersonTypeSelector->getCurrentPersonType());
332 myPersonTypeFrameParent->myViewNet->getUndoList()->p_begin(
"copy person type");
334 myPersonTypeFrameParent->myViewNet->getUndoList()->add(
new GNEChange_DemandElement(personTypeCopy,
true),
true);
336 myPersonTypeFrameParent->myViewNet->getUndoList()->p_end();
338 myPersonTypeFrameParent->myPersonTypeSelector->refreshPersonTypeSelector();
340 myPersonTypeFrameParent->myPersonTypeSelector->setCurrentPersonType(personTypeCopy);
342 myPersonTypeFrameParent->myPersonTypeEditor->refreshPersonTypeEditorModul();
352 GNEFrame(horizontalFrameParent, viewNet,
"Person Types") {