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);
}
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))
, m_config(config)
, 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;
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) {
m_left_panel->AddColorBlock(hex_to_color(filament_color[i]), i + 1);
}

View File

@ -15,7 +15,11 @@ class DragDropPanel;
class FilamentMapDialog : public wxDialog
{
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;
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)
{
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) {
std::vector<int> new_filament_maps = filament_dlg.get_filament_maps();
std::vector<int> old_filament_maps = curr_plate->get_filament_maps();