VR-Forces 4.7 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(int range);
103  virtual void addNewRangeEntry(PlotData& pd, int 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 
167 protected slots:
168  virtual void validateHitTableType(const DtObjectType&);
169  virtual void sectionDoubleClicked(int);
170  virtual void legendClicked(const QVariant&, int);
171  virtual void selectCurve(const QPointF&);
172  virtual void changeHitPercentage();
173  virtual void plotLineSelected();
174  virtual void addEntityType();
175  virtual void removeEntityType();
176  virtual void editEntityType();
177  virtual void changeHitTableType(const makVrf::DtEntityMapperKey&);
178  virtual void addRange();
179  virtual void editRange();
180  virtual void removeRange();
181  virtual void graphDataSelectionChanged();
182  virtual void hitTableChoiceChanged();
183  virtual void copyHitTable();
184  virtual void onAssignAsAttacker();
185  virtual void changeEquationType();
186  virtual void quickAddHitTableEntry();
187 
188 public:
189  QVBoxLayout* myMainLayout;
190  QwtPlot* myGraph;
194  QHBoxLayout* myTopLineLayout;
196  QVBoxLayout* myEntityTypesLayout;
198  QHBoxLayout* myButtonLayout;
199  QVBoxLayout* myTableLayout;
200  QHBoxLayout* myTableButtons;
209  QDoubleValidator* myRangeValidator;
210  QDoubleValidator* myCoefficientValidator;
212  QListWidget* myEntityTypes;
214 
219 
221 
222  QWidget* myButtonLine;
223 
224 protected:
225  typedef std::map<DtString, PlotData> RangeLines;
226  typedef std::map<DtString, QListWidgetItem*> ItemsMap;
227 
230 
233  std::map<DtString, DtDetectionPrbRangeCalcEntry*> myToPlot;
234  mutable double myMaximumRange;
235 
239 
240  QAbstractButton* myGraphDataButton;
242 
245 };

Document ID: Generated on Fri Apr 26 21:53:14 EDT 2019 from SVN revision 197883
Copyright © 2005-2019 VT MAK. All Rights Reserved (www.mak.com)