@@ -40,10 +40,6 @@ DatasetsAction::DatasetsAction(QObject* parent, const QString& title) :
4040 return ;
4141
4242 setupDatasetPickerActions (scatterplotPlugin);
43-
44- connect (&mv::projects (), &AbstractProjectManager::projectOpened, this , [this , scatterplotPlugin]() -> void {
45- setupDatasetPickerActions (scatterplotPlugin);
46- });
4743}
4844
4945void DatasetsAction::connectToPublicAction (WidgetAction* publicAction, bool recursive)
@@ -152,35 +148,53 @@ void DatasetsAction::setupColorDatasetPickerAction(ScatterplotPlugin* scatterplo
152148
153149void DatasetsAction::setupPointSizeDatasetPickerAction (ScatterplotPlugin* scatterplotPlugin)
154150{
155- auto & settingsAction = scatterplotPlugin->getSettingsAction ();
151+ auto & settingsAction = scatterplotPlugin->getSettingsAction ();
152+ auto & pointPlotAction = settingsAction.getPlotAction ().getPointPlotAction ();
153+ auto & pointSizeAction = pointPlotAction.getSizeAction ();
156154
157- _pointSizeDatasetPickerAction.setFilterFunction ([this ](mv::Dataset<DatasetImpl> dataset) -> bool {
158- return dataset->getDataType () == PointType;
159- }) ;
155+ _pointSizeDatasetPickerAction.setFilterFunction ([this , scatterplotPlugin ](mv::Dataset<DatasetImpl> dataset) -> bool {
156+ if ( dataset->getDataType () != PointType)
157+ return false ;
160158
161- auto & pointPlotAction = settingsAction.getPlotAction ().getPointPlotAction ();
162- auto & pointSizeAction = pointPlotAction.getSizeAction ();
159+ qDebug () << dataset->getGuiName () << " A" ;
160+ const auto positionDataset = scatterplotPlugin->getPositionSourceDataset ();
161+
162+ if (!positionDataset.isValid ())
163+ return false ;
163164
165+ qDebug () << dataset->getGuiName () << " B" ;
164166
165- connect (&pointSizeAction, &ScalarAction::sourceSelectionChanged, this , [this , &pointSizeAction, scatterplotPlugin](const uint32_t & sourceSelectionIndex) -> void {
166- if (_pointSizeDataset.isValid ())
167+ const mv::Dataset<Points> candidatePoints (dataset);
168+
169+ if (candidatePoints->getNumPoints () != positionDataset->getNumPoints ())
170+ return false ;
171+
172+ qDebug () << dataset->getGuiName () << " C" ;
173+
174+ return true ;
175+ });
176+
177+ connect (&_pointSizeDatasetPickerAction, &DatasetPickerAction::currentIndexChanged, this , [this , &pointPlotAction, &pointSizeAction, scatterplotPlugin](const int32_t & currentIndex) -> void {
178+ const auto & pointSizeDataset = _pointSizeDatasetPickerAction.getCurrentDataset ();
179+
180+ if (pointSizeDataset.isValid ())
167181 disconnect (&_pointSizeDataset, &Dataset<>::guiNameChanged, this , nullptr );
168182
169- _pointSizeDataset = pointSizeAction. getCurrentDataset () ;
183+ _pointSizeDataset = pointSizeDataset ;
170184
171185 connect (&_pointSizeDataset, &Dataset<>::guiNameChanged, scatterplotPlugin, &ScatterplotPlugin::updateHeadsUpDisplay);
172186
187+ pointPlotAction.setCurrentPointSizeDataset (_pointSizeDataset);
188+
189+ if (!_pointSizeDataset.isValid ())
190+ pointSizeAction.setCurrentSourceIndex (ScalarSourceModel::DefaultRow::Constant);
191+ });
192+
193+ connect (&pointSizeAction, &ScalarAction::sourceSelectionChanged, this , [this , &pointSizeAction](const uint32_t & sourceSelectionIndex) -> void {
173194 _pointSizeDatasetPickerAction.setCurrentDataset (pointSizeAction.isSourceDataset () ? pointSizeAction.getCurrentDataset () : nullptr );
174195
175196 if (!pointSizeAction.isSourceDataset ())
176197 _pointSizeDatasetPickerAction.setCurrentIndex (-1 );
177- });
178-
179- connect (&_pointSizeDatasetPickerAction, &DatasetPickerAction::currentIndexChanged, this , [this , &pointSizeAction](const int32_t & currentIndex) -> void {
180- pointSizeAction.setCurrentDataset (_pointSizeDatasetPickerAction.getCurrentDataset ());
181-
182- if (currentIndex < 0 )
183- pointSizeAction.setCurrentSourceIndex (ScalarSourceModel::DefaultRow::Constant);
184198 });
185199}
186200
0 commit comments