mirror of
https://git.mirrors.martin98.com/https://github.com/slic3r/Slic3r.git
synced 2025-08-14 16:45:55 +08:00
Minor fixes about config and presets
This commit is contained in:
parent
dd6864314d
commit
9d1d5ccee9
@ -47,13 +47,13 @@ sub new {
|
|||||||
delete $presets{$_} for map $_->printer_name, @panels;
|
delete $presets{$_} for map $_->printer_name, @panels;
|
||||||
|
|
||||||
foreach my $preset_name (sort keys %presets) {
|
foreach my $preset_name (sort keys %presets) {
|
||||||
my $config = $presets{$preset_name}->dirty_config;
|
my $preset = $presets{$preset_name};
|
||||||
next if !$config->serial_port;
|
next if !$preset->dirty_config->serial_port;
|
||||||
|
|
||||||
my $id = &Wx::NewId();
|
my $id = &Wx::NewId();
|
||||||
$menu->Append($id, $preset_name);
|
$menu->Append($id, $preset_name);
|
||||||
EVT_MENU($menu, $id, sub {
|
EVT_MENU($menu, $id, sub {
|
||||||
$self->add_printer($preset_name, $config);
|
$self->add_printer($preset);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
$self->PopupMenu($menu, $btn->GetPosition);
|
$self->PopupMenu($menu, $btn->GetPosition);
|
||||||
@ -100,10 +100,10 @@ sub OnActivate {
|
|||||||
|
|
||||||
# get all available presets
|
# get all available presets
|
||||||
my %presets = ();
|
my %presets = ();
|
||||||
{
|
foreach my $preset (@{wxTheApp->presets->{printer}}) {
|
||||||
my %all = map { $_->name => $_ } @{wxTheApp->presets->{printer}};
|
$preset->load_config;
|
||||||
my %configs = map { my $name = $_; $name => $all{$name}->load_config } keys %all;
|
next if !$preset->dirty_config->serial_port;
|
||||||
%presets = map { $_ => $configs{$_} } grep $configs{$_}->serial_port, keys %all;
|
$presets{$preset->name} = $preset;
|
||||||
}
|
}
|
||||||
|
|
||||||
# decide which ones we want to keep
|
# decide which ones we want to keep
|
||||||
@ -124,7 +124,7 @@ sub OnActivate {
|
|||||||
# enable printers whose port is available
|
# enable printers whose port is available
|
||||||
my %ports = map { $_ => 1 } wxTheApp->scan_serial_ports;
|
my %ports = map { $_ => 1 } wxTheApp->scan_serial_ports;
|
||||||
$active{$_} = 1
|
$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) {
|
if (!%active && $self->_selected_printer_preset) {
|
||||||
# enable currently selected printer if it is configured
|
# enable currently selected printer if it is configured
|
||||||
@ -140,7 +140,7 @@ sub OnActivate {
|
|||||||
$self->{sizer}->DetachWindow($panel);
|
$self->{sizer}->DetachWindow($panel);
|
||||||
$panel->Destroy;
|
$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
|
# show/hide the warning about no printers
|
||||||
$self->{text_no_printers}->Show(!%presets);
|
$self->{text_no_printers}->Show(!%presets);
|
||||||
@ -156,16 +156,16 @@ sub OnActivate {
|
|||||||
}
|
}
|
||||||
|
|
||||||
sub add_printer {
|
sub add_printer {
|
||||||
my ($self, $printer_name, $config) = @_;
|
my ($self, $preset) = @_;
|
||||||
|
|
||||||
# check that printer doesn't exist already
|
# check that printer doesn't exist already
|
||||||
foreach my $panel ($self->print_panels) {
|
foreach my $panel ($self->print_panels) {
|
||||||
if ($panel->printer_name eq $printer_name) {
|
if ($panel->printer_name eq $preset->name) {
|
||||||
return $panel;
|
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->{sizer}->Prepend($printer_panel, 0, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, 10);
|
||||||
$self->Layout;
|
$self->Layout;
|
||||||
|
|
||||||
|
@ -16,11 +16,11 @@ use constant STATUS_TIMER_INTERVAL => 1000; # milliseconds
|
|||||||
use constant TEMP_TIMER_INTERVAL => 5000; # milliseconds
|
use constant TEMP_TIMER_INTERVAL => 5000; # milliseconds
|
||||||
|
|
||||||
sub new {
|
sub new {
|
||||||
my ($class, $parent, $printer_name, $config) = @_;
|
my ($class, $parent, $printer_name, $preset) = @_;
|
||||||
my $self = $class->SUPER::new($parent, -1, wxDefaultPosition, [500, 250]);
|
my $self = $class->SUPER::new($parent, -1, wxDefaultPosition, [500, 250]);
|
||||||
|
|
||||||
$self->printer_name($printer_name || 'Printer');
|
$self->printer_name($printer_name || 'Printer');
|
||||||
$self->config($config);
|
$self->config($preset->dirty_config);
|
||||||
$self->manual_control_config({
|
$self->manual_control_config({
|
||||||
xy_travel_speed => 130,
|
xy_travel_speed => 130,
|
||||||
z_travel_speed => 10,
|
z_travel_speed => 10,
|
||||||
@ -103,7 +103,7 @@ sub new {
|
|||||||
}
|
}
|
||||||
my $serial_port_sizer = Wx::BoxSizer->new(wxHORIZONTAL);
|
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->{serial_port_combobox}->SetFont($Slic3r::GUI::small_font);
|
||||||
$self->update_serial_ports;
|
$self->update_serial_ports;
|
||||||
$serial_port_sizer->Add($self->{serial_port_combobox}, 0, wxRIGHT | wxALIGN_CENTER_VERTICAL, 1);
|
$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);
|
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"]);
|
["57600", "115200", "250000"]);
|
||||||
$self->{serial_speed_combobox}->SetFont($Slic3r::GUI::small_font);
|
$self->{serial_speed_combobox}->SetFont($Slic3r::GUI::small_font);
|
||||||
$serial_speed_sizer->Add($self->{serial_speed_combobox}, 0, wxALIGN_CENTER_VERTICAL, 0);
|
$serial_speed_sizer->Add($self->{serial_speed_combobox}, 0, wxALIGN_CENTER_VERTICAL, 0);
|
||||||
|
@ -584,6 +584,8 @@ sub _on_select_preset {
|
|||||||
# and the dirty options.
|
# and the dirty options.
|
||||||
$o_config->clear;
|
$o_config->clear;
|
||||||
foreach my $opt_key (@$shortcuts, $presets[0]->dirty_options) {
|
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));
|
$o_config->set($opt_key, $config->get($opt_key));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1384,7 +1384,7 @@ PrintConfigDef::PrintConfigDef()
|
|||||||
|
|
||||||
def = this->add("support_material_interface_speed", coFloatOrPercent);
|
def = this->add("support_material_interface_speed", coFloatOrPercent);
|
||||||
def->label = "↳ interface";
|
def->label = "↳ interface";
|
||||||
def->category = "Support material interface speed";
|
def->full_label = "Support material interface speed";
|
||||||
def->gui_type = "f_enum_open";
|
def->gui_type = "f_enum_open";
|
||||||
def->category = "Support material";
|
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.";
|
def->tooltip = "Speed for printing support material interface layers. If expressed as percentage (for example 50%) it will be calculated over support material speed.";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user