forked from viewit/OrcaSlicer-KX
* Upgrade wxWidgets to 3.2.1 Based on prusa3d/PrusaSlicer@9a7e024 Co-authored-by: tamasmeszaros <meszaros.q@gmail.com> * Implement BitmapCache * update wxExtensions while keeping legacy items * update dc.DrawBitmap calls to use get_bitmap * Fix GetSize/Width/Height calls * update BitmapComboBox * fix ifndef in wxExtensions.hpp * update my todos to OcraftyoneTODO * Get to a compilable state Everything seems to be working (including the plater). I am not seeing any graphical issues * fix extruder color icons * fix crash on opening support tab * remove GetBmpSize method from DropDown.cpp * Update TextInput to use bitmap bundles * update a TODO after testing * fix the rendering of the icons on combobox * fix a few todos * fix WipeTowerDialog.cpp * Overhaul WipeTowerDialog Removed simple version of the dialog since BBS removed the functionality but left the code. Center the table (only seen when the table is smaller than the minimum size of the dialog) Fix issue where editing a value causes the m_min_flush_label to change colors slightly Fix an issue where changing a value or running an auto calc changes the disabled value from "-" to "0" * update a few todos * Update some todos * Show dropdown when editing is started * Update NanoSVG.cmake Update NanoSVG to work with PR #2780 * Dim the icon on ComboBox when disabled * solve ObjectDataViewModel todos leaving colPrint and colEditing cases alone as it does not seem to impact anything * Update names in wxExtensions -Rename msw_rescale to sys_color_changed -Replace GetBmpSize, GetBmpWidth, GetBmpHeight with renamed version (same name without "Bmp") Both of these changes were also made by PrusaSlicer. Original Commit: Prusa3D/PrusaSlicer@066b567 Co-authored-by: YuSanka <yusanka@gmail.com> * update BitmapCache::from_svg disable finding bundle in the cache to match load_svg update to match values used in load_svg * Update ScalableButton change the signature and remove functions/vars pertaining to a default bmp fix TODOs in ScalableButton Original Commit: Prusa3D/PrusaSlicer@066b567 Co-authored-by: YuSanka <yusanka@gmail.com> * fix up some more todos in wxExtensions * update ScalableBitmap to use bmp bundles use wxBitmapBundle by default add flag to use old scaled bitmap function (specifically to solve issue with advanced toggle) * attempt to fix macos deps build * fix ubuntu build * Revert "attempt to fix macos deps build" Mistakenly made change to wrong file This reverts commit d9c20b51216db1d409aeb0420d9d901000ad1b00. * update wxWidgets patch an attempt to fix macOS build * Remove duplicate variable from OrcaSlicer.cpp * Fix macOS build issue * Fix blank DataViewItem being added to objects list * Filament ComboBox editor updates -Add show drop down feature to ObjectTable -Call finish editing when ComboBox is closed in ObjectList * remove Apple specific declarations missed during refactor * delete old wxWidgets patch * fix ubuntu seg fault * include patch from #2926 * update patch to include wxWidgets/wxWidgets@991a74c * fix deps not compiling on Windows * update WipeTowerDialog relocates the recalculate button back to its previous position changes the wording of the tip message label add spacing below the matrix * finish patching wxWidgets from prusa3d/PrusaSlicer@f8477d1 and prusa3d/PrusaSlicer@066b567 Co-authored-by: YuSanka <yusanka@gmail.com> * fix combobox crash * revert outside plate changes --------- Co-authored-by: tamasmeszaros <meszaros.q@gmail.com> Co-authored-by: YuSanka <yusanka@gmail.com>
966 lines
34 KiB
C++
966 lines
34 KiB
C++
#include "CalibrationWizardPage.hpp"
|
|
#include "I18N.hpp"
|
|
#include "Widgets/Label.hpp"
|
|
#include "MsgDialog.hpp"
|
|
|
|
namespace Slic3r { namespace GUI {
|
|
|
|
wxDEFINE_EVENT(EVT_CALI_ACTION, wxCommandEvent);
|
|
wxDEFINE_EVENT(EVT_CALI_TRAY_CHANGED, wxCommandEvent);
|
|
|
|
|
|
CalibrationStyle get_cali_style(MachineObject* obj)
|
|
{
|
|
if (!obj) return CalibrationStyle::CALI_STYLE_DEFAULT;
|
|
|
|
if (obj->get_printer_series() == PrinterSeries::SERIES_X1)
|
|
return CalibrationStyle::CALI_STYLE_X1;
|
|
else if (obj->get_printer_series() == PrinterSeries::SERIES_P1P)
|
|
return CalibrationStyle::CALI_STYLE_P1P;
|
|
|
|
return CalibrationStyle::CALI_STYLE_DEFAULT;
|
|
}
|
|
|
|
wxString get_cali_mode_caption_string(CalibMode mode)
|
|
{
|
|
if (mode == CalibMode::Calib_PA_Line)
|
|
return _L("Flow Dynamics Calibration");
|
|
if (mode == CalibMode::Calib_Flow_Rate)
|
|
return _L("Flow Rate Calibration");
|
|
if (mode == CalibMode::Calib_Vol_speed_Tower)
|
|
return _L("Max Volumetric Speed Calibration");
|
|
return "no cali_mode_caption";
|
|
}
|
|
|
|
wxString get_calibration_wiki_page(CalibMode cali_mode)
|
|
{
|
|
switch (cali_mode) {
|
|
case CalibMode::Calib_PA_Line:
|
|
return wxString("https://wiki.bambulab.com/en/software/bambu-studio/calibration_pa");
|
|
case CalibMode::Calib_Flow_Rate:
|
|
return wxString("https://wiki.bambulab.com/en/software/bambu-studio/calibration_flow_rate");
|
|
case CalibMode::Calib_Vol_speed_Tower:
|
|
return wxString("https://wiki.bambulab.com/en/software/bambu-studio/calibration_volumetric");
|
|
case CalibMode::Calib_Temp_Tower:
|
|
return wxString("https://wiki.bambulab.com/en/software/bambu-studio/calibration_temperature");
|
|
case CalibMode::Calib_Retraction_tower:
|
|
return wxString("https://wiki.bambulab.com/en/software/bambu-studio/calibration_retraction");
|
|
default:
|
|
return "";
|
|
}
|
|
}
|
|
|
|
CalibrationFilamentMode get_cali_filament_mode(MachineObject* obj, CalibMode mode)
|
|
{
|
|
// default
|
|
if (!obj) return CalibrationFilamentMode::CALI_MODEL_SINGLE;
|
|
|
|
|
|
if (mode == CalibMode::Calib_PA_Line) {
|
|
if (obj->get_printer_series() == PrinterSeries::SERIES_X1)
|
|
return CalibrationFilamentMode::CALI_MODEL_MULITI;
|
|
else if (obj->get_printer_series() == PrinterSeries::SERIES_P1P)
|
|
return CalibrationFilamentMode::CALI_MODEL_SINGLE;
|
|
}
|
|
else if (mode == CalibMode::Calib_Flow_Rate) {
|
|
if (obj->get_printer_series() == PrinterSeries::SERIES_X1)
|
|
return CalibrationFilamentMode::CALI_MODEL_SINGLE;
|
|
else if (obj->get_printer_series() == PrinterSeries::SERIES_P1P)
|
|
return CalibrationFilamentMode::CALI_MODEL_SINGLE;
|
|
}
|
|
|
|
return CalibrationFilamentMode::CALI_MODEL_SINGLE;
|
|
}
|
|
|
|
CalibMode get_obj_calibration_mode(const MachineObject* obj)
|
|
{
|
|
CalibrationMethod method;
|
|
int cali_stage;
|
|
return get_obj_calibration_mode(obj, method, cali_stage);
|
|
}
|
|
|
|
CalibMode get_obj_calibration_mode(const MachineObject* obj, int& cali_stage)
|
|
{
|
|
CalibrationMethod method;
|
|
return get_obj_calibration_mode(obj, method, cali_stage);
|
|
}
|
|
|
|
CalibMode get_obj_calibration_mode(const MachineObject* obj, CalibrationMethod& method, int& cali_stage)
|
|
{
|
|
method = CalibrationMethod::CALI_METHOD_MANUAL;
|
|
|
|
if (!obj) return CalibMode::Calib_None;
|
|
|
|
if (boost::contains(obj->m_gcode_file, "auto_filament_cali")) {
|
|
method = CalibrationMethod::CALI_METHOD_AUTO;
|
|
return CalibMode::Calib_PA_Line;
|
|
}
|
|
if (boost::contains(obj->m_gcode_file, "user_cali_manual_pa")) {
|
|
method = CalibrationMethod::CALI_METHOD_MANUAL;
|
|
return CalibMode::Calib_PA_Line;
|
|
}
|
|
if (boost::contains(obj->m_gcode_file, "extrusion_cali")) {
|
|
method = CalibrationMethod::CALI_METHOD_MANUAL;
|
|
return CalibMode::Calib_PA_Line;
|
|
}
|
|
|
|
if (boost::contains(obj->m_gcode_file, "abs_flowcalib_cali")) {
|
|
method = CalibrationMethod::CALI_METHOD_AUTO;
|
|
return CalibMode::Calib_Flow_Rate;
|
|
}
|
|
|
|
if (obj->get_printer_series() == PrinterSeries::SERIES_P1P) {
|
|
if (boost::contains(obj->subtask_name, "auto_filament_cali")) {
|
|
method = CalibrationMethod::CALI_METHOD_AUTO;
|
|
return CalibMode::Calib_PA_Line;
|
|
}
|
|
if (boost::contains(obj->subtask_name, "user_cali_manual_pa")) {
|
|
method = CalibrationMethod::CALI_METHOD_MANUAL;
|
|
return CalibMode::Calib_PA_Line;
|
|
}
|
|
if (boost::contains(obj->subtask_name, "extrusion_cali")) {
|
|
method = CalibrationMethod::CALI_METHOD_MANUAL;
|
|
return CalibMode::Calib_PA_Line;
|
|
}
|
|
|
|
if (boost::contains(obj->subtask_name, "abs_flowcalib_cali")) {
|
|
method = CalibrationMethod::CALI_METHOD_AUTO;
|
|
return CalibMode::Calib_Flow_Rate;
|
|
}
|
|
}
|
|
|
|
CalibMode cali_mode = CalibUtils::get_calib_mode_by_name(obj->subtask_name, cali_stage);
|
|
if (cali_mode != CalibMode::Calib_None) {
|
|
method = CalibrationMethod::CALI_METHOD_MANUAL;
|
|
}
|
|
return cali_mode;
|
|
}
|
|
|
|
|
|
CaliPageButton::CaliPageButton(wxWindow* parent, CaliPageActionType type, wxString text)
|
|
: m_action_type(type),
|
|
Button(parent, text)
|
|
{
|
|
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));
|
|
|
|
StateColor btn_bg_white(std::pair<wxColour, int>(wxColour(206, 206, 206), StateColor::Disabled),
|
|
std::pair<wxColour, int>(wxColour(206, 206, 206), StateColor::Pressed),
|
|
std::pair<wxColour, int>(wxColour(238, 238, 238), StateColor::Hovered),
|
|
std::pair<wxColour, int>(wxColour(255, 255, 255), StateColor::Normal));
|
|
|
|
StateColor btn_bd_green(std::pair<wxColour, int>(wxColour(255, 255, 254), StateColor::Disabled),
|
|
std::pair<wxColour, int>(wxColour(0, 150, 136), StateColor::Enabled));
|
|
|
|
StateColor btn_bd_white(std::pair<wxColour, int>(wxColour(255, 255, 254), StateColor::Disabled),
|
|
std::pair<wxColour, int>(wxColour(38, 46, 48), StateColor::Enabled));
|
|
|
|
StateColor btn_text_green(std::pair<wxColour, int>(wxColour(255, 255, 254), StateColor::Disabled),
|
|
std::pair<wxColour, int>(wxColour(255, 255, 254), StateColor::Enabled));
|
|
|
|
StateColor btn_text_white(std::pair<wxColour, int>(wxColour(255, 255, 254), StateColor::Disabled),
|
|
std::pair<wxColour, int>(wxColour(38, 46, 48), StateColor::Enabled));
|
|
|
|
switch (m_action_type)
|
|
{
|
|
case CaliPageActionType::CALI_ACTION_MANAGE_RESULT:
|
|
this->SetLabel(_L("Manage Result"));
|
|
break;
|
|
case CaliPageActionType::CALI_ACTION_MANUAL_CALI:
|
|
this->SetLabel(_L("Manual Calibration"));
|
|
this->SetToolTip(_L("Result can be read by human eyes."));
|
|
break;
|
|
case CaliPageActionType::CALI_ACTION_AUTO_CALI:
|
|
this->SetLabel(_L("Auto-Calibration"));
|
|
this->SetToolTip(_L("We would use Lidar to read the calibration result"));
|
|
break;
|
|
case CaliPageActionType::CALI_ACTION_START:
|
|
this->SetLabel(_L("Start Calibration"));
|
|
break;
|
|
case CaliPageActionType::CALI_ACTION_PREV:
|
|
this->SetLabel(_L("Prev"));
|
|
break;
|
|
case CaliPageActionType::CALI_ACTION_RECALI:
|
|
this->SetLabel(_L("Recalibration"));
|
|
break;
|
|
case CaliPageActionType::CALI_ACTION_NEXT:
|
|
this->SetLabel(_L("Next"));
|
|
break;
|
|
case CaliPageActionType::CALI_ACTION_CALI_NEXT:
|
|
this->SetLabel(_L("Next"));
|
|
break;
|
|
case CaliPageActionType::CALI_ACTION_CALI:
|
|
this->SetLabel(_L("Calibrate"));
|
|
break;
|
|
case CaliPageActionType::CALI_ACTION_FLOW_CALI_STAGE_2:
|
|
this->SetLabel(_L("Calibrate"));
|
|
break;
|
|
case CaliPageActionType::CALI_ACTION_PA_SAVE:
|
|
this->SetLabel(_L("Finish"));
|
|
break;
|
|
case CaliPageActionType::CALI_ACTION_FLOW_SAVE:
|
|
this->SetLabel(_L("Finish"));
|
|
break;
|
|
case CaliPageActionType::CALI_ACTION_FLOW_COARSE_SAVE:
|
|
this->SetLabel(_L("Finish"));
|
|
break;
|
|
case CaliPageActionType::CALI_ACTION_FLOW_FINE_SAVE:
|
|
this->SetLabel(_L("Finish"));
|
|
break;
|
|
case CaliPageActionType::CALI_ACTION_COMMON_SAVE:
|
|
this->SetLabel(_L("Finish"));
|
|
break;
|
|
default:
|
|
this->SetLabel("Unknown");
|
|
break;
|
|
}
|
|
|
|
switch (m_action_type)
|
|
{
|
|
case CaliPageActionType::CALI_ACTION_PREV:
|
|
case CaliPageActionType::CALI_ACTION_RECALI:
|
|
SetBackgroundColor(btn_bg_white);
|
|
SetBorderColor(btn_bd_white);
|
|
SetTextColor(btn_text_white);
|
|
break;
|
|
case CaliPageActionType::CALI_ACTION_START:
|
|
case CaliPageActionType::CALI_ACTION_NEXT:
|
|
case CaliPageActionType::CALI_ACTION_CALI:
|
|
case CaliPageActionType::CALI_ACTION_CALI_NEXT:
|
|
case CaliPageActionType::CALI_ACTION_FLOW_CALI_STAGE_2:
|
|
case CaliPageActionType::CALI_ACTION_PA_SAVE:
|
|
case CaliPageActionType::CALI_ACTION_FLOW_SAVE:
|
|
case CaliPageActionType::CALI_ACTION_FLOW_COARSE_SAVE:
|
|
case CaliPageActionType::CALI_ACTION_FLOW_FINE_SAVE:
|
|
case CaliPageActionType::CALI_ACTION_COMMON_SAVE:
|
|
SetBackgroundColor(btn_bg_green);
|
|
SetBorderColor(btn_bd_green);
|
|
SetTextColor(btn_text_green);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
SetBackgroundColour(*wxWHITE);
|
|
SetFont(Label::Body_13);
|
|
SetMinSize(wxSize(-1, FromDIP(24)));
|
|
SetCornerRadius(FromDIP(12));
|
|
}
|
|
|
|
void CaliPageButton::msw_rescale()
|
|
{
|
|
SetMinSize(wxSize(-1, FromDIP(24)));
|
|
SetCornerRadius(FromDIP(12));
|
|
Rescale();
|
|
}
|
|
|
|
|
|
FilamentComboBox::FilamentComboBox(wxWindow* parent, const wxPoint& pos, const wxSize& size)
|
|
: wxPanel(parent, wxID_ANY, pos, size, wxTAB_TRAVERSAL)
|
|
{
|
|
SetBackgroundColour(*wxWHITE);
|
|
|
|
wxBoxSizer* main_sizer = new wxBoxSizer(wxHORIZONTAL);
|
|
|
|
m_comboBox = new CalibrateFilamentComboBox(this);
|
|
m_comboBox->SetSize(CALIBRATION_FILAMENT_COMBOX_SIZE);
|
|
m_comboBox->SetMinSize(CALIBRATION_FILAMENT_COMBOX_SIZE);
|
|
main_sizer->Add(m_comboBox->clr_picker, 0, wxALIGN_CENTER | wxRIGHT, FromDIP(8));
|
|
main_sizer->Add(m_comboBox, 0, wxALIGN_CENTER);
|
|
|
|
this->SetSizer(main_sizer);
|
|
this->Layout();
|
|
main_sizer->Fit(this);
|
|
}
|
|
|
|
void FilamentComboBox::set_select_mode(CalibrationFilamentMode mode)
|
|
{
|
|
m_mode = mode;
|
|
if (m_checkBox)
|
|
m_checkBox->Show(m_mode == CalibrationFilamentMode::CALI_MODEL_MULITI);
|
|
if (m_radioBox)
|
|
m_radioBox->Show(m_mode == CalibrationFilamentMode::CALI_MODEL_SINGLE);
|
|
|
|
Layout();
|
|
}
|
|
|
|
void FilamentComboBox::load_tray_from_ams(int id, DynamicPrintConfig& tray)
|
|
{
|
|
m_comboBox->load_tray(tray);
|
|
|
|
m_tray_id = id;
|
|
m_tray_name = m_comboBox->get_tray_name();
|
|
m_is_bbl_filamnet = MachineObject::is_bbl_filament(m_comboBox->get_tag_uid());
|
|
Enable(m_comboBox->is_tray_exist());
|
|
|
|
if (m_comboBox->is_tray_exist()) {
|
|
if (!m_comboBox->is_compatible_with_printer()) {
|
|
SetValue(false);
|
|
}
|
|
|
|
if (m_radioBox)
|
|
m_radioBox->Enable(m_comboBox->is_compatible_with_printer());
|
|
|
|
if (m_checkBox)
|
|
m_checkBox->Enable(m_comboBox->is_compatible_with_printer());
|
|
|
|
}
|
|
|
|
// check compatibility
|
|
wxCommandEvent event(EVT_CALI_TRAY_CHANGED);
|
|
event.SetEventObject(GetParent());
|
|
wxPostEvent(GetParent(), event);
|
|
}
|
|
|
|
void FilamentComboBox::update_from_preset() { m_comboBox->update(); }
|
|
|
|
bool FilamentComboBox::Show(bool show)
|
|
{
|
|
return wxPanel::Show(show);
|
|
}
|
|
|
|
bool FilamentComboBox::Enable(bool enable) {
|
|
if (!enable)
|
|
SetValue(false);
|
|
|
|
if (m_radioBox)
|
|
m_radioBox->Enable(enable);
|
|
if (m_checkBox)
|
|
m_checkBox->Enable(enable);
|
|
return wxPanel::Enable(enable);
|
|
}
|
|
|
|
void FilamentComboBox::SetValue(bool value, bool send_event) {
|
|
if (m_radioBox) {
|
|
if (value == m_radioBox->GetValue()) {
|
|
if (m_checkBox) {
|
|
if (value == m_checkBox->GetValue())
|
|
return;
|
|
}
|
|
else {
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
if (m_radioBox)
|
|
m_radioBox->SetValue(value);
|
|
if (m_checkBox)
|
|
m_checkBox->SetValue(value);
|
|
}
|
|
|
|
void FilamentComboBox::msw_rescale()
|
|
{
|
|
//m_checkBox->Rescale();
|
|
m_comboBox->SetSize(CALIBRATION_FILAMENT_COMBOX_SIZE);
|
|
m_comboBox->SetMinSize(CALIBRATION_FILAMENT_COMBOX_SIZE);
|
|
m_comboBox->msw_rescale();
|
|
}
|
|
|
|
|
|
|
|
CaliPageCaption::CaliPageCaption(wxWindow* parent, CalibMode cali_mode,
|
|
wxWindowID id, const wxPoint& pos, const wxSize& size, long style)
|
|
: wxPanel(parent, id, pos, size, style)
|
|
{
|
|
init_bitmaps();
|
|
|
|
SetBackgroundColour(*wxWHITE);
|
|
|
|
auto top_sizer = new wxBoxSizer(wxVERTICAL);
|
|
auto caption_sizer = new wxBoxSizer(wxHORIZONTAL);
|
|
m_prev_btn = new ScalableButton(this, wxID_ANY, "cali_page_caption_prev",
|
|
wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, 30);
|
|
m_prev_btn->SetBackgroundColour(*wxWHITE);
|
|
caption_sizer->Add(m_prev_btn, 0, wxALIGN_CENTER | wxRIGHT, FromDIP(10));
|
|
|
|
wxString title = get_cali_mode_caption_string(cali_mode);
|
|
Label* title_text = new Label(this, title);
|
|
title_text->SetFont(Label::Head_20);
|
|
title_text->Wrap(-1);
|
|
caption_sizer->Add(title_text, 0, wxALIGN_CENTER | wxRIGHT, FromDIP(10));
|
|
|
|
m_help_btn = new ScalableButton(this, wxID_ANY, "cali_page_caption_help",
|
|
wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, 30);
|
|
m_help_btn->Hide();
|
|
m_help_btn->SetBackgroundColour(*wxWHITE);
|
|
caption_sizer->Add(m_help_btn, 0, wxALIGN_CENTER);
|
|
|
|
caption_sizer->AddStretchSpacer();
|
|
|
|
m_wiki_url = get_calibration_wiki_page(cali_mode);
|
|
create_wiki(this);
|
|
caption_sizer->Add(m_wiki_text, 0);
|
|
|
|
top_sizer->Add(caption_sizer, 1, wxEXPAND);
|
|
top_sizer->AddSpacer(FromDIP(35));
|
|
this->SetSizer(top_sizer);
|
|
top_sizer->Fit(this);
|
|
|
|
// hover effect
|
|
//m_prev_btn->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) {
|
|
// m_prev_btn->SetBitmap(m_prev_bmp_hover.bmp());
|
|
//});
|
|
|
|
//m_prev_btn->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) {
|
|
// m_prev_btn->SetBitmap(m_prev_bmp_normal.bmp());
|
|
//});
|
|
|
|
// hover effect
|
|
//m_help_btn->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) {
|
|
// m_help_btn->SetBitmap(m_help_bmp_hover.bmp());
|
|
// });
|
|
|
|
//m_help_btn->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) {
|
|
// m_help_btn->SetBitmap(m_help_bmp_normal.bmp());
|
|
// });
|
|
|
|
// send event
|
|
m_prev_btn->Bind(wxEVT_BUTTON, [this](auto& e) {
|
|
wxCommandEvent event(EVT_CALI_ACTION);
|
|
event.SetEventObject(m_parent);
|
|
event.SetInt((int)(CaliPageActionType::CALI_ACTION_GO_HOME));
|
|
wxPostEvent(m_parent, event);
|
|
});
|
|
|
|
#ifdef __linux__
|
|
wxGetApp().CallAfter([this, title_text]() {
|
|
title_text->SetMinSize(title_text->GetSize() + wxSize{ FromDIP(150), title_text->GetCharHeight() / 2 });
|
|
Layout();
|
|
Fit();
|
|
});
|
|
#endif
|
|
}
|
|
|
|
void CaliPageCaption::init_bitmaps() {
|
|
m_prev_bmp_normal = ScalableBitmap(this, "cali_page_caption_prev", 30);
|
|
m_prev_bmp_hover = ScalableBitmap(this, "cali_page_caption_prev_hover", 30);
|
|
m_help_bmp_normal = ScalableBitmap(this, "cali_page_caption_help", 30);
|
|
m_help_bmp_hover = ScalableBitmap(this, "cali_page_caption_help_hover", 30);
|
|
}
|
|
|
|
void CaliPageCaption::create_wiki(wxWindow* parent)
|
|
{
|
|
m_wiki_text = new Label(parent, _L("Wiki"));
|
|
m_wiki_text->SetFont(Label::Head_14);
|
|
m_wiki_text->SetForegroundColour({ 0, 88, 220 });
|
|
m_wiki_text->Bind(wxEVT_ENTER_WINDOW, [this](wxMouseEvent& e) {
|
|
e.Skip();
|
|
SetCursor(wxCURSOR_HAND);
|
|
});
|
|
m_wiki_text->Bind(wxEVT_LEAVE_WINDOW, [this](wxMouseEvent& e) {
|
|
e.Skip();
|
|
SetCursor(wxCURSOR_ARROW);
|
|
});
|
|
m_wiki_text->Bind(wxEVT_LEFT_UP, [this](wxMouseEvent& e) {
|
|
if (!m_wiki_url.empty())
|
|
wxLaunchDefaultBrowser(m_wiki_url);
|
|
});
|
|
}
|
|
|
|
void CaliPageCaption::show_prev_btn(bool show)
|
|
{
|
|
m_prev_btn->Show(show);
|
|
}
|
|
|
|
void CaliPageCaption::show_help_icon(bool show)
|
|
{
|
|
//m_help_btn->Show(show);
|
|
m_help_btn->Hide();
|
|
}
|
|
|
|
void CaliPageCaption::on_sys_color_changed()
|
|
{
|
|
m_prev_btn->sys_color_changed();
|
|
}
|
|
|
|
void CaliPageCaption::msw_rescale()
|
|
{
|
|
m_prev_btn->sys_color_changed();
|
|
}
|
|
|
|
CaliPageStepGuide::CaliPageStepGuide(wxWindow* parent, wxArrayString steps,
|
|
wxWindowID id, const wxPoint& pos, const wxSize& size, long style)
|
|
: wxPanel(parent, id, pos, size, style),
|
|
m_steps(steps)
|
|
{
|
|
SetBackgroundColour(*wxWHITE);
|
|
|
|
auto top_sizer = new wxBoxSizer(wxVERTICAL);
|
|
|
|
m_step_sizer = new wxBoxSizer(wxHORIZONTAL);
|
|
m_step_sizer->AddSpacer(FromDIP(90));
|
|
for (int i = 0; i < m_steps.size(); i++) {
|
|
Label* step_text = new Label(this, m_steps[i]);
|
|
step_text->SetForegroundColour(wxColour(206, 206, 206));
|
|
m_text_steps.push_back(step_text);
|
|
m_step_sizer->Add(step_text, 0, wxALIGN_CENTER | wxLEFT | wxRIGHT, FromDIP(15));
|
|
if (i != m_steps.size() - 1) {
|
|
auto line = new wxPanel(this, wxID_ANY, wxDefaultPosition);
|
|
line->SetBackgroundColour(*wxBLACK);
|
|
m_step_sizer->Add(line, 1, wxALIGN_CENTER);
|
|
}
|
|
}
|
|
m_step_sizer->AddSpacer(FromDIP(90));
|
|
|
|
top_sizer->Add(m_step_sizer, 0, wxEXPAND);
|
|
top_sizer->AddSpacer(FromDIP(30));
|
|
this->SetSizer(top_sizer);
|
|
top_sizer->Fit(this);
|
|
|
|
wxGetApp().UpdateDarkUIWin(this);
|
|
}
|
|
|
|
void CaliPageStepGuide::set_steps(int index)
|
|
{
|
|
for (Label* text_step : m_text_steps) {
|
|
text_step->SetForegroundColour(wxColour(206, 206, 206));
|
|
}
|
|
m_text_steps[index]->SetForegroundColour(*wxBLACK);
|
|
|
|
wxGetApp().UpdateDarkUIWin(this);
|
|
}
|
|
|
|
void CaliPageStepGuide::set_steps_string(wxArrayString steps)
|
|
{
|
|
m_steps.Clear();
|
|
m_text_steps.clear();
|
|
m_step_sizer->Clear(true);
|
|
m_steps = steps;
|
|
m_step_sizer->AddSpacer(FromDIP(90));
|
|
for (int i = 0; i < m_steps.size(); i++) {
|
|
Label* step_text = new Label(this, m_steps[i]);
|
|
step_text->SetForegroundColour(wxColour(206, 206, 206));
|
|
m_text_steps.push_back(step_text);
|
|
m_step_sizer->Add(step_text, 0, wxALIGN_CENTER | wxLEFT | wxRIGHT, FromDIP(15));
|
|
if (i != m_steps.size() - 1) {
|
|
auto line = new wxPanel(this, wxID_ANY, wxDefaultPosition);
|
|
line->SetBackgroundColour(*wxBLACK);
|
|
m_step_sizer->Add(line, 1, wxALIGN_CENTER);
|
|
}
|
|
}
|
|
m_step_sizer->AddSpacer(FromDIP(90));
|
|
|
|
wxGetApp().UpdateDarkUIWin(this);
|
|
|
|
Layout();
|
|
}
|
|
|
|
|
|
CaliPagePicture::CaliPagePicture(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style)
|
|
: wxPanel(parent, id, pos, size, style)
|
|
{
|
|
SetBackgroundColour(wxColour(0xCECECE));
|
|
auto top_sizer = new wxBoxSizer(wxHORIZONTAL);
|
|
top_sizer->AddStretchSpacer();
|
|
m_img = new wxStaticBitmap(this, wxID_ANY, wxNullBitmap);
|
|
top_sizer->Add(m_img);
|
|
top_sizer->AddStretchSpacer();
|
|
this->SetSizer(top_sizer);
|
|
top_sizer->Fit(this);
|
|
}
|
|
|
|
void CaliPagePicture::set_bmp(const ScalableBitmap& bmp)
|
|
{
|
|
m_bmp = bmp;
|
|
m_img->SetBitmap(m_bmp.bmp());
|
|
}
|
|
|
|
void CaliPagePicture::msw_rescale()
|
|
{
|
|
m_bmp.msw_rescale();
|
|
m_img->SetBitmap(m_bmp.bmp());
|
|
}
|
|
|
|
|
|
PAPageHelpPanel::PAPageHelpPanel(wxWindow* parent, bool ground_panel, wxWindowID id, const wxPoint& pos, const wxSize& size, long style)
|
|
: wxPanel(parent, id, pos, size, style)
|
|
{
|
|
if (ground_panel)
|
|
SetBackgroundColour(wxColour(238, 238, 238));
|
|
else
|
|
SetBackgroundColour(parent->GetBackgroundColour());
|
|
int left_align_padding = ground_panel ? FromDIP(20) : 0;
|
|
|
|
wxBoxSizer* top_sizer = new wxBoxSizer(wxVERTICAL);
|
|
top_sizer->AddSpacer(FromDIP(10));
|
|
|
|
auto help_text_title = new Label(this, _L("How to use calibration result?"));
|
|
help_text_title->SetFont(Label::Head_14);
|
|
top_sizer->Add(help_text_title, 0, wxLEFT | wxRIGHT, left_align_padding);
|
|
|
|
wxBoxSizer* help_text_sizer = new wxBoxSizer(wxHORIZONTAL);
|
|
auto help_text = new Label(this, _L("You could change the Flow Dynamics Calibration Factor in material editing"));
|
|
help_text->SetFont(Label::Body_14);
|
|
m_help_btn = new ScalableButton(this, wxID_ANY, "cali_page_caption_help", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, 24);
|
|
m_help_btn->SetBackgroundColour(m_help_btn->GetParent()->GetBackgroundColour());
|
|
help_text_sizer->Add(help_text, 0, wxALIGN_CENTER | wxLEFT, left_align_padding);
|
|
help_text_sizer->Add(m_help_btn, 0, wxALIGN_CENTER | wxLEFT, FromDIP(8));
|
|
help_text_sizer->AddSpacer(FromDIP(20));
|
|
|
|
top_sizer->Add(help_text_sizer);
|
|
|
|
top_sizer->AddSpacer(FromDIP(6));
|
|
|
|
create_pop_window();
|
|
|
|
SetSizer(top_sizer);
|
|
top_sizer->Fit(this);
|
|
}
|
|
|
|
void PAPageHelpPanel::msw_rescale()
|
|
{
|
|
m_help_btn->sys_color_changed();
|
|
m_bmp.sys_color_changed();
|
|
m_img->SetBitmap(m_bmp.bmp());
|
|
}
|
|
|
|
void PAPageHelpPanel::create_pop_window()
|
|
{
|
|
m_pop_win = new PopupWindow(this);
|
|
m_pop_win->SetBackgroundColour(*wxWHITE);
|
|
wxBoxSizer* pop_sizer = new wxBoxSizer(wxVERTICAL);
|
|
m_pop_win->SetSizer(pop_sizer);
|
|
|
|
m_img = new wxStaticBitmap(m_pop_win, wxID_ANY, wxNullBitmap);
|
|
m_bmp = ScalableBitmap(this, "cali_fdc_editing_diagram", 206);
|
|
m_img->SetBitmap(m_bmp.bmp());
|
|
pop_sizer->Add(m_img, 1, wxEXPAND | wxALL, FromDIP(20));
|
|
|
|
m_pop_win->Layout();
|
|
m_pop_win->Fit();
|
|
|
|
m_pop_win->Bind(wxEVT_PAINT, [this](auto&) {
|
|
wxPaintDC dc(m_pop_win);
|
|
dc.SetPen({ 0xACACAC });
|
|
dc.SetBrush(*wxTRANSPARENT_BRUSH);
|
|
dc.DrawRectangle({ 0, 0 }, m_pop_win->GetSize());
|
|
});
|
|
|
|
m_help_btn->Bind(wxEVT_ENTER_WINDOW, [this](auto&) {
|
|
wxPoint pop_pos = m_help_btn->ClientToScreen(wxPoint(0, 0));
|
|
pop_pos.x -= FromDIP(60);
|
|
pop_pos.y -= m_pop_win->GetSize().y + FromDIP(10);
|
|
|
|
m_pop_win->Position(pop_pos, wxSize(0, 0));
|
|
m_pop_win->Popup();
|
|
});
|
|
m_help_btn->Bind(wxEVT_LEAVE_WINDOW, [this](auto&) {
|
|
m_pop_win->Dismiss();
|
|
});
|
|
}
|
|
|
|
|
|
CaliPageActionPanel::CaliPageActionPanel(wxWindow* parent,
|
|
CalibMode cali_mode,
|
|
CaliPageType page_type,
|
|
wxWindowID id, const wxPoint& pos, const wxSize& size, long style)
|
|
: wxPanel(parent, id, pos, size, style)
|
|
{
|
|
m_parent = parent;
|
|
|
|
wxWindow* btn_parent = this;
|
|
|
|
if (cali_mode == CalibMode::Calib_PA_Line) {
|
|
if (page_type == CaliPageType::CALI_PAGE_START) {
|
|
m_action_btns.push_back(new CaliPageButton(btn_parent, CaliPageActionType::CALI_ACTION_MANAGE_RESULT));
|
|
m_action_btns.push_back(new CaliPageButton(btn_parent, CaliPageActionType::CALI_ACTION_MANUAL_CALI));
|
|
m_action_btns.push_back(new CaliPageButton(btn_parent, CaliPageActionType::CALI_ACTION_AUTO_CALI));
|
|
}
|
|
else if (page_type == CaliPageType::CALI_PAGE_PRESET) {
|
|
m_action_btns.push_back(new CaliPageButton(btn_parent, CaliPageActionType::CALI_ACTION_CALI));
|
|
}
|
|
else if (page_type == CaliPageType::CALI_PAGE_CALI) {
|
|
m_action_btns.push_back(new CaliPageButton(btn_parent, CaliPageActionType::CALI_ACTION_CALI_NEXT));
|
|
}
|
|
else if (page_type == CaliPageType::CALI_PAGE_PA_SAVE) {
|
|
m_action_btns.push_back(new CaliPageButton(btn_parent, CaliPageActionType::CALI_ACTION_PA_SAVE));
|
|
}
|
|
}
|
|
else if (cali_mode == CalibMode::Calib_Flow_Rate) {
|
|
if (page_type == CaliPageType::CALI_PAGE_START) {
|
|
m_action_btns.push_back(new CaliPageButton(btn_parent, CaliPageActionType::CALI_ACTION_MANUAL_CALI));
|
|
m_action_btns.push_back(new CaliPageButton(btn_parent, CaliPageActionType::CALI_ACTION_AUTO_CALI));
|
|
}
|
|
else if (page_type == CaliPageType::CALI_PAGE_PRESET) {
|
|
m_action_btns.push_back(new CaliPageButton(btn_parent, CaliPageActionType::CALI_ACTION_CALI));
|
|
}
|
|
else if (page_type == CaliPageType::CALI_PAGE_CALI) {
|
|
m_action_btns.push_back(new CaliPageButton(btn_parent, CaliPageActionType::CALI_ACTION_CALI_NEXT));
|
|
}
|
|
else if (page_type == CaliPageType::CALI_PAGE_COARSE_SAVE) {
|
|
m_action_btns.push_back(new CaliPageButton(btn_parent, CaliPageActionType::CALI_ACTION_FLOW_COARSE_SAVE));
|
|
m_action_btns.push_back(new CaliPageButton(btn_parent, CaliPageActionType::CALI_ACTION_FLOW_CALI_STAGE_2));
|
|
}
|
|
else if (page_type == CaliPageType::CALI_PAGE_FINE_SAVE) {
|
|
m_action_btns.push_back(new CaliPageButton(btn_parent, CaliPageActionType::CALI_ACTION_FLOW_FINE_SAVE));
|
|
}
|
|
else if (page_type == CaliPageType::CALI_PAGE_FLOW_SAVE) {
|
|
m_action_btns.push_back(new CaliPageButton(btn_parent, CaliPageActionType::CALI_ACTION_FLOW_SAVE));
|
|
}
|
|
}
|
|
else {
|
|
if (page_type == CaliPageType::CALI_PAGE_START) {
|
|
m_action_btns.push_back(new CaliPageButton(btn_parent, CaliPageActionType::CALI_ACTION_START));
|
|
}
|
|
else if (page_type == CaliPageType::CALI_PAGE_PRESET) {
|
|
m_action_btns.push_back(new CaliPageButton(btn_parent, CaliPageActionType::CALI_ACTION_CALI));
|
|
}
|
|
else if (page_type == CaliPageType::CALI_PAGE_CALI) {
|
|
m_action_btns.push_back(new CaliPageButton(btn_parent, CaliPageActionType::CALI_ACTION_CALI_NEXT));
|
|
}
|
|
else if (page_type == CaliPageType::CALI_PAGE_COMMON_SAVE) {
|
|
m_action_btns.push_back(new CaliPageButton(btn_parent, CaliPageActionType::CALI_ACTION_COMMON_SAVE));
|
|
}
|
|
else {
|
|
m_action_btns.push_back(new CaliPageButton(btn_parent, CaliPageActionType::CALI_ACTION_PREV));
|
|
m_action_btns.push_back(new CaliPageButton(btn_parent, CaliPageActionType::CALI_ACTION_NEXT));
|
|
}
|
|
|
|
}
|
|
|
|
auto top_sizer = new wxBoxSizer(wxHORIZONTAL);
|
|
|
|
top_sizer->Add(0, 0, 1, wxEXPAND, 0);
|
|
for (int i = 0; i < m_action_btns.size(); i++) {
|
|
top_sizer->Add(m_action_btns[i], 0, wxALL, FromDIP(5));
|
|
|
|
m_action_btns[i]->Bind(wxEVT_BUTTON,
|
|
[this, i](wxCommandEvent& evt) {
|
|
wxCommandEvent event(EVT_CALI_ACTION);
|
|
event.SetEventObject(m_parent);
|
|
event.SetInt((int)m_action_btns[i]->get_action_type());
|
|
wxPostEvent(m_parent, event);
|
|
});
|
|
}
|
|
top_sizer->Add(0, 0, 1, wxEXPAND, 0);
|
|
|
|
this->SetSizer(top_sizer);
|
|
top_sizer->Fit(this);
|
|
}
|
|
|
|
void CaliPageActionPanel::bind_button(CaliPageActionType action_type, bool is_block)
|
|
{
|
|
for (int i = 0; i < m_action_btns.size(); i++) {
|
|
if (m_action_btns[i]->get_action_type() == action_type) {
|
|
|
|
if (is_block) {
|
|
m_action_btns[i]->Bind(wxEVT_BUTTON,
|
|
[this](wxCommandEvent& evt) {
|
|
MessageDialog msg(nullptr, _L("The current firmware version of the printer does not support calibration.\nPlease upgrade the printer firmware."), _L("Calibration not supported"), wxOK | wxICON_WARNING);
|
|
msg.ShowModal();
|
|
});
|
|
}
|
|
else {
|
|
m_action_btns[i]->Bind(wxEVT_BUTTON,
|
|
[this, i](wxCommandEvent& evt) {
|
|
wxCommandEvent event(EVT_CALI_ACTION);
|
|
event.SetEventObject(m_parent);
|
|
event.SetInt((int)m_action_btns[i]->get_action_type());
|
|
wxPostEvent(m_parent, event);
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void CaliPageActionPanel::show_button(CaliPageActionType action_type, bool show)
|
|
{
|
|
for (int i = 0; i < m_action_btns.size(); i++) {
|
|
if (m_action_btns[i]->get_action_type() == action_type) {
|
|
m_action_btns[i]->Show(show);
|
|
}
|
|
}
|
|
Layout();
|
|
}
|
|
|
|
void CaliPageActionPanel::enable_button(CaliPageActionType action_type, bool enable)
|
|
{
|
|
for (int i = 0; i < m_action_btns.size(); i++) {
|
|
if (m_action_btns[i]->get_action_type() == action_type) {
|
|
m_action_btns[i]->Enable(enable);
|
|
}
|
|
}
|
|
}
|
|
|
|
void CaliPageActionPanel::msw_rescale()
|
|
{
|
|
for (int i = 0; i < m_action_btns.size(); i++) {
|
|
m_action_btns[i]->msw_rescale();
|
|
}
|
|
}
|
|
|
|
CaliPageSendingPanel::CaliPageSendingPanel(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style)
|
|
: wxPanel(parent, id, pos, size, style)
|
|
{
|
|
SetBackgroundColour(*wxWHITE);
|
|
SetMinSize({ FromDIP(475), FromDIP(200) });
|
|
SetMaxSize({ FromDIP(475), FromDIP(200) });
|
|
|
|
create(this);
|
|
|
|
Layout();
|
|
Fit();
|
|
|
|
Bind(EVT_SHOW_ERROR_INFO, [this](auto& e) {
|
|
show_send_failed_info(true);
|
|
});
|
|
}
|
|
|
|
void CaliPageSendingPanel::create(wxWindow* parent)
|
|
{
|
|
auto panel_sizer = new wxBoxSizer(wxVERTICAL);
|
|
parent->SetSizer(panel_sizer);
|
|
|
|
m_send_progress_bar = std::shared_ptr<BBLStatusBarSend>(new BBLStatusBarSend(parent));
|
|
panel_sizer->Add(m_send_progress_bar->get_panel(), 0, wxEXPAND);
|
|
|
|
m_sw_print_failed_info = new wxScrolledWindow(parent, wxID_ANY, wxDefaultPosition, wxSize(FromDIP(380), FromDIP(125)), wxVSCROLL);
|
|
m_sw_print_failed_info->SetBackgroundColour(*wxWHITE);
|
|
m_sw_print_failed_info->SetScrollRate(0, 5);
|
|
m_sw_print_failed_info->SetMinSize(wxSize(FromDIP(380), FromDIP(125)));
|
|
m_sw_print_failed_info->SetMaxSize(wxSize(FromDIP(380), FromDIP(125)));
|
|
|
|
m_sw_print_failed_info->Hide();
|
|
|
|
panel_sizer->Add(m_sw_print_failed_info, 0, wxEXPAND);
|
|
|
|
// create error info panel
|
|
wxBoxSizer* sizer_print_failed_info = new wxBoxSizer(wxVERTICAL);
|
|
m_sw_print_failed_info->SetSizer(sizer_print_failed_info);
|
|
|
|
wxBoxSizer* sizer_error_code = new wxBoxSizer(wxHORIZONTAL);
|
|
wxBoxSizer* sizer_error_desc = new wxBoxSizer(wxHORIZONTAL);
|
|
wxBoxSizer* sizer_extra_info = new wxBoxSizer(wxHORIZONTAL);
|
|
|
|
auto st_title_error_code = new Label(m_sw_print_failed_info, _L("Error code"));
|
|
auto st_title_error_code_doc = new Label(m_sw_print_failed_info, ": ");
|
|
m_st_txt_error_code = new Label(m_sw_print_failed_info, wxEmptyString);
|
|
st_title_error_code->SetForegroundColour(0x909090);
|
|
st_title_error_code_doc->SetForegroundColour(0x909090);
|
|
m_st_txt_error_code->SetForegroundColour(0x909090);
|
|
st_title_error_code->SetFont(::Label::Body_13);
|
|
st_title_error_code_doc->SetFont(::Label::Body_13);
|
|
m_st_txt_error_code->SetFont(::Label::Body_13);
|
|
st_title_error_code->SetMinSize(wxSize(FromDIP(74), -1));
|
|
st_title_error_code->SetMaxSize(wxSize(FromDIP(74), -1));
|
|
m_st_txt_error_code->SetMinSize(wxSize(FromDIP(260), -1));
|
|
m_st_txt_error_code->SetMaxSize(wxSize(FromDIP(260), -1));
|
|
sizer_error_code->Add(st_title_error_code, 0, wxALL, 0);
|
|
sizer_error_code->Add(st_title_error_code_doc, 0, wxALL, 0);
|
|
sizer_error_code->Add(m_st_txt_error_code, 0, wxALL, 0);
|
|
|
|
auto st_title_error_desc = new Label(m_sw_print_failed_info, _L("Error desc"));
|
|
auto st_title_error_desc_doc = new Label(m_sw_print_failed_info, ": ");
|
|
m_st_txt_error_desc = new Label(m_sw_print_failed_info, wxEmptyString);
|
|
st_title_error_desc->SetForegroundColour(0x909090);
|
|
st_title_error_desc_doc->SetForegroundColour(0x909090);
|
|
m_st_txt_error_desc->SetForegroundColour(0x909090);
|
|
st_title_error_desc->SetFont(::Label::Body_13);
|
|
st_title_error_desc_doc->SetFont(::Label::Body_13);
|
|
m_st_txt_error_desc->SetFont(::Label::Body_13);
|
|
st_title_error_desc->SetMinSize(wxSize(FromDIP(74), -1));
|
|
st_title_error_desc->SetMaxSize(wxSize(FromDIP(74), -1));
|
|
m_st_txt_error_desc->SetMinSize(wxSize(FromDIP(260), -1));
|
|
m_st_txt_error_desc->SetMaxSize(wxSize(FromDIP(260), -1));
|
|
sizer_error_desc->Add(st_title_error_desc, 0, wxALL, 0);
|
|
sizer_error_desc->Add(st_title_error_desc_doc, 0, wxALL, 0);
|
|
sizer_error_desc->Add(m_st_txt_error_desc, 0, wxALL, 0);
|
|
|
|
auto st_title_extra_info = new Label(m_sw_print_failed_info, _L("Extra info"));
|
|
auto st_title_extra_info_doc = new Label(m_sw_print_failed_info, ": ");
|
|
m_st_txt_extra_info = new Label(m_sw_print_failed_info, wxEmptyString);
|
|
st_title_extra_info->SetForegroundColour(0x909090);
|
|
st_title_extra_info_doc->SetForegroundColour(0x909090);
|
|
m_st_txt_extra_info->SetForegroundColour(0x909090);
|
|
st_title_extra_info->SetFont(::Label::Body_13);
|
|
st_title_extra_info_doc->SetFont(::Label::Body_13);
|
|
m_st_txt_extra_info->SetFont(::Label::Body_13);
|
|
st_title_extra_info->SetMinSize(wxSize(FromDIP(74), -1));
|
|
st_title_extra_info->SetMaxSize(wxSize(FromDIP(74), -1));
|
|
m_st_txt_extra_info->SetMinSize(wxSize(FromDIP(260), -1));
|
|
m_st_txt_extra_info->SetMaxSize(wxSize(FromDIP(260), -1));
|
|
sizer_extra_info->Add(st_title_extra_info, 0, wxALL, 0);
|
|
sizer_extra_info->Add(st_title_extra_info_doc, 0, wxALL, 0);
|
|
sizer_extra_info->Add(m_st_txt_extra_info, 0, wxALL, 0);
|
|
|
|
sizer_print_failed_info->Add(sizer_error_code, 0, wxLEFT, 5);
|
|
sizer_print_failed_info->Add(0, 0, 0, wxTOP, FromDIP(3));
|
|
sizer_print_failed_info->Add(sizer_error_desc, 0, wxLEFT, 5);
|
|
sizer_print_failed_info->Add(0, 0, 0, wxTOP, FromDIP(3));
|
|
sizer_print_failed_info->Add(sizer_extra_info, 0, wxLEFT, 5);
|
|
}
|
|
|
|
void CaliPageSendingPanel::update_print_error_info(int code, const std::string& msg, const std::string& extra)
|
|
{
|
|
m_print_error_code = code;
|
|
m_print_error_msg = msg;
|
|
m_print_error_extra = extra;
|
|
}
|
|
|
|
void CaliPageSendingPanel::show_send_failed_info(bool show, int code, wxString description, wxString extra)
|
|
{
|
|
if (show) {
|
|
if (!m_sw_print_failed_info->IsShown()) {
|
|
m_sw_print_failed_info->Show(true);
|
|
|
|
m_st_txt_error_code->SetLabelText(wxString::Format("%d", m_print_error_code));
|
|
m_st_txt_error_desc->SetLabelText(wxGetApp().filter_string(m_print_error_msg));
|
|
m_st_txt_extra_info->SetLabelText(wxGetApp().filter_string(m_print_error_extra));
|
|
|
|
m_st_txt_error_code->Wrap(FromDIP(260));
|
|
m_st_txt_error_desc->Wrap(FromDIP(260));
|
|
m_st_txt_extra_info->Wrap(FromDIP(260));
|
|
}
|
|
else {
|
|
m_sw_print_failed_info->Show(false);
|
|
}
|
|
Layout();
|
|
Fit();
|
|
}
|
|
else {
|
|
if (!m_sw_print_failed_info->IsShown()) { return; }
|
|
m_sw_print_failed_info->Show(false);
|
|
m_st_txt_error_code->SetLabelText(wxEmptyString);
|
|
m_st_txt_error_desc->SetLabelText(wxEmptyString);
|
|
m_st_txt_extra_info->SetLabelText(wxEmptyString);
|
|
Layout();
|
|
Fit();
|
|
}
|
|
}
|
|
|
|
std::shared_ptr<BBLStatusBarSend> CaliPageSendingPanel::get_sending_progress_bar()
|
|
{
|
|
return m_send_progress_bar;
|
|
}
|
|
|
|
void CaliPageSendingPanel::reset()
|
|
{
|
|
m_send_progress_bar->reset();
|
|
m_sw_print_failed_info->Show(false);
|
|
}
|
|
|
|
CalibrationWizardPage::CalibrationWizardPage(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style)
|
|
: wxPanel(parent, id, pos, size, style)
|
|
, m_parent(parent)
|
|
{
|
|
SetBackgroundColour(*wxWHITE);
|
|
SetMinSize({ MIN_CALIBRATION_PAGE_WIDTH, -1 });
|
|
}
|
|
|
|
void CalibrationWizardPage::msw_rescale()
|
|
{
|
|
m_page_caption->msw_rescale();
|
|
m_action_panel->msw_rescale();
|
|
}
|
|
|
|
void CalibrationWizardPage::on_sys_color_changed()
|
|
{
|
|
m_page_caption->on_sys_color_changed();
|
|
}
|
|
|
|
}
|
|
}
|