(#697) Added combo box for selection of point and line style

This commit is contained in:
Magne Sjaastad 2015-12-09 12:21:57 +01:00
parent c67a413926
commit a608904bea
4 changed files with 113 additions and 25 deletions

View File

@ -38,12 +38,30 @@ CAF_PDM_XML_ABSTRACT_SOURCE_INIT(RimWellLogCurve, "WellLogPlotCurve");
namespace caf namespace caf
{ {
template<> template<>
void caf::AppEnum< RimWellLogCurve::CurvePlotTypeEnum >::setUp() void caf::AppEnum< RimWellLogCurve::LineStyleEnum >::setUp()
{ {
addItem(RimWellLogCurve::LINE, "LINE", "Line"); addItem(RimWellLogCurve::STYLE_NONE, "STYLE_NONE", "None");
addItem(RimWellLogCurve::SYMBOL, "SYMBOL", "Symbol"); addItem(RimWellLogCurve::STYLE_SOLID, "STYLE_SOLID", "Solid");
addItem(RimWellLogCurve::LINE_AND_SYMBOL, "LINE_AND_SYMBOL", "Line and Symbol"); addItem(RimWellLogCurve::STYLE_DASH, "STYLE_DASH", "Dashes");
setDefault(RimWellLogCurve::LINE); addItem(RimWellLogCurve::STYLE_DOT, "STYLE_DOT", "Dots");
addItem(RimWellLogCurve::STYLE_DASH_DOT,"STYLE_DASH_DOT", "Dashes and Dots");
setDefault(RimWellLogCurve::STYLE_SOLID);
}
template<>
void caf::AppEnum< RimWellLogCurve::PointSymbolEnum >::setUp()
{
addItem(RimWellLogCurve::SYMBOL_NONE, "SYMBOL_NONE", "None");
addItem(RimWellLogCurve::SYMBOL_ELLIPSE, "SYMBOL_ELLIPSE", "Ellipse");
addItem(RimWellLogCurve::SYMBOL_RECT, "SYMBOL_RECT", "Rect");
addItem(RimWellLogCurve::SYMBOL_DIAMOND, "SYMBOL_DIAMOND", "Diamond");
addItem(RimWellLogCurve::SYMBOL_TRIANGLE, "SYMBOL_TRIANGLE", "Triangle");
addItem(RimWellLogCurve::SYMBOL_CROSS, "SYMBOL_CROSS", "Cross");
addItem(RimWellLogCurve::SYMBOL_XCROSS, "SYMBOL_XCROSS", "X Cross");
setDefault(RimWellLogCurve::SYMBOL_NONE);
} }
} }
@ -68,8 +86,11 @@ RimWellLogCurve::RimWellLogCurve()
CAF_PDM_InitField(&m_curveThickness, "Thickness", 1.0f, "Thickness", "", "", ""); CAF_PDM_InitField(&m_curveThickness, "Thickness", 1.0f, "Thickness", "", "", "");
m_curveThickness.uiCapability()->setUiEditorTypeName(caf::PdmUiComboBoxEditor::uiEditorTypeName()); m_curveThickness.uiCapability()->setUiEditorTypeName(caf::PdmUiComboBoxEditor::uiEditorTypeName());
caf::AppEnum< RimWellLogCurve::CurvePlotTypeEnum > curvePlotType = LINE; caf::AppEnum< RimWellLogCurve::LineStyleEnum > lineStyle = STYLE_SOLID;
CAF_PDM_InitField(&m_curvePlotStyle, "CurvePlotStyle", curvePlotType, "Curve style", "", "", ""); CAF_PDM_InitField(&m_lineStyle, "LineStyle", lineStyle, "Line style", "", "", "");
caf::AppEnum< RimWellLogCurve::PointSymbolEnum > pointSymbol = SYMBOL_NONE;
CAF_PDM_InitField(&m_pointSymbol, "PointSymbol", pointSymbol, "Point style", "", "", "");
m_qwtPlotCurve = new RiuLineSegmentQwtPlotCurve; m_qwtPlotCurve = new RiuLineSegmentQwtPlotCurve;
m_qwtPlotCurve->setXAxis(QwtPlot::xTop); m_qwtPlotCurve->setXAxis(QwtPlot::xTop);
@ -108,9 +129,10 @@ void RimWellLogCurve::fieldChangedByUi(const caf::PdmFieldHandle* changedField,
} }
else if (&m_curveColor == changedField else if (&m_curveColor == changedField
|| &m_curveThickness == changedField || &m_curveThickness == changedField
|| &m_curvePlotStyle == changedField) || &m_pointSymbol == changedField
|| &m_lineStyle == changedField)
{ {
updateCurvePen(); updateCurveAppearance();
} }
else if (changedField == &m_autoName) else if (changedField == &m_autoName)
{ {
@ -174,7 +196,7 @@ void RimWellLogCurve::updatePlotConfiguration()
this->updateCurveName(); this->updateCurveName();
this->updatePlotTitle(); this->updatePlotTitle();
updateCurvePen(); updateCurveAppearance();
// Todo: Rest of the curve setup controlled from this class // Todo: Rest of the curve setup controlled from this class
} }
@ -340,28 +362,78 @@ const RigWellLogCurveData* RimWellLogCurve::curveData() const
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimWellLogCurve::updateCurvePen() void RimWellLogCurve::updateCurveAppearance()
{ {
CVF_ASSERT(m_qwtPlotCurve); CVF_ASSERT(m_qwtPlotCurve);
QColor curveColor(m_curveColor.value().rByte(), m_curveColor.value().gByte(), m_curveColor.value().bByte()); QColor curveColor(m_curveColor.value().rByte(), m_curveColor.value().gByte(), m_curveColor.value().bByte());
m_qwtPlotCurve->setPen(curveColor, m_curveThickness);
QwtSymbol* symbol = NULL; QwtSymbol* symbol = NULL;
if (m_curvePlotStyle == LINE_AND_SYMBOL || m_curvePlotStyle == SYMBOL)
if (m_pointSymbol() != SYMBOL_NONE)
{ {
QwtSymbol::Style style = QwtSymbol::NoSymbol;
switch (m_pointSymbol())
{
case SYMBOL_ELLIPSE :
style = QwtSymbol::Ellipse;
break;
case SYMBOL_RECT:
style = QwtSymbol::Rect;
break;
case SYMBOL_DIAMOND:
style = QwtSymbol::Diamond;
break;
case SYMBOL_TRIANGLE:
style = QwtSymbol::Triangle;
break;
case SYMBOL_CROSS:
style = QwtSymbol::Cross;
break;
case SYMBOL_XCROSS:
style = QwtSymbol::XCross;
break;
default:
break;
}
// QwtPlotCurve will take ownership of the symbol // QwtPlotCurve will take ownership of the symbol
symbol = new QwtSymbol(QwtSymbol::XCross); symbol = new QwtSymbol(style);
symbol->setSize(6, 6); symbol->setSize(6, 6);
symbol->setColor(curveColor); symbol->setColor(curveColor);
} }
QwtPlotCurve::CurveStyle curveStyle = QwtPlotCurve::Lines; QwtPlotCurve::CurveStyle curveStyle = QwtPlotCurve::NoCurve;
if (m_curvePlotStyle == SYMBOL) Qt::PenStyle penStyle = Qt::SolidLine;
if (m_lineStyle() != STYLE_NONE)
{ {
curveStyle = QwtPlotCurve::NoCurve; curveStyle = QwtPlotCurve::Lines;
switch (m_lineStyle())
{
case STYLE_SOLID:
penStyle = Qt::SolidLine;
break;
case STYLE_DASH:
penStyle = Qt::DashLine;
break;
case STYLE_DOT:
penStyle = Qt::DotLine;
break;
case STYLE_DASH_DOT:
penStyle = Qt::DashDotLine;
break;
default:
break;
}
} }
m_qwtPlotCurve->setPen(curveColor, m_curveThickness, penStyle);
m_qwtPlotCurve->setStyle(curveStyle); m_qwtPlotCurve->setStyle(curveStyle);
m_qwtPlotCurve->setSymbol(symbol); m_qwtPlotCurve->setSymbol(symbol);
} }

View File

@ -45,11 +45,24 @@ class RimWellLogCurve : public caf::PdmObject
{ {
CAF_PDM_HEADER_INIT; CAF_PDM_HEADER_INIT;
public: public:
enum CurvePlotTypeEnum enum LineStyleEnum
{ {
LINE, STYLE_NONE,
SYMBOL, STYLE_SOLID,
LINE_AND_SYMBOL STYLE_DASH,
STYLE_DOT,
STYLE_DASH_DOT
};
enum PointSymbolEnum
{
SYMBOL_NONE,
SYMBOL_ELLIPSE,
SYMBOL_RECT,
SYMBOL_DIAMOND,
SYMBOL_TRIANGLE,
SYMBOL_CROSS,
SYMBOL_XCROSS
}; };
public: public:
@ -85,7 +98,7 @@ protected:
void updateCurveVisibility(); void updateCurveVisibility();
void zoomAllOwnerTrackAndPlot(); void zoomAllOwnerTrackAndPlot();
void updateOptionSensitivity(); void updateOptionSensitivity();
void updateCurvePen(); void updateCurveAppearance();
// Overridden PDM methods // Overridden PDM methods
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue); virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
@ -107,5 +120,6 @@ protected:
caf::PdmField<cvf::Color3f> m_curveColor; caf::PdmField<cvf::Color3f> m_curveColor;
caf::PdmField<float> m_curveThickness; caf::PdmField<float> m_curveThickness;
caf::PdmField< caf::AppEnum< CurvePlotTypeEnum > > m_curvePlotStyle; caf::PdmField< caf::AppEnum< PointSymbolEnum > > m_pointSymbol;
caf::PdmField< caf::AppEnum< LineStyleEnum > > m_lineStyle;
}; };

View File

@ -382,7 +382,8 @@ void RimWellLogExtractionCurve::defineUiOrdering(QString uiConfigName, caf::PdmU
caf::PdmUiGroup* appearanceGroup = uiOrdering.addNewGroup("Appearance"); caf::PdmUiGroup* appearanceGroup = uiOrdering.addNewGroup("Appearance");
appearanceGroup->add(&m_curveColor); appearanceGroup->add(&m_curveColor);
appearanceGroup->add(&m_curveThickness); appearanceGroup->add(&m_curveThickness);
appearanceGroup->add(&m_curvePlotStyle); appearanceGroup->add(&m_pointSymbol);
appearanceGroup->add(&m_lineStyle);
appearanceGroup->add(&m_curveName); appearanceGroup->add(&m_curveName);
appearanceGroup->add(&m_autoName); appearanceGroup->add(&m_autoName);
if (m_autoName) if (m_autoName)

View File

@ -176,7 +176,8 @@ void RimWellLogFileCurve::defineUiOrdering(QString uiConfigName, caf::PdmUiOrder
caf::PdmUiGroup* appearanceGroup = uiOrdering.addNewGroup("Appearance"); caf::PdmUiGroup* appearanceGroup = uiOrdering.addNewGroup("Appearance");
appearanceGroup->add(&m_curveColor); appearanceGroup->add(&m_curveColor);
appearanceGroup->add(&m_curveThickness); appearanceGroup->add(&m_curveThickness);
appearanceGroup->add(&m_curvePlotStyle); appearanceGroup->add(&m_pointSymbol);
appearanceGroup->add(&m_lineStyle);
appearanceGroup->add(&m_curveName); appearanceGroup->add(&m_curveName);
appearanceGroup->add(&m_autoName); appearanceGroup->add(&m_autoName);
} }