mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-09-26 02:11:18 +00:00
feat(gui): assignable keyboard shortcuts (#15706)
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
#include "libslic3r/Technologies.hpp"
|
||||
#include "libslic3r/Platform.hpp"
|
||||
#include "GUI_App.hpp"
|
||||
#include "Shortcuts.hpp"
|
||||
#include "BindDialog.hpp"
|
||||
#include "DeviceManager.hpp"
|
||||
#include "HMS.hpp"
|
||||
@@ -1120,6 +1121,8 @@ GUI_App::GUI_App()
|
||||
{
|
||||
//app config initializes early becasuse it is used in instance checking in OrcaSlicer.cpp
|
||||
this->init_app_config();
|
||||
m_shortcuts = std::make_unique<ShortcutRegistry>();
|
||||
m_shortcuts->load(*app_config);
|
||||
this->init_download_path();
|
||||
// Note: the WebView2 runtime check (init_webview_runtime) used to run here, but
|
||||
// the constructor executes before wxWidgets is fully initialized and before the
|
||||
@@ -4677,12 +4680,28 @@ void GUI_App::system_info()
|
||||
//dlg.ShowModal();
|
||||
}
|
||||
|
||||
void GUI_App::keyboard_shortcuts()
|
||||
void GUI_App::keyboard_shortcuts(ShortcutContext page, wxWindow* parent)
|
||||
{
|
||||
KBShortcutsDialog dlg;
|
||||
KBShortcutsDialog dlg(parent != nullptr ? parent : mainframe, page);
|
||||
dlg.ShowModal();
|
||||
}
|
||||
|
||||
void GUI_App::on_shortcuts_changed()
|
||||
{
|
||||
m_shortcuts->save(*app_config);
|
||||
app_config->save();
|
||||
if (mainframe == nullptr)
|
||||
return;
|
||||
mainframe->update_shortcut_labels();
|
||||
if (Plater* plater = this->plater(); plater != nullptr) {
|
||||
if (GLCanvas3D* canvas = plater->get_view3D_canvas3D(); canvas != nullptr)
|
||||
canvas->update_shortcut_tooltips();
|
||||
#ifdef __WXOSX__
|
||||
obj_list()->update_shortcut_accelerators();
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
void GUI_App::troubleshoot()
|
||||
{
|
||||
TroubleshootDialog dlg;
|
||||
@@ -8465,7 +8484,9 @@ void GUI_App::open_exportpresetbundledialog(size_t open_on_tab, const std::strin
|
||||
}
|
||||
}
|
||||
|
||||
void GUI_App::open_preferences(size_t open_on_tab, const std::string& highlight_option)
|
||||
void GUI_App::open_preferences() { open_preferences(PreferencesTab::General); }
|
||||
|
||||
void GUI_App::open_preferences(PreferencesTab tab, const std::string& highlight_option)
|
||||
{
|
||||
// Render settings the canvas reads every frame; a change needs one redraw to show.
|
||||
static constexpr const char* opengl_render_setting_keys[] = {
|
||||
@@ -8482,7 +8503,8 @@ void GUI_App::open_preferences(size_t open_on_tab, const std::string& highlight_
|
||||
// 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
|
||||
PreferencesDialog dlg(mainframe, open_on_tab, highlight_option);
|
||||
PreferencesDialog dlg(mainframe);
|
||||
dlg.select_tab(tab, highlight_option);
|
||||
dlg.ShowModal();
|
||||
need_recreate_gui = dlg.recreate_GUI();
|
||||
pending_language = dlg.pending_language();
|
||||
|
||||
Reference in New Issue
Block a user