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
This commit is contained in:
YuSanka 2020-05-28 14:04:15 +02:00
parent b376e2c703
commit ba963ac404
3 changed files with 13 additions and 24 deletions

View File

@ -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<MainFrame*>(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);
});
}

View File

@ -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())

View File

@ -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<Tab*>(panel)->supports_printer_technology(m_plater->printer_technology()))
return;
auto& tabs_list = wxGetApp().tabs_list;