VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
uiGraphDataWidget.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 2024 MaK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************/
5 
6 #pragma once
7 
12 
13 #include <QtGui/QColor>
14 #include <QtCore/QPointF>
15 #include <QtCore/QVector>
16 #include <QtWidgets/QTableWidget>
17 
18 class DtPlotPicker;
19 class QwtPlot;
20 class QwtPlotCurve;
21 class QFrame;
22 class QToolButton;
23 class QVBoxLayout;
24 class QHBoxLayout;
25 class DtRangeProbEntry;
26 class DtEntityType;
27 class QListWidgetItem;
28 class QDoubleValidator;
29 class DtRwReal;
30 class QLabel;
31 class QListWidget;
32 class QLineEdit;
35 class QAbstractButton;
36 class QRadioButton;
37 class QPushButton;
38 
39 namespace makVrf
40 {
41  class DtEnumerationSelectionWidget;
42 }
43 
45 {
46 public:
47  DtSizedTableWidget(QWidget* p) : QTableWidget(p), myMinimumHeight(64) { setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); };
48  virtual ~DtSizedTableWidget() override {};
49 
50  virtual void setMinimumHeight(int i) { myMinimumHeight = i; update(); };
51 
52  virtual QSize sizeHint() const override { return QSize(QTableWidget::sizeHint().width(), myMinimumHeight); };
53 
54 
55 
56 protected:
57  int myMinimumHeight;
58 };
59 
61 {
62  Q_OBJECT
63  Q_PROPERTY(QColor PlotPenColor MEMBER myPlotPenColor USER true)
64 
65 public:
66  DtUiGraphDataWidgetProperties() : QWidget(nullptr), myPlotPenColor(Qt::black)
67  {
68  setObjectName("DtUiGraphDataWidget");
69  }
70 
72 };
73 
75 {
76  Q_OBJECT
77 
78 protected:
79  struct PlotData
80  {
81  QwtPlotCurve* curve;
82  QVector<QPointF> points;
83  std::vector<int> columns;
84  QColor color;
85  std::vector<DtRangeProbEntry*> entries;
86  };
87 
88  struct ModifiedData
89  {
92  double oldData;
93  double newData;
94  };
95 
96 public:
97 
100 
102  virtual ~DtUiGraphDataWidget() override;
103 
109  virtual void initControls(QWidget* widget,bool displayMultiRow = false,bool useCustomValues = false,unsigned int startingColorIndex = 0);
110  virtual bool hasRange(const DtString&) const;
111  virtual bool isRangeType() const;
112  virtual void setPlotPenColor(const QColor&);
113  virtual void createNewRangeTableForSelectedItem(double maxRange, double value);
114  virtual void createBasicCoefficientTable(const DtString&);
115  virtual void plotLineSelected(const DtString&);
117  virtual void plotRemainingItems();
118  virtual void replotGraph();
119  virtual void resetGraphData();
120  virtual void updateDataKey(const QString& displayName, const DtString& key);
121  virtual void removeDataEntry(const DtString& key);
122  virtual void addCommonEntry(const DtString&, const std::vector<DtRangeProbEntry*>&,QString & displayName, bool plotCoefficientImmediately = false);
123  virtual DtRangeProbEntry* getEntry(const DtString& key);
124  virtual DtRangeProbEntry* cloneEntry(const DtString& existingKey);
125 
126  virtual void clearGraphData();
127  virtual void clearAllData();
128  virtual void clearPlotLines();
129  virtual void clearDataTypes();
130  virtual void setupEntriesFrom(const std::vector<DtReaderWriter*>&);
131  virtual bool replotAllNotAtMaximumRange();
133  virtual void setupGraphDataFor(const DtString&);
135  virtual void setupGraphDataFor();
136  virtual QString graphDataTitle() const;
137  virtual void setGraphDataTitle(const QString&);
138  virtual void plot(const DtString&, const QString& displayName, DtDetectionPrbRangeLookupEntry*);
139  virtual void plot(const DtString&, const QString& displayName, DtDetectionPrbRangeCalcEntry*);
140 
141 protected:
142  virtual void createControls(QWidget* parent) override;
143  virtual void sendUpdate();
144  virtual void setFromParameters(const std::vector<DtReaderWriter*>& parentRw) override;
145 
146  virtual QVector<QPointF> updateDataFor(QLineEdit*, DtDetectionPrbRangeLookupEntry*, std::vector<int>& columns);
147  virtual void setupGraphDataFor(DtDetectionPrbRangeLookupEntry*, const DtString& key, int row = 0);
148  virtual QVector<QPointF> getPlotPoints(DtDetectionPrbRangeLookupEntry*, std::vector<int>& columns) const;
149 
150  virtual double getProbability(double range, DtRangeProbEntry* entry) const;
151 
152  virtual QVector<QPointF> updateDataFor(QLineEdit*, DtDetectionPrbRangeCalcEntry*);
153  virtual void setupGraphDataFor(DtDetectionPrbRangeCalcEntry*, const DtString& key, int row = 0);
154  virtual QVector<QPointF> getPlotPoints(DtDetectionPrbRangeCalcEntry*) const;
155  virtual void addNewRangeEntry(double range);
156  virtual void addNewRangeEntry(PlotData& pd, double range, const DtString& name = "probability");
157 
158 
159  virtual QString newRangeWindowLabel() const;
160 
161  virtual double findMaximumRange() const;
162 
163  virtual void graphLineColorChanged(const QColor& oldColor, const QColor& newColor);
164 
165  virtual void addPlotLine(const DtString& key, const QString& displayName, const QVector<QPointF>& points, DtRangeProbEntry* entry);
166 
167  virtual double minimumRange(DtDetectionPrbRangeLookupEntry* entry) const;
168  virtual double maximumRange(DtDetectionPrbRangeCalcEntry* entry) const;
169  virtual double maximumRange(DtDetectionPrbRangeLookupEntry* entry) const;
170 
171  virtual int selectedRow() const;
172 
173  virtual void setupGraphDataFor(const DtString& key, const PlotData&);
174  virtual bool addNewCoefficientEntry();
175  virtual void addNewCoefficientEntry(PlotData& pd);
176  virtual bool addNewRangeEntry();
177 
178  virtual bool eventFilter(QObject*, QEvent*) override;
179  virtual void cellEntered(QObject* e);
180 
181  virtual void moveRange();
182  virtual void wheelMove(double delta);
183 
184  virtual int changeRangeFor(const DtString& et, double fromRange, double toRange);
185  virtual int changeRangeFor(PlotData& pd, double fromRange, double toRange);
186 
187  virtual int changeRangeForColumn(const DtString& et, int column, double toRange);
188  virtual int changeRangeForColumn(PlotData& pd, int column, double toRange);
189 
190  virtual void removeRange(PlotData& pd, int currentColumn);
191 
192  virtual QListWidgetItem* selectedLine() const;
193 
194  virtual void addGraphDataCanvas();
195 
196  virtual void setEnabled(bool) override;
197 
198  virtual bool multiLinesPerGraph() const;
199 
200 signals:
201  void rangeChanged(DtString,double,double);
202  void dataChanged(DtString,double,double);
203  void graphDataChanged(const DtUiElementEvent& e);
204  void switchEquation();
205 
206 protected slots:
207  virtual void plotLineSelected();
208  virtual void sectionDoubleClicked(int);
209  virtual void legendClicked(const QVariant&, int);
210  virtual void selectCurve(const QPointF&);
211  virtual void changeDataValue();
212 
213  virtual void addRange();
214  virtual void editRange();
215  virtual void removeRange();
216  virtual void graphDataSelectionChanged();
217  virtual void changeEquationType();
218 
219 public:
220  QVBoxLayout* myMainLayout;
221  QwtPlot* myGraph;
225  QHBoxLayout* myTopLineLayout;
226  QHBoxLayout* myButtonLayout;
227  QVBoxLayout* myTableLayout;
228  QHBoxLayout* myTableButtons;
232  QDoubleValidator* myRangeValidator;
233  QDoubleValidator* myCoefficientValidator;
235  QListWidget* myDataTypes;
237 
240 
241  QWidget* myButtonLine;
242 
243 protected:
245  typedef std::map<DtString, PlotData> RangeLines;
247  typedef std::map<DtString, QListWidgetItem*> ItemsMap;
248 
251 
257 
262 
265  unsigned int myStartingColorIndex;
266 
269  std::map<DtString, DtDetectionPrbRangeCalcEntry*> myToPlot;
270  mutable double myMaximumRange;
271 
275 
276  QAbstractButton* myGraphDataButton;
278 
281 };
282 #pragma once
DtRangeProbEntry is an abstract class whose deriving classes will have one of the two forms of DtPrbD...
Definition: rangeProbEntry.h:19
RangeLines myRangeLines
Definition: uiGraphDataWidget.h:267
QTableWidget * myGraphData
Definition: uiGraphDataWidget.h:224
QToolButton * myChangeToLookup
Definition: uiGraphDataWidget.h:239
virtual ~DtSizedTableWidget() override
Definition: uiGraphDataWidget.h:48
QToolButton * myRemoveRange
Definition: uiGraphDataWidget.h:231
DtPlotPicker * myPlotPicker
Definition: uiGraphDataWidget.h:236
makVrv::DtSignalConnectionManager myGraphLineColorConnections
Definition: uiGraphDataWidget.h:279
virtual void createControls(QWidget *parent)
If additional widgets or connections need to be made do it here. The parent is the myWidget member...
Definition: uiGraphDataWidget.h:79
QToolButton * myAddRange
Definition: uiGraphDataWidget.h:229
virtual void setFromParameters(DtReaderWriter *parentRw)
Calls setFromParameters with std::vector of parameter.
std::vector< DtRangeProbEntry * > entries
Definition: uiGraphDataWidget.h:85
DtUiGraphDataWidgetProperties()
Definition: uiGraphDataWidget.h:66
bool isColumnData
Definition: uiGraphDataWidget.h:91
QVector< QPointF > points
Definition: uiGraphDataWidget.h:82
bool myUseCustomValues
Set this to true if you do not want to display values as a percentage Will display value unmodified...
Definition: uiGraphDataWidget.h:261
bool myDisplayMultiRow
Display multi rows of the graph data table–used for damage widget Default is false most cases you onl...
Definition: uiGraphDataWidget.h:256
ItemsMap myItemsMap
Definition: uiGraphDataWidget.h:268
boost::function< DtUiElement *(makVrv::DtDe &)> CreatorFunction
Definition: uiElement.h:190
QDoubleValidator * myCoefficientValidator
Definition: uiGraphDataWidget.h:233
QAbstractButton * myGraphDataButton
Definition: uiGraphDataWidget.h:276
QWidget * myGraphDataCanvas
Definition: uiGraphDataWidget.h:223
QLabel * myComboLabel
Definition: uiGraphDataWidget.h:234
double oldData
Definition: uiGraphDataWidget.h:92
QLabel * myGraphDataLabel
Definition: uiGraphDataWidget.h:222
QListWidget * myDataTypes
Definition: uiGraphDataWidget.h:235
QHBoxLayout * myTopLineLayout
Definition: uiGraphDataWidget.h:225
QColor color
Definition: uiGraphDataWidget.h:84
bool myCanMoveWithMouse
Definition: uiGraphDataWidget.h:272
QHBoxLayout * myTableButtons
Definition: uiGraphDataWidget.h:228
virtual void setMinimumHeight(int i)
Definition: uiGraphDataWidget.h:50
Add the ability to set decimals to cursor text.
Definition: plotPicker.h:10
QwtPlot * myGraph
Definition: uiGraphDataWidget.h:221
Definition: uiGraphDataWidget.h:60
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
QColor myPlotPenColor
Definition: uiGraphDataWidget.h:71
DtDetectionPrbRangeCalcEntry is the derived form of DtRangeProbEntry that has a DtPrbCoefficientsDete...
Definition: detectionPrbRangeCalcEntry.h:23
bool myIsRangeType
Definition: uiGraphDataWidget.h:277
QHBoxLayout * myButtonLayout
Definition: uiGraphDataWidget.h:226
std::map< DtString, PlotData > RangeLines
Lines drawn on the graph.
Definition: uiGraphDataWidget.h:245
QVBoxLayout * myMainLayout
Definition: uiGraphDataWidget.h:220
QToolButton * myChangeToCoefficient
Definition: uiGraphDataWidget.h:238
int mySelectedRange
Definition: uiGraphDataWidget.h:253
double newData
Definition: uiGraphDataWidget.h:93
Description: Readable, Writable DtReal (double)
Definition: rwReal.h:27
virtual void setEnabled(bool)
If this item is not enabled it cannot be modified.
std::map< DtString, DtDetectionPrbRangeCalcEntry * > myToPlot
Definition: uiGraphDataWidget.h:269
QVBoxLayout * myTableLayout
Definition: uiGraphDataWidget.h:227
virtual QSize sizeHint() const override
Definition: uiGraphDataWidget.h:52
Base class to provide boost signal/slot management.
DtString myCurrentlySelected
Definition: uiGraphDataWidget.h:252
DtUiGraphDataWidgetProperties myPlotPenColor
Definition: uiGraphDataWidget.h:280
Definition: uiGraphDataWidget.h:44
The DtUiElement class is the base for which all UI elements are defined. If you wish to create a new ...
Definition: uiElement.h:97
unsigned int myStartingColorIndex
Set this to something higher than zero to allow for differnt graphs to use different colors...
Definition: uiGraphDataWidget.h:265
QwtPlotCurve * curve
Definition: uiGraphDataWidget.h:81
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:76
double myMaximumRange
Definition: uiGraphDataWidget.h:270
ModifiedData myModifiedData
Keeps track of changes when user is moving the plot line.
Definition: uiGraphDataWidget.h:250
std::vector< int > columns
Definition: uiGraphDataWidget.h:83
QDoubleValidator * myRangeValidator
Definition: uiGraphDataWidget.h:232
QWidget * myButtonLine
Definition: uiGraphDataWidget.h:241
QToolButton * myEditRange
Definition: uiGraphDataWidget.h:230
bool myIgnoreNextMouseMove
Definition: uiGraphDataWidget.h:273
Definition: uiGraphDataWidget.h:74
DtDetectionPrbRangeLookupEntry is the derived form of DtRangeProbEntry that has a DtPrbStepFunctionDe...
Definition: detectionPrbRangeLookupEntry.h:23
std::map< DtString, QListWidgetItem * > ItemsMap
graph data table row associated with range line
Definition: uiGraphDataWidget.h:247
DtString dataKey
Definition: uiGraphDataWidget.h:90
#define DT_DLL_simulationObjectEditorimpl
This file is used to determine how to build.
Definition: simulationObjectEditorImplDefines.h:33
Base class of the ui element class chain. Properties available through designer for all ui elements a...
Definition: uiElement.h:185
DtSizedTableWidget(QWidget *p)
Definition: uiGraphDataWidget.h:47
bool myMoveRange
Definition: uiGraphDataWidget.h:274
Definition: uiGraphDataWidget.h:88

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)