mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#4226 Add polyline measurement mode
This commit is contained in:
@@ -69,6 +69,15 @@ void RicMeasurementPickEventHandler::unregisterAsPickEventHandler()
|
||||
RicMeasurementPickEventHandler::RicMeasurementPickEventHandler()
|
||||
{}
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RicMeasurementPickEventHandler::enablePolyLineMode(bool polyLineModeEnabled)
|
||||
{
|
||||
m_polyLineModeEnabled = polyLineModeEnabled;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -76,7 +85,7 @@ bool RicMeasurementPickEventHandler::handle3dPickEvent(const Ric3dPickEvent& eve
|
||||
{
|
||||
auto measurement = RiaApplication::instance()->project()->measurement();
|
||||
|
||||
if (measurement && measurement->isInMeasurementMode())
|
||||
if (measurement && measurement->measurementMode())
|
||||
{
|
||||
const RiuPickItemInfo* firstGeometryPickInfo = nullptr;
|
||||
for (const auto& info : eventObject.m_pickItemInfos)
|
||||
@@ -98,7 +107,9 @@ bool RicMeasurementPickEventHandler::handle3dPickEvent(const Ric3dPickEvent& eve
|
||||
|
||||
bool isControlButtonDown = QApplication::keyboardModifiers() & Qt::ControlModifier;
|
||||
|
||||
if (!isControlButtonDown)
|
||||
bool isPolyLineMode = m_polyLineModeEnabled != isControlButtonDown;
|
||||
|
||||
if (!isPolyLineMode)
|
||||
{
|
||||
if (measurement->pointsInDomainCoords().size() > 1)
|
||||
{
|
||||
|
||||
@@ -28,13 +28,17 @@ class RicMeasurementPickEventHandler : public Ric3dViewPickEventHandler
|
||||
public:
|
||||
static RicMeasurementPickEventHandler* instance();
|
||||
|
||||
|
||||
void registerAsPickEventHandler() override;
|
||||
void unregisterAsPickEventHandler() override;
|
||||
|
||||
void enablePolyLineMode(bool polyLineModeEnabled);
|
||||
|
||||
protected:
|
||||
RicMeasurementPickEventHandler();
|
||||
bool handle3dPickEvent(const Ric3dPickEvent& eventObject) override;
|
||||
void notifyUnregistered() override;
|
||||
|
||||
private:
|
||||
bool m_polyLineModeEnabled;
|
||||
};
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
#include <QAction>
|
||||
|
||||
CAF_CMD_SOURCE_INIT(RicToggleMeasurementModeFeature, "RicToggleMeasurementModeFeature");
|
||||
CAF_CMD_SOURCE_INIT(RicTogglePolyMeasurementModeFeature, "RicTogglePolyMeasurementModeFeature");
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
@@ -54,7 +55,14 @@ bool RicToggleMeasurementModeFeature::isCommandEnabled()
|
||||
void RicToggleMeasurementModeFeature::onActionTriggered(bool isChecked)
|
||||
{
|
||||
auto meas = measurement();
|
||||
meas->setMeasurementMode(!meas->isInMeasurementMode());
|
||||
if (meas->measurementMode() == RimMeasurement::MEASURE_REGULAR)
|
||||
{
|
||||
meas->setMeasurementMode(RimMeasurement::MEASURE_DISABLED);
|
||||
}
|
||||
else
|
||||
{
|
||||
meas->setMeasurementMode(RimMeasurement::MEASURE_REGULAR);
|
||||
}
|
||||
|
||||
refreshActionLook();
|
||||
}
|
||||
@@ -69,7 +77,7 @@ void RicToggleMeasurementModeFeature::setupActionLook(QAction* actionToSetup)
|
||||
actionToSetup->setCheckable(true);
|
||||
|
||||
auto* meas = measurement();
|
||||
if (meas && meas->isInMeasurementMode())
|
||||
if (meas && meas->measurementMode() == RimMeasurement::MEASURE_REGULAR)
|
||||
{
|
||||
actionToSetup->setShortcut(QKeySequence(Qt::Key_Escape));
|
||||
}
|
||||
@@ -87,7 +95,7 @@ bool RicToggleMeasurementModeFeature::isCommandChecked()
|
||||
auto meas = measurement();
|
||||
if (meas)
|
||||
{
|
||||
return meas->isInMeasurementMode();
|
||||
return meas->measurementMode() == RimMeasurement::MEASURE_REGULAR;
|
||||
}
|
||||
|
||||
return false;
|
||||
@@ -109,3 +117,55 @@ Rim3dView* RicToggleMeasurementModeFeature::activeView() const
|
||||
auto view = RiaApplication::instance()->activeReservoirView();
|
||||
return view;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RicTogglePolyMeasurementModeFeature::onActionTriggered(bool isChecked)
|
||||
{
|
||||
auto meas = measurement();
|
||||
if (meas->measurementMode() == RimMeasurement::MEASURE_POLYLINE)
|
||||
{
|
||||
meas->setMeasurementMode(RimMeasurement::MEASURE_DISABLED);
|
||||
}
|
||||
else
|
||||
{
|
||||
meas->setMeasurementMode(RimMeasurement::MEASURE_POLYLINE);
|
||||
}
|
||||
|
||||
refreshActionLook();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RicTogglePolyMeasurementModeFeature::setupActionLook(QAction* actionToSetup)
|
||||
{
|
||||
actionToSetup->setText("Poly Line Measurement Mode");
|
||||
actionToSetup->setIcon(QIcon(":/RulerPoly24x24.png"));
|
||||
actionToSetup->setCheckable(true);
|
||||
|
||||
auto* meas = measurement();
|
||||
if (meas && meas->measurementMode() == RimMeasurement::MEASURE_POLYLINE)
|
||||
{
|
||||
actionToSetup->setShortcut(QKeySequence(Qt::Key_Escape));
|
||||
}
|
||||
else
|
||||
{
|
||||
actionToSetup->setShortcut(QKeySequence());
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RicTogglePolyMeasurementModeFeature::isCommandChecked()
|
||||
{
|
||||
auto meas = measurement();
|
||||
if (meas)
|
||||
{
|
||||
return meas->measurementMode() == RimMeasurement::MEASURE_POLYLINE;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -39,10 +39,22 @@ protected:
|
||||
void setupActionLook(QAction* actionToSetup) override;
|
||||
bool isCommandChecked() override;
|
||||
|
||||
private:
|
||||
protected:
|
||||
void refreshActionLook();
|
||||
|
||||
private:
|
||||
RimMeasurement* measurement() const;
|
||||
Rim3dView* activeView() const;
|
||||
};
|
||||
|
||||
//==================================================================================================
|
||||
///
|
||||
//==================================================================================================
|
||||
class RicTogglePolyMeasurementModeFeature : public RicToggleMeasurementModeFeature
|
||||
{
|
||||
CAF_CMD_HEADER_INIT;
|
||||
|
||||
protected:
|
||||
void onActionTriggered(bool isChecked) override;
|
||||
void setupActionLook(QAction* actionToSetup) override;
|
||||
bool isCommandChecked() override;
|
||||
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user