#include "Visualization/VisualizationActionManager.h" #include "Visualization/VisualizationGraphWidget.h" #include "Visualization/VisualizationSelectionZoneItem.h" #include #include VisualizationActionManager::VisualizationActionManager() {} void VisualizationActionManager::installSelectionZoneActions() { auto &actionController = sqpApp->actionsGuiController(); auto removeZonesAction = actionController.addSectionZoneAction("Remove Selected Zone(s)", [](auto zones) { for (auto selectionZone : zones) { if (auto graph = selectionZone->parentGraphWidget()) { graph->removeSelectionZone(selectionZone); } } }); removeZonesAction->setDisplayedShortcut(QKeySequence::Delete); auto alignEnableFuntion = [](auto items) { return items.count() > 1; }; // Vertical alignment actions auto alignLeftAction = actionController.addSectionZoneAction( QStringList{"Align Vertically"}, "Left", [](auto zones) { Q_ASSERT(zones.count() > 1); auto ref = zones.takeFirst(); ref->alignZonesVerticallyOnLeft(zones, false); }); alignLeftAction->setEnableFunction(alignEnableFuntion); auto alignLeftBorderAction = actionController.addSectionZoneAction( QStringList{"Align Vertically"}, "Left Borders", [](auto zones) { Q_ASSERT(zones.count() > 1); auto ref = zones.takeFirst(); ref->alignZonesVerticallyOnLeft(zones, true); }); alignLeftBorderAction->setEnableFunction(alignEnableFuntion); auto alignRightAction = actionController.addSectionZoneAction( QStringList{"Align Vertically"}, "Right", [](auto zones) { Q_ASSERT(zones.count() > 1); auto ref = zones.takeFirst(); ref->alignZonesVerticallyOnRight(zones, false); }); alignRightAction->setEnableFunction(alignEnableFuntion); auto alignRightBorderAction = actionController.addSectionZoneAction( QStringList{"Align Vertically"}, "Right Borders", [](auto zones) { Q_ASSERT(zones.count() > 1); auto ref = zones.takeFirst(); ref->alignZonesVerticallyOnRight(zones, true); }); alignRightBorderAction->setEnableFunction(alignEnableFuntion); auto alignLeftAndRightAction = actionController.addSectionZoneAction( QStringList{"Align Vertically"}, "Left and Right", [](auto zones) { Q_ASSERT(zones.count() > 1); auto ref = zones.takeFirst(); ref->alignZonesVerticallyOnLeft(zones, false); ref->alignZonesVerticallyOnRight(zones, true); }); alignLeftAndRightAction->setEnableFunction(alignEnableFuntion); // Temporal alignment actions auto alignLeftTemporallyAction = actionController.addSectionZoneAction( QStringList{"Align Temporally"}, "Left", [](auto zones) { Q_ASSERT(zones.count() > 1); auto ref = zones.takeFirst(); ref->alignZonesTemporallyOnLeft(zones, false); }); alignLeftTemporallyAction->setEnableFunction(alignEnableFuntion); auto alignLeftBorderTemporallyAction = actionController.addSectionZoneAction( QStringList{"Align Temporally"}, "Left Borders", [](auto zones) { Q_ASSERT(zones.count() > 1); auto ref = zones.takeFirst(); ref->alignZonesTemporallyOnLeft(zones, true); }); alignLeftBorderTemporallyAction->setEnableFunction(alignEnableFuntion); auto alignRightTemporallyAction = actionController.addSectionZoneAction( QStringList{"Align Temporally"}, "Right", [](auto zones) { Q_ASSERT(zones.count() > 1); auto ref = zones.takeFirst(); ref->alignZonesTemporallyOnRight(zones, false); }); alignRightTemporallyAction->setEnableFunction(alignEnableFuntion); auto alignRightBorderTemporallyAction = actionController.addSectionZoneAction( QStringList{"Align Temporally"}, "Right Borders", [](auto zones) { Q_ASSERT(zones.count() > 1); auto ref = zones.takeFirst(); ref->alignZonesTemporallyOnRight(zones, true); }); alignRightBorderTemporallyAction->setEnableFunction(alignEnableFuntion); auto alignLeftAndRightTemporallyAction = actionController.addSectionZoneAction( QStringList{"Align Temporally"}, "Left and Right", [](auto zones) { Q_ASSERT(zones.count() > 1); auto ref = zones.takeFirst(); ref->alignZonesTemporallyOnLeft(zones, false); ref->alignZonesTemporallyOnRight(zones, true); }); alignLeftAndRightTemporallyAction->setEnableFunction(alignEnableFuntion); }