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-08-13 10:37:44 +0300
committerYuSanka <yusanka@gmail.com>2019-08-20 10:52:00 +0300
commit3e62d7ae64f1f09f08a21708f5b21794ce2b12b5 (patch)
treeb9be4714850e666190c7c6d1212291bca8751b62 /src/slic3r/GUI/Field.cpp
parenta83da0f72cda17120cff27a0ed569d99d8e3157d (diff)
Implemented button "Reset to Filament Color"
Diffstat (limited to 'src/slic3r/GUI/Field.cpp')
-rw-r--r--src/slic3r/GUI/Field.cpp55
1 files changed, 49 insertions, 6 deletions
diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp
index 19a54016e..2bee0018c 100644
--- a/src/slic3r/GUI/Field.cpp
+++ b/src/slic3r/GUI/Field.cpp
@@ -1033,11 +1033,12 @@ void ColourPicker::BUILD()
// Validate the color
wxString clr_str(m_opt.get_default_value<ConfigOptionStrings>()->get_at(m_opt_idx));
wxColour clr(clr_str);
- if (! clr.IsOk()) {
+ if (clr_str.IsEmpty() || !clr.IsOk()) {
clr = wxTransparentColour;
}
auto temp = new wxColourPickerCtrl(m_parent, wxID_ANY, clr, wxDefaultPosition, size);
+ temp->SetFont(Slic3r::GUI::wxGetApp().normal_font());
temp->SetBackgroundStyle(wxBG_STYLE_PAINT);
// // recast as a wxWindow to fit the calling convention
@@ -1048,17 +1049,59 @@ void ColourPicker::BUILD()
temp->SetToolTip(get_tooltip_text(clr_str));
}
-boost::any& ColourPicker::get_value()
+void ColourPicker::set_undef_value(wxColourPickerCtrl* field)
{
-// boost::any m_value;
+ field->SetColour(wxTransparentColour);
- auto colour = static_cast<wxColourPickerCtrl*>(window)->GetColour();
- auto clr_str = wxString::Format(wxT("#%02X%02X%02X"), colour.Red(), colour.Green(), colour.Blue());
- m_value = clr_str.ToStdString();
+ wxButton* btn = dynamic_cast<wxButton*>(field->GetPickerCtrl());
+ wxBitmap bmp = btn->GetBitmap();
+ wxMemoryDC dc(bmp);
+ dc.SetTextForeground(*wxWHITE);
+ dc.SetFont(wxGetApp().normal_font());
+
+ const wxRect rect = wxRect(0, 0, bmp.GetWidth(), bmp.GetHeight());
+ dc.DrawLabel("undef", rect, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL);
+
+ dc.SelectObject(wxNullBitmap);
+ btn->SetBitmapLabel(bmp);
+}
+
+void ColourPicker::set_value(const boost::any& value, bool change_event)
+{
+ m_disable_change_event = !change_event;
+ const wxString clr_str(boost::any_cast<wxString>(value));
+ auto field = dynamic_cast<wxColourPickerCtrl*>(window);
+
+ wxColour clr(clr_str);
+ if (clr_str.IsEmpty() || !clr.IsOk())
+ set_undef_value(field);
+ else
+ field->SetColour(clr);
+
+ m_disable_change_event = false;
+}
+boost::any& ColourPicker::get_value()
+{
+ auto colour = static_cast<wxColourPickerCtrl*>(window)->GetColour();
+ if (colour == wxTransparentColour)
+ m_value = std::string("");
+ else {
+ auto clr_str = wxString::Format(wxT("#%02X%02X%02X"), colour.Red(), colour.Green(), colour.Blue());
+ m_value = clr_str.ToStdString();
+ }
return m_value;
}
+void ColourPicker::msw_rescale()
+{
+ Field::msw_rescale();
+
+ wxColourPickerCtrl* field = dynamic_cast<wxColourPickerCtrl*>(window);
+ if (field->GetColour() == wxTransparentColour)
+ set_undef_value(field);
+}
+
void PointCtrl::BUILD()
{
auto temp = new wxBoxSizer(wxHORIZONTAL);