mirror of
https://git.mirrors.martin98.com/https://github.com/slic3r/Slic3r.git
synced 2025-08-05 19:46:29 +08:00
List objects in a submenu and allow to select them from it
This commit is contained in:
parent
ce64cb05a1
commit
82db702801
@ -176,6 +176,12 @@ sub _init_menubar {
|
|||||||
my $plater = $self->{plater};
|
my $plater = $self->{plater};
|
||||||
|
|
||||||
$self->{plater_menu} = Wx::Menu->new;
|
$self->{plater_menu} = Wx::Menu->new;
|
||||||
|
{
|
||||||
|
my $selectMenu = $self->{plater_select_menu} = Wx::Menu->new;
|
||||||
|
my $selectMenuItem = $self->{plater_menu}->AppendSubMenu($selectMenu, "Select", 'Select an object in the plater');
|
||||||
|
wxTheApp->set_menu_item_icon($selectMenuItem, 'brick.png');
|
||||||
|
}
|
||||||
|
$self->{plater_menu}->AppendSeparator();
|
||||||
$self->_append_menu_item($self->{plater_menu}, "Export G-code...", 'Export current plate as G-code', sub {
|
$self->_append_menu_item($self->{plater_menu}, "Export G-code...", 'Export current plate as G-code', sub {
|
||||||
$plater->export_gcode;
|
$plater->export_gcode;
|
||||||
}, undef, 'cog_go.png');
|
}, undef, 'cog_go.png');
|
||||||
|
@ -1873,6 +1873,23 @@ sub on_thumbnail_made {
|
|||||||
sub on_model_change {
|
sub on_model_change {
|
||||||
my ($self, $force_autocenter) = @_;
|
my ($self, $force_autocenter) = @_;
|
||||||
|
|
||||||
|
# reload the select submenu (if already initialized)
|
||||||
|
if (my $menu = $self->GetFrame->{plater_select_menu}) {
|
||||||
|
$menu->DeleteItem($_) for $menu->GetMenuItems;
|
||||||
|
for my $i (0..$#{$self->{objects}}) {
|
||||||
|
my $name = $self->{objects}->[$i]->name;
|
||||||
|
my $count = $self->{model}->get_object($i)->instances_count;
|
||||||
|
if ($count > 1) {
|
||||||
|
$name .= " (${count}x)";
|
||||||
|
}
|
||||||
|
my $item = $self->GetFrame->_append_menu_item($menu, $name, 'Select object', sub {
|
||||||
|
$self->select_object($i);
|
||||||
|
$self->refresh_canvases;
|
||||||
|
}, undef, undef, wxITEM_CHECK);
|
||||||
|
$item->Check(1) if $self->{objects}->[$i]->selected;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
my $running = $self->pause_background_process;
|
my $running = $self->pause_background_process;
|
||||||
|
|
||||||
if ($Slic3r::GUI::Settings->{_}{autocenter} || $force_autocenter) {
|
if ($Slic3r::GUI::Settings->{_}{autocenter} || $force_autocenter) {
|
||||||
@ -2061,6 +2078,13 @@ sub selection_changed {
|
|||||||
my ($obj_idx, $object) = $self->selected_object;
|
my ($obj_idx, $object) = $self->selected_object;
|
||||||
my $have_sel = defined $obj_idx;
|
my $have_sel = defined $obj_idx;
|
||||||
|
|
||||||
|
if (my $menu = $self->GetFrame->{plater_select_menu}) {
|
||||||
|
$_->Check(0) for $menu->GetMenuItems;
|
||||||
|
if ($have_sel) {
|
||||||
|
$menu->FindItemByPosition($obj_idx)->Check(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
my $method = $have_sel ? 'Enable' : 'Disable';
|
my $method = $have_sel ? 'Enable' : 'Disable';
|
||||||
$self->{"btn_$_"}->$method
|
$self->{"btn_$_"}->$method
|
||||||
for grep $self->{"btn_$_"}, qw(remove increase decrease rotate45cw rotate45ccw changescale split cut settings);
|
for grep $self->{"btn_$_"}, qw(remove increase decrease rotate45cw rotate45ccw changescale split cut settings);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user