Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/prusa3d/PrusaSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuSanka <yusanka@gmail.com>2019-07-29 15:00:22 +0300
committerYuSanka <yusanka@gmail.com>2019-07-29 15:00:22 +0300
commit7b5c8b7e1661d90213e5b8590a0a9097673960f4 (patch)
tree96ba237287062d31cc232cda9d153ff8dbfb1caf /src/slic3r/GUI/Field.cpp
parentb8a549259cc14ceecb6f8a9d8b3b80e61773419b (diff)
Implemented some upgrades for filament overrides
Diffstat (limited to 'src/slic3r/GUI/Field.cpp')
-rw-r--r--src/slic3r/GUI/Field.cpp21
1 files changed, 19 insertions, 2 deletions
diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp
index cdf344574..14386f381 100644
--- a/src/slic3r/GUI/Field.cpp
+++ b/src/slic3r/GUI/Field.cpp
@@ -136,6 +136,8 @@ bool Field::is_matched(const std::string& string, const std::string& pattern)
return std::regex_match(string, regex_pattern);
}
+static wxString na_value() { return _(L("N/A")); }
+
void Field::get_value_by_opt_type(wxString& str)
{
switch (m_opt.type) {
@@ -165,7 +167,9 @@ void Field::get_value_by_opt_type(wxString& str)
val = 0.0;
else
{
- if (!str.ToCDouble(&val))
+ if (m_opt.nullable && str == na_value())
+ val = ConfigOptionFloatsNullable::nil_value();
+ else if (!str.ToCDouble(&val))
{
show_error(m_parent, _(L("Invalid numeric input.")));
set_value(double_to_string(val), true);
@@ -346,6 +350,19 @@ void TextCtrl::propagate_value()
on_kill_focus();
}
+void TextCtrl::set_value(const boost::any& value, bool change_event/* = false*/) {
+ m_disable_change_event = !change_event;
+ if (m_opt.nullable) {
+ const bool m_is_na_val = boost::any_cast<wxString>(value) == na_value();
+ if (!m_is_na_val)
+ m_last_meaningful_value = value;
+ dynamic_cast<wxTextCtrl*>(window)->SetValue(m_is_na_val ? na_value() : boost::any_cast<wxString>(value));
+ }
+ else
+ dynamic_cast<wxTextCtrl*>(window)->SetValue(boost::any_cast<wxString>(value));
+ m_disable_change_event = false;
+}
+
void TextCtrl::set_last_meaningful_value()
{
dynamic_cast<wxTextCtrl*>(window)->SetValue(boost::any_cast<wxString>(m_last_meaningful_value));
@@ -354,7 +371,7 @@ void TextCtrl::set_last_meaningful_value()
void TextCtrl::set_na_value()
{
- dynamic_cast<wxTextCtrl*>(window)->SetValue("nan");
+ dynamic_cast<wxTextCtrl*>(window)->SetValue(na_value());
propagate_value();
}