From ba963ac404f92a5312dc21ae9fde699f5499fb1f Mon Sep 17 00:00:00 2001 From: YuSanka Date: Thu, 28 May 2020 14:04:15 +0200 Subject: [PATCH] Save a position and size of the settings dialog + Added a check of the printer technology inside can_merge_to_multipart_object() => suppress merge for the SLA printing + clear MainFrame.cpp from unused commented code --- src/slic3r/GUI/GUI_App.cpp | 8 ++++++++ src/slic3r/GUI/GUI_ObjectList.cpp | 3 +++ src/slic3r/GUI/MainFrame.cpp | 26 ++------------------------ 3 files changed, 13 insertions(+), 24 deletions(-) diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 3c000f62e..9dfb4b422 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -715,16 +715,24 @@ void GUI_App::update_ui_from_settings() void GUI_App::persist_window_geometry(wxTopLevelWindow *window, bool default_maximized) { const std::string name = into_u8(window->GetName()); + wxTopLevelWindow* settings_dlg = dynamic_cast(window)->m_settings_dialog; + const std::string settings_dlg_name = "settings_dialog"; window->Bind(wxEVT_CLOSE_WINDOW, [=](wxCloseEvent &event) { window_pos_save(window, name); + if (settings_dlg) + window_pos_save(settings_dlg, settings_dlg_name); event.Skip(); }); window_pos_restore(window, name, default_maximized); + if (settings_dlg) + window_pos_restore(settings_dlg, settings_dlg_name, default_maximized); on_window_geometry(window, [=]() { window_pos_sanitize(window); + if (settings_dlg) + window_pos_sanitize(settings_dlg); }); } diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index d5e05ce1f..441f30816 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -2696,6 +2696,9 @@ bool ObjectList::can_split_instances() bool ObjectList::can_merge_to_multipart_object() const { + if (printer_technology() == ptSLA) + return false; + wxDataViewItemArray sels; GetSelections(sels); if (sels.IsEmpty()) diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index d8a799eb2..d35b397a6 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -204,29 +204,6 @@ DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_S event.Skip(); }); - /* - Bind(wxEVT_SYS_COLOUR_CHANGED, [this](wxSysColourChangedEvent& event) - { - bool recreate_gui = false; - { - // the dialog needs to be destroyed before the call to recreate_gui() - // or sometimes the application crashes into wxDialogBase() destructor - // so we put it into an inner scope - wxMessageDialog dialog(nullptr, - _L("System color mode was changed. " - "It is possible to update the Slicer in respect to the system mode.") + "\n" + - _L("You will lose content of the plater.") + "\n\n" + - _L("Do you want to proceed?"), - wxString(SLIC3R_APP_NAME) + " - " + _L("Switching system color mode"), - wxICON_QUESTION | wxOK | wxCANCEL); - recreate_gui = dialog.ShowModal() == wxID_OK; - } - if (recreate_gui) - wxGetApp().recreate_GUI(_L("Changing of an application in respect to the system mode") + dots); - event.Skip(); - }); - */ - wxGetApp().persist_window_geometry(this, true); update_ui_from_settings(); // FIXME (?) @@ -350,7 +327,8 @@ void MainFrame::init_tabpanel() m_tabpanel->Bind(wxEVT_NOTEBOOK_PAGE_CHANGED, [this](wxEvent&) { auto panel = m_tabpanel->GetCurrentPage(); - if (panel == nullptr) + // There shouldn't be a case, when we try to select a tab, which doesn't support a printer technology + if (panel == nullptr || !static_cast(panel)->supports_printer_technology(m_plater->printer_technology())) return; auto& tabs_list = wxGetApp().tabs_list;