diff --git a/lib/Slic3r/Config.pm b/lib/Slic3r/Config.pm index 46dc76263..430e872b4 100644 --- a/lib/Slic3r/Config.pm +++ b/lib/Slic3r/Config.pm @@ -107,12 +107,18 @@ our $Options = { 'start_gcode' => { label => 'Start GCODE', type => 's', + multiline => 1, + width => 350, + height => 150, serialize => sub { join '\n', split /\R+/, $_[0] }, deserialize => sub { join "\n", split /\\n/, $_[0] }, }, 'end_gcode' => { label => 'End GCODE', type => 's', + multiline => 1, + width => 350, + height => 150, serialize => sub { join '\n', split /\R+/, $_[0] }, deserialize => sub { join "\n", split /\\n/, $_[0] }, }, diff --git a/lib/Slic3r/GUI/OptionsGroup.pm b/lib/Slic3r/GUI/OptionsGroup.pm index 98fa53ed9..3f4f9a849 100644 --- a/lib/Slic3r/GUI/OptionsGroup.pm +++ b/lib/Slic3r/GUI/OptionsGroup.pm @@ -23,8 +23,17 @@ sub new { my $label = Wx::StaticText->new($parent, -1, "$opt->{label}:", Wx::wxDefaultPosition, [180,-1]); $label->Wrap(180); # needed to avoid Linux/GTK bug my $field; - if ($opt->{type} =~ /^(i|f)$/) { - $field = Wx::TextCtrl->new($parent, -1, Slic3r::Config->get($opt_key)); + if ($opt->{type} =~ /^(i|f|s)$/) { + my $style = 0; + my $size = Wx::wxDefaultSize; + + if ($opt->{multiline}) { + $style = &Wx::wxTE_MULTILINE; + $size = Wx::Size->new($opt->{width} || -1, $opt->{height} || -1); + } + + $field = Wx::TextCtrl->new($parent, -1, Slic3r::Config->get($opt_key), + Wx::wxDefaultPosition, $size, $style); EVT_TEXT($parent, $field, sub { Slic3r::Config->set($opt_key, $field->GetValue) }); push @reload_callbacks, sub { $field->SetValue(Slic3r::Config->get($opt_key)) }; } elsif ($opt->{type} eq 'bool') { diff --git a/lib/Slic3r/GUI/SkeinPanel.pm b/lib/Slic3r/GUI/SkeinPanel.pm index 0b88ee6a6..93a911de8 100644 --- a/lib/Slic3r/GUI/SkeinPanel.pm +++ b/lib/Slic3r/GUI/SkeinPanel.pm @@ -47,6 +47,10 @@ sub new { title => 'Transform', options => [qw(scale rotate duplicate_x duplicate_y duplicate_distance)], }, + gcode => { + title => 'Custom GCODE', + options => [qw(start_gcode end_gcode)], + }, ); $self->{panels} = \%panels; @@ -71,9 +75,11 @@ sub new { my $tab1 = $make_tab->([qw(printer filament)], [qw(speed)]); my $tab2 = $make_tab->([qw(transform accuracy skirt)], [qw(print retract)]); + my $tab3 = $make_tab->([qw(gcode)]); $tabpanel->AddPage($tab1, "Printer and Filament"); $tabpanel->AddPage($tab2, "Print Settings"); + $tabpanel->AddPage($tab3, "Start/End GCODE"); my $buttons_sizer; {