|
|
#include "Visualization/VisualizationActionManager.h"
|
|
|
#include "Visualization/VisualizationGraphWidget.h"
|
|
|
#include "Visualization/VisualizationSelectionZoneItem.h"
|
|
|
|
|
|
#include <Actions/ActionsGuiController.h>
|
|
|
#include <SqpApplication.h>
|
|
|
|
|
|
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);
|
|
|
}
|
|
|
|