Repository navigation
Expand file tree
/
Copy pathSettingsAction.cpp
More file actions
124 lines (98 loc) · 4.8 KB
/
Copy pathSettingsAction.cpp
File metadata and controls
124 lines (98 loc) · 4.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include "SettingsAction.h"
#include "ScatterplotPlugin.h"
#include <PointData/PointData.h>
#include <QMenu>
#include "ScatterplotWidget.h"
using namespace mv::gui;
SettingsAction::SettingsAction(QObject* parent, const QString& title) :
GroupAction(parent, title),
_scatterplotPlugin(dynamic_cast<ScatterplotPlugin*>(parent)),
_renderModeAction(this, "Render Mode"),
_positionAction(this, "Position"),
_selectionAction(this, "Selection"),
_zOrderingAction(this, "Z ordering"),
_plotAction(this, "Plot"),
_coloringAction(this, "Coloring"),
_subsetAction(this, "Subset"),
_clusteringAction(this, "Clustering"),
_exportAction(this, "Export"),
_miscellaneousAction(this, "Miscellaneous"),
_datasetsAction(this, "Datasets")
{
setConnectionPermissionsToForceNone();
_renderModeAction.initialize(_scatterplotPlugin);
_selectionAction.initialize(_scatterplotPlugin);
_zOrderingAction.initialize(_scatterplotPlugin);
_plotAction.initialize(_scatterplotPlugin);
_subsetAction.initialize(_scatterplotPlugin);
_exportAction.initialize(_scatterplotPlugin);
const auto updateEnabled = [this]() {
const auto enabled = _scatterplotPlugin->getPositionDataset().isValid();
_plotAction.setEnabled(enabled);
_positionAction.setEnabled(enabled);
_coloringAction.setEnabled(enabled);
_zOrderingAction.setEnabled(enabled);
};
updateEnabled();
connect(&_scatterplotPlugin->getPositionDataset(), &Dataset<Points>::changed, this, updateEnabled);
}
QMenu* SettingsAction::getContextMenu()
{
auto menu = new QMenu();
menu->addMenu(_renderModeAction.getContextMenu());
menu->addMenu(_plotAction.getContextMenu());
menu->addSeparator();
menu->addMenu(_positionAction.getContextMenu());
menu->addMenu(_zOrderingAction.getContextMenu());
menu->addMenu(_coloringAction.getContextMenu());
menu->addSeparator();
menu->addMenu(_subsetAction.getContextMenu());
menu->addSeparator();
menu->addMenu(_miscellaneousAction.getContextMenu());
return menu;
}
void SettingsAction::fromVariantMap(const QVariantMap& variantMap)
{
WidgetAction::fromVariantMap(variantMap);
const auto containsZOrderingSettings = variantMap.contains("Z ordering");
_datasetsAction.fromParentVariantMap(variantMap);
_plotAction.fromParentVariantMap(variantMap);
_positionAction.fromParentVariantMap(variantMap);
_selectionAction.fromParentVariantMap(variantMap);
_zOrderingAction.fromParentVariantMap(variantMap, true);
_coloringAction.fromParentVariantMap(variantMap);
_subsetAction.fromParentVariantMap(variantMap, true);
_clusteringAction.fromParentVariantMap(variantMap, true);
_renderModeAction.fromParentVariantMap(variantMap);
_miscellaneousAction.fromParentVariantMap(variantMap);
// Migrate projects saved before z ordering became a dedicated action.
if (!containsZOrderingSettings) {
const auto miscellaneousMap = variantMap.value("Miscellaneous").toMap();
const auto randomizedDepthMap = miscellaneousMap.value("Randomized depth").toMap();
if (!randomizedDepthMap.isEmpty()) {
const auto mode = randomizedDepthMap.value("Value").toBool() ? ZOrderingAction::Mode::Randomized : ZOrderingAction::Mode::InsertionOrder;
_zOrderingAction.getModeAction().setCurrentIndex(static_cast<std::int32_t>(mode));
}
}
if (variantMap.contains("PointRendererNavigation"))
_scatterplotPlugin->getScatterplotWidget().getPointRendererNavigator().getNavigationAction().fromVariantMap(variantMap["PointRendererNavigation"].toMap());
if (variantMap.contains("DensityRendererNavigation"))
_scatterplotPlugin->getScatterplotWidget().getDensityRendererNavigator().getNavigationAction().fromVariantMap(variantMap["DensityRendererNavigation"].toMap());
}
QVariantMap SettingsAction::toVariantMap() const
{
QVariantMap variantMap = WidgetAction::toVariantMap();
_datasetsAction.insertIntoVariantMap(variantMap);
_renderModeAction.insertIntoVariantMap(variantMap);
_plotAction.insertIntoVariantMap(variantMap);
_positionAction.insertIntoVariantMap(variantMap);
_zOrderingAction.insertIntoVariantMap(variantMap);
_coloringAction.insertIntoVariantMap(variantMap);
_subsetAction.insertIntoVariantMap(variantMap);
_clusteringAction.insertIntoVariantMap(variantMap);
_selectionAction.insertIntoVariantMap(variantMap);
_miscellaneousAction.insertIntoVariantMap(variantMap);
variantMap["PointRendererNavigation"] = _scatterplotPlugin->getScatterplotWidget().getPointRendererNavigator().getNavigationAction().toVariantMap();
variantMap["DensityRendererNavigation"] = _scatterplotPlugin->getScatterplotWidget().getDensityRendererNavigator().getNavigationAction().toVariantMap();
return variantMap;
}