New --no-plater and --gui-mode options. #604
This commit is contained in:
parent
af50272b3b
commit
9247b3e9f4
@ -90,6 +90,9 @@ The author of the Silk icon set is Mark James.
|
|||||||
-o, --output <file> File to output gcode to (by default, the file will be saved
|
-o, --output <file> File to output gcode to (by default, the file will be saved
|
||||||
into the same directory as the input file using the
|
into the same directory as the input file using the
|
||||||
--output-filename-format to generate the filename)
|
--output-filename-format to generate the filename)
|
||||||
|
GUI options:
|
||||||
|
--no-plater Disable the plater tab
|
||||||
|
--gui-mode Overrides the configured mode (simple/expert)
|
||||||
|
|
||||||
Output options:
|
Output options:
|
||||||
--output-filename-format
|
--output-filename-format
|
||||||
|
@ -39,6 +39,9 @@ use constant MI_WEBSITE => &Wx::NewId;
|
|||||||
use constant MI_DOCUMENTATION => &Wx::NewId;
|
use constant MI_DOCUMENTATION => &Wx::NewId;
|
||||||
|
|
||||||
our $datadir;
|
our $datadir;
|
||||||
|
our $no_plater;
|
||||||
|
our $mode;
|
||||||
|
|
||||||
our $Settings = {
|
our $Settings = {
|
||||||
_ => {
|
_ => {
|
||||||
mode => 'simple',
|
mode => 'simple',
|
||||||
@ -79,7 +82,10 @@ sub OnInit {
|
|||||||
Wx::Image::AddHandler(Wx::PNGHandler->new);
|
Wx::Image::AddHandler(Wx::PNGHandler->new);
|
||||||
my $frame = Wx::Frame->new(undef, -1, 'Slic3r', wxDefaultPosition, [760, 470], wxDEFAULT_FRAME_STYLE);
|
my $frame = Wx::Frame->new(undef, -1, 'Slic3r', wxDefaultPosition, [760, 470], wxDEFAULT_FRAME_STYLE);
|
||||||
$frame->SetIcon(Wx::Icon->new("$Slic3r::var/Slic3r_128px.png", wxBITMAP_TYPE_PNG) );
|
$frame->SetIcon(Wx::Icon->new("$Slic3r::var/Slic3r_128px.png", wxBITMAP_TYPE_PNG) );
|
||||||
$self->{skeinpanel} = Slic3r::GUI::SkeinPanel->new($frame, mode => $Settings->{_}{mode});
|
$self->{skeinpanel} = Slic3r::GUI::SkeinPanel->new($frame,
|
||||||
|
mode => $mode // $Settings->{_}{mode},
|
||||||
|
no_plater => $no_plater,
|
||||||
|
);
|
||||||
$self->SetTopWindow($frame);
|
$self->SetTopWindow($frame);
|
||||||
|
|
||||||
# status bar
|
# status bar
|
||||||
|
@ -28,9 +28,11 @@ sub new {
|
|||||||
my ($parent, %params) = @_;
|
my ($parent, %params) = @_;
|
||||||
my $self = $class->SUPER::new($parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
|
my $self = $class->SUPER::new($parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
|
||||||
$self->{mode} = $params{mode};
|
$self->{mode} = $params{mode};
|
||||||
|
$self->{mode} = 'expert' if $self->{mode} !~ /^(?:simple|expert)$/;
|
||||||
|
|
||||||
$self->{tabpanel} = Wx::Notebook->new($self, -1, wxDefaultPosition, wxDefaultSize, wxNB_TOP | wxTAB_TRAVERSAL);
|
$self->{tabpanel} = Wx::Notebook->new($self, -1, wxDefaultPosition, wxDefaultSize, wxNB_TOP | wxTAB_TRAVERSAL);
|
||||||
$self->{tabpanel}->AddPage($self->{plater} = Slic3r::GUI::Plater->new($self->{tabpanel}), "Plater");
|
$self->{tabpanel}->AddPage($self->{plater} = Slic3r::GUI::Plater->new($self->{tabpanel}), "Plater")
|
||||||
|
unless $params{no_plater};
|
||||||
$self->{options_tabs} = {};
|
$self->{options_tabs} = {};
|
||||||
|
|
||||||
my $simple_config;
|
my $simple_config;
|
||||||
@ -44,17 +46,19 @@ sub new {
|
|||||||
for my $tab_name (qw(print filament printer)) {
|
for my $tab_name (qw(print filament printer)) {
|
||||||
my $tab = $self->{options_tabs}{$tab_name} = ($class_prefix . ucfirst $tab_name)->new(
|
my $tab = $self->{options_tabs}{$tab_name} = ($class_prefix . ucfirst $tab_name)->new(
|
||||||
$self->{tabpanel},
|
$self->{tabpanel},
|
||||||
plater => $self->{plater},
|
|
||||||
on_value_change => sub {
|
on_value_change => sub {
|
||||||
$self->{plater}->on_config_change(@_); # propagate config change events to the plater
|
$self->{plater}->on_config_change(@_) if $self->{plater}; # propagate config change events to the plater
|
||||||
if ($self->{mode} eq 'simple' && $init) { # don't save while loading for the first time
|
if ($self->{mode} eq 'simple' && $init) { # don't save while loading for the first time
|
||||||
# save config
|
# save config
|
||||||
$self->config->save("$Slic3r::GUI::datadir/simple.ini");
|
$self->config->save("$Slic3r::GUI::datadir/simple.ini");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
on_presets_changed => sub {
|
||||||
|
$self->{plater}->update_presets($tab_name, @_) if $self->{plater};
|
||||||
|
},
|
||||||
);
|
);
|
||||||
$self->{tabpanel}->AddPage($tab, $tab->title);
|
$self->{tabpanel}->AddPage($tab, $tab->title);
|
||||||
$tab->load_config($simple_config);
|
$tab->load_config($simple_config) if $simple_config;
|
||||||
}
|
}
|
||||||
$init = 1;
|
$init = 1;
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ sub new {
|
|||||||
my ($parent, %params) = @_;
|
my ($parent, %params) = @_;
|
||||||
my $self = $class->SUPER::new($parent, -1, wxDefaultPosition, wxDefaultSize, wxBK_LEFT | wxTAB_TRAVERSAL);
|
my $self = $class->SUPER::new($parent, -1, wxDefaultPosition, wxDefaultSize, wxBK_LEFT | wxTAB_TRAVERSAL);
|
||||||
$self->{options} = []; # array of option names handled by this tab
|
$self->{options} = []; # array of option names handled by this tab
|
||||||
$self->{$_} = $params{$_} for qw(plater on_value_change);
|
$self->{$_} = $params{$_} for qw(on_value_change on_presets_changed);
|
||||||
|
|
||||||
# horizontal sizer
|
# horizontal sizer
|
||||||
$self->{sizer} = Wx::BoxSizer->new(wxHORIZONTAL);
|
$self->{sizer} = Wx::BoxSizer->new(wxHORIZONTAL);
|
||||||
@ -81,7 +81,7 @@ sub new {
|
|||||||
|
|
||||||
EVT_CHOICE($parent, $self->{presets_choice}, sub {
|
EVT_CHOICE($parent, $self->{presets_choice}, sub {
|
||||||
$self->on_select_preset;
|
$self->on_select_preset;
|
||||||
$self->sync_presets;
|
$self->on_presets_changed;
|
||||||
});
|
});
|
||||||
|
|
||||||
EVT_BUTTON($self, $self->{btn_save_preset}, sub {
|
EVT_BUTTON($self, $self->{btn_save_preset}, sub {
|
||||||
@ -108,7 +108,7 @@ sub new {
|
|||||||
$self->load_presets;
|
$self->load_presets;
|
||||||
$self->{presets_choice}->SetSelection(first { basename($self->{presets}[$_]{file}) eq $dlg->get_name . ".ini" } 1 .. $#{$self->{presets}});
|
$self->{presets_choice}->SetSelection(first { basename($self->{presets}[$_]{file}) eq $dlg->get_name . ".ini" } 1 .. $#{$self->{presets}});
|
||||||
$self->on_select_preset;
|
$self->on_select_preset;
|
||||||
$self->sync_presets;
|
$self->on_presets_changed;
|
||||||
});
|
});
|
||||||
|
|
||||||
EVT_BUTTON($self, $self->{btn_delete_preset}, sub {
|
EVT_BUTTON($self, $self->{btn_delete_preset}, sub {
|
||||||
@ -124,7 +124,7 @@ sub new {
|
|||||||
$self->{presets_choice}->Delete($i);
|
$self->{presets_choice}->Delete($i);
|
||||||
$self->{presets_choice}->SetSelection(0);
|
$self->{presets_choice}->SetSelection(0);
|
||||||
$self->on_select_preset;
|
$self->on_select_preset;
|
||||||
$self->sync_presets;
|
$self->on_presets_changed;
|
||||||
});
|
});
|
||||||
|
|
||||||
$self->{config} = Slic3r::Config->new;
|
$self->{config} = Slic3r::Config->new;
|
||||||
@ -154,6 +154,12 @@ sub on_value_change {
|
|||||||
$self->{on_value_change}->(@_) if $self->{on_value_change};
|
$self->{on_value_change}->(@_) if $self->{on_value_change};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub on_presets_changed {
|
||||||
|
my $self = shift;
|
||||||
|
$self->{on_presets_changed}->([$self->{presets_choice}->GetStrings], $self->{presets_choice}->GetSelection)
|
||||||
|
if $self->{on_presets_changed};
|
||||||
|
}
|
||||||
|
|
||||||
sub on_preset_loaded {}
|
sub on_preset_loaded {}
|
||||||
sub hidden_options {}
|
sub hidden_options {}
|
||||||
sub config { $_[0]->{config}->clone }
|
sub config { $_[0]->{config}->clone }
|
||||||
@ -252,7 +258,7 @@ sub add_options_page {
|
|||||||
my $page = Slic3r::GUI::Tab::Page->new($self, $title, $self->{iconcount}, %params, on_change => sub {
|
my $page = Slic3r::GUI::Tab::Page->new($self, $title, $self->{iconcount}, %params, on_change => sub {
|
||||||
$self->on_value_change(@_);
|
$self->on_value_change(@_);
|
||||||
$self->set_dirty(1);
|
$self->set_dirty(1);
|
||||||
$self->sync_presets;
|
$self->on_presets_changed;
|
||||||
});
|
});
|
||||||
$page->Hide;
|
$page->Hide;
|
||||||
$self->{sizer}->Add($page, 1, wxEXPAND | wxLEFT, 5);
|
$self->{sizer}->Add($page, 1, wxEXPAND | wxLEFT, 5);
|
||||||
@ -312,7 +318,7 @@ sub set_dirty {
|
|||||||
$self->{presets_choice}->SetString($i, $text);
|
$self->{presets_choice}->SetString($i, $text);
|
||||||
$self->{presets_choice}->SetSelection($selection); # http://trac.wxwidgets.org/ticket/13769
|
$self->{presets_choice}->SetSelection($selection); # http://trac.wxwidgets.org/ticket/13769
|
||||||
}
|
}
|
||||||
$self->sync_presets;
|
$self->on_presets_changed;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub is_dirty {
|
sub is_dirty {
|
||||||
@ -347,7 +353,7 @@ sub load_presets {
|
|||||||
$self->{presets_choice}->SetSelection($i || 0);
|
$self->{presets_choice}->SetSelection($i || 0);
|
||||||
$self->on_select_preset;
|
$self->on_select_preset;
|
||||||
}
|
}
|
||||||
$self->sync_presets;
|
$self->on_presets_changed;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub load_config_file {
|
sub load_config_file {
|
||||||
@ -368,12 +374,7 @@ sub load_config_file {
|
|||||||
}
|
}
|
||||||
$self->{presets_choice}->SetSelection($i);
|
$self->{presets_choice}->SetSelection($i);
|
||||||
$self->on_select_preset;
|
$self->on_select_preset;
|
||||||
$self->sync_presets;
|
$self->on_presets_changed;
|
||||||
}
|
|
||||||
|
|
||||||
sub sync_presets {
|
|
||||||
my $self = shift;
|
|
||||||
$self->{plater}->update_presets($self->name, [$self->{presets_choice}->GetStrings], $self->{presets_choice}->GetSelection);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
package Slic3r::GUI::Tab::Print;
|
package Slic3r::GUI::Tab::Print;
|
||||||
|
10
slic3r.pl
10
slic3r.pl
@ -27,6 +27,8 @@ my %cli_options = ();
|
|||||||
'save=s' => \$opt{save},
|
'save=s' => \$opt{save},
|
||||||
'load=s@' => \$opt{load},
|
'load=s@' => \$opt{load},
|
||||||
'ignore-nonexistent-config' => \$opt{ignore_nonexistent_config},
|
'ignore-nonexistent-config' => \$opt{ignore_nonexistent_config},
|
||||||
|
'no-plater' => \$opt{no_plater},
|
||||||
|
'gui-mode=s' => \$opt{gui_mode},
|
||||||
'datadir=s' => \$opt{datadir},
|
'datadir=s' => \$opt{datadir},
|
||||||
'export-svg' => \$opt{export_svg},
|
'export-svg' => \$opt{export_svg},
|
||||||
'merge|m' => \$opt{merge},
|
'merge|m' => \$opt{merge},
|
||||||
@ -73,7 +75,9 @@ my $gui;
|
|||||||
if (!@ARGV && !$opt{save} && eval "require Slic3r::GUI; 1") {
|
if (!@ARGV && !$opt{save} && eval "require Slic3r::GUI; 1") {
|
||||||
{
|
{
|
||||||
no warnings 'once';
|
no warnings 'once';
|
||||||
$Slic3r::GUI::datadir = $opt{datadir} if $opt{datadir};
|
$Slic3r::GUI::datadir = $opt{datadir};
|
||||||
|
$Slic3r::GUI::no_plater = $opt{no_plater};
|
||||||
|
$Slic3r::GUI::mode = $opt{gui_mode};
|
||||||
}
|
}
|
||||||
$gui = Slic3r::GUI->new;
|
$gui = Slic3r::GUI->new;
|
||||||
$gui->{skeinpanel}->load_config_file($_) for @{$opt{load}};
|
$gui->{skeinpanel}->load_config_file($_) for @{$opt{load}};
|
||||||
@ -139,6 +143,10 @@ Usage: slic3r.pl [ OPTIONS ] file.stl
|
|||||||
into the same directory as the input file using the
|
into the same directory as the input file using the
|
||||||
--output-filename-format to generate the filename)
|
--output-filename-format to generate the filename)
|
||||||
$j
|
$j
|
||||||
|
GUI options:
|
||||||
|
--no-plater Disable the plater tab
|
||||||
|
--gui-mode Overrides the configured mode (simple/expert)
|
||||||
|
|
||||||
Output options:
|
Output options:
|
||||||
--output-filename-format
|
--output-filename-format
|
||||||
Output file name format; all config options enclosed in brackets
|
Output file name format; all config options enclosed in brackets
|
||||||
|
Loading…
Reference in New Issue
Block a user