From 8c7a56d4ea4ebbcfe6da8e629cdd75e895a42c31 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Sat, 27 Jan 2018 14:21:16 +0100 Subject: [PATCH] Eliminated the g-code pop up text description. Fixed correct writing of TextCtrl values. --- xs/src/slic3r/GUI/Field.cpp | 43 +++++++++++++++++++----------- xs/src/slic3r/GUI/Field.hpp | 9 ++----- xs/src/slic3r/GUI/OptionsGroup.cpp | 24 ++++++++++------- 3 files changed, 44 insertions(+), 32 deletions(-) diff --git a/xs/src/slic3r/GUI/Field.cpp b/xs/src/slic3r/GUI/Field.cpp index e4b81116e..976fa304d 100644 --- a/xs/src/slic3r/GUI/Field.cpp +++ b/xs/src/slic3r/GUI/Field.cpp @@ -5,6 +5,7 @@ #include #include #include "PrintConfig.hpp" +#include namespace Slic3r { namespace GUI { @@ -24,6 +25,13 @@ namespace Slic3r { namespace GUI { m_on_change(m_opt_id, get_value()); } + wxString Field::get_tooltip_text(const wxString& default_string) + { + wxString tooltip_text(""); + if (m_opt.tooltip.length() > 0) + tooltip_text = m_opt.tooltip + "(default: " + default_string + ")"; + return tooltip_text; + } bool Field::is_matched(std::string string, std::string pattern) { @@ -135,7 +143,7 @@ namespace Slic3r { namespace GUI { auto temp = new wxTextCtrl(m_parent, wxID_ANY, text_value, wxDefaultPosition, size, (m_opt.multiline ? wxTE_MULTILINE : 0)); - if (m_opt.tooltip.length() > 0) { temp->SetToolTip(m_opt.tooltip); } + temp->SetToolTip(get_tooltip_text(text_value)); temp->Bind(wxEVT_TEXT, ([=](wxCommandEvent e) { on_change_field(e); }), temp->GetId()); temp->Bind(wxEVT_KILL_FOCUS, ([this](wxFocusEvent e) { _on_kill_focus(e); }), temp->GetId()); @@ -154,7 +162,15 @@ namespace Slic3r { namespace GUI { void TextCtrl::enable() { dynamic_cast(window)->Enable(); dynamic_cast(window)->SetEditable(true); } void TextCtrl::disable() { dynamic_cast(window)->Disable(); dynamic_cast(window)->SetEditable(false); } - void TextCtrl::set_tooltip(const wxString& tip) { } + wxString TextCtrl::get_tooltip_text(const wxString& default_string) + { + wxString tooltip_text(""); + if (m_opt.tooltip.length() > 0) + tooltip_text = boost::iends_with(m_opt_id, "_gcode") ? + m_opt.tooltip : // eliminating the g-code pop up text description + m_opt.tooltip + "(default: " + default_string + ")"; + return tooltip_text; + } void CheckBox::BUILD() { auto size = wxSize(wxDefaultSize); @@ -172,7 +188,7 @@ void CheckBox::BUILD() { temp->Bind(wxEVT_CHECKBOX, ([this](wxCommandEvent e) { on_change_field(e); }), temp->GetId()); - if (m_opt.tooltip.length() > 0) { temp->SetToolTip(m_opt.tooltip); } + temp->SetToolTip(get_tooltip_text(check_value ? "true" : "false")); // recast as a wxWindow to fit the calling convention window = dynamic_cast(temp); @@ -228,9 +244,8 @@ void SpinCtrl::BUILD() { // # in the CallAfter queue, and we want the tmp value to be available from // # them as well. }), temp->GetId()); - - - if (m_opt.tooltip.length() > 0) { temp->SetToolTip(m_opt.tooltip); } + + temp->SetToolTip(get_tooltip_text(text_value)); // recast as a wxWindow to fit the calling convention window = dynamic_cast(temp); @@ -260,7 +275,7 @@ void Choice::BUILD() { temp->Bind(wxEVT_TEXT, ([=](wxCommandEvent e) { on_change_field(e); }), temp->GetId()); temp->Bind(wxEVT_COMBOBOX, ([this](wxCommandEvent e) { on_change_field(e); }), temp->GetId()); - if (m_opt.tooltip.length() > 0) temp->SetToolTip(m_opt.tooltip); + temp->SetToolTip(get_tooltip_text(temp->GetValue())); } void Choice::set_selection() @@ -443,8 +458,7 @@ void ColourPicker::BUILD() temp->Bind(wxEVT_COLOURPICKER_CHANGED, ([=](wxCommandEvent e) { on_change_field(e); }), temp->GetId()); - if (m_opt.tooltip.length() > 0) temp->SetToolTip(m_opt.tooltip); - + temp->SetToolTip(get_tooltip_text(clr)); } void PointCtrl::BUILD() @@ -467,9 +481,9 @@ void PointCtrl::BUILD() x_textctrl = new wxTextCtrl(m_parent, wxID_ANY, X, wxDefaultPosition, field_size); y_textctrl = new wxTextCtrl(m_parent, wxID_ANY, Y, wxDefaultPosition, field_size); - temp->Add(new wxStaticText(m_parent, wxID_ANY, "x : ")/*, 0, wxALIGN_CENTER_VERTICAL, 0*/); + temp->Add(new wxStaticText(m_parent, wxID_ANY, "x : ")); temp->Add(x_textctrl); - temp->Add(new wxStaticText(m_parent, wxID_ANY, " y : ")/*, 0, wxALIGN_CENTER_VERTICAL, 0*/); + temp->Add(new wxStaticText(m_parent, wxID_ANY, " y : ")); temp->Add(y_textctrl); x_textctrl->Bind(wxEVT_TEXT, ([=](wxCommandEvent e) { on_change_field(e/*$self->option->opt_id*/); }), x_textctrl->GetId()); @@ -478,11 +492,8 @@ void PointCtrl::BUILD() // // recast as a wxWindow to fit the calling convention sizer = dynamic_cast(temp); - if (m_opt.tooltip.length() > 0) - { - x_textctrl->SetToolTip(m_opt.tooltip); - y_textctrl->SetToolTip(m_opt.tooltip); - } + x_textctrl->SetToolTip(get_tooltip_text(X+", "+Y)); + y_textctrl->SetToolTip(get_tooltip_text(X+", "+Y)); } void PointCtrl::set_value(const Pointf value) diff --git a/xs/src/slic3r/GUI/Field.hpp b/xs/src/slic3r/GUI/Field.hpp index 6e46a45f0..cca55cbee 100644 --- a/xs/src/slic3r/GUI/Field.hpp +++ b/xs/src/slic3r/GUI/Field.hpp @@ -70,7 +70,7 @@ public: /// Fires the enable or disable function, based on the input. inline void toggle(bool en) { en ? enable() : disable(); } - virtual void set_tooltip(const wxString& tip) = 0; + virtual wxString get_tooltip_text(const wxString& default_string); Field(const ConfigOptionDef& opt, const t_config_option_key& id) : m_opt(opt), m_opt_id(id) {}; Field(wxWindow* parent, const ConfigOptionDef& opt, const t_config_option_key& id) : m_parent(parent), m_opt(opt), m_opt_id(id) {}; @@ -123,7 +123,7 @@ public: virtual void enable(); virtual void disable(); virtual wxWindow* getWindow() { return window; } - void set_tooltip(const wxString& tip); + wxString get_tooltip_text(const wxString& default_string) override; }; @@ -148,7 +148,6 @@ public: void enable() override { dynamic_cast(window)->Enable(); } void disable() override { dynamic_cast(window)->Disable(); } - void set_tooltip(const wxString& tip) override {}; wxWindow* getWindow() override { return window; } }; @@ -176,7 +175,6 @@ public: void enable() override { dynamic_cast(window)->Enable(); } void disable() override { dynamic_cast(window)->Disable(); } wxWindow* getWindow() override { return window; } - void set_tooltip(const wxString& tip) override{}; }; class Choice : public Field { @@ -197,7 +195,6 @@ public: void enable() override { dynamic_cast(window)->Enable(); }; void disable() override{ dynamic_cast(window)->Disable(); }; wxWindow* getWindow() override { return window; } - void set_tooltip(const wxString& tip) override {}; //! Redundant }; class ColourPicker : public Field { @@ -223,7 +220,6 @@ public: void enable() override { dynamic_cast(window)->Enable(); }; void disable() override{ dynamic_cast(window)->Disable(); }; wxWindow* getWindow() override { return window; } - void set_tooltip(const wxString& tip) override {}; //! Redundant }; class PointCtrl : public Field { @@ -249,7 +245,6 @@ public: x_textctrl->Disable(); y_textctrl->Disable(); }; wxSizer* getSizer() override { return sizer; } - void set_tooltip(const wxString& tip) override {}; //! Redundant }; diff --git a/xs/src/slic3r/GUI/OptionsGroup.cpp b/xs/src/slic3r/GUI/OptionsGroup.cpp index 014dfe41d..8f5051b36 100644 --- a/xs/src/slic3r/GUI/OptionsGroup.cpp +++ b/xs/src/slic3r/GUI/OptionsGroup.cpp @@ -283,6 +283,15 @@ boost::any ConfigOptionsGroup::config_value(std::string opt_key, int opt_index, } } +wxString double_to_string(double const value) +{ + return value - int(value) == 0 ? + wxString::Format(_T("%i"), int(value)) : + 10 * value - int(10 * value) == 0 ? + wxNumberFormatter::ToString(value, 1) : + wxNumberFormatter::ToString(value, 2); +} + boost::any ConfigOptionsGroup::get_config_value(DynamicPrintConfig& config, std::string opt_key, int opt_index/* = -1*/) { size_t idx = opt_index == -1 ? 0 : opt_index; @@ -299,7 +308,7 @@ boost::any ConfigOptionsGroup::get_config_value(DynamicPrintConfig& config, std: text_value += "%"; } else - text_value = wxNumberFormatter::ToString(value.value, 2); + text_value = double_to_string(value.value); ret = text_value; break; } @@ -310,18 +319,15 @@ boost::any ConfigOptionsGroup::get_config_value(DynamicPrintConfig& config, std: } break; case coPercents: - case coFloats:{ + case coFloats: + case coFloat:{ double val = opt->type == coFloats ? config.opt_float(opt_key, idx/*0opt_index*/) : - config.option(opt_key)->values.at(idx/*0*/); - ret = val - int(val) == 0 ? - wxString::Format(_T("%i"), int(val)) : - wxNumberFormatter::ToString(val, 2); + opt->type == coFloat ? config.opt_float(opt_key) : + config.option(opt_key)->values.at(idx/*0*/); + ret = double_to_string(val); } break; - case coFloat: - ret = wxNumberFormatter::ToString(config.opt_float(opt_key), 2); - break; case coString: ret = static_cast(config.opt_string(opt_key)); break;