diff --git a/lib/Slic3r/GUI/MainFrame.pm b/lib/Slic3r/GUI/MainFrame.pm index f779de305..b1de58b8b 100644 --- a/lib/Slic3r/GUI/MainFrame.pm +++ b/lib/Slic3r/GUI/MainFrame.pm @@ -181,6 +181,12 @@ sub _init_menubar { my $selectMenuItem = $self->{plater_menu}->AppendSubMenu($selectMenu, "Select", 'Select an object in the plater'); wxTheApp->set_menu_item_icon($selectMenuItem, 'brick.png'); } + $self->_append_menu_item($self->{plater_menu}, "Select Next Object\tCtrl+Right", 'Select Next Object in the plater', sub { + $plater->select_next; + }, undef, 'arrow_right.png'); + $self->_append_menu_item($self->{plater_menu}, "Select Prev Object\tCtrl+Left", 'Select Previous Object in the plater', sub { + $plater->select_prev; + }, undef, 'arrow_left.png'); $self->{plater_menu}->AppendSeparator(); $self->_append_menu_item($self->{plater_menu}, "Export G-code...", 'Export current plate as G-code', sub { $plater->export_gcode; diff --git a/lib/Slic3r/GUI/Plater.pm b/lib/Slic3r/GUI/Plater.pm index 4f4c3b204..d71ba7c57 100644 --- a/lib/Slic3r/GUI/Plater.pm +++ b/lib/Slic3r/GUI/Plater.pm @@ -2226,6 +2226,34 @@ sub select_object { $self->selection_changed(1); } +sub select_next { + my ($self) = @_; + + return if !@{$self->{objects}}; + my ($obj_idx, $object) = $self->selected_object; + if (!defined $obj_idx || $obj_idx == $#{$self->{objects}}) { + $obj_idx = 0; + } else { + $obj_idx++; + } + $self->select_object($obj_idx); + $self->refresh_canvases; +} + +sub select_prev { + my ($self) = @_; + + return if !@{$self->{objects}}; + my ($obj_idx, $object) = $self->selected_object; + if (!defined $obj_idx || $obj_idx == 0) { + $obj_idx = $#{$self->{objects}}; + } else { + $obj_idx--; + } + $self->select_object($obj_idx); + $self->refresh_canvases; +} + sub selected_object { my $self = shift;