Skip to content

Commit 02edf85

Browse files
author
Sreeparna Deb
committed
Merge remote-tracking branch 'origin/master' into feature/auto_plugininfo_on_website
2 parents 67051ac + 0ca8f81 commit 02edf85

File tree

5 files changed

+80
-28
lines changed

5 files changed

+80
-28
lines changed

.github/workflows/build.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,11 @@ jobs:
7171
conan-password: ${{secrets.LKEB_UPLOAD_USER_PASSWORD}}
7272
conan-pem: ${{secrets.LKEB_UPLOAD_CERT_CHAIN}}
7373
rs_ssh_key: ${{ secrets.RULESSUPPORT_DEPLOY_KEY }}
74+
sentry-upload: startsWith(github.ref, 'refs/heads/release/')
75+
sentry-url: ${{secrets.LKEB_SENTRY_URL }}
76+
sentry-org: ${{secrets.LKEB_SENTRY_ORG }}
77+
sentry-project: ${{secrets.LKEB_SENTRY_PROJECT }}
78+
sentry-auth-token: ${{secrets.LKEB_SENTRY_AUTH_TOKEN }}
7479

7580
- name: Linux build
7681
if: startsWith(matrix.os, 'ubuntu')
@@ -100,4 +105,4 @@ jobs:
100105
build-arch: ${{matrix.build-arch}}
101106
conan-user: ${{secrets.LKEB_UPLOAD_USER}}
102107
conan-password: ${{secrets.LKEB_UPLOAD_USER_PASSWORD}}
103-
conan-pem: ${{secrets.LKEB_UPLOAD_CERT_CHAIN}}
108+
conan-pem: ${{secrets.LKEB_UPLOAD_CERT_CHAIN}}

conanfile.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
from conans import ConanFile
22
from conan.tools.cmake import CMakeDeps, CMake, CMakeToolchain
33
from conans.tools import save, load
4+
from conans import tools
45
import os
56
import pathlib
7+
import shutil
68
import subprocess
79
from rules_support import PluginBranchInfo
810

@@ -98,6 +100,7 @@ def generate(self):
98100
# Use the ManiVault .cmake file to find ManiVault with find_package
99101
mv_core_root = self.deps_cpp_info["hdps-core"].rootpath
100102
manivault_dir = pathlib.Path(mv_core_root, "cmake", "mv").as_posix()
103+
101104
print("ManiVault_DIR: ", manivault_dir)
102105
tc.variables["ManiVault_DIR"] = manivault_dir
103106

src/ScatterplotPlugin.cpp

Lines changed: 67 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,8 @@ ScatterplotPlugin::ScatterplotPlugin(const PluginFactory* factory) :
262262
getSamplerAction().getEnabledAction().setChecked(false);
263263

264264
getLearningCenterAction().addVideos(QStringList({ "Practitioner", "Developer" }));
265+
266+
setOverlayActionsTargetWidget(_scatterPlotWidget);
265267
}
266268

267269
ScatterplotPlugin::~ScatterplotPlugin()
@@ -270,35 +272,23 @@ ScatterplotPlugin::~ScatterplotPlugin()
270272

271273
void ScatterplotPlugin::init()
272274
{
275+
getWidget().setMouseTracking(true);
276+
273277
auto layout = new QVBoxLayout();
274278

275279
layout->setContentsMargins(0, 0, 0, 0);
276280
layout->setSpacing(0);
277281
layout->addWidget(_primaryToolbarAction.createWidget(&getWidget()));
278282
layout->addWidget(_scatterPlotWidget, 100);
279283

280-
auto navigationWidget = new QWidget();
281-
auto navigationLayout = new QHBoxLayout();
282-
283-
navigationLayout->setContentsMargins(4, 4, 4, 4);
284-
285-
navigationLayout->addStretch(1);
286-
{
287-
auto renderersNavigationGroupAction = new HorizontalGroupAction(this, "Navigation");
288-
289-
renderersNavigationGroupAction->setShowLabels(false);
290-
291-
renderersNavigationGroupAction->addAction(const_cast<NavigationAction*>(&_scatterPlotWidget->getPointRendererNavigator().getNavigationAction()));
284+
auto& navigationAction = _scatterPlotWidget->getPointRendererNavigator().getNavigationAction();
292285

293-
_scatterPlotWidget->getPointRendererNavigator().getNavigationAction().setParent(&_settingsAction);
286+
if (auto navigationWidget = navigationAction.createWidget(&getWidget())) {
287+
layout->addWidget(navigationWidget);
288+
layout->setAlignment(navigationWidget, Qt::AlignCenter);
294289

295-
navigationLayout->addWidget(renderersNavigationGroupAction->createWidget(&getWidget()));
290+
navigationAction.setParent(&_settingsAction);
296291
}
297-
navigationLayout->addStretch(1);
298-
299-
navigationWidget->setLayout(navigationLayout);
300-
301-
layout->addWidget(navigationWidget);
302292

303293
getWidget().setLayout(layout);
304294

@@ -375,6 +365,19 @@ void ScatterplotPlugin::init()
375365
return pointIndicesTableWidget;
376366
});
377367
#endif
368+
369+
updateHeadsUpDisplay();
370+
371+
connect(&_positionDataset, &Dataset<>::changed, this, &ScatterplotPlugin::updateHeadsUpDisplay);
372+
connect(&_positionDataset, &Dataset<>::guiNameChanged, this, &ScatterplotPlugin::updateHeadsUpDisplay);
373+
connect(&_settingsAction.getColoringAction(), &ColoringAction::currentColorDatasetChanged, this, &ScatterplotPlugin::updateHeadsUpDisplay);
374+
connect(&_settingsAction.getColoringAction().getColorByAction(), &OptionAction::currentIndexChanged, this, &ScatterplotPlugin::updateHeadsUpDisplay);
375+
connect(&_settingsAction.getPlotAction().getPointPlotAction().getSizeAction(), &ScalarAction::sourceDataChanged, this, &ScatterplotPlugin::updateHeadsUpDisplay);
376+
connect(&_settingsAction.getPlotAction().getPointPlotAction().getOpacityAction(), &ScalarAction::sourceDataChanged, this, &ScatterplotPlugin::updateHeadsUpDisplay);
377+
378+
updateHeadsUpDisplayTextColor();
379+
380+
connect(&_settingsAction.getMiscellaneousAction().getBackgroundColorAction(), &ColorAction::colorChanged, this, &ScatterplotPlugin::updateHeadsUpDisplayTextColor);
378381
}
379382

380383
void ScatterplotPlugin::loadData(const Datasets& datasets)
@@ -412,8 +415,11 @@ void ScatterplotPlugin::selectPoints()
412415

413416
auto& pixelSelectionTool = _scatterPlotWidget->getPixelSelectionTool();
414417

418+
auto renderer = _settingsAction.getRenderModeAction().getCurrentIndex() > 0 ? dynamic_cast<Renderer2D*>(&_scatterPlotWidget->_densityRenderer) : dynamic_cast<Renderer2D*>(&_scatterPlotWidget->_pointRenderer);
419+
auto& navigator = renderer->getNavigator();
420+
415421
// Only proceed with a valid points position dataset and when the pixel selection tool is active
416-
if (!_positionDataset.isValid() || !pixelSelectionTool.isActive() || _scatterPlotWidget->_pointRenderer.getNavigator().isNavigating() || !pixelSelectionTool.isEnabled())
422+
if (!_positionDataset.isValid() || !pixelSelectionTool.isActive() || navigator.isNavigating() || !pixelSelectionTool.isEnabled())
417423
return;
418424

419425
auto selectionAreaImage = pixelSelectionTool.getAreaPixmap().toImage();
@@ -427,11 +433,8 @@ void ScatterplotPlugin::selectPoints()
427433

428434
_positionDataset->getGlobalIndices(localGlobalIndices);
429435

430-
auto& pointRenderer = _scatterPlotWidget->_pointRenderer;
431-
auto& navigator = pointRenderer.getNavigator();
432-
433436
const auto zoomRectangleWorld = navigator.getZoomRectangleWorld();
434-
const auto screenRectangle = QRect(QPoint(), pointRenderer.getRenderSize());
437+
const auto screenRectangle = QRect(QPoint(), renderer->getRenderSize());
435438

436439
float boundaries[4]{
437440
std::numeric_limits<float>::max(),
@@ -516,7 +519,7 @@ void ScatterplotPlugin::selectPoints()
516519
}
517520
}
518521

519-
auto& navigationAction = _scatterPlotWidget->getPointRendererNavigator().getNavigationAction();
522+
auto& navigationAction = navigator.getNavigationAction();
520523

521524
navigationAction.getZoomSelectionAction().setEnabled(!targetSelectionIndices.empty() && !navigationAction.getFreezeNavigation().isChecked());
522525

@@ -969,6 +972,42 @@ void ScatterplotPlugin::updateSelection()
969972
}
970973
}
971974

975+
void ScatterplotPlugin::updateHeadsUpDisplay()
976+
{
977+
getHeadsUpDisplayAction().removeAllHeadsUpDisplayItems();
978+
979+
if (_positionDataset.isValid()) {
980+
const auto datasetsItem = getHeadsUpDisplayAction().addHeadsUpDisplayItem("Datasets", "", "");
981+
982+
getHeadsUpDisplayAction().addHeadsUpDisplayItem("Position by:", _positionDataset->getGuiName(), "", datasetsItem);
983+
984+
auto addMetaDataToHeadsUpDisplay = [this](const QString& metaDataName, const Dataset<> data, const util::HeadsUpDisplayItemSharedPtr& itemPtr) {
985+
if (data.isValid())
986+
getHeadsUpDisplayAction().addHeadsUpDisplayItem(QString("%1 by:").arg(metaDataName), data->getGuiName(), "", itemPtr);
987+
};
988+
989+
addMetaDataToHeadsUpDisplay("Color", _settingsAction.getColoringAction().getCurrentColorDataset(), datasetsItem);
990+
addMetaDataToHeadsUpDisplay("Size", _settingsAction.getPlotAction().getPointPlotAction().getSizeAction().getCurrentDataset(), datasetsItem);
991+
addMetaDataToHeadsUpDisplay("Opacity", _settingsAction.getPlotAction().getPointPlotAction().getOpacityAction().getCurrentDataset(), datasetsItem);
992+
993+
} else {
994+
getHeadsUpDisplayAction().addHeadsUpDisplayItem("No datasets loaded", "", "");
995+
}
996+
}
997+
998+
void ScatterplotPlugin::updateHeadsUpDisplayTextColor()
999+
{
1000+
if (auto headsUpDisplayWidget = getWidget().findChild<QWidget*>("HeadsUpDisplayWidget")) {
1001+
if (auto headsUpDisplayWidgetTreeView = headsUpDisplayWidget->findChild<QTreeView*>("TreeView")) {
1002+
QPalette palette = headsUpDisplayWidgetTreeView->palette();
1003+
1004+
palette.setColor(QPalette::Text, _settingsAction.getMiscellaneousAction().getBackgroundColorAction().getColor().lightnessF() > .5f ? Qt::black : Qt::white);
1005+
1006+
headsUpDisplayWidgetTreeView->setPalette(palette);
1007+
}
1008+
}
1009+
}
1010+
9721011
void ScatterplotPlugin::fromVariantMap(const QVariantMap& variantMap)
9731012
{
9741013
ViewPlugin::fromVariantMap(variantMap);
@@ -982,14 +1021,16 @@ void ScatterplotPlugin::fromVariantMap(const QVariantMap& variantMap)
9821021
_primaryToolbarAction.fromParentVariantMap(variantMap);
9831022
_settingsAction.fromParentVariantMap(variantMap);
9841023

985-
1024+
updateHeadsUpDisplay();
9861025

9871026
if (pointRenderer.getNavigator().getNavigationAction().getSerializationCountFrom() == 0) {
9881027
qDebug() << "Resetting view";
9891028

9901029

9911030
_scatterPlotWidget->update();
9921031
}
1032+
1033+
updateHeadsUpDisplayTextColor();
9931034
}
9941035

9951036
QVariantMap ScatterplotPlugin::toVariantMap() const

src/ScatterplotPlugin.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,9 @@ class ScatterplotPlugin : public ViewPlugin
9494
void updateData();
9595
void updateSelection();
9696

97+
void updateHeadsUpDisplay();
98+
void updateHeadsUpDisplayTextColor();
99+
97100
public: // Serialization
98101

99102
/**

src/ScatterplotWidget.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ bool ScatterplotWidget::event(QEvent* event)
153153
}
154154

155155
auto setIsNavigating = [this](bool isNavigating) -> void {
156-
_pixelSelectionTool.setEnabled(getRenderMode() == RenderMode::SCATTERPLOT && !isNavigating);
156+
_pixelSelectionTool.setEnabled((getRenderMode() == RenderMode::SCATTERPLOT || getRenderMode() == RenderMode::DENSITY) && !isNavigating);
157157

158158
if (isNavigating) {
159159
_samplerPixelSelectionTool.setEnabled(false);

0 commit comments

Comments
 (0)