This commit is contained in:
yw4z
2026-03-15 01:42:28 +03:00
parent 845baaefbb
commit 20f8d478aa
4 changed files with 68 additions and 5 deletions

View File

@@ -475,7 +475,9 @@ DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, BORDERLESS_FRAME_
update_edge_panels();
#endif
wxQueueEvent(wxGetApp().plater(), new SimpleEvent(EVT_NOTICE_CHILDE_SIZE_CHANGED));
});
fit_tab_labels(); // ORCA on resize
});
//BBS
Bind(EVT_SELECT_TAB, [this](wxCommandEvent&evt) {
@@ -1345,8 +1347,10 @@ void MainFrame::init_tabpanel() {
void MainFrame::show_device(bool bBBLPrinter) {
auto idx = -1;
if (bBBLPrinter) {
if (m_tabpanel->FindPage(m_monitor) != wxNOT_FOUND)
if (m_tabpanel->FindPage(m_monitor) != wxNOT_FOUND) {
fit_tab_labels(); // ORCA on printer change - same button layout
return;
}
// Remove printer view
if ((idx = m_tabpanel->FindPage(m_printer_view)) != wxNOT_FOUND) {
m_printer_view->Show(false);
@@ -1386,9 +1390,10 @@ void MainFrame::show_device(bool bBBLPrinter) {
#endif // _MSW_DARK_MODE
} else {
if (m_tabpanel->FindPage(m_printer_view) != wxNOT_FOUND)
if (m_tabpanel->FindPage(m_printer_view) != wxNOT_FOUND) {
fit_tab_labels(); // ORCA on printer change - same button layout
return;
}
if ((idx = m_tabpanel->FindPage(m_calibration)) != wxNOT_FOUND) {
m_calibration->Show(false);
m_tabpanel->RemovePage(idx);
@@ -1414,6 +1419,33 @@ void MainFrame::show_device(bool bBBLPrinter) {
m_tabpanel->InsertPage(tpMonitor, m_printer_view, _L("Device"), std::string("tab_monitor_active"),
std::string("tab_monitor_active"));
}
fit_tab_labels(); // ORCA on printer change
}
void MainFrame::fit_tab_labels()
{
if (!m_tabpanel || !m_slice_option_btn) // ignore layout change while slice/print buttons not visible
return;
auto* ctrl = m_tabpanel->GetBtnsListCtrl();
auto* sizer = ctrl->GetBtnsSizer();
int count = sizer->GetItemCount();
// Restore all
for (size_t i = 1; i < count; ++i)
ctrl->SetCompact(i, false);
m_tabpanel->Refresh();
Layout();
// Compact (last to first)
for (size_t i = count - 1; i >= 1; --i) {
int right = ScreenToClient(m_slice_option_btn->ClientToScreen({})).x;
int left = sizer->GetSize().GetWidth();
if (right - left - FromDIP(15) > 0) return;
ctrl->SetCompact(i, true);
m_tabpanel->Refresh();
Layout();
}
}
bool MainFrame::preview_only_hint()
@@ -1790,7 +1822,7 @@ wxBoxSizer* MainFrame::create_side_tools()
update_side_button_style();
m_slice_option_btn->Enable();
m_print_option_btn->Enable();
sizer->Add(FromDIP(15), 0, 0, 0, 0);
//sizer->Add(FromDIP(15), 0, 0, 0, 0);
sizer->Add(slice_panel);
sizer->Add(FromDIP(15), 0, 0, 0, 0);
sizer->Add(print_panel);
@@ -1915,6 +1947,7 @@ wxBoxSizer* MainFrame::create_side_tools()
m_slice_enable = get_enable_slice_status();
m_slice_btn->Enable(m_slice_enable);
this->Layout();
fit_tab_labels(); // ORCA on label change
if(m_slice_option_pop_up)
m_slice_option_pop_up->Dismiss();
});
@@ -1925,6 +1958,7 @@ wxBoxSizer* MainFrame::create_side_tools()
m_slice_enable = get_enable_slice_status();
m_slice_btn->Enable(m_slice_enable);
this->Layout();
fit_tab_labels(); // ORCA on label change
if(m_slice_option_pop_up)
m_slice_option_pop_up->Dismiss();
});
@@ -1949,6 +1983,7 @@ wxBoxSizer* MainFrame::create_side_tools()
m_print_enable = get_enable_print_status();
m_print_btn->Enable(m_print_enable);
this->Layout();
fit_tab_labels(); // ORCA on label change
p->Dismiss();
});
@@ -1961,6 +1996,7 @@ wxBoxSizer* MainFrame::create_side_tools()
m_print_enable = get_enable_print_status();
m_print_btn->Enable(m_print_enable);
this->Layout();
fit_tab_labels(); // ORCA on label change
p->Dismiss();
});
@@ -1987,6 +2023,7 @@ wxBoxSizer* MainFrame::create_side_tools()
m_print_enable = get_enable_print_status();
m_print_btn->Enable(m_print_enable);
this->Layout();
fit_tab_labels(); // ORCA on label change
p->Dismiss();
});
@@ -1998,6 +2035,7 @@ wxBoxSizer* MainFrame::create_side_tools()
m_print_enable = get_enable_print_status();
m_print_btn->Enable(m_print_enable);
this->Layout();
fit_tab_labels(); // ORCA on label change
p->Dismiss();
});
@@ -2007,6 +2045,7 @@ wxBoxSizer* MainFrame::create_side_tools()
m_print_enable = get_enable_print_status();
m_print_btn->Enable(m_print_enable);
this->Layout();
fit_tab_labels(); // ORCA on label change
p->Dismiss();
});
@@ -2018,6 +2057,7 @@ wxBoxSizer* MainFrame::create_side_tools()
m_print_enable = get_enable_print_status();
m_print_btn->Enable(m_print_enable);
this->Layout();
fit_tab_labels(); // ORCA on label change
p->Dismiss();
});
@@ -2027,6 +2067,7 @@ wxBoxSizer* MainFrame::create_side_tools()
m_print_enable = get_enable_print_status();
m_print_btn->Enable(m_print_enable);
this->Layout();
fit_tab_labels(); // ORCA on label change
p->Dismiss();
});
@@ -2036,6 +2077,7 @@ wxBoxSizer* MainFrame::create_side_tools()
m_print_enable = get_enable_print_status();
m_print_btn->Enable(m_print_enable);
this->Layout();
fit_tab_labels(); // ORCA on label change
p->Dismiss();
});
@@ -2074,6 +2116,7 @@ wxBoxSizer* MainFrame::create_side_tools()
m_print_enable = get_enable_print_status();
m_print_btn->Enable(m_print_enable);
this->Layout();
fit_tab_labels(); // ORCA on label change
p->Dismiss();
});
p->append_button(print_multi_machine_btn);
@@ -2088,6 +2131,7 @@ wxBoxSizer* MainFrame::create_side_tools()
m_print_enable = get_enable_print_status();
m_print_btn->Enable(m_print_enable);
this->Layout();
fit_tab_labels(); // ORCA on label change
p->Dismiss();
});
p->append_button(export_gcode_btn);
@@ -2400,6 +2444,8 @@ void MainFrame::on_dpi_changed(const wxRect& suggested_rect)
this->SetSize(sz);
this->Maximize(is_maximized);
fit_tab_labels(); // ORCA
}
void MainFrame::on_sys_color_changed()