Skip to content

Commit cafaf5c

Browse files
committed
Refactor color dataset handling in ScatterplotPlugin
Introduces a dedicated _colorDataset member to manage the dataset used for coloring. Updates signal connections to ensure proper synchronization and heads-up display updates when the color dataset or color-by option changes. The heads-up display now only shows color metadata when the color-by index is >= 2.
1 parent de3e927 commit cafaf5c

File tree

2 files changed

+25
-3
lines changed

2 files changed

+25
-3
lines changed

src/ScatterplotPlugin.cpp

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -415,8 +415,27 @@ void ScatterplotPlugin::init()
415415

416416
connect(&_positionDataset, &Dataset<>::changed, this, &ScatterplotPlugin::updateHeadsUpDisplay);
417417
connect(&_positionDataset, &Dataset<>::guiNameChanged, this, &ScatterplotPlugin::updateHeadsUpDisplay);
418-
connect(&_settingsAction.getColoringAction(), &ColoringAction::currentColorDatasetChanged, this, &ScatterplotPlugin::updateHeadsUpDisplay);
419-
connect(&_settingsAction.getColoringAction().getColorByAction(), &OptionAction::currentIndexChanged, this, &ScatterplotPlugin::updateHeadsUpDisplay);
418+
connect(&_positionDataset, &Dataset<>::guiNameChanged, this, &ScatterplotPlugin::updateHeadsUpDisplay);
419+
420+
const auto currentColorDatasetChanged = [this](Dataset<DatasetImpl> currentColorDataset) -> void {
421+
if (_colorDataset == currentColorDataset)
422+
return;
423+
424+
if (_colorDataset.isValid())
425+
disconnect(&_colorDataset, &Dataset<>::guiNameChanged, this, nullptr);
426+
427+
_colorDataset = currentColorDataset;
428+
429+
connect(&_colorDataset, &Dataset<>::guiNameChanged, this, &ScatterplotPlugin::updateHeadsUpDisplay);
430+
431+
updateHeadsUpDisplay();
432+
};
433+
434+
connect(&_settingsAction.getColoringAction(), &ColoringAction::currentColorDatasetChanged, this, currentColorDatasetChanged);
435+
connect(&_settingsAction.getColoringAction().getColorByAction(), &OptionAction::currentIndexChanged, this, [this, currentColorDatasetChanged](const std::int32_t& currentIndex) -> void {
436+
currentColorDatasetChanged(_settingsAction.getColoringAction().getCurrentColorDataset());
437+
});
438+
420439
connect(&_settingsAction.getPlotAction().getPointPlotAction().getSizeAction(), &ScalarAction::sourceDataChanged, this, &ScatterplotPlugin::updateHeadsUpDisplay);
421440
connect(&_settingsAction.getPlotAction().getPointPlotAction().getOpacityAction(), &ScalarAction::sourceDataChanged, this, &ScatterplotPlugin::updateHeadsUpDisplay);
422441

@@ -1034,7 +1053,9 @@ void ScatterplotPlugin::updateHeadsUpDisplay()
10341053
getHeadsUpDisplayAction().addHeadsUpDisplayItem(QString("%1 by:").arg(metaDataName), data->getGuiName(), "", itemPtr);
10351054
};
10361055

1037-
addMetaDataToHeadsUpDisplay("Color", _settingsAction.getColoringAction().getCurrentColorDataset(), datasetsItem);
1056+
if (_settingsAction.getColoringAction().getColorByAction().getCurrentIndex() >= 2)
1057+
addMetaDataToHeadsUpDisplay("Color", _colorDataset, datasetsItem);
1058+
10381059
addMetaDataToHeadsUpDisplay("Size", _settingsAction.getPlotAction().getPointPlotAction().getSizeAction().getCurrentDataset(), datasetsItem);
10391060
addMetaDataToHeadsUpDisplay("Opacity", _settingsAction.getPlotAction().getPointPlotAction().getOpacityAction().getCurrentDataset(), datasetsItem);
10401061

src/ScatterplotPlugin.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ class ScatterplotPlugin : public ViewPlugin
116116
ScatterplotWidget* _scatterPlotWidget; /** The visualization widget */
117117
Dataset<Points> _positionDataset; /** Smart pointer to points dataset for point position */
118118
Dataset<Points> _positionSourceDataset; /** Smart pointer to source of the points dataset for point position (if any) */
119+
Dataset<DatasetImpl> _colorDataset; /** Smart pointer to dataset used for coloring (if any) */
119120
std::vector<mv::Vector2f> _positions; /** Point positions */
120121
unsigned int _numPoints; /** Number of point positions */
121122
SettingsAction _settingsAction; /** Group action for all settings */

0 commit comments

Comments
 (0)