VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
uiHitProbabilityConfigurationWidget.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 2018 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() {};
49 
50  virtual void setMinimumHeight(int i) { myMinimumHeight = i; update(); };
51 
52  virtual QSize sizeHint() const { 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  DtUiHitProbabilityConfigurationProperties() : QWidget(nullptr), myPlotPenColor(Qt::black)
67  {
68  setObjectName("DtUiHitProbabilityConfigurationWidget");
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 public:
89 
92 
95 
97 
98  virtual bool hasRange(const DtEntityType&) const;
99  virtual void setPlotPenColor(const QColor&);
100 
101 protected:
102  virtual void createControls(QWidget* parent);
103  virtual void setFromParameters(const std::vector<DtReaderWriter*>& parentRw);
104  virtual void addCommonEntityTypeEntry(const DtEntityType&, const std::vector<DtRangeProbEntry*>&, bool plotCoefficientImmediately = false);
105  virtual void createNewRangeTableForSelectedItem(double maxRange, double hitChance);
106 
107  virtual void plot(const DtEntityType&, DtDetectionPrbRangeLookupEntry*);
108  virtual QVector<QPointF> updateDataFor(QLineEdit*, DtDetectionPrbRangeLookupEntry*, std::vector<int>& columns);
109  virtual void setupGraphDataFor(DtDetectionPrbRangeLookupEntry*, const DtString& key, int row = 0);
110  virtual QVector<QPointF> getPlotPoints(DtDetectionPrbRangeLookupEntry*, std::vector<int>& columns) const;
111 
112  virtual double getProbability(double range, DtRangeProbEntry* entry) const;
113 
114  virtual void plot(const DtEntityType&, DtDetectionPrbRangeCalcEntry*);
115  virtual QVector<QPointF> updateDataFor(QLineEdit*, DtDetectionPrbRangeCalcEntry*);
116  virtual void setupGraphDataFor(DtDetectionPrbRangeCalcEntry*, const DtString& key, int row = 0);
117  virtual QVector<QPointF> getPlotPoints(DtDetectionPrbRangeCalcEntry*) const;
118  virtual void addNewRangeEntry(double range);
119  virtual void addNewRangeEntry(PlotData& pd, double range, const DtString& name = "probability");
120 
121  virtual bool replotAllNotAtMaximumRange();
122  virtual QString newRangeWindowLabel() const;
123 
124  virtual double findMaximumRange() const;
125 
126  virtual void graphLineColorChanged(const QColor& oldColor, const QColor& newColor);
127 
128  virtual void addPlotLine(const DtString& key, const QString& displayName, const QVector<QPointF>& points, DtRangeProbEntry* entry);
129  virtual void addNewEntryBasedOffOf(const DtEntityType& existingType, const DtEntityType& newType);
130  virtual void addNewRangeTableEntry(const DtEntityType& newType);
131  virtual void addNewCoefficientTableEntry(const DtEntityType& newType);
132  virtual double minimumRange(DtDetectionPrbRangeLookupEntry* entry) const;
133  virtual double maximumRange(DtDetectionPrbRangeCalcEntry* entry) const;
134  virtual double maximumRange(DtDetectionPrbRangeLookupEntry* entry) const;
135  virtual void plotLineSelected(const DtString&);
136  virtual int selectedRow() const;
137 
138  virtual void createRangeTableFor(const DtEntityType&);
139 
140  virtual void setupGraphDataFor(const DtString& key, const PlotData&);
141  virtual bool addNewCoefficientEntry();
142  virtual void addNewCoefficientEntry(PlotData& pd);
143  virtual bool addNewRangeEntry();
144 
145  virtual bool eventFilter(QObject*, QEvent*);
146  virtual void cellEntered(QObject* e);
147 
148  virtual void moveRange();
149  virtual void wheelMove(double delta);
150 
151  virtual int changeRangeFor(const DtString& et, double fromRange, double toRange);
152  virtual int changeRangeFor(PlotData& pd, double fromRange, double toRange);
153 
154  virtual int changeRangeForColumn(const DtString& et, int column, double toRange);
155  virtual int changeRangeForColumn(PlotData& pd, int column, double toRange);
156 
157  virtual void removeRange(PlotData& pd, int currentColumn);
158 
159  virtual QListWidgetItem* selectedLine() const;
160 
161  virtual void createBasicCoefficientTable(const DtEntityType&);
162  virtual void createBasicRangeTable(const DtEntityType&);
163 
164  virtual void setupGraphDataFor(const DtString&);
165  virtual QString graphDataTitle() const;
166  virtual void setGraphDataTitle(const QString&);
167 
168  virtual void createChoiceRadioButtons();
169  virtual void clearGraphData();
170  virtual void clearAllData();
171  virtual void setupEntriesFrom(const std::vector<DtReaderWriter*>&);
172  virtual void processUiEvent(const DtUiElementEvent& e);
173  virtual void hitTableChanged(const QString& reason = "");
174  virtual void addGraphDataCanvas();
175  virtual void clearPlotLines();
176  virtual void clearEntityTypes();
177  virtual void changeEquation();
178 
179  virtual void setEnabled(bool);
180 
181  virtual void validateHitTableType(makVrf::DtEnumerationSelectionWidget*, const DtObjectType&);
182  virtual void replotGraph();
183  virtual bool multiLinesPerGraph() const;
184 
185 protected slots:
186  virtual void validateHitTableType(const DtObjectType&);
187  virtual void sectionDoubleClicked(int);
188  virtual void legendClicked(const QVariant&, int);
189  virtual void selectCurve(const QPointF&);
190  virtual void changeHitPercentage();
191  virtual void plotLineSelected();
192  virtual void addEntityType();
193  virtual void removeEntityType();
194  virtual void editEntityType();
195  virtual void changeHitTableType(const makVrf::DtEntityMapperKey&);
196  virtual void addRange();
197  virtual void editRange();
198  virtual void removeRange();
199  virtual void graphDataSelectionChanged();
200  virtual void hitTableChoiceChanged();
201  virtual void copyHitTable();
202  virtual void onAssignAsAttacker();
203  virtual void changeEquationType();
204  virtual void quickAddHitTableEntry();
205 
206 public:
207  QVBoxLayout* myMainLayout;
208  QwtPlot* myGraph;
212  QHBoxLayout* myTopLineLayout;
214  QVBoxLayout* myEntityTypesLayout;
216  QHBoxLayout* myButtonLayout;
217  QVBoxLayout* myTableLayout;
218  QHBoxLayout* myTableButtons;
227  QDoubleValidator* myRangeValidator;
228  QDoubleValidator* myCoefficientValidator;
230  QListWidget* myEntityTypes;
232 
237 
239 
240  QWidget* myButtonLine;
241 
242 protected:
243  typedef std::map<DtString, PlotData> RangeLines;
244  typedef std::map<DtString, QListWidgetItem*> ItemsMap;
245 
248 
251  std::map<DtString, DtDetectionPrbRangeCalcEntry*> myToPlot;
252  mutable double myMaximumRange;
253 
257 
258  QAbstractButton* myGraphDataButton;
260 
264 };
DtRangeProbEntry is an abstract class whose deriving classes will have one of the two forms of DtPrbD...
Definition: rangeProbEntry.h:19
Definition: entityMapperKey.h:23
RangeLines myRangeLines
Definition: uiHitProbabilityConfigurationWidget.h:249
QLabel * myComboLabel
Definition: uiHitProbabilityConfigurationWidget.h:229
QToolButton * myEditEntityType
Definition: uiHitProbabilityConfigurationWidget.h:222
DtPlotPicker * myPlotPicker
Definition: uiHitProbabilityConfigurationWidget.h:231
bool myIsRangeType
Definition: uiHitProbabilityConfigurationWidget.h:259
virtual void createControls(QWidget *parent)
If additional widgets or connections need to be made do it here. The parent is the myWidget member...
std::vector< DtRangeProbEntry * > entries
Definition: uiHitProbabilityConfigurationWidget.h:85
DtUiHitProbabilityConfigurationProperties myPlotPenColor
Definition: uiHitProbabilityConfigurationWidget.h:263
virtual void setFromParameters(DtReaderWriter *parentRw)
Calls setFromParameters with std::vector of parameter.
QRadioButton * myUseHitProbabilityTable
Definition: uiHitProbabilityConfigurationWidget.h:234
QWidget * myGraphDataCanvas
Definition: uiHitProbabilityConfigurationWidget.h:210
QToolButton * myAddEntityType
Definition: uiHitProbabilityConfigurationWidget.h:221
QDoubleValidator * myCoefficientValidator
Definition: uiHitProbabilityConfigurationWidget.h:228
bool myMoveRange
Definition: uiHitProbabilityConfigurationWidget.h:256
virtual void processUiEvent(const DtUiElementEvent &)
Process ui event. Default does nothing.
Definition: uiElement.h:234
Definition: uiHitProbabilityConfigurationWidget.h:60
bool myIgnoreNextMouseMove
Definition: uiHitProbabilityConfigurationWidget.h:255
QListWidget * myEntityTypes
Definition: uiHitProbabilityConfigurationWidget.h:230
QToolButton * myChangeToLookup
Definition: uiHitProbabilityConfigurationWidget.h:236
QToolButton * myRemoveEntityType
Definition: uiHitProbabilityConfigurationWidget.h:223
boost::function< DtUiElement *(makVrv::DtDe &)> CreatorFunction
Definition: uiElement.h:188
virtual QSize sizeHint() const
Definition: uiHitProbabilityConfigurationWidget.h:52
Definition: objectType.h:27
QVBoxLayout * myEntityTypesLayout
Definition: uiHitProbabilityConfigurationWidget.h:214
makVrv::DtSignalConnectionManager myGraphLineColorConnections
Definition: uiHitProbabilityConfigurationWidget.h:261
int mySelectedRange
Definition: uiHitProbabilityConfigurationWidget.h:247
double myMaximumRange
Definition: uiHitProbabilityConfigurationWidget.h:252
QColor color
Definition: uiHitProbabilityConfigurationWidget.h:84
QRadioButton * myUseSimulatedMissileGuidance
Definition: uiHitProbabilityConfigurationWidget.h:233
QAbstractButton * myGraphDataButton
Definition: uiHitProbabilityConfigurationWidget.h:258
std::map< DtString, QListWidgetItem * > ItemsMap
Definition: uiHitProbabilityConfigurationWidget.h:244
std::map< DtString, PlotData > RangeLines
Definition: uiHitProbabilityConfigurationWidget.h:243
virtual void setMinimumHeight(int i)
Definition: uiHitProbabilityConfigurationWidget.h:50
QwtPlot * myGraph
Definition: uiHitProbabilityConfigurationWidget.h:208
Add the ability to set decimals to cursor text.
Definition: plotPicker.h:10
QWidget * myEntityTypeButtons
Definition: uiHitProbabilityConfigurationWidget.h:215
QToolButton * myCopyHitTable
Definition: uiHitProbabilityConfigurationWidget.h:219
QHBoxLayout * myTableButtons
Definition: uiHitProbabilityConfigurationWidget.h:218
QToolButton * myEditRange
Definition: uiHitProbabilityConfigurationWidget.h:225
QToolButton * myRemoveRange
Definition: uiHitProbabilityConfigurationWidget.h:226
ItemsMap myItemsMap
Definition: uiHitProbabilityConfigurationWidget.h:250
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
DtDetectionPrbRangeCalcEntry is the derived form of DtRangeProbEntry that has a DtPrbCoefficientsDete...
Definition: detectionPrbRangeCalcEntry.h:23
QwtPlotCurve * curve
Definition: uiHitProbabilityConfigurationWidget.h:81
virtual ~DtSizedTableWidget()
Definition: uiHitProbabilityConfigurationWidget.h:48
QVBoxLayout * myMainLayout
Definition: uiHitProbabilityConfigurationWidget.h:207
DtUiHitProbabilityConfigurationProperties()
Definition: uiHitProbabilityConfigurationWidget.h:66
bool myHitTableOptional
Definition: uiHitProbabilityConfigurationWidget.h:262
Definition: uiHitProbabilityConfigurationWidget.h:74
QHBoxLayout * myTopLineLayout
Definition: uiHitProbabilityConfigurationWidget.h:212
Description: Readable, Writable DtReal (double)
Definition: rwReal.h:27
virtual void setEnabled(bool)
If this item is not enabled it cannot be modified.
QVBoxLayout * myTableLayout
Definition: uiHitProbabilityConfigurationWidget.h:217
DtString myCurrentlySelected
Definition: uiHitProbabilityConfigurationWidget.h:246
Base class to provide boost signal/slot management.
Definition: uiHitProbabilityConfigurationWidget.h:79
QPushButton * myCreateHitTableEntry
Definition: uiHitProbabilityConfigurationWidget.h:238
QWidget * myEntityTypesCanvas
Definition: uiHitProbabilityConfigurationWidget.h:213
QToolButton * myAssignAsAttacker
Definition: uiHitProbabilityConfigurationWidget.h:220
Definition: uiHitProbabilityConfigurationWidget.h:44
QDoubleValidator * myRangeValidator
Definition: uiHitProbabilityConfigurationWidget.h:227
QLabel * myGraphDataLabel
Definition: uiHitProbabilityConfigurationWidget.h:209
QToolButton * myChangeToCoefficient
Definition: uiHitProbabilityConfigurationWidget.h:235
The DtUiElement class is the base for which all UI elements are defined. If you wish to create a new ...
Definition: uiElement.h:97
QColor myPlotPenColor
Definition: uiHitProbabilityConfigurationWidget.h:71
bool myCanMoveWithMouse
Definition: uiHitProbabilityConfigurationWidget.h:254
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:72
QHBoxLayout * myButtonLayout
Definition: uiHitProbabilityConfigurationWidget.h:216
QVector< QPointF > points
Definition: uiHitProbabilityConfigurationWidget.h:82
QTableWidget * myGraphData
Definition: uiHitProbabilityConfigurationWidget.h:211
DtDetectionPrbRangeLookupEntry is the derived form of DtRangeProbEntry that has a DtPrbStepFunctionDe...
Definition: detectionPrbRangeLookupEntry.h:23
std::vector< int > columns
Definition: uiHitProbabilityConfigurationWidget.h:83
#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:183
DtSizedTableWidget(QWidget *p)
Definition: uiHitProbabilityConfigurationWidget.h:47
QToolButton * myAddRange
Definition: uiHitProbabilityConfigurationWidget.h:224
QWidget * myButtonLine
Definition: uiHitProbabilityConfigurationWidget.h:240
Widget that will allow the user to select enumerations from pulldowns.
Definition: enumerationSelectionWidget.h:68
std::map< DtString, DtDetectionPrbRangeCalcEntry * > myToPlot
Definition: uiHitProbabilityConfigurationWidget.h:251

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)