ENH:add "update_sync_ams_btn_enable" api

jira: none
Change-Id: I6380a4380bf402e3f0867faddf188f93658c2d68
This commit is contained in:
zhou.xu 2025-02-15 11:27:16 +08:00 committed by lane.wei
parent 43d15d9701
commit ac7d7726d6
2 changed files with 19 additions and 1 deletions

View File

@ -1142,6 +1142,7 @@ bool Sidebar::priv::sync_extruder_list(bool &only_external_material)
{
MachineObject *obj = wxGetApp().getDeviceManager()->get_selected_machine();
auto printer_name = plater->get_selected_printer_name_in_combox();
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << " begin sync_extruder_list";
if (obj == nullptr || !obj->is_online()) {
plater->pop_warning_and_go_to_device_page(printer_name, Plater::PrinterWarningType::NOT_CONNECTED, _L("Sync printer information"));
return false;
@ -1179,7 +1180,7 @@ bool Sidebar::priv::sync_extruder_list(bool &only_external_material)
printer_tab->select_preset(machine_preset->name);
});
}
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << " go on sync_extruder_list";
const Preset &cur_preset = preset_bundle->printers.get_selected_preset();
int extruder_nums = preset_bundle->get_printer_extruder_count();
std::vector<int> extruder_map(extruder_nums);
@ -1237,6 +1238,7 @@ bool Sidebar::priv::sync_extruder_list(bool &only_external_material)
AMSCountPopupWindow::SetAMSCount(main_index, main_4, main_1);
AMSCountPopupWindow::UpdateAMSCount(0, left_extruder);
AMSCountPopupWindow::UpdateAMSCount(1, right_extruder);
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << " finish sync_extruder_list";
return true;
}
@ -1407,6 +1409,16 @@ void Sidebar::priv::update_sync_status(const MachineObject *obj)
#define PRINTER_PANEL_SIZE_SMALL (wxSize(FromDIP(98), FromDIP(68)))
#define PRINTER_PANEL_SIZE (wxSize(FromDIP(98), FromDIP(98)))
void Sidebar::update_sync_ams_btn_enable(wxUpdateUIEvent &e)
{
if (m_last_slice_state != p->plater->is_background_process_slicing()) {
m_last_slice_state = p->plater->is_background_process_slicing();
btn_sync->Enable(!m_last_slice_state);
ams_btn->Enable(!m_last_slice_state);
Refresh();
}
}
Sidebar::Sidebar(Plater *parent)
: wxPanel(parent, wxID_ANY, wxDefaultPosition, wxSize(42 * wxGetApp().em_unit(), -1)), p(new priv(parent))
{
@ -1665,6 +1677,7 @@ Sidebar::Sidebar(Plater *parent)
btn_sync->SetMinSize(PRINTER_PANEL_SIZE);
btn_sync->SetMaxSize(PRINTER_PANEL_SIZE);
btn_sync->SetVertical();
btn_sync->Bind(wxEVT_UPDATE_UI, &Sidebar::update_sync_ams_btn_enable, this);
btn_sync->Bind(wxEVT_BUTTON, [this](wxCommandEvent &e) {
deal_btn_sync();
});
@ -1829,6 +1842,8 @@ Sidebar::Sidebar(Plater *parent)
ams_btn->Bind(wxEVT_BUTTON, [this, scrolled_sizer](wxCommandEvent &e) {
sync_ams_list();
});
ams_btn->Bind(wxEVT_UPDATE_UI, &Sidebar::update_sync_ams_btn_enable, this);
p->m_bpButton_ams_filament = ams_btn;
bSizer39->Add(ams_btn, 0, wxALIGN_CENTER|wxALL, FromDIP(4));

View File

@ -120,6 +120,7 @@ class Sidebar : public wxPanel
ConfigOptionMode m_mode;
Button * btn_sync{nullptr};
ScalableButton * ams_btn{nullptr};
bool m_last_slice_state = false;
std::shared_ptr<SyncNozzleAndAmsDialog> m_sna_dialog{nullptr};
std::shared_ptr<FinishSyncAmsDialog> m_fna_dialog{nullptr};
std::vector<BedType> m_cur_combox_bed_types;
@ -127,6 +128,8 @@ class Sidebar : public wxPanel
bool m_begin_sync_printer_status{false};
std::shared_ptr<SyncAmsInfoDialog> m_sync_dlg{nullptr};
void update_sync_ams_btn_enable(wxUpdateUIEvent &e);
public:
Sidebar(Plater *parent);
Sidebar(Sidebar &&) = delete;