mirror of
https://git.mirrors.martin98.com/https://github.com/slic3r/Slic3r.git
synced 2025-08-05 11:50:36 +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};
|
||||
|
||||
$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 {
|
||||
$plater->export_gcode;
|
||||
}, undef, 'cog_go.png');
|
||||
|
@ -1873,6 +1873,23 @@ sub on_thumbnail_made {
|
||||
sub on_model_change {
|
||||
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;
|
||||
|
||||
if ($Slic3r::GUI::Settings->{_}{autocenter} || $force_autocenter) {
|
||||
@ -2061,6 +2078,13 @@ sub selection_changed {
|
||||
my ($obj_idx, $object) = $self->selected_object;
|
||||
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';
|
||||
$self->{"btn_$_"}->$method
|
||||
for grep $self->{"btn_$_"}, qw(remove increase decrease rotate45cw rotate45ccw changescale split cut settings);
|
||||
|
Loading…
x
Reference in New Issue
Block a user