diff --git a/src/slic3r/GUI/BulkExportDialog.cpp b/src/slic3r/GUI/BulkExportDialog.cpp index fffb0d455f..27705e6a29 100644 --- a/src/slic3r/GUI/BulkExportDialog.cpp +++ b/src/slic3r/GUI/BulkExportDialog.cpp @@ -58,21 +58,30 @@ void BulkExportDialog::Item::init_selection_ctrl(wxFlexGridSizer* row_sizer, int BulkExportDialog::Item::Item( wxWindow *parent, wxFlexGridSizer*sizer, - const fs::path &path, + const std::optional& path_opt, const int bed_index, Validator validator ): - path(path), bed_index(bed_index), m_parent(parent), m_valid_bmp(new wxStaticBitmap(m_parent, wxID_ANY, *get_bmp_bundle("tick_mark"))), - m_validator(std::move(validator)), - m_directory(path.parent_path()) + m_validator(std::move(validator)) { + if (path_opt) { + path = *path_opt; + m_directory = path.parent_path(); + } + init_selection_ctrl(sizer, bed_index); init_input_name_ctrl(sizer, path.filename().string()); sizer->Add(m_valid_bmp, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, BORDER_W); + if (!path_opt) { + m_checkbox->Enable(false); + m_checkbox->SetValue(false); + selected = false; + } + m_valid_bmp->Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& event) { event.Show(selected); }); update(); } @@ -191,7 +200,7 @@ void BulkExportDialog::Item::update_valid_bmp() m_valid_bmp->SetBitmap(*get_bmp_bundle(get_bmp_name(m_status))); } -BulkExportDialog::BulkExportDialog(const std::vector> &paths): +BulkExportDialog::BulkExportDialog(const std::vector>> &paths): DPIDialog( nullptr, wxID_ANY, @@ -235,7 +244,7 @@ BulkExportDialog::BulkExportDialog(const std::vector> & #endif } -void BulkExportDialog::AddItem(const fs::path& path, int bed_index) +void BulkExportDialog::AddItem(const std::optional& path, int bed_index) { m_items.push_back(std::make_unique(this, m_sizer, path, bed_index, PathValidator{m_items})); } diff --git a/src/slic3r/GUI/BulkExportDialog.hpp b/src/slic3r/GUI/BulkExportDialog.hpp index 83c47cdcf6..83b72f4fba 100644 --- a/src/slic3r/GUI/BulkExportDialog.hpp +++ b/src/slic3r/GUI/BulkExportDialog.hpp @@ -41,7 +41,7 @@ public: Item( wxWindow *parent, wxFlexGridSizer *sizer, - const boost::filesystem::path &path, + const std::optional& path, const int bed_index, Validator validator ); @@ -82,7 +82,7 @@ private: public: - BulkExportDialog(const std::vector> &paths); + BulkExportDialog(const std::vector>> &paths); std::vector>> get_paths() const; bool has_warnings() const; @@ -91,7 +91,7 @@ protected: void on_sys_color_changed() override {} private: - void AddItem(const boost::filesystem::path &path, int bed_index); + void AddItem(const std::optional& path, int bed_index); void accept(); bool enable_ok_btn() const; }; diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 9bd6da6e80..09586ff644 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -6060,11 +6060,12 @@ void Plater::export_all_gcodes(bool prefer_removable) { std::map prints_to_export; - std::vector> paths; + std::vector >> paths; - for (int print_index{0}; print_index < this->get_fff_prints().size(); ++print_index) { + for (int print_index{0}; print_index < s_multiple_beds.get_number_of_beds(); ++print_index) { const std::unique_ptr &print{this->get_fff_prints()[print_index]}; if (!print || !is_sliceable(s_print_statuses[print_index])) { + paths.emplace_back(print_index, std::nullopt); continue; } @@ -6707,11 +6708,12 @@ void Plater::connect_gcode_all() { } const PrusaConnectNew connect{*print_host_ptr}; - std::vector> paths; + std::vector >> paths; - for (std::size_t print_index{0}; print_index < this->get_fff_prints().size(); ++print_index) { + for (std::size_t print_index{0}; print_index < s_multiple_beds.get_number_of_beds(); ++print_index) { const std::unique_ptr &print{this->get_fff_prints()[print_index]}; if (!print || !is_sliceable(s_print_statuses[print_index])) { + paths.emplace_back(print_index, std::nullopt); continue; }