FIX: only display used filament on filament dialog

jira: none
Change-Id: Id643d1efad26eb2719f873543c2e451fe59dc5bb
This commit is contained in:
zhimin.zeng 2024-07-25 17:03:01 +08:00 committed by lane.wei
parent 2aed1142ec
commit 1d4ce2bad5
3 changed files with 15 additions and 3 deletions

View File

@ -41,7 +41,11 @@ wxColour hex_to_color(const std::string &hex)
return wxColour(r, g, b, a); return wxColour(r, g, b, a);
} }
FilamentMapDialog::FilamentMapDialog(wxWindow *parent, const DynamicPrintConfig *config, const std::vector<int> &filament_map, bool is_auto) FilamentMapDialog::FilamentMapDialog(wxWindow *parent,
const DynamicPrintConfig *config,
const std::vector<int> &filament_map,
const std::vector<int> &extruders,
bool is_auto)
: wxDialog(parent, wxID_ANY, _L("Filament arrangement method of plate"), wxDefaultPosition, wxSize(2000, 1500)) : wxDialog(parent, wxID_ANY, _L("Filament arrangement method of plate"), wxDefaultPosition, wxSize(2000, 1500))
, m_config(config) , m_config(config)
, m_filament_map(filament_map) , m_filament_map(filament_map)
@ -71,6 +75,10 @@ FilamentMapDialog::FilamentMapDialog(wxWindow *parent, const DynamicPrintConfig
std::vector<std::string> filament_color = config->option<ConfigOptionStrings>("filament_colour")->values; std::vector<std::string> filament_color = config->option<ConfigOptionStrings>("filament_colour")->values;
for (size_t i = 0; i < filament_map.size(); ++i) { for (size_t i = 0; i < filament_map.size(); ++i) {
auto iter = std::find(extruders.begin(), extruders.end(), i + 1);
if (iter == extruders.end())
continue;
if (filament_map[i] == 1) { if (filament_map[i] == 1) {
m_left_panel->AddColorBlock(hex_to_color(filament_color[i]), i + 1); m_left_panel->AddColorBlock(hex_to_color(filament_color[i]), i + 1);
} }

View File

@ -15,7 +15,11 @@ class DragDropPanel;
class FilamentMapDialog : public wxDialog class FilamentMapDialog : public wxDialog
{ {
public: public:
FilamentMapDialog(wxWindow *parent, const DynamicPrintConfig *config, const std::vector<int> &filament_map, bool is_auto); FilamentMapDialog(wxWindow *parent,
const DynamicPrintConfig *config,
const std::vector<int> &filament_map,
const std::vector<int> &extruders,
bool is_auto);
bool is_auto() const; bool is_auto() const;
const std::vector<int>& get_filament_maps() { return m_filament_map; } const std::vector<int>& get_filament_maps() { return m_filament_map; }

View File

@ -14345,7 +14345,7 @@ void Plater::open_platesettings_dialog(wxCommandEvent& evt) {
void Plater::open_filament_map_setting_dialog(wxCommandEvent &evt) void Plater::open_filament_map_setting_dialog(wxCommandEvent &evt)
{ {
PartPlate* curr_plate = p->partplate_list.get_curr_plate(); PartPlate* curr_plate = p->partplate_list.get_curr_plate();
FilamentMapDialog filament_dlg(this, config(), curr_plate->get_filament_maps(), curr_plate->get_filament_map_mode() == FilamentMapMode::fmmAuto); FilamentMapDialog filament_dlg(this, config(), curr_plate->get_filament_maps(), curr_plate->get_extruders(true), curr_plate->get_filament_map_mode() == FilamentMapMode::fmmAuto);
if (filament_dlg.ShowModal() == wxID_OK) { if (filament_dlg.ShowModal() == wxID_OK) {
std::vector<int> new_filament_maps = filament_dlg.get_filament_maps(); std::vector<int> new_filament_maps = filament_dlg.get_filament_maps();
std::vector<int> old_filament_maps = curr_plate->get_filament_maps(); std::vector<int> old_filament_maps = curr_plate->get_filament_maps();