NEW:remember custom color
Jira: STUDIO-5635 Change-Id: I439080f6a8ddb6fde3899cffbabc3b6e66afbd96
This commit is contained in:
parent
473d675411
commit
b6775abae6
|
@ -625,6 +625,37 @@ bool PresetComboBox::selection_is_changed_according_to_physical_printers()
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PlaterPresetComboBox::save_custom_color_to_config(const std::vector<std::string>& colors)
|
||||||
|
{
|
||||||
|
auto set_colors = [](std::map<std::string, std::string> &data, const std::vector<std::string> &colors) {
|
||||||
|
for (size_t i = 0; i < colors.size(); i++) {
|
||||||
|
data[std::to_string(10 + i)] = colors[i]; //for map sort:10 begin
|
||||||
|
}
|
||||||
|
};
|
||||||
|
if (colors.size() > 0) {
|
||||||
|
if (!wxGetApp().app_config->has_section("custom_color_list")) {
|
||||||
|
std::map<std::string, std::string> data;
|
||||||
|
set_colors(data,colors);
|
||||||
|
wxGetApp().app_config->set_section("custom_color_list", data);
|
||||||
|
} else {
|
||||||
|
auto data = wxGetApp().app_config->get_section("custom_color_list");
|
||||||
|
auto data_modify = const_cast<std::map<std::string, std::string> *>(&data);
|
||||||
|
set_colors(*data_modify, colors);
|
||||||
|
wxGetApp().app_config->set_section("custom_color_list", *data_modify);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<std::string> PlaterPresetComboBox::get_custom_color_from_config() {
|
||||||
|
std::vector<std::string> colors;
|
||||||
|
if (wxGetApp().app_config->has_section("custom_color_list")) {
|
||||||
|
auto data = wxGetApp().app_config->get_section("custom_color_list");
|
||||||
|
for (auto iter : data) {
|
||||||
|
colors.push_back(iter.second);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return colors;
|
||||||
|
}
|
||||||
// ---------------------------------
|
// ---------------------------------
|
||||||
// *** PlaterPresetComboBox ***
|
// *** PlaterPresetComboBox ***
|
||||||
// ---------------------------------
|
// ---------------------------------
|
||||||
|
@ -673,13 +704,35 @@ PlaterPresetComboBox::PlaterPresetComboBox(wxWindow *parent, Preset::Type preset
|
||||||
m_clrData.SetColour(clr_picker->GetBackgroundColour());
|
m_clrData.SetColour(clr_picker->GetBackgroundColour());
|
||||||
m_clrData.SetChooseFull(true);
|
m_clrData.SetChooseFull(true);
|
||||||
m_clrData.SetChooseAlpha(false);
|
m_clrData.SetChooseAlpha(false);
|
||||||
|
auto color_to_string = [](const wxColour& color) {
|
||||||
|
std::string str = std::to_string(color.Red()) + "," + std::to_string(color.Green()) + "," + std::to_string(color.Blue()) + "," + std::to_string(color.Alpha());
|
||||||
|
return str;
|
||||||
|
};
|
||||||
|
auto string_to_wxColor = [](const std::string& str) {
|
||||||
|
wxColour color;
|
||||||
|
std::vector<std::string> result;
|
||||||
|
boost::split(result, str, boost::is_any_of(","));
|
||||||
|
if (result.size() == 4) {
|
||||||
|
color = wxColour(std::stoi(result[0]), std::stoi(result[1]), std::stoi(result[2]), std::stoi(result[3]));
|
||||||
|
}
|
||||||
|
return color;
|
||||||
|
};
|
||||||
|
std::vector<std::string> colors=get_custom_color_from_config();
|
||||||
|
for (int i = 0; i < colors.size(); i++) {
|
||||||
|
m_clrData.SetCustomColour(i, string_to_wxColor(colors[i]));
|
||||||
|
}
|
||||||
wxColourDialog dialog(this, &m_clrData);
|
wxColourDialog dialog(this, &m_clrData);
|
||||||
dialog.SetTitle(_L("Please choose the filament colour"));
|
dialog.SetTitle(_L("Please choose the filament colour"));
|
||||||
if ( dialog.ShowModal() == wxID_OK )
|
if ( dialog.ShowModal() == wxID_OK )
|
||||||
{
|
{
|
||||||
m_clrData = dialog.GetColourData();
|
m_clrData = dialog.GetColourData();
|
||||||
|
const int custom_color_count = 15;
|
||||||
|
if (colors.size() != custom_color_count) {
|
||||||
|
colors.resize(custom_color_count); }
|
||||||
|
for (int i = 0; i < custom_color_count; i++) {
|
||||||
|
colors[i] = color_to_string(m_clrData.GetCustomColour(i));
|
||||||
|
}
|
||||||
|
save_custom_color_to_config(colors);
|
||||||
// get current color
|
// get current color
|
||||||
DynamicPrintConfig* cfg = &wxGetApp().preset_bundle->project_config;
|
DynamicPrintConfig* cfg = &wxGetApp().preset_bundle->project_config;
|
||||||
auto colors = static_cast<ConfigOptionStrings*>(cfg->option("filament_colour")->clone());
|
auto colors = static_cast<ConfigOptionStrings*>(cfg->option("filament_colour")->clone());
|
||||||
|
|
|
@ -164,6 +164,8 @@ public:
|
||||||
PlaterPresetComboBox(wxWindow *parent, Preset::Type preset_type);
|
PlaterPresetComboBox(wxWindow *parent, Preset::Type preset_type);
|
||||||
~PlaterPresetComboBox();
|
~PlaterPresetComboBox();
|
||||||
|
|
||||||
|
void save_custom_color_to_config(const std::vector<std::string> &colors);
|
||||||
|
std::vector<std::string> get_custom_color_from_config();
|
||||||
ScalableButton* edit_btn { nullptr };
|
ScalableButton* edit_btn { nullptr };
|
||||||
|
|
||||||
// BBS
|
// BBS
|
||||||
|
|
Loading…
Reference in New Issue