From 59a1aa1597be69f8b9255ff2fb15e7b0df18fd5f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timoth=C3=A9e=20Couble?= <timothee.couble@kitware.com>
Date: Mon, 31 Mar 2025 16:37:03 +0200
Subject: [PATCH 1/3] [fix] Set property dock as default

---
 Application/Client/LidarViewMainWindow.cxx | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/Application/Client/LidarViewMainWindow.cxx b/Application/Client/LidarViewMainWindow.cxx
index fa58a0de3..56886435e 100644
--- a/Application/Client/LidarViewMainWindow.cxx
+++ b/Application/Client/LidarViewMainWindow.cxx
@@ -108,6 +108,9 @@ LidarViewMainWindow::LidarViewMainWindow()
   this->tabifyDockWidget(this->Internals->propertiesDock, this->Internals->viewPropertiesDock);
   this->tabifyDockWidget(this->Internals->propertiesDock, this->Internals->displayPropertiesDock);
 
+  // Set properties panel as default dock
+  this->Internals->propertiesDock->raise();
+
   // Change default properties panel modes (one dock for each)
   this->Internals->propertiesPanel->setPanelMode(pqPropertiesPanel::SOURCE_PROPERTIES);
   this->Internals->viewPropertiesPanel->setPanelMode(pqPropertiesPanel::VIEW_PROPERTIES);
-- 
GitLab


From 0711d829bd9ac1e35779b826e8aa83b38897dc27 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timoth=C3=A9e=20Couble?= <timothee.couble@kitware.com>
Date: Mon, 31 Mar 2025 16:37:46 +0200
Subject: [PATCH 2/3] [feat] Add comparativeVis dock panel

---
 Application/Client/LidarViewMainWindow.cxx |  1 +
 Application/Client/LidarViewMainWindow.ui  | 18 ++++++++++++++++++
 2 files changed, 19 insertions(+)

diff --git a/Application/Client/LidarViewMainWindow.cxx b/Application/Client/LidarViewMainWindow.cxx
index 56886435e..ccf424fe0 100644
--- a/Application/Client/LidarViewMainWindow.cxx
+++ b/Application/Client/LidarViewMainWindow.cxx
@@ -107,6 +107,7 @@ LidarViewMainWindow::LidarViewMainWindow()
 
   this->tabifyDockWidget(this->Internals->propertiesDock, this->Internals->viewPropertiesDock);
   this->tabifyDockWidget(this->Internals->propertiesDock, this->Internals->displayPropertiesDock);
+  this->tabifyDockWidget(this->Internals->propertiesDock, this->Internals->comparativePanelDock);
 
   // Set properties panel as default dock
   this->Internals->propertiesDock->raise();
diff --git a/Application/Client/LidarViewMainWindow.ui b/Application/Client/LidarViewMainWindow.ui
index 705913e1a..5474811c8 100644
--- a/Application/Client/LidarViewMainWindow.ui
+++ b/Application/Client/LidarViewMainWindow.ui
@@ -128,6 +128,18 @@
    </attribute>
    <widget class="pqPipelineBrowserWidget" name="pipelineBrowser"/>
   </widget>
+  <widget class="QDockWidget" name="comparativePanelDock">
+   <property name="allowedAreas">
+    <set>Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea</set>
+   </property>
+   <property name="windowTitle">
+    <string>Comparative View Inspector</string>
+   </property>
+   <attribute name="dockWidgetArea">
+    <number>2</number>
+   </attribute>
+   <widget class="pqComparativeVisPanel" name="comparativeVisPanel"/>
+  </widget>
   <widget class="QDockWidget" name="propertiesDock">
    <property name="windowTitle">
     <string>Properties</string>
@@ -313,6 +325,12 @@
    <extends>QStatusBar</extends>
    <header>lqStatusBar.h</header>
   </customwidget>
+  <customwidget>
+   <class>pqComparativeVisPanel</class>
+   <extends>QWidget</extends>
+   <header>pqComparativeVisPanel.h</header>
+   <container>1</container>
+  </customwidget>
   <customwidget>
    <class>pqPropertiesPanel</class>
    <extends>QWidget</extends>
-- 
GitLab


From e659da8cc081774d0f930caa16a67070dc4e5300 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timoth=C3=A9e=20Couble?= <timothee.couble@kitware.com>
Date: Mon, 31 Mar 2025 16:38:31 +0200
Subject: [PATCH 3/3] [feat] Customize available view in lidarview

---
 Application/Client/LidarViewMainWindow.cxx    |  5 +++
 .../Qt/ApplicationComponents/CMakeLists.txt   |  1 +
 .../lqViewFrameActionsImplementation.cxx      | 44 ++++++++++++++++++
 .../lqViewFrameActionsImplementation.h        | 45 +++++++++++++++++++
 4 files changed, 95 insertions(+)
 create mode 100644 Application/Qt/ApplicationComponents/lqViewFrameActionsImplementation.cxx
 create mode 100644 Application/Qt/ApplicationComponents/lqViewFrameActionsImplementation.h

diff --git a/Application/Client/LidarViewMainWindow.cxx b/Application/Client/LidarViewMainWindow.cxx
index ccf424fe0..27584701e 100644
--- a/Application/Client/LidarViewMainWindow.cxx
+++ b/Application/Client/LidarViewMainWindow.cxx
@@ -57,6 +57,7 @@ typedef pqPythonDebugLeaksView DebugLeaksViewType;
 #include "lqLiveSourceScalarColoringBehavior.h"
 #include "lqOpenLidarReaction.h"
 #include "lqRecentlyUsedPcapLoader.h"
+#include "lqViewFrameActionsImplementation.h"
 #include "lqWelcomeDialog.h"
 
 //-----------------------------------------------------------------------------
@@ -192,6 +193,10 @@ LidarViewMainWindow::LidarViewMainWindow()
   // To register ParaView interfaces.
   pqInterfaceTracker* pgm = pqApplicationCore::instance()->interfaceTracker();
 
+  // Replace default views
+  pqParaViewBehaviors::setEnableStandardViewFrameActions(false);
+  pgm->addInterface(new lqViewFrameActionsImplementation(pgm));
+
   // Add recently used pcap interface
   pgm->addInterface(new lqRecentlyUsedPcapLoader(pgm));
 
diff --git a/Application/Qt/ApplicationComponents/CMakeLists.txt b/Application/Qt/ApplicationComponents/CMakeLists.txt
index 9f52071a0..dff460299 100644
--- a/Application/Qt/ApplicationComponents/CMakeLists.txt
+++ b/Application/Qt/ApplicationComponents/CMakeLists.txt
@@ -8,6 +8,7 @@ set(classes
   lqMainControlsToolbar
   lqMenuSaveAsReaction
   lqStatusBar
+  lqViewFrameActionsImplementation
   lqWelcomeDialog
 )
 
diff --git a/Application/Qt/ApplicationComponents/lqViewFrameActionsImplementation.cxx b/Application/Qt/ApplicationComponents/lqViewFrameActionsImplementation.cxx
new file mode 100644
index 000000000..f153b138e
--- /dev/null
+++ b/Application/Qt/ApplicationComponents/lqViewFrameActionsImplementation.cxx
@@ -0,0 +1,44 @@
+/*=========================================================================
+
+  Program:   LidarView
+  Module:    lqViewFrameActionsImplementation.cxx
+
+  Copyright (c) Kitware, Inc.
+  All rights reserved.
+  See LICENSE or http://www.apache.org/licenses/LICENSE-2.0 for details.
+
+  This software is distributed WITHOUT ANY WARRANTY; without even
+  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+  PURPOSE.  See the above copyright notice for more information.
+
+=========================================================================*/
+
+#include "lqViewFrameActionsImplementation.h"
+
+//-----------------------------------------------------------------------------
+lqViewFrameActionsImplementation::lqViewFrameActionsImplementation(QObject* parent)
+  : Superclass(parent)
+{
+}
+
+//-----------------------------------------------------------------------------
+QList<pqStandardViewFrameActionsImplementation::ViewType>
+lqViewFrameActionsImplementation::availableViewTypes()
+{
+  std::vector<std::tuple<std::string, std::string>> option_view{ { "LidarGridView", "Render View" },
+    { "ComparativeRenderView", "Comparative Render View" },
+    { "RenderViewWithEDL", "Eye Dome Lighting Render View" },
+    { "SpreadSheetView", "SpreadSheet View" },
+    { "XYHistogramChartView", "Histogram View" },
+    { "XYChartView", "Line Chart View" },
+    { "PythonView", "Python View" } };
+  QList<pqStandardViewFrameActionsImplementation::ViewType> views;
+  for (const auto& [key, value] : option_view)
+  {
+    pqStandardViewFrameActionsImplementation::ViewType info;
+    info.Name = QString(key.c_str());
+    info.Label = QString(value.c_str());
+    views.push_back(info);
+  }
+  return views;
+}
diff --git a/Application/Qt/ApplicationComponents/lqViewFrameActionsImplementation.h b/Application/Qt/ApplicationComponents/lqViewFrameActionsImplementation.h
new file mode 100644
index 000000000..ea0c7ad13
--- /dev/null
+++ b/Application/Qt/ApplicationComponents/lqViewFrameActionsImplementation.h
@@ -0,0 +1,45 @@
+/*=========================================================================
+
+  Program:   LidarView
+  Module:    lqViewFrameActionsImplementation.h
+
+  Copyright (c) Kitware, Inc.
+  All rights reserved.
+  See LICENSE or http://www.apache.org/licenses/LICENSE-2.0 for details.
+
+  This software is distributed WITHOUT ANY WARRANTY; without even
+  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+  PURPOSE.  See the above copyright notice for more information.
+
+=========================================================================*/
+
+#ifndef lqViewFrameActionsImplementation_h
+#define lqViewFrameActionsImplementation_h
+
+#include <pqStandardViewFrameActionsImplementation.h>
+
+#include <QList>
+
+#include "lvApplicationComponentsModule.h"
+
+class LVAPPLICATIONCOMPONENTS_EXPORT lqViewFrameActionsImplementation
+  : public pqStandardViewFrameActionsImplementation
+{
+  Q_OBJECT
+  typedef pqStandardViewFrameActionsImplementation Superclass;
+
+public:
+  lqViewFrameActionsImplementation(QObject* parent = 0);
+  ~lqViewFrameActionsImplementation() override = default;
+
+protected:
+  /**
+   * Returns available view types in LidarView.
+   */
+  QList<ViewType> availableViewTypes() override;
+
+private:
+  Q_DISABLE_COPY(lqViewFrameActionsImplementation);
+};
+
+#endif
-- 
GitLab