mirror of
https://git.mirrors.martin98.com/https://github.com/slic3r/Slic3r.git
synced 2025-08-18 07:15:57 +08:00
safer code for gui layout switch.
This commit is contained in:
parent
99b3121425
commit
948cd696f6
@ -288,15 +288,19 @@ void MainFrame::update_layout()
|
|||||||
}
|
}
|
||||||
|
|
||||||
//clear if previous was tabs
|
//clear if previous was tabs
|
||||||
for (int i = 0; i < m_tabpanel->GetPageCount(); i++)
|
for (int i = 0; i < m_tabpanel->GetPageCount() - 3; i++)
|
||||||
if (m_tabpanel->GetPage(i)->GetChildren().empty() && m_tabpanel->GetPage(i)->GetSizer()->GetItemCount() > 0) {
|
if (m_tabpanel->GetPage(i)->GetChildren().empty() && m_tabpanel->GetPage(i)->GetSizer()->GetItemCount() > 0) {
|
||||||
clean_sizer(m_tabpanel->GetPage(i)->GetSizer());
|
clean_sizer(m_tabpanel->GetPage(i)->GetSizer());
|
||||||
}
|
}
|
||||||
if (m_tabpanel->GetPage(0)->GetChildren().size() == 0 && m_tabpanel->GetPage(1)->GetChildren().size() == 0 && m_tabpanel->GetPage(2)->GetChildren().size() == 0) {
|
if (m_tabpanel->GetPageCount() >= 6 && m_tabpanel->GetPage(0)->GetChildren().size() == 0 && m_tabpanel->GetPage(1)->GetChildren().size() == 0 && m_tabpanel->GetPage(2)->GetChildren().size() == 0) {
|
||||||
m_tabpanel->DeletePage(2);
|
m_tabpanel->DeletePage(2);
|
||||||
m_tabpanel->DeletePage(1);
|
m_tabpanel->DeletePage(1);
|
||||||
m_tabpanel->DeletePage(0);
|
m_tabpanel->DeletePage(0);
|
||||||
}
|
}
|
||||||
|
// ensure wehave only the 3 settings tabs
|
||||||
|
while (m_tabpanel->GetPageCount() > 3) {
|
||||||
|
m_tabpanel->DeletePage(0);
|
||||||
|
}
|
||||||
|
|
||||||
clean_sizer(m_main_sizer);
|
clean_sizer(m_main_sizer);
|
||||||
clean_sizer(m_settings_dialog.GetSizer());
|
clean_sizer(m_settings_dialog.GetSizer());
|
||||||
@ -375,7 +379,7 @@ void MainFrame::update_layout()
|
|||||||
icon_size = atoi(wxGetApp().app_config->get("tab_icon_size").c_str());
|
icon_size = atoi(wxGetApp().app_config->get("tab_icon_size").c_str());
|
||||||
}
|
}
|
||||||
catch (std::exception e) {}
|
catch (std::exception e) {}
|
||||||
if (icon_size >= 8) {
|
if (m_tabpanel->GetPageCount() == 4 && icon_size >= 8) {
|
||||||
std::initializer_list<std::string> icon_list = { "plater", "cog", "spool_cog", "printer_cog" };
|
std::initializer_list<std::string> icon_list = { "plater", "cog", "spool_cog", "printer_cog" };
|
||||||
if (icon_size < 16)
|
if (icon_size < 16)
|
||||||
icon_list = { "plater", "cog", "spool", "printer" };
|
icon_list = { "plater", "cog", "spool", "printer" };
|
||||||
@ -385,10 +389,7 @@ void MainFrame::update_layout()
|
|||||||
img_list = new wxImageList(bmp.GetWidth(), bmp.GetHeight());
|
img_list = new wxImageList(bmp.GetWidth(), bmp.GetHeight());
|
||||||
img_list->Add(bmp);
|
img_list->Add(bmp);
|
||||||
}
|
}
|
||||||
}
|
m_tabpanel->AssignImageList(img_list);
|
||||||
m_tabpanel->AssignImageList(img_list);
|
|
||||||
if (icon_size >= 8)
|
|
||||||
{
|
|
||||||
m_tabpanel->SetPageImage(0, 0);
|
m_tabpanel->SetPageImage(0, 0);
|
||||||
m_tabpanel->SetPageImage(1, 1);
|
m_tabpanel->SetPageImage(1, 1);
|
||||||
m_tabpanel->SetPageImage(2, 2);
|
m_tabpanel->SetPageImage(2, 2);
|
||||||
@ -421,24 +422,27 @@ void MainFrame::update_layout()
|
|||||||
img_list->Add(bmp);
|
img_list->Add(bmp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
m_tabpanel->AssignImageList(img_list);
|
wxPanel* first_panel = new wxPanel(m_tabpanel);
|
||||||
m_tabpanel->InsertPage(0, new wxPanel(m_tabpanel), _L("3D view"));
|
m_tabpanel->InsertPage(0, first_panel, _L("3D view"));
|
||||||
m_tabpanel->InsertPage(1, new wxPanel(m_tabpanel), _L("Sliced preview"));
|
m_tabpanel->InsertPage(1, new wxPanel(m_tabpanel), _L("Sliced preview"));
|
||||||
m_tabpanel->InsertPage(2, new wxPanel(m_tabpanel), _L("Gcode preview"));
|
m_tabpanel->InsertPage(2, new wxPanel(m_tabpanel), _L("Gcode preview"));
|
||||||
m_tabpanel->GetPage(0)->SetSizer(new wxBoxSizer(wxVERTICAL));
|
if (m_tabpanel->GetPageCount() == 6) {
|
||||||
m_tabpanel->GetPage(1)->SetSizer(new wxBoxSizer(wxVERTICAL));
|
m_tabpanel->AssignImageList(img_list);
|
||||||
m_tabpanel->GetPage(2)->SetSizer(new wxBoxSizer(wxVERTICAL));
|
m_tabpanel->GetPage(0)->SetSizer(new wxBoxSizer(wxVERTICAL));
|
||||||
if (icon_size >= 8)
|
m_tabpanel->GetPage(1)->SetSizer(new wxBoxSizer(wxVERTICAL));
|
||||||
{
|
m_tabpanel->GetPage(2)->SetSizer(new wxBoxSizer(wxVERTICAL));
|
||||||
m_tabpanel->SetPageImage(0, 0);
|
if (icon_size >= 8)
|
||||||
m_tabpanel->SetPageImage(1, 1);
|
{
|
||||||
m_tabpanel->SetPageImage(2, 2);
|
m_tabpanel->SetPageImage(0, 0);
|
||||||
m_tabpanel->SetPageImage(3, 3);
|
m_tabpanel->SetPageImage(1, 1);
|
||||||
m_tabpanel->SetPageImage(4, 4);
|
m_tabpanel->SetPageImage(2, 2);
|
||||||
m_tabpanel->SetPageImage(5, 5);
|
m_tabpanel->SetPageImage(3, 3);
|
||||||
|
m_tabpanel->SetPageImage(4, 4);
|
||||||
|
m_tabpanel->SetPageImage(5, 5);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
m_plater->Reparent(m_tabpanel->GetPage(0));
|
m_plater->Reparent(first_panel);
|
||||||
m_tabpanel->GetPage(0)->GetSizer()->Add(m_plater, 1, wxEXPAND);
|
first_panel->GetSizer()->Add(m_plater, 1, wxEXPAND);
|
||||||
m_tabpanel->ChangeSelection(0);
|
m_tabpanel->ChangeSelection(0);
|
||||||
m_main_sizer->Add(m_tabpanel, 1, wxEXPAND);
|
m_main_sizer->Add(m_tabpanel, 1, wxEXPAND);
|
||||||
m_plater->Show();
|
m_plater->Show();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user