diff --git a/src/slic3r/GUI/BBLTopbar.cpp b/src/slic3r/GUI/BBLTopbar.cpp index a395105d7..63f1e9aa3 100644 --- a/src/slic3r/GUI/BBLTopbar.cpp +++ b/src/slic3r/GUI/BBLTopbar.cpp @@ -382,6 +382,15 @@ void BBLTopbar::SaveNormalRect() m_normalRect = m_frame->GetRect(); } +void BBLTopbar::ShowCalibrationButton(bool show) +{ + m_calib_item->GetSizerItem()->Show(show); + m_sizer->Layout(); + if (!show) + m_calib_item->GetSizerItem()->SetDimension({-1000, 0}, {0, 0}); + Refresh(); +} + void BBLTopbar::OnModelStoreClicked(wxAuiToolBarEvent& event) { //GUI::wxGetApp().load_url(wxString(wxGetApp().app_config->get_web_host_url() + MODEL_STORE_URL)); diff --git a/src/slic3r/GUI/BBLTopbar.hpp b/src/slic3r/GUI/BBLTopbar.hpp index fbdfc2b8a..78820813a 100644 --- a/src/slic3r/GUI/BBLTopbar.hpp +++ b/src/slic3r/GUI/BBLTopbar.hpp @@ -54,6 +54,8 @@ public: void SaveNormalRect(); + void ShowCalibrationButton(bool show = true); + private: wxFrame* m_frame; wxAuiToolBarItem* m_file_menu_item; diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 27f0b3513..a1c01bb9d 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -868,6 +868,18 @@ void MainFrame::show_publish_button(bool show) Layout(); } +void MainFrame::show_calibration_button(bool show) +{ +#ifdef __APPLE__ + bool shown = m_menubar->FindMenu(_L("Calibration")); + if (shown == show) return; + if (show) m_menubar->Insert(3, m_calib_menu, wxString::Format("&%s", _L("Calibration"))); + else m_menubar->Remove(3); +#else + topbar()->ShowCalibrationButton(show); +#endif +} + void MainFrame::update_title_colour_after_set_title() { #ifdef __APPLE__ @@ -2753,11 +2765,11 @@ void MainFrame::init_menubar_as_editor() // m_menubar->Append(publishMenu, wxString::Format("&%s", _L("3D Models"))); // SoftFever calibrations - auto calib_menu = new wxMenu(); + m_calib_menu = new wxMenu(); // Temp append_menu_item( - calib_menu, wxID_ANY, _L("Temperature"), _L("Temperature"), + m_calib_menu, wxID_ANY, _L("Temperature"), _L("Temperature"), [this](wxCommandEvent &) { if (!m_temp_calib_dlg) m_temp_calib_dlg = new Temp_Calibration_Dlg((wxWindow *) this, wxID_ANY, m_plater); @@ -2794,14 +2806,14 @@ void MainFrame::init_menubar_as_editor() ; }, this); - append_submenu(calib_menu, flowrate_menu, wxID_ANY, _L("Flow rate"), _L("Flow rate"), "", [this]() { + append_submenu(m_calib_menu, flowrate_menu, wxID_ANY, _L("Flow rate"), _L("Flow rate"), "", [this]() { return m_plater->is_view3D_shown(); ; }); // PA append_menu_item( - calib_menu, wxID_ANY, _L("Pressure advance"), _L("Pressure advance"), + m_calib_menu, wxID_ANY, _L("Pressure advance"), _L("Pressure advance"), [this](wxCommandEvent &) { m_pa_calib_dlg = new PA_Calibration_Dlg((wxWindow *) this, wxID_ANY, m_plater); m_pa_calib_dlg->ShowModal(); @@ -2815,7 +2827,7 @@ void MainFrame::init_menubar_as_editor() // Retraction append_menu_item( - calib_menu, wxID_ANY, _L("Retraction test"), _L("Retraction test"), + m_calib_menu, wxID_ANY, _L("Retraction test"), _L("Retraction test"), [this](wxCommandEvent &) { if (!m_retraction_calib_dlg) m_retraction_calib_dlg = new Retraction_Test_Dlg((wxWindow *) this, wxID_ANY, m_plater); m_retraction_calib_dlg->ShowModal(); @@ -2829,7 +2841,7 @@ void MainFrame::init_menubar_as_editor() // Tolerance Test append_menu_item( - calib_menu, wxID_ANY, _L("Orca Tolerance Test"), _L("Orca Tolerance Test"), + m_calib_menu, wxID_ANY, _L("Orca Tolerance Test"), _L("Orca Tolerance Test"), [this](wxCommandEvent &) { m_plater->new_project(); m_plater->add_model(false, Slic3r::resources_dir() + "/calib/tolerance_test/OrcaToleranceTest.stl"); @@ -2868,13 +2880,13 @@ void MainFrame::init_menubar_as_editor() }, this); - append_submenu(calib_menu, advance_menu, wxID_ANY, _L("More..."), _L("More calibrations"), "", [this]() { + append_submenu(m_calib_menu, advance_menu, wxID_ANY, _L("More..."), _L("More calibrations"), "", [this]() { return m_plater->is_view3D_shown(); ; }); // help append_menu_item( - calib_menu, wxID_ANY, _L("Tutorial"), _L("Calibration help"), + m_calib_menu, wxID_ANY, _L("Tutorial"), _L("Calibration help"), [this](wxCommandEvent &) { wxLaunchDefaultBrowser("https://github.com/SoftFever/OrcaSlicer/wiki/Calibration", wxBROWSER_NEW_WINDOW); }, "", nullptr, [this]() { return m_plater->is_view3D_shown(); @@ -2882,8 +2894,6 @@ void MainFrame::init_menubar_as_editor() }, this); - m_menubar->Append(calib_menu, wxString::Format("&%s", _L("Calibration"))); - if (helpMenu) m_menubar->Append(helpMenu, wxString::Format("&%s", _L("Help"))); SetMenuBar(m_menubar); diff --git a/src/slic3r/GUI/MainFrame.hpp b/src/slic3r/GUI/MainFrame.hpp index 398695ec9..78e4b3964 100644 --- a/src/slic3r/GUI/MainFrame.hpp +++ b/src/slic3r/GUI/MainFrame.hpp @@ -95,6 +95,7 @@ class MainFrame : public DPIFrame wxMenuBar* m_menubar{ nullptr }; //wxMenu* publishMenu{ nullptr }; + wxMenu * m_calib_menu{nullptr}; #if 0 wxMenuItem* m_menu_item_repeat { nullptr }; // doesn't used now @@ -250,6 +251,7 @@ public: void set_max_recent_count(int max); void show_publish_button(bool show); + void show_calibration_button(bool show); void update_title_colour_after_set_title(); void show_option(bool show); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index f55a36de1..d461fd883 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2408,6 +2408,8 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) // Preset change event sidebar->Bind(wxEVT_COMBOBOX, &priv::on_combobox_select, this); sidebar->Bind(EVT_OBJ_LIST_OBJECT_SELECT, [this](wxEvent&) { priv::selection_changed(); }); + bool isBBL = wxGetApp().preset_bundle->printers.get_edited_preset().is_bbl_vendor_preset(wxGetApp().preset_bundle); + main_frame->show_calibration_button(!isBBL); // BBS: should bind BACKGROUND_PROCESS event to plater q->Bind(EVT_SCHEDULE_BACKGROUND_PROCESS, [this](SimpleEvent&) { this->schedule_background_process(); }); // jump to found option from SearchDialog @@ -5726,6 +5728,9 @@ void Plater::priv::on_select_preset(wxCommandEvent &evt) //wxWindowUpdateLocker noUpdates1(sidebar->print_panel()); wxWindowUpdateLocker noUpdates2(sidebar->filament_panel()); wxGetApp().get_tab(preset_type)->select_preset(preset_name); + + bool isBBL = wxGetApp().preset_bundle->printers.get_edited_preset().is_bbl_vendor_preset(wxGetApp().preset_bundle); + main_frame->show_calibration_button(!isBBL); } // update plater with new config