VR-Forces 5.0.2 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 
64 protected:
65  struct PlotData
66  {
67  QwtPlotCurve* curve;
68  QVector<QPointF> points;
69  std::vector<int> columns;
70  QColor color;
71  std::vector<DtRangeProbEntry*> entries;
72  };
73 
74 public:
75 
78 
81 
83 
84  virtual bool hasRange(const DtEntityType&) const;
85 
86 protected:
87  virtual void createControls(QWidget* parent);
88  virtual void setFromParameters(const std::vector<DtReaderWriter*>& parentRw);
89  virtual void addCommonEntityTypeEntry(const DtEntityType&, const std::vector<DtRangeProbEntry*>&, bool plotCoefficientImmediately = false);
90  virtual void createNewRangeTableForSelectedItem(double maxRange, double hitChance);
91 
92  virtual void plot(const DtEntityType&, DtDetectionPrbRangeLookupEntry*);
93  virtual QVector<QPointF> updateDataFor(QLineEdit*, DtDetectionPrbRangeLookupEntry*, std::vector<int>& columns);
94  virtual void setupGraphDataFor(DtDetectionPrbRangeLookupEntry*, const DtString& key, int row = 0);
95  virtual QVector<QPointF> getPlotPoints(DtDetectionPrbRangeLookupEntry*, std::vector<int>& columns) const;
96 
97  virtual double getProbability(double range, DtRangeProbEntry* entry) const;
98 
99  virtual void plot(const DtEntityType&, DtDetectionPrbRangeCalcEntry*);
100  virtual QVector<QPointF> updateDataFor(QLineEdit*, DtDetectionPrbRangeCalcEntry*);
101  virtual void setupGraphDataFor(DtDetectionPrbRangeCalcEntry*, const DtString& key, int row = 0);
102  virtual QVector<QPointF> getPlotPoints(DtDetectionPrbRangeCalcEntry*) const;
103  virtual void addNewRangeEntry(double range);
104  virtual void addNewRangeEntry(PlotData& pd, double range, const DtString& name = "probability");
105 
106  virtual bool replotAllNotAtMaximumRange();
107  virtual QString newRangeWindowLabel() const;
108 
109  virtual double findMaximumRange() const;
110 
111  virtual void graphLineColorChanged(const QColor& oldColor, const QColor& newColor);
112 
113  virtual void addPlotLine(const DtString& key, const QString& displayName, const QVector<QPointF>& points, DtRangeProbEntry* entry);
114  virtual void addNewEntryBasedOffOf(const DtEntityType& existingType, const DtEntityType& newType);
115  virtual void addNewRangeTableEntry(const DtEntityType& newType);
116  virtual void addNewCoefficientTableEntry(const DtEntityType& newType);
117  virtual double minimumRange(DtDetectionPrbRangeLookupEntry* entry) const;
118  virtual double maximumRange(DtDetectionPrbRangeCalcEntry* entry) const;
119  virtual double maximumRange(DtDetectionPrbRangeLookupEntry* entry) const;
120  virtual void plotLineSelected(const DtString&);
121  virtual int selectedRow() const;
122 
123  virtual void createRangeTableFor(const DtEntityType&);
124 
125  virtual void setupGraphDataFor(const DtString& key, const PlotData&);
126  virtual bool addNewCoefficientEntry();
127  virtual void addNewCoefficientEntry(PlotData& pd);
128  virtual bool addNewRangeEntry();
129 
130  virtual bool eventFilter(QObject*, QEvent*);
131  virtual void cellEntered(QObject* e);
132 
133  virtual void moveRange();
134  virtual void wheelMove(double delta);
135 
136  virtual int changeRangeFor(const DtString& et, double fromRange, double toRange);
137  virtual int changeRangeFor(PlotData& pd, double fromRange, double toRange);
138 
139  virtual int changeRangeForColumn(const DtString& et, int column, double toRange);
140  virtual int changeRangeForColumn(PlotData& pd, int column, double toRange);
141 
142  virtual void removeRange(PlotData& pd, int currentColumn);
143 
144  virtual QListWidgetItem* selectedLine() const;
145 
146  virtual void createBasicCoefficientTable(const DtEntityType&);
147  virtual void createBasicRangeTable(const DtEntityType&);
148 
149  virtual void setupGraphDataFor(const DtString&);
150  virtual QString graphDataTitle() const;
151  virtual void setGraphDataTitle(const QString&);
152 
153  virtual void createChoiceRadioButtons();
154  virtual void clearGraphData();
155  virtual void clearAllData();
156  virtual void setupEntriesFrom(const std::vector<DtReaderWriter*>&);
157  virtual void processUiEvent(const DtUiElementEvent& e);
158  virtual void hitTableChanged(const QString& reason = "");
159  virtual void addGraphDataCanvas();
160  virtual void clearPlotLines();
161  virtual void clearEntityTypes();
162  virtual void changeEquation();
163 
164  virtual void setEnabled(bool);
165 
166  virtual void validateHitTableType(makVrf::DtEnumerationSelectionWidget*, const DtObjectType&);
167  virtual void replotGraph();
168  virtual bool multiLinesPerGraph() const;
169 
170 protected slots:
171  virtual void validateHitTableType(const DtObjectType&);
172  virtual void sectionDoubleClicked(int);
173  virtual void legendClicked(const QVariant&, int);
174  virtual void selectCurve(const QPointF&);
175  virtual void changeHitPercentage();
176  virtual void plotLineSelected();
177  virtual void addEntityType();
178  virtual void removeEntityType();
179  virtual void editEntityType();
180  virtual void changeHitTableType(const makVrf::DtEntityMapperKey&);
181  virtual void addRange();
182  virtual void editRange();
183  virtual void removeRange();
184  virtual void graphDataSelectionChanged();
185  virtual void hitTableChoiceChanged();
186  virtual void copyHitTable();
187  virtual void onAssignAsAttacker();
188  virtual void changeEquationType();
189  virtual void quickAddHitTableEntry();
190 
191 public:
192  QVBoxLayout* myMainLayout;
193  QwtPlot* myGraph;
197  QHBoxLayout* myTopLineLayout;
199  QVBoxLayout* myEntityTypesLayout;
201  QHBoxLayout* myButtonLayout;
202  QVBoxLayout* myTableLayout;
203  QHBoxLayout* myTableButtons;
212  QDoubleValidator* myRangeValidator;
213  QDoubleValidator* myCoefficientValidator;
215  QListWidget* myEntityTypes;
217 
222 
224 
225  QWidget* myButtonLine;
226 
227 protected:
228  typedef std::map<DtString, PlotData> RangeLines;
229  typedef std::map<DtString, QListWidgetItem*> ItemsMap;
230 
233 
236  std::map<DtString, DtDetectionPrbRangeCalcEntry*> myToPlot;
237  mutable double myMaximumRange;
238 
242 
243  QAbstractButton* myGraphDataButton;
245 
248 };
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:234
QLabel * myComboLabel
Definition: uiHitProbabilityConfigurationWidget.h:214
QToolButton * myEditEntityType
Definition: uiHitProbabilityConfigurationWidget.h:207
DtPlotPicker * myPlotPicker
Definition: uiHitProbabilityConfigurationWidget.h:216
bool myIsRangeType
Definition: uiHitProbabilityConfigurationWidget.h:244
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:71
virtual void setFromParameters(DtReaderWriter *parentRw)
Calls setFromParameters with std::vector of parameter.
QRadioButton * myUseHitProbabilityTable
Definition: uiHitProbabilityConfigurationWidget.h:219
QWidget * myGraphDataCanvas
Definition: uiHitProbabilityConfigurationWidget.h:195
QToolButton * myAddEntityType
Definition: uiHitProbabilityConfigurationWidget.h:206
QDoubleValidator * myCoefficientValidator
Definition: uiHitProbabilityConfigurationWidget.h:213
bool myMoveRange
Definition: uiHitProbabilityConfigurationWidget.h:241
virtual void processUiEvent(const DtUiElementEvent &)
Process ui event. Default does nothing.
Definition: uiElement.h:231
bool myIgnoreNextMouseMove
Definition: uiHitProbabilityConfigurationWidget.h:240
QListWidget * myEntityTypes
Definition: uiHitProbabilityConfigurationWidget.h:215
QToolButton * myChangeToLookup
Definition: uiHitProbabilityConfigurationWidget.h:221
QToolButton * myRemoveEntityType
Definition: uiHitProbabilityConfigurationWidget.h:208
boost::function< DtUiElement *(makVrv::DtDe &)> CreatorFunction
Definition: uiElement.h:185
virtual QSize sizeHint() const
Definition: uiHitProbabilityConfigurationWidget.h:52
Definition: objectType.h:27
QVBoxLayout * myEntityTypesLayout
Definition: uiHitProbabilityConfigurationWidget.h:199
makVrv::DtSignalConnectionManager myGraphLineColorConnections
Definition: uiHitProbabilityConfigurationWidget.h:246
int mySelectedRange
Definition: uiHitProbabilityConfigurationWidget.h:232
double myMaximumRange
Definition: uiHitProbabilityConfigurationWidget.h:237
QColor color
Definition: uiHitProbabilityConfigurationWidget.h:70
QRadioButton * myUseSimulatedMissileGuidance
Definition: uiHitProbabilityConfigurationWidget.h:218
QAbstractButton * myGraphDataButton
Definition: uiHitProbabilityConfigurationWidget.h:243
std::map< DtString, QListWidgetItem * > ItemsMap
Definition: uiHitProbabilityConfigurationWidget.h:229
std::map< DtString, PlotData > RangeLines
Definition: uiHitProbabilityConfigurationWidget.h:228
virtual void setMinimumHeight(int i)
Definition: uiHitProbabilityConfigurationWidget.h:50
QwtPlot * myGraph
Definition: uiHitProbabilityConfigurationWidget.h:193
Add the ability to set decimals to cursor text.
Definition: plotPicker.h:10
QWidget * myEntityTypeButtons
Definition: uiHitProbabilityConfigurationWidget.h:200
QToolButton * myCopyHitTable
Definition: uiHitProbabilityConfigurationWidget.h:204
QHBoxLayout * myTableButtons
Definition: uiHitProbabilityConfigurationWidget.h:203
QToolButton * myEditRange
Definition: uiHitProbabilityConfigurationWidget.h:210
QToolButton * myRemoveRange
Definition: uiHitProbabilityConfigurationWidget.h:211
ItemsMap myItemsMap
Definition: uiHitProbabilityConfigurationWidget.h:235
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:67
virtual ~DtSizedTableWidget()
Definition: uiHitProbabilityConfigurationWidget.h:48
QVBoxLayout * myMainLayout
Definition: uiHitProbabilityConfigurationWidget.h:192
bool myHitTableOptional
Definition: uiHitProbabilityConfigurationWidget.h:247
Definition: uiHitProbabilityConfigurationWidget.h:60
QHBoxLayout * myTopLineLayout
Definition: uiHitProbabilityConfigurationWidget.h:197
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:202
DtString myCurrentlySelected
Definition: uiHitProbabilityConfigurationWidget.h:231
Base class to provide boost signal/slot management.
Definition: uiHitProbabilityConfigurationWidget.h:65
QPushButton * myCreateHitTableEntry
Definition: uiHitProbabilityConfigurationWidget.h:223
QWidget * myEntityTypesCanvas
Definition: uiHitProbabilityConfigurationWidget.h:198
QToolButton * myAssignAsAttacker
Definition: uiHitProbabilityConfigurationWidget.h:205
Definition: uiHitProbabilityConfigurationWidget.h:44
QDoubleValidator * myRangeValidator
Definition: uiHitProbabilityConfigurationWidget.h:212
QLabel * myGraphDataLabel
Definition: uiHitProbabilityConfigurationWidget.h:194
QToolButton * myChangeToCoefficient
Definition: uiHitProbabilityConfigurationWidget.h:220
The DtUiElement class is the base for which all UI elements are defined. If you wish to create a new ...
Definition: uiElement.h:97
bool myCanMoveWithMouse
Definition: uiHitProbabilityConfigurationWidget.h:239
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:70
QHBoxLayout * myButtonLayout
Definition: uiHitProbabilityConfigurationWidget.h:201
QVector< QPointF > points
Definition: uiHitProbabilityConfigurationWidget.h:68
QTableWidget * myGraphData
Definition: uiHitProbabilityConfigurationWidget.h:196
DtDetectionPrbRangeLookupEntry is the derived form of DtRangeProbEntry that has a DtPrbStepFunctionDe...
Definition: detectionPrbRangeLookupEntry.h:23
std::vector< int > columns
Definition: uiHitProbabilityConfigurationWidget.h:69
#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:180
DtSizedTableWidget(QWidget *p)
Definition: uiHitProbabilityConfigurationWidget.h:47
QToolButton * myAddRange
Definition: uiHitProbabilityConfigurationWidget.h:209
QWidget * myButtonLine
Definition: uiHitProbabilityConfigurationWidget.h:225
Widget that will allow the user to select enumerations from pulldowns.
Definition: enumerationSelectionWidget.h:68
std::map< DtString, DtDetectionPrbRangeCalcEntry * > myToPlot
Definition: uiHitProbabilityConfigurationWidget.h:236

Document ID: Generated on Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)