mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-09 23:16:00 -06:00
#569 Added custom font for labels in 3D scene and added font size to preferences
This commit is contained in:
parent
17d37c70d3
commit
58047a6509
@ -77,6 +77,8 @@
|
||||
|
||||
#include "SummaryPlotCommands/RicNewSummaryPlotFeature.h"
|
||||
|
||||
#include "cafFixedAtlasFont.h"
|
||||
|
||||
#include "cafAppEnum.h"
|
||||
#include "cafCeetronPlusNavigation.h"
|
||||
#include "cafEffectCache.h"
|
||||
@ -87,7 +89,6 @@
|
||||
#include "cafProgressInfo.h"
|
||||
#include "cafUiProcess.h"
|
||||
#include "cafUtils.h"
|
||||
#include "cvfFixedAtlasFont.h"
|
||||
#include "cvfProgramOptions.h"
|
||||
#include "cvfqtUtils.h"
|
||||
|
||||
@ -191,7 +192,8 @@ RiaApplication::RiaApplication(int& argc, char** argv)
|
||||
|
||||
// The creation of a font is time consuming, so make sure you really need your own font
|
||||
// instead of using the application font
|
||||
m_standardFont = new cvf::FixedAtlasFont(cvf::FixedAtlasFont::STANDARD);
|
||||
m_standardFont = new caf::FixedAtlasFont(caf::FixedAtlasFont::POINT_SIZE_8);
|
||||
|
||||
m_resViewUpdateTimer = NULL;
|
||||
|
||||
m_runningRegressionTests = false;
|
||||
@ -1625,10 +1627,47 @@ void RiaApplication::applyPreferences()
|
||||
RiuMainWindow::instance()->projectTreeView()->enableAppendOfClassNameToUiItemText(m_preferences->appendClassNameToUiText());
|
||||
}
|
||||
|
||||
caf::FixedAtlasFont::FontSize fontSizeType = caf::FixedAtlasFont::POINT_SIZE_16;
|
||||
if (m_preferences->fontSizeInScene() == "8")
|
||||
{
|
||||
fontSizeType = caf::FixedAtlasFont::POINT_SIZE_8;
|
||||
}
|
||||
else if (m_preferences->fontSizeInScene() == "12")
|
||||
{
|
||||
fontSizeType = caf::FixedAtlasFont::POINT_SIZE_12;
|
||||
}
|
||||
else if (m_preferences->fontSizeInScene() == "16")
|
||||
{
|
||||
fontSizeType = caf::FixedAtlasFont::POINT_SIZE_16;
|
||||
}
|
||||
else if (m_preferences->fontSizeInScene() == "24")
|
||||
{
|
||||
fontSizeType = caf::FixedAtlasFont::POINT_SIZE_24;
|
||||
}
|
||||
else if (m_preferences->fontSizeInScene() == "32")
|
||||
{
|
||||
fontSizeType = caf::FixedAtlasFont::POINT_SIZE_32;
|
||||
}
|
||||
|
||||
m_customFont = new caf::FixedAtlasFont(fontSizeType);
|
||||
|
||||
if (this->project())
|
||||
{
|
||||
this->project()->setScriptDirectories(m_preferences->scriptDirectories());
|
||||
this->project()->updateConnectedEditors();
|
||||
|
||||
std::vector<RimView*> visibleViews;
|
||||
this->project()->allVisibleViews(visibleViews);
|
||||
|
||||
for (auto view : visibleViews)
|
||||
{
|
||||
RimEclipseView* eclipseView = dynamic_cast<RimEclipseView*>(view);
|
||||
if (eclipseView)
|
||||
{
|
||||
eclipseView->scheduleReservoirGridGeometryRegen();
|
||||
}
|
||||
view->scheduleCreateDisplayModelAndRedraw();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -2093,6 +2132,16 @@ cvf::Font* RiaApplication::standardFont()
|
||||
return m_standardFont.p();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
cvf::Font* RiaApplication::customFont()
|
||||
{
|
||||
CVF_ASSERT(m_customFont.notNull());
|
||||
|
||||
return m_customFont.p();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -159,6 +159,7 @@ public:
|
||||
void applyPreferences();
|
||||
|
||||
cvf::Font* standardFont();
|
||||
cvf::Font* customFont();
|
||||
|
||||
QString commandLineParameterHelp() const;
|
||||
void showFormattedTextInMessageBox(const QString& text);
|
||||
@ -225,6 +226,7 @@ private:
|
||||
QString m_startupDefaultDirectory;
|
||||
|
||||
cvf::ref<cvf::Font> m_standardFont;
|
||||
cvf::ref<cvf::Font> m_customFont;
|
||||
|
||||
QMap<QString, QVariant> m_sessionCache; // Session cache used to store username/passwords per session
|
||||
|
||||
|
@ -59,6 +59,8 @@ RiaPreferences::RiaPreferences(void)
|
||||
CAF_PDM_InitField(&defaultViewerBackgroundColor, "defaultViewerBackgroundColor", cvf::Color3f(0.69f, 0.77f, 0.87f), "Viewer background", "", "The viewer background color for new views", "");
|
||||
|
||||
CAF_PDM_InitField(&defaultScaleFactorZ, "defaultScaleFactorZ", 5, "Z scale factor", "", "", "");
|
||||
CAF_PDM_InitField(&fontSizeInScene, "fontSizeInScene", QString("8"), "Font size", "", "", "");
|
||||
|
||||
CAF_PDM_InitField(&showLasCurveWithoutTvdWarning, "showLasCurveWithoutTvdWarning", true, "Show LAS curve without TVD warning", "", "", "");
|
||||
showLasCurveWithoutTvdWarning.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN);
|
||||
|
||||
@ -83,6 +85,9 @@ RiaPreferences::RiaPreferences(void)
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&readerSettings, "readerSettings", "Reader settings", "", "", "");
|
||||
readerSettings = new RifReaderSettings;
|
||||
|
||||
m_tabNames << "General";
|
||||
m_tabNames << "Appearance";
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -130,36 +135,75 @@ void RiaPreferences::defineEditorAttribute(const caf::PdmFieldHandle* field, QSt
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiaPreferences::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
|
||||
{
|
||||
uiOrdering.add(&navigationPolicy);
|
||||
|
||||
caf::PdmUiGroup* scriptGroup = uiOrdering.addNewGroup("Script configuration");
|
||||
scriptGroup->add(&scriptDirectories);
|
||||
scriptGroup->add(&scriptEditorExecutable);
|
||||
|
||||
caf::PdmUiGroup* octaveGroup = uiOrdering.addNewGroup("Octave");
|
||||
octaveGroup->add(&octaveExecutable);
|
||||
octaveGroup->add(&octaveShowHeaderInfoWhenExecutingScripts);
|
||||
|
||||
caf::PdmUiGroup* defaultSettingsGroup = uiOrdering.addNewGroup("Default settings");
|
||||
defaultSettingsGroup->add(&defaultScaleFactorZ);
|
||||
defaultSettingsGroup->add(&defaultViewerBackgroundColor);
|
||||
defaultSettingsGroup->add(&defaultGridLines);
|
||||
defaultSettingsGroup->add(&defaultGridLineColors);
|
||||
defaultSettingsGroup->add(&defaultFaultGridLineColors);
|
||||
defaultSettingsGroup->add(&defaultWellLabelColor);
|
||||
defaultSettingsGroup->add(&showLasCurveWithoutTvdWarning);
|
||||
|
||||
caf::PdmUiGroup* autoComputeGroup = uiOrdering.addNewGroup("Behavior when loading new case");
|
||||
autoComputeGroup->add(&autocomputeDepthRelatedProperties);
|
||||
autoComputeGroup->add(&loadAndShowSoil);
|
||||
|
||||
caf::PdmUiGroup* readerSettingsGroup = uiOrdering.addNewGroup("Reader settings");
|
||||
std::vector<caf::PdmFieldHandle*> readerSettingsFields;
|
||||
readerSettings->fields(readerSettingsFields);
|
||||
for (size_t i = 0; i < readerSettingsFields.size(); i++)
|
||||
if (uiConfigName == m_tabNames[0])
|
||||
{
|
||||
readerSettingsGroup->add(readerSettingsFields[i]);
|
||||
uiOrdering.add(&navigationPolicy);
|
||||
|
||||
caf::PdmUiGroup* scriptGroup = uiOrdering.addNewGroup("Script configuration");
|
||||
scriptGroup->add(&scriptDirectories);
|
||||
scriptGroup->add(&scriptEditorExecutable);
|
||||
|
||||
caf::PdmUiGroup* octaveGroup = uiOrdering.addNewGroup("Octave");
|
||||
octaveGroup->add(&octaveExecutable);
|
||||
octaveGroup->add(&octaveShowHeaderInfoWhenExecutingScripts);
|
||||
|
||||
caf::PdmUiGroup* autoComputeGroup = uiOrdering.addNewGroup("Behavior when loading new case");
|
||||
autoComputeGroup->add(&autocomputeDepthRelatedProperties);
|
||||
autoComputeGroup->add(&loadAndShowSoil);
|
||||
|
||||
caf::PdmUiGroup* readerSettingsGroup = uiOrdering.addNewGroup("Reader settings");
|
||||
std::vector<caf::PdmFieldHandle*> readerSettingsFields;
|
||||
readerSettings->fields(readerSettingsFields);
|
||||
for (size_t i = 0; i < readerSettingsFields.size(); i++)
|
||||
{
|
||||
readerSettingsGroup->add(readerSettingsFields[i]);
|
||||
}
|
||||
|
||||
uiOrdering.add(&ssihubAddress);
|
||||
uiOrdering.add(&useShaders);
|
||||
uiOrdering.add(&showHud);
|
||||
uiOrdering.add(&appendClassNameToUiText);
|
||||
}
|
||||
else if (uiConfigName == m_tabNames[1])
|
||||
{
|
||||
caf::PdmUiGroup* defaultSettingsGroup = uiOrdering.addNewGroup("Default settings");
|
||||
defaultSettingsGroup->add(&defaultScaleFactorZ);
|
||||
defaultSettingsGroup->add(&defaultViewerBackgroundColor);
|
||||
defaultSettingsGroup->add(&defaultGridLines);
|
||||
defaultSettingsGroup->add(&defaultGridLineColors);
|
||||
defaultSettingsGroup->add(&defaultFaultGridLineColors);
|
||||
defaultSettingsGroup->add(&defaultWellLabelColor);
|
||||
defaultSettingsGroup->add(&fontSizeInScene);
|
||||
defaultSettingsGroup->add(&showLasCurveWithoutTvdWarning);
|
||||
}
|
||||
|
||||
uiOrdering.setForgetRemainingFields(true);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QList<caf::PdmOptionItemInfo> RiaPreferences::calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly)
|
||||
{
|
||||
QList<caf::PdmOptionItemInfo> options;
|
||||
*useOptionsOnly = true;
|
||||
|
||||
if (&fontSizeInScene == fieldNeedingOptions)
|
||||
{
|
||||
QStringList fontSizes;
|
||||
fontSizes << "8";
|
||||
// fontSizes << "12";
|
||||
fontSizes << "16";
|
||||
// fontSizes << "24";
|
||||
// fontSizes << "32";
|
||||
|
||||
for (int oIdx = 0; oIdx < fontSizes.size(); ++oIdx)
|
||||
{
|
||||
options.push_back(caf::PdmOptionItemInfo(fontSizes[oIdx], fontSizes[oIdx]));
|
||||
}
|
||||
}
|
||||
|
||||
return options;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -178,3 +222,11 @@ void RiaPreferences::configureForRegressionTests()
|
||||
readerSettings->importFaults = false;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QStringList RiaPreferences::tabNames()
|
||||
{
|
||||
return m_tabNames;
|
||||
}
|
||||
|
||||
|
@ -42,6 +42,8 @@ public:
|
||||
|
||||
void configureForRegressionTests();
|
||||
|
||||
QStringList tabNames();
|
||||
|
||||
public: // Pdm Fields
|
||||
caf::PdmField<caf::AppEnum< RiaApplication::RINavigationPolicy > > navigationPolicy;
|
||||
|
||||
@ -60,7 +62,7 @@ public: // Pdm Fields
|
||||
caf::PdmField<cvf::Color3f> defaultViewerBackgroundColor;
|
||||
caf::PdmField<cvf::Color3f> defaultWellLabelColor;
|
||||
caf::PdmField<bool> showLasCurveWithoutTvdWarning;
|
||||
|
||||
caf::PdmField<QString> fontSizeInScene;
|
||||
|
||||
caf::PdmField<bool> useShaders;
|
||||
caf::PdmField<bool> showHud;
|
||||
@ -74,7 +76,10 @@ public: // Pdm Fields
|
||||
caf::PdmChildField<RifReaderSettings*> readerSettings;
|
||||
|
||||
protected:
|
||||
virtual void defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute);
|
||||
virtual void defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute);
|
||||
virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering);
|
||||
virtual QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly);
|
||||
|
||||
virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) ;
|
||||
private:
|
||||
QStringList m_tabNames;
|
||||
};
|
||||
|
@ -114,6 +114,8 @@ set( USER_INTERFACE_FILES
|
||||
UserInterface/RiuMdiSubWindow.cpp
|
||||
UserInterface/RiuMainWindowBase.h
|
||||
UserInterface/RiuMainWindowBase.cpp
|
||||
UserInterface/RiuPropertyViewTabWidget.h
|
||||
UserInterface/RiuPropertyViewTabWidget.cpp
|
||||
)
|
||||
|
||||
set( SOCKET_INTERFACE_FILES
|
||||
|
@ -441,10 +441,10 @@ void RivFaultPartMgr::createLabelWithAnchorLine(const cvf::Part* part)
|
||||
// Fault label
|
||||
if (!m_rimFault->name().isEmpty())
|
||||
{
|
||||
cvf::Font* standardFont = RiaApplication::instance()->standardFont();
|
||||
cvf::Font* font = RiaApplication::instance()->customFont();
|
||||
|
||||
cvf::ref<cvf::DrawableText> drawableText = new cvf::DrawableText;
|
||||
drawableText->setFont(standardFont);
|
||||
drawableText->setFont(font);
|
||||
drawableText->setCheckPosVisible(false);
|
||||
drawableText->setDrawBorder(false);
|
||||
drawableText->setDrawBackground(false);
|
||||
|
@ -284,10 +284,10 @@ void RivWellHeadPartMgr::buildWellHeadParts(size_t frameIndex)
|
||||
|
||||
if (m_rimReservoirView->wellCollection()->showWellLabel() && well->showWellLabel() && !well->name().isEmpty())
|
||||
{
|
||||
cvf::Font* standardFont = RiaApplication::instance()->standardFont();
|
||||
cvf::Font* font = RiaApplication::instance()->customFont();
|
||||
|
||||
cvf::ref<cvf::DrawableText> drawableText = new cvf::DrawableText;
|
||||
drawableText->setFont(standardFont);
|
||||
drawableText->setFont(font);
|
||||
drawableText->setCheckPosVisible(false);
|
||||
drawableText->setDrawBorder(false);
|
||||
drawableText->setDrawBackground(false);
|
||||
|
@ -196,10 +196,10 @@ void RivWellPathPartMgr::buildWellPathParts(cvf::Vec3d displayModelOffset, doubl
|
||||
m_wellLabelPart = NULL;
|
||||
if (wellPathCollection->showWellPathLabel() && m_rimWellPath->showWellPathLabel() && !m_rimWellPath->name().isEmpty())
|
||||
{
|
||||
cvf::Font* standardFont = RiaApplication::instance()->standardFont();
|
||||
cvf::Font* font = RiaApplication::instance()->customFont();
|
||||
|
||||
cvf::ref<cvf::DrawableText> drawableText = new cvf::DrawableText;
|
||||
drawableText->setFont(standardFont);
|
||||
drawableText->setFont(font);
|
||||
drawableText->setCheckPosVisible(false);
|
||||
drawableText->setDrawBorder(false);
|
||||
drawableText->setDrawBackground(false);
|
||||
|
@ -57,6 +57,7 @@
|
||||
#include "RiuMultiCaseImportDialog.h"
|
||||
#include "RiuProcessMonitor.h"
|
||||
#include "RiuProjectPropertyView.h"
|
||||
#include "RiuPropertyViewTabWidget.h"
|
||||
#include "RiuResultInfoPanel.h"
|
||||
#include "RiuResultQwtPlot.h"
|
||||
#include "RiuToolTipMenu.h"
|
||||
@ -1429,7 +1430,9 @@ void RiuMainWindow::slotShowPerformanceInfo(bool enable)
|
||||
void RiuMainWindow::slotEditPreferences()
|
||||
{
|
||||
RiaApplication* app = RiaApplication::instance();
|
||||
caf::PdmUiPropertyViewDialog propertyDialog(this, app->preferences(), "Preferences", "");
|
||||
|
||||
QStringList tabNames = app->preferences()->tabNames();
|
||||
RiuPropertyViewTabWidget propertyDialog(this, app->preferences(), "Preferences", tabNames);
|
||||
if (propertyDialog.exec() == QDialog::Accepted)
|
||||
{
|
||||
// Write preferences using QSettings and apply them to the application
|
||||
|
81
ApplicationCode/UserInterface/RiuPropertyViewTabWidget.cpp
Normal file
81
ApplicationCode/UserInterface/RiuPropertyViewTabWidget.cpp
Normal file
@ -0,0 +1,81 @@
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2016 Statoil ASA
|
||||
//
|
||||
// ResInsight is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
// FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
|
||||
// for more details.
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "RiuPropertyViewTabWidget.h"
|
||||
|
||||
#include "cafPdmObject.h"
|
||||
#include "cafPdmUiPropertyView.h"
|
||||
|
||||
#include <QBoxLayout>
|
||||
#include <QDialogButtonBox>
|
||||
#include <QStringList>
|
||||
#include <QTabWidget>
|
||||
#include <QWidget>
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RiuPropertyViewTabWidget::RiuPropertyViewTabWidget(QWidget* parent, caf::PdmObject* object, const QString& windowTitle, const QStringList& uiConfigNameForTabs)
|
||||
: QDialog(parent)
|
||||
{
|
||||
setWindowTitle(windowTitle);
|
||||
|
||||
QTabWidget* tabWidget = new QTabWidget;
|
||||
|
||||
for (int i = 0; i < uiConfigNameForTabs.size(); i++)
|
||||
{
|
||||
// Use a container widget to get some UI space around a PdmUiPropertyView
|
||||
QWidget* containerWidget = new QWidget;
|
||||
QHBoxLayout* widgetLayout = new QHBoxLayout;
|
||||
containerWidget->setLayout(widgetLayout);
|
||||
|
||||
caf::PdmUiPropertyView* pdmUiPropertyView = new caf::PdmUiPropertyView();
|
||||
pdmUiPropertyView->setUiConfigurationName(uiConfigNameForTabs[i]);
|
||||
|
||||
widgetLayout->addWidget(pdmUiPropertyView);
|
||||
|
||||
tabWidget->addTab(containerWidget, uiConfigNameForTabs[i]);
|
||||
pdmUiPropertyView->showProperties(object);
|
||||
|
||||
m_pageWidgets.push_back(pdmUiPropertyView);
|
||||
}
|
||||
|
||||
QVBoxLayout* dialogLayout = new QVBoxLayout;
|
||||
setLayout(dialogLayout);
|
||||
|
||||
dialogLayout->addWidget(tabWidget);
|
||||
|
||||
|
||||
// Buttons
|
||||
QDialogButtonBox* buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
|
||||
connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
|
||||
connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
|
||||
|
||||
dialogLayout->addWidget(buttonBox);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RiuPropertyViewTabWidget::~RiuPropertyViewTabWidget()
|
||||
{
|
||||
for (auto w : m_pageWidgets)
|
||||
{
|
||||
w->showProperties(NULL);
|
||||
}
|
||||
}
|
40
ApplicationCode/UserInterface/RiuPropertyViewTabWidget.h
Normal file
40
ApplicationCode/UserInterface/RiuPropertyViewTabWidget.h
Normal file
@ -0,0 +1,40 @@
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2016 Statoil ASA
|
||||
//
|
||||
// ResInsight is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
// FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
|
||||
// for more details.
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#pragma once
|
||||
|
||||
|
||||
#include <QDialog>
|
||||
|
||||
namespace caf {
|
||||
class PdmObject;
|
||||
}
|
||||
|
||||
class QWidget;
|
||||
class QString;
|
||||
class QStringList;
|
||||
|
||||
class RiuPropertyViewTabWidget : public QDialog
|
||||
{
|
||||
public:
|
||||
RiuPropertyViewTabWidget(QWidget* parent, caf::PdmObject* object, const QString& windowTitle, const QStringList& uiConfigNameForTabs);
|
||||
~RiuPropertyViewTabWidget();
|
||||
|
||||
private:
|
||||
std::vector<caf::PdmUiPropertyView*> m_pageWidgets;
|
||||
};
|
Loading…
Reference in New Issue
Block a user