ENH: refine camera status and settings

Change-Id: I2a8c23ca119ff5d38272dad46347704bf457dee0
Signed-off-by: Stone Li <stone.li@bambulab.com>
This commit is contained in:
Stone Li 2022-12-09 16:46:51 +08:00 committed by Lane.Wei
parent 0d4b8382f5
commit 58dab90e53
17 changed files with 172 additions and 94 deletions

View file

@ -187,11 +187,15 @@ void StatusBasePanel::init_bitmaps()
m_bitmap_extruder_filled_load = *cache.load_png("monitor_extruder_filled_load", FromDIP(28), FromDIP(70), false, false);
m_bitmap_extruder_empty_unload = *cache.load_png("monitor_extruder_empty_unload", FromDIP(28), FromDIP(70), false, false);
m_bitmap_extruder_filled_unload = *cache.load_png("monitor_extruder_filled_unload", FromDIP(28), FromDIP(70), false, false);
m_bitmap_sdcard_state_on = create_scaled_bitmap("sdcard_state_on", nullptr, 20);
m_bitmap_sdcard_state_no = create_scaled_bitmap("sdcard_state_no", nullptr, 20);
m_bitmap_sdcard_state_abnormal = create_scaled_bitmap("sdcard_state_abnormal", nullptr, 20);
m_bitmap_recording = create_scaled_bitmap("recording", nullptr, 20);
m_bitmap_timelapse = create_scaled_bitmap("timelapse", nullptr, 20);
m_bitmap_vcamera = create_scaled_bitmap("vcamera", nullptr, 20);
m_bitmap_sdcard_state_normal = create_scaled_bitmap("sdcard_state_normal", nullptr, 20);
m_bitmap_recording_on = create_scaled_bitmap("monitor_recording_on", nullptr, 20);
m_bitmap_recording_off = create_scaled_bitmap("monitor_recording_off", nullptr, 20);
m_bitmap_timelapse_on = create_scaled_bitmap("monitor_timelapse_on", nullptr, 20);
m_bitmap_timelapse_off = create_scaled_bitmap("monitor_timelapse_off", nullptr, 20);
m_bitmap_vcamera_on = create_scaled_bitmap("monitor_vcamera_on", nullptr, 20);
m_bitmap_vcamera_off = create_scaled_bitmap("monitor_vcamera_off", nullptr, 20);
}
wxBoxSizer *StatusBasePanel::create_monitoring_page()
@ -228,22 +232,18 @@ wxBoxSizer *StatusBasePanel::create_monitoring_page()
//m_bitmap_camera_img->SetMinSize(wxSize(FromDIP(32), FromDIP(18)));
//bSizer_monitoring_title->Add(m_bitmap_camera_img, 0, wxALIGN_CENTER_VERTICAL | wxALL, FromDIP(5));
m_bitmap_sdcard_abnormal_img = new wxStaticBitmap(m_panel_monitoring_title, wxID_ANY, m_bitmap_sdcard_state_abnormal, wxDefaultPosition, wxSize(FromDIP(38), FromDIP(24)), 0);
m_bitmap_sdcard_abnormal_img->SetMinSize(wxSize(FromDIP(38), FromDIP(24)));
m_bitmap_sdcard_on_img = new wxStaticBitmap(m_panel_monitoring_title, wxID_ANY, m_bitmap_sdcard_state_on, wxDefaultPosition, wxSize(FromDIP(38), FromDIP(24)), 0);
m_bitmap_sdcard_on_img->SetMinSize(wxSize(FromDIP(38), FromDIP(24)));
m_bitmap_sdcard_on_img->Hide();
m_bitmap_sdcard_abnormal_img->Hide();
m_bitmap_sdcard_img = new wxStaticBitmap(m_panel_monitoring_title, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize(FromDIP(38), FromDIP(24)), 0);
m_bitmap_sdcard_img->SetMinSize(wxSize(FromDIP(38), FromDIP(24)));
m_bitmap_timelapse_img = new wxStaticBitmap(m_panel_monitoring_title, wxID_ANY, m_bitmap_timelapse, wxDefaultPosition, wxSize(FromDIP(38), FromDIP(24)), 0);
m_bitmap_timelapse_img = new wxStaticBitmap(m_panel_monitoring_title, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize(FromDIP(38), FromDIP(24)), 0);
m_bitmap_timelapse_img->SetMinSize(wxSize(FromDIP(38), FromDIP(24)));
m_bitmap_timelapse_img->Hide();
m_bitmap_recording_img = new wxStaticBitmap(m_panel_monitoring_title, wxID_ANY, m_bitmap_recording, wxDefaultPosition, wxSize(FromDIP(38), FromDIP(24)), 0);
m_bitmap_recording_img = new wxStaticBitmap(m_panel_monitoring_title, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize(FromDIP(38), FromDIP(24)), 0);
m_bitmap_recording_img->SetMinSize(wxSize(FromDIP(38), FromDIP(24)));
m_bitmap_timelapse_img->Hide();
m_bitmap_vcamera_img = new wxStaticBitmap(m_panel_monitoring_title, wxID_ANY, m_bitmap_vcamera, wxDefaultPosition, wxSize(FromDIP(38), FromDIP(24)), 0);
m_bitmap_vcamera_img = new wxStaticBitmap(m_panel_monitoring_title, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize(FromDIP(38), FromDIP(24)), 0);
m_bitmap_vcamera_img->SetMinSize(wxSize(FromDIP(38), FromDIP(24)));
m_bitmap_vcamera_img->Hide();
@ -251,15 +251,13 @@ wxBoxSizer *StatusBasePanel::create_monitoring_page()
m_setting_button->SetMinSize(wxSize(FromDIP(38), FromDIP(24)));
m_setting_button->SetBackgroundColour(STATUS_TITLE_BG);
m_bitmap_sdcard_on_img->SetToolTip(_L("SD Card"));
m_bitmap_sdcard_abnormal_img->SetToolTip(_L("SD Card Abnormal"));
m_bitmap_sdcard_img->SetToolTip(_L("SD Card"));
m_bitmap_timelapse_img->SetToolTip(_L("Timelapse"));
m_bitmap_recording_img->SetToolTip(_L("Video"));
m_bitmap_vcamera_img->SetToolTip(_L("Virtual Camera"));
m_setting_button->SetToolTip(_L("Camera Setting"));
bSizer_monitoring_title->Add(m_bitmap_sdcard_abnormal_img, 0, wxALIGN_CENTER_VERTICAL | wxALL, FromDIP(5));
bSizer_monitoring_title->Add(m_bitmap_sdcard_on_img, 0, wxALIGN_CENTER_VERTICAL | wxALL, FromDIP(5));
bSizer_monitoring_title->Add(m_bitmap_sdcard_img, 0, wxALIGN_CENTER_VERTICAL | wxALL, FromDIP(5));
bSizer_monitoring_title->Add(m_bitmap_timelapse_img, 0, wxALIGN_CENTER_VERTICAL | wxALL, FromDIP(5));
bSizer_monitoring_title->Add(m_bitmap_recording_img, 0, wxALIGN_CENTER_VERTICAL | wxALL, FromDIP(5));
bSizer_monitoring_title->Add(m_bitmap_vcamera_img, 0, wxALIGN_CENTER_VERTICAL | wxALL, FromDIP(5));
@ -1041,45 +1039,86 @@ void StatusBasePanel::show_ams_group(bool show)
m_show_ams_group = show;
}
void StatusPanel::update_img_status(wxStaticBitmap* img, bool on_off)
void StatusPanel::update_camera_state(MachineObject* obj)
{
if (on_off)
img->Show();
else
img->Hide();
}
if (!obj) return;
void StatusPanel::update_camera_state(bool recording, bool timelapse, MachineObject::SdcardState sdcard_state)
{
//m_bitmap_sdcard_abnormal_img->SetToolTip(_L("SD Card Abnormal"));
//sdcard
switch (sdcard_state) {
case MachineObject::SdcardState::NO_SDCARD:
m_bitmap_sdcard_on_img->Hide();
m_bitmap_sdcard_abnormal_img->Hide();
break;
case MachineObject::SdcardState::HAS_SDCARD_NORMAL:
m_bitmap_sdcard_on_img->Show();
m_bitmap_sdcard_abnormal_img->Hide();
break;
case MachineObject::SdcardState::HAS_SDCARD_ABNORMAL:
m_bitmap_sdcard_on_img->Hide();
m_bitmap_sdcard_abnormal_img->Show();
break;
default:
;
if (m_last_sdcard != (int)obj->get_sdcard_state()) {
if (obj->get_sdcard_state() == MachineObject::SdcardState::NO_SDCARD) {
m_bitmap_sdcard_img->SetBitmap(m_bitmap_sdcard_state_no);
m_bitmap_sdcard_img->SetToolTip(_L("No SD Card"));
} else if (obj->get_sdcard_state() == MachineObject::SdcardState::HAS_SDCARD_NORMAL) {
m_bitmap_sdcard_img->SetBitmap(m_bitmap_sdcard_state_normal);
m_bitmap_sdcard_img->SetToolTip(_L("SD Card"));
} else if (obj->get_sdcard_state() == MachineObject::SdcardState::HAS_SDCARD_ABNORMAL) {
m_bitmap_sdcard_img->SetBitmap(m_bitmap_sdcard_state_abnormal);
m_bitmap_sdcard_img->SetToolTip(_L("SD Card Abnormal"));
} else {
m_bitmap_sdcard_img->SetBitmap(m_bitmap_sdcard_state_normal);
m_bitmap_sdcard_img->SetToolTip(_L("SD Card"));
}
m_last_sdcard = (int)obj->get_sdcard_state();
}
//recording
update_img_status(m_bitmap_recording_img, recording);
if (obj->is_function_supported(PrinterFunction::FUNC_RECORDING)) {
if (m_last_recording != (obj->is_recording() ? 1: 0)) {
if (obj->is_recording()) {
m_bitmap_recording_img->SetBitmap(m_bitmap_recording_on);
} else {
m_bitmap_recording_img->SetBitmap(m_bitmap_recording_off);
}
m_last_recording = obj->is_recording() ? 1 : 0;
}
if (!m_bitmap_recording_img->IsShown())
m_bitmap_recording_img->Show();
} else {
if (m_bitmap_recording_img->IsShown())
m_bitmap_recording_img->Hide();
}
//timelapse
update_img_status(m_bitmap_timelapse_img, timelapse);
if (obj->is_function_supported(PrinterFunction::FUNC_TIMELAPSE)) {
if (m_last_timelapse != (obj->is_timelapse() ? 1: 0)) {
if (obj->is_timelapse()) {
m_bitmap_timelapse_img->SetBitmap(m_bitmap_timelapse_on);
} else {
m_bitmap_timelapse_img->SetBitmap(m_bitmap_timelapse_off);
}
m_last_timelapse = obj->is_timelapse() ? 1 : 0;
}
if (!m_bitmap_timelapse_img->IsShown())
m_bitmap_timelapse_img->Show();
} else {
if (m_bitmap_timelapse_img->IsShown())
m_bitmap_timelapse_img->Hide();
}
//vcamera
update_img_status(m_bitmap_vcamera_img, m_media_play_ctrl->IsStreaming());
show_vcamera = m_media_play_ctrl->IsStreaming();
if (obj->is_function_supported(PrinterFunction::FUNC_VIRTUAL_CAMERA)) {
if (m_last_vcamera != (m_media_play_ctrl->IsStreaming() ? 1: 0)) {
if (m_media_play_ctrl->IsStreaming()) {
m_bitmap_vcamera_img->SetBitmap(m_bitmap_vcamera_on);
} else {
m_bitmap_vcamera_img->SetBitmap(m_bitmap_vcamera_off);
}
m_last_vcamera = m_media_play_ctrl->IsStreaming() ? 1 : 0;
}
if (!m_bitmap_vcamera_img->IsShown())
m_bitmap_vcamera_img->Show();
} else {
if (m_bitmap_vcamera_img->IsShown())
m_bitmap_vcamera_img->Hide();
}
//camera setting
if (m_camera_popup) {
m_camera_popup->update();
m_camera_popup->sync_vcamera_state(show_vcamera);
bool show_vcamera = m_media_play_ctrl->IsStreaming();
m_camera_popup->update(show_vcamera);
}
m_panel_monitoring_title->Layout();
}
@ -1455,7 +1494,7 @@ void StatusPanel::update(MachineObject *obj)
update_error_message();
}
update_camera_state(obj->is_recording_enable(), obj->has_timelapse(), obj->get_sdcard_state());
update_camera_state(obj);
m_machine_ctrl_panel->Thaw();
}
@ -1684,16 +1723,19 @@ void StatusPanel::update_extruder_status(MachineObject* obj)
{
if (!obj) return;
if (obj->is_filament_at_extruder()) {
if (obj->extruder_axis_status == MachineObject::ExtruderAxisStatus::LOAD)
if (obj->extruder_axis_status == MachineObject::ExtruderAxisStatus::LOAD) {
m_bitmap_extruder_img->SetBitmap(m_bitmap_extruder_filled_load);
else
}
else {
m_bitmap_extruder_img->SetBitmap(m_bitmap_extruder_filled_unload);
}
}
else {
if (obj->extruder_axis_status == MachineObject::ExtruderAxisStatus::LOAD)
if (obj->extruder_axis_status == MachineObject::ExtruderAxisStatus::LOAD) {
m_bitmap_extruder_img->SetBitmap(m_bitmap_extruder_empty_load);
else
} else {
m_bitmap_extruder_img->SetBitmap(m_bitmap_extruder_empty_unload);
}
}
}
@ -2677,6 +2719,7 @@ void StatusPanel::on_camera_enter(wxMouseEvent& event)
wxPoint pos = ctrl->ClientToScreen(wxPoint(0, 0));
wxSize sz = ctrl->GetSize();
m_camera_popup->Position(pos, wxSize(sz.x, sz.y));
m_camera_popup->update(m_media_play_ctrl->IsStreaming());
m_camera_popup->Popup();
}
}
@ -2846,8 +2889,7 @@ void StatusPanel::msw_rescale()
m_bitmap_recording_img->SetMinSize(wxSize(38, 24));
m_bitmap_vcamera_img->SetMinSize(wxSize(38, 24));
m_setting_button->SetMinSize(wxSize(38, 24));
m_bitmap_sdcard_abnormal_img->SetMinSize(wxSize(FromDIP(38), FromDIP(24)));
m_bitmap_sdcard_on_img->SetMinSize(wxSize(FromDIP(38), FromDIP(24)));
m_bitmap_sdcard_img->SetMinSize(wxSize(FromDIP(38), FromDIP(24)));
m_bpButton_xy->Rescale();
m_tempCtrl_nozzle->SetMinSize(TEMP_CTRL_MIN_SIZE);