Put the Default Extruder option in a less confusing position

This commit is contained in:
Alessandro Ranellucci 2014-06-19 20:07:16 +02:00
parent 4bf23c67bb
commit b9e8fbacb7
7 changed files with 132 additions and 40 deletions

View file

@ -150,6 +150,7 @@ sub selection_changed {
$self->{settings_panel}->set_config(undef);
if (my $itemData = $self->get_selection) {
my ($config, @opt_keys);
if ($itemData->{type} eq 'volume') {
# select volume in 3D preview
if ($self->{canvas}) {
@ -162,9 +163,11 @@ sub selection_changed {
my $material = $self->{model_object}->model->get_material($volume->material_id // '_');
$material //= $volume->assign_unique_material;
$self->{staticbox}->SetLabel('Part Settings');
$self->{settings_panel}->enable;
$self->{settings_panel}->set_opt_keys([ 'extruder', @{Slic3r::Config::PrintRegion->new->get_keys} ]);
$self->{settings_panel}->set_config($material->config);
# get default values
@opt_keys = @{Slic3r::Config::PrintRegion->new->get_keys};
$config = $material->config;
} elsif ($itemData->{type} eq 'object') {
# select all object volumes in 3D preview
if ($self->{canvas}) {
@ -173,12 +176,21 @@ sub selection_changed {
# attach object config to settings panel
$self->{staticbox}->SetLabel('Object Settings');
$self->{settings_panel}->enable;
$self->{settings_panel}->set_opt_keys(
[ 'extruder', map @{$_->get_keys}, Slic3r::Config::PrintObject->new, Slic3r::Config::PrintRegion->new ]
);
$self->{settings_panel}->set_config($self->{model_object}->config);
@opt_keys = (map @{$_->get_keys}, Slic3r::Config::PrintObject->new, Slic3r::Config::PrintRegion->new);
$config = $self->{model_object}->config;
}
# get default values
my $default_config = Slic3r::Config->new_from_defaults(@opt_keys);
# append default extruder
push @opt_keys, 'extruder';
$default_config->set('extruder', 0);
$config->set_ifndef('extruder', 0);
$self->{settings_panel}->set_default_config($default_config);
$self->{settings_panel}->set_config($config);
$self->{settings_panel}->set_opt_keys(\@opt_keys);
$self->{settings_panel}->set_fixed_options([qw(extruder)]);
$self->{settings_panel}->enable;
}
$self->{canvas}->Render if $self->{canvas};

View file

@ -17,8 +17,10 @@ sub new {
my $class = shift;
my ($parent, %params) = @_;
my $self = $class->SUPER::new($parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
$self->{config} = $params{config}; # may be passed as undef
$self->{default_config} = Slic3r::Config->new;
$self->{config} = Slic3r::Config->new;
$self->{on_change} = $params{on_change};
$self->{fixed_options} = {};
$self->{sizer} = Wx::BoxSizer->new(wxVERTICAL);
@ -36,7 +38,7 @@ sub new {
my $id = &Wx::NewId();
$menu->Append($id, $self->{option_labels}{$opt_key});
EVT_MENU($menu, $id, sub {
$self->{config}->apply(Slic3r::Config->new_from_defaults($opt_key));
$self->{config}->apply($self->{default_config}->get($opt_key));
$self->update_optgroup;
$self->{on_change}->() if $self->{on_change};
});
@ -59,6 +61,17 @@ sub new {
return $self;
}
sub set_default_config {
my ($self, $config) = @_;
$self->{default_config} = $config;
}
sub set_config {
my ($self, $config) = @_;
$self->{config} = $config;
$self->update_optgroup;
}
sub set_opt_keys {
my ($self, $opt_keys) = @_;
@ -69,9 +82,9 @@ sub set_opt_keys {
$self->{options} = [ sort { $self->{option_labels}{$a} cmp $self->{option_labels}{$b} } @$opt_keys ];
}
sub set_config {
my ($self, $config) = @_;
$self->{config} = $config;
sub set_fixed_options {
my ($self, $opt_keys) = @_;
$self->{fixed_options} = { map {$_ => 1} @$opt_keys };
$self->update_optgroup;
}
@ -102,8 +115,8 @@ sub update_optgroup {
my ($line) = @_;
my ($opt_key) = @{$line->{options}}; # we assume that we have one option per line
# if this option is not listed in the ones the user can add, disallow deleting it
return undef if !first { $_ eq $opt_key } @{$self->{options}};
# disallow deleting fixed options
return undef if $self->{fixed_options}{$opt_key};
my $btn = Wx::BitmapButton->new($self, -1, Wx::Bitmap->new("$Slic3r::var/delete.png", wxBITMAP_TYPE_PNG),
wxDefaultPosition, wxDefaultSize, Wx::wxBORDER_NONE);