1 | #include "DefaultProjectorWidget.h" |
---|
2 | |
---|
3 | |
---|
4 | /** |
---|
5 | * Format the value in a QString. |
---|
6 | * |
---|
7 | * This procedure is implemented for convenience, because it was used in the original Projection Designer. |
---|
8 | * |
---|
9 | * @param value The value to format. |
---|
10 | * |
---|
11 | * @return The formatted QString. |
---|
12 | * |
---|
13 | */ |
---|
14 | static QString formatValue(double value) |
---|
15 | { |
---|
16 | return QString::number(value, 'f', 4); |
---|
17 | } |
---|
18 | |
---|
19 | |
---|
20 | /** |
---|
21 | * Default constructor fot the DefaultProjectorWidget. |
---|
22 | * |
---|
23 | */ |
---|
24 | DefaultProjectorWidget::DefaultProjectorWidget(ProjectorInterface *plugin, QWidget* pParent, Qt::WFlags flag): ProjectorWidget(plugin, pParent, flag), m_data(plugin) |
---|
25 | { |
---|
26 | setupUi (this); |
---|
27 | updateGUI(); |
---|
28 | } |
---|
29 | |
---|
30 | |
---|
31 | /** |
---|
32 | * Destructor fot the DefaultProjectorWidget. |
---|
33 | * |
---|
34 | */ |
---|
35 | DefaultProjectorWidget::~DefaultProjectorWidget() |
---|
36 | { |
---|
37 | } |
---|
38 | |
---|
39 | |
---|
40 | /** |
---|
41 | * Updates the widget. |
---|
42 | * |
---|
43 | * This method can be used it two ways: to force a refresh or to update the |
---|
44 | * data of the widget. |
---|
45 | * |
---|
46 | * @param data A const pointer on the data to be used for the widget. This |
---|
47 | * data will be duplicated in the widget. If data is NULL, the |
---|
48 | * current data are used and the refresh is forced. |
---|
49 | * |
---|
50 | */ |
---|
51 | void DefaultProjectorWidget::updateGUI(const ProjectorData* data) |
---|
52 | { |
---|
53 | if (NULL!=data) m_data.copy_from(*data); |
---|
54 | fovEdit->setText(formatValue(m_data.fov())); |
---|
55 | aspectRatioEdit->setText(QString::number(m_data.aspectRatio(), 'g')); |
---|
56 | nearEdit->setText(QString::number(m_data.nearDist(), 'g')); |
---|
57 | farEdit->setText(QString::number(m_data.farDist(), 'g')); |
---|
58 | offaxisXEdit->setText(formatValue(m_data.offaxisX())); |
---|
59 | offaxisYEdit->setText(formatValue(m_data.offaxisY())); |
---|
60 | } |
---|
61 | |
---|
62 | |
---|
63 | /** |
---|
64 | * Clears the fields of the widget. |
---|
65 | * |
---|
66 | * This method is typically used when the widget will be disabled (if no |
---|
67 | * channel is specified in Projection Designer, the widget is visible but |
---|
68 | * disabled: fields must be empty). |
---|
69 | * |
---|
70 | */ |
---|
71 | void DefaultProjectorWidget::clear(void) |
---|
72 | { |
---|
73 | fovEdit->setText(""); |
---|
74 | aspectRatioEdit->setText(""); |
---|
75 | nearEdit->setText(""); |
---|
76 | farEdit->setText(""); |
---|
77 | offaxisXEdit->setText(""); |
---|
78 | offaxisYEdit->setText(""); |
---|
79 | } |
---|
80 | |
---|
81 | |
---|
82 | /** |
---|
83 | * [private slot] Called when the Fov changes. |
---|
84 | * |
---|
85 | */ |
---|
86 | void DefaultProjectorWidget::on_fovEdit_editingFinished() |
---|
87 | { |
---|
88 | m_data.setFov(fovEdit->text().toFloat()); |
---|
89 | updateGUI(); |
---|
90 | emit dataChanged(m_data); |
---|
91 | } |
---|
92 | |
---|
93 | |
---|
94 | /** |
---|
95 | * [private slot] Called when the Aspect Ratio changes. |
---|
96 | * |
---|
97 | */ |
---|
98 | void DefaultProjectorWidget::on_aspectRatioEdit_editingFinished() |
---|
99 | { |
---|
100 | m_data.setAspectRatio(aspectRatioEdit->text().toFloat()); |
---|
101 | updateGUI(); |
---|
102 | emit dataChanged(m_data); |
---|
103 | } |
---|
104 | |
---|
105 | |
---|
106 | /** |
---|
107 | * [private slot] Called when the Near changes. |
---|
108 | * |
---|
109 | */ |
---|
110 | void DefaultProjectorWidget::on_nearEdit_editingFinished() |
---|
111 | { |
---|
112 | m_data.setNearDist(nearEdit->text().toFloat()); |
---|
113 | updateGUI(); |
---|
114 | emit dataChanged(m_data); |
---|
115 | } |
---|
116 | |
---|
117 | |
---|
118 | /** |
---|
119 | * [private slot] Called when the Far changes. |
---|
120 | * |
---|
121 | */ |
---|
122 | void DefaultProjectorWidget::on_farEdit_editingFinished() |
---|
123 | { |
---|
124 | m_data.setFarDist(farEdit->text().toFloat()); |
---|
125 | updateGUI(); |
---|
126 | emit dataChanged(m_data); |
---|
127 | } |
---|
128 | |
---|
129 | |
---|
130 | /** |
---|
131 | * [private slot] Called when the OffAxis-X changes. |
---|
132 | * |
---|
133 | */ |
---|
134 | void DefaultProjectorWidget::on_offaxisXEdit_editingFinished() |
---|
135 | { |
---|
136 | m_data.setOffaxisX(offaxisXEdit->text().toFloat()); |
---|
137 | updateGUI(); |
---|
138 | emit dataChanged(m_data); |
---|
139 | } |
---|
140 | |
---|
141 | |
---|
142 | /** |
---|
143 | * [private slot] Called when the OffAxis-Y changes. |
---|
144 | * |
---|
145 | */ |
---|
146 | void DefaultProjectorWidget::on_offaxisYEdit_editingFinished() |
---|
147 | { |
---|
148 | m_data.setOffaxisY(offaxisYEdit->text().toFloat()); |
---|
149 | updateGUI(); |
---|
150 | emit dataChanged(m_data); |
---|
151 | } |
---|
152 | |
---|
153 | |
---|