mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-08-07 18:17:44 +00:00
The engine already implements prime_volume_mode (Default/Saving/Fast) but nothing in the UI could set it, leaving prime-saving unreachable on multi-sub-nozzle extruders and fast purge unreachable on printers that support it. - new PurgeModeDialog with selectable Standard/Fast or Standard/Prime Saving cards depending on printer capability - "Purge mode" sidebar button next to Flushing volumes; opens the dialog and stores the choice in the project config - printer preset-load gating: button shown only when the printer has multiple sub-nozzles per extruder or sets support_fast_purge_mode; stale project values the printer cannot honor reset to Default - enable fast purge on A2L 0.4 (support_fast_purge_mode), explicit default 0 in the common machine base - new dialog strings added to OrcaSlicer.pot Printers without these capabilities never show the button and their projects keep prime_volume_mode at Default, so slicing output is unchanged.
70 lines
1.5 KiB
C++
70 lines
1.5 KiB
C++
#pragma once
|
|
|
|
#include <wx/dialog.h>
|
|
#include <wx/panel.h>
|
|
|
|
#include "GUI_Utils.hpp"
|
|
#include "libslic3r/PrintConfig.hpp"
|
|
#include "Widgets/Label.hpp"
|
|
|
|
class wxStaticText;
|
|
class wxStaticBitmap;
|
|
|
|
namespace Slic3r {
|
|
|
|
namespace GUI {
|
|
|
|
class PurgeModeBtnPanel : public wxPanel
|
|
{
|
|
public:
|
|
PurgeModeBtnPanel(wxWindow *parent, const wxString &label, const wxString &detail, const std::string &icon_path);
|
|
void Select(bool selected);
|
|
|
|
protected:
|
|
void OnPaint(wxPaintEvent &event);
|
|
|
|
private:
|
|
void OnEnterWindow(wxMouseEvent &event);
|
|
void OnLeaveWindow(wxMouseEvent &event);
|
|
|
|
void UpdateStatus();
|
|
|
|
wxBitmap icon;
|
|
wxBitmap check_icon;
|
|
|
|
wxStaticBitmap *m_btn;
|
|
wxStaticBitmap *m_check_btn;
|
|
wxStaticText *m_label;
|
|
Label *m_detail;
|
|
bool m_hover{false};
|
|
bool m_selected{false};
|
|
};
|
|
|
|
enum class PurgeModeDialogType {
|
|
MultiNozzle,
|
|
FastMode
|
|
};
|
|
|
|
class PurgeModeDialog : public DPIDialog
|
|
{
|
|
public:
|
|
PurgeModeDialog(wxWindow *parent, PurgeModeDialogType dialog_type = PurgeModeDialogType::MultiNozzle);
|
|
|
|
PrimeVolumeMode get_selected_mode() const { return m_selected_mode; }
|
|
|
|
protected:
|
|
void on_dpi_changed(const wxRect &suggested_rect) override;
|
|
|
|
private:
|
|
void select_option(PrimeVolumeMode mode);
|
|
void update_panel_selection();
|
|
|
|
PurgeModeBtnPanel *m_standard_panel;
|
|
PurgeModeBtnPanel *m_saving_panel;
|
|
PrimeVolumeMode m_selected_mode;
|
|
PurgeModeDialogType m_dialog_type;
|
|
};
|
|
|
|
} // namespace GUI
|
|
} // namespace Slic3r
|