mirror of
https://git.mirrors.martin98.com/https://github.com/slic3r/Slic3r.git
synced 2025-08-16 11:55:56 +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
|
||||
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) {
|
||||
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(1);
|
||||
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_settings_dialog.GetSizer());
|
||||
@ -375,7 +379,7 @@ void MainFrame::update_layout()
|
||||
icon_size = atoi(wxGetApp().app_config->get("tab_icon_size").c_str());
|
||||
}
|
||||
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" };
|
||||
if (icon_size < 16)
|
||||
icon_list = { "plater", "cog", "spool", "printer" };
|
||||
@ -385,10 +389,7 @@ void MainFrame::update_layout()
|
||||
img_list = new wxImageList(bmp.GetWidth(), bmp.GetHeight());
|
||||
img_list->Add(bmp);
|
||||
}
|
||||
}
|
||||
m_tabpanel->AssignImageList(img_list);
|
||||
if (icon_size >= 8)
|
||||
{
|
||||
m_tabpanel->AssignImageList(img_list);
|
||||
m_tabpanel->SetPageImage(0, 0);
|
||||
m_tabpanel->SetPageImage(1, 1);
|
||||
m_tabpanel->SetPageImage(2, 2);
|
||||
@ -421,24 +422,27 @@ void MainFrame::update_layout()
|
||||
img_list->Add(bmp);
|
||||
}
|
||||
}
|
||||
m_tabpanel->AssignImageList(img_list);
|
||||
m_tabpanel->InsertPage(0, new wxPanel(m_tabpanel), _L("3D view"));
|
||||
wxPanel* first_panel = new wxPanel(m_tabpanel);
|
||||
m_tabpanel->InsertPage(0, first_panel, _L("3D view"));
|
||||
m_tabpanel->InsertPage(1, new wxPanel(m_tabpanel), _L("Sliced preview"));
|
||||
m_tabpanel->InsertPage(2, new wxPanel(m_tabpanel), _L("Gcode preview"));
|
||||
m_tabpanel->GetPage(0)->SetSizer(new wxBoxSizer(wxVERTICAL));
|
||||
m_tabpanel->GetPage(1)->SetSizer(new wxBoxSizer(wxVERTICAL));
|
||||
m_tabpanel->GetPage(2)->SetSizer(new wxBoxSizer(wxVERTICAL));
|
||||
if (icon_size >= 8)
|
||||
{
|
||||
m_tabpanel->SetPageImage(0, 0);
|
||||
m_tabpanel->SetPageImage(1, 1);
|
||||
m_tabpanel->SetPageImage(2, 2);
|
||||
m_tabpanel->SetPageImage(3, 3);
|
||||
m_tabpanel->SetPageImage(4, 4);
|
||||
m_tabpanel->SetPageImage(5, 5);
|
||||
if (m_tabpanel->GetPageCount() == 6) {
|
||||
m_tabpanel->AssignImageList(img_list);
|
||||
m_tabpanel->GetPage(0)->SetSizer(new wxBoxSizer(wxVERTICAL));
|
||||
m_tabpanel->GetPage(1)->SetSizer(new wxBoxSizer(wxVERTICAL));
|
||||
m_tabpanel->GetPage(2)->SetSizer(new wxBoxSizer(wxVERTICAL));
|
||||
if (icon_size >= 8)
|
||||
{
|
||||
m_tabpanel->SetPageImage(0, 0);
|
||||
m_tabpanel->SetPageImage(1, 1);
|
||||
m_tabpanel->SetPageImage(2, 2);
|
||||
m_tabpanel->SetPageImage(3, 3);
|
||||
m_tabpanel->SetPageImage(4, 4);
|
||||
m_tabpanel->SetPageImage(5, 5);
|
||||
}
|
||||
}
|
||||
m_plater->Reparent(m_tabpanel->GetPage(0));
|
||||
m_tabpanel->GetPage(0)->GetSizer()->Add(m_plater, 1, wxEXPAND);
|
||||
m_plater->Reparent(first_panel);
|
||||
first_panel->GetSizer()->Add(m_plater, 1, wxEXPAND);
|
||||
m_tabpanel->ChangeSelection(0);
|
||||
m_main_sizer->Add(m_tabpanel, 1, wxEXPAND);
|
||||
m_plater->Show();
|
||||
|
Loading…
x
Reference in New Issue
Block a user