MCPcopy Create free account
hub / github.com/chrxh/alien / onDeleteLocation

Method onDeleteLocation

source/Gui/SimulationParametersMainWindow.cpp:615–668  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

613}
614
615void 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
670void SimulationParametersMainWindow::onDecreaseLocationIndex()
671{

Callers

nothing calls this directly

Calls 6

deleteLocationWindowMethod · 0.80
sizeMethod · 0.80
remapLocationIndicesMethod · 0.80

Tested by

no test coverage detected