#5333 - Reworked navigation of preview's sliders using the keyboard
This commit is contained in:
parent
982e6eb55b
commit
6ae1a10614
8 changed files with 102 additions and 2 deletions
|
@ -83,4 +83,12 @@
|
|||
#define ENABLE_CUSTOMIZABLE_FILES_ASSOCIATION_ON_WIN (1 && ENABLE_2_3_0_BETA1)
|
||||
|
||||
|
||||
//===================
|
||||
// 2.3.0.beta2 techs
|
||||
//===================
|
||||
#define ENABLE_2_3_0_BETA2 1
|
||||
|
||||
#define ENABLE_ARROW_KEYS_WITH_SLIDERS (1 && ENABLE_2_3_0_BETA2)
|
||||
|
||||
|
||||
#endif // _prusaslicer_technologies_h_
|
||||
|
|
|
@ -1519,6 +1519,10 @@ void Control::move_current_thumb(const bool condition)
|
|||
if (accelerator > 0)
|
||||
delta *= accelerator;
|
||||
|
||||
#if ENABLE_ARROW_KEYS_WITH_SLIDERS
|
||||
if (m_selection == ssUndef) m_selection = ssHigher;
|
||||
#endif // ENABLE_ARROW_KEYS_WITH_SLIDERS
|
||||
|
||||
if (m_selection == ssLower) {
|
||||
m_lower_value -= delta;
|
||||
correct_lower_value();
|
||||
|
@ -1579,13 +1583,26 @@ void Control::OnKeyDown(wxKeyEvent &event)
|
|||
if (key == WXK_LEFT || key == WXK_RIGHT)
|
||||
move_current_thumb(key == WXK_LEFT);
|
||||
else if (key == WXK_UP || key == WXK_DOWN) {
|
||||
#if ENABLE_ARROW_KEYS_WITH_SLIDERS
|
||||
if (key == WXK_DOWN)
|
||||
m_selection = ssHigher;
|
||||
else if (key == WXK_UP && is_lower_thumb_editable())
|
||||
m_selection = ssLower;
|
||||
#else
|
||||
if (key == WXK_UP)
|
||||
m_selection = ssHigher;
|
||||
else if (key == WXK_DOWN && is_lower_thumb_editable())
|
||||
m_selection = ssLower;
|
||||
#endif // ENABLE_ARROW_KEYS_WITH_SLIDERS
|
||||
Refresh();
|
||||
}
|
||||
}
|
||||
#if ENABLE_ARROW_KEYS_WITH_SLIDERS
|
||||
else {
|
||||
if (key == WXK_LEFT || key == WXK_RIGHT)
|
||||
move_current_thumb(key == WXK_LEFT);
|
||||
}
|
||||
#endif // ENABLE_ARROW_KEYS_WITH_SLIDERS
|
||||
}
|
||||
else {
|
||||
if (m_is_focused) {
|
||||
|
@ -1599,6 +1616,12 @@ void Control::OnKeyDown(wxKeyEvent &event)
|
|||
else if (key == WXK_UP || key == WXK_DOWN)
|
||||
move_current_thumb(key == WXK_UP);
|
||||
}
|
||||
#if ENABLE_ARROW_KEYS_WITH_SLIDERS
|
||||
else {
|
||||
if (key == WXK_UP || key == WXK_DOWN)
|
||||
move_current_thumb(key == WXK_UP);
|
||||
}
|
||||
#endif // ENABLE_ARROW_KEYS_WITH_SLIDERS
|
||||
}
|
||||
|
||||
event.Skip(); // !Needed to have EVT_CHAR generated as well
|
||||
|
|
|
@ -1078,7 +1078,11 @@ wxDEFINE_EVENT(EVT_GLCANVAS_MOUSE_DRAGGING_FINISHED, SimpleEvent);
|
|||
wxDEFINE_EVENT(EVT_GLCANVAS_UPDATE_BED_SHAPE, SimpleEvent);
|
||||
wxDEFINE_EVENT(EVT_GLCANVAS_TAB, SimpleEvent);
|
||||
wxDEFINE_EVENT(EVT_GLCANVAS_RESETGIZMOS, SimpleEvent);
|
||||
#if ENABLE_ARROW_KEYS_WITH_SLIDERS
|
||||
wxDEFINE_EVENT(EVT_GLCANVAS_MOVE_SLIDERS, wxKeyEvent);
|
||||
#else
|
||||
wxDEFINE_EVENT(EVT_GLCANVAS_MOVE_LAYERS_SLIDER, wxKeyEvent);
|
||||
#endif // ENABLE_ARROW_KEYS_WITH_SLIDERS
|
||||
wxDEFINE_EVENT(EVT_GLCANVAS_EDIT_COLOR_CHANGE, wxKeyEvent);
|
||||
wxDEFINE_EVENT(EVT_GLCANVAS_JUMP_TO, wxKeyEvent);
|
||||
wxDEFINE_EVENT(EVT_GLCANVAS_UNDO, SimpleEvent);
|
||||
|
@ -2818,7 +2822,11 @@ void GLCanvas3D::on_key(wxKeyEvent& evt)
|
|||
keyCode == WXK_UP ||
|
||||
keyCode == WXK_DOWN) {
|
||||
if (dynamic_cast<Preview*>(m_canvas->GetParent()) != nullptr)
|
||||
#if ENABLE_ARROW_KEYS_WITH_SLIDERS
|
||||
post_event(wxKeyEvent(EVT_GLCANVAS_MOVE_SLIDERS, evt));
|
||||
#else
|
||||
post_event(wxKeyEvent(EVT_GLCANVAS_MOVE_LAYERS_SLIDER, evt));
|
||||
#endif // ENABLE_ARROW_KEYS_WITH_SLIDERS
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -103,7 +103,11 @@ wxDECLARE_EVENT(EVT_GLCANVAS_MOUSE_DRAGGING_FINISHED, SimpleEvent);
|
|||
wxDECLARE_EVENT(EVT_GLCANVAS_UPDATE_BED_SHAPE, SimpleEvent);
|
||||
wxDECLARE_EVENT(EVT_GLCANVAS_TAB, SimpleEvent);
|
||||
wxDECLARE_EVENT(EVT_GLCANVAS_RESETGIZMOS, SimpleEvent);
|
||||
#if ENABLE_ARROW_KEYS_WITH_SLIDERS
|
||||
wxDECLARE_EVENT(EVT_GLCANVAS_MOVE_SLIDERS, wxKeyEvent);
|
||||
#else
|
||||
wxDECLARE_EVENT(EVT_GLCANVAS_MOVE_LAYERS_SLIDER, wxKeyEvent);
|
||||
#endif // ENABLE_ARROW_KEYS_WITH_SLIDERS
|
||||
wxDECLARE_EVENT(EVT_GLCANVAS_EDIT_COLOR_CHANGE, wxKeyEvent);
|
||||
wxDECLARE_EVENT(EVT_GLCANVAS_JUMP_TO, wxKeyEvent);
|
||||
wxDECLARE_EVENT(EVT_GLCANVAS_UNDO, SimpleEvent);
|
||||
|
|
|
@ -460,6 +460,13 @@ void Preview::unbind_event_handlers()
|
|||
m_moves_slider->Unbind(wxEVT_SCROLL_CHANGED, &Preview::on_moves_slider_scroll_changed, this);
|
||||
}
|
||||
|
||||
#if ENABLE_ARROW_KEYS_WITH_SLIDERS
|
||||
void Preview::move_moves_slider(wxKeyEvent& evt)
|
||||
{
|
||||
if (m_moves_slider != nullptr) m_moves_slider->OnKeyDown(evt);
|
||||
}
|
||||
#endif // ENABLE_ARROW_KEYS_WITH_SLIDERS
|
||||
|
||||
void Preview::hide_layers_slider()
|
||||
{
|
||||
m_layers_slider_sizer->Hide((size_t)0);
|
||||
|
@ -765,12 +772,26 @@ void Preview::update_layers_slider_from_canvas(wxKeyEvent& event)
|
|||
|
||||
const auto key = event.GetKeyCode();
|
||||
|
||||
#if ENABLE_ARROW_KEYS_WITH_SLIDERS
|
||||
if (key == 'S' || key == 'W') {
|
||||
const int new_pos = key == 'W' ? m_layers_slider->GetHigherValue() + 1 : m_layers_slider->GetHigherValue() - 1;
|
||||
#else
|
||||
if (key == 'U' || key == 'D') {
|
||||
const int new_pos = key == 'U' ? m_layers_slider->GetHigherValue() + 1 : m_layers_slider->GetHigherValue() - 1;
|
||||
#endif // ENABLE_ARROW_KEYS_WITH_SLIDERS
|
||||
m_layers_slider->SetHigherValue(new_pos);
|
||||
if (event.ShiftDown() || m_layers_slider->is_one_layer()) m_layers_slider->SetLowerValue(m_layers_slider->GetHigherValue());
|
||||
}
|
||||
#if ENABLE_ARROW_KEYS_WITH_SLIDERS
|
||||
else if (key == 'A' || key == 'D') {
|
||||
const int new_pos = key == 'D' ? m_moves_slider->GetHigherValue() + 1 : m_moves_slider->GetHigherValue() - 1;
|
||||
m_moves_slider->SetHigherValue(new_pos);
|
||||
if (event.ShiftDown() || m_moves_slider->is_one_layer()) m_moves_slider->SetLowerValue(m_moves_slider->GetHigherValue());
|
||||
}
|
||||
else if (key == 'X')
|
||||
#else
|
||||
else if (key == 'S')
|
||||
#endif // ENABLE_ARROW_KEYS_WITH_SLIDERS
|
||||
m_layers_slider->ChangeOneLayerLock();
|
||||
else if (key == WXK_SHIFT)
|
||||
m_layers_slider->UseDefaultColors(false);
|
||||
|
|
|
@ -157,6 +157,9 @@ public:
|
|||
void update_bottom_toolbar();
|
||||
void update_moves_slider();
|
||||
void enable_moves_slider(bool enable);
|
||||
#if ENABLE_ARROW_KEYS_WITH_SLIDERS
|
||||
void move_moves_slider(wxKeyEvent& evt);
|
||||
#endif // ENABLE_ARROW_KEYS_WITH_SLIDERS
|
||||
void hide_layers_slider();
|
||||
|
||||
private:
|
||||
|
|
|
@ -203,22 +203,48 @@ void KBShortcutsDialog::fill_shortcuts()
|
|||
}
|
||||
|
||||
Shortcuts preview_shortcuts = {
|
||||
{ L("Arrow Up"), L("Upper Layer") },
|
||||
{ L("Arrow Down"), L("Lower Layer") },
|
||||
#if ENABLE_ARROW_KEYS_WITH_SLIDERS
|
||||
{ L("Arrow Up"), L("Move vertical slider current thumb Up") },
|
||||
{ L("Arrow Down"), L("Move vertical slider current thumb Down") },
|
||||
{ L("Arrow Left"), L("Move horizontal slider current thumb Left") },
|
||||
{ L("Arrow Right"), L("Move horizontal slider current thumb Right") },
|
||||
{ "W", L("Move vertical slider current thumb Up") },
|
||||
{ "S", L("Move vertical slider current thumb Down") },
|
||||
{ "A", L("Move horizontal slider current thumb Left") },
|
||||
{ "D", L("Move horizontal slider current thumb Right") },
|
||||
{ "O", L("Toggle vertical slider one layer mode ON/OFF") },
|
||||
{ "L", L("Show/Hide Legend and Estimated printing time") },
|
||||
#else
|
||||
{ L("Arrow Up"), L("Upper layer") },
|
||||
{ L("Arrow Down"), L("Lower layer") },
|
||||
{ "U", L("Upper Layer") },
|
||||
{ "D", L("Lower Layer") },
|
||||
{ "L", L("Show/Hide Legend & Estimated printing time") },
|
||||
#endif // ENABLE_ARROW_KEYS_WITH_SLIDERS
|
||||
};
|
||||
|
||||
m_full_shortcuts.push_back(std::make_pair(_L("Preview"), preview_shortcuts));
|
||||
|
||||
Shortcuts layers_slider_shortcuts = {
|
||||
#if ENABLE_ARROW_KEYS_WITH_SLIDERS
|
||||
{ L("Arrow Up"), L("Vertical slider - Move current thumb Up") },
|
||||
{ L("Arrow Down"), L("Vertical slider - Move current thumb Down") },
|
||||
{ L("Arrow Left"), L("Vertical slider - Set upper thumb to current thumb") },
|
||||
{ L("Arrow Right"), L("Vertical slider - Set lower thumb to current thumb") },
|
||||
{ "+", L("Vertical slider - Add color change marker for current layer") },
|
||||
{ "-", L("Vertical slider - Delete color change marker for current layer") },
|
||||
{ L("Arrow Up"), L("Horizontal slider - Set left thumb to current thumb") },
|
||||
{ L("Arrow Down"), L("Horizontal slider - Set right thumb to current thumb") },
|
||||
{ L("Arrow Left"), L("Horizontal slider - Move current thumb Left") },
|
||||
{ L("Arrow Right"), L("Horizontal slider - Move current thumb Right") },
|
||||
#else
|
||||
{ L("Arrow Up"), L("Move current slider thumb Up") },
|
||||
{ L("Arrow Down"), L("Move current slider thumb Down") },
|
||||
{ L("Arrow Left"), L("Set upper thumb to current slider thumb") },
|
||||
{ L("Arrow Right"), L("Set lower thumb to current slider thumb") },
|
||||
{ "+", L("Add color change marker for current layer") },
|
||||
{ "-", L("Delete color change marker for current layer") },
|
||||
#endif // ENABLE_ARROW_KEYS_WITH_SLIDERS
|
||||
{ "Shift+", L("Press to speed up 5 times while moving thumb\nwith arrow keys or mouse wheel") },
|
||||
{ ctrl, L("Press to speed up 5 times while moving thumb\nwith arrow keys or mouse wheel") },
|
||||
};
|
||||
|
|
|
@ -2055,7 +2055,14 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame)
|
|||
preview->get_wxglcanvas()->Bind(EVT_GLCANVAS_TAB, [this](SimpleEvent&) { select_next_view_3D(); });
|
||||
preview->get_wxglcanvas()->Bind(EVT_GLCANVAS_COLLAPSE_SIDEBAR, [this](SimpleEvent&) { this->q->collapse_sidebar(!this->q->is_sidebar_collapsed()); });
|
||||
preview->get_wxglcanvas()->Bind(EVT_GLCANVAS_JUMP_TO, [this](wxKeyEvent& evt) { preview->jump_layers_slider(evt); });
|
||||
#if ENABLE_ARROW_KEYS_WITH_SLIDERS
|
||||
preview->get_wxglcanvas()->Bind(EVT_GLCANVAS_MOVE_SLIDERS, [this](wxKeyEvent& evt) {
|
||||
preview->move_layers_slider(evt);
|
||||
preview->move_moves_slider(evt);
|
||||
});
|
||||
#else
|
||||
preview->get_wxglcanvas()->Bind(EVT_GLCANVAS_MOVE_LAYERS_SLIDER, [this](wxKeyEvent& evt) { preview->move_layers_slider(evt); });
|
||||
#endif // ENABLE_ARROW_KEYS_WITH_SLIDERS
|
||||
preview->get_wxglcanvas()->Bind(EVT_GLCANVAS_EDIT_COLOR_CHANGE, [this](wxKeyEvent& evt) { preview->edit_layers_slider(evt); });
|
||||
|
||||
if (wxGetApp().is_editor()) {
|
||||
|
|
Loading…
Reference in a new issue