From cfcb284520f037f8d5d71ac85d22c188cac8dd44 Mon Sep 17 00:00:00 2001 From: David Kocik Date: Tue, 3 Dec 2024 09:32:04 +0100 Subject: [PATCH] SPE-2564: Use only 1 menu item to reload from disk (on plater) or reload webview Two items on mac. --- src/slic3r/GUI/MainFrame.cpp | 46 ++++++++++++++++++++++++++++++------ src/slic3r/GUI/MainFrame.hpp | 5 +++- 2 files changed, 43 insertions(+), 8 deletions(-) diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 8d2734835d..7edf86c451 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -691,6 +691,10 @@ void MainFrame::init_tabpanel() old_tab->validate_custom_gcodes(); } +#ifndef __APPLE__ + on_tab_change_rename_reload_item(e.GetSelection()); +#endif // !__APPLE__ + wxWindow* panel = m_tabpanel->GetCurrentPage(); Tab* tab = dynamic_cast(panel); @@ -995,6 +999,35 @@ void MainFrame::reload_selected_webview() m_printer_webview->do_reload(); } +void MainFrame::on_tab_change_rename_reload_item(int new_tab) +{ + if (!m_tabpanel) { + return; + } + if ( new_tab == m_tabpanel->FindPage(m_printables_webview) + || (m_connect_webview_added && new_tab == m_tabpanel->FindPage(m_connect_webview)) + || (m_printer_webview_added && new_tab == m_tabpanel->FindPage(m_printer_webview))) + { + m_menu_item_reload->SetItemLabel(_L("Re&load Web Content") + "\t\xA0" + "F5"); + m_menu_item_reload->SetHelp(_L("Reload Web Content")); + } else { + m_menu_item_reload->SetItemLabel(_L("Re&load from Disk") + "\t\xA0" + "F5"); + m_menu_item_reload->SetHelp(_L("Reload the plater from disk")); + } +} + +bool MainFrame::reload_item_condition_cb() +{ + return is_any_webview_selected() ? true : + !m_plater->model().objects.empty(); +} +void MainFrame::reload_item_function_cb() +{ + is_any_webview_selected() + ? reload_selected_webview() + : m_plater->reload_all_from_disk(); +} + void Slic3r::GUI::MainFrame::refresh_account_menu(bool avatar/* = false */) { // Update User name in TopBar @@ -1605,10 +1638,13 @@ void MainFrame::init_menubar_as_editor() append_menu_item(editMenu, wxID_ANY, _L("Re&load from Disk") + dots + "\tCtrl+Shift+R", _L("Reload the plater from disk"), [this](wxCommandEvent&) { m_plater->reload_all_from_disk(); }, "", nullptr, [this]() {return !m_plater->model().objects.empty(); }, this); + m_menu_item_reload = append_menu_item(editMenu, wxID_ANY, _L("Re&load Web Content") + "\tF5", + _L("Reload Web Content"), [this](wxCommandEvent&) { reload_selected_webview(); }, + "", nullptr, [this]() {return is_any_webview_selected(); }, this); #else - append_menu_item(editMenu, wxID_ANY, _L("Re&load from Disk") + sep + "F5", - _L("Reload the plater from disk"), [this](wxCommandEvent&) { m_plater->reload_all_from_disk(); }, - "", nullptr, [this]() {return !m_plater->model().objects.empty(); }, this); + m_menu_item_reload = append_menu_item(editMenu, wxID_ANY, _L("Re&load from Disk") + sep + "F5", + _L("Reload the plater from disk"), [this](wxCommandEvent&) { reload_item_function_cb(); }, + "", nullptr, [this]() {return reload_item_condition_cb(); }, this); #endif // __APPLE__ editMenu->AppendSeparator(); @@ -1697,10 +1733,6 @@ void MainFrame::init_menubar_as_editor() wxFULLSCREEN_NOSTATUSBAR | wxFULLSCREEN_NOBORDER | wxFULLSCREEN_NOCAPTION); }, this, []() { return true; }, [this]() { return this->IsFullScreen(); }, this); #endif // __APPLE__ - - viewMenu->AppendSeparator(); - append_menu_item(viewMenu, wxID_ANY, _L("&Reload Web Content") + "\tF5", _L("Reload WebView"), - [this](wxCommandEvent&) { reload_selected_webview(); }, "", nullptr, [this]() {return is_any_webview_selected(); }, this); } // Help menu diff --git a/src/slic3r/GUI/MainFrame.hpp b/src/slic3r/GUI/MainFrame.hpp index 7d94cca4f6..7c855d60fb 100644 --- a/src/slic3r/GUI/MainFrame.hpp +++ b/src/slic3r/GUI/MainFrame.hpp @@ -94,6 +94,7 @@ class MainFrame : public DPIFrame TopBarMenus m_bar_menus; wxMenuItem* m_menu_item_reslice_now { nullptr }; + wxMenuItem* m_menu_item_reload { nullptr }; wxSizer* m_main_sizer{ nullptr }; size_t m_last_selected_tab; @@ -129,7 +130,9 @@ class MainFrame : public DPIFrame void add_connect_webview_tab(); void remove_connect_webview_tab(); - + void on_tab_change_rename_reload_item(int new_tab); + bool reload_item_condition_cb(); + void reload_item_function_cb(); // MenuBar items changeable in respect to printer technology enum MenuItems { // FFF SLA