mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-09-27 19:01:02 +00:00
feat(gui): add purge mode selector dialog
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.
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
#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
|
||||
Reference in New Issue
Block a user