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

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

Inheritance diagram for Slic3r::GUI::AmsReplaceMaterialDialog:
Collaboration diagram for Slic3r::GUI::AmsReplaceMaterialDialog:

Public Member Functions

 AmsReplaceMaterialDialog (wxWindow *parent)
 ~AmsReplaceMaterialDialog ()
void update_machine_obj (MachineObject *obj)
void paintEvent (wxPaintEvent &evt)
void on_dpi_changed (const wxRect &suggested_rect) override
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 * m_obj { nullptr }
wxScrolledWindow * m_scrollview_groups { nullptr }
wxBoxSizer * m_scrollview_sizer { nullptr }
wxBoxSizer * m_main_sizer { nullptr }
wxWrapSizer * m_groups_sizer { nullptr }
SwitchBoard * m_nozzle_btn_panel { nullptr}
std::vector< std::string > m_tray_used
Label * label_txt {nullptr}
Label * identical_filament

Protected Member Functions

virtual void on_sys_color_changed ()

Private Member Functions

void create ()
AmsRMGroup * create_backup_group (wxString gname, std::map< std::string, wxColour > group_info, wxString material)
void on_nozzle_selected (wxCommandEvent &event)
void update_to_nozzle (int nozzle_id)
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

Constructor & Destructor Documentation

◆ AmsReplaceMaterialDialog()

Slic3r::GUI::AmsReplaceMaterialDialog::AmsReplaceMaterialDialog ( wxWindow * parent)
2113 : DPIDialog(parent, wxID_ANY, _L("Auto Refill"), wxDefaultPosition, wxDefaultSize, wxSYSTEM_MENU | wxCAPTION | wxCLOSE_BOX)
2114{
2115
2116#ifdef __WINDOWS__
2117 SetDoubleBuffered(true);
2118#endif //__WINDOWS__
2119 SetBackgroundColour(*wxWHITE);
2120 create();
2121 wxGetApp().UpdateDlgDarkUI(this);
2122}
#define _L(s)
Definition OBJ.cpp:34
void create()
Definition AmsMappingPopup.cpp:2124

References _L, and create().

Here is the call graph for this function:

◆ ~AmsReplaceMaterialDialog()

Slic3r::GUI::AmsReplaceMaterialDialog::~AmsReplaceMaterialDialog ( )
inline
549{};

Member Function Documentation

◆ create()

void Slic3r::GUI::AmsReplaceMaterialDialog::create ( )
private
2125{
2126 SetSize(wxSize(FromDIP(445), -1));
2127 SetMinSize(wxSize(FromDIP(445), -1));
2128 SetMaxSize(wxSize(FromDIP(445), -1));
2129
2130 // set icon for dialog
2131 std::string icon_path = (boost::format("%1%/images/OrcaSlicerTitle.ico") % resources_dir()).str();
2132 SetIcon(wxIcon(encode_path(icon_path.c_str()), wxBITMAP_TYPE_ICO));
2133
2134 m_main_sizer = new wxBoxSizer(wxVERTICAL);
2135 auto m_top_line = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1), wxTAB_TRAVERSAL);
2136 m_top_line->SetBackgroundColour(wxColour(166, 169, 170));
2137 m_main_sizer->Add(m_top_line, 0, wxEXPAND, 0);
2138
2139 m_nozzle_btn_panel = new SwitchBoard(this, _L_CONTEXT("Left", "Nozzle position"), _L_CONTEXT("Right", "Nozzle position"), wxSize(FromDIP(126), FromDIP(26)));
2140 m_nozzle_btn_panel->Hide();
2141 m_nozzle_btn_panel->Connect(wxCUSTOMEVT_SWITCH_POS, wxCommandEventHandler(AmsReplaceMaterialDialog::on_nozzle_selected), NULL, this);
2142
2143 label_txt = new Label(this, _L("When the current material run out, the printer will continue to print in the following order."));
2144 label_txt->SetFont(Label::Body_13);
2145 label_txt->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#323A3C")));
2146 label_txt->SetMinSize(wxSize(FromDIP(380), -1));
2147 label_txt->SetMaxSize(wxSize(FromDIP(380), -1));
2148 label_txt->Wrap(FromDIP(380));
2149
2150 identical_filament = new Label(this, _L("Identical filament: same brand, type and color.")); // Orca: kept trailing period (existing translation)
2152 identical_filament->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#009688"))); // Orca: accent teal (not brand green)
2153
2154 m_scrollview_groups = new wxScrolledWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL | wxVSCROLL);
2155 m_scrollview_groups->SetScrollRate(5, FromDIP(20));
2156 //m_scrollview_groups->SetMinSize(wxSize(400, 400));
2157 //m_scrollview_groups->SetMaxSize(wxSize(400, 400));
2158 m_scrollview_sizer = new wxBoxSizer(wxVERTICAL);
2159
2160 m_groups_sizer = new wxWrapSizer( wxHORIZONTAL, wxWRAPSIZER_DEFAULT_FLAGS );
2161
2162 m_scrollview_sizer->Add( m_groups_sizer, 0, wxALIGN_CENTER, 0 );
2164 m_scrollview_groups->Layout();
2165
2166
2167
2168 auto m_button_sizer = new wxBoxSizer(wxHORIZONTAL);
2169 StateColor btn_bg_white(std::pair<wxColour, int>(AMS_CONTROL_DISABLE_COLOUR, StateColor::Disabled),
2170 std::pair<wxColour, int>(AMS_CONTROL_DISABLE_COLOUR, StateColor::Pressed),
2171 std::pair<wxColour, int>(AMS_CONTROL_DEF_BLOCK_BK_COLOUR, StateColor::Hovered),
2172 std::pair<wxColour, int>(AMS_CONTROL_WHITE_COLOUR, StateColor::Normal));
2173
2174 StateColor btn_bd_white(std::pair<wxColour, int>(wxColour(255, 255, 254), StateColor::Disabled),
2175 std::pair<wxColour, int>(wxColour(38, 46, 48), StateColor::Enabled));
2176
2177 StateColor btn_text_white(std::pair<wxColour, int>(wxColour(255, 255, 254), StateColor::Disabled),
2178 std::pair<wxColour, int>(wxColour(38, 46, 48), StateColor::Enabled));
2179
2180
2181 StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(0, 137, 123), StateColor::Pressed), std::pair<wxColour, int>(wxColour(0, 150, 136), StateColor::Normal)); // Orca: accent teal button (not brand green)
2182 m_button_sizer->Add( 0, 0, 1, wxEXPAND, 0 );
2183
2184 m_main_sizer->Add(0,0,0, wxTOP, FromDIP(12));
2185 m_main_sizer->Add(m_nozzle_btn_panel,0, wxALIGN_CENTER_HORIZONTAL, FromDIP(30));
2186 m_main_sizer->Add(0,0,0, wxTOP, FromDIP(12));
2187 m_main_sizer->Add(label_txt,0, wxLEFT, FromDIP(30));
2188 m_main_sizer->Add(0, 0, 0, wxTOP, FromDIP(5));
2189 m_main_sizer->Add(identical_filament, 0, wxLEFT, FromDIP(30));
2190 m_main_sizer->Add(0,0,0, wxTOP, FromDIP(16));
2191 m_main_sizer->Add(m_scrollview_groups, 1, wxALIGN_CENTER, 0);
2192 m_main_sizer->Add(0,0,0, wxTOP, FromDIP(20));
2193 m_main_sizer->Add(m_button_sizer,0,wxALIGN_CENTER, FromDIP(16));
2194 m_main_sizer->Add(0,0,0, wxTOP, FromDIP(20));
2195
2196
2197 CenterOnParent();
2198 SetSizer(m_main_sizer);
2199 Layout();
2200 Fit();
2201}
#define AMS_CONTROL_WHITE_COLOUR
Definition AMSItem.hpp:42
#define AMS_CONTROL_DEF_BLOCK_BK_COLOUR
Definition AMSItem.hpp:44
#define AMS_CONTROL_DISABLE_COLOUR
Definition AMSItem.hpp:40
static wxFont Body_13
Definition Label.hpp:54
void on_nozzle_selected(wxCommandEvent &event)
Definition AmsMappingPopup.hpp:574
Label * label_txt
Definition AmsMappingPopup.hpp:566
wxWrapSizer * m_groups_sizer
Definition AmsMappingPopup.hpp:562
SwitchBoard * m_nozzle_btn_panel
Definition AmsMappingPopup.hpp:563
wxScrolledWindow * m_scrollview_groups
Definition AmsMappingPopup.hpp:559
wxBoxSizer * m_scrollview_sizer
Definition AmsMappingPopup.hpp:560
Label * identical_filament
Definition AmsMappingPopup.hpp:567
wxBoxSizer * m_main_sizer
Definition AmsMappingPopup.hpp:561
static wxColour darkModeColorFor(wxColour const &color)
Definition StateColor.cpp:219
@ Hovered
Definition StateColor.hpp:20
@ Normal
Definition StateColor.hpp:16
@ Disabled
Definition StateColor.hpp:22
@ Pressed
Definition StateColor.hpp:21
@ Enabled
Definition StateColor.hpp:17
static StateColor btn_bg_green(std::pair< wxColour, int >(wxColour(206, 206, 206), StateColor::Disabled), std::pair< wxColour, int >(wxColour(0, 137, 123), StateColor::Pressed), std::pair< wxColour, int >(wxColour(38, 166, 154), StateColor::Hovered), std::pair< wxColour, int >(wxColour(0, 150, 136), StateColor::Normal))
std::string encode_path(const char *src)
Definition utils.cpp:1382
const std::string & resources_dir()
Definition utils.cpp:296
#define _L_CONTEXT(s, ctx)
Definition I18N.hpp:15

References _L, _L_CONTEXT, AMS_CONTROL_DEF_BLOCK_BK_COLOUR, AMS_CONTROL_DISABLE_COLOUR, AMS_CONTROL_WHITE_COLOUR, Label::Body_13, Slic3r::GUI::btn_bg_green, StateColor::darkModeColorFor(), StateColor::Disabled, StateColor::Enabled, Slic3r::encode_path(), StateColor::Hovered, identical_filament, label_txt, m_groups_sizer, m_main_sizer, m_nozzle_btn_panel, m_scrollview_groups, m_scrollview_sizer, StateColor::Normal, on_nozzle_selected(), StateColor::Pressed, and Slic3r::resources_dir().

Referenced by AmsReplaceMaterialDialog().

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

◆ create_backup_group()

AmsRMGroup * Slic3r::GUI::AmsReplaceMaterialDialog::create_backup_group ( wxString gname,
std::map< std::string, wxColour > group_info,
wxString material )
private
2228{
2229 auto grp = new AmsRMGroup(m_scrollview_groups, group_info, material, gname);
2230 return grp;
2231}

References m_scrollview_groups.

Referenced by update_to_nozzle().

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; }

◆ 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; }

◆ normal_font()

◆ on_dpi_changed()

void Slic3r::GUI::AmsReplaceMaterialDialog::on_dpi_changed ( const wxRect & suggested_rect)
overridevirtual

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

2242{
2243
2244}

◆ on_nozzle_selected()

void Slic3r::GUI::AmsReplaceMaterialDialog::on_nozzle_selected ( wxCommandEvent & event)
inlineprivate
574{ update_to_nozzle(event.GetInt()); };
void update_to_nozzle(int nozzle_id)
Definition AmsMappingPopup.cpp:2247

References update_to_nozzle().

Referenced by create().

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

◆ on_sys_color_changed()

◆ paintEvent()

void Slic3r::GUI::AmsReplaceMaterialDialog::paintEvent ( wxPaintEvent & evt)
2234{
2235 wxPaintDC dc(this);
2236 dc.SetPen(StateColor::darkModeColorFor(wxColour("#DBDBDB"))); // Orca: popup border color fixed for dark mode
2237 dc.SetBrush(*wxTRANSPARENT_BRUSH);
2238 dc.DrawRoundedRectangle(0, 0, GetSize().x, GetSize().y, 0);
2239}

References StateColor::darkModeColorFor().

Here is the call graph for this function:

◆ prev_scale_factor()

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

◆ 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

◆ scale_factor()

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

◆ set_em_unit()

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

◆ 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; }

◆ ShowModal()

◆ 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_machine_obj()

void Slic3r::GUI::AmsReplaceMaterialDialog::update_machine_obj ( MachineObject * obj)
2204{
2205 if (obj)
2206 {
2207 m_obj = obj;
2208 if (obj->GetExtderSystem()->GetTotalExtderCount() > 1 && !obj->GetFilaSwitch()->IsReady())
2209 {
2210 // Orca: SwitchBoard has no SetLabels(a,b); set its public left/right labels (left=deputy, right=main).
2211 m_nozzle_btn_panel->leftLabel =
2213 m_nozzle_btn_panel->rightLabel =
2215 m_nozzle_btn_panel->updateState("right");
2216 m_nozzle_btn_panel->Show();
2217 }
2218 else
2219 {
2220 m_nozzle_btn_panel->Hide();
2221 }
2222
2224 }
2225}
#define DEPUTY_EXTRUDER_ID
Definition DevDefs.h:102
#define MAIN_EXTRUDER_ID
Definition DevDefs.h:101
static std::string get_toolhead_display_name(const std::string &type_str, int ext_id, ToolHeadComponent component, ToolHeadNameCase name_case=ToolHeadNameCase::TitleCase, bool short_name=false)
Definition DevConfigUtil.cpp:379
MachineObject * m_obj
Definition AmsMappingPopup.hpp:557
@ Extruder
Definition DevConfigUtil.h:34
@ TitleCase
Definition DevConfigUtil.h:41

References _L, DEPUTY_EXTRUDER_ID, Slic3r::Extruder, Slic3r::DevPrinterConfigUtil::get_toolhead_display_name(), Slic3r::MachineObject::GetExtderSystem(), Slic3r::MachineObject::GetFilaSwitch(), Slic3r::DevExtderSystem::GetTotalExtderCount(), Slic3r::DevFilaSwitch::IsReady(), m_nozzle_btn_panel, m_obj, MAIN_EXTRUDER_ID, Slic3r::MachineObject::printer_type, Slic3r::TitleCase, and update_to_nozzle().

Referenced by Slic3r::GUI::StatusPanel::on_ams_filament_backup(), Slic3r::GUI::SelectMachineDialog::popup_filament_backup(), and Slic3r::GUI::SyncAmsInfoDialog::popup_filament_backup().

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

◆ update_to_nozzle()

void Slic3r::GUI::AmsReplaceMaterialDialog::update_to_nozzle ( int nozzle_id)
private
2248{
2249 if (!m_obj)
2250 {
2251 return;
2252 }
2253
2254 if (m_obj->GetExtderSystem()->GetTotalExtderCount() < nozzle_id)
2255 {
2256 return;
2257 }
2258
2259 //update group
2260 int group_index = 0;
2261 m_groups_sizer->Clear(true);
2262 if (m_obj->is_support_filament_backup && m_obj->GetFilaSystem()->IsAutoRefillEnabled())
2263 {
2264 // traverse the amd list
2265 std::unordered_map<int, DevAmsTray*> id2tray;// tray id to tray
2266 try
2267 {
2268 for (const auto& ams_info : m_obj->GetFilaSystem()->GetAmsList())
2269 {
2270 for (auto& tray : ams_info.second->GetTrays()) {
2271 try {
2272 int ams_id = std::stoi(ams_info.first);
2273 int slot_id = std::stoi(tray.first);
2274
2275 // Orca: DevFilaSystem has no GetTrayIdByAmsSlotId wrapper; look the tray id up
2276 // in the (tray_id -> {ams_id, slot_id}) index map directly.
2277 int tray_id = -1;
2278 auto tray_index_map = m_obj->GetFilaSystem()->GetTrayIndexMap();
2279 auto tray_it = std::find_if(tray_index_map.begin(), tray_index_map.end(),
2280 [ams_id, slot_id](const auto& item) { return ams_id == item.second.first && slot_id == item.second.second; });
2281 if (tray_it != tray_index_map.end()) { tray_id = tray_it->first; }
2282 if (tray_id != -1) {
2283 id2tray[tray_id] = tray.second;
2284 }
2285 } catch(...) {
2286 BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << " invalid ams_id:" << ams_info.first << ", slot_id:" << tray.first;
2287 }
2288 }
2289 }
2290 }
2291 catch (...) {}
2292
2293 const auto& extder = m_obj->GetExtderSystem()->GetExtderById(nozzle_id);
2294 if (extder)
2295 {
2296 for (int filam : extder->GetFilamBackup())
2297 {
2298 std::map<std::string, wxColour> group_info;
2299 std::string group_material;
2300 bool is_in_tray = false;
2301
2302 //get color & material
2303 const auto& trayid_group = DevExtder::GetBackupStatus(filam);
2304 for (const auto& elem : trayid_group)
2305 {
2306 if (elem.second)
2307 {
2308 DevAmsTray* cur_tray = id2tray[elem.first];
2309 if (!cur_tray)
2310 continue;
2311 auto tray_name = wxGetApp().transition_tridid(elem.first).ToStdString();
2312 auto it = std::find(m_tray_used.begin(), m_tray_used.end(), tray_name);
2313 if (it != m_tray_used.end())
2314 {
2315 is_in_tray = true;
2316 }
2317 group_info[tray_name] = DevAmsTray::decode_color(cur_tray->color);
2318 group_material = cur_tray->get_display_filament_type();
2319 }
2320 }
2321
2322 if (group_info.size() < 2) /* do not show refill if there is one tray*/
2323 {
2324 continue;
2325 }
2326
2327 if (is_in_tray || m_tray_used.size() <= 0)
2328 {
2329 m_groups_sizer->Add(create_backup_group(wxString::Format("%s%d", _L("Group"), group_index + 1), group_info, group_material), 0, wxALL, FromDIP(10));
2330 group_index++;
2331 }
2332 }
2333 }
2334 }
2335
2336 if (group_index > 0)
2337 {
2338 auto height = 0;
2339 if (group_index > 6)
2340 {
2341 height = FromDIP(550);
2342 }
2343 else
2344 {
2345 height = FromDIP(200) * (std::ceil(group_index / 2.0));
2346 }
2347
2348 m_scrollview_groups->SetMinSize(wxSize(FromDIP(400), height));
2349 m_scrollview_groups->SetMaxSize(wxSize(FromDIP(400), height));
2350 }
2351 else
2352 {
2353 m_scrollview_groups->SetMinSize(wxSize(0, 0));
2354 }
2355
2356 // update text
2357 if (group_index > 0)
2358 {
2359 label_txt->SetLabel(_L("When the current material runs out, the printer would use identical filament to continue printing."));
2360 label_txt->Wrap(FromDIP(380));
2361 identical_filament->Show();
2362 }
2363 else
2364 {
2365 if (!m_obj->is_support_filament_backup)
2366 {
2367 label_txt->SetLabel(_L("The printer does not currently support auto refill."));
2368 }
2369 else if (!m_obj->GetFilaSystem()->IsAutoRefillEnabled())
2370 {
2371 label_txt->SetLabelText(_L("AMS filament backup is not enabled; please enable it in the AMS settings.")); // Orca: kept semicolon (existing translation)
2372 }
2373 else
2374 {
2375 label_txt->SetLabelText(_L("When the current filament runs out, the printer will use identical filament to continue printing.\n"
2376 "*Identical filament: same brand, type and color."));
2377 }
2378
2379 label_txt->Wrap(FromDIP(380));
2380 label_txt->Layout();
2381 identical_filament->Hide();
2382 }
2383
2384 m_groups_sizer->Layout();
2385 m_scrollview_groups->Layout();
2386
2387 Layout();
2388 Fit();
2389}
static wxColour decode_color(const std::string &color)
Definition DevFilaSystem.cpp:38
static std::unordered_map< int, bool > GetBackupStatus(unsigned int fila_back_group)
Definition DevExtruderSystem.cpp:76
AmsRMGroup * create_backup_group(wxString gname, std::map< std::string, wxColour > group_info, wxString material)
Definition AmsMappingPopup.cpp:2227
std::vector< std::string > m_tray_used
Definition AmsMappingPopup.hpp:565
coord_t height(const BoundingBox &box)
Definition Arrange.cpp:1185

References _L, Slic3r::DevAmsTray::color, create_backup_group(), Slic3r::DevAmsTray::decode_color(), Slic3r::DevAmsTray::get_display_filament_type(), Slic3r::DevExtder::GetBackupStatus(), identical_filament, label_txt, m_groups_sizer, m_obj, m_scrollview_groups, and m_tray_used.

Referenced by on_nozzle_selected(), and update_machine_obj().

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

Member Data Documentation

◆ identical_filament

Label* Slic3r::GUI::AmsReplaceMaterialDialog::identical_filament

Referenced by create(), and update_to_nozzle().

◆ label_txt

Label* Slic3r::GUI::AmsReplaceMaterialDialog::label_txt {nullptr}
566{nullptr};

Referenced by create(), and update_to_nozzle().

◆ m_can_rescale

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

◆ m_em_unit

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

◆ m_force_rescale

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

◆ m_groups_sizer

wxWrapSizer* Slic3r::GUI::AmsReplaceMaterialDialog::m_groups_sizer { nullptr }
562{ nullptr };

Referenced by create(), and update_to_nozzle().

◆ m_main_sizer

wxBoxSizer* Slic3r::GUI::AmsReplaceMaterialDialog::m_main_sizer { nullptr }
561{ nullptr };

Referenced by create().

◆ 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_nozzle_btn_panel

SwitchBoard* Slic3r::GUI::AmsReplaceMaterialDialog::m_nozzle_btn_panel { nullptr}
563{ nullptr};

Referenced by create(), and update_machine_obj().

◆ m_obj

MachineObject* Slic3r::GUI::AmsReplaceMaterialDialog::m_obj { nullptr }
557{ nullptr };

Referenced by update_machine_obj(), and update_to_nozzle().

◆ m_prev_scale_factor

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

◆ m_scale_factor

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

◆ m_scrollview_groups

wxScrolledWindow* Slic3r::GUI::AmsReplaceMaterialDialog::m_scrollview_groups { nullptr }
559{ nullptr };

Referenced by create(), create_backup_group(), and update_to_nozzle().

◆ m_scrollview_sizer

wxBoxSizer* Slic3r::GUI::AmsReplaceMaterialDialog::m_scrollview_sizer { nullptr }
560{ nullptr };

Referenced by create().

◆ m_tray_used

std::vector<std::string> Slic3r::GUI::AmsReplaceMaterialDialog::m_tray_used

Referenced by update_to_nozzle().


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