| 613 | } |
| 614 | |
| 615 | void SimulationParametersMainWindow::onDeleteLocation() |
| 616 | { |
| 617 | auto parameters = _simulationFacade->getSimulationParameters(); |
| 618 | auto origParameters = _simulationFacade->getOriginalSimulationParameters(); |
| 619 | |
| 620 | LocationController::get().deleteLocationWindow(_selectedLocationIndex); |
| 621 | auto location = LocationHelper::findLocation(parameters, _selectedLocationIndex); |
| 622 | |
| 623 | if (std::holds_alternative<SimulationParametersZone*>(location)) { |
| 624 | std::optional<int> zoneIndex; |
| 625 | for (int i = 0; i < parameters.numZones; ++i) { |
| 626 | if (parameters.zone[i].locationIndex == _selectedLocationIndex) { |
| 627 | zoneIndex = i; |
| 628 | break; |
| 629 | } |
| 630 | } |
| 631 | if (zoneIndex.has_value()) { |
| 632 | for (int i = zoneIndex.value(); i < parameters.numZones - 1; ++i) { |
| 633 | parameters.zone[i] = parameters.zone[i + 1]; |
| 634 | origParameters.zone[i] = origParameters.zone[i + 1]; |
| 635 | } |
| 636 | --parameters.numZones; |
| 637 | --origParameters.numZones; |
| 638 | } |
| 639 | } else { |
| 640 | std::optional<int> sourceIndex; |
| 641 | for (int i = 0; i < parameters.numRadiationSources; ++i) { |
| 642 | if (parameters.radiationSource[i].locationIndex == _selectedLocationIndex) { |
| 643 | sourceIndex = i; |
| 644 | break; |
| 645 | } |
| 646 | } |
| 647 | if (sourceIndex.has_value()) { |
| 648 | for (int i = sourceIndex.value(); i < parameters.numRadiationSources - 1; ++i) { |
| 649 | parameters.radiationSource[i] = parameters.radiationSource[i + 1]; |
| 650 | origParameters.radiationSource[i] = origParameters.radiationSource[i + 1]; |
| 651 | } |
| 652 | --parameters.numRadiationSources; |
| 653 | --origParameters.numRadiationSources; |
| 654 | } |
| 655 | } |
| 656 | |
| 657 | auto newByOldLocationIndex = LocationHelper::adaptLocationIndex(parameters, _selectedLocationIndex, -1); |
| 658 | LocationHelper::adaptLocationIndex(origParameters, _selectedLocationIndex, -1); |
| 659 | |
| 660 | if (_locations.size() - 1 == _selectedLocationIndex) { |
| 661 | --_selectedLocationIndex; |
| 662 | } |
| 663 | |
| 664 | _simulationFacade->setSimulationParameters(parameters); |
| 665 | _simulationFacade->setOriginalSimulationParameters(origParameters); |
| 666 | |
| 667 | LocationController::get().remapLocationIndices(newByOldLocationIndex); |
| 668 | } |
| 669 | |
| 670 | void SimulationParametersMainWindow::onDecreaseLocationIndex() |
| 671 | { |
nothing calls this directly
no test coverage detected