SPH
src
gui
windows
Widgets.cpp
Go to the documentation of this file.
1
#include "
gui/windows/Widgets.h
"
2
#include <wx/propgrid/propgrid.h>
3
#include <wx/propgrid/props.h>
4
5
NAMESPACE_SPH_BEGIN
6
7
FloatTextCtrl::FloatTextCtrl
(wxWindow* parent,
const
double
value,
const
Interval
range)
8
: value(value)
9
, range(range) {
10
11
lastValidValue = value;
12
13
wxValidator* validator = wxFloatProperty::GetClassValidator();
14
this->Create(parent,
15
wxID_ANY,
16
std::to_string(value),
17
wxDefaultPosition,
18
wxSize(120, 30),
19
wxTE_PROCESS_ENTER | wxTE_RIGHT,
20
*validator);
21
22
this->Bind(wxEVT_TEXT_ENTER, [
this
](wxCommandEvent&
UNUSED
(evt)) { this->validate(); });
23
this->Bind(wxEVT_KILL_FOCUS, [
this
](wxFocusEvent&
UNUSED
(evt)) { this->validate(); });
24
25
this->validate();
26
}
27
28
void
FloatTextCtrl::validate() {
29
wxFloatProperty prop;
30
wxVariant variant = this->GetValue();
31
wxPGValidationInfo info;
32
if
(!prop.ValidateValue(variant, info)) {
33
value = lastValidValue;
34
}
else
{
35
value = float(variant.GetDouble());
36
}
37
38
value = range.
clamp
(value);
39
40
if
(
onValueChanged
&& value != lastValidValue) {
41
const
bool
validated =
onValueChanged
(value);
42
if
(!validated) {
43
value = lastValidValue;
44
}
45
}
46
47
lastValidValue = value;
48
variant = double(value);
49
this->ChangeValue(prop.ValueToString(variant));
50
}
51
52
NAMESPACE_SPH_END
NAMESPACE_SPH_BEGIN
NAMESPACE_SPH_BEGIN
Definition:
BarnesHut.cpp:13
UNUSED
#define UNUSED(x)
Definition:
Object.h:37
NAMESPACE_SPH_END
#define NAMESPACE_SPH_END
Definition:
Object.h:12
Widgets.h
FloatTextCtrl::FloatTextCtrl
FloatTextCtrl(wxWindow *parent, const double value, const Interval range=Interval::unbounded())
Definition:
Widgets.cpp:7
FloatTextCtrl::onValueChanged
Function< bool(double)> onValueChanged
Definition:
Widgets.h:17
Interval
Object representing a 1D interval of real numbers.
Definition:
Interval.h:17
Interval::clamp
INLINE Float clamp(const Float &value) const
Clamps the given value by the interval.
Definition:
Interval.h:68
Generated by
1.9.1