mirror of
https://github.com/OPM/ResInsight.git
synced 2026-10-26 07:00:17 -05:00
Add preferences for HPC/Batch scheduler Add slurm and LSF support Add batch job monitor Support launcher specific user settings Use internal timer, not global view timer Add some more options to batch monitor Improve naming Add tests for job lists
1171 lines
50 KiB
C++
1171 lines
50 KiB
C++
/////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Copyright (C) 2019- Equinor ASA
|
|
// Copyright (C) 2011-2018 Statoil ASA
|
|
// Copyright (C) 2013- Ceetron Solutions AS
|
|
// Copyright (C) 2011-2012 Ceetron AS
|
|
//
|
|
// 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 "RiaPreferences.h"
|
|
|
|
#include "RiaApplication.h"
|
|
#include "RiaColorTables.h"
|
|
#include "RiaGuiApplication.h"
|
|
#include "RiaLogging.h"
|
|
#include "RiaPreferencesBatch.h"
|
|
#include "RiaPreferencesCloudApi.h"
|
|
#include "RiaPreferencesGeoMech.h"
|
|
#include "RiaPreferencesGrid.h"
|
|
#include "RiaPreferencesOpenTelemetry.h"
|
|
#include "RiaPreferencesOpm.h"
|
|
#include "RiaPreferencesOsdu.h"
|
|
#include "RiaPreferencesSummary.h"
|
|
#include "RiaPreferencesSumo.h"
|
|
#include "RiaPreferencesSystem.h"
|
|
#include "RiaQDateTimeTools.h"
|
|
#include "RiaValidRegExpValidator.h"
|
|
|
|
#include "OsduCommands//RicDeleteOsduTokenFeature.h"
|
|
#include "Sumo/RicDeleteSumoTokenFeature.h"
|
|
|
|
#include "RiuFileDialogTools.h"
|
|
#include "RiuGuiTheme.h"
|
|
|
|
#include "cafPdmFieldCvfColor.h"
|
|
#include "cafPdmSettings.h"
|
|
#include "cafPdmUiButton.h"
|
|
#include "cafPdmUiCheckBoxAndTextEditor.h"
|
|
#include "cafPdmUiCheckBoxEditor.h"
|
|
#include "cafPdmUiComboBoxEditor.h"
|
|
#include "cafPdmUiFieldHandle.h"
|
|
#include "cafPdmUiFilePathEditor.h"
|
|
#include "cafPdmUiLineEditor.h"
|
|
|
|
#include <QCoreApplication>
|
|
#include <QDate>
|
|
#include <QDir>
|
|
#include <QLocale>
|
|
#include <QStandardPaths>
|
|
#include <QValidator>
|
|
|
|
namespace caf
|
|
{
|
|
template <>
|
|
void RiaPreferences::PageSizeEnum::setUp()
|
|
{
|
|
addItem( QPageSize::A3, "A3", "A3" );
|
|
addItem( QPageSize::A4, "A4", "A4" );
|
|
addItem( QPageSize::A5, "A5", "A5" );
|
|
addItem( QPageSize::A6, "A6", "A6" );
|
|
addItem( QPageSize::Letter, "LETTER", "US Letter" );
|
|
addItem( QPageSize::Legal, "LEGAL", "US Legal" );
|
|
addItem( QPageSize::Ledger, "LEDGER", "US Ledger" );
|
|
addItem( QPageSize::Tabloid, "TABLOID", "US Tabloid" );
|
|
setDefault( QPageSize::A4 );
|
|
}
|
|
|
|
template <>
|
|
void RiaPreferences::PageOrientationEnum::setUp()
|
|
{
|
|
addItem( QPageLayout::Portrait, "PORTRAIT", "Portrait" );
|
|
addItem( QPageLayout::Landscape, "LANDSCAPE", "Landscape" );
|
|
setDefault( QPageLayout::Portrait );
|
|
}
|
|
|
|
} // namespace caf
|
|
|
|
CAF_PDM_SOURCE_INIT( RiaPreferences, "RiaPreferences" );
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
RiaPreferences::RiaPreferences()
|
|
{
|
|
CAF_PDM_InitField( &m_navigationPolicy,
|
|
"navigationPolicy",
|
|
caf::AppEnum<RiaDefines::RINavigationPolicy>( RiaDefines::RINavigationPolicy::NAVIGATION_POLICY_RMS ),
|
|
"Navigation Mode" );
|
|
|
|
CAF_PDM_InitField( &enableGrpcServer, "enableGrpcServer", true, "Enable Python Script Server", "", "Remote Procedure Call Scripting Engine", "" );
|
|
CAF_PDM_InitField( &defaultGrpcPortNumber, "defaultGrpcPort", 50051, "Default Python Script Server Port" );
|
|
|
|
CAF_PDM_InitFieldNoDefault( &scriptDirectories, "scriptDirectory", "Shared Script Folder(s)" );
|
|
scriptDirectories.uiCapability()->setUiEditorTypeName( caf::PdmUiFilePathEditor::uiEditorTypeName() );
|
|
scriptDirectories.uiCapability()->setAttribute( caf::PdmUiFilePathEditor::Keys::SELECT_DIRECTORY, true );
|
|
scriptDirectories.uiCapability()->setAttribute( caf::PdmUiFilePathEditor::Keys::APPEND_UI_SELECTED_FOLDER_TO_TEXT, true );
|
|
|
|
// TODO: This only currently works for installed ResInsight.
|
|
scriptDirectories = QCoreApplication::applicationDirPath() + "/Python/rips/PythonExamples";
|
|
|
|
QString defaultTextEditor;
|
|
#ifdef WIN32
|
|
defaultTextEditor = QString( "notepad.exe" );
|
|
#else
|
|
defaultTextEditor = QStandardPaths::findExecutable( "kate" );
|
|
if ( defaultTextEditor.isEmpty() )
|
|
{
|
|
defaultTextEditor = QStandardPaths::findExecutable( "gedit" );
|
|
}
|
|
#endif
|
|
|
|
CAF_PDM_InitField( &scriptEditorExecutable, "scriptEditorExecutable", defaultTextEditor, "Script Editor" );
|
|
scriptEditorExecutable.uiCapability()->setUiEditorTypeName( caf::PdmUiFilePathEditor::uiEditorTypeName() );
|
|
|
|
CAF_PDM_InitField( &m_maxScriptFoldersDepth, "MaxScriptFoldersDepth", 2, "Maximum Scripts Folder Search Depth" );
|
|
|
|
CAF_PDM_InitField( &m_octaveExecutable, "octaveExecutable", QString( "octave" ), "Octave Executable Location" );
|
|
m_octaveExecutable.uiCapability()->setUiEditorTypeName( caf::PdmUiFilePathEditor::uiEditorTypeName() );
|
|
m_octaveExecutable.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::LabelPosition::TOP );
|
|
|
|
CAF_PDM_InitField( &m_octaveShowHeaderInfoWhenExecutingScripts,
|
|
"octaveShowHeaderInfoWhenExecutingScripts",
|
|
false,
|
|
"Show Text Header When Executing Scripts" );
|
|
caf::PdmUiNativeCheckBoxEditor::configureFieldForEditor( &m_octaveShowHeaderInfoWhenExecutingScripts );
|
|
|
|
CAF_PDM_InitFieldNoDefault( &m_octavePortNumber, "octavePortNumber", "Octave Port Number" );
|
|
m_octavePortNumber.uiCapability()->setUiEditorTypeName( caf::PdmUiCheckBoxAndTextEditor::uiEditorTypeName() );
|
|
|
|
CAF_PDM_InitField( &m_pythonExecutable, "pythonExecutable", QString( "python" ), "Python Executable Location" );
|
|
m_pythonExecutable.uiCapability()->setUiEditorTypeName( caf::PdmUiFilePathEditor::uiEditorTypeName() );
|
|
m_pythonExecutable.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::LabelPosition::TOP );
|
|
CAF_PDM_InitField( &showPythonDebugInfo, "pythonDebugInfo", false, "Show Python Debug Info" );
|
|
|
|
auto defaultFilename = QStandardPaths::writableLocation( QStandardPaths::DocumentsLocation );
|
|
if ( defaultFilename.isEmpty() )
|
|
{
|
|
defaultFilename = QStandardPaths::writableLocation( QStandardPaths::HomeLocation );
|
|
}
|
|
defaultFilename += "/ResInsight.log";
|
|
|
|
CAF_PDM_InitField( &m_storeBackupOfProjectFile, "storeBackupOfProjectFile", true, "Store Backup of Project Files" );
|
|
|
|
CAF_PDM_InitFieldNoDefault( &m_defaultMeshModeType, "defaultMeshModeType", "Show Grid Lines" );
|
|
CAF_PDM_InitField( &defaultGridLineColors, "defaultGridLineColors", RiaColorTables::defaultGridLineColor(), "Mesh Color" );
|
|
CAF_PDM_InitField( &defaultFaultGridLineColors,
|
|
"defaultFaultGridLineColors",
|
|
RiaColorTables::defaultFaultLineColor(),
|
|
"Mesh Color Along Faults" );
|
|
CAF_PDM_InitField( &defaultWellLabelColor,
|
|
"defaultWellLableColor",
|
|
RiaColorTables::defaultWellLabelColor(),
|
|
"Well Label Color",
|
|
"",
|
|
"The default well label color in new views",
|
|
"" );
|
|
|
|
CAF_PDM_InitField( &defaultViewerBackgroundColor,
|
|
"defaultViewerBackgroundColor",
|
|
RiaColorTables::defaultViewerBackgroundColor(),
|
|
"Viewer Background",
|
|
"",
|
|
"The viewer background color for new views",
|
|
"" );
|
|
|
|
CAF_PDM_InitField( &m_defaultScaleFactorZ, "defaultScaleFactorZ", 5.0, "Default Z Scale Factor" );
|
|
m_defaultScaleFactorZ.setRange( 0.000001, 100000.0 );
|
|
|
|
CAF_PDM_InitFieldNoDefault( &defaultSceneFontSize, "defaultSceneFontSizePt", "Viewer Font Size" );
|
|
CAF_PDM_InitFieldNoDefault( &defaultAnnotationFontSize, "defaultAnnotationFontSizePt", "Annotation Font Size" );
|
|
CAF_PDM_InitFieldNoDefault( &defaultWellLabelFontSize, "defaultWellLabelFontSizePt", "Well Label Font Size" );
|
|
|
|
auto defaultValue = FontSizeEnum( RiaFontCache::FontSize::FONT_SIZE_10 );
|
|
CAF_PDM_InitField( &defaultPlotFontSize, "defaultPlotFontSizePt", defaultValue, "Plot Font Size" );
|
|
|
|
for ( caf::PdmFieldHandle* fontSizeField :
|
|
std::vector<caf::PdmFieldHandle*>{ &defaultSceneFontSize, &defaultAnnotationFontSize, &defaultWellLabelFontSize, &defaultPlotFontSize } )
|
|
{
|
|
fontSizeField->uiCapability()->setAttribute( caf::PdmUiComboBoxEditor::Keys::MINIMUM_CONTENTS_LENGTH, 2 );
|
|
}
|
|
|
|
CAF_PDM_InitField( &m_showLegendBackground, "showLegendBackground", true, "Show Box around Legends" );
|
|
caf::PdmUiNativeCheckBoxEditor::configureFieldForEditor( &m_showLegendBackground );
|
|
|
|
CAF_PDM_InitField( &m_enableFaultsByDefault, "enableFaultsByDefault", true, "Enable Faults By Default" );
|
|
caf::PdmUiNativeCheckBoxEditor::configureFieldForEditor( &m_enableFaultsByDefault );
|
|
|
|
CAF_PDM_InitField( &m_showInfoBox, "showInfoBox", true, "Show Info Box in New Projects" );
|
|
caf::PdmUiNativeCheckBoxEditor::configureFieldForEditor( &m_showInfoBox );
|
|
|
|
CAF_PDM_InitField( &m_showGridBox, "showGridBox", true, "Show Grid Box in New Projects" );
|
|
caf::PdmUiNativeCheckBoxEditor::configureFieldForEditor( &m_showGridBox );
|
|
|
|
CAF_PDM_InitField( &holoLensDisableCertificateVerification,
|
|
"holoLensDisableCertificateVerification",
|
|
false,
|
|
"Disable SSL Certificate Verification (HoloLens)" );
|
|
caf::PdmUiNativeCheckBoxEditor::configureFieldForEditor( &holoLensDisableCertificateVerification );
|
|
|
|
CAF_PDM_InitField( &csvTextExportFieldSeparator, "csvTextExportFieldSeparator", QString( "," ), "CSV Text Export Field Separator" );
|
|
|
|
CAF_PDM_InitFieldNoDefault( &m_dateFormat, "dateFormat", "Date Format" );
|
|
m_dateFormat.uiCapability()->setUiEditorTypeName( caf::PdmUiComboBoxEditor::uiEditorTypeName() );
|
|
m_dateFormat = RiaQDateTimeTools::supportedDateFormats().front();
|
|
|
|
CAF_PDM_InitFieldNoDefault( &m_timeFormat, "timeFormat", "Time Format" );
|
|
m_timeFormat.uiCapability()->setUiEditorTypeName( caf::PdmUiComboBoxEditor::uiEditorTypeName() );
|
|
m_timeFormat = RiaQDateTimeTools::supportedTimeFormats().front();
|
|
|
|
CAF_PDM_InitField( &m_useUndoRedo, "useUndoRedo", false, "Enable Undo/Redo for Property Editor changes" );
|
|
caf::PdmUiNativeCheckBoxEditor::configureFieldForEditor( &m_useUndoRedo );
|
|
|
|
CAF_PDM_InitFieldNoDefault( &m_plotTemplateFolders, "plotTemplateFolders", "Plot Template Folder(s)" );
|
|
m_plotTemplateFolders.uiCapability()->setUiEditorTypeName( caf::PdmUiFilePathEditor::uiEditorTypeName() );
|
|
m_plotTemplateFolders.uiCapability()->setAttribute( caf::PdmUiFilePathEditor::Keys::SELECT_DIRECTORY, true );
|
|
m_plotTemplateFolders.uiCapability()->setAttribute( caf::PdmUiFilePathEditor::Keys::APPEND_UI_SELECTED_FOLDER_TO_TEXT, true );
|
|
CAF_PDM_InitField( &m_maxPlotTemplateFoldersDepth, "MaxPlotTemplateFoldersDepth", 2, "Maximum Plot Template Folder Search Depth" );
|
|
|
|
CAF_PDM_InitFieldNoDefault( &m_lastUsedPlotTemplate, "defaultPlotTemplate", "Default Plot Template" );
|
|
|
|
CAF_PDM_InitFieldNoDefault( &m_pageSize, "pageSize", "Page Size" );
|
|
CAF_PDM_InitFieldNoDefault( &m_pageOrientation, "pageOrientation", "Page Orientation" );
|
|
CAF_PDM_InitField( &m_pageLeftMargin, "pageLeftMargin", defaultMarginSize( m_pageSize() ), "Left Margin" );
|
|
CAF_PDM_InitField( &m_pageTopMargin, "pageTopMargin", defaultMarginSize( m_pageSize() ), "Top Margin" );
|
|
CAF_PDM_InitField( &m_pageRightMargin, "pageRightMargin", defaultMarginSize( m_pageSize() ), "Right Margin" );
|
|
CAF_PDM_InitField( &m_pageBottomMargin, "pageBottomMargin", defaultMarginSize( m_pageSize() ), "Bottom Margin" );
|
|
|
|
CAF_PDM_InitField( &m_openExportedPdfInViewer, "openExportedPdfInViewer", false, "Open Exported PDF in Viewer" );
|
|
caf::PdmUiNativeCheckBoxEditor::configureFieldForEditor( &m_openExportedPdfInViewer );
|
|
|
|
CAF_PDM_InitField( &m_writeEchoInGrdeclFiles, "writeEchoInGrdeclFiles", false, "Write NOECHO and ECHO in GRDECL files" );
|
|
caf::PdmUiNativeCheckBoxEditor::configureFieldForEditor( &m_writeEchoInGrdeclFiles );
|
|
|
|
CAF_PDM_InitField( &m_useRecentlyUsedFolderAsDefault,
|
|
"useRecentlyUsedFolderAsDefault",
|
|
false,
|
|
"Use Recently Used Folder/File as Default",
|
|
"",
|
|
"When enabled, file dialogs will open at the most recently used folder/file path. "
|
|
"When disabled, the last used directory combined with the default filter pattern is used.",
|
|
"" );
|
|
caf::PdmUiNativeCheckBoxEditor::configureFieldForEditor( &m_useRecentlyUsedFolderAsDefault );
|
|
|
|
CAF_PDM_InitFieldNoDefault( &m_gridCalculationExpressionFolder, "gridCalculationExpressionFolder", "Grid Calculation Expression Folder" );
|
|
CAF_PDM_InitFieldNoDefault( &m_summaryCalculationExpressionFolder,
|
|
"summaryCalculationExpressionFolder",
|
|
"Summary Calculation Expression Folder" );
|
|
m_gridCalculationExpressionFolder.uiCapability()->setAttribute( caf::PdmUiFilePathEditor::Keys::SELECT_DIRECTORY, true );
|
|
m_summaryCalculationExpressionFolder.uiCapability()->setAttribute( caf::PdmUiFilePathEditor::Keys::SELECT_DIRECTORY, true );
|
|
|
|
CAF_PDM_InitField( &m_surfaceImportResamplingDistance,
|
|
"SurfaceImportResamplingDistance",
|
|
100.0,
|
|
"Surface Import Coarsening",
|
|
"",
|
|
"Defines preferred minimum distance between surface points in XY-plane",
|
|
"" );
|
|
|
|
CAF_PDM_InitField( &m_multiLateralWellPattern,
|
|
"MultiLateralWellPattern",
|
|
defaultMultiLateralWellNamePattern(),
|
|
"Multi Lateral Well Path Name Pattern",
|
|
"",
|
|
"Pattern to be used to decide if an imported well is part of a multi-lateral well. Allows use "
|
|
"of ? and * as wildcards.",
|
|
"" );
|
|
m_multiLateralWellPattern.uiCapability()->setUiEditorTypeName( caf::PdmUiLineEditor::uiEditorTypeName() );
|
|
// The line editor does not take ownership of the validator
|
|
m_multiLateralWellPatternValidator = std::make_unique<RiaValidRegExpValidator>( defaultMultiLateralWellNamePattern() );
|
|
m_multiLateralWellPattern.uiCapability()->setAttribute<QValidator*>( caf::PdmUiLineEditor::Keys::VALIDATOR,
|
|
m_multiLateralWellPatternValidator.get() );
|
|
|
|
CAF_PDM_InitFieldNoDefault( &m_guiTheme, "guiTheme", "GUI theme" );
|
|
|
|
CAF_PDM_InitFieldNoDefault( &m_summaryPreferences, "summaryPreferences", "summaryPreferences" );
|
|
m_summaryPreferences = new RiaPreferencesSummary;
|
|
|
|
CAF_PDM_InitFieldNoDefault( &m_gridPreferences, "gridPreferences", "gridPreferences" );
|
|
m_gridPreferences = new RiaPreferencesGrid();
|
|
|
|
CAF_PDM_InitFieldNoDefault( &m_geoMechPreferences, "geoMechPreferences", "geoMechPreferences" );
|
|
m_geoMechPreferences = new RiaPreferencesGeoMech;
|
|
|
|
CAF_PDM_InitFieldNoDefault( &m_opmPreferences, "opmPreferences", "opmPreferences" );
|
|
m_opmPreferences = new RiaPreferencesOpm();
|
|
|
|
CAF_PDM_InitFieldNoDefault( &m_batchPreferences, "batchPreferences", "batchPreferences" );
|
|
m_batchPreferences = new RiaPreferencesBatch();
|
|
|
|
CAF_PDM_InitFieldNoDefault( &m_systemPreferences, "systemPreferences", "systemPreferences" );
|
|
m_systemPreferences = new RiaPreferencesSystem;
|
|
|
|
CAF_PDM_InitFieldNoDefault( &m_osduPreferences, "osduPreferences", "osduPreferences" );
|
|
m_osduPreferences = new RiaPreferencesOsdu;
|
|
CAF_PDM_InitFieldNoDefault( &m_sumoPreferences, "sumoPreferences", "sumoPreferences" );
|
|
m_sumoPreferences = new RiaPreferencesSumo;
|
|
|
|
CAF_PDM_InitFieldNoDefault( &m_openTelemetryPreferences, "openTelemetryPreferences", "openTelemetryPreferences" );
|
|
m_openTelemetryPreferences = new RiaPreferencesOpenTelemetry;
|
|
|
|
CAF_PDM_InitFieldNoDefault( &m_cloudApiPreferences, "cloudApiPreferences", "cloudApiPreferences" );
|
|
m_cloudApiPreferences = new RiaPreferencesCloudApi;
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
RiaPreferences::~RiaPreferences()
|
|
{
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
RiaPreferences* RiaPreferences::current()
|
|
{
|
|
return RiaApplication::instance()->preferences();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
void RiaPreferences::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering )
|
|
{
|
|
if ( uiConfigName == RiaPreferences::tabNameGeneral() )
|
|
{
|
|
caf::PdmUiGroup* colorGroup = uiOrdering.addNewGroup( "Default Colors" );
|
|
colorGroup->add( &defaultViewerBackgroundColor );
|
|
colorGroup->appendToRow( &defaultGridLineColors );
|
|
colorGroup->add( &defaultFaultGridLineColors );
|
|
colorGroup->appendToRow( &defaultWellLabelColor );
|
|
colorGroup->add( &m_guiTheme, { .newRow = true, .totalColumnSpan = 2 } );
|
|
|
|
caf::PdmUiGroup* fontGroup = uiOrdering.addNewGroup( "Default Font Sizes" );
|
|
fontGroup->add( &defaultSceneFontSize );
|
|
fontGroup->appendToRow( &defaultAnnotationFontSize );
|
|
fontGroup->add( &defaultWellLabelFontSize );
|
|
fontGroup->appendToRow( &defaultPlotFontSize );
|
|
|
|
caf::PdmUiGroup* viewsGroup = uiOrdering.addNewGroup( "3d Views" );
|
|
viewsGroup->add( &m_defaultMeshModeType );
|
|
viewsGroup->add( &m_navigationPolicy );
|
|
viewsGroup->add( &m_defaultScaleFactorZ );
|
|
|
|
viewsGroup->add( &m_showLegendBackground );
|
|
viewsGroup->add( &m_enableFaultsByDefault, { .newRow = false, .totalColumnSpan = 1 } );
|
|
viewsGroup->add( &m_showInfoBox );
|
|
viewsGroup->add( &m_showGridBox, { .newRow = false, .totalColumnSpan = 1 } );
|
|
|
|
caf::PdmUiGroup* loggingGroup = uiOrdering.addNewGroup( "Logging and Backup" );
|
|
loggingGroup->add( &m_storeBackupOfProjectFile );
|
|
|
|
caf::PdmUiGroup* otherGroup = uiOrdering.addNewGroup( "Other" );
|
|
otherGroup->setCollapsedByDefault();
|
|
otherGroup->add( &holoLensDisableCertificateVerification );
|
|
otherGroup->add( &m_useUndoRedo );
|
|
|
|
caf::PdmUiGroup* importExportGroup = uiOrdering.addNewGroup( "Import and Export" );
|
|
importExportGroup->setCollapsedByDefault();
|
|
importExportGroup->addNewButton( "Import Preferences",
|
|
[this]()
|
|
{
|
|
QString filePath = RiuFileDialogTools::getOpenFileName( nullptr,
|
|
"Import Preferences",
|
|
"",
|
|
"XML files (*.xml);;All files(*.*)" );
|
|
importPreferenceValuesFromFile( filePath );
|
|
},
|
|
{ .newRow = false, .totalColumnSpan = 1 } );
|
|
importExportGroup->addNewButton( "Export Preferences",
|
|
[this]()
|
|
{
|
|
QString filePath = RiuFileDialogTools::getSaveFileName( nullptr,
|
|
"Export Preferences",
|
|
"",
|
|
"XML files (*.xml);;All files(*.*)" );
|
|
exportPreferenceValuesToFile( filePath );
|
|
},
|
|
{ .newRow = false, .totalColumnSpan = 1 } );
|
|
}
|
|
else if ( uiConfigName == RiaPreferences::tabNameGrid() )
|
|
{
|
|
m_gridPreferences()->appendItems( uiOrdering );
|
|
}
|
|
else if ( uiConfigName == RiaPreferences::tabNameSummary() )
|
|
{
|
|
m_summaryPreferences->appendRestartFileGroup( uiOrdering );
|
|
|
|
{
|
|
caf::PdmUiGroup* group = uiOrdering.addNewGroup( "Summary Data Import" );
|
|
|
|
m_summaryPreferences()->uiOrdering( uiConfigName, *group );
|
|
}
|
|
}
|
|
else if ( uiConfigName == RiaPreferences::tabNamePlotting() )
|
|
{
|
|
caf::PdmUiGroup* summaryGrp = uiOrdering.addNewGroup( "Summary Plots" );
|
|
|
|
summaryPreferences()->appendItemsToPlottingGroup( *summaryGrp );
|
|
|
|
caf::PdmUiGroup* group = summaryGrp->addNewGroup( "Plot Templates" );
|
|
group->add( &m_plotTemplateFolders );
|
|
group->add( &m_maxPlotTemplateFoldersDepth );
|
|
|
|
caf::PdmUiGroup* generalGrp = uiOrdering.addNewGroup( "General" );
|
|
|
|
generalGrp->add( &m_dateFormat );
|
|
generalGrp->add( &m_timeFormat );
|
|
|
|
caf::PdmUiGroup* pageSetup = generalGrp->addNewGroup( "Page Setup" );
|
|
pageSetup->add( &m_pageSize );
|
|
pageSetup->appendToRow( &m_pageOrientation );
|
|
pageSetup->add( &m_pageLeftMargin );
|
|
pageSetup->appendToRow( &m_pageRightMargin );
|
|
pageSetup->add( &m_pageTopMargin );
|
|
pageSetup->appendToRow( &m_pageBottomMargin );
|
|
|
|
QString unitLabel = " [mm]";
|
|
if ( QPageSize( m_pageSize() ).definitionUnits() == QPageSize::Inch )
|
|
{
|
|
unitLabel = " [in]";
|
|
}
|
|
m_pageLeftMargin.uiCapability()->setUiName( "Left Margin" + unitLabel );
|
|
m_pageRightMargin.uiCapability()->setUiName( "Right Margin" + unitLabel );
|
|
m_pageTopMargin.uiCapability()->setUiName( "Top Margin" + unitLabel );
|
|
m_pageBottomMargin.uiCapability()->setUiName( "Bottom Margin" + unitLabel );
|
|
}
|
|
|
|
else if ( uiConfigName == RiaPreferences::tabNameScripting() )
|
|
{
|
|
caf::PdmUiGroup* octaveGroup = uiOrdering.addNewGroup( "Octave" );
|
|
octaveGroup->add( &m_octaveExecutable );
|
|
octaveGroup->add( &m_octaveShowHeaderInfoWhenExecutingScripts );
|
|
octaveGroup->add( &m_octavePortNumber );
|
|
|
|
#ifdef ENABLE_GRPC
|
|
caf::PdmUiGroup* pythonGroup = uiOrdering.addNewGroup( "Python" );
|
|
pythonGroup->add( &enableGrpcServer );
|
|
pythonGroup->add( &showPythonDebugInfo );
|
|
pythonGroup->add( &defaultGrpcPortNumber );
|
|
pythonGroup->add( &m_pythonExecutable );
|
|
#endif
|
|
caf::PdmUiGroup* scriptGroup = uiOrdering.addNewGroup( "Script files" );
|
|
scriptGroup->add( &scriptDirectories );
|
|
scriptGroup->add( &m_maxScriptFoldersDepth );
|
|
scriptGroup->add( &scriptEditorExecutable );
|
|
}
|
|
else if ( uiConfigName == RiaPreferences::tabNameCloudApi() )
|
|
{
|
|
caf::PdmUiGroup* pythonGroup = uiOrdering.addNewGroup( "Python Environment" );
|
|
m_cloudApiPreferences()->appendItems( *pythonGroup );
|
|
}
|
|
else if ( uiConfigName == RiaPreferences::tabNameOpmFlow() )
|
|
{
|
|
m_opmPreferences()->appendItems( uiOrdering );
|
|
}
|
|
else if ( uiConfigName == RiaPreferences::tabNameBatchScheduler() )
|
|
{
|
|
m_batchPreferences()->appendItems( uiOrdering );
|
|
}
|
|
#ifdef USE_ODB_API
|
|
else if ( uiConfigName == RiaPreferences::tabNameGeomech() )
|
|
{
|
|
m_geoMechPreferences()->appendItems( uiOrdering );
|
|
}
|
|
#endif
|
|
else if ( uiConfigName == RiaPreferences::tabNameImportExport() )
|
|
{
|
|
caf::PdmUiGroup* diskOpsGroup = uiOrdering.addNewGroup( "Disk Operations" );
|
|
diskOpsGroup->add( &m_useRecentlyUsedFolderAsDefault );
|
|
|
|
caf::PdmUiGroup* importGroup = uiOrdering.addNewGroup( "Import" );
|
|
importGroup->add( &m_surfaceImportResamplingDistance );
|
|
importGroup->add( &m_multiLateralWellPattern );
|
|
|
|
caf::PdmUiGroup* exportGroup = uiOrdering.addNewGroup( "Export" );
|
|
exportGroup->add( &csvTextExportFieldSeparator );
|
|
exportGroup->add( &m_openExportedPdfInViewer );
|
|
exportGroup->add( &m_writeEchoInGrdeclFiles );
|
|
|
|
caf::PdmUiGroup* otherGroup = uiOrdering.addNewGroup( "Other" );
|
|
otherGroup->add( &m_gridCalculationExpressionFolder );
|
|
otherGroup->add( &m_summaryCalculationExpressionFolder );
|
|
|
|
caf::PdmUiGroup* osduGroup = uiOrdering.addNewGroup( "OSDU" );
|
|
osduGroup->setCollapsedByDefault();
|
|
m_osduPreferences()->uiOrdering( uiConfigName, *osduGroup );
|
|
osduGroup->addNewButton( "Delete Token", []() { RicDeleteOsduTokenFeature::deleteUserToken(); } );
|
|
|
|
caf::PdmUiGroup* sumoGroup = uiOrdering.addNewGroup( "SUMO" );
|
|
sumoGroup->setCollapsedByDefault();
|
|
m_sumoPreferences()->uiOrdering( uiConfigName, *sumoGroup );
|
|
sumoGroup->addNewButton( "Delete Token", []() { RicDeleteSumoTokenFeature::deleteUserToken(); } );
|
|
|
|
caf::PdmUiGroup* openTelemetryGroup = uiOrdering.addNewGroup( "OpenTelemetry" );
|
|
openTelemetryGroup->setCollapsedByDefault();
|
|
m_openTelemetryPreferences()->uiOrdering( uiConfigName, *openTelemetryGroup );
|
|
}
|
|
else if ( uiConfigName == RiaPreferences::tabNameExperimental() )
|
|
{
|
|
m_systemPreferences()->appendExperimentalFeaturesItems( uiOrdering );
|
|
}
|
|
else if ( RiaApplication::enableDevelopmentFeatures() && uiConfigName == RiaPreferences::tabNameSystem() )
|
|
{
|
|
m_systemPreferences()->uiOrdering( uiConfigName, uiOrdering );
|
|
}
|
|
|
|
uiOrdering.skipRemainingFields( true );
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
QList<caf::PdmOptionItemInfo> RiaPreferences::calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions )
|
|
{
|
|
QList<caf::PdmOptionItemInfo> options;
|
|
|
|
if ( fieldNeedingOptions == &m_dateFormat )
|
|
{
|
|
for ( auto dateFormat : RiaQDateTimeTools::supportedDateFormats() )
|
|
{
|
|
QDate exampleDate = QDate( 2019, 8, 16 );
|
|
QString fullDateFormat =
|
|
RiaQDateTimeTools::dateFormatString( dateFormat, RiaDefines::DateFormatComponents::DATE_FORMAT_YEAR_MONTH_DAY );
|
|
QString uiText = QString( "%1 (%2)" ).arg( fullDateFormat ).arg( exampleDate.toString( fullDateFormat ) );
|
|
uiText.replace( "AP", "AM/PM" );
|
|
options.push_back( caf::PdmOptionItemInfo( uiText, QVariant::fromValue( dateFormat ) ) );
|
|
}
|
|
}
|
|
else if ( fieldNeedingOptions == &m_timeFormat )
|
|
{
|
|
for ( auto timeFormat : RiaQDateTimeTools::supportedTimeFormats() )
|
|
{
|
|
QTime exampleTime = QTime( 15, 48, 22 );
|
|
QString timeFormatString =
|
|
RiaQDateTimeTools::timeFormatString( timeFormat, RiaDefines::TimeFormatComponents::TIME_FORMAT_HOUR_MINUTE_SECOND );
|
|
QString uiText = QString( "%1 (%2)" ).arg( timeFormatString ).arg( exampleTime.toString( timeFormatString ) );
|
|
uiText.replace( "AP", "AM/PM" );
|
|
options.push_back( caf::PdmOptionItemInfo( uiText, QVariant::fromValue( timeFormat ) ) );
|
|
}
|
|
}
|
|
|
|
return options;
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
void RiaPreferences::initAfterRead()
|
|
{
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
void RiaPreferences::fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue )
|
|
{
|
|
if ( changedField == &m_pageSize )
|
|
{
|
|
m_pageLeftMargin = defaultMarginSize( m_pageSize() );
|
|
m_pageRightMargin = defaultMarginSize( m_pageSize() );
|
|
m_pageTopMargin = defaultMarginSize( m_pageSize() );
|
|
m_pageBottomMargin = defaultMarginSize( m_pageSize() );
|
|
}
|
|
else if ( changedField == &m_guiTheme )
|
|
{
|
|
RiuGuiTheme::updateGuiTheme( m_guiTheme() );
|
|
}
|
|
else
|
|
{
|
|
m_summaryPreferences->fieldChangedByUi( changedField, oldValue, newValue );
|
|
}
|
|
}
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
QString RiaPreferences::tabNameGeneral()
|
|
{
|
|
return "General";
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
QString RiaPreferences::tabNameGrid()
|
|
{
|
|
return "Grid";
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
QString RiaPreferences::tabNameSummary()
|
|
{
|
|
return "Summary";
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
QString RiaPreferences::tabNameGeomech()
|
|
{
|
|
return "GeoMechanical";
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
QString RiaPreferences::tabNamePlotting()
|
|
{
|
|
return "Plotting";
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
QString RiaPreferences::tabNameScripting()
|
|
{
|
|
return "Scripting";
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
QString RiaPreferences::tabNameCloudApi()
|
|
{
|
|
return "RI Cloud API";
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
QString RiaPreferences::tabNameOpmFlow()
|
|
{
|
|
return "OPM Flow";
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
QString RiaPreferences::tabNameBatchScheduler()
|
|
{
|
|
return "Batch Scheduler";
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
QString RiaPreferences::tabNameSystem()
|
|
{
|
|
return "System";
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
QString RiaPreferences::tabNameImportExport()
|
|
{
|
|
return "Import/Export";
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
QString RiaPreferences::tabNameExperimental()
|
|
{
|
|
return "Experimental";
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
double RiaPreferences::defaultMarginSize( QPageSize::PageSizeId pageSizeId )
|
|
{
|
|
QPageSize::Unit unit = QPageSize( pageSizeId ).definitionUnits();
|
|
|
|
if ( unit == QPageSize::Inch )
|
|
{
|
|
return 1.0;
|
|
}
|
|
else
|
|
{
|
|
return 20.0;
|
|
}
|
|
}
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
QStringList RiaPreferences::tabNames()
|
|
{
|
|
QStringList names;
|
|
|
|
names << tabNameGeneral();
|
|
names << tabNameGrid();
|
|
names << tabNameSummary();
|
|
names << tabNamePlotting();
|
|
names << tabNameScripting();
|
|
names << tabNameCloudApi();
|
|
names << tabNameOpmFlow();
|
|
names << tabNameBatchScheduler();
|
|
#ifdef USE_ODB_API
|
|
names << tabNameGeomech();
|
|
#endif
|
|
names << tabNameImportExport();
|
|
names << tabNameExperimental();
|
|
|
|
if ( RiaApplication::enableDevelopmentFeatures() )
|
|
{
|
|
names << tabNameSystem();
|
|
}
|
|
|
|
return names;
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
bool RiaPreferences::useUndoRedo() const
|
|
{
|
|
return m_useUndoRedo();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
const QString& RiaPreferences::dateFormat() const
|
|
{
|
|
return m_dateFormat();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
const QString& RiaPreferences::timeFormat() const
|
|
{
|
|
return m_timeFormat();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
QString RiaPreferences::dateTimeFormat( RiaDefines::DateFormatComponents dateComponents, RiaDefines::TimeFormatComponents timeComponents ) const
|
|
{
|
|
return QString( "%1 %2" )
|
|
.arg( RiaQDateTimeTools::dateFormatString( m_dateFormat(), dateComponents ) )
|
|
.arg( RiaQDateTimeTools::timeFormatString( m_timeFormat(), timeComponents ) );
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
int RiaPreferences::maxScriptFoldersDepth() const
|
|
{
|
|
return m_maxScriptFoldersDepth();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
int RiaPreferences::maxPlotTemplateFoldersDepth() const
|
|
{
|
|
return m_maxPlotTemplateFoldersDepth();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
QStringList RiaPreferences::plotTemplateFolders() const
|
|
{
|
|
QStringList filteredFolders;
|
|
QStringList pathList = m_plotTemplateFolders().split( ';' );
|
|
for ( const auto& path : pathList )
|
|
{
|
|
QDir dir( path );
|
|
if ( !path.isEmpty() && dir.exists() && dir.isReadable() )
|
|
{
|
|
filteredFolders.push_back( path );
|
|
}
|
|
}
|
|
|
|
return filteredFolders;
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
void RiaPreferences::appendPlotTemplateFolders( const QString& folder )
|
|
{
|
|
QString folders = m_plotTemplateFolders();
|
|
if ( !folders.isEmpty() )
|
|
{
|
|
folders += ";";
|
|
}
|
|
|
|
folders += folder;
|
|
|
|
m_plotTemplateFolders = folders;
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
QString RiaPreferences::lastUsedPlotTemplateAbsolutePath() const
|
|
{
|
|
return m_lastUsedPlotTemplate().path();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
void RiaPreferences::setLastUsedPlotTemplatePath( const QString& templatePath )
|
|
{
|
|
m_lastUsedPlotTemplate = templatePath;
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
bool RiaPreferences::openExportedPdfInViewer() const
|
|
{
|
|
return m_openExportedPdfInViewer;
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
bool RiaPreferences::writeEchoInGrdeclFiles() const
|
|
{
|
|
return m_writeEchoInGrdeclFiles;
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
bool RiaPreferences::useRecentlyUsedFolderAsDefault() const
|
|
{
|
|
return m_useRecentlyUsedFolderAsDefault;
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
RiaDefines::ThemeEnum RiaPreferences::guiTheme() const
|
|
{
|
|
return m_guiTheme();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
std::map<RiaDefines::FontSettingType, RiaFontCache::FontSize> RiaPreferences::defaultFontSizes() const
|
|
{
|
|
std::map<RiaDefines::FontSettingType, RiaFontCache::FontSize> fontSizes;
|
|
fontSizes[RiaDefines::FontSettingType::SCENE_FONT] = defaultSceneFontSize();
|
|
fontSizes[RiaDefines::FontSettingType::ANNOTATION_FONT] = defaultAnnotationFontSize();
|
|
fontSizes[RiaDefines::FontSettingType::WELL_LABEL_FONT] = defaultWellLabelFontSize();
|
|
fontSizes[RiaDefines::FontSettingType::PLOT_FONT] = defaultPlotFontSize();
|
|
return fontSizes;
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
void RiaPreferences::writePreferencesToApplicationStore()
|
|
{
|
|
if ( !RiaGuiApplication::isRunning() ) return;
|
|
|
|
caf::PdmSettings::writeFieldsToApplicationStore( this );
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
QPageLayout RiaPreferences::defaultPageLayout() const
|
|
{
|
|
QPageSize pageSize( m_pageSize() );
|
|
QPageLayout layout( pageSize, m_pageOrientation(), margins(), (QPageLayout::Unit)pageSize.definitionUnits() );
|
|
layout.setMode( QPageLayout::StandardMode );
|
|
return layout;
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
QMarginsF RiaPreferences::margins() const
|
|
{
|
|
return QMarginsF( m_pageLeftMargin, m_pageTopMargin, m_pageRightMargin, m_pageBottomMargin );
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
double RiaPreferences::surfaceImportResamplingDistance() const
|
|
{
|
|
return m_surfaceImportResamplingDistance;
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
QString RiaPreferences::multiLateralWellNamePattern() const
|
|
{
|
|
return m_multiLateralWellPattern;
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
QString RiaPreferences::defaultMultiLateralWellNamePattern()
|
|
{
|
|
return "?*Y*";
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
QString RiaPreferences::gridCalculationExpressionFolder() const
|
|
{
|
|
return m_gridCalculationExpressionFolder().path();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
QString RiaPreferences::summaryCalculationExpressionFolder() const
|
|
{
|
|
return m_summaryCalculationExpressionFolder().path();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
RiaDefines::MeshModeType RiaPreferences::defaultMeshModeType() const
|
|
{
|
|
return m_defaultMeshModeType();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
RiaDefines::RINavigationPolicy RiaPreferences::navigationPolicy() const
|
|
{
|
|
return m_navigationPolicy();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
double RiaPreferences::defaultScaleFactorZ() const
|
|
{
|
|
if ( m_defaultScaleFactorZ < 0.000001 ) return 0.000001;
|
|
return m_defaultScaleFactorZ();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
bool RiaPreferences::showLegendBackground() const
|
|
{
|
|
return m_showLegendBackground();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
bool RiaPreferences::showInfoBox() const
|
|
{
|
|
return m_showInfoBox();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
bool RiaPreferences::showGridBox() const
|
|
{
|
|
return m_showGridBox();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
QString RiaPreferences::pythonExecutable() const
|
|
{
|
|
return m_pythonExecutable().trimmed();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
QString RiaPreferences::octaveExecutable() const
|
|
{
|
|
return m_octaveExecutable().trimmed();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
bool RiaPreferences::octaveShowHeaderInfoWhenExecutingScripts() const
|
|
{
|
|
return m_octaveShowHeaderInfoWhenExecutingScripts();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
QString RiaPreferences::octavePortNumber() const
|
|
{
|
|
if ( m_octavePortNumber().first ) return m_octavePortNumber().second;
|
|
|
|
return {};
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
bool RiaPreferences::storeBackupOfProjectFiles() const
|
|
{
|
|
return m_storeBackupOfProjectFile();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
RiaPreferencesSummary* RiaPreferences::summaryPreferences() const
|
|
{
|
|
return m_summaryPreferences();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
RiaPreferencesSystem* RiaPreferences::systemPreferences() const
|
|
{
|
|
return m_systemPreferences();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
RiaPreferencesGeoMech* RiaPreferences::geoMechPreferences() const
|
|
{
|
|
return m_geoMechPreferences();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
RiaPreferencesOpm* RiaPreferences::opmPreferences() const
|
|
{
|
|
return m_opmPreferences();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
RiaPreferencesBatch* RiaPreferences::batchPreferences() const
|
|
{
|
|
return m_batchPreferences();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
RiaPreferencesOsdu* RiaPreferences::osduPreferences() const
|
|
{
|
|
return m_osduPreferences();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
RiaPreferencesSumo* RiaPreferences::sumoPreferences() const
|
|
{
|
|
return m_sumoPreferences();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
RiaPreferencesOpenTelemetry* RiaPreferences::openTelemetryPreferences() const
|
|
{
|
|
return m_openTelemetryPreferences();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
RiaPreferencesCloudApi* RiaPreferences::cloudApiPreferences() const
|
|
{
|
|
return m_cloudApiPreferences();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
bool RiaPreferences::enableFaultsByDefault() const
|
|
{
|
|
return m_enableFaultsByDefault;
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
RiaPreferencesGrid* RiaPreferences::gridPreferences() const
|
|
{
|
|
return m_gridPreferences();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
void RiaPreferences::importPreferenceValuesFromFile( const QString& fileName )
|
|
{
|
|
if ( fileName.isEmpty() ) return;
|
|
|
|
QFile file( fileName );
|
|
if ( file.open( QIODevice::ReadOnly | QIODevice::Text ) )
|
|
{
|
|
QTextStream in( &file );
|
|
QString fileContent = in.readAll();
|
|
file.close();
|
|
if ( !fileContent.isEmpty() )
|
|
{
|
|
this->readObjectFromXmlString( fileContent, caf::PdmDefaultObjectFactory::instance() );
|
|
}
|
|
auto txt = "Imported preferences from " + fileName;
|
|
RiaLogging::info( txt.toStdString() );
|
|
}
|
|
else
|
|
{
|
|
auto txt = QString( "Unable to open file: " ) + fileName;
|
|
RiaLogging::error( txt.toStdString() );
|
|
}
|
|
}
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
void RiaPreferences::exportPreferenceValuesToFile( const QString& fileName )
|
|
{
|
|
QFile file( fileName );
|
|
if ( file.open( QIODevice::WriteOnly | QIODevice::Text ) )
|
|
{
|
|
QTextStream out( &file );
|
|
|
|
auto content = this->writeObjectToXmlString();
|
|
out << content;
|
|
file.close();
|
|
|
|
QString txt = "Exported preferences to " + fileName;
|
|
RiaLogging::info( txt.toStdString() );
|
|
}
|
|
else
|
|
{
|
|
auto txt = QString( "Unable to open file: " ) + fileName;
|
|
RiaLogging::error( txt.toStdString() );
|
|
}
|
|
}
|