Minor fixes about config and presets

This commit is contained in:
Alessandro Ranellucci 2017-05-21 00:06:28 +02:00
parent dd6864314d
commit 9d1d5ccee9
4 changed files with 19 additions and 17 deletions

View File

@ -47,13 +47,13 @@ sub new {
delete $presets{$_} for map $_->printer_name, @panels;
foreach my $preset_name (sort keys %presets) {
my $config = $presets{$preset_name}->dirty_config;
next if !$config->serial_port;
my $preset = $presets{$preset_name};
next if !$preset->dirty_config->serial_port;
my $id = &Wx::NewId();
$menu->Append($id, $preset_name);
EVT_MENU($menu, $id, sub {
$self->add_printer($preset_name, $config);
$self->add_printer($preset);
});
}
$self->PopupMenu($menu, $btn->GetPosition);
@ -100,10 +100,10 @@ sub OnActivate {
# get all available presets
my %presets = ();
{
my %all = map { $_->name => $_ } @{wxTheApp->presets->{printer}};
my %configs = map { my $name = $_; $name => $all{$name}->load_config } keys %all;
%presets = map { $_ => $configs{$_} } grep $configs{$_}->serial_port, keys %all;
foreach my $preset (@{wxTheApp->presets->{printer}}) {
$preset->load_config;
next if !$preset->dirty_config->serial_port;
$presets{$preset->name} = $preset;
}
# decide which ones we want to keep
@ -124,7 +124,7 @@ sub OnActivate {
# enable printers whose port is available
my %ports = map { $_ => 1 } wxTheApp->scan_serial_ports;
$active{$_} = 1
for grep exists $ports{$presets{$_}->serial_port}, keys %presets;
for grep exists $ports{$presets{$_}->dirty_config->serial_port}, keys %presets;
}
if (!%active && $self->_selected_printer_preset) {
# enable currently selected printer if it is configured
@ -140,7 +140,7 @@ sub OnActivate {
$self->{sizer}->DetachWindow($panel);
$panel->Destroy;
}
$self->add_printer($_, $presets{$_}) for sort keys %active;
$self->add_printer($presets{$_}) for sort keys %active;
# show/hide the warning about no printers
$self->{text_no_printers}->Show(!%presets);
@ -156,16 +156,16 @@ sub OnActivate {
}
sub add_printer {
my ($self, $printer_name, $config) = @_;
my ($self, $preset) = @_;
# check that printer doesn't exist already
foreach my $panel ($self->print_panels) {
if ($panel->printer_name eq $printer_name) {
if ($panel->printer_name eq $preset->name) {
return $panel;
}
}
my $printer_panel = Slic3r::GUI::Controller::PrinterPanel->new($self, $printer_name, $config);
my $printer_panel = Slic3r::GUI::Controller::PrinterPanel->new($self, $preset->name, $preset);
$self->{sizer}->Prepend($printer_panel, 0, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, 10);
$self->Layout;

View File

@ -16,11 +16,11 @@ use constant STATUS_TIMER_INTERVAL => 1000; # milliseconds
use constant TEMP_TIMER_INTERVAL => 5000; # milliseconds
sub new {
my ($class, $parent, $printer_name, $config) = @_;
my ($class, $parent, $printer_name, $preset) = @_;
my $self = $class->SUPER::new($parent, -1, wxDefaultPosition, [500, 250]);
$self->printer_name($printer_name || 'Printer');
$self->config($config);
$self->config($preset->dirty_config);
$self->manual_control_config({
xy_travel_speed => 130,
z_travel_speed => 10,
@ -103,7 +103,7 @@ sub new {
}
my $serial_port_sizer = Wx::BoxSizer->new(wxHORIZONTAL);
{
$self->{serial_port_combobox} = Wx::ComboBox->new($self, -1, $config->serial_port, wxDefaultPosition, wxDefaultSize, []);
$self->{serial_port_combobox} = Wx::ComboBox->new($self, -1, $self->config->serial_port, wxDefaultPosition, wxDefaultSize, []);
$self->{serial_port_combobox}->SetFont($Slic3r::GUI::small_font);
$self->update_serial_ports;
$serial_port_sizer->Add($self->{serial_port_combobox}, 0, wxRIGHT | wxALIGN_CENTER_VERTICAL, 1);
@ -125,7 +125,7 @@ sub new {
}
my $serial_speed_sizer = Wx::BoxSizer->new(wxHORIZONTAL);
{
$self->{serial_speed_combobox} = Wx::ComboBox->new($self, -1, $config->serial_speed, wxDefaultPosition, wxDefaultSize,
$self->{serial_speed_combobox} = Wx::ComboBox->new($self, -1, $self->config->serial_speed, wxDefaultPosition, wxDefaultSize,
["57600", "115200", "250000"]);
$self->{serial_speed_combobox}->SetFont($Slic3r::GUI::small_font);
$serial_speed_sizer->Add($self->{serial_speed_combobox}, 0, wxALIGN_CENTER_VERTICAL, 0);

View File

@ -584,6 +584,8 @@ sub _on_select_preset {
# and the dirty options.
$o_config->clear;
foreach my $opt_key (@$shortcuts, $presets[0]->dirty_options) {
# Don't add shortcut for shortcuts!
next if $opt_key eq 'shortcuts';
$o_config->set($opt_key, $config->get($opt_key));
}

View File

@ -1384,7 +1384,7 @@ PrintConfigDef::PrintConfigDef()
def = this->add("support_material_interface_speed", coFloatOrPercent);
def->label = "↳ interface";
def->category = "Support material interface speed";
def->full_label = "Support material interface speed";
def->gui_type = "f_enum_open";
def->category = "Support material";
def->tooltip = "Speed for printing support material interface layers. If expressed as percentage (for example 50%) it will be calculated over support material speed.";