-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathPlotAction.cpp
More file actions
119 lines (89 loc) · 3.53 KB
/
PlotAction.cpp
File metadata and controls
119 lines (89 loc) · 3.53 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
#include "PlotAction.h"
#include "ScatterplotPlugin.h"
#include "ScatterplotWidget.h"
using namespace mv::gui;
PlotAction::PlotAction(QObject* parent, const QString& title) :
VerticalGroupAction(parent, title),
_scatterplotPlugin(nullptr),
_pointPlotAction(this, "Point"),
_densityPlotAction(this, "Density")
{
setToolTip("Plot settings");
setIconByName("paint-brush");
setLabelSizingType(LabelSizingType::Auto);
addAction(&_pointPlotAction.getSizeAction());
addAction(&_pointPlotAction.getOpacityAction());
addAction(&_pointPlotAction.getFocusSelection());
addAction(&_densityPlotAction.getSigmaAction());
addAction(&_densityPlotAction.getContinuousUpdatesAction());
addAction(&_densityPlotAction.getWeightWithPointSizeAction());
}
void PlotAction::initialize(ScatterplotPlugin* scatterplotPlugin)
{
Q_ASSERT(scatterplotPlugin != nullptr);
if (scatterplotPlugin == nullptr)
return;
_scatterplotPlugin = scatterplotPlugin;
_pointPlotAction.initialize(_scatterplotPlugin);
_densityPlotAction.initialize(_scatterplotPlugin);
auto& scatterplotWidget = _scatterplotPlugin->getScatterplotWidget();
const auto updateRenderMode = [this, &scatterplotWidget]() -> void {
_pointPlotAction.setVisible(scatterplotWidget.getRenderMode() == ScatterplotWidget::SCATTERPLOT);
_densityPlotAction.setVisible(scatterplotWidget.getRenderMode() != ScatterplotWidget::SCATTERPLOT);
};
updateRenderMode();
connect(&scatterplotWidget, &ScatterplotWidget::renderModeChanged, this, updateRenderMode);
}
QMenu* PlotAction::getContextMenu()
{
if (_scatterplotPlugin == nullptr)
return nullptr;
switch (_scatterplotPlugin->getScatterplotWidget().getRenderMode())
{
case ScatterplotWidget::RenderMode::SCATTERPLOT:
return _pointPlotAction.getContextMenu();
break;
case ScatterplotWidget::RenderMode::DENSITY:
case ScatterplotWidget::RenderMode::LANDSCAPE:
return _densityPlotAction.getContextMenu();
break;
default:
break;
}
return new QMenu("Plot");
}
void PlotAction::connectToPublicAction(WidgetAction* publicAction, bool recursive)
{
auto publicPlotAction = dynamic_cast<PlotAction*>(publicAction);
Q_ASSERT(publicPlotAction != nullptr);
if (publicPlotAction == nullptr)
return;
if (recursive) {
actions().connectPrivateActionToPublicAction(&_pointPlotAction, &publicPlotAction->getPointPlotAction(), recursive);
actions().connectPrivateActionToPublicAction(&_densityPlotAction, &publicPlotAction->getDensityPlotAction(), recursive);
}
GroupAction::connectToPublicAction(publicAction, recursive);
}
void PlotAction::disconnectFromPublicAction(bool recursive)
{
if (!isConnected())
return;
if (recursive) {
actions().disconnectPrivateActionFromPublicAction(&_pointPlotAction, recursive);
actions().disconnectPrivateActionFromPublicAction(&_densityPlotAction, recursive);
}
GroupAction::disconnectFromPublicAction(recursive);
}
void PlotAction::fromVariantMap(const QVariantMap& variantMap)
{
GroupAction::fromVariantMap(variantMap);
_pointPlotAction.fromParentVariantMap(variantMap);
_densityPlotAction.fromParentVariantMap(variantMap);
}
QVariantMap PlotAction::toVariantMap() const
{
auto variantMap = GroupAction::toVariantMap();
_pointPlotAction.insertIntoVariantMap(variantMap);
_densityPlotAction.insertIntoVariantMap(variantMap);
return variantMap;
}