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

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)