///////////////////////////////////////////////////////////////////////////////// // // 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 // for more details. // ///////////////////////////////////////////////////////////////////////////////// #pragma once #include "RiaDateTimeDefines.h" #include "RiaDefines.h" #include "RiaFontCache.h" #include "cafAppEnum.h" #include "cafPdmChildField.h" #include "cafPdmField.h" #include "cafPdmObject.h" // Include to make Pdm work for cvf::Color #include "cafPdmFieldCvfColor.h" #include #include #include #include class RifReaderSettings; class RiaPreferencesSummary; class RiaPreferencesGeoMech; class RiaPreferencesSystem; //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- class RiaPreferences : public caf::PdmObject { CAF_PDM_HEADER_INIT; public: using FontSizeEnum = RiaFontCache::FontSizeEnum; using PageSizeEnum = caf::AppEnum; using PageOrientationEnum = caf::AppEnum; using GridModelEnum = caf::AppEnum; bool enableFaultsByDefault() const; public: RiaPreferences(); ~RiaPreferences() override; static RiaPreferences* current(); QStringList tabNames(); const RifReaderSettings* readerSettings() const; RiaDefines::GridModelReader gridModelReader() const; bool useUndoRedo() const; const QString& dateFormat() const; const QString& timeFormat() const; QString dateTimeFormat( RiaDefines::DateFormatComponents dateComponents = RiaDefines::DateFormatComponents::DATE_FORMAT_YEAR_MONTH_DAY, RiaDefines::TimeFormatComponents timeComponents = RiaDefines::TimeFormatComponents::TIME_FORMAT_HOUR_MINUTE_SECOND ) const; int maxScriptFoldersDepth() const; int maxPlotTemplateFoldersDepth() const; QStringList plotTemplateFolders() const; void appendPlotTemplateFolders( const QString& folder ); QString lastUsedPlotTemplateAbsolutePath() const; void setLastUsedPlotTemplatePath( const QString& templatePath ); bool openExportedPdfInViewer() const; bool useQtChartsAsDefaultPlotType() const; bool writeEchoInGrdeclFiles() const; RiaDefines::ThemeEnum guiTheme() const; std::map defaultFontSizes() const; void writePreferencesToApplicationStore(); QPageLayout defaultPageLayout() const; QMarginsF margins() const; double surfaceImportResamplingDistance() const; QString multiLateralWellNamePattern() const; static QString defaultMultiLateralWellNamePattern(); // 3D view RiaDefines::MeshModeType defaultMeshModeType() const; RiaDefines::RINavigationPolicy navigationPolicy() const; double defaultScaleFactorZ() const; bool showLegendBackground() const; bool showInfoBox() const; bool showGridBox() const; // Script paths QString pythonExecutable() const; QString octaveExecutable() const; RiaPreferencesGeoMech* geoMechPreferences() const; RiaPreferencesSummary* summaryPreferences() const; RiaPreferencesSystem* systemPreferences() const; public: caf::PdmField enableGrpcServer; caf::PdmField defaultGrpcPortNumber; caf::PdmField scriptDirectories; caf::PdmField scriptEditorExecutable; caf::PdmField octaveShowHeaderInfoWhenExecutingScripts; caf::PdmField showPythonDebugInfo; caf::PdmField ssihubAddress; caf::PdmField defaultGridLineColors; caf::PdmField defaultFaultGridLineColors; caf::PdmField defaultViewerBackgroundColor; caf::PdmField defaultWellLabelColor; caf::PdmField defaultSceneFontSize; caf::PdmField defaultWellLabelFontSize; caf::PdmField defaultAnnotationFontSize; caf::PdmField defaultPlotFontSize; caf::PdmField lastUsedProjectFileName; caf::PdmField autocomputeDepthRelatedProperties; caf::PdmField loadAndShowSoil; caf::PdmField holoLensDisableCertificateVerification; caf::PdmField csvTextExportFieldSeparator; protected: void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; void initAfterRead() override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; private: static QString tabNameGeneral(); static QString tabNameGrid(); static QString tabNameSummary(); static QString tabNameGeomech(); static QString tabNamePlotting(); static QString tabNameScripting(); static QString tabNameSystem(); static QString tabNameImportExport(); static double defaultMarginSize( QPageSize::PageSizeId pageSizeId ); private: caf::PdmField m_gridModelReader; caf::PdmChildField m_readerSettings; caf::PdmField m_dateFormat; caf::PdmField m_timeFormat; caf::PdmField m_useUndoRedo; caf::PdmField> m_guiTheme; caf::PdmField m_maxScriptFoldersDepth; caf::PdmField m_pageSize; caf::PdmField m_pageOrientation; caf::PdmField m_pageLeftMargin; caf::PdmField m_pageRightMargin; caf::PdmField m_pageTopMargin; caf::PdmField m_pageBottomMargin; caf::PdmField m_openExportedPdfInViewer; caf::PdmField m_writeEchoInGrdeclFiles; caf::PdmField m_plotTemplateFolders; caf::PdmField m_maxPlotTemplateFoldersDepth; caf::PdmField m_lastUsedPlotTemplate; caf::PdmField m_useQtChartsPlotByDefault; // Script paths caf::PdmField m_octaveExecutable; caf::PdmField m_pythonExecutable; // Surface Import caf::PdmField m_surfaceImportResamplingDistance; // Well Path Import caf::PdmField m_multiLateralWellPattern; // GeoMech things caf::PdmChildField m_geoMechPreferences; // Summary data caf::PdmChildField m_summaryPreferences; // System settings caf::PdmChildField m_systemPreferences; // 3d view caf::PdmField> m_defaultMeshModeType; caf::PdmField> m_navigationPolicy; caf::PdmField m_defaultScaleFactorZ; caf::PdmField m_showLegendBackground; caf::PdmField m_enableFaultsByDefault; caf::PdmField m_showInfoBox; caf::PdmField m_showGridBox; QStringList m_tabNames; };