OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
Slic3r::GUI::ColorPickerPopup Class Reference

#include </home/runner/work/OrcaSlicer/OrcaSlicer/src/slic3r/GUI/AMSMaterialsSetting.hpp>

Inheritance diagram for Slic3r::GUI::ColorPickerPopup:
Collaboration diagram for Slic3r::GUI::ColorPickerPopup:

Classes

struct  ColorItem

Public Member Functions

 ColorPickerPopup (wxWindow *parent)
 ~ColorPickerPopup ()
void on_custom_clr_picker (wxMouseEvent &event)
void set_ams_colours (const std::vector< ColorItem > &ams)
void set_preset_colours (const std::vector< ColorItem > &preset_colors)
void set_def_colour (wxColour col, std::vector< wxColour > cols={}, int ctype=2)
const std::vector< wxColour > & get_selected_colours () const
int get_selected_ctype () const
void paintEvent (wxPaintEvent &evt)
virtual void OnDismiss () wxOVERRIDE
virtual bool ProcessLeftDown (wxMouseEvent &event) wxOVERRIDE
bool Create (wxWindow *parent, int flags=wxBORDER_NONE)

Public Attributes

ScalableBitmap m_ts_bitmap_custom
wxStaticBitmap * m_ts_stbitmap_custom
StaticBox * m_custom_cp
StaticBox * m_def_color_box
wxFlexGridSizer * m_ams_fg_sizer
wxFlexGridSizer * m_other_fg_sizer
wxColour m_def_col
std::vector< wxColour > m_def_colors
std::vector< ColorItem > m_ams_color_items
std::vector< ColorPicker * > m_color_pickers
std::vector< ColorPicker * > m_ams_color_pickers

Protected Member Functions

virtual bool ShouldDismissOnTopWindowDeactivate ()

Private Attributes

std::vector< ColorPicker * > m_default_color_pickers
std::vector< ColorPicker * > m_preset_color_pickers
std::vector< wxColour > m_def_cols
int m_def_ctype = 2

Detailed Description


Class Documentation

◆ Slic3r::GUI::ColorPickerPopup::ColorItem

struct Slic3r::GUI::ColorPickerPopup::ColorItem
Collaboration diagram for Slic3r::GUI::ColorPickerPopup::ColorItem:
Class Members
vector< wxColour > colors
int ctype = 2
wxString name

Constructor & Destructor Documentation

◆ ColorPickerPopup()

Slic3r::GUI::ColorPickerPopup::ColorPickerPopup ( wxWindow * parent)
1956 :PopupWindow(parent, wxBORDER_NONE)
1957{
1958 m_def_colors.clear();
1959 m_def_colors.push_back(wxColour("#FFFFFF"));
1960 m_def_colors.push_back(wxColour("#fff144"));
1961 m_def_colors.push_back(wxColour("#DCF478"));
1962 m_def_colors.push_back(wxColour("#0ACC38"));
1963 m_def_colors.push_back(wxColour("#057748"));
1964 m_def_colors.push_back(wxColour("#0d6284"));
1965 m_def_colors.push_back(wxColour("#0EE2A0"));
1966 m_def_colors.push_back(wxColour("#76D9F4"));
1967 m_def_colors.push_back(wxColour("#46a8f9"));
1968 m_def_colors.push_back(wxColour("#2850E0"));
1969 m_def_colors.push_back(wxColour("#443089"));
1970 m_def_colors.push_back(wxColour("#A03CF7"));
1971 m_def_colors.push_back(wxColour("#F330F9"));
1972 m_def_colors.push_back(wxColour("#D4B1DD"));
1973 m_def_colors.push_back(wxColour("#f95d73"));
1974 m_def_colors.push_back(wxColour("#f72323"));
1975 m_def_colors.push_back(wxColour("#7c4b00"));
1976 m_def_colors.push_back(wxColour("#f98c36"));
1977 m_def_colors.push_back(wxColour("#fcecd6"));
1978 m_def_colors.push_back(wxColour("#D3C5A3"));
1979 m_def_colors.push_back(wxColour("#AF7933"));
1980 m_def_colors.push_back(wxColour("#898989"));
1981 m_def_colors.push_back(wxColour("#BCBCBC"));
1982 m_def_colors.push_back(wxColour("#161616"));
1983
1984
1985 SetBackgroundColour(wxColour(*wxWHITE));
1986
1987 wxBoxSizer* m_sizer_main = new wxBoxSizer(wxVERTICAL);
1988 wxBoxSizer* m_sizer_box = new wxBoxSizer(wxVERTICAL);
1989
1990 m_def_color_box = new StaticBox(this);
1991 wxBoxSizer* m_sizer_ams = new wxBoxSizer(wxHORIZONTAL);
1992 auto m_title_ams = new wxStaticText(m_def_color_box, wxID_ANY, _L("AMS"), wxDefaultPosition, wxDefaultSize, 0);
1993 m_title_ams->SetFont(::Label::Body_14);
1994 m_title_ams->SetBackgroundColour(wxColour(238, 238, 238));
1995 m_sizer_ams->Add(m_title_ams, 0, wxALL, 5);
1996 auto ams_line = new wxPanel(m_def_color_box, wxID_ANY, wxDefaultPosition, wxSize(-1, 1), wxTAB_TRAVERSAL);
1997 ams_line->SetBackgroundColour(wxColour("#CECECE"));
1998 ams_line->SetMinSize(wxSize(-1, 1));
1999 ams_line->SetMaxSize(wxSize(-1, 1));
2000 m_sizer_ams->Add(ams_line, 1, wxALIGN_CENTER, 0);
2001
2002
2003 m_def_color_box->SetCornerRadius(FromDIP(10));
2004 m_def_color_box->SetBackgroundColor(StateColor(std::pair<wxColour, int>(wxColour(238, 238, 238), StateColor::Normal)));
2005 m_def_color_box->SetBorderColor(StateColor(std::pair<wxColour, int>(wxColour(238, 238, 238), StateColor::Normal)));
2006
2007 //ams
2008 m_ams_fg_sizer = new wxFlexGridSizer(0, 8, 0, 0);
2009 m_ams_fg_sizer->SetFlexibleDirection(wxBOTH);
2010 m_ams_fg_sizer->SetNonFlexibleGrowMode(wxFLEX_GROWMODE_SPECIFIED);
2011
2012 //other
2013 m_other_fg_sizer = new wxFlexGridSizer(0, 8, 0, 0);
2014 m_other_fg_sizer->SetFlexibleDirection(wxBOTH);
2015 m_other_fg_sizer->SetNonFlexibleGrowMode(wxFLEX_GROWMODE_SPECIFIED);
2016
2017
2018 for (wxColour col : m_def_colors) {
2019 auto cp = new ColorPicker(m_def_color_box, wxID_ANY, wxDefaultPosition, wxDefaultSize);
2020 cp->set_color(col);
2021 cp->set_colors({col});
2022 cp->ctype = 2;
2023 cp->set_selected(false);
2024 cp->SetBackgroundColour(StateColor::darkModeColorFor(wxColour(238,238,238)));
2025 m_color_pickers.push_back(cp);
2026 m_default_color_pickers.push_back(cp);
2027 m_other_fg_sizer->Add(cp, 0, wxALL, FromDIP(3));
2028 cp->Bind(wxEVT_LEFT_DOWN, [this, cp](auto& e) {
2029 set_def_colour(cp->m_colour);
2030
2031 wxCommandEvent evt(EVT_SELECTED_COLOR);
2032 unsigned long g_col = ((cp->m_colour.Red() & 0xff) << 24) + ((cp->m_colour.Green() & 0xff) << 16) + ((cp->m_colour.Blue() & 0xff) << 8) + (cp->m_colour.Alpha() & 0xff);
2033 evt.SetInt(g_col);
2034 wxPostEvent(GetParent(), evt);
2035 });
2036 }
2037
2038 wxBoxSizer* m_sizer_other = new wxBoxSizer(wxHORIZONTAL);
2039 auto m_title_other = new wxStaticText(m_def_color_box, wxID_ANY, _L("Other Color"), wxDefaultPosition, wxDefaultSize, 0);
2040 m_title_other->SetFont(::Label::Body_14);
2041 m_title_other->SetBackgroundColour(wxColour(238, 238, 238));
2042 m_sizer_other->Add(m_title_other, 0, wxALL, 5);
2043 auto other_line = new wxPanel(m_def_color_box, wxID_ANY, wxDefaultPosition, wxSize(-1, 1), wxTAB_TRAVERSAL);
2044 other_line->SetMinSize(wxSize(-1, 1));
2045 other_line->SetMaxSize(wxSize(-1, 1));
2046 other_line->SetBackgroundColour(wxColour("#CECECE"));
2047 m_sizer_other->Add(other_line, 1, wxALIGN_CENTER, 0);
2048
2049 //custom color
2050 wxBoxSizer* m_sizer_custom = new wxBoxSizer(wxHORIZONTAL);
2051 auto m_title_custom = new wxStaticText(m_def_color_box, wxID_ANY, _L("Custom Color"), wxDefaultPosition, wxDefaultSize, 0);
2052 m_title_custom->SetFont(::Label::Body_14);
2053 m_title_custom->SetBackgroundColour(wxColour(238, 238, 238));
2054 auto custom_line = new wxPanel(m_def_color_box, wxID_ANY, wxDefaultPosition, wxSize(-1, 1), wxTAB_TRAVERSAL);
2055 custom_line->SetBackgroundColour(wxColour("#CECECE"));
2056 custom_line->SetMinSize(wxSize(-1, 1));
2057 custom_line->SetMaxSize(wxSize(-1, 1));
2058 m_sizer_custom->Add(m_title_custom, 0, wxALL, 5);
2059 m_sizer_custom->Add(custom_line, 1, wxALIGN_CENTER, 0);
2060
2061 m_custom_cp = new StaticBox(m_def_color_box);
2062 m_custom_cp->SetSize(FromDIP(60), FromDIP(25));
2063 m_custom_cp->SetMinSize(wxSize(FromDIP(60), FromDIP(25)));
2064 m_custom_cp->SetMaxSize(wxSize(FromDIP(60), FromDIP(25)));
2065 m_custom_cp->SetBorderColor(StateColor(std::pair<wxColour, int>(wxColour(238, 238, 238), StateColor::Normal)));
2066 m_custom_cp->Bind(wxEVT_LEFT_DOWN, &ColorPickerPopup::on_custom_clr_picker, this);
2067 m_custom_cp->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) {
2068 SetCursor(wxCURSOR_HAND);
2069 });
2070 m_custom_cp->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) {
2071 SetCursor(wxCURSOR_ARROW);
2072 });
2073
2074 m_ts_bitmap_custom = ScalableBitmap(this, "ts_custom_color_picker", 25);
2075 m_ts_stbitmap_custom = new wxStaticBitmap(m_custom_cp, wxID_ANY, m_ts_bitmap_custom.bmp());
2076
2077 m_ts_stbitmap_custom->Bind(wxEVT_LEFT_DOWN, &ColorPickerPopup::on_custom_clr_picker, this);
2078 m_ts_stbitmap_custom->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) {
2079 SetCursor(wxCURSOR_HAND);
2080 });
2081 m_ts_stbitmap_custom->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) {
2082 SetCursor(wxCURSOR_ARROW);
2083 });
2084
2085 auto sizer_custom = new wxBoxSizer(wxVERTICAL);
2086 m_custom_cp->SetSizer(sizer_custom);
2087 sizer_custom->Add(m_ts_stbitmap_custom, 0, wxEXPAND, 0);
2088 m_custom_cp->Layout();
2089
2090 m_sizer_box->Add(0, 0, 0, wxTOP, FromDIP(10));
2091 m_sizer_box->Add(m_sizer_ams, 1, wxEXPAND|wxLEFT|wxRIGHT, FromDIP(10));
2092 m_sizer_box->Add(m_ams_fg_sizer, 0, wxEXPAND|wxLEFT|wxRIGHT, FromDIP(10));
2093 m_sizer_box->Add(m_sizer_other, 1, wxEXPAND|wxLEFT|wxRIGHT, FromDIP(10));
2094 m_sizer_box->Add(m_other_fg_sizer, 0, wxEXPAND|wxLEFT|wxRIGHT, FromDIP(10));
2095 m_sizer_box->Add(m_sizer_custom, 0, wxEXPAND|wxLEFT|wxRIGHT, FromDIP(10));
2096 m_sizer_box->Add(m_custom_cp, 0, wxEXPAND|wxLEFT|wxRIGHT, FromDIP(16));
2097 m_sizer_box->Add(0, 0, 0, wxTOP, FromDIP(10));
2098
2099
2100 m_def_color_box->SetSizer(m_sizer_box);
2101 m_def_color_box->Layout();
2102 m_def_color_box->Fit();
2103
2104 m_sizer_main->Add(m_def_color_box, 0, wxALL | wxEXPAND, 10);
2105 SetSizerAndFit(m_sizer_main);
2106 Layout();
2107 Fit();
2108
2109 Bind(wxEVT_PAINT, &ColorPickerPopup::paintEvent, this);
2110 wxGetApp().UpdateDarkUIWin(this);
2111}
#define _L(s)
Definition OBJ.cpp:34
class WXDLLIMPEXP_FWD_CORE wxStaticText
Definition ProgressDialog.hpp:30
static wxFont Body_14
Definition Label.hpp:53
PopupWindow()
Definition PopupWindow.hpp:10
void paintEvent(wxPaintEvent &evt)
Definition AMSMaterialsSetting.cpp:2277
StaticBox * m_custom_cp
Definition AMSMaterialsSetting.hpp:94
std::vector< ColorPicker * > m_default_color_pickers
Definition AMSMaterialsSetting.hpp:118
void on_custom_clr_picker(wxMouseEvent &event)
Definition AMSMaterialsSetting.cpp:2113
void set_def_colour(wxColour col, std::vector< wxColour > cols={}, int ctype=2)
Definition AMSMaterialsSetting.cpp:2243
std::vector< ColorPicker * > m_color_pickers
Definition AMSMaterialsSetting.hpp:101
ScalableBitmap m_ts_bitmap_custom
Definition AMSMaterialsSetting.hpp:92
StaticBox * m_def_color_box
Definition AMSMaterialsSetting.hpp:95
wxStaticBitmap * m_ts_stbitmap_custom
Definition AMSMaterialsSetting.hpp:93
wxFlexGridSizer * m_other_fg_sizer
Definition AMSMaterialsSetting.hpp:97
wxFlexGridSizer * m_ams_fg_sizer
Definition AMSMaterialsSetting.hpp:96
std::vector< wxColour > m_def_colors
Definition AMSMaterialsSetting.hpp:99
static wxColour darkModeColorFor(wxColour const &color)
Definition StateColor.cpp:219
@ Normal
Definition StateColor.hpp:16

References PopupWindow::PopupWindow(), _L, Label::Body_14, StateColor::darkModeColorFor(), m_ams_fg_sizer, m_color_pickers, m_custom_cp, m_def_color_box, m_def_colors, m_default_color_pickers, m_other_fg_sizer, m_ts_bitmap_custom, m_ts_stbitmap_custom, StateColor::Normal, on_custom_clr_picker(), paintEvent(), set_def_colour(), and wxStaticText.

Here is the call graph for this function:

◆ ~ColorPickerPopup()

Slic3r::GUI::ColorPickerPopup::~ColorPickerPopup ( )
inline
106{};

Member Function Documentation

◆ Create()

bool PopupWindow::Create ( wxWindow * parent,
int flags = wxBORDER_NONE )
inherited
22{
23 if (!wxPopupTransientWindow::Create(parent, style))
24 return false;
25#ifdef __WXGTK__
26 GetTopParent(parent)->Bind(wxEVT_ACTIVATE, &PopupWindow::topWindowActiavate, this);
27#endif
28#ifdef __WXOSX__
29 if (style & wxPU_CONTAINS_CONTROLS)
30 for (auto evt : {wxEVT_LEFT_DOWN, wxEVT_LEFT_UP, wxEVT_LEFT_DCLICK, wxEVT_MOTION, wxEVT_MOUSEWHEEL})
31 Bind(evt, &PopupWindow::OnMouseEvent2, this);
32#endif
33 return true;
34}
static wxWindow * GetTopParent(wxWindow *pWindow)
Definition PopupWindow.cpp:10
#define style
Definition WipeTowerDialog.cpp:101

References GetTopParent(), and style.

Referenced by PopupWindow(), and DropDown::Create().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_selected_colours()

const std::vector< wxColour > & Slic3r::GUI::ColorPickerPopup::get_selected_colours ( ) const
inline
111{ return m_def_cols; }
std::vector< wxColour > m_def_cols
Definition AMSMaterialsSetting.hpp:120

References m_def_cols.

◆ get_selected_ctype()

int Slic3r::GUI::ColorPickerPopup::get_selected_ctype ( ) const
inline
112{ return m_def_ctype; }
int m_def_ctype
Definition AMSMaterialsSetting.hpp:121

References m_def_ctype.

◆ on_custom_clr_picker()

void Slic3r::GUI::ColorPickerPopup::on_custom_clr_picker ( wxMouseEvent & event)
2114{
2115 const bool was_shown = IsShown();
2116 std::optional<wxColour> picker_color;
2117 {
2118 const ColorRGBA initial(m_def_col.Red(), m_def_col.Green(), m_def_col.Blue(), static_cast<unsigned char>(255));
2119 // Snapshot the custom control's anchor before releasing the transient popup grab.
2120 ColorPickerDialog dialog(GetParent(), initial, {}, false, m_custom_cp);
2121 Dismiss();
2122 if (dialog.ShowModal() == wxID_OK && dialog.selection()) {
2123 const auto& result = std::get<ColorRGBA>(*dialog.selection());
2124 picker_color = wxColour(static_cast<unsigned char>(std::lround(result.r() * 255.f)),
2125 static_cast<unsigned char>(std::lround(result.g() * 255.f)),
2126 static_cast<unsigned char>(std::lround(result.b() * 255.f)));
2127 }
2128 } // Destroy the modal before restoring the first-level popup and its focus/grab.
2129 if (!picker_color) {
2130 if (was_shown) Popup();
2131 return;
2132 }
2133
2134 set_def_colour(*picker_color);
2135 wxCommandEvent evt(EVT_SELECTED_COLOR);
2136 const std::uint32_t packed = (std::uint32_t(picker_color->Red()) << 24) |
2137 (std::uint32_t(picker_color->Green()) << 16) |
2138 (std::uint32_t(picker_color->Blue()) << 8) | 255u;
2139 evt.SetInt(static_cast<int>(packed));
2140 wxPostEvent(GetParent(), evt);
2141}
wxColour m_def_col
Definition AMSMaterialsSetting.hpp:98

References m_custom_cp, m_def_col, set_def_colour(), and Slic3r::GUI::wxMouseEvent.

Referenced by ColorPickerPopup().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ OnDismiss()

void Slic3r::GUI::ColorPickerPopup::OnDismiss ( )
virtual
2285{}

◆ paintEvent()

void Slic3r::GUI::ColorPickerPopup::paintEvent ( wxPaintEvent & evt)
2278{
2279 wxPaintDC dc(this);
2280 dc.SetPen(wxColour(0xAC, 0xAC, 0xAC));
2281 dc.SetBrush(*wxTRANSPARENT_BRUSH);
2282 dc.DrawRoundedRectangle(0, 0, GetSize().x, GetSize().y, 0);
2283}

Referenced by ColorPickerPopup().

Here is the caller graph for this function:

◆ ProcessLeftDown()

bool Slic3r::GUI::ColorPickerPopup::ProcessLeftDown ( wxMouseEvent & event)
virtual
2287 {
2288 return PopupWindow::ProcessLeftDown(event);
2289}

References Slic3r::GUI::wxMouseEvent.

◆ set_ams_colours()

void Slic3r::GUI::ColorPickerPopup::set_ams_colours ( const std::vector< ColorItem > & ams)
2144{
2145 m_ams_fg_sizer->Clear(false);
2146 if (m_ams_color_pickers.size() > 0) {
2147 for (ColorPicker* col_pick:m_ams_color_pickers) {
2148
2149 std::vector<ColorPicker*>::iterator iter = find(m_color_pickers.begin(), m_color_pickers.end(), col_pick);
2150 if (iter != m_color_pickers.end()) {
2151 col_pick->Hide();
2152 col_pick->Destroy();
2153 m_color_pickers.erase(iter);
2154 }
2155 }
2156
2157 m_ams_color_pickers.clear();
2158 }
2159
2160
2161 m_ams_color_items = ams;
2162 for (const ColorItem& item : m_ams_color_items) {
2163 if (item.colors.empty()) continue;
2164
2165 auto cp = new ColorPicker(m_def_color_box, wxID_ANY, wxDefaultPosition, wxDefaultSize);
2166 cp->set_color(item.colors.front());
2167 cp->set_colors(item.colors);
2168 cp->ctype = item.colors.size() > 1 ? item.ctype : 2;
2169 cp->set_show_full(true);
2170 cp->set_selected(false);
2171 cp->SetBackgroundColour(StateColor::darkModeColorFor(wxColour(238,238,238)));
2172 m_color_pickers.push_back(cp);
2173 m_ams_color_pickers.push_back(cp);
2174 m_ams_fg_sizer->Add(cp, 0, wxALL, FromDIP(3));
2175 cp->Bind(wxEVT_LEFT_DOWN, [this, cp](auto& e) {
2176 set_def_colour(cp->m_colour, cp->m_cols, cp->ctype);
2177
2178 wxCommandEvent evt(EVT_SELECTED_COLOR);
2179 unsigned long g_col = ((cp->m_colour.Red() & 0xff) << 24) + ((cp->m_colour.Green() & 0xff) << 16) + ((cp->m_colour.Blue() & 0xff) << 8) + (cp->m_colour.Alpha() & 0xff);
2180 evt.SetInt(g_col);
2181 wxPostEvent(GetParent(), evt);
2182 });
2183 }
2184 m_ams_fg_sizer->Layout();
2185 Layout();
2186 Fit();
2187}
std::vector< ColorPicker * > m_ams_color_pickers
Definition AMSMaterialsSetting.hpp:102
std::vector< ColorItem > m_ams_color_items
Definition AMSMaterialsSetting.hpp:100
Definition AMSMaterialsSetting.hpp:86
RaycastManager::TrItems::iterator find(RaycastManager::TrItems &items, const RaycastManager::TrKey &key)
Definition RaycastManager.cpp:298

References StateColor::darkModeColorFor(), m_ams_color_items, m_ams_color_pickers, m_ams_fg_sizer, m_color_pickers, m_def_color_box, and set_def_colour().

Here is the call graph for this function:

◆ set_def_colour()

void Slic3r::GUI::ColorPickerPopup::set_def_colour ( wxColour col,
std::vector< wxColour > cols = {},
int ctype = 2 )
2244{
2245 m_def_col = col;
2246 if (cols.empty()) {
2247 cols.push_back(col);
2248 }
2249 m_def_cols = cols;
2250 m_def_ctype = m_def_cols.size() > 1 ? ctype : 2;
2251
2252 for (ColorPicker* cp : m_color_pickers) {
2253 if (cp->m_selected) {
2254 cp->set_selected(false);
2255 }
2256 }
2257
2258 for (ColorPicker* cp : m_color_pickers) {
2259 if (!cp->IsShown()) continue;
2260 if (cp->ctype == m_def_ctype && cp->m_cols == m_def_cols) {
2261 cp->set_selected(true);
2262 break;
2263 }
2264 }
2265
2266 if (m_def_col.Alpha() == 0) {
2267 m_ts_stbitmap_custom->Show();
2268 }
2269 else {
2270 m_ts_stbitmap_custom->Hide();
2271 m_custom_cp->SetBackgroundColor(m_def_col);
2272 }
2273
2274 Dismiss();
2275}
size_t cols(const T &raster)
Definition MarchingSquares.hpp:173

References m_color_pickers, m_custom_cp, m_def_col, m_def_cols, m_def_ctype, and m_ts_stbitmap_custom.

Referenced by ColorPickerPopup(), on_custom_clr_picker(), set_ams_colours(), and set_preset_colours().

Here is the caller graph for this function:

◆ set_preset_colours()

void Slic3r::GUI::ColorPickerPopup::set_preset_colours ( const std::vector< ColorItem > & preset_colors)
2190{
2191 m_other_fg_sizer->Clear(false);
2192 if (!m_preset_color_pickers.empty()) {
2193 for (ColorPicker* col_pick : m_preset_color_pickers) {
2194 auto iter = std::find(m_color_pickers.begin(), m_color_pickers.end(), col_pick);
2195 if (iter != m_color_pickers.end()) {
2196 col_pick->Hide();
2197 col_pick->Destroy();
2198 m_color_pickers.erase(iter);
2199 }
2200 }
2201 m_preset_color_pickers.clear();
2202 }
2203
2204 for (const ColorItem& item : preset_colors) {
2205 if (item.colors.empty()) continue;
2206
2207 auto cp = new ColorPicker(m_def_color_box, wxID_ANY, wxDefaultPosition, wxDefaultSize);
2208 cp->set_color(item.colors.front());
2209 cp->set_colors(item.colors);
2210 cp->ctype = item.colors.size() > 1 ? item.ctype : 2;
2211 cp->set_show_full(true);
2212 cp->set_selected(false);
2213 cp->SetBackgroundColour(StateColor::darkModeColorFor(wxColour(238,238,238)));
2214 if (!item.name.empty()) {
2215 cp->SetToolTip(item.name);
2216 }
2217
2218 m_color_pickers.push_back(cp);
2219 m_preset_color_pickers.push_back(cp);
2220 cp->Bind(wxEVT_LEFT_DOWN, [this, cp](auto& e) {
2221 set_def_colour(cp->m_colour, cp->m_cols, cp->ctype);
2222
2223 wxCommandEvent evt(EVT_SELECTED_COLOR);
2224 unsigned long g_col = ((cp->m_colour.Red() & 0xff) << 24) + ((cp->m_colour.Green() & 0xff) << 16) + ((cp->m_colour.Blue() & 0xff) << 8) + (cp->m_colour.Alpha() & 0xff);
2225 evt.SetInt(g_col);
2226 wxPostEvent(GetParent(), evt);
2227 });
2228 }
2229
2230 const bool show_default_colours = m_preset_color_pickers.empty();
2231 for (ColorPicker* cp : m_default_color_pickers) {
2232 cp->Show(show_default_colours);
2233 }
2234 for (ColorPicker* cp : (show_default_colours ? m_default_color_pickers : m_preset_color_pickers)) {
2235 m_other_fg_sizer->Add(cp, 0, wxALL, FromDIP(3));
2236 }
2237
2238 m_other_fg_sizer->Layout();
2239 Layout();
2240 Fit();
2241}
std::vector< ColorPicker * > m_preset_color_pickers
Definition AMSMaterialsSetting.hpp:119

References StateColor::darkModeColorFor(), m_color_pickers, m_def_color_box, m_default_color_pickers, m_other_fg_sizer, m_preset_color_pickers, and set_def_colour().

Here is the call graph for this function:

◆ ShouldDismissOnTopWindowDeactivate()

virtual bool PopupWindow::ShouldDismissOnTopWindowDeactivate ( )
inlineprotectedvirtualinherited

Reimplemented in DropDown.

28{ return true; }

Member Data Documentation

◆ m_ams_color_items

std::vector<ColorItem> Slic3r::GUI::ColorPickerPopup::m_ams_color_items

Referenced by set_ams_colours().

◆ m_ams_color_pickers

std::vector<ColorPicker*> Slic3r::GUI::ColorPickerPopup::m_ams_color_pickers

Referenced by set_ams_colours().

◆ m_ams_fg_sizer

wxFlexGridSizer* Slic3r::GUI::ColorPickerPopup::m_ams_fg_sizer

◆ m_color_pickers

std::vector<ColorPicker*> Slic3r::GUI::ColorPickerPopup::m_color_pickers

◆ m_custom_cp

StaticBox* Slic3r::GUI::ColorPickerPopup::m_custom_cp

◆ m_def_col

wxColour Slic3r::GUI::ColorPickerPopup::m_def_col

◆ m_def_color_box

StaticBox* Slic3r::GUI::ColorPickerPopup::m_def_color_box

◆ m_def_colors

std::vector<wxColour> Slic3r::GUI::ColorPickerPopup::m_def_colors

Referenced by ColorPickerPopup().

◆ m_def_cols

std::vector<wxColour> Slic3r::GUI::ColorPickerPopup::m_def_cols
private

◆ m_def_ctype

int Slic3r::GUI::ColorPickerPopup::m_def_ctype = 2
private

◆ m_default_color_pickers

std::vector<ColorPicker*> Slic3r::GUI::ColorPickerPopup::m_default_color_pickers
private

◆ m_other_fg_sizer

wxFlexGridSizer* Slic3r::GUI::ColorPickerPopup::m_other_fg_sizer

◆ m_preset_color_pickers

std::vector<ColorPicker*> Slic3r::GUI::ColorPickerPopup::m_preset_color_pickers
private

Referenced by set_preset_colours().

◆ m_ts_bitmap_custom

ScalableBitmap Slic3r::GUI::ColorPickerPopup::m_ts_bitmap_custom

Referenced by ColorPickerPopup().

◆ m_ts_stbitmap_custom

wxStaticBitmap* Slic3r::GUI::ColorPickerPopup::m_ts_stbitmap_custom

Referenced by ColorPickerPopup(), and set_def_colour().


The documentation for this class was generated from the following files: