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
Changed logging from info to debug for config imports, CAF logging, socket server, and gRPC server startup. OpenTelemetry initialization now only runs if enabled, with results logged at debug level.
Add a "Show Intersection Geometry" checkbox to RimExtrudedCurveIntersection that
controls visibility of intersection faces and mesh lines independently from the
surface intersection bands and curves.
When unchecked, the intersection geometry is hidden but bands and curves continue
to display based on their individual checked states.
Fixes#13466.
- Handle empty arrays [] in std::vector<cvf::Vec3d> parser
- Only treat ReadCorruptData as error in generic template (ReadPastEnd
is expected for types like caf::FilePath that consume all input)
- Use strict mode (allowExtraCharacters=false) for Python GRPC parsing
Fixes cafPdmScripting_UnitTests::PdmFieldSerialization.OptionalValues test
failure where empty input for std::optional<int> and std::optional<double>
fields was incorrectly set to default values (0) instead of remaining unset.
Problem:
- Optional handler used error count to determine parsing success
- Empty stream reads set value to 0 but didn't add errors (only checked ReadCorruptData)
- Result: optional fields set to 0 instead of remaining unset
Solution:
- Modified optional handler to check for empty input before parsing
- Empty input now correctly leaves optional field unset (no error)
- Maintains strict validation for invalid input (adds error, resets optional)
Changes:
- PdmFieldScriptingCapabilityIOHandler<std::optional<T>>: Check atEnd() before parsing
- int/double handlers: Only call checkForExtraCharactersAfterValue() on success
Testing:
- All cafPdmScripting_UnitTests pass (8/8)
- All test_pdmobject_validation.py tests pass (10/10)
- Optional double fields no longer generate spurious validation errors
Implements automatic state restoration when field validation fails during
update(). The Python object now maintains consistency with the server state
by rolling back to the last known valid values.
- Store protobuf snapshot before update attempt
- Restore both protobuf object and Python attributes on validation failure
- Add test_validation_rollback() to verify rollback behavior
- Update bool validation test to assert automatic rollback
- Provides transaction-like semantics for field updates
- Implemented strict parsing in 'writeToField' handlers to reject values with trailing garbage (e.g. '100.5test' for double, '0.99' for int/enum).
- Improved 'AppEnum' validation error message to list all valid options when an invalid value is provided.
- Added new test file 'test_validation_types_issue_12940.py' verifying strict type validation for double, int, and enum fields.