* Refactor well log track settings into modular classes
Major refactoring of RimWellLogTrack to delegate property axis, formation, region annotation, and well path attribute settings to dedicated settings classes. Introduces RimWellLogPropertyAxisSettings, RimWellLogFormationSettings, RimWellLogRegionAnnotationSettings, and RimWellLogWellPathAttributeSettings, each encapsulating related fields, UI logic, and option handling. Old fields are retained for migration and backward compatibility. Updates enums and signatures for consistency.
Switch from black to ruff for Python code linting and formatting.
Ruff provides both linting (ruff check) and formatting (ruff format)
in a single fast tool.
- Remove unused imports in test files
- Fix bare except clause to use except Exception
- Fix None comparisons to use 'is not None' / 'is None'
- Remove unused variable assignments
- Add noqa comments for intentional patterns (star imports, method
redefinition for different classes, import after sys.path modification)
- Apply ruff formatting
* Refactor and extend percentile calculation utilities
Refactored percentile and quantile calculation logic for improved flexibility and maintainability. Added helper functions for quantile/percentile validation, introduced a new vector-based calculatePercentiles method, and updated calculateStatisticsCurves to use it. Refactored nearest-rank and interpolated percentile methods to accept percentiles as vectors and improved parameter validation. Enhanced documentation throughout and updated function signatures in the header for clarity.
Use of Azure for caching is not working well for private forks of ResInsight. Use a custom vcpkg-cache to store binaries on Github cache.
https://github.com/TAServers/vcpkg-cache
This reverts commit 006a316749.
This reverts commit 1101d74b69.
Make vcpkg binary caching conditional on secret availability. When
AZURE_VCPKG_STORAGE_ACCOUNT is not available (fork PRs), fall back to
building dependencies from source instead of failing.
The peter-evans/create-pull-request action fails for fork PRs because
it tries to fetch a branch that only exists in the fork. Add conditional
logic to handle fork PRs differently:
- Fork PRs: Run black --check --diff and fail if formatting issues exist
- Same-repo PRs and pushes: Keep existing behavior (run black, create fix PR)
- Use issubclass() instead of exact class name matching
- Instantiate using child class to preserve subclass type
- Enables polymorphic return types in Python API
Fixes#13571.
Replaced direct string members with indices into RiaStringPool for vector, well, group, and LGR names. Updated all constructors, accessors, and logic to use the string pool for storage and retrieval. This change reduces memory usage and improves performance for repeated string values.
Fixes by clang-format
Introduce RiaStringPool for efficient shared string storage and retrieval by index, with thread-safe access using shared mutex. Pre-allocate empty string at index 0. Add comprehensive unit tests covering core functionality, concurrency, edge cases, and realistic usage.
Range selection functions now support exclusion tokens (e.g., "!4", "!5-7") for omitting values or ranges. UI placeholder texts and documentation updated to reflect new syntax. Comprehensive tests added for exclusion cases, including edge scenarios. Open-ended exclusion ranges are safely ignored in min/max variant. This enhances flexibility and precision for value selection.
* Update QMinimizePanel to use standard Qt expand/collapse icons
Replaced custom expand/collapse icons with standard Qt style icons for better platform consistency. Improved title bar layout by increasing right margin, vertically centering the title label, and updating the collapse button styling for a cleaner appearance and subtle hover effect.
Refined total and active cell count calculations in Rim3dOverlayInfoConfig to exclude temporary grid cells for radial grids, ensuring overlay info is accurate. Added a bounds check in RigActiveCellInfo::gridActiveCellCounts to prevent out-of-range access.
Enhance slice feature constructors and UI logic to support context-aware labeling for both Cartesian and radial grids. Axis and slice labels now clearly indicate both physical and index names (e.g., "Radial (I)", "Theta (J)"). Context menus and filter UIs display the appropriate labels based on grid type, improving clarity and usability.
Add detailed logging and vector size checks when reading time step info from dynamic results. Now resize reportNumbersOnFile if needed, log errors on size mismatches, and always return an initialized vector. This increases robustness and aids debugging.
Added keywords_network.json with network-related summary keywords.
Updated resource file to include the new JSON. Refactored keyword
import logic to accept multiple files, enabling loading of all
summary keyword sets (Eclipse, 6x, and network). This enhances
extensibility and supports network property summaries.
Enhanced parsing in PdmFieldScriptingCapabilityIOHandler to correctly handle backslashes and escape sequences in both quoted and unquoted strings. Unquoted Windows paths now preserve backslashes, while quoted strings process escape sequences as expected. Added unit tests to verify correct handling of both cases.
Add tests for Windows-style path handling in rips API
Introduce test_windows_paths.py with two pytest tests to verify correct handling of Windows-style file paths (backslashes) in the rips Python API.
The RMS well parser now correctly handles well names containing spaces.
Previously, ReadNext<std::string>() stopped at the first whitespace,
causing parsing failures. The fix reads line 3 as a whole and parses
coordinates from the end, treating remaining tokens as the well name.
Creates a GitHub Actions workflow to automatically bump the ResInsight dev version number and create a pull request to the dev branch.
This workflow allows for automated incrementing of the `-dev.XX` version suffix upon manual trigger, ensuring consistent versioning and simplifying the release process.
Adapts the code to handle different API versions of the Arrow library for reading Parquet files.
It uses preprocessor directives to select the correct API based on the `ARROW_VERSION_MAJOR`.
This ensures compatibility with both older and newer versions of the Arrow library.
Add support for configuring the default SSL/TLS protocol used by Qt's network stack through the RESINSIGHT_SSL_PROTOCOL environment variable. This provides a workaround for OpenSSL 3.x crashes on RHEL8 by allowing users to force TLS 1.2 or another protocol. Logs a warning if an invalid value is provided. Supported values include TlsV1_0, TlsV1_1, TlsV1_2, TlsV1_3, AnyProtocol, SecureProtocols, and their "OrLater" variants.
Add explicit disconnection of signals and abort pending network replies in destructors and shutdown methods to prevent unwanted callbacks and threading issues during object destruction or shutdown. This enhances robustness and safety, especially in asynchronous and multi-threaded contexts.
Removes the usage of `cafPdmUiPushButtonEditor` and implements the same functionality using the `addNewButton` method in `cafPdmUiOrdering`.
This change provides a more flexible and consistent way to add buttons to the UI and simplifies the code by removing the need for a dedicated editor class.
Removes the explicit usage of PdmUiPushButtonEditor and associated fields.
Replaces these with the more flexible addNewButton function in PdmUiOrdering.
This provides a more streamlined way to add buttons to the UI.
Removed manual setAlignment(Qt::AlignRight) calls for UI buttons,
as PdmUiButton now defaults to right alignment. Also removed
unused cafPdmUiButton.h includes from several files.
* Simplifies PdmUiFieldSpecialization implementation.
Refactors the PdmUiFieldSpecialization implementation to reduce code duplication.
Introduces a base class `PdmUiFieldSpecializationForValueSpec` that delegates to `PdmValueFieldSpecialization`, avoiding boilerplate code for common types.
The primary template now inherits from the new base class, providing default behavior for types with custom `PdmValueFieldSpecialization`.
* Improve AppEnum subset handling to avoid key collisions
Refactored AppEnum to use a unique key combining owner class name and field keyword for enum subset storage, preventing collisions when different object types use the same field keyword. Updated setEnumSubset and enumSubset to accept PdmFieldHandle pointers. Added tests to verify correct and independent subset behavior across object types and handle edge cases.
* Refactor PdmValueFieldSpecialization with base helpers
Introduce base classes for default isEqual and QVariant conversion. Update specializations to inherit from these helpers, removing redundant code and centralizing default behaviors.
Add a Color Mode dropdown to surfaces and surface collections that
controls how surfaces are rendered:
- Both: Show surface color and cell result colors
- Surface Color: Show only the uniform surface color
- Cell Result Colors: Show only cell results mapped to surface
Individual surfaces default to inherit from their parent collection but can override with their own setting.
Introduce support for setting the application's log level via a new --loglevel command line argument.
Log level is parsed early in initialization and can be set to DISABLED, ERROR, WARNING, INFO, or DEBUG (case-insensitive).
The RILogLevel enum now includes a DISABLED value.
Logger initialization in both console and GUI applications now respects the command line log level if provided, otherwise defaults to preference-based settings.
Fixes by clang-format