OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
Slic3r::GUI::AMSMaterialsSetting Class Reference

#include </home/runner/work/OrcaSlicer/OrcaSlicer/src/slic3r/GUI/AMSMaterialsSetting.hpp>

Inheritance diagram for Slic3r::GUI::AMSMaterialsSetting:
Collaboration diagram for Slic3r::GUI::AMSMaterialsSetting:

Classes

struct  FilamentInfos
struct  FilamentListItem

Public Member Functions

 AMSMaterialsSetting (wxWindow *parent, wxWindowID id)
 ~AMSMaterialsSetting ()
void create ()
void paintEvent (wxPaintEvent &evt)
void input_min_finish ()
void input_max_finish ()
void update ()
bool Show (bool show) override
void Popup (wxString filament=wxEmptyString, wxString sn=wxEmptyString, wxString temp_min=wxEmptyString, wxString temp_max=wxEmptyString, wxString k=wxEmptyString, wxString n=wxEmptyString)
void post_select_event (int index)
void set_color (wxColour color)
void set_empty_color (wxColour color)
void set_colors (std::vector< wxColour > colors)
void set_ctype (int ctype)
void on_picker_color (wxCommandEvent &color)
void EndModal (int retCode) override
float scale_factor () const
float prev_scale_factor () const
void set_scale_factor (float v)
void set_prev_scale_factor (float v)
void set_em_unit (int v)
bool force_rescale () const
int em_unit () const
const wxFont & normal_font () const
void enable_force_rescale ()
int ShowModal ()

Public Attributes

MachineObject * obj { nullptr }
int ams_id { 0 }
int slot_id { 0 }
std::string ams_filament_id
std::string ams_setting_id
bool m_is_third
bool m_view_only = false
wxString m_brand_filament
wxString m_brand_sn
wxString m_brand_tmp
wxColour m_brand_colour
std::string m_filament_type
ColorPickerPopup m_color_picker_popup
ColorPicker * m_clr_picker
Label * m_clr_name
std::vector< PACalibResult > m_pa_profile_items

Protected Member Functions

void create_panel_normal (wxWindow *parent)
void create_panel_kn (wxWindow *parent)
void on_dpi_changed (const wxRect &suggested_rect) override
void on_select_filament (wxCommandEvent &evt)
void on_toggle_favorite_filament (wxCommandEvent &evt)
void on_select_cali_result (wxCommandEvent &evt)
void on_select_ok (wxCommandEvent &event)
void on_select_reset (wxCommandEvent &event)
void on_select_close (wxCommandEvent &event)
void on_clr_picker (wxMouseEvent &event)
bool is_virtual_tray ()
void update_widgets ()
void rebuild_filament_dropdown_items (const std::string &selected_filament_id)
void update_favorite_stars ()
std::set< std::string > load_favorite_filament_ids () const
void save_favorite_filament_ids (const std::set< std::string > &favorite_ids)
void toggle_favorite_filament (const std::string &filament_id)
void update_filament_editing (bool is_printing)
int get_filament_variant_index (const Preset &filament, const std::string &nozzle_diameter_str)
const FilamentInfos * selected_filament_info () const
virtual void on_sys_color_changed ()

Protected Attributes

StateColor m_btn_bg_green
StateColor m_btn_bg_gray
wxPanel * m_panel_normal
wxPanel * m_panel_SN
wxStaticText * m_sn_number
wxStaticText * warning_text
wxStaticText * m_title_filament
wxStaticText * m_title_pa_profile
wxStaticText * m_title_colour
wxStaticText * m_title_temperature
TextInput * m_input_nozzle_min
TextInput * m_input_nozzle_max
ScalableBitmap * degree
wxStaticBitmap * bitmap_max_degree
wxStaticBitmap * bitmap_min_degree
Button * m_button_reset
Button * m_button_confirm
Label * m_tip_readonly
Button * m_button_close
wxColourData * m_clrData
wxPanel * m_panel_kn
wxStaticText * m_ratio_text
Button * m_wiki_ctrl
wxStaticText * m_k_param
TextInput * m_input_k_val
wxStaticText * m_n_param
TextInput * m_input_n_val
int m_filament_selection
int m_pa_cali_select_id = 0
ComboBox * m_comboBox_filament
ComboBox * m_comboBox_cali_result
TextInput * m_readonly_filament
std::map< wxString, FilamentInfos > map_filament_items
std::vector< wxString > m_sorted_filament_items
std::vector< FilamentListItem > m_filament_list_items
ScalableBitmap m_star_filled
ScalableBitmap m_star_empty
bool m_favorites_regroup {false}

Private Member Functions

void update_em_unit ()
bool is_new_scale_factor () const
void rescale (const wxRect &suggested_rect)

Private Attributes

float m_scale_factor
int m_em_unit
wxFont m_normal_font
float m_prev_scale_factor
bool m_can_rescale
bool m_force_rescale
int m_new_font_point_size

Detailed Description


Class Documentation

◆ Slic3r::GUI::AMSMaterialsSetting::FilamentInfos

struct Slic3r::GUI::AMSMaterialsSetting::FilamentInfos
Collaboration diagram for Slic3r::GUI::AMSMaterialsSetting::FilamentInfos:
Class Members
string filament_id
string setting_id

◆ Slic3r::GUI::AMSMaterialsSetting::FilamentListItem

struct Slic3r::GUI::AMSMaterialsSetting::FilamentListItem
Collaboration diagram for Slic3r::GUI::AMSMaterialsSetting::FilamentListItem:
Class Members
FilamentInfos filament
bool is_filament {false}

Constructor & Destructor Documentation

◆ AMSMaterialsSetting()

Slic3r::GUI::AMSMaterialsSetting::AMSMaterialsSetting ( wxWindow * parent,
wxWindowID id )
179 : DPIDialog(parent, id, _L("AMS Materials Setting"), wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX)
180 , m_color_picker_popup(ColorPickerPopup(this))
181{
182 create();
183 wxGetApp().UpdateDlgDarkUI(this);
184}
#define _L(s)
Definition OBJ.cpp:34
void create()
Definition AMSMaterialsSetting.cpp:186
ColorPickerPopup m_color_picker_popup
Definition AMSMaterialsSetting.hpp:164

References _L, create(), and m_color_picker_popup.

Here is the call graph for this function:

◆ ~AMSMaterialsSetting()

Slic3r::GUI::AMSMaterialsSetting::~AMSMaterialsSetting ( )
532{
533 m_comboBox_filament->Disconnect(wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler(AMSMaterialsSetting::on_select_filament), NULL, this);
534 m_comboBox_filament->Unbind(EVT_DROPDOWN_ITEM_ACTION, &AMSMaterialsSetting::on_toggle_favorite_filament, this);
535 m_comboBox_cali_result->Disconnect(wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler(AMSMaterialsSetting::on_select_cali_result), NULL, this);
536}
ComboBox * m_comboBox_cali_result
Definition AMSMaterialsSetting.hpp:227
void on_select_filament(wxCommandEvent &evt)
Definition AMSMaterialsSetting.cpp:1546
void on_select_cali_result(wxCommandEvent &evt)
Definition AMSMaterialsSetting.cpp:1518
void on_toggle_favorite_filament(wxCommandEvent &evt)
Definition AMSMaterialsSetting.cpp:1253
ComboBox * m_comboBox_filament
Definition AMSMaterialsSetting.hpp:226

References m_comboBox_cali_result, m_comboBox_filament, on_select_cali_result(), on_select_filament(), and on_toggle_favorite_filament().

Here is the call graph for this function:

Member Function Documentation

◆ create()

void Slic3r::GUI::AMSMaterialsSetting::create ( )
187{
188 SetBackgroundColour(*wxWHITE);
189 wxBoxSizer *m_sizer_main = new wxBoxSizer(wxVERTICAL);
190
191 m_panel_normal = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
193 m_panel_kn = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
195
196 wxBoxSizer *m_sizer_button = new wxBoxSizer(wxHORIZONTAL);
197
198 m_sizer_button->Add(0, 0, 1, wxEXPAND, 0);
199
200 // Orca: link to the Orca Slicer pressure-advance wiki (region-agnostic).
201 m_wiki_ctrl = new Button(this, "", "toolbar_wiki", 0, 15);
202 auto wiki_url = "https://www.orcaslicer.com/wiki/pressure_advance_calib";
203 m_wiki_ctrl->SetToolTip(_L("Wiki Guide") + "\n" + wiki_url);
205 m_wiki_ctrl->SetCanFocus(false);
206 m_wiki_ctrl->Bind(wxEVT_LEFT_DOWN, ([wiki_url](auto& e) {wxLaunchDefaultBrowser(wiki_url);}));
207
208 m_button_confirm = new Button(this, _L("Confirm"));
210 m_button_confirm->Bind(wxEVT_BUTTON, &AMSMaterialsSetting::on_select_ok, this);
211
212 m_button_reset = new Button(this, _L("Reset"));
214 m_button_reset->Bind(wxEVT_BUTTON, &AMSMaterialsSetting::on_select_reset, this);
215
216 m_button_close = new Button(this, _L("Close"));
218 m_button_close->Bind(wxEVT_BUTTON, &AMSMaterialsSetting::on_select_close, this);
219
220 m_sizer_button->Add(m_wiki_ctrl, 0, wxALIGN_CENTER | wxRIGHT, FromDIP(20));
221 m_sizer_button->Add(m_button_confirm, 0, wxALIGN_CENTER | wxRIGHT, FromDIP(10));
222 m_sizer_button->Add(m_button_reset, 0, wxALIGN_CENTER | wxRIGHT, FromDIP(10));
223 m_sizer_button->Add(m_button_close, 0, wxALIGN_CENTER, 0);
224
225 m_sizer_main->Add(m_panel_normal, 0, wxALL, FromDIP(2));
226
227 m_sizer_main->Add(m_panel_kn, 0, wxALL, FromDIP(2));
228
229 m_sizer_main->Add(0, 0, 0, wxTOP, FromDIP(24));
230 m_sizer_main->Add(m_sizer_button, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(20));
231 m_sizer_main->Add(0, 0, 0, wxTOP, FromDIP(16));
232
233 SetSizer(m_sizer_main);
234 Layout();
235 Fit();
236
237 m_input_nozzle_min->GetTextCtrl()->Bind(wxEVT_SET_FOCUS, [this](wxFocusEvent& e) {
238 warning_text->Hide();
239 Layout();
240 Fit();
241 e.Skip();
242 });
243 m_input_nozzle_min->GetTextCtrl()->Bind(wxEVT_TEXT_ENTER, [this](wxCommandEvent& e) {
245 e.Skip();
246 });
247 m_input_nozzle_min->GetTextCtrl()->Bind(wxEVT_KILL_FOCUS, [this](wxFocusEvent& e) {
249 e.Skip();
250 });
251
252 m_input_nozzle_max->GetTextCtrl()->Bind(wxEVT_SET_FOCUS, [this](wxFocusEvent& e) {
253 warning_text->Hide();
254 Layout();
255 Fit();
256 e.Skip();
257 });
258 m_input_nozzle_max->GetTextCtrl()->Bind(wxEVT_TEXT_ENTER, [this](wxCommandEvent& e) {
260 e.Skip();
261 });
262 m_input_nozzle_max->GetTextCtrl()->Bind(wxEVT_KILL_FOCUS, [this](wxFocusEvent& e) {
264 e.Skip();
265 });
266
267 Bind(wxEVT_PAINT, &AMSMaterialsSetting::paintEvent, this);
268 Bind(EVT_SELECTED_COLOR, &AMSMaterialsSetting::on_picker_color, this);
269 m_comboBox_filament->Connect(wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler(AMSMaterialsSetting::on_select_filament), NULL, this);
270 m_comboBox_filament->Bind(EVT_DROPDOWN_ITEM_ACTION, &AMSMaterialsSetting::on_toggle_favorite_filament, this);
271
272 // Favorites toggled in the open list are regrouped just before it opens again, so rows never move
273 // under the cursor. These handlers run ahead of ComboBox's own, which then measure and show the
274 // rebuilt rows; wxEVT_COMBOBOX_DROPDOWN would be too late, as ComboBox sends it after showing the list.
275 auto regroup_favorites = [this]() {
276 if (!m_favorites_regroup || m_comboBox_filament->is_drop_down())
277 return;
279 const std::string filament_id = info ? info->filament_id : std::string();
281 };
282 m_comboBox_filament->Bind(wxEVT_LEFT_DOWN, [regroup_favorites](wxMouseEvent& e) { regroup_favorites(); e.Skip(); });
283 m_comboBox_filament->Bind(wxEVT_LEFT_DCLICK, [regroup_favorites](wxMouseEvent& e) { regroup_favorites(); e.Skip(); });
284 m_comboBox_filament->Bind(wxEVT_KEY_DOWN, [regroup_favorites](wxKeyEvent& e) {
285 if (e.GetKeyCode() == WXK_RETURN || e.GetKeyCode() == WXK_SPACE) // the keys that open the list
286 regroup_favorites();
287 e.Skip();
288 });
289
290 m_comboBox_cali_result->Connect(wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler(AMSMaterialsSetting::on_select_cali_result), NULL, this);
291}
@ Confirm
Definition Button.hpp:25
@ Regular
Definition Button.hpp:24
@ Circle
Definition Button.hpp:37
@ Choice
Definition Button.hpp:33
Button * m_wiki_ctrl
Definition AMSMaterialsSetting.hpp:217
void paintEvent(wxPaintEvent &evt)
Definition AMSMaterialsSetting.cpp:522
void input_max_finish()
Definition AMSMaterialsSetting.cpp:553
TextInput * m_input_nozzle_max
Definition AMSMaterialsSetting.hpp:205
wxPanel * m_panel_normal
Definition AMSMaterialsSetting.hpp:195
void on_select_close(wxCommandEvent &event)
Definition AMSMaterialsSetting.cpp:994
void on_select_reset(wxCommandEvent &event)
Definition AMSMaterialsSetting.cpp:621
void create_panel_kn(wxWindow *parent)
Definition AMSMaterialsSetting.cpp:454
void input_min_finish()
Definition AMSMaterialsSetting.cpp:538
wxStaticText * warning_text
Definition AMSMaterialsSetting.hpp:198
Button * m_button_reset
Definition AMSMaterialsSetting.hpp:209
void on_picker_color(wxCommandEvent &color)
Definition AMSMaterialsSetting.cpp:1045
Button * m_button_confirm
Definition AMSMaterialsSetting.hpp:210
bool m_favorites_regroup
Definition AMSMaterialsSetting.hpp:247
Button * m_button_close
Definition AMSMaterialsSetting.hpp:212
void create_panel_normal(wxWindow *parent)
Definition AMSMaterialsSetting.cpp:293
void on_select_ok(wxCommandEvent &event)
Definition AMSMaterialsSetting.cpp:784
wxPanel * m_panel_kn
Definition AMSMaterialsSetting.hpp:215
void rebuild_filament_dropdown_items(const std::string &selected_filament_id)
Definition AMSMaterialsSetting.cpp:1165
TextInput * m_input_nozzle_min
Definition AMSMaterialsSetting.hpp:204
const FilamentInfos * selected_filament_info() const
Definition AMSMaterialsSetting.cpp:1139
Definition AMSMaterialsSetting.hpp:230
wxMouseEvent
Definition CameraPopup.cpp:47

References _L, Choice, Circle, Confirm, create_panel_kn(), create_panel_normal(), Slic3r::GUI::AMSMaterialsSetting::FilamentInfos::filament_id, input_max_finish(), input_min_finish(), m_button_close, m_button_confirm, m_button_reset, m_comboBox_cali_result, m_comboBox_filament, m_favorites_regroup, m_input_nozzle_max, m_input_nozzle_min, m_panel_kn, m_panel_normal, m_wiki_ctrl, on_picker_color(), on_select_cali_result(), on_select_close(), on_select_filament(), on_select_ok(), on_select_reset(), on_toggle_favorite_filament(), paintEvent(), rebuild_filament_dropdown_items(), Regular, selected_filament_info(), warning_text, and Slic3r::GUI::wxMouseEvent.

Referenced by AMSMaterialsSetting().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ create_panel_kn()

void Slic3r::GUI::AMSMaterialsSetting::create_panel_kn ( wxWindow * parent)
protected
455{
456 auto sizer = new wxBoxSizer(wxVERTICAL);
457 auto cali_title_sizer = new wxBoxSizer(wxHORIZONTAL);
458 // title
459 m_ratio_text = new wxStaticText(parent, wxID_ANY, _L("Factors of Flow Dynamics Calibration"));
460 m_ratio_text->SetForegroundColour(wxColour(50, 58, 61));
462
463 cali_title_sizer->Add(m_ratio_text, 0, wxALIGN_CENTER_VERTICAL);
464
465 wxBoxSizer *m_sizer_cali_resutl = new wxBoxSizer(wxHORIZONTAL);
466 // pa profile
467 m_title_pa_profile = new wxStaticText(parent, wxID_ANY, _L("PA Profile"), wxDefaultPosition, wxSize(AMS_MATERIALS_SETTING_LABEL_WIDTH, -1), 0);
468 m_title_pa_profile->SetMinSize(wxSize(FromDIP(80), -1));
469 m_title_pa_profile->SetMaxSize(wxSize(FromDIP(80), -1));
472 m_title_pa_profile->Wrap(-1);
473 m_sizer_cali_resutl->Add(m_title_pa_profile, 0, wxALIGN_CENTER, 0);
474 m_sizer_cali_resutl->Add(0, 0, 0, wxEXPAND, 0);
475
476 m_comboBox_cali_result = new ::ComboBox(parent, wxID_ANY, wxEmptyString, wxDefaultPosition, AMS_MATERIALS_SETTING_COMBOX_WIDTH, 0, nullptr, wxCB_READONLY);
477 m_sizer_cali_resutl->Add(m_comboBox_cali_result, 1, wxALIGN_CENTER, 0);
478
479 auto kn_val_sizer = new wxFlexGridSizer(0, 2, 0, 0);
480 kn_val_sizer->SetFlexibleDirection(wxBOTH);
481 kn_val_sizer->SetNonFlexibleGrowMode(wxFLEX_GROWMODE_SPECIFIED);
482 kn_val_sizer->AddGrowableCol(1);
483
484 // k params input
485 m_k_param = new wxStaticText(parent, wxID_ANY, _L("Factor K"), wxDefaultPosition, wxDefaultSize, 0);
486 m_k_param->SetMinSize(wxSize(FromDIP(80), -1));
487 m_k_param->SetMaxSize(wxSize(FromDIP(80), -1));
488 m_k_param->SetFont(::Label::Body_13);
489 m_k_param->SetForegroundColour(wxColour(50, 58, 61));
490 m_k_param->Wrap(-1);
491 kn_val_sizer->Add(m_k_param, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(0));
492
493 m_input_k_val = new TextInput(parent, wxEmptyString, wxEmptyString, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_CENTRE | wxTE_PROCESS_ENTER);
494 m_input_k_val->SetMinSize(wxSize(FromDIP(245), -1));
495 m_input_k_val->SetMaxSize(wxSize(FromDIP(245), -1));
496 m_input_k_val->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
497 kn_val_sizer->Add(m_input_k_val, 0, wxALL | wxEXPAND | wxALIGN_CENTER_VERTICAL, FromDIP(0));
498
499 // n params input
500 wxBoxSizer* n_sizer = new wxBoxSizer(wxHORIZONTAL);
501 m_n_param = new wxStaticText(parent, wxID_ANY, _L("Factor N"), wxDefaultPosition, wxDefaultSize, 0);
502 m_n_param->SetFont(::Label::Body_13);
503 m_n_param->SetForegroundColour(wxColour(50, 58, 61));
504 m_n_param->Wrap(-1);
505 kn_val_sizer->Add(m_n_param, 1, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(5));
506 m_input_n_val = new TextInput(parent, wxEmptyString, wxEmptyString, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_CENTRE | wxTE_PROCESS_ENTER);
507 m_input_n_val->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
508 kn_val_sizer->Add(m_input_n_val, 0, wxALL | wxEXPAND | wxALIGN_CENTER_VERTICAL, FromDIP(5));
509 m_n_param->Hide();
510 m_input_n_val->Hide();
511
512 sizer->Add(0, 0, 0, wxTOP, FromDIP(10));
513 sizer->Add(cali_title_sizer, 0, wxLEFT | wxRIGHT | wxEXPAND, FromDIP(20));
514 sizer->Add(0, 0, 0, wxTOP, FromDIP(12));
515 sizer->Add(m_sizer_cali_resutl, 0, wxLEFT | wxRIGHT, FromDIP(20));
516 sizer->Add(0, 0, 0, wxTOP, FromDIP(10));
517 sizer->Add(kn_val_sizer, 0, wxLEFT | wxRIGHT | wxEXPAND, FromDIP(20));
518 sizer->Add(0, 0, 0, wxTOP, FromDIP(10));
519 parent->SetSizer(sizer);
520}
#define AMS_MATERIALS_SETTING_LABEL_WIDTH
Definition AMSMaterialsSetting.hpp:43
#define AMS_MATERIALS_SETTING_GREY800
Definition AMSMaterialsSetting.hpp:38
#define AMS_MATERIALS_SETTING_COMBOX_WIDTH
Definition AMSMaterialsSetting.hpp:44
class WXDLLIMPEXP_FWD_CORE wxStaticText
Definition ProgressDialog.hpp:30
static wxFont Body_13
Definition Label.hpp:54
static wxFont Head_14
Definition Label.hpp:45
TextInput * m_input_n_val
Definition AMSMaterialsSetting.hpp:221
wxStaticText * m_k_param
Definition AMSMaterialsSetting.hpp:218
wxStaticText * m_n_param
Definition AMSMaterialsSetting.hpp:220
wxStaticText * m_ratio_text
Definition AMSMaterialsSetting.hpp:216
wxStaticText * m_title_pa_profile
Definition AMSMaterialsSetting.hpp:201
TextInput * m_input_k_val
Definition AMSMaterialsSetting.hpp:219

References _L, AMS_MATERIALS_SETTING_COMBOX_WIDTH, AMS_MATERIALS_SETTING_GREY800, AMS_MATERIALS_SETTING_LABEL_WIDTH, Label::Body_13, Label::Head_14, m_comboBox_cali_result, m_input_k_val, m_input_n_val, m_k_param, m_n_param, m_ratio_text, m_title_pa_profile, and wxStaticText.

Referenced by create().

Here is the caller graph for this function:

◆ create_panel_normal()

void Slic3r::GUI::AMSMaterialsSetting::create_panel_normal ( wxWindow * parent)
protected
294{
295 auto sizer = new wxBoxSizer(wxVERTICAL);
296
297 wxBoxSizer* m_sizer_filament = new wxBoxSizer(wxHORIZONTAL);
298
299 m_title_filament = new wxStaticText(parent, wxID_ANY, _L("Filament"), wxDefaultPosition, wxSize(AMS_MATERIALS_SETTING_LABEL_WIDTH, -1), 0);
302 m_title_filament->Wrap(-1);
303 m_sizer_filament->Add(m_title_filament, 0, wxALIGN_CENTER, 0);
304
305 m_sizer_filament->Add(0, 0, 0, wxEXPAND, 0);
306
307 m_comboBox_filament = new ::ComboBox(parent, wxID_ANY, wxEmptyString, wxDefaultPosition, AMS_MATERIALS_SETTING_COMBOX_WIDTH, 0, nullptr, wxCB_READONLY);
308 m_star_filled = ScalableBitmap(this, "score_star_light", 16);
309 m_star_empty = ScalableBitmap(this, "score_star_outline", 16);
310
311 m_sizer_filament->Add(m_comboBox_filament, 1, wxALIGN_CENTER, 0);
312
313 // make the style the same with disable m_input_k_val, FIXME
314 m_readonly_filament = new TextInput(parent, wxEmptyString, "", "", wxDefaultPosition, AMS_MATERIALS_SETTING_COMBOX_WIDTH, wxTE_CENTRE | wxTE_PROCESS_ENTER);
315 m_readonly_filament->SetBorderColor(StateColor(std::make_pair(0xDBDBDB, (int)StateColor::Focused), std::make_pair(0x009688, (int)StateColor::Hovered),
316 std::make_pair(0xDBDBDB, (int)StateColor::Normal)));
319 m_readonly_filament->GetTextCtrl()->Bind(wxEVT_SET_FOCUS, [](auto& e) {});
320 m_readonly_filament->GetTextCtrl()->Hide();
321 m_readonly_filament->Disable();
322 m_sizer_filament->Add(m_readonly_filament, 1, wxALIGN_CENTER, 0);
323 m_readonly_filament->Hide();
324
325 wxBoxSizer* m_sizer_colour = new wxBoxSizer(wxHORIZONTAL);
326
327 m_title_colour = new wxStaticText(parent, wxID_ANY, _L("Color"), wxDefaultPosition, wxSize(AMS_MATERIALS_SETTING_LABEL_WIDTH, -1), 0);
329 m_title_colour->SetForegroundColour(AMS_MATERIALS_SETTING_GREY800);
330 m_title_colour->Wrap(-1);
331 m_sizer_colour->Add(m_title_colour, 0, wxALIGN_CENTER, 0);
332
333 m_sizer_colour->Add(0, 0, 0, wxEXPAND, 0);
334
335 m_clr_picker = new ColorPicker(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize);
336 m_clr_picker->set_show_full(true);
337 m_clr_picker->SetBackgroundColour(*wxWHITE);
338
339
340 m_clr_picker->Bind(wxEVT_LEFT_DOWN, &AMSMaterialsSetting::on_clr_picker, this);
341 m_sizer_colour->Add(m_clr_picker, 0, 0, 0);
342 m_clr_name = new Label(parent, wxEmptyString);
343 m_clr_name->SetForegroundColour(*wxBLACK);
344 m_clr_name->SetBackgroundColour(*wxWHITE);
345 m_clr_name->SetFont(Label::Body_13);
346 m_sizer_colour->Add(m_clr_name, 1, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(10));
347
348 wxBoxSizer* m_sizer_temperature = new wxBoxSizer(wxHORIZONTAL);
349 m_title_temperature = new wxStaticText(parent, wxID_ANY, _L("Nozzle\nTemperature"), wxDefaultPosition, wxSize(AMS_MATERIALS_SETTING_LABEL_WIDTH, -1), 0);
352 m_title_temperature->Wrap(-1);
353 m_sizer_temperature->Add(m_title_temperature, 0, wxALIGN_CENTER, 0);
354
355 m_sizer_temperature->Add(0, 0, 0, wxEXPAND, 0);
356
357 wxBoxSizer* sizer_other = new wxBoxSizer(wxVERTICAL);
358 wxBoxSizer* sizer_tempinput = new wxBoxSizer(wxHORIZONTAL);
359
360 m_input_nozzle_max = new ::TextInput(parent, wxEmptyString, wxEmptyString, wxEmptyString, wxDefaultPosition, AMS_MATERIALS_SETTING_INPUT_SIZE, wxTE_CENTRE | wxTE_PROCESS_ENTER);
361 m_input_nozzle_min = new ::TextInput(parent, wxEmptyString, wxEmptyString, wxEmptyString, wxDefaultPosition, AMS_MATERIALS_SETTING_INPUT_SIZE, wxTE_CENTRE | wxTE_PROCESS_ENTER);
362 m_input_nozzle_max->Enable(false);
363 m_input_nozzle_min->Enable(false);
364
365 m_input_nozzle_max->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
366 m_input_nozzle_max->GetTextCtrl()->SetSize(wxSize(-1, FromDIP(20)));
367 m_input_nozzle_min->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
368 m_input_nozzle_min->GetTextCtrl()->SetSize(wxSize(-1, FromDIP(20)));
369
370 degree = new ScalableBitmap(parent, "degree", 16);
371 bitmap_max_degree = new wxStaticBitmap(parent, -1, degree->bmp(), wxDefaultPosition, wxDefaultSize);
372 bitmap_min_degree = new wxStaticBitmap(parent, -1, degree->bmp(), wxDefaultPosition, wxDefaultSize);
373
374 sizer_tempinput->Add(m_input_nozzle_max, 1, wxALIGN_CENTER, 0);
375 sizer_tempinput->Add(bitmap_min_degree, 0, wxALIGN_CENTER, 0);
376 sizer_tempinput->Add(FromDIP(10), 0, 0, 0);
377 sizer_tempinput->Add(m_input_nozzle_min, 1, wxALIGN_CENTER, 0);
378 sizer_tempinput->Add(bitmap_max_degree, 0, wxALIGN_CENTER, 0);
379
380 wxBoxSizer* sizer_temp_txt = new wxBoxSizer(wxHORIZONTAL);
381 auto m_title_max = new wxStaticText(parent, wxID_ANY, _L("max"), wxDefaultPosition, AMS_MATERIALS_SETTING_INPUT_SIZE);
382 m_title_max->SetForegroundColour(AMS_MATERIALS_SETTING_GREY800);
383 m_title_max->SetFont(::Label::Body_13);
384 auto m_title_min = new wxStaticText(parent, wxID_ANY, _L("min"), wxDefaultPosition, AMS_MATERIALS_SETTING_INPUT_SIZE);
385 m_title_min->SetForegroundColour(AMS_MATERIALS_SETTING_GREY800);
386 m_title_min->SetFont(::Label::Body_13);
387 sizer_temp_txt->Add(m_title_max, 1, wxALIGN_CENTER, 0);
388 sizer_temp_txt->Add(FromDIP(10), 0, 0, 0);
389 sizer_temp_txt->Add(m_title_min, 1, wxALIGN_CENTER | wxRIGHT, FromDIP(16));
390
391
392 sizer_other->Add(sizer_temp_txt, 0, wxALIGN_CENTER, 0);
393 sizer_other->Add(sizer_tempinput, 0, wxALIGN_CENTER, 0);
394
395 m_sizer_temperature->Add(sizer_other, 0, wxALL | wxALIGN_CENTER, 0);
396 m_sizer_temperature->AddStretchSpacer();
397
398 wxString warning_string = wxString::FromUTF8(
399 (boost::format(_u8L("The input value should be greater than %1% and less than %2%")) % FILAMENT_MIN_TEMP % FILAMENT_MAX_TEMP).str());
400 warning_text = new wxStaticText(parent, wxID_ANY, warning_string, wxDefaultPosition, wxDefaultSize, 0);
402 warning_text->SetForegroundColour(wxColour(255, 111, 0));
403
405 warning_text->SetMinSize(wxSize(AMS_MATERIALS_SETTING_BODY_WIDTH, -1));
406 warning_text->Hide();
407
408 m_panel_SN = new wxPanel(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
409 wxBoxSizer* m_sizer_SN = new wxBoxSizer(wxVERTICAL);
410 m_sizer_SN->AddSpacer(FromDIP(16));
411
412 wxBoxSizer* m_sizer_SN_inside = new wxBoxSizer(wxHORIZONTAL);
413
414 auto m_title_SN = new wxStaticText(m_panel_SN, wxID_ANY, _L("SN"), wxDefaultPosition, wxSize(AMS_MATERIALS_SETTING_LABEL_WIDTH, -1), 0);
415 m_title_SN->SetFont(::Label::Body_13);
416 m_title_SN->SetForegroundColour(AMS_MATERIALS_SETTING_GREY800);
417 m_title_SN->Wrap(-1);
418 m_sizer_SN_inside->Add(m_title_SN, 0, wxALIGN_CENTER, 0);
419
420 m_sizer_SN_inside->Add(0, 0, 0, wxEXPAND, 0);
421
422 m_sn_number = new wxStaticText(m_panel_SN, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize);
423 m_sn_number->SetForegroundColour(*wxBLACK);
424 m_sizer_SN_inside->Add(m_sn_number, 0, wxALIGN_CENTER, 0);
425 m_sizer_SN->Add(m_sizer_SN_inside);
426
427 m_panel_SN->SetSizer(m_sizer_SN);
428 m_panel_SN->Layout();
429 m_panel_SN->Fit();
430
431 wxBoxSizer* m_tip_sizer = new wxBoxSizer(wxHORIZONTAL);
432 m_tip_readonly = new Label(parent, "");
433 m_tip_readonly->SetForegroundColour(*wxBLACK);
434 m_tip_readonly->SetBackgroundColour(*wxWHITE);
435 m_tip_readonly->SetMinSize(wxSize(FromDIP(380), -1));
436 m_tip_readonly->SetMaxSize(wxSize(FromDIP(380), -1));
437 m_tip_readonly->Hide();
438 m_tip_sizer->Add(m_tip_readonly, 0, wxALIGN_CENTER | wxRIGHT, FromDIP(20));
439
440 sizer->Add(0, 0, 0, wxTOP, FromDIP(16));
441 sizer->Add(m_sizer_filament, 0, wxLEFT | wxRIGHT, FromDIP(20));
442 sizer->Add(0, 0, 0, wxTOP, FromDIP(16));
443 sizer->Add(m_sizer_colour, 0, wxLEFT | wxRIGHT, FromDIP(20));
444 sizer->Add(0, 0, 0, wxTOP, FromDIP(16));
445 sizer->Add(m_sizer_temperature, 0, wxLEFT | wxRIGHT, FromDIP(20));
446 sizer->Add(0, 0, 0, wxTOP, FromDIP(5));
447 sizer->Add(warning_text, 0, wxLEFT | wxRIGHT, FromDIP(20));
448 sizer->Add(m_panel_SN, 0, wxLEFT, FromDIP(20));
449 sizer->Add(0, 0, 0, wxTOP, FromDIP(24));
450 sizer->Add(m_tip_sizer, 0, wxLEFT, FromDIP(20));
451 parent->SetSizer(sizer);
452}
#define FILAMENT_MIN_TEMP
Definition AMSMaterialsSetting.cpp:72
#define FILAMENT_MAX_TEMP
Definition AMSMaterialsSetting.cpp:71
#define AMS_MATERIALS_SETTING_BODY_WIDTH
Definition AMSMaterialsSetting.hpp:42
#define AMS_MATERIALS_SETTING_INPUT_SIZE
Definition AMSMaterialsSetting.hpp:46
static wxFont Body_14
Definition Label.hpp:53
wxStaticBitmap * bitmap_min_degree
Definition AMSMaterialsSetting.hpp:208
wxStaticBitmap * bitmap_max_degree
Definition AMSMaterialsSetting.hpp:207
Label * m_tip_readonly
Definition AMSMaterialsSetting.hpp:211
ScalableBitmap * degree
Definition AMSMaterialsSetting.hpp:206
void on_clr_picker(wxMouseEvent &event)
Definition AMSMaterialsSetting.cpp:1058
TextInput * m_readonly_filament
Definition AMSMaterialsSetting.hpp:228
wxStaticText * m_title_temperature
Definition AMSMaterialsSetting.hpp:203
Label * m_clr_name
Definition AMSMaterialsSetting.hpp:166
wxStaticText * m_sn_number
Definition AMSMaterialsSetting.hpp:197
wxStaticText * m_title_colour
Definition AMSMaterialsSetting.hpp:202
ScalableBitmap m_star_filled
Definition AMSMaterialsSetting.hpp:244
wxPanel * m_panel_SN
Definition AMSMaterialsSetting.hpp:196
ScalableBitmap m_star_empty
Definition AMSMaterialsSetting.hpp:245
ColorPicker * m_clr_picker
Definition AMSMaterialsSetting.hpp:165
wxStaticText * m_title_filament
Definition AMSMaterialsSetting.hpp:200
@ Hovered
Definition StateColor.hpp:20
@ Normal
Definition StateColor.hpp:16
@ Focused
Definition StateColor.hpp:19
#define _u8L(s)
Definition I18N.hpp:11

References _L, _u8L, AMS_MATERIALS_SETTING_BODY_WIDTH, AMS_MATERIALS_SETTING_COMBOX_WIDTH, AMS_MATERIALS_SETTING_GREY800, AMS_MATERIALS_SETTING_INPUT_SIZE, AMS_MATERIALS_SETTING_LABEL_WIDTH, bitmap_max_degree, bitmap_min_degree, Label::Body_13, Label::Body_14, degree, FILAMENT_MAX_TEMP, FILAMENT_MIN_TEMP, StateColor::Focused, StateColor::Hovered, m_clr_name, m_clr_picker, m_comboBox_filament, m_input_nozzle_max, m_input_nozzle_min, m_panel_SN, m_readonly_filament, m_sn_number, m_star_empty, m_star_filled, m_tip_readonly, m_title_colour, m_title_filament, m_title_temperature, StateColor::Normal, on_clr_picker(), warning_text, and wxStaticText.

Referenced by create().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ em_unit()

int Slic3r::GUI::DPIAware< wxDialog >::em_unit ( ) const
inlineinherited
203{ return m_em_unit; }
Definition GUI_Utils.hpp:107

Referenced by Slic3r::GUI::AuxiliaryDialog::AuxiliaryDialog(), Slic3r::GUI::CopyrightsDialog::CopyrightsDialog(), Slic3r::GUI::DesignTextDialog::DesignTextDialog(), Slic3r::GUI::EditGCodeDialog::EditGCodeDialog(), Slic3r::GUI::FileArchiveDialog::FileArchiveDialog(), Slic3r::GUI::MsgNoUpdates::MsgNoUpdates(), Slic3r::GUI::MsgUpdateForced::MsgUpdateForced(), Slic3r::GUI::OAuthDialog::OAuthDialog(), Slic3r::GUI::ParamsDialog::ParamsDialog(), Slic3r::GUI::PhysicalPrinterDialog::PhysicalPrinterDialog(), Slic3r::GUI::SettingsDialog::SettingsDialog(), anonymous_namespace{3DPrinterOS.cpp}::TokenAuthDialog::TokenAuthDialog(), anonymous_namespace{3DPrinterOS.cpp}::UploadOptionsDialog::UploadOptionsDialog(), Slic3r::GUI::PublishSettingsDialog::add_row_ui(), Slic3r::GUI::DiffPresetDialog::complete_dialog_creation(), Slic3r::GUI::DiffPresetDialog::create_edit_sizer(), Slic3r::GUI::DiffPresetDialog::create_presets_sizer(), Slic3r::GUI::DiffPresetDialog::create_tree(), Slic3r::GUI::ElegooPrintHostSendDialog::init(), Slic3r::GUI::FlashforgePrintHostSendDialog::init(), Slic3r::GUI::PrintHostSendDialog::init(), Slic3r::GUI::AboutDialog::on_dpi_changed(), Slic3r::GUI::AuxiliaryDialog::on_dpi_changed(), Slic3r::GUI::BedShapeDialog::on_dpi_changed(), Slic3r::GUI::ConfigWizard::on_dpi_changed(), Slic3r::GUI::CopyrightsDialog::on_dpi_changed(), Slic3r::GUI::DiffPresetDialog::on_dpi_changed(), Slic3r::GUI::EditGCodeDialog::on_dpi_changed(), Slic3r::GUI::FileArchiveDialog::on_dpi_changed(), Slic3r::GUI::OAuthDialog::on_dpi_changed(), Slic3r::GUI::ObjectTableDialog::on_dpi_changed(), Slic3r::GUI::ParamsDialog::on_dpi_changed(), Slic3r::GUI::PhysicalPrinterDialog::on_dpi_changed(), Slic3r::GUI::PrintHostQueueDialog::on_dpi_changed(), Slic3r::GUI::PurgeModeDialog::on_dpi_changed(), Slic3r::GUI::SavePresetDialog::on_dpi_changed(), Slic3r::GUI::SendSystemInfoDialog::on_dpi_changed(), Slic3r::GUI::SettingsDialog::on_dpi_changed(), and Slic3r::GUI::UnsavedChangesDialog::on_dpi_changed().

Here is the caller graph for this function:

◆ enable_force_rescale()

void Slic3r::GUI::DPIAware< wxDialog >::enable_force_rescale ( )
inlineinherited
206{ m_force_rescale = true; }

◆ EndModal()

void Slic3r::GUI::DPIDialog::EndModal ( int retCode)
inlineoverrideinherited
306 {
307 if (!dialogStack.empty() && dialogStack.front() != this) {
308 // This is a bug in wxWidgets
309 // when the dialog is not top modal dialog, EndModal() just hide dialog without quit
310 // the modal event loop. And the modal event loop blocks us from bottom widgets.
311 // Solution: let user click it manually or close outside. FIXME
312 BOOST_LOG_TRIVIAL(warning) << "DPIAware::EndModal Error: dialogStack is not empty, but top dialog is not this one. retCode=" << retCode;
313 return;
314 }
315
316 return wxDialog::EndModal(retCode);
317 }
std::deque< wxDialog * > dialogStack
Definition GUI_Utils.cpp:549

References Slic3r::GUI::dialogStack.

Referenced by Slic3r::GUI::CloneDialog::CloneDialog(), Slic3r::GUI::ConfigWizard::ConfigWizard(), Slic3r::GUI::CreatePresetSuccessfulDialog::CreatePresetSuccessfulDialog(), Slic3r::GUI::DeleteConfirmDialog::DeleteConfirmDialog(), Slic3r::GUI::DesignVariableDialog::DesignVariableDialog(), Slic3r::GUI::anonymous_namespace{PrintHostDialogs.cpp}::FlashforgeSlotDialog::FlashforgeSlotDialog(), Slic3r::GUI::GuideFrame::GuideFrame(), Slic3r::GUI::InputIpAddressDialog::InputIpAddressDialog(), Slic3r::GUI::ManualNozzleCountDialog::ManualNozzleCountDialog(), Slic3r::GUI::MsgUpdateConfig::MsgUpdateConfig(), Slic3r::GUI::MsgUpdateForced::MsgUpdateForced(), Slic3r::GUI::MultiChoiceDialog::MultiChoiceDialog(), Slic3r::GUI::NetworkErrorDialog::NetworkErrorDialog(), Slic3r::GUI::NetworkPluginRestartDialog::NetworkPluginRestartDialog(), Slic3r::GUI::PartSkipConfirmDialog::PartSkipConfirmDialog(), Slic3r::GUI::PhysicalPrinterDialog::PhysicalPrinterDialog(), Slic3r::GUI::PlateNameEditDialog::PlateNameEditDialog(), Slic3r::GUI::PlateSettingsDialog::PlateSettingsDialog(), Slic3r::GUI::PublishSettingsDialog::PublishSettingsDialog(), Slic3r::GUI::SelectMachineDialog::SelectMachineDialog(), Slic3r::GUI::SendFailedConfirm::SendFailedConfirm(), Slic3r::GUI::SendSystemInfoDialog::SendSystemInfoDialog(), Slic3r::GUI::ShortcutCaptureDialog::ShortcutCaptureDialog(), Slic3r::GUI::SingleChoiceDialog::SingleChoiceDialog(), StepMeshDialog::StepMeshDialog(), Slic3r::GUI::SyncAmsInfoDialog::SyncAmsInfoDialog(), anonymous_namespace{3DPrinterOS.cpp}::TokenAuthDialog::TokenAuthDialog(), Slic3r::GUI::UpdatePluginDialog::UpdatePluginDialog(), Slic3r::GUI::UpdateVersionDialog::UpdateVersionDialog(), Slic3r::GUI::wgtDeviceNozzleRackUpgradeDlg::wgtDeviceNozzleRackUpgradeDlg(), Slic3r::GUI::SavePresetDialog::accept(), Slic3r::GUI::MsgDialog::add_button(), Slic3r::GUI::TipsDialog::add_button(), Slic3r::GUI::FilamentPickerDialog::BindEvents(), Slic3r::GUI::PluginPickerDialog::build_capability_ui(), Slic3r::GUI::BedShapeDialog::build_dialog(), Slic3r::GUI::PluginPickerDialog::build_ui(), Slic3r::GUI::UnsavedChangesDialog::close(), Slic3r::GUI::FileArchiveDialog::create_btn_sizer(), Slic3r::GUI::ColorDecomposeDialog::create_button_panel(), Slic3r::GUI::MixedFilamentDialog::create_button_panel(), Slic3r::GUI::CreateFilamentPresetDialog::create_dialog_buttons(), Slic3r::GUI::CreatePresetForPrinterDialog::create_dialog_buttons(), Slic3r::GUI::EditFilamentPresetDialog::create_dialog_buttons(), Slic3r::GUI::ExportConfigsDialog::create_dialog_buttons(), Slic3r::GUI::PreferencesDialog::create_item_language_combobox(), Slic3r::GUI::PreferencesDialog::create_item_region_combobox(), Slic3r::GUI::PreferencesDialog::create_items(), Slic3r::GUI::CreatePrinterPresetDialog::create_page1_dialog_buttons(), Slic3r::GUI::CreatePrinterPresetDialog::create_page2_dialog_buttons(), Slic3r::GUI::ExportConfigsDialog::data_init(), Slic3r::GUI::WebDialog::destroy_silently(), Slic3r::GUI::EditFilamentPresetDialog::edit_preset(), Slic3r::GUI::ConnectPrinterDialog::end_modal(), Slic3r::GUI::PrintHostSendDialog::EndModal(), Slic3r::GUI::ColorPickerDialog::finish(), Slic3r::GUI::WebDialog::finish(), Slic3r::GUI::Newer3mfVersionDialog::get_btn_sizer(), Slic3r::GUI::ScoreDialog::get_button_sizer(), Slic3r::GUI::WebViewHostDialog::handle_common_script_command(), Slic3r::GUI::ExportPresetBundleDialog::InitExportData(), Slic3r::GUI::SelectMachineDialog::navigate_to_timelapse_page(), Slic3r::GUI::BindMachineDialog::on_bind_success(), Slic3r::GUI::ConnectPrinterDialog::on_button_confirm(), Slic3r::GUI::RecenterDialog::on_button_confirm(), Slic3r::GUI::BindMachineDialog::on_cancel(), Slic3r::GUI::EditCalibrationHistoryDialog::on_cancel(), Slic3r::GUI::InputIpAddressDialog::on_cancel(), Slic3r::GUI::NewCalibrationHistoryDialog::on_cancel(), Slic3r::GUI::OAuthDialog::on_cancel(), Slic3r::GUI::PingCodeBindDialog::on_cancel(), Slic3r::GUI::SelectMachineDialog::on_cancel(), Slic3r::GUI::SendToPrinterDialog::on_cancel(), Slic3r::GUI::SyncAmsInfoDialog::on_cancel(), Slic3r::GUI::UnBindMachineDialog::on_cancel(), Slic3r::GUI::WebDialog::on_close_window(), Slic3r::GUI::NetworkPluginDownloadDialog::on_dont_ask(), Slic3r::GUI::NetworkPluginDownloadDialog::on_download(), Slic3r::GUI::EditDevNameDialog::on_edit_name(), Slic3r::GUI::ConfirmBeforeSendDialog::on_hide(), Slic3r::GUI::PrivacyUpdateDialog::on_hide(), Slic3r::GUI::ShortcutCaptureDialog::on_key(), Slic3r::GUI::TextureImportDialog::on_ok_clicked(), Slic3r::GUI::FileArchiveDialog::on_open_button(), Slic3r::GUI::NetworkPluginDownloadDialog::on_remind_later(), Slic3r::GUI::ProjectDropDialog::on_select_cancel(), Slic3r::GUI::SavePresetDialog::on_select_cancel(), Slic3r::GUI::ProjectDropDialog::on_select_ok(), Slic3r::GUI::SendMultiMachinePage::on_send(), Slic3r::GUI::NetworkPluginDownloadDialog::on_skip(), Slic3r::GUI::TextureImportDialog::on_skip_clicked(), Slic3r::GUI::NetworkPluginDownloadDialog::on_skip_version(), Slic3r::GUI::Cornering_Test_Dlg::on_start(), Slic3r::GUI::FlowRateCalibrationDialog::on_start(), Slic3r::GUI::Input_Shaping_Damp_Test_Dlg::on_start(), Slic3r::GUI::Input_Shaping_Freq_Test_Dlg::on_start(), Slic3r::GUI::MaxVolumetricSpeed_Test_Dlg::on_start(), Slic3r::GUI::PA_Calibration_Dlg::on_start(), Slic3r::GUI::Retraction_Test_Dlg::on_start(), Slic3r::GUI::Temp_Calibration_Dlg::on_start(), Slic3r::GUI::VFA_Test_Dlg::on_start(), Slic3r::GUI::CalibrationDialog::on_start_calibration(), Slic3r::GUI::UnBindMachineDialog::on_unbind_printer(), Slic3r::GUI::PartSkipDialog::OnApplyDialog(), anonymous_namespace{3DPrinterOS.cpp}::TokenAuthDialog::OnCancel(), Slic3r::GUI::AboutDialog::onCloseDialog(), Slic3r::GUI::CopyrightsDialog::onCloseDialog(), Slic3r::GUI::MultiNozzleSyncDialog::OnRackStatusReadingFinished(), Slic3r::GUI::GuideFrame::OnScriptMessage(), Slic3r::GUI::InputIpAddressDialog::OnTimer(), Slic3r::GUI::KBShortcutsDialog::open_mouse_preferences(), Slic3r::GUI::TroubleshootDialog::PackAll(), Slic3r::GUI::TroubleshootDialog::RebuildSystemProfiles(), Slic3r::GUI::SpeedDialWebDialog::run_action(), Slic3r::GUI::OAuthDialog::Show(), Slic3r::GUI::MultiNozzleSyncDialog::UpdateButton(), and Slic3r::GUI::CreatePrinterPresetDialog::validate_input_valid().

◆ force_rescale()

bool Slic3r::GUI::DPIAware< wxDialog >::force_rescale ( ) const
inlineinherited
201{ return m_force_rescale; }

◆ get_filament_variant_index()

int Slic3r::GUI::AMSMaterialsSetting::get_filament_variant_index ( const Preset & filament,
const std::string & nozzle_diameter_str )
protected
1532{
1533 PresetBundle *preset_bundle = wxGetApp().preset_bundle;
1534 if (!obj || !preset_bundle)
1535 return 0;
1536 const std::set<std::string> printer_names =
1537 preset_bundle->get_printer_names_by_printer_type_and_nozzle(DevPrinterConfigUtil::get_printer_display_name(obj->printer_type), nozzle_diameter_str);
1538 const Preset *printer = printer_names.empty() ? nullptr : preset_bundle->printers.find_preset(*printer_names.begin());
1539 if (!printer)
1540 return 0;
1541 const int extruder_id = obj->get_extruder_id_by_ams_id(std::to_string(ams_id));
1542 return PresetBundle::get_filament_variant_index(filament.config, printer->config, obj->get_preset_extruder_index(extruder_id),
1543 DevNozzle::ToNozzleVolumeType(obj->GetExtderSystem()->GetNozzleFlowType(extruder_id)));
1544}
static std::string get_printer_display_name(const std::string &type_str)
Definition DevConfigUtil.h:71
int ams_id
Definition AMSMaterialsSetting.hpp:149
MachineObject * obj
Definition AMSMaterialsSetting.hpp:148
static int get_filament_variant_index(const DynamicPrintConfig &filament_config, const DynamicPrintConfig &printer_config, int extruder_id, NozzleVolumeType nozzle_volume_type)
Definition PresetBundle.cpp:5220
@ Preset
Definition calib.hpp:39
static NozzleVolumeType ToNozzleVolumeType(const NozzleFlowType &type)
Definition DevNozzleSystem.cpp:52

References ams_id, Slic3r::Preset::config, Slic3r::PresetCollection::find_preset(), Slic3r::PresetBundle::get_filament_variant_index(), Slic3r::DevPrinterConfigUtil::get_printer_display_name(), Slic3r::PresetBundle::get_printer_names_by_printer_type_and_nozzle(), obj, Slic3r::PresetBundle::printers, and Slic3r::DevNozzle::ToNozzleVolumeType().

Referenced by on_select_filament(), and Popup().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ input_max_finish()

void Slic3r::GUI::AMSMaterialsSetting::input_max_finish ( )
554{
555 if (m_input_nozzle_max->GetTextCtrl()->GetValue().empty()) return;
556
557 auto val = std::atoi(m_input_nozzle_max->GetTextCtrl()->GetValue().c_str());
558
559 if (val < FILAMENT_MIN_TEMP || val > FILAMENT_MAX_TEMP) {
560 warning_text->Show();
561 }
562 else {
563 warning_text->Hide();
564 }
565 Layout();
566 Fit();
567}

References FILAMENT_MAX_TEMP, m_input_nozzle_max, and warning_text.

Referenced by create().

Here is the caller graph for this function:

◆ input_min_finish()

void Slic3r::GUI::AMSMaterialsSetting::input_min_finish ( )
539{
540 if (m_input_nozzle_min->GetTextCtrl()->GetValue().empty()) return;
541
542 auto val = std::atoi(m_input_nozzle_min->GetTextCtrl()->GetValue().c_str());
543
544 if (val < FILAMENT_MIN_TEMP || val > FILAMENT_MAX_TEMP) {
545 warning_text->Show();
546 } else {
547 warning_text->Hide();
548 }
549 Layout();
550 Fit();
551}

References FILAMENT_MAX_TEMP, m_input_nozzle_min, and warning_text.

Referenced by create().

Here is the caller graph for this function:

◆ is_new_scale_factor()

bool Slic3r::GUI::DPIAware< wxDialog >::is_new_scale_factor ( ) const
inlineprivateinherited
262{ return fabs(m_scale_factor - m_prev_scale_factor) > 0.001; }

◆ is_virtual_tray()

bool Slic3r::GUI::AMSMaterialsSetting::is_virtual_tray ( )
protected
1080{
1082 return true;
1083 return false;
1084}
#define VIRTUAL_TRAY_DEPUTY_ID
Definition DevDefs.h:90
#define VIRTUAL_TRAY_MAIN_ID
Definition DevDefs.h:89

References ams_id, VIRTUAL_TRAY_DEPUTY_ID, and VIRTUAL_TRAY_MAIN_ID.

Referenced by on_select_ok(), on_select_reset(), update_filament_editing(), and update_widgets().

Here is the caller graph for this function:

◆ load_favorite_filament_ids()

std::set< std::string > Slic3r::GUI::AMSMaterialsSetting::load_favorite_filament_ids ( ) const
protected
1148{
1149 std::set<std::string> favorite_ids;
1150 std::vector<std::string> values;
1151 const std::string serialized = wxGetApp().app_config->get(AMS_FAVORITE_FILAMENT_IDS_KEY);
1152 if (!serialized.empty() && Slic3r::unescape_strings_cstyle(serialized, values)) {
1153 favorite_ids.insert(values.begin(), values.end());
1154 }
1155 return favorite_ids;
1156}
static const char * AMS_FAVORITE_FILAMENT_IDS_KEY
Definition AMSMaterialsSetting.cpp:1137
bool unescape_strings_cstyle(const std::string &str, std::vector< std::string > &out)
Definition Config.cpp:173

References Slic3r::GUI::AMS_FAVORITE_FILAMENT_IDS_KEY, and Slic3r::unescape_strings_cstyle().

Referenced by rebuild_filament_dropdown_items(), toggle_favorite_filament(), and update_favorite_stars().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ normal_font()

◆ on_clr_picker()

void Slic3r::GUI::AMSMaterialsSetting::on_clr_picker ( wxMouseEvent & event)
protected
1059{
1060 if (m_view_only) return; // Orca: view-only disables color editing
1061 if(!m_is_third)
1062 return;
1063
1064 if (obj->is_in_printing() || obj->can_resume()) {
1065 if (!obj->is_support_filament_setting_inprinting) {
1066 return;
1067 }
1068 }
1069
1070 m_color_picker_popup.set_ams_colours(collect_ams_color_items(obj->GetFilaSystem().get()));
1072 m_color_picker_popup.set_def_colour(m_clr_picker->m_colour, m_clr_picker->m_cols, m_clr_picker->ctype);
1073 wxPoint img_pos = m_clr_picker->ClientToScreen(wxPoint(0, 0));
1074 wxPoint popup_pos(img_pos.x - m_color_picker_popup.GetSize().x - FromDIP(95), img_pos.y - FromDIP(65));
1075 m_color_picker_popup.Position(popup_pos, wxSize(0, 0));
1076 m_color_picker_popup.Popup();
1077}
bool m_view_only
Definition AMSMaterialsSetting.hpp:158
bool m_is_third
Definition AMSMaterialsSetting.hpp:155
std::string ams_filament_id
Definition AMSMaterialsSetting.hpp:152
static std::vector< ColorPickerPopup::ColorItem > collect_ams_color_items(DevFilaSystem *fila_system)
Definition AMSMaterialsSetting.cpp:107
static std::vector< ColorPickerPopup::ColorItem > collect_preset_color_items(const std::string &filament_id)
Definition AMSMaterialsSetting.cpp:137

References ams_filament_id, Slic3r::GUI::collect_ams_color_items(), Slic3r::GUI::collect_preset_color_items(), m_clr_picker, m_color_picker_popup, m_is_third, m_view_only, obj, and Slic3r::GUI::wxMouseEvent.

Referenced by create_panel_normal().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ on_dpi_changed()

void Slic3r::GUI::AMSMaterialsSetting::on_dpi_changed ( const wxRect & suggested_rect)
overrideprotectedvirtual

Implements Slic3r::GUI::DPIAware< wxDialog >.

1769{
1770 m_input_nozzle_max->GetTextCtrl()->SetSize(wxSize(-1, FromDIP(20)));
1771 m_input_nozzle_min->GetTextCtrl()->SetSize(wxSize(-1, FromDIP(20)));
1772 m_input_k_val->GetTextCtrl()->SetSize(wxSize(-1, FromDIP(20)));
1773 m_clr_picker->msw_rescale();
1774 degree->msw_rescale();
1775 bitmap_max_degree->SetBitmap(degree->bmp());
1776 bitmap_min_degree->SetBitmap(degree->bmp());
1777 m_button_reset->Rescale(); // ORCA
1778 m_button_confirm->Rescale(); // ORCA
1779 m_button_close->Rescale(); // ORCA
1780 // An open list would keep the measurements of the old stars, so close it before replacing them.
1781 m_comboBox_filament->CloseDropdown();
1782 m_star_filled.msw_rescale();
1783 m_star_empty.msw_rescale();
1785 this->Refresh();
1786}
void update_favorite_stars()
Definition AMSMaterialsSetting.cpp:1226

References bitmap_max_degree, bitmap_min_degree, degree, m_button_close, m_button_confirm, m_button_reset, m_clr_picker, m_comboBox_filament, m_input_k_val, m_input_nozzle_max, m_input_nozzle_min, m_star_empty, m_star_filled, and update_favorite_stars().

Here is the call graph for this function:

◆ on_picker_color()

void Slic3r::GUI::AMSMaterialsSetting::on_picker_color ( wxCommandEvent & color)
1046{
1047 std::vector<wxColour> colors = m_color_picker_popup.get_selected_colours();
1048 if (colors.empty()) {
1049 unsigned int color_num = event.GetInt();
1050 colors.emplace_back(color_num >> 24 & 0xFF, color_num >> 16 & 0xFF, color_num >> 8 & 0xFF, color_num & 0xFF);
1051 }
1052
1053 set_ctype(m_color_picker_popup.get_selected_ctype());
1054 set_color(colors.front());
1055 set_colors(colors);
1056}
void set_ctype(int ctype)
Definition AMSMaterialsSetting.cpp:1040
void set_colors(std::vector< wxColour > colors)
Definition AMSMaterialsSetting.cpp:1022
void set_color(wxColour color)
Definition AMSMaterialsSetting.cpp:999

References m_color_picker_popup, set_color(), set_colors(), and set_ctype().

Referenced by create().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ on_select_cali_result()

void Slic3r::GUI::AMSMaterialsSetting::on_select_cali_result ( wxCommandEvent & evt)
protected
1519{
1520 m_pa_cali_select_id = evt.GetSelection();
1521 if (m_pa_cali_select_id >= 0) {
1524 }
1525 else{
1526 m_input_k_val->GetTextCtrl()->SetValue(std::to_string(0.00));
1527 m_input_n_val->GetTextCtrl()->SetValue(std::to_string(0.00));
1528 }
1529}
int m_pa_cali_select_id
Definition AMSMaterialsSetting.hpp:224
std::vector< PACalibResult > m_pa_profile_items
Definition AMSMaterialsSetting.hpp:167
static std::string float_to_string_with_precision(float value, int precision=3)
Definition AMSMaterialsSetting.cpp:78

References Slic3r::GUI::float_to_string_with_precision(), m_input_k_val, m_input_n_val, m_pa_cali_select_id, and m_pa_profile_items.

Referenced by ~AMSMaterialsSetting(), and create().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ on_select_close()

void Slic3r::GUI::AMSMaterialsSetting::on_select_close ( wxCommandEvent & event)
protected
995{
996 Close();
997}

Referenced by create().

Here is the caller graph for this function:

◆ on_select_filament()

void Slic3r::GUI::AMSMaterialsSetting::on_select_filament ( wxCommandEvent & evt)
protected
1547{
1548 // Get the flag whether to open the filament setting dialog from the device page
1549 int* from_printer = static_cast<int*>(m_comboBox_filament->GetClientData());
1550
1551 m_filament_type = "";
1552 const FilamentInfos* selected_info = selected_filament_info();
1553 PresetBundle* preset_bundle = wxGetApp().preset_bundle;
1554 if (preset_bundle) {
1555 std::ostringstream stream;
1556 if (obj) {
1557 // Defensive: this dialog is opened only from StatusPanel (BBL-only) today, so the fallback fires
1558 // only during the brief BBL startup window before firmware reports nozzle info. Without this,
1559 // the "0.0" lookup string returns an empty set and filament lookup yields no results.
1560 float machine_diameter = obj->GetExtderSystem()->GetNozzleDiameter(0);
1561 if (machine_diameter == 0.0f) {
1562 const ConfigOption *opt = preset_bundle->printers.get_selected_preset().config.option("nozzle_diameter");
1563 if (opt) {
1564 const auto &nd = static_cast<const ConfigOptionFloats *>(opt)->values;
1565 if (!nd.empty()) machine_diameter = nd.size() > 1 ? nd[1] : nd[0];
1566 }
1567 }
1568 stream << std::fixed << std::setprecision(1) << machine_diameter;
1569 }
1570 std::string nozzle_diameter_str = stream.str();
1571 // Resolve the selection against the same list Popup() built the dropdown from, so the two
1572 // halves of the dialog cannot disagree about which filaments this machine can use.
1573 if (selected_info) {
1574 const std::string& filament_id = selected_info->filament_id;
1575 for (Preset *it : preset_bundle->get_filament_presets_for_machine(
1576 DevPrinterConfigUtil::get_printer_display_name(obj->printer_type), nozzle_diameter_str, obj->is_support_user_preset)) {
1577 if (it->filament_id != filament_id)
1578 continue;
1579 // ) if nozzle_temperature_range is found
1580 const int variant_index = get_filament_variant_index(*it, nozzle_diameter_str);
1581 ConfigOption* opt_min = it->config.option("nozzle_temperature_range_low");
1582 if (opt_min) {
1583 ConfigOptionInts* opt_min_ints = dynamic_cast<ConfigOptionInts*>(opt_min);
1584 if (opt_min_ints) {
1585 wxString text_nozzle_temp_min = wxString::Format("%d", opt_min_ints->get_at(variant_index));
1586 m_input_nozzle_min->GetTextCtrl()->SetValue(text_nozzle_temp_min);
1587 }
1588 }
1589 ConfigOption* opt_max = it->config.option("nozzle_temperature_range_high");
1590 if (opt_max) {
1591 ConfigOptionInts* opt_max_ints = dynamic_cast<ConfigOptionInts*>(opt_max);
1592 if (opt_max_ints) {
1593 wxString text_nozzle_temp_max = wxString::Format("%d", opt_max_ints->get_at(variant_index));
1594 m_input_nozzle_max->GetTextCtrl()->SetValue(text_nozzle_temp_max);
1595 }
1596 }
1597 ConfigOption* opt_type = it->config.option("filament_type");
1598 bool found_filament_type = false;
1599 if (opt_type) {
1600 ConfigOptionStrings* opt_type_strs = dynamic_cast<ConfigOptionStrings*>(opt_type);
1601 if (opt_type_strs) {
1602 found_filament_type = true;
1603 //m_filament_type = opt_type_strs->get_at(0);
1604 std::string display_filament_type;
1605 m_filament_type = it->config.get_filament_type(display_filament_type);
1606 }
1607 }
1608 if (!found_filament_type)
1609 m_filament_type = "";
1610
1611 break;
1612 }
1613 }
1614 }
1615 if (m_input_nozzle_min->GetTextCtrl()->GetValue().IsEmpty()) {
1616 m_input_nozzle_min->GetTextCtrl()->SetValue("0");
1617 }
1618 if (m_input_nozzle_max->GetTextCtrl()->GetValue().IsEmpty()) {
1619 m_input_nozzle_max->GetTextCtrl()->SetValue("0");
1620 }
1621
1622 m_filament_selection = evt.GetSelection();
1623
1624 //reset cali
1625 int cali_select_idx = -1;
1626
1627 if ( !this->obj || m_filament_selection < 0 || !selected_info) {
1628 m_input_k_val->Enable(false);
1629 m_input_n_val->Enable(false);
1630 m_button_confirm->Disable(); // ORCA No need to change style
1631 m_comboBox_cali_result->Clear();
1632 m_comboBox_cali_result->SetValue(wxEmptyString);
1633 m_input_k_val->GetTextCtrl()->SetValue(wxEmptyString);
1634 m_input_n_val->GetTextCtrl()->SetValue(wxEmptyString);
1635 m_comboBox_filament->SetClientData(new int(0));
1636 return;
1637 }
1638 else {
1639 m_button_confirm->Enable(true); // ORCA No need to change style
1640 }
1641
1642 //filament id
1643 ams_filament_id = "";
1644 ams_setting_id = "";
1645
1646 if (selected_info) {
1647 ams_filament_id = selected_info->filament_id;
1648 ams_setting_id = selected_info->setting_id;
1649 }
1650
1651 wxArrayString items;
1652 m_pa_profile_items.clear();
1653 m_comboBox_cali_result->SetValue(wxEmptyString);
1654
1655 auto get_cali_index = [this](const std::string& str) -> int{
1656 for (int i = 0; i < int(m_pa_profile_items.size()); ++i) {
1657 if (m_pa_profile_items[i].name == str)
1658 return i;
1659 }
1660 return 0;
1661 };
1662
1663 int extruder_id = obj->get_extruder_id_by_ams_id(std::to_string(ams_id));
1664 if (obj->is_nozzle_flow_type_supported() && (obj->GetExtderSystem()->GetNozzleFlowType(extruder_id) == NozzleFlowType::NONE_FLOWTYPE))
1665 {
1666 MessageDialog dlg(nullptr, _L("The nozzle flow is not set. Please set the nozzle flow rate before editing the filament.\n'Device -> Print parts'"), _L("Warning"), wxICON_WARNING | wxOK);
1667 dlg.ShowModal();
1668 }
1669
1670 NozzleFlowType nozzle_flow_type = obj->GetExtderSystem()->GetNozzleFlowType(extruder_id);
1672 if (nozzle_flow_type != NozzleFlowType::NONE_FLOWTYPE)
1673 {
1674 nozzle_volume_type = NozzleVolumeType(nozzle_flow_type - 1);
1675 }
1676
1677 if (obj->cali_version >= 0) {
1678 // add default item
1679 PACalibResult default_item;
1680 default_item.cali_idx = -1;
1681 default_item.filament_id = ams_filament_id;
1682 if (obj->GetConfig()->SupportCalibrationPA_FlowAuto()) {
1683 default_item.k_value = -1;
1684 default_item.n_coef = -1;
1685 }
1686 else {
1687 get_default_k_n_value(ams_filament_id, default_item.k_value, default_item.n_coef);
1688 }
1689 m_pa_profile_items.emplace_back(default_item);
1690 items.push_back(_L("Default"));
1691
1692 m_input_k_val->GetTextCtrl()->SetValue(wxEmptyString);
1693 std::vector<PACalibResult> cali_history = this->obj->pa_calib_tab;
1694 for (auto cali_item : cali_history) {
1695 if (cali_item.filament_id == ams_filament_id) {
1696 if (obj->is_multi_extruders() && (cali_item.extruder_id != extruder_id || cali_item.nozzle_volume_type != nozzle_volume_type)) {
1697 continue;
1698 }
1699 items.push_back(from_u8(cali_item.name));
1700 m_pa_profile_items.push_back(cali_item);
1701 }
1702 }
1703
1704 m_comboBox_cali_result->Set(items);
1706 if (from_printer && (*from_printer == 1)) {
1707 for (auto slot : obj->vt_slot) {
1708 if (slot.id == std::to_string(ams_id))
1709 cali_select_idx = CalibUtils::get_selected_calib_idx(m_pa_profile_items, slot.cali_idx);
1710 }
1711
1712 if (cali_select_idx >= 0)
1713 m_comboBox_cali_result->SetSelection(cali_select_idx);
1714 else
1715 m_comboBox_cali_result->SetSelection(0);
1716 }
1717 else {
1718 int index = get_cali_index(m_comboBox_filament->GetLabel().ToStdString());
1719 m_comboBox_cali_result->SetSelection(index);
1720 }
1721 }
1722 else {
1723 if (from_printer && (*from_printer == 1)) {
1724 DevAmsTray* selected_tray = this->obj->GetFilaSystem()->GetAmsTray(std::to_string(ams_id), std::to_string(slot_id));
1725 if (!selected_tray)
1726 {
1727 return;
1728 }
1729
1730 cali_select_idx = CalibUtils::get_selected_calib_idx(m_pa_profile_items, selected_tray->cali_idx);
1731 if (cali_select_idx < 0)
1732 {
1733 BOOST_LOG_TRIVIAL(info) << "extrusion_cali_status_error: cannot find pa profile, ams_id = " << ams_id
1734 << ", slot_id = " << slot_id << ", cali_idx = " << selected_tray->cali_idx;
1735 cali_select_idx = 0;
1736 }
1737 m_comboBox_cali_result->SetSelection(cali_select_idx);
1738 }
1739 else {
1740 int index = get_cali_index(m_comboBox_filament->GetLabel().ToStdString());
1741 m_comboBox_cali_result->SetSelection(index);
1742 }
1743 }
1744
1745 if (cali_select_idx >= 0) {
1746 m_input_k_val->GetTextCtrl()->SetValue(float_to_string_with_precision(m_pa_profile_items[cali_select_idx].k_value));
1747 m_input_n_val->GetTextCtrl()->SetValue(float_to_string_with_precision(m_pa_profile_items[cali_select_idx].n_coef));
1748 }
1749 else {
1750 m_input_k_val->GetTextCtrl()->SetValue(float_to_string_with_precision(m_pa_profile_items[0].k_value));
1751 m_input_n_val->GetTextCtrl()->SetValue(float_to_string_with_precision(m_pa_profile_items[0].n_coef));
1752 }
1753 }
1754 else {
1755 if (!ams_filament_id.empty()) {
1756 //m_input_k_val->GetTextCtrl()->SetValue("0.00");
1757 m_input_k_val->Enable(true);
1758 }
1759 else {
1760 //m_input_k_val->GetTextCtrl()->SetValue("0.00");
1761 m_input_k_val->Disable();
1762 }
1763 }
1764
1765 m_comboBox_filament->SetClientData(new int(0));
1766}
size_t size() const override
Definition Config.hpp:722
std::string ams_setting_id
Definition AMSMaterialsSetting.hpp:153
std::string m_filament_type
Definition AMSMaterialsSetting.hpp:163
int slot_id
Definition AMSMaterialsSetting.hpp:150
int get_filament_variant_index(const Preset &filament, const std::string &nozzle_diameter_str)
Definition AMSMaterialsSetting.cpp:1531
int m_filament_selection
Definition AMSMaterialsSetting.hpp:222
static int get_selected_calib_idx(const std::vector< PACalibResult > &pa_calib_values, int cali_idx)
Definition CalibUtils.cpp:1459
void get_default_k_n_value(const std::string &filament_id, float &k, float &n)
Definition CalibUtils.cpp:103
wxString from_u8(const std::string &str)
Definition GUI.cpp:544
NozzleVolumeType
Definition PrintConfig.hpp:618
@ nvtStandard
Definition PrintConfig.hpp:619
NozzleFlowType
Definition DevDefs.h:116
@ NONE_FLOWTYPE
Definition DevDefs.h:117
ConfigOptionIntsTempl< false > ConfigOptionInts
Definition Config.hpp:1154
zaa_minimize_perimeter_height nozzle_volume_type((ConfigOptionStrings, extruder_ams_count))((ConfigOptionStrings
ConfigOptionFloatsTempl< false > ConfigOptionFloats
Definition Config.hpp:1015

References _L, ams_filament_id, ams_id, ams_setting_id, Slic3r::DevAmsTray::cali_idx, Slic3r::PACalibResult::cali_idx, Slic3r::Preset::config, Slic3r::GUI::AMSMaterialsSetting::FilamentInfos::filament_id, Slic3r::PACalibResult::filament_id, Slic3r::GUI::float_to_string_with_precision(), Slic3r::GUI::from_u8(), Slic3r::ConfigOptionVector< int >::get_at(), Slic3r::GUI::get_default_k_n_value(), Slic3r::PresetBundle::get_filament_presets_for_machine(), get_filament_variant_index(), Slic3r::DevPrinterConfigUtil::get_printer_display_name(), Slic3r::GUI::CalibUtils::get_selected_calib_idx(), Slic3r::PresetCollection::get_selected_preset(), Slic3r::PACalibResult::k_value, m_button_confirm, m_comboBox_cali_result, m_comboBox_filament, m_filament_selection, m_filament_type, m_input_k_val, m_input_n_val, m_input_nozzle_max, m_input_nozzle_min, m_pa_profile_items, Slic3r::PACalibResult::n_coef, Slic3r::NONE_FLOWTYPE, Slic3r::nozzle_volume_type(), Slic3r::nvtStandard, obj, Slic3r::ConfigBase::option(), Slic3r::PresetBundle::printers, selected_filament_info(), Slic3r::GUI::AMSMaterialsSetting::FilamentInfos::setting_id, Slic3r::GUI::DPIAware< P >::ShowModal(), slot_id, VIRTUAL_TRAY_DEPUTY_ID, and VIRTUAL_TRAY_MAIN_ID.

Referenced by ~AMSMaterialsSetting(), and create().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ on_select_ok()

void Slic3r::GUI::AMSMaterialsSetting::on_select_ok ( wxCommandEvent & event)
protected
785{
786 if (!obj)
787 return;
788
789 if (m_view_only) return; // Orca: view-only never commits
790
791 //get filament id
792 ams_filament_id = "";
793 ams_setting_id = "";
794
795 // the combobox item
796 const FilamentInfos* selected_info = selected_filament_info();
797 const std::string filament_id = selected_info ? selected_info->filament_id : std::string();
798
799 // check filament info (rack-gated per-nozzle blacklist evaluation)
800 PresetBundle* preset_bundle = wxGetApp().preset_bundle;
801 const auto& fila_check_res = sCheckFilamentInfo(preset_bundle, obj, ams_id, slot_id,
802 filament_id, ams_filament_id, ams_setting_id);
803
804 if (const auto& prohibit_items = fila_check_res.get_items_by_action("prohibition"); !prohibit_items.empty()) {
805 wxString info_msg;
806 for (const auto& item : prohibit_items) { info_msg += item.info_msg + "\n"; }
807 MessageDialog msg_wingow(nullptr, info_msg, _L("Error"), wxICON_WARNING | wxOK);
808 msg_wingow.ShowModal();
809 return;
810 }
811
812 if (const auto& warning_items = fila_check_res.get_items_by_action("warning"); !warning_items.empty()) {
813 std::vector<FilamentWarningInfo> infos;
814 for (const auto& item : warning_items) {
815 FilamentWarningInfo winfo;
816 winfo.info_msg = item.info_msg;
817 winfo.wiki_url = item.wiki_url;
818 infos.emplace_back(winfo);
819 }
820 FilamentWarningDialog msg_window(nullptr, _L("Warning"), infos);
821 msg_window.ShowModal();
822 }
823
824 wxString nozzle_temp_min = m_input_nozzle_min->GetTextCtrl()->GetValue();
825 auto filament = m_comboBox_filament->GetValue();
826
827 wxString nozzle_temp_max = m_input_nozzle_max->GetTextCtrl()->GetValue();
828
829 long nozzle_temp_min_int, nozzle_temp_max_int;
830 nozzle_temp_min.ToLong(&nozzle_temp_min_int);
831 nozzle_temp_max.ToLong(&nozzle_temp_max_int);
832 wxColour color = m_clr_picker->m_colour;
833 std::string tray_color = colour_to_ams_string(color);
834 std::vector<std::string> tray_colors;
835 int tray_ctype = 2;
836 // Only firmware advertising fun2[23] receives the manual multi-color fields.
837 if (obj->is_support_filament_manual_multi_color) {
838 for (const wxColour& selected_color : m_clr_picker->m_cols) {
839 tray_colors.emplace_back(colour_to_ams_string(selected_color));
840 }
841 if (tray_colors.empty()) {
842 tray_colors.emplace_back(tray_color);
843 }
844 tray_ctype = tray_colors.size() > 1 ? m_clr_picker->ctype : 2;
845 }
846
847 if (ams_filament_id.empty() || nozzle_temp_min.empty() || nozzle_temp_max.empty() || m_filament_type.empty()) {
848 BOOST_LOG_TRIVIAL(trace) << "Invalid Setting id";
849 MessageDialog msg_dlg(nullptr, _L("You need to select the material type and color first."), wxEmptyString, wxICON_WARNING | wxOK);
850 msg_dlg.ShowModal();
851 return;
852 }
853
854
855 // Orca: log the tray payload this dialog hands the printer, so the filament_id resolved from the
856 // dropdown selection can be checked against the tray_info_idx the AMS actually receives. A
857 // BBL-tagged (RFID) tray is read-only here, so nothing is published for it.
858 BOOST_LOG_TRIVIAL(info) << "ams_materials_setting: " << (m_is_third ? "sending" : "NOT sending (BBL RFID tray, read-only)")
859 << ", ams_id = " << ams_id << ", slot_id = " << slot_id
860 << ", selected = " << m_comboBox_filament->GetValue().ToStdString()
861 << ", tray_info_idx (filament_id) = " << ams_filament_id
862 << ", setting_id = " << ams_setting_id
863 << ", tray_type = " << m_filament_type
864 << ", tray_color = " << tray_color
865 << ", nozzle_temp_min = " << nozzle_temp_min_int
866 << ", nozzle_temp_max = " << nozzle_temp_max_int;
867
868 // set filament
869 if (m_is_third) {
870 obj->command_ams_filament_settings(ams_id, slot_id, ams_filament_id, ams_setting_id, tray_color, m_filament_type, nozzle_temp_min_int, nozzle_temp_max_int,
871 tray_colors, tray_ctype);
872
873 // Refresh the edited tray immediately while its MQTT acknowledgement is pending.
874 DevAmsTray* tray = nullptr;
875 if (is_virtual_tray()) {
876 for (auto& virtual_tray : obj->vt_slot) {
877 if (virtual_tray.id == std::to_string(ams_id)) {
878 tray = &virtual_tray;
879 break;
880 }
881 }
882 } else {
883 tray = obj->GetFilaSystem()->GetAmsTray(std::to_string(ams_id), std::to_string(slot_id));
884 }
885 if (tray) {
886 tray->color = tray_color;
887 tray->cols = tray_colors;
888 tray->ctype = tray_ctype;
889 tray->set_hold_count();
890 }
891 }
892
893 //reset param
894 wxString k_text = m_input_k_val->GetTextCtrl()->GetValue();
895 wxString n_text = m_input_n_val->GetTextCtrl()->GetValue();
896
897 if (obj->cali_version <= -1 && (obj->get_printer_series() != PrinterSeries::SERIES_X1) && !ExtrusionCalibration::check_k_validation(k_text)) {
898 wxString k_tips = wxString::Format(_L("Please input a valid value (K in %.1f~%.1f)"), MIN_PA_K_VALUE, MAX_PA_K_VALUE);
899 wxString kn_tips = wxString::Format(_L("Please input a valid value (K in %.1f~%.1f, N in %.1f~%.1f)"), MIN_PA_K_VALUE, MAX_PA_K_VALUE, 0.6, 2.0);
900 MessageDialog msg_dlg(nullptr, k_tips, wxEmptyString, wxICON_WARNING | wxOK);
901 msg_dlg.ShowModal();
902 return;
903 }
904
905 // set k / n value
906 if (is_virtual_tray()) {
907 double k = 0.0;
908 try {
909 k_text.ToDouble(&k);
910 }
911 catch (...) {
912 ;
913 }
914 double n = 0.0;
915 try {
916 n_text.ToDouble(&n);
917 }
918 catch (...) {
919 ;
920 }
921
922 auto vt_tray = ams_id;
923 if (!obj->is_enable_np) {
924 vt_tray = VIRTUAL_TRAY_DEPUTY_ID;
925 }
926
927 if (obj->cali_version >= 0) {
928 PACalibIndexInfo select_index_info;
929 select_index_info.tray_id = vt_tray;
930 select_index_info.ams_id = ams_id;
931 select_index_info.slot_id = 0;
932 select_index_info.nozzle_diameter = obj->GetExtderSystem()->GetNozzleDiameter(0);
933
934 auto cali_select_id = m_comboBox_cali_result->GetSelection();
935 if (m_pa_profile_items.size() > 0 && cali_select_id >= 0) {
936 select_index_info.cali_idx = m_pa_profile_items[cali_select_id].cali_idx;
937 select_index_info.filament_id = m_pa_profile_items[cali_select_id].filament_id;
938 }
939 else { // default item
940 select_index_info.cali_idx = -1;
941 select_index_info.filament_id = ams_filament_id;
942 }
943
944 CalibUtils::select_PA_calib_result(select_index_info);
945 }
946 else {
947 obj->command_extrusion_cali_set(vt_tray, "", "", k, n);
948 }
949 }
950 else {
951 int cali_tray_id = ams_id * 4 + slot_id;
952 double k = 0.0;
953 try {
954 k_text.ToDouble(&k);
955 }
956 catch (...) {
957 ;
958 }
959
960 double n = 0.0;
961 try {
962 n_text.ToDouble(&n);
963 }
964 catch (...) {
965 ;
966 }
967
968 if (obj->cali_version >= 0) {
969 PACalibIndexInfo select_index_info;
970 select_index_info.tray_id = cali_tray_id;
971 select_index_info.ams_id = ams_id;
972 select_index_info.slot_id = slot_id;
973 select_index_info.nozzle_diameter = obj->GetExtderSystem()->GetNozzleDiameter(0);
974
975 auto cali_select_id = m_comboBox_cali_result->GetSelection();
976 if (m_pa_profile_items.size() > 0 && cali_select_id > 0) {
977 select_index_info.cali_idx = m_pa_profile_items[cali_select_id].cali_idx;
978 select_index_info.filament_id = m_pa_profile_items[cali_select_id].filament_id;
979 }
980 else { // default item
981 select_index_info.cali_idx = -1;
982 select_index_info.filament_id = ams_filament_id;
983 }
984
985 CalibUtils::select_PA_calib_result(select_index_info);
986 }
987 else {
988 obj->command_extrusion_cali_set(cali_tray_id, "", "", k, n);
989 }
990 }
991 Close();
992}
@ SERIES_X1
Definition DevDefs.h:35
bool is_virtual_tray()
Definition AMSMaterialsSetting.cpp:1079
static void select_PA_calib_result(const PACalibIndexInfo &pa_calib_info)
Definition CalibUtils.cpp:647
static bool check_k_validation(wxString k_text)
Definition ExtrusionCalibration.cpp:492
const double MAX_PA_K_VALUE
Definition CalibUtils.cpp:68
static std::string colour_to_ams_string(const wxColour &color)
Definition AMSMaterialsSetting.cpp:88
static DevFilaBlacklist::CheckResult sCheckFilamentInfo(PresetBundle *preset_bundle, MachineObject *obj, int ams_id, int slot_id, const std::string &filament_id, std::string &ams_filament_id, std::string &ams_setting_id)
Definition AMSMaterialsSetting.cpp:711
const double MIN_PA_K_VALUE
Definition CalibUtils.cpp:67
void trace(unsigned int level, const char *message)
Definition utils.cpp:247

References _L, ams_filament_id, ams_id, Slic3r::PACalibIndexInfo::ams_id, ams_setting_id, Slic3r::PACalibIndexInfo::cali_idx, Slic3r::GUI::ExtrusionCalibration::check_k_validation(), Slic3r::DevAmsTray::color, Slic3r::GUI::colour_to_ams_string(), Slic3r::DevAmsTray::cols, Slic3r::DevAmsTray::ctype, Slic3r::GUI::AMSMaterialsSetting::FilamentInfos::filament_id, Slic3r::PACalibIndexInfo::filament_id, Slic3r::GUI::FilamentWarningInfo::info_msg, is_virtual_tray(), m_clr_picker, m_comboBox_cali_result, m_comboBox_filament, m_filament_type, m_input_k_val, m_input_n_val, m_input_nozzle_max, m_input_nozzle_min, m_is_third, m_pa_profile_items, m_view_only, Slic3r::GUI::MAX_PA_K_VALUE, Slic3r::GUI::MIN_PA_K_VALUE, Slic3r::PACalibIndexInfo::nozzle_diameter, obj, Slic3r::GUI::sCheckFilamentInfo(), Slic3r::GUI::CalibUtils::select_PA_calib_result(), selected_filament_info(), SERIES_X1, Slic3r::DevAmsTray::set_hold_count(), Slic3r::GUI::DPIAware< P >::ShowModal(), slot_id, Slic3r::PACalibIndexInfo::slot_id, Slic3r::trace(), Slic3r::PACalibIndexInfo::tray_id, VIRTUAL_TRAY_DEPUTY_ID, and Slic3r::GUI::FilamentWarningInfo::wiki_url.

Referenced by create().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ on_select_reset()

void Slic3r::GUI::AMSMaterialsSetting::on_select_reset ( wxCommandEvent & event)
protected
621 {
622 if (m_view_only) return; // Orca: view-only never commits
623 MessageDialog msg_dlg(nullptr, _L("Are you sure you want to clear the filament information?"), wxEmptyString, wxICON_WARNING | wxOK | wxCANCEL);
624 auto result = msg_dlg.ShowModal();
625 if (result != wxID_OK)
626 return;
627
628 m_input_nozzle_min->GetTextCtrl()->SetValue("");
629 m_input_nozzle_max->GetTextCtrl()->SetValue("");
630 ams_filament_id = "";
631 ams_setting_id = "";
633 wxString k_text = "0.000";
634 wxString n_text = "0.000";
635 m_filament_type = "";
636 long nozzle_temp_min_int = 0;
637 long nozzle_temp_max_int = 0;
638 wxColour color = *wxWHITE;
639 char col_buf[10];
640 sprintf(col_buf, "%02X%02X%02X00", (int)color.Red(), (int)color.Green(), (int)color.Blue());
641 std::string color_str; // reset use empty string
642
643 std::string selected_ams_id;
644 PresetBundle *preset_bundle = wxGetApp().preset_bundle;
645 if (preset_bundle) {
646 const FilamentInfos* selected_info = selected_filament_info();
647 for (auto it = preset_bundle->filaments.begin(); it != preset_bundle->filaments.end(); it++) {
648 if (selected_info && it->filament_id.compare(selected_info->filament_id) == 0) {
649 selected_ams_id = it->filament_id;
650 break;
651 }
652 }
653 }
654
655 if (obj) {
656 if(m_is_third){
657 obj->command_ams_filament_settings(ams_id, slot_id, ams_filament_id, ams_setting_id, std::string(col_buf), m_filament_type, nozzle_temp_min_int,
658 nozzle_temp_max_int);
659 }
660
661 // set k / n value
662 if (obj->cali_version <= -1 && obj->get_printer_series() == PrinterSeries::SERIES_P1P) {
663 // set extrusion cali ratio
664 int cali_tray_id = ams_id * 4 + slot_id;
665
666 double k = 0.0;
667 try {
668 k_text.ToDouble(&k);
669 }
670 catch (...) {
671 ;
672 }
673
674 double n = 0.0;
675 try {
676 n_text.ToDouble(&n);
677 }
678 catch (...) {
679 ;
680 }
681 obj->command_extrusion_cali_set(cali_tray_id, "", "", k, n);
682 }
683 else {
684 PACalibIndexInfo select_index_info;
685 int tray_id = ams_id * 4 + slot_id;
686 if (is_virtual_tray()) {
687 tray_id = ams_id;
688 if (!obj->is_enable_np) {
689 tray_id = VIRTUAL_TRAY_DEPUTY_ID;
690 }
691 }
692 select_index_info.tray_id = tray_id;
693 select_index_info.ams_id = ams_id;
694 select_index_info.slot_id = slot_id;
695 select_index_info.nozzle_diameter = obj->GetExtderSystem()->GetNozzleDiameter(0);
696 select_index_info.cali_idx = -1;
697 select_index_info.filament_id = selected_ams_id;
698 CalibUtils::select_PA_calib_result(select_index_info);
699 }
700 }
701 Close();
702}
@ SERIES_P1P
Definition DevDefs.h:36

References _L, ams_filament_id, ams_id, Slic3r::PACalibIndexInfo::ams_id, ams_setting_id, Slic3r::PresetCollection::begin(), Slic3r::PACalibIndexInfo::cali_idx, Slic3r::PresetCollection::end(), Slic3r::GUI::AMSMaterialsSetting::FilamentInfos::filament_id, Slic3r::PACalibIndexInfo::filament_id, Slic3r::PresetBundle::filaments, is_virtual_tray(), m_filament_selection, m_filament_type, m_input_nozzle_max, m_input_nozzle_min, m_is_third, m_view_only, Slic3r::PACalibIndexInfo::nozzle_diameter, obj, Slic3r::GUI::CalibUtils::select_PA_calib_result(), selected_filament_info(), SERIES_P1P, Slic3r::GUI::DPIAware< P >::ShowModal(), slot_id, Slic3r::PACalibIndexInfo::slot_id, Slic3r::PACalibIndexInfo::tray_id, and VIRTUAL_TRAY_DEPUTY_ID.

Referenced by create().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ on_sys_color_changed()

◆ on_toggle_favorite_filament()

void Slic3r::GUI::AMSMaterialsSetting::on_toggle_favorite_filament ( wxCommandEvent & evt)
protected
1254{
1255 const int index = evt.GetInt();
1256 if (index < 0 || index >= int(m_filament_list_items.size()) || !m_filament_list_items[index].is_filament)
1257 return;
1258
1259 toggle_favorite_filament(m_filament_list_items[index].filament.filament_id);
1261 m_favorites_regroup = true;
1262}
void toggle_favorite_filament(const std::string &filament_id)
Definition AMSMaterialsSetting.cpp:1238
std::vector< FilamentListItem > m_filament_list_items
Definition AMSMaterialsSetting.hpp:243

References m_favorites_regroup, m_filament_list_items, toggle_favorite_filament(), and update_favorite_stars().

Referenced by ~AMSMaterialsSetting(), and create().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ paintEvent()

void Slic3r::GUI::AMSMaterialsSetting::paintEvent ( wxPaintEvent & evt)
523{
524 auto size = GetSize();
525 wxPaintDC dc(this);
526 dc.SetPen(wxPen(StateColor::darkModeColorFor(wxColour("#000000")), 1, wxPENSTYLE_SOLID));
527 dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH));
528 dc.DrawRectangle(0, 0, size.x, size.y);
529}
static wxColour darkModeColorFor(wxColour const &color)
Definition StateColor.cpp:219

References StateColor::darkModeColorFor().

Referenced by create().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Popup()

void Slic3r::GUI::AMSMaterialsSetting::Popup ( wxString filament = wxEmptyString,
wxString sn = wxEmptyString,
wxString temp_min = wxEmptyString,
wxString temp_max = wxEmptyString,
wxString k = wxEmptyString,
wxString n = wxEmptyString )
1265{
1266 if (!obj) return;
1268 // set default value
1269 if (k.IsEmpty())
1270 k = "0.000";
1271 if (n.IsEmpty())
1272 n = "0.000";
1273
1274 m_input_k_val->GetTextCtrl()->SetValue(k);
1275 m_input_n_val->GetTextCtrl()->SetValue(n);
1276
1277 wxString bambu_filament_name;
1278 std::unordered_map<wxString, wxString> query_filament_vendors;// some information for sort
1279 std::unordered_map<wxString, wxString> query_filament_types; //
1280
1281 std::set<std::string> filament_id_set;
1283 // The alias keyed map has to start empty: it is a member, so a stale alias left by an earlier
1284 // popup (a different printer, a different nozzle) would resolve to that printer's filament_id.
1285 map_filament_items.clear();
1286 PresetBundle * preset_bundle = wxGetApp().preset_bundle;
1287 std::ostringstream stream;
1288 // Defensive: this dialog is opened only from StatusPanel (BBL-only) today, so the fallback fires
1289 // only during the brief BBL startup window before firmware reports nozzle info. Without this,
1290 // the "0.0" lookup string returns an empty set and the filament dropdown goes blank.
1291 float machine_diameter = obj->GetExtderSystem()->GetNozzleDiameter(0);
1292 if (machine_diameter == 0.0f && preset_bundle) {
1293 const ConfigOption *opt = preset_bundle->printers.get_selected_preset().config.option("nozzle_diameter");
1294 if (opt) {
1295 const auto &nd = static_cast<const ConfigOptionFloats *>(opt)->values;
1296 if (!nd.empty()) machine_diameter = nd.size() > 1 ? nd[1] : nd[0];
1297 }
1298 }
1299 stream << std::fixed << std::setprecision(1) << machine_diameter;
1300 std::string nozzle_diameter_str = stream.str();
1301
1302 if (preset_bundle) {
1303 BOOST_LOG_TRIVIAL(trace) << "system_preset_bundle filament number=" << preset_bundle->filaments.size();
1304 for (Preset *filament_it : preset_bundle->get_filament_presets_for_machine(
1305 DevPrinterConfigUtil::get_printer_display_name(obj->printer_type), nozzle_diameter_str, obj->is_support_user_preset)) {
1306 if (!filament_id_set.insert(filament_it->filament_id).second)
1307 continue;
1308 const std::string alias = preset_bundle->filaments.get_preset_alias(*filament_it, true);
1309 if (alias.empty())
1310 continue;
1311
1312 m_sorted_filament_items.push_back(alias);
1313 _collect_filament_info(alias, *filament_it, query_filament_vendors, query_filament_types);
1314
1315 FilamentInfos filament_infos;
1316 filament_infos.filament_id = filament_it->filament_id;
1317 filament_infos.setting_id = filament_it->setting_id;
1318 map_filament_items[alias] = filament_infos;
1319
1320 if (filament_it->filament_id == ams_filament_id) {
1321 bambu_filament_name = from_u8(alias);
1322
1323
1324 // update if nozzle_temperature_range is found
1325 const int variant_index = get_filament_variant_index(*filament_it, nozzle_diameter_str);
1326 ConfigOption *opt_min = filament_it->config.option("nozzle_temperature_range_low");
1327 if (opt_min) {
1328 ConfigOptionInts *opt_min_ints = dynamic_cast<ConfigOptionInts *>(opt_min);
1329 if (opt_min_ints) {
1330 wxString text_nozzle_temp_min = wxString::Format("%d", opt_min_ints->get_at(variant_index));
1331 m_input_nozzle_min->GetTextCtrl()->SetValue(text_nozzle_temp_min);
1332 }
1333 }
1334 ConfigOption *opt_max = filament_it->config.option("nozzle_temperature_range_high");
1335 if (opt_max) {
1336 ConfigOptionInts *opt_max_ints = dynamic_cast<ConfigOptionInts *>(opt_max);
1337 if (opt_max_ints) {
1338 wxString text_nozzle_temp_max = wxString::Format("%d", opt_max_ints->get_at(variant_index));
1339 m_input_nozzle_max->GetTextCtrl()->SetValue(text_nozzle_temp_max);
1340 }
1341 }
1342 }
1343 }
1344 }
1345
1346 if (!sn.empty()) {
1347 m_sn_number->SetLabel(sn);
1348 m_panel_SN->Show();
1349 }
1350 else {
1351 m_panel_SN->Hide();
1352 }
1353
1354 if (obj) {
1355 if (!m_is_third) {
1356 m_comboBox_filament->Hide();
1357 m_readonly_filament->Show();
1358 if (bambu_filament_name.empty()) {
1359 m_readonly_filament->SetLabel("Bambu " + filament);
1360 }
1361 else {
1362 m_readonly_filament->SetLabel(bambu_filament_name);
1363 }
1364
1365 m_input_nozzle_min->GetTextCtrl()->SetValue(temp_min);
1366 m_input_nozzle_max->GetTextCtrl()->SetValue(temp_max);
1367 }
1368 else {
1369 m_comboBox_filament->Show();
1370 m_readonly_filament->Hide();
1371 }
1372
1373 if (obj->cali_version >= 0) {
1374 m_title_pa_profile->Show();
1375 m_comboBox_cali_result->Show();
1376 m_input_k_val->Disable();
1377 }
1378 else {
1379 m_title_pa_profile->Hide();
1380 m_comboBox_cali_result->Hide();
1381 m_input_k_val->Enable();
1382 }
1383
1384 m_button_reset->Show();
1385 //m_button_confirm->Show();
1386 }
1387
1388 // Sort the filaments
1389 {
1390 std::unordered_map<wxString, int> selected_filament_ranks;
1391
1392 // Helper lambda to find a filament Preset by name. We can call this multiple times to walk the inheritance chain and find the base filament.
1393 auto find_filament_by_name = [](const std::string& wanted, const PresetCollection& filaments) -> const Preset* {
1394 for (auto it = filaments.begin(); it != filaments.end(); ++it) {
1395 if (it->name == wanted) {
1396 return &(*it);
1397 }
1398 }
1399 return nullptr;
1400 };
1401
1402 // For each active filament preset, find its base filament alias and promote it in extruder order.
1403 auto bundle = wxGetApp().preset_bundle;
1404 const auto& preset_names = bundle->filament_presets;
1405 for (size_t i = preset_names.size(); i-- > 0; ) {
1406 std::string wanted = preset_names[i];
1407 const int sort_rank = -static_cast<int>(preset_names.size() - i);
1408
1409 const Preset* match = nullptr;
1410
1411 do {
1412 auto find_result = find_filament_by_name(wanted, bundle->filaments);
1413 if (!find_result) {
1414 BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << " No available filament name matches " << wanted;
1415 break;
1416 }
1417
1418 match = find_result;
1419
1420 BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " Found available filament matching current preset name " << wanted
1421 << " - Name: " << match->name << " - Alias: " << match->alias
1422 << " - Inherits: " << match->inherits();
1423
1424 if (match->inherits().length() == 0) {
1425 BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " No more inherits so we reached the base filament";
1426 break;
1427 }
1428
1429 wanted = match->inherits();
1430 } while (1); // Or loop while (match->alias.length() == 0) because existence of alias and inherits on a Preset seem to be exclusive
1431
1432 if (!match) {
1433 continue;
1434 }
1435
1436 BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " Update filament rank to " + std::to_string(sort_rank) + " for preset Name: "
1437 << match->name << " - Alias: " << match->alias;
1438 selected_filament_ranks.insert_or_assign(match->alias, sort_rank);
1439 }
1440
1441 static const std::vector<wxString> sorted_vendors { "Generic" };
1442 static const std::vector<wxString> sorted_types { "PLA", "PETG", "ABS", "TPU" };
1443 auto priority_rank = [](const std::vector<wxString>& priorities, const wxString& value) {
1444 const auto iter = std::find_if(priorities.begin(), priorities.end(), [&value](const wxString& priority) {
1445 return priority.CmpNoCase(value) == 0;
1446 });
1447 return iter - priorities.begin();
1448 };
1449 auto _filament_sorter = [&query_filament_vendors, &query_filament_types, &selected_filament_ranks, &priority_rank](const wxString& left, const wxString& right) -> bool
1450 {
1451 { // Compare selected filament order
1452 const auto& iter1 = selected_filament_ranks.find(left);
1453 int selected_order1 = (iter1 != selected_filament_ranks.end()) ? iter1->second : INT_MAX;
1454
1455 const auto& iter2 = selected_filament_ranks.find(right);
1456 int selected_order2 = (iter2 != selected_filament_ranks.end()) ? iter2->second : INT_MAX;
1457 if (selected_order1 != selected_order2)
1458 {
1459 return selected_order1 < selected_order2;
1460 }
1461 }
1462 { // Compare vendor
1463 const wxString& vendor1 = query_filament_vendors.at(left);
1464 const wxString& vendor2 = query_filament_vendors.at(right);
1465 const auto rank1 = priority_rank(sorted_vendors, vendor1);
1466 const auto rank2 = priority_rank(sorted_vendors, vendor2);
1467 if (rank1 != rank2)
1468 return rank1 < rank2;
1469
1470 const int vendor_compare = vendor1.CmpNoCase(vendor2);
1471 if (vendor_compare != 0)
1472 return vendor_compare < 0;
1473 }
1474 { // Compare type
1475 const wxString& type1 = query_filament_types.at(left);
1476 const wxString& type2 = query_filament_types.at(right);
1477 const auto rank1 = priority_rank(sorted_types, type1);
1478 const auto rank2 = priority_rank(sorted_types, type2);
1479 if (rank1 != rank2)
1480 return rank1 < rank2;
1481
1482 const int type_compare = type1.CmpNoCase(type2);
1483 if (type_compare != 0)
1484 return type_compare < 0;
1485 }
1486
1487 const int name_compare = left.CmpNoCase(right);
1488 return name_compare != 0 ? name_compare < 0 : left < right;
1489 };
1490
1491 std::sort(m_sorted_filament_items.begin(), m_sorted_filament_items.end(), _filament_sorter);
1492 }
1493
1495 int selection_idx = m_comboBox_filament->GetSelection();
1496 post_select_event(selection_idx);
1497
1498 if (selection_idx < 0) {
1499 m_comboBox_filament->SetValue(wxEmptyString);
1500 }
1501
1502 // Set the flag whether to open the filament setting dialog from the device page
1503 m_comboBox_filament->SetClientData(new int(1));
1504
1505 update();
1506 Layout();
1507 Fit();
1508 ShowModal();
1509}
std::string filament_id
Definition AMSMaterialsSetting.hpp:231
void update()
Definition AMSMaterialsSetting.cpp:569
std::map< wxString, FilamentInfos > map_filament_items
Definition AMSMaterialsSetting.hpp:241
std::vector< wxString > m_sorted_filament_items
Definition AMSMaterialsSetting.hpp:242
void post_select_event(int index)
Definition AMSMaterialsSetting.cpp:1511
void update_widgets()
Definition AMSMaterialsSetting.cpp:1086
int ShowModal()
Definition GUI_Utils.hpp:216
static void _collect_filament_info(const wxString &shown_name, const Preset &filament, std::unordered_map< wxString, wxString > &query_filament_vendors, std::unordered_map< wxString, wxString > &query_filament_types)
Definition AMSMaterialsSetting.cpp:1128
@ right
Definition MarchingSquares.hpp:190
@ left
Definition MarchingSquares.hpp:188

References Slic3r::GUI::_collect_filament_info(), Slic3r::Preset::alias, ams_filament_id, Slic3r::Preset::config, Slic3r::GUI::AMSMaterialsSetting::FilamentInfos::filament_id, Slic3r::PresetBundle::filaments, Slic3r::GUI::from_u8(), Slic3r::ConfigOptionVector< int >::get_at(), Slic3r::PresetBundle::get_filament_presets_for_machine(), get_filament_variant_index(), Slic3r::PresetCollection::get_preset_alias(), Slic3r::DevPrinterConfigUtil::get_printer_display_name(), Slic3r::PresetCollection::get_selected_preset(), Slic3r::Preset::inherits(), m_button_reset, m_comboBox_cali_result, m_comboBox_filament, m_input_k_val, m_input_n_val, m_input_nozzle_max, m_input_nozzle_min, m_is_third, m_panel_SN, m_readonly_filament, m_sn_number, m_sorted_filament_items, m_title_pa_profile, map_filament_items, Slic3r::Preset::name, obj, Slic3r::ConfigBase::option(), post_select_event(), Slic3r::PresetBundle::printers, rebuild_filament_dropdown_items(), Slic3r::GUI::AMSMaterialsSetting::FilamentInfos::setting_id, Slic3r::GUI::DPIAware< wxDialog >::ShowModal(), Slic3r::PresetCollection::size(), Slic3r::trace(), update(), and update_widgets().

Here is the call graph for this function:

◆ post_select_event()

void Slic3r::GUI::AMSMaterialsSetting::post_select_event ( int index)
1511 {
1512 wxCommandEvent event(wxEVT_COMBOBOX);
1513 event.SetInt(index);
1514 event.SetEventObject(m_comboBox_filament);
1515 wxPostEvent(m_comboBox_filament, event);
1516}

References m_comboBox_filament.

Referenced by Popup().

Here is the caller graph for this function:

◆ prev_scale_factor()

float Slic3r::GUI::DPIAware< wxDialog >::prev_scale_factor ( ) const
inlineinherited
196{ return m_prev_scale_factor; }

◆ rebuild_filament_dropdown_items()

void Slic3r::GUI::AMSMaterialsSetting::rebuild_filament_dropdown_items ( const std::string & selected_filament_id)
protected
1166{
1167 std::vector<DropDown::Item> items;
1168 m_filament_list_items.clear();
1169
1170 auto append_header = [&items, this](const wxString& label) {
1171 DropDown::Item item;
1172 item.text = label;
1174 items.push_back(item);
1176 };
1177
1178 auto append_filament = [&items, this](const wxString& name) {
1179 auto info_it = map_filament_items.find(name);
1180 if (info_it == map_filament_items.end())
1181 return;
1182
1183 DropDown::Item item;
1184 item.text = name;
1185 items.push_back(item);
1186 m_filament_list_items.push_back(FilamentListItem{info_it->second, true});
1187 };
1188
1189 // Favorites are listed again at the top under their own header. Without any, the list is the
1190 // plain filament list.
1191 const std::set<std::string> favorite_ids = load_favorite_filament_ids();
1192 std::vector<wxString> favorites;
1193 for (const wxString& name : m_sorted_filament_items) {
1194 auto info_it = map_filament_items.find(name);
1195 if (info_it != map_filament_items.end() && favorite_ids.count(info_it->second.filament_id) > 0)
1196 favorites.push_back(name);
1197 }
1198 if (!favorites.empty()) {
1199 append_header(_L("Favorite filaments"));
1200 for (const wxString& name : favorites)
1201 append_filament(name);
1202 append_header(_L("All filaments"));
1203 }
1204 for (const wxString& name : m_sorted_filament_items)
1205 append_filament(name);
1206
1207 int selection_idx = -1;
1208 if (!selected_filament_id.empty()) {
1209 for (int i = 0; i < int(m_filament_list_items.size()); ++i) {
1210 if (m_filament_list_items[i].is_filament && m_filament_list_items[i].filament.filament_id == selected_filament_id) {
1211 selection_idx = i;
1212 break;
1213 }
1214 }
1215 }
1216
1217 // Clear() first: SetItems() keeps the old selection, and SetSelection() ignores an index equal to it,
1218 // which would leave the previous filament's name on the combo.
1219 m_comboBox_filament->Clear();
1220 m_comboBox_filament->SetItems(items);
1222 m_comboBox_filament->SetSelection(selection_idx);
1223 m_favorites_regroup = false;
1224}
#define DD_ITEM_STYLE_SPLIT_ITEM
Definition DropDown.hpp:26
#define DD_ITEM_STYLE_DISABLED
Definition DropDown.hpp:27
int style
Definition DropDown.hpp:49
wxString text
Definition DropDown.hpp:38
std::set< std::string > load_favorite_filament_ids() const
Definition AMSMaterialsSetting.cpp:1147
Definition AMSMaterialsSetting.hpp:234

References _L, DD_ITEM_STYLE_DISABLED, DD_ITEM_STYLE_SPLIT_ITEM, load_favorite_filament_ids(), m_comboBox_filament, m_favorites_regroup, m_filament_list_items, m_sorted_filament_items, map_filament_items, DropDown::Item::style, DropDown::Item::text, and update_favorite_stars().

Referenced by create(), and Popup().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ rescale()

void Slic3r::GUI::DPIAware< wxDialog >::rescale ( const wxRect & suggested_rect)
inlineprivateinherited
265 {
266 this->Freeze();
267
268 m_force_rescale = false;
269
270 // set normal application font as a current window font
271 m_normal_font = this->GetFont();
272
274
275 // rescale missed controls sizes and images
277
278 this->Layout();
279 this->Thaw();
280
281 // reset previous scale factor from current scale factor value
283 }
virtual void on_dpi_changed(const wxRect &suggested_rect)=0
void update_em_unit()
Definition GUI_Utils.hpp:249

◆ save_favorite_filament_ids()

void Slic3r::GUI::AMSMaterialsSetting::save_favorite_filament_ids ( const std::set< std::string > & favorite_ids)
protected
1159{
1160 std::vector<std::string> values(favorite_ids.begin(), favorite_ids.end());
1161 wxGetApp().app_config->set(AMS_FAVORITE_FILAMENT_IDS_KEY, Slic3r::escape_strings_cstyle(values));
1162 wxGetApp().app_config->save();
1163}
std::string escape_strings_cstyle(const std::vector< std::string > &strs)
Definition Config.cpp:99

References Slic3r::GUI::AMS_FAVORITE_FILAMENT_IDS_KEY, and Slic3r::escape_strings_cstyle().

Referenced by toggle_favorite_filament().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ scale_factor()

float Slic3r::GUI::DPIAware< wxDialog >::scale_factor ( ) const
inlineinherited
195{ return m_scale_factor; }

◆ selected_filament_info()

const AMSMaterialsSetting::FilamentInfos * Slic3r::GUI::AMSMaterialsSetting::selected_filament_info ( ) const
protected
1140{
1141 const int selection = m_comboBox_filament->GetSelection();
1142 if (selection < 0 || selection >= int(m_filament_list_items.size()) || !m_filament_list_items[selection].is_filament)
1143 return nullptr;
1144 return &m_filament_list_items[selection].filament;
1145}

References m_comboBox_filament, and m_filament_list_items.

Referenced by create(), on_select_filament(), on_select_ok(), and on_select_reset().

Here is the caller graph for this function:

◆ set_color()

void Slic3r::GUI::AMSMaterialsSetting::set_color ( wxColour color)
1000{
1001 //m_clrData->SetColour(color);
1002 m_clr_picker->is_empty(false);
1003 m_clr_picker->set_color(color);
1004
1005 FilamentColor fila_color;
1006 fila_color.m_colors.insert(color);
1007 fila_color.EndSet(m_clr_picker->ctype);
1008 auto clr_query = GUI::wxGetApp().get_filament_color_code_query();
1009 // ams_filament_id is our OF id; GetFilaColorName looks up filaments_color_codes.json,
1010 // downloaded from Bambu and keyed by the printer's own ids, so translate for this lookup only.
1011 auto* agent = GUI::wxGetApp().getAgent();
1012 m_clr_name->SetLabelText(clr_query->GetFilaColorName(agent ? agent->from_orca_filament_id(ams_filament_id) : ams_filament_id, fila_color));
1013}

References ams_filament_id, Slic3r::FilamentColor::EndSet(), m_clr_name, m_clr_picker, and Slic3r::FilamentColor::m_colors.

Referenced by on_picker_color().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_colors()

void Slic3r::GUI::AMSMaterialsSetting::set_colors ( std::vector< wxColour > colors)
1023{
1024 //m_clrData->SetColour(color);
1025 m_clr_picker->set_colors(colors);
1026
1027 if (!colors.empty())
1028 {
1029 FilamentColor fila_color;
1030 for (const auto& clr : colors) { fila_color.m_colors.insert(clr); }
1031 fila_color.EndSet(m_clr_picker->ctype);
1032 auto clr_query = GUI::wxGetApp().get_filament_color_code_query();
1033 // ams_filament_id is our OF id; GetFilaColorName looks up filaments_color_codes.json,
1034 // downloaded from Bambu and keyed by the printer's own ids, so translate for this lookup only.
1035 auto* agent = GUI::wxGetApp().getAgent();
1036 m_clr_name->SetLabelText(clr_query->GetFilaColorName(agent ? agent->from_orca_filament_id(ams_filament_id) : ams_filament_id, fila_color));
1037 }
1038}

References ams_filament_id, Slic3r::FilamentColor::EndSet(), m_clr_name, m_clr_picker, and Slic3r::FilamentColor::m_colors.

Referenced by on_picker_color().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_ctype()

void Slic3r::GUI::AMSMaterialsSetting::set_ctype ( int ctype)
1041{
1042 m_clr_picker->ctype = ctype;
1043}

References m_clr_picker.

Referenced by on_picker_color().

Here is the caller graph for this function:

◆ set_em_unit()

void Slic3r::GUI::DPIAware< wxDialog >::set_em_unit ( int v)
inlineinherited
200{ m_em_unit = v; }

◆ set_empty_color()

void Slic3r::GUI::AMSMaterialsSetting::set_empty_color ( wxColour color)
1016{
1017 m_clr_picker->is_empty(true);
1018 m_clr_picker->set_color(color);
1019 m_clr_name->SetLabelText(wxEmptyString);
1020}

References m_clr_name, and m_clr_picker.

◆ set_prev_scale_factor()

void Slic3r::GUI::DPIAware< wxDialog >::set_prev_scale_factor ( float v)
inlineinherited

◆ set_scale_factor()

void Slic3r::GUI::DPIAware< wxDialog >::set_scale_factor ( float v)
inlineinherited
198{ m_scale_factor = v; }

◆ Show()

bool Slic3r::GUI::AMSMaterialsSetting::Show ( bool show)
override
1110{
1111 if (show) {
1112 m_button_confirm->Rescale(); // ORCA re applies size
1113 m_input_nozzle_max->GetTextCtrl()->SetSize(wxSize(-1, FromDIP(20)));
1114 m_input_nozzle_min->GetTextCtrl()->SetSize(wxSize(-1, FromDIP(20)));
1115 //m_clr_picker->set_color(m_clr_picker->GetParent()->GetBackgroundColour());
1116
1117 m_ratio_text->Show();
1118 m_wiki_ctrl->Show();
1119 m_k_param->Show();
1120 m_input_k_val->Show();
1121 Layout();
1122 Fit();
1123 wxGetApp().UpdateDlgDarkUI(this);
1124 }
1125 return DPIDialog::Show(show);
1126}

References m_button_confirm, m_input_k_val, m_input_nozzle_max, m_input_nozzle_min, m_k_param, m_ratio_text, and m_wiki_ctrl.

◆ ShowModal()

◆ toggle_favorite_filament()

void Slic3r::GUI::AMSMaterialsSetting::toggle_favorite_filament ( const std::string & filament_id)
protected
1239{
1240 if (filament_id.empty())
1241 return;
1242
1243 std::set<std::string> favorite_ids = load_favorite_filament_ids();
1244 auto iter = favorite_ids.find(filament_id);
1245 if (iter == favorite_ids.end())
1246 favorite_ids.insert(filament_id);
1247 else
1248 favorite_ids.erase(iter);
1249
1250 save_favorite_filament_ids(favorite_ids);
1251}
void save_favorite_filament_ids(const std::set< std::string > &favorite_ids)
Definition AMSMaterialsSetting.cpp:1158

References load_favorite_filament_ids(), and save_favorite_filament_ids().

Referenced by on_toggle_favorite_filament().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ update()

void Slic3r::GUI::AMSMaterialsSetting::update ( )
570{
571 if (obj) {
573 update_filament_editing(obj->is_in_printing() || obj->can_resume());
574 }
575}
void update_filament_editing(bool is_printing)
Definition AMSMaterialsSetting.cpp:577

References obj, update_filament_editing(), and update_widgets().

Referenced by Popup().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ update_em_unit()

void Slic3r::GUI::DPIAware< wxDialog >::update_em_unit ( )
inlineprivateinherited
250 {
251 // Linux specific issue : get_dpi_for_window(this) still doesn't responce to the Display's scale in new wxWidgets(3.1.3).
252 // So, calculate the m_em_unit value from the font size, as before
253#if !defined(__WXGTK__)
255#else
256 // initialize default width_unit according to the width of the one symbol ("m") of the currently active font of this window.
257 m_em_unit = std::max<size_t>(10, this->GetTextExtent("m").x - 1);
258#endif // __WXGTK__
259 }

◆ update_favorite_stars()

void Slic3r::GUI::AMSMaterialsSetting::update_favorite_stars ( )
protected
1227{
1228 const std::set<std::string> favorite_ids = load_favorite_filament_ids();
1229 for (size_t i = 0; i < m_filament_list_items.size(); ++i) {
1231 if (row.is_filament) {
1232 const bool favorite = favorite_ids.count(row.filament.filament_id) > 0;
1233 m_comboBox_filament->SetItemActionBitmap(i, favorite ? m_star_filled.bmp() : m_star_empty.bmp());
1234 }
1235 }
1236}

References Slic3r::GUI::AMSMaterialsSetting::FilamentListItem::filament, Slic3r::GUI::AMSMaterialsSetting::FilamentInfos::filament_id, Slic3r::GUI::AMSMaterialsSetting::FilamentListItem::is_filament, load_favorite_filament_ids(), m_comboBox_filament, m_filament_list_items, m_star_empty, and m_star_filled.

Referenced by on_dpi_changed(), on_toggle_favorite_filament(), and rebuild_filament_dropdown_items().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ update_filament_editing()

void Slic3r::GUI::AMSMaterialsSetting::update_filament_editing ( bool is_printing)
protected
578{
579 if (is_printing) {
580 m_comboBox_filament->Enable(obj->is_support_filament_setting_inprinting);
581 m_comboBox_cali_result->Enable(obj->is_support_filament_setting_inprinting);
582 m_button_confirm->Show(obj->is_support_filament_setting_inprinting);
583 m_button_reset->Show(obj->is_support_filament_setting_inprinting);
584 }
585 else {
586 m_comboBox_filament->Enable(true);
587 m_comboBox_cali_result->Enable(true);
588 m_button_reset->Show(true);
589 m_button_confirm->Show(true);
590 }
591
592 if (!m_is_third) {
593 m_tip_readonly->SetLabelText(wxEmptyString);
594 m_tip_readonly->Hide();
595 }
596 else {
597 if (!obj->is_support_filament_setting_inprinting) {
598 if (!is_virtual_tray()) {
599 m_tip_readonly->SetLabelText(_L("Setting AMS slot information while printing is not supported"));
600 } else {
601 m_tip_readonly->SetLabelText(_L("Setting Virtual slot information while printing is not supported"));
602 }
603 } else {
604 m_tip_readonly->SetLabelText(wxEmptyString);
605 }
606
607 m_tip_readonly->Wrap(FromDIP(380));
608 m_tip_readonly->Show(is_printing);
609 }
610
611 if (m_view_only) { // Orca: view-only (2D laser/cut) — lock every edit control and hide apply/reset
612 m_comboBox_filament->Enable(false);
613 m_comboBox_cali_result->Enable(false);
614 m_input_k_val->Enable(false);
615 m_input_n_val->Enable(false);
616 m_button_confirm->Hide();
617 m_button_reset->Hide();
618 }
619}

References _L, is_virtual_tray(), m_button_confirm, m_button_reset, m_comboBox_cali_result, m_comboBox_filament, m_input_k_val, m_input_n_val, m_is_third, m_tip_readonly, m_view_only, and obj.

Referenced by update().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ update_widgets()

void Slic3r::GUI::AMSMaterialsSetting::update_widgets ( )
protected
1087{
1088 if (obj && obj->get_printer_series() == PrinterSeries::SERIES_X1 && obj->cali_version <= -1) {
1089 // Low version firmware does not display k value
1090 m_panel_kn->Hide();
1091 }
1092 else if(is_virtual_tray()) // virtual tray
1093 {
1094 if (obj)
1095 m_panel_normal->Show();
1096 else
1097 m_panel_normal->Hide();
1098 m_panel_kn->Show();
1099 } else if (obj && (obj->ams_support_virtual_tray || obj->cali_version >= 0)) {
1100 m_panel_normal->Show();
1101 m_panel_kn->Show();
1102 } else {
1103 m_panel_normal->Show();
1104 m_panel_kn->Hide();
1105 }
1106 Layout();
1107}

References is_virtual_tray(), m_panel_kn, m_panel_normal, obj, and SERIES_X1.

Referenced by Popup(), and update().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ ams_filament_id

std::string Slic3r::GUI::AMSMaterialsSetting::ams_filament_id

◆ ams_id

int Slic3r::GUI::AMSMaterialsSetting::ams_id { 0 }

◆ ams_setting_id

std::string Slic3r::GUI::AMSMaterialsSetting::ams_setting_id

◆ bitmap_max_degree

wxStaticBitmap* Slic3r::GUI::AMSMaterialsSetting::bitmap_max_degree
protected

◆ bitmap_min_degree

wxStaticBitmap* Slic3r::GUI::AMSMaterialsSetting::bitmap_min_degree
protected

◆ degree

ScalableBitmap* Slic3r::GUI::AMSMaterialsSetting::degree
protected

◆ m_brand_colour

wxColour Slic3r::GUI::AMSMaterialsSetting::m_brand_colour

◆ m_brand_filament

wxString Slic3r::GUI::AMSMaterialsSetting::m_brand_filament

◆ m_brand_sn

wxString Slic3r::GUI::AMSMaterialsSetting::m_brand_sn

◆ m_brand_tmp

wxString Slic3r::GUI::AMSMaterialsSetting::m_brand_tmp

◆ m_btn_bg_gray

StateColor Slic3r::GUI::AMSMaterialsSetting::m_btn_bg_gray
protected

◆ m_btn_bg_green

StateColor Slic3r::GUI::AMSMaterialsSetting::m_btn_bg_green
protected

◆ m_button_close

Button* Slic3r::GUI::AMSMaterialsSetting::m_button_close
protected

Referenced by create(), and on_dpi_changed().

◆ m_button_confirm

Button* Slic3r::GUI::AMSMaterialsSetting::m_button_confirm
protected

◆ m_button_reset

Button* Slic3r::GUI::AMSMaterialsSetting::m_button_reset
protected

◆ m_can_rescale

bool Slic3r::GUI::DPIAware< wxDialog >::m_can_rescale
privateinherited
235{ true };

◆ m_clr_name

Label* Slic3r::GUI::AMSMaterialsSetting::m_clr_name

◆ m_clr_picker

◆ m_clrData

wxColourData* Slic3r::GUI::AMSMaterialsSetting::m_clrData
protected

◆ m_color_picker_popup

ColorPickerPopup Slic3r::GUI::AMSMaterialsSetting::m_color_picker_popup

◆ m_comboBox_cali_result

ComboBox* Slic3r::GUI::AMSMaterialsSetting::m_comboBox_cali_result
protected

◆ m_comboBox_filament

◆ m_em_unit

int Slic3r::GUI::DPIAware< wxDialog >::m_em_unit
privateinherited

◆ m_favorites_regroup

bool Slic3r::GUI::AMSMaterialsSetting::m_favorites_regroup {false}
protected

◆ m_filament_list_items

std::vector<FilamentListItem> Slic3r::GUI::AMSMaterialsSetting::m_filament_list_items
protected

◆ m_filament_selection

int Slic3r::GUI::AMSMaterialsSetting::m_filament_selection
protected

◆ m_filament_type

std::string Slic3r::GUI::AMSMaterialsSetting::m_filament_type

◆ m_force_rescale

bool Slic3r::GUI::DPIAware< wxDialog >::m_force_rescale
privateinherited
236{ false };

◆ m_input_k_val

TextInput* Slic3r::GUI::AMSMaterialsSetting::m_input_k_val
protected

◆ m_input_n_val

TextInput* Slic3r::GUI::AMSMaterialsSetting::m_input_n_val
protected

◆ m_input_nozzle_max

TextInput* Slic3r::GUI::AMSMaterialsSetting::m_input_nozzle_max
protected

◆ m_input_nozzle_min

TextInput* Slic3r::GUI::AMSMaterialsSetting::m_input_nozzle_min
protected

◆ m_is_third

bool Slic3r::GUI::AMSMaterialsSetting::m_is_third

◆ m_k_param

wxStaticText* Slic3r::GUI::AMSMaterialsSetting::m_k_param
protected

Referenced by create_panel_kn(), and Show().

◆ m_n_param

wxStaticText* Slic3r::GUI::AMSMaterialsSetting::m_n_param
protected

Referenced by create_panel_kn().

◆ m_new_font_point_size

int Slic3r::GUI::DPIAware< wxDialog >::m_new_font_point_size
privateinherited

◆ m_normal_font

wxFont Slic3r::GUI::DPIAware< wxDialog >::m_normal_font
privateinherited

◆ m_pa_cali_select_id

int Slic3r::GUI::AMSMaterialsSetting::m_pa_cali_select_id = 0
protected

Referenced by on_select_cali_result().

◆ m_pa_profile_items

std::vector<PACalibResult> Slic3r::GUI::AMSMaterialsSetting::m_pa_profile_items

◆ m_panel_kn

wxPanel* Slic3r::GUI::AMSMaterialsSetting::m_panel_kn
protected

Referenced by create(), and update_widgets().

◆ m_panel_normal

wxPanel* Slic3r::GUI::AMSMaterialsSetting::m_panel_normal
protected

Referenced by create(), and update_widgets().

◆ m_panel_SN

wxPanel* Slic3r::GUI::AMSMaterialsSetting::m_panel_SN
protected

Referenced by create_panel_normal(), and Popup().

◆ m_prev_scale_factor

float Slic3r::GUI::DPIAware< wxDialog >::m_prev_scale_factor
privateinherited

◆ m_ratio_text

wxStaticText* Slic3r::GUI::AMSMaterialsSetting::m_ratio_text
protected

Referenced by create_panel_kn(), and Show().

◆ m_readonly_filament

TextInput* Slic3r::GUI::AMSMaterialsSetting::m_readonly_filament
protected

Referenced by create_panel_normal(), and Popup().

◆ m_scale_factor

float Slic3r::GUI::DPIAware< wxDialog >::m_scale_factor
privateinherited

◆ m_sn_number

wxStaticText* Slic3r::GUI::AMSMaterialsSetting::m_sn_number
protected

Referenced by create_panel_normal(), and Popup().

◆ m_sorted_filament_items

std::vector<wxString> Slic3r::GUI::AMSMaterialsSetting::m_sorted_filament_items
protected

◆ m_star_empty

ScalableBitmap Slic3r::GUI::AMSMaterialsSetting::m_star_empty
protected

◆ m_star_filled

ScalableBitmap Slic3r::GUI::AMSMaterialsSetting::m_star_filled
protected

◆ m_tip_readonly

Label* Slic3r::GUI::AMSMaterialsSetting::m_tip_readonly
protected

◆ m_title_colour

wxStaticText* Slic3r::GUI::AMSMaterialsSetting::m_title_colour
protected

Referenced by create_panel_normal().

◆ m_title_filament

wxStaticText* Slic3r::GUI::AMSMaterialsSetting::m_title_filament
protected

Referenced by create_panel_normal().

◆ m_title_pa_profile

wxStaticText* Slic3r::GUI::AMSMaterialsSetting::m_title_pa_profile
protected

Referenced by create_panel_kn(), and Popup().

◆ m_title_temperature

wxStaticText* Slic3r::GUI::AMSMaterialsSetting::m_title_temperature
protected

Referenced by create_panel_normal().

◆ m_view_only

bool Slic3r::GUI::AMSMaterialsSetting::m_view_only = false

◆ m_wiki_ctrl

Button* Slic3r::GUI::AMSMaterialsSetting::m_wiki_ctrl
protected

Referenced by create(), and Show().

◆ map_filament_items

std::map<wxString, FilamentInfos> Slic3r::GUI::AMSMaterialsSetting::map_filament_items
protected

◆ obj

◆ slot_id

int Slic3r::GUI::AMSMaterialsSetting::slot_id { 0 }
150{ 0 }; /* 0 ~ 3 */

Referenced by on_select_filament(), on_select_ok(), and on_select_reset().

◆ warning_text

wxStaticText* Slic3r::GUI::AMSMaterialsSetting::warning_text
protected

The documentation for this class was generated from the following files: