From 9d1d5ccee96f1bfa7c4e303e89ea89bc2db3283a Mon Sep 17 00:00:00 2001 From: Alessandro Ranellucci Date: Sun, 21 May 2017 00:06:28 +0200 Subject: [PATCH] Minor fixes about config and presets --- lib/Slic3r/GUI/Controller.pm | 24 +++++++++++------------ lib/Slic3r/GUI/Controller/PrinterPanel.pm | 8 ++++---- lib/Slic3r/GUI/Plater.pm | 2 ++ xs/src/libslic3r/PrintConfig.cpp | 2 +- 4 files changed, 19 insertions(+), 17 deletions(-) diff --git a/lib/Slic3r/GUI/Controller.pm b/lib/Slic3r/GUI/Controller.pm index 4e8e42578..dfb328149 100644 --- a/lib/Slic3r/GUI/Controller.pm +++ b/lib/Slic3r/GUI/Controller.pm @@ -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; diff --git a/lib/Slic3r/GUI/Controller/PrinterPanel.pm b/lib/Slic3r/GUI/Controller/PrinterPanel.pm index 9e2dc211d..7d9e8a296 100644 --- a/lib/Slic3r/GUI/Controller/PrinterPanel.pm +++ b/lib/Slic3r/GUI/Controller/PrinterPanel.pm @@ -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); diff --git a/lib/Slic3r/GUI/Plater.pm b/lib/Slic3r/GUI/Plater.pm index ef65c47a1..ba19b8ee1 100644 --- a/lib/Slic3r/GUI/Plater.pm +++ b/lib/Slic3r/GUI/Plater.pm @@ -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)); } diff --git a/xs/src/libslic3r/PrintConfig.cpp b/xs/src/libslic3r/PrintConfig.cpp index b2437506b..ce149a8fc 100644 --- a/xs/src/libslic3r/PrintConfig.cpp +++ b/xs/src/libslic3r/PrintConfig.cpp @@ -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.";