2016-09-14 11:22:41 +02:00
# Preferences dialog, opens from Menu: File->Preferences
2013-01-02 20:30:48 +01:00
package Slic3r::GUI::Preferences ;
2014-06-14 19:59:59 +02:00
use Wx qw(:dialog :id :misc :sizer :systemsettings wxTheApp) ;
2013-01-02 20:30:48 +01:00
use Wx::Event qw(EVT_BUTTON EVT_TEXT_ENTER) ;
use base 'Wx::Dialog' ;
sub new {
2014-07-01 16:40:56 +02:00
my ( $class , $parent ) = @_ ;
2014-12-30 13:24:00 +01:00
my $self = $class -> SUPER:: new ( $parent , - 1 , "Preferences" , wxDefaultPosition , wxDefaultSize );
2014-07-01 16:40:56 +02:00
$self -> { values } = {};
2013-01-02 20:30:48 +01:00
2014-07-01 16:40:56 +02:00
my $optgroup ;
$optgroup = Slic3r::GUI::OptionsGroup -> new (
2013-01-02 20:30:48 +01:00
parent => $self ,
title => 'General' ,
2014-07-01 16:40:56 +02:00
on_change => sub {
my ( $opt_id ) = @_ ;
$self -> { values }{ $opt_id } = $optgroup -> get_value ( $opt_id );
},
2014-12-30 13:24:00 +01:00
label_width => 200 ,
2013-01-02 20:30:48 +01:00
);
2017-06-12 14:25:35 +02:00
# $optgroup->append_single_option_line(Slic3r::GUI::OptionsGroup::Option->new(
# opt_id => 'version_check',
# type => 'bool',
# label => 'Check for updates',
# tooltip => 'If this is enabled, Slic3r will check for updates daily and display a reminder if a newer version is available.',
# default => $Slic3r::GUI::Settings->{_}{version_check} // 1,
# readonly => !wxTheApp->have_version_check,
# ));
2014-07-01 16:40:56 +02:00
$optgroup -> append_single_option_line ( Slic3r::GUI::OptionsGroup::Option -> new (
opt_id => 'remember_output_path' ,
type => 'bool' ,
label => 'Remember output directory' ,
tooltip => 'If this is enabled, Slic3r will prompt the last output directory instead of the one containing the input files.' ,
default => $ Slic3r::GUI:: Settings -> { _ }{ remember_output_path },
));
$optgroup -> append_single_option_line ( Slic3r::GUI::OptionsGroup::Option -> new (
opt_id => 'autocenter' ,
type => 'bool' ,
label => 'Auto-center parts' ,
2014-07-01 18:19:13 +02:00
tooltip => 'If this is enabled, Slic3r will auto-center objects around the print bed center.' ,
2014-07-01 16:40:56 +02:00
default => $ Slic3r::GUI:: Settings -> { _ }{ autocenter },
));
$optgroup -> append_single_option_line ( Slic3r::GUI::OptionsGroup::Option -> new (
opt_id => 'background_processing' ,
type => 'bool' ,
label => 'Background processing' ,
tooltip => 'If this is enabled, Slic3r will pre-process objects as soon as they\'re loaded in order to save time when exporting G-code.' ,
default => $ Slic3r::GUI:: Settings -> { _ }{ background_processing },
readonly => ! $ Slic3r:: have_threads ,
));
2016-05-16 23:40:24 +02:00
$optgroup -> append_single_option_line ( Slic3r::GUI::OptionsGroup::Option -> new (
opt_id => 'no_controller' ,
type => 'bool' ,
label => 'Disable USB/serial connection' ,
tooltip => 'Disable communication with the printer over a serial / USB cable. This simplifies the user interface in case the printer is never attached to the computer.' ,
default => $ Slic3r::GUI:: Settings -> { _ }{ no_controller },
));
2016-10-24 16:07:36 +02:00
$optgroup -> append_single_option_line ( Slic3r::GUI::OptionsGroup::Option -> new (
opt_id => 'no_defaults' ,
type => 'bool' ,
label => 'Suppress "- default -" presets' ,
tooltip => 'Suppress "- default -" presets in the Print / Filament / Printer selections once there are any other valid presets available.' ,
default => $ Slic3r::GUI:: Settings -> { _ }{ no_defaults },
));
2014-07-01 16:40:56 +02:00
2013-01-02 20:30:48 +01:00
my $sizer = Wx::BoxSizer -> new ( wxVERTICAL );
$sizer -> Add ( $optgroup -> sizer , 0 , wxEXPAND | wxBOTTOM | wxLEFT | wxRIGHT , 10 );
my $buttons = $self -> CreateStdDialogButtonSizer ( wxOK | wxCANCEL );
2013-01-03 15:49:20 +01:00
EVT_BUTTON ( $self , wxID_OK , sub { $self -> _accept });
2013-01-02 20:30:48 +01:00
$sizer -> Add ( $buttons , 0 , wxEXPAND | wxBOTTOM | wxLEFT | wxRIGHT , 10 );
$self -> SetSizer ( $sizer );
$sizer -> SetSizeHints ( $self );
return $self ;
}
2013-01-03 15:49:20 +01:00
sub _accept {
my $self = shift ;
2017-06-14 11:48:08 +02:00
if ( defined ( $self -> { values }{ no_controller })) {
2013-01-03 15:49:20 +01:00
Slic3r::GUI:: warning_catcher ( $self ) -> ( "You need to restart Slic3r to make the changes effective." );
}
$ Slic3r::GUI:: Settings -> { _ }{ $_ } = $self -> { values }{ $_ } for keys % { $self -> { values }};
2014-06-14 19:59:59 +02:00
wxTheApp -> save_settings ;
2013-11-11 22:02:12 +01:00
$self -> EndModal ( wxID_OK );
$self -> Close ; # needed on Linux
2016-10-25 13:24:42 +02:00
# Nothify the UI to update itself from the ini file.
wxTheApp -> update_ui_from_settings ;
2013-01-03 15:49:20 +01:00
}
2013-01-02 20:30:48 +01:00
1 ;