Several RFT plot adjustments

* #9923 Call loadDataAndUpdate() after visibility of curves is updated
This will ensure that all zoom ranges are recalculated based on visible curves.

* #9923 Put new segment plots in RFT Plot collection
* #9923 Add "Create Rft Sement Plot" to RFT plot collection
* #9923 Make sure the main window is displayed when required
Make sure the main window is opened and views updated when a grid model is opened from a summary case.

* #9923 Make sure fieldChanged is triggered when required
Exclude field having the target state. If these fields are included, the one and only call to setValueWithFieldChanged() can contain a field with the target state value. When setting a value to a field with the same value, nothing happens and the UI will get an inconsistent state (some curves toggled off are still visible in a plot).
This commit is contained in:
Magne Sjaastad
2023-03-08 07:35:27 +01:00
committed by GitHub
parent 51331facac
commit e2e239fd07
12 changed files with 122 additions and 25 deletions

View File

@@ -99,11 +99,36 @@ bool RicToggleItemsFeatureImpl::isToggleCommandsForSubItems()
//--------------------------------------------------------------------------------------------------
void RicToggleItemsFeatureImpl::setObjectToggleStateForSelection( SelectionToggleType state )
{
auto fields = findToggleFieldsFromSelection( state );
if ( fields.empty() ) return;
auto selectedFields = findToggleFieldsFromSelection( state );
auto lastField = fields.back();
for ( auto field : fields )
std::vector<caf::PdmField<bool>*> fieldsToUpdate;
if ( state == TOGGLE_OFF || state == TOGGLE_ON )
{
// Exclude field having the target state. If these fields are included, the one and only call to setValueWithFieldChanged() can
// contain a field with the target state value. When setting a value to a field with the same value, nothing happens and the UI will
// get an inconsistent state (some curves toggled off are still visible in a plot).
const bool targetState = ( state == TOGGLE_ON ) ? true : false;
for ( const auto& field : selectedFields )
{
bool currentValue = field->v();
if ( currentValue != targetState )
{
fieldsToUpdate.push_back( field );
}
}
}
else
{
// All fields will be updated when toggling
fieldsToUpdate = selectedFields;
}
if ( fieldsToUpdate.empty() ) return;
auto lastField = fieldsToUpdate.back();
for ( auto field : fieldsToUpdate )
{
bool value = !( field->v() );