#2818 Summary. Add new-plot-commands to context menus

This commit is contained in:
Bjørn Erik Jensen
2018-05-07 09:45:50 +02:00
parent 0e8eae33db
commit 7903a62cc5
11 changed files with 96 additions and 23 deletions

View File

@@ -20,6 +20,7 @@
#include "RiaApplication.h"
#include "RiaPreferences.h"
#include "RiaSummaryTools.h"
#include "RicEditSummaryPlotFeature.h"
#include "RicSummaryCurveCreator.h"
@@ -30,9 +31,13 @@
#include "RimSummaryCrossPlotCollection.h"
#include "RimSummaryCurveFilter.h"
#include "RimSummaryPlot.h"
#include "RimSummaryCase.h"
#include "RimSummaryCaseCollection.h"
#include "RiuPlotMainWindowTools.h"
#include "cafSelectionManagerTools.h"
#include "cvfAssert.h"
#include <QAction>
@@ -45,6 +50,24 @@ CAF_CMD_SOURCE_INIT(RicNewSummaryCrossPlotFeature, "RicNewSummaryCrossPlotFeatur
//--------------------------------------------------------------------------------------------------
bool RicNewSummaryCrossPlotFeature::isCommandEnabled()
{
RimSummaryCrossPlotCollection* sumPlotColl = nullptr;
caf::PdmObject* selObj = dynamic_cast<caf::PdmObject*>(caf::SelectionManager::instance()->selectedItem());
if (selObj)
{
sumPlotColl = RiaSummaryTools::parentCrossPlotCollection(selObj);
}
if (sumPlotColl) return true;
// Multiple case selections
std::vector<caf::PdmUiItem*> selectedItems = caf::selectedObjectsByTypeStrict<caf::PdmUiItem*>();
for (auto item : selectedItems)
{
if (!dynamic_cast<RimSummaryCase*>(item) && !dynamic_cast<RimSummaryCaseCollection*>(item))
return false;
}
return true;
}

View File

@@ -29,11 +29,14 @@
#include "RimSummaryCurveFilter.h"
#include "RimSummaryPlot.h"
#include "RimSummaryPlotCollection.h"
#include "RimSummaryCase.h"
#include "RimSummaryCaseCollection.h"
#include "RiuPlotMainWindow.h"
#include "cvfAssert.h"
#include "cafSelectionManager.h"
#include "cafSelectionManagerTools.h"
//#include "cafPdmUiItem.h"
#include <QAction>
@@ -55,7 +58,15 @@ bool RicNewSummaryPlotFeature::isCommandEnabled()
if (sumPlotColl) return true;
return false;
// Multiple case selections
std::vector<caf::PdmUiItem*> selectedItems = caf::selectedObjectsByTypeStrict<caf::PdmUiItem*>();
for (auto item : selectedItems)
{
if (!dynamic_cast<RimSummaryCase*>(item) && !dynamic_cast<RimSummaryCaseCollection*>(item))
return false;
}
return true;
}
//--------------------------------------------------------------------------------------------------
@@ -66,6 +77,16 @@ void RicNewSummaryPlotFeature::onActionTriggered(bool isChecked)
RimProject* project = RiaApplication::instance()->project();
CVF_ASSERT(project);
std::vector<RimSummaryCase*> selectedCases = caf::selectedObjectsByType<RimSummaryCase*>();
std::vector<RimSummaryCaseCollection*> selectedGroups = caf::selectedObjectsByType<RimSummaryCaseCollection*>();
// Append grouped cases
for (auto group : selectedGroups)
{
auto groupCases = group->allSummaryCases();
selectedCases.insert(selectedCases.end(), groupCases.begin(), groupCases.end());
}
auto dialog = RicEditSummaryPlotFeature::curveCreatorDialog();
if (!dialog->isVisible())
@@ -77,7 +98,7 @@ void RicNewSummaryPlotFeature::onActionTriggered(bool isChecked)
dialog->raise();
}
dialog->updateFromSummaryPlot(nullptr);
dialog->updateFromDefaultCases(selectedCases);
}
//--------------------------------------------------------------------------------------------------

View File

@@ -129,7 +129,7 @@ RimSummaryPlot* RicSummaryCurveCreator::previewPlot() const
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicSummaryCurveCreator::updateFromSummaryPlot(RimSummaryPlot* targetPlot)
void RicSummaryCurveCreator::updateFromSummaryPlot(RimSummaryPlot* targetPlot, const std::vector<RimSummaryCase*>& defaultCases)
{
if (targetPlot == nullptr || m_targetPlot != targetPlot)
{
@@ -145,7 +145,7 @@ void RicSummaryCurveCreator::updateFromSummaryPlot(RimSummaryPlot* targetPlot)
}
else
{
setDefaultCurveSelection();
setDefaultCurveSelection(defaultCases);
m_previewPlot->enableAutoPlotTitle(true);
}
@@ -616,9 +616,9 @@ void RicSummaryCurveCreator::copyEnsembleCurveAndAddToPlot(const RimSummaryCurve
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicSummaryCurveCreator::setDefaultCurveSelection()
void RicSummaryCurveCreator::setDefaultCurveSelection(const std::vector<RimSummaryCase*>& defaultCases)
{
m_summaryCurveSelectionEditor->summaryAddressSelection()->setDefaultSelection();
m_summaryCurveSelectionEditor->summaryAddressSelection()->setDefaultSelection(defaultCases);
}
//--------------------------------------------------------------------------------------------------

View File

@@ -59,7 +59,8 @@ public:
virtual ~RicSummaryCurveCreator();
RimSummaryPlot* previewPlot() const;
void updateFromSummaryPlot(RimSummaryPlot* targetPlot);
void updateFromSummaryPlot(RimSummaryPlot* targetPlot,
const std::vector<RimSummaryCase*>& defaultCases = std::vector<RimSummaryCase*>());
QWidget* addressSelectionWidget(QWidget* parent);
@@ -87,7 +88,7 @@ private:
void updateTargetPlot();
static void copyCurveAndAddToPlot(const RimSummaryCurve *curve, RimSummaryPlot *plot, bool forceVisible = false);
static void copyEnsembleCurveAndAddToPlot(const RimSummaryCurve *curve, RimEnsembleCurveSet* curveSet, bool forceVisible = false);
void setDefaultCurveSelection();
void setDefaultCurveSelection(const std::vector<RimSummaryCase*>& defaultCases);
void resetAllFields();
void initCurveAppearanceCalculator(RimSummaryCurveAppearanceCalculator& curveAppearanceCalc);

View File

@@ -65,6 +65,15 @@ void RicSummaryCurveCreatorDialog::updateFromSummaryPlot(RimSummaryPlot* summary
m_curveCreatorSplitterUi->updateUi();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicSummaryCurveCreatorDialog::updateFromDefaultCases(const std::vector<RimSummaryCase*> defaultCases)
{
m_curveCreatorSplitterUi->updateFromDefaultCases(defaultCases);
m_curveCreatorSplitterUi->updateUi();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@@ -22,6 +22,7 @@
class RicSummaryCurveCreatorSplitterUi;
class RimSummaryPlot;
class RimSummaryCase;
//==================================================================================================
///
@@ -35,6 +36,7 @@ public:
~RicSummaryCurveCreatorDialog();
void updateFromSummaryPlot(RimSummaryPlot* summaryPlot);
void updateFromDefaultCases(const std::vector<RimSummaryCase*> defaultCases);
private slots:
void slotDialogFinished();

View File

@@ -66,6 +66,14 @@ void RicSummaryCurveCreatorSplitterUi::updateFromSummaryPlot(RimSummaryPlot* sum
m_summaryCurveCreator->updateFromSummaryPlot(summaryPlot);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicSummaryCurveCreatorSplitterUi::updateFromDefaultCases(const std::vector<RimSummaryCase*> defaultCases)
{
m_summaryCurveCreator->updateFromSummaryPlot(nullptr, defaultCases);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@@ -24,6 +24,7 @@
#include <memory>
class RimSummaryPlot;
class RimSummaryCase;
class RicSummaryCurveCreator;
class QMinimizePanel;
@@ -52,6 +53,7 @@ public:
~RicSummaryCurveCreatorSplitterUi();
void updateFromSummaryPlot(RimSummaryPlot* summaryPlot);
void updateFromDefaultCases(const std::vector<RimSummaryCase*> defaultCases);
private:
virtual void recursivelyConfigureAndUpdateTopLevelUiItems(const std::vector<caf::PdmUiItem *>& topLevelUiItems,

View File

@@ -485,17 +485,23 @@ caf::CmdFeatureMenuBuilder RimContextCommandBuilder::commandsFromSelection()
menuBuilder << "RicImportSummaryCaseFeature";
menuBuilder << "RicImportSummaryCasesFeature";
menuBuilder << "RicImportEnsembleFeature";
menuBuilder << "RicNewSummaryPlotFeature";
menuBuilder << "RicNewSummaryCrossPlotFeature";
menuBuilder.addSeparator();
}
else if (dynamic_cast<RimSummaryCase*>(uiItem))
{
menuBuilder << "RicImportSummaryCaseFeature";
menuBuilder << "RicImportSummaryCasesFeature";
menuBuilder << "RicImportEnsembleFeature";
menuBuilder << "RicNewSummaryPlotFeature";
menuBuilder << "RicNewSummaryCrossPlotFeature";
menuBuilder.addSeparator();
if (!dynamic_cast<RimObservedData*>(uiItem))
{
menuBuilder << "RicShowSummaryCurveCalculatorFeature";
menuBuilder << "RicNewSummaryPlotFeature";
//menuBuilder << "RicNewSummaryPlotFeature";
}
}
else if (dynamic_cast<RimWellLogFileChannel*>(uiItem))
@@ -652,8 +658,11 @@ caf::CmdFeatureMenuBuilder RimContextCommandBuilder::commandsFromSelection()
menuBuilder << "RicShowPlotDataFeature";
menuBuilder << "RicShowTotalAllocationDataFeature";
menuBuilder << "RicNewSummaryPlotFeature";
menuBuilder << "RicNewSummaryCrossPlotFeature";
menuBuilder << "RicSummaryCurveSwitchAxisFeature";
menuBuilder.addSeparator();
if (!menuBuilder.isCmdFeatureAdded("RicNewFishbonesSubsFeature"))
{
menuBuilder << "RicNewFishbonesSubsFeature";

View File

@@ -296,7 +296,7 @@ void RiuSummaryCurveDefSelection::setFieldChangedHandler(const std::function<voi
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuSummaryCurveDefSelection::setDefaultSelection()
void RiuSummaryCurveDefSelection::setDefaultSelection(const std::vector<RimSummaryCase*>& defaultCases)
{
RimProject* proj = RiaApplication::instance()->project();
auto allSumCases = proj->allSummaryCases();
@@ -304,17 +304,15 @@ void RiuSummaryCurveDefSelection::setDefaultSelection()
{
RifEclipseSummaryAddress defaultAddress = RifEclipseSummaryAddress::fieldVarAddress("FOPT");
RiaSummaryCurveDefinition curveDef(allSumCases[0], defaultAddress);
std::vector<RimSummaryCase*> selectTheseCases = defaultCases;
if (selectTheseCases.empty()) selectTheseCases.push_back(allSumCases[0]);
std::vector<RiaSummaryCurveDefinition> curveDefs;
curveDefs.push_back(curveDef);
// DEBUG
//{
// RifEclipseSummaryAddress defaultAddress = RifEclipseSummaryAddress::fieldVarAddress("FOPTH");
// RiaSummaryCurveDefinition curveDef(allSumCases[0], defaultAddress);
// curveDefs.push_back(curveDef);
//}
for(RimSummaryCase* c : selectTheseCases)
{
RiaSummaryCurveDefinition curveDef(c, defaultAddress);
curveDefs.push_back(curveDef);
}
setSelectedCurveDefinitions(curveDefs);
}

View File

@@ -55,7 +55,7 @@ public:
void setMultiSelectionMode(bool multiSelectionMode);
void setFieldChangedHandler(const std::function<void()>& handlerFunc);
void setDefaultSelection();
void setDefaultSelection(const std::vector<RimSummaryCase*>& defaultCases);
private:
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField,