mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-11-02 20:51:23 -07:00 
			
		
		
		
	Clean up Wx imports
This commit is contained in:
		
							parent
							
								
									a0f8078ee1
								
							
						
					
					
						commit
						7746040af5
					
				
					 5 changed files with 96 additions and 106 deletions
				
			
		| 
						 | 
				
			
			@ -2,8 +2,8 @@ package Slic3r::GUI::OptionsGroup;
 | 
			
		|||
use strict;
 | 
			
		||||
use warnings;
 | 
			
		||||
 | 
			
		||||
use Wx qw(:sizer wxSYS_DEFAULT_GUI_FONT);
 | 
			
		||||
use Wx::Event qw(EVT_TEXT EVT_SPINCTRL EVT_CHECKBOX EVT_COMBOBOX);
 | 
			
		||||
use Wx qw(:combobox :font :misc :sizer :systemsettings :textctrl);
 | 
			
		||||
use Wx::Event qw(EVT_CHECKBOX EVT_COMBOBOX EVT_SPINCTRL EVT_TEXT);
 | 
			
		||||
use base 'Wx::StaticBoxSizer';
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -19,12 +19,12 @@ sub new {
 | 
			
		|||
    my $self = $class->SUPER::new($box, wxVERTICAL);
 | 
			
		||||
    
 | 
			
		||||
    my $grid_sizer = Wx::FlexGridSizer->new(scalar(@{$p{options}}), 2, ($p{no_labels} ? 1 : 2), 0);
 | 
			
		||||
    $grid_sizer->SetFlexibleDirection(&Wx::wxHORIZONTAL);
 | 
			
		||||
    $grid_sizer->SetFlexibleDirection(wxHORIZONTAL);
 | 
			
		||||
    $grid_sizer->AddGrowableCol($p{no_labels} ? 0 : 1);
 | 
			
		||||
    
 | 
			
		||||
    # grab the default font, to fix Windows font issues/keep things consistent
 | 
			
		||||
    my $bold_font = Wx::SystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
 | 
			
		||||
    $bold_font->SetWeight(&Wx::wxFONTWEIGHT_BOLD);
 | 
			
		||||
    $bold_font->SetWeight(wxFONTWEIGHT_BOLD);
 | 
			
		||||
    my $sidetext_font = Wx::SystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
 | 
			
		||||
    
 | 
			
		||||
    my $onChange = $p{on_change} || sub {};
 | 
			
		||||
| 
						 | 
				
			
			@ -33,7 +33,7 @@ sub new {
 | 
			
		|||
        my $opt = $Slic3r::Config::Options->{$opt_key};
 | 
			
		||||
        my $label;
 | 
			
		||||
        if (!$p{no_labels}) {
 | 
			
		||||
            $label = Wx::StaticText->new($parent, -1, "$opt->{label}:", Wx::wxDefaultPosition, [$p{label_width} || 180, -1]);
 | 
			
		||||
            $label = Wx::StaticText->new($parent, -1, "$opt->{label}:", wxDefaultPosition, [$p{label_width} || 180, -1]);
 | 
			
		||||
            $label->Wrap($p{label_width} || 180) ;  # needed to avoid Linux/GTK bug
 | 
			
		||||
            $grid_sizer->Add($label);
 | 
			
		||||
            
 | 
			
		||||
| 
						 | 
				
			
			@ -45,17 +45,17 @@ sub new {
 | 
			
		|||
        my $field;
 | 
			
		||||
        if ($opt->{type} =~ /^(i|f|s|s@)$/) {
 | 
			
		||||
            my $style = 0;
 | 
			
		||||
            $style = &Wx::wxTE_MULTILINE if $opt->{multiline};
 | 
			
		||||
            $style = wxTE_MULTILINE if $opt->{multiline};
 | 
			
		||||
            my $size = Wx::Size->new($opt->{width} || -1, $opt->{height} || -1);
 | 
			
		||||
            
 | 
			
		||||
            my ($get, $set) = $opt->{type} eq 's@' ? qw(serialize deserialize) : qw(get_raw set);
 | 
			
		||||
            
 | 
			
		||||
            if ($opt->{type} eq 'i') {
 | 
			
		||||
                my $value = Slic3r::Config->$get($opt_key);
 | 
			
		||||
                $field = Wx::SpinCtrl->new($parent, -1, $value, Wx::wxDefaultPosition, $size, $style, $opt->{min} || 0, $opt->{max} || 100, $value);
 | 
			
		||||
                $field = Wx::SpinCtrl->new($parent, -1, $value, wxDefaultPosition, $size, $style, $opt->{min} || 0, $opt->{max} || 100, $value);
 | 
			
		||||
                EVT_SPINCTRL($parent, $field, sub { Slic3r::Config->$set($opt_key, $field->GetValue); $onChange->($opt_key) });
 | 
			
		||||
            } else {
 | 
			
		||||
                $field = Wx::TextCtrl->new($parent, -1, Slic3r::Config->$get($opt_key), Wx::wxDefaultPosition, $size, $style);
 | 
			
		||||
                $field = Wx::TextCtrl->new($parent, -1, Slic3r::Config->$get($opt_key), wxDefaultPosition, $size, $style);
 | 
			
		||||
                EVT_TEXT($parent, $field, sub { Slic3r::Config->$set($opt_key, $field->GetValue); $onChange->($opt_key) });
 | 
			
		||||
            }
 | 
			
		||||
            $reload_callbacks{$opt_key} = sub { $field->SetValue(Slic3r::Config->$get($opt_key)) };
 | 
			
		||||
| 
						 | 
				
			
			@ -70,9 +70,9 @@ sub new {
 | 
			
		|||
            my $value = Slic3r::Config->get_raw($opt_key);
 | 
			
		||||
            my @items = (
 | 
			
		||||
                Wx::StaticText->new($parent, -1, "x:"),
 | 
			
		||||
                my $x_field = Wx::TextCtrl->new($parent, -1, $value->[0], Wx::wxDefaultPosition, $field_size),
 | 
			
		||||
                my $x_field = Wx::TextCtrl->new($parent, -1, $value->[0], wxDefaultPosition, $field_size),
 | 
			
		||||
                Wx::StaticText->new($parent, -1, "  y:"),
 | 
			
		||||
                my $y_field = Wx::TextCtrl->new($parent, -1, $value->[1], Wx::wxDefaultPosition, $field_size),
 | 
			
		||||
                my $y_field = Wx::TextCtrl->new($parent, -1, $value->[1], wxDefaultPosition, $field_size),
 | 
			
		||||
            );
 | 
			
		||||
            $field->Add($_) for @items;
 | 
			
		||||
            if ($opt->{tooltip}) {
 | 
			
		||||
| 
						 | 
				
			
			@ -93,7 +93,7 @@ sub new {
 | 
			
		|||
            };
 | 
			
		||||
            $fields{$opt_key} = [$x_field, $y_field];
 | 
			
		||||
        } elsif ($opt->{type} eq 'select') {
 | 
			
		||||
            $field = Wx::ComboBox->new($parent, -1, "", Wx::wxDefaultPosition, Wx::wxDefaultSize, $opt->{labels} || $opt->{values}, &Wx::wxCB_READONLY);
 | 
			
		||||
            $field = Wx::ComboBox->new($parent, -1, "", wxDefaultPosition, wxDefaultSize, $opt->{labels} || $opt->{values}, wxCB_READONLY);
 | 
			
		||||
            EVT_COMBOBOX($parent, $field, sub {
 | 
			
		||||
                Slic3r::Config->set($opt_key, $opt->{values}[$field->GetSelection]);
 | 
			
		||||
                $onChange->($opt_key);
 | 
			
		||||
| 
						 | 
				
			
			@ -109,14 +109,14 @@ sub new {
 | 
			
		|||
        $label->SetToolTipString($opt->{tooltip}) if $label && $opt->{tooltip};
 | 
			
		||||
        $field->SetToolTipString($opt->{tooltip}) if $opt->{tooltip} && $field->can('SetToolTipString');
 | 
			
		||||
        if ($opt->{sidetext}) {
 | 
			
		||||
            my $sizer = Wx::BoxSizer->new(&Wx::wxHORIZONTAL);
 | 
			
		||||
            my $sizer = Wx::BoxSizer->new(wxHORIZONTAL);
 | 
			
		||||
            $sizer->Add($field);
 | 
			
		||||
            my $sidetext = Wx::StaticText->new($parent, -1, $opt->{sidetext}, Wx::wxDefaultPosition, [-1, -1]);
 | 
			
		||||
            my $sidetext = Wx::StaticText->new($parent, -1, $opt->{sidetext}, wxDefaultPosition, [-1, -1]);
 | 
			
		||||
            $sidetext->SetFont($sidetext_font);
 | 
			
		||||
            $sizer->Add($sidetext, 0, &Wx::wxLEFT | &Wx::wxALIGN_CENTER_VERTICAL , 4);
 | 
			
		||||
            $sizer->Add($sidetext, 0, wxLEFT | wxALIGN_CENTER_VERTICAL , 4);
 | 
			
		||||
            $grid_sizer->Add($sizer);
 | 
			
		||||
        } else {
 | 
			
		||||
            $grid_sizer->Add($field, 0, $opt->{full_width} ? &Wx::wxEXPAND : 0);
 | 
			
		||||
            $grid_sizer->Add($field, 0, $opt->{full_width} ? wxEXPAND : 0);
 | 
			
		||||
        }
 | 
			
		||||
        $fields{$opt_key} ||= [$field];
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,10 +8,8 @@ use Math::ConvexHull qw(convex_hull);
 | 
			
		|||
use Slic3r::Geometry qw(X Y Z X1 Y1 X2 Y2 scale unscale);
 | 
			
		||||
use Slic3r::Geometry::Clipper qw(JT_ROUND);
 | 
			
		||||
use threads::shared qw(shared_clone);
 | 
			
		||||
use Wx qw(:sizer :progressdialog wxOK wxICON_INFORMATION wxICON_WARNING wxICON_ERROR wxICON_QUESTION
 | 
			
		||||
    wxOK wxCANCEL wxID_OK wxFD_OPEN wxFD_SAVE wxDEFAULT wxNORMAL);
 | 
			
		||||
use Wx::Event qw(EVT_BUTTON EVT_PAINT EVT_MOUSE_EVENTS EVT_LIST_ITEM_SELECTED EVT_LIST_ITEM_DESELECTED
 | 
			
		||||
    EVT_COMMAND EVT_TOOL);
 | 
			
		||||
use Wx qw(:bitmap :brush :button :dialog :filedialog :font :icon :id :listctrl :pen :sizer :toolbar :window);
 | 
			
		||||
use Wx::Event qw(EVT_BUTTON EVT_COMMAND EVT_LIST_ITEM_DESELECTED EVT_LIST_ITEM_SELECTED EVT_MOUSE_EVENTS EVT_PAINT EVT_TOOL);
 | 
			
		||||
use base 'Wx::Panel';
 | 
			
		||||
 | 
			
		||||
use constant TB_MORE    => 1;
 | 
			
		||||
| 
						 | 
				
			
			@ -38,53 +36,53 @@ sub new {
 | 
			
		|||
    EVT_PAINT($self->{canvas}, \&repaint);
 | 
			
		||||
    EVT_MOUSE_EVENTS($self->{canvas}, \&mouse_event);
 | 
			
		||||
    
 | 
			
		||||
    $self->{objects_brush} = Wx::Brush->new(Wx::Colour->new(210,210,210), &Wx::wxSOLID);
 | 
			
		||||
    $self->{selected_brush} = Wx::Brush->new(Wx::Colour->new(255,128,128), &Wx::wxSOLID);
 | 
			
		||||
    $self->{transparent_brush} = Wx::Brush->new(Wx::Colour->new(0,0,0), &Wx::wxTRANSPARENT);
 | 
			
		||||
    $self->{grid_pen} = Wx::Pen->new(Wx::Colour->new(230,230,230), 1, &Wx::wxSOLID);
 | 
			
		||||
    $self->{print_center_pen} = Wx::Pen->new(Wx::Colour->new(200,200,200), 1, &Wx::wxSOLID);
 | 
			
		||||
    $self->{clearance_pen} = Wx::Pen->new(Wx::Colour->new(0,0,200), 1, &Wx::wxSOLID);
 | 
			
		||||
    $self->{skirt_pen} = Wx::Pen->new(Wx::Colour->new(150,150,150), 1, &Wx::wxSOLID);
 | 
			
		||||
    $self->{objects_brush} = Wx::Brush->new(Wx::Colour->new(210,210,210), wxSOLID);
 | 
			
		||||
    $self->{selected_brush} = Wx::Brush->new(Wx::Colour->new(255,128,128), wxSOLID);
 | 
			
		||||
    $self->{transparent_brush} = Wx::Brush->new(Wx::Colour->new(0,0,0), wxTRANSPARENT);
 | 
			
		||||
    $self->{grid_pen} = Wx::Pen->new(Wx::Colour->new(230,230,230), 1, wxSOLID);
 | 
			
		||||
    $self->{print_center_pen} = Wx::Pen->new(Wx::Colour->new(200,200,200), 1, wxSOLID);
 | 
			
		||||
    $self->{clearance_pen} = Wx::Pen->new(Wx::Colour->new(0,0,200), 1, wxSOLID);
 | 
			
		||||
    $self->{skirt_pen} = Wx::Pen->new(Wx::Colour->new(150,150,150), 1, wxSOLID);
 | 
			
		||||
    
 | 
			
		||||
    $self->{list} = Wx::ListView->new($self, -1, [-1, -1], [-1, 180], &Wx::wxLC_SINGLE_SEL | &Wx::wxLC_REPORT | &Wx::wxBORDER_DEFAULT);
 | 
			
		||||
    $self->{list}->InsertColumn(0, "Name", &Wx::wxLIST_FORMAT_LEFT, 300);
 | 
			
		||||
    $self->{list}->InsertColumn(1, "Copies", &Wx::wxLIST_FORMAT_CENTER, 50);
 | 
			
		||||
    $self->{list}->InsertColumn(2, "Scale", &Wx::wxLIST_FORMAT_CENTER, &Wx::wxLIST_AUTOSIZE_USEHEADER);
 | 
			
		||||
    $self->{list} = Wx::ListView->new($self, -1, [-1, -1], [-1, 180], wxLC_SINGLE_SEL | wxLC_REPORT | wxBORDER_DEFAULT);
 | 
			
		||||
    $self->{list}->InsertColumn(0, "Name", wxLIST_FORMAT_LEFT, 300);
 | 
			
		||||
    $self->{list}->InsertColumn(1, "Copies", wxLIST_FORMAT_CENTER, 50);
 | 
			
		||||
    $self->{list}->InsertColumn(2, "Scale", wxLIST_FORMAT_CENTER, wxLIST_AUTOSIZE_USEHEADER);
 | 
			
		||||
    EVT_LIST_ITEM_SELECTED($self, $self->{list}, \&list_item_selected);
 | 
			
		||||
    EVT_LIST_ITEM_DESELECTED($self, $self->{list}, \&list_item_deselected);
 | 
			
		||||
    
 | 
			
		||||
    # toolbar for object manipulation
 | 
			
		||||
    if (!&Wx::wxMSW) {
 | 
			
		||||
        Wx::ToolTip::Enable(1);
 | 
			
		||||
        $self->{htoolbar} = Wx::ToolBar->new($self, -1, [-1, -1], [-1, -1], &Wx::wxTB_HORIZONTAL | &Wx::wxTB_HORZ_TEXT);
 | 
			
		||||
        $self->{htoolbar}->AddTool(TB_MORE, "More", Wx::Bitmap->new("$Slic3r::var/add.png", &Wx::wxBITMAP_TYPE_PNG), '');
 | 
			
		||||
        $self->{htoolbar}->AddTool(TB_LESS, "Less", Wx::Bitmap->new("$Slic3r::var/delete.png", &Wx::wxBITMAP_TYPE_PNG), '');
 | 
			
		||||
        $self->{htoolbar} = Wx::ToolBar->new($self, -1, [-1, -1], [-1, -1], wxTB_HORIZONTAL | wxTB_HORZ_TEXT);
 | 
			
		||||
        $self->{htoolbar}->AddTool(TB_MORE, "More", Wx::Bitmap->new("$Slic3r::var/add.png", wxBITMAP_TYPE_PNG), '');
 | 
			
		||||
        $self->{htoolbar}->AddTool(TB_LESS, "Less", Wx::Bitmap->new("$Slic3r::var/delete.png", wxBITMAP_TYPE_PNG), '');
 | 
			
		||||
        $self->{htoolbar}->AddSeparator;
 | 
			
		||||
        $self->{htoolbar}->AddTool(TB_45CCW, "45° ccw", Wx::Bitmap->new("$Slic3r::var/arrow_rotate_anticlockwise.png", &Wx::wxBITMAP_TYPE_PNG), '');
 | 
			
		||||
        $self->{htoolbar}->AddTool(TB_45CW, "45° cw", Wx::Bitmap->new("$Slic3r::var/arrow_rotate_clockwise.png", &Wx::wxBITMAP_TYPE_PNG), '');
 | 
			
		||||
        $self->{htoolbar}->AddTool(TB_ROTATE, "Rotate...", Wx::Bitmap->new("$Slic3r::var/arrow_rotate_clockwise.png", &Wx::wxBITMAP_TYPE_PNG), '');
 | 
			
		||||
        $self->{htoolbar}->AddTool(TB_45CCW, "45° ccw", Wx::Bitmap->new("$Slic3r::var/arrow_rotate_anticlockwise.png", wxBITMAP_TYPE_PNG), '');
 | 
			
		||||
        $self->{htoolbar}->AddTool(TB_45CW, "45° cw", Wx::Bitmap->new("$Slic3r::var/arrow_rotate_clockwise.png", wxBITMAP_TYPE_PNG), '');
 | 
			
		||||
        $self->{htoolbar}->AddTool(TB_ROTATE, "Rotate...", Wx::Bitmap->new("$Slic3r::var/arrow_rotate_clockwise.png", wxBITMAP_TYPE_PNG), '');
 | 
			
		||||
        $self->{htoolbar}->AddSeparator;
 | 
			
		||||
        $self->{htoolbar}->AddTool(TB_SCALE, "Scale...", Wx::Bitmap->new("$Slic3r::var/arrow_out.png", &Wx::wxBITMAP_TYPE_PNG), '');
 | 
			
		||||
        $self->{htoolbar}->AddTool(TB_SCALE, "Scale...", Wx::Bitmap->new("$Slic3r::var/arrow_out.png", wxBITMAP_TYPE_PNG), '');
 | 
			
		||||
        $self->{htoolbar}->AddSeparator;
 | 
			
		||||
        $self->{htoolbar}->AddTool(TB_SPLIT, "Split", Wx::Bitmap->new("$Slic3r::var/shape_ungroup.png", &Wx::wxBITMAP_TYPE_PNG), '');
 | 
			
		||||
        $self->{htoolbar}->AddTool(TB_SPLIT, "Split", Wx::Bitmap->new("$Slic3r::var/shape_ungroup.png", wxBITMAP_TYPE_PNG), '');
 | 
			
		||||
    } else {
 | 
			
		||||
        my %tbar_buttons = (increase => "More", decrease => "Less", rotate45ccw => "45°", rotate45cw => "45°",
 | 
			
		||||
            rotate => "Rotate…", changescale => "Scale…", split => "Split");
 | 
			
		||||
        $self->{btoolbar} = Wx::BoxSizer->new(wxHORIZONTAL);
 | 
			
		||||
        for (qw(increase decrease rotate45ccw rotate45cw rotate changescale split)) {
 | 
			
		||||
            $self->{"btn_$_"} = Wx::Button->new($self, -1, $tbar_buttons{$_}, [-1,-1], [-1,-1], &Wx::wxBU_EXACTFIT);
 | 
			
		||||
            $self->{"btn_$_"} = Wx::Button->new($self, -1, $tbar_buttons{$_}, [-1,-1], [-1,-1], wxBU_EXACTFIT);
 | 
			
		||||
            $self->{btoolbar}->Add($self->{"btn_$_"});
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    # general buttons
 | 
			
		||||
    $self->{btn_load} = Wx::Button->new($self, -1, "Add…", [-1,-1], [-1,-1], &Wx::wxBU_LEFT);
 | 
			
		||||
    $self->{btn_remove} = Wx::Button->new($self, -1, "Delete", [-1,-1], [-1,-1], &Wx::wxBU_LEFT);
 | 
			
		||||
    $self->{btn_reset} = Wx::Button->new($self, -1, "Delete All", [-1,-1], [-1,-1], &Wx::wxBU_LEFT);
 | 
			
		||||
    $self->{btn_arrange} = Wx::Button->new($self, -1, "Autoarrange", [-1,-1], [-1,-1], &Wx::wxBU_LEFT);
 | 
			
		||||
    $self->{btn_export_gcode} = Wx::Button->new($self, -1, "Export G-code…", [-1,-1], [-1,-1], &Wx::wxBU_LEFT);
 | 
			
		||||
    $self->{btn_load} = Wx::Button->new($self, -1, "Add…", [-1,-1], [-1,-1], wxBU_LEFT);
 | 
			
		||||
    $self->{btn_remove} = Wx::Button->new($self, -1, "Delete", [-1,-1], [-1,-1], wxBU_LEFT);
 | 
			
		||||
    $self->{btn_reset} = Wx::Button->new($self, -1, "Delete All", [-1,-1], [-1,-1], wxBU_LEFT);
 | 
			
		||||
    $self->{btn_arrange} = Wx::Button->new($self, -1, "Autoarrange", [-1,-1], [-1,-1], wxBU_LEFT);
 | 
			
		||||
    $self->{btn_export_gcode} = Wx::Button->new($self, -1, "Export G-code…", [-1,-1], [-1,-1], wxBU_LEFT);
 | 
			
		||||
    $self->{btn_export_gcode}->SetDefault;
 | 
			
		||||
    $self->{btn_export_stl} = Wx::Button->new($self, -1, "Export STL…", [-1,-1], [-1,-1], &Wx::wxBU_LEFT);
 | 
			
		||||
    $self->{btn_export_stl} = Wx::Button->new($self, -1, "Export STL…", [-1,-1], [-1,-1], wxBU_LEFT);
 | 
			
		||||
    
 | 
			
		||||
    if (&Wx::wxVERSION_STRING =~ / 2\.9\.[1-9]/) {
 | 
			
		||||
        my %icons = qw(
 | 
			
		||||
| 
						 | 
				
			
			@ -104,7 +102,7 @@ sub new {
 | 
			
		|||
            split           shape_ungroup.png
 | 
			
		||||
        );
 | 
			
		||||
        for (grep $self->{"btn_$_"}, keys %icons) {
 | 
			
		||||
            $self->{"btn_$_"}->SetBitmap(Wx::Bitmap->new("$Slic3r::var/$icons{$_}", &Wx::wxBITMAP_TYPE_PNG));
 | 
			
		||||
            $self->{"btn_$_"}->SetBitmap(Wx::Bitmap->new("$Slic3r::var/$icons{$_}", wxBITMAP_TYPE_PNG));
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    $self->selection_changed(0);
 | 
			
		||||
| 
						 | 
				
			
			@ -190,7 +188,7 @@ sub new {
 | 
			
		|||
        my $vertical_sizer = Wx::BoxSizer->new(wxVERTICAL);
 | 
			
		||||
        $vertical_sizer->Add($self->{htoolbar}, 0, wxEXPAND, 0) if $self->{htoolbar};
 | 
			
		||||
        $vertical_sizer->Add($self->{btoolbar}, 0, wxEXPAND, 0) if $self->{btoolbar};
 | 
			
		||||
        $vertical_sizer->Add($list_sizer, 0, wxEXPAND | &Wx::wxBOTTOM, 10);
 | 
			
		||||
        $vertical_sizer->Add($list_sizer, 0, wxEXPAND | wxBOTTOM, 10);
 | 
			
		||||
        $vertical_sizer->Add($buttons, 0, wxEXPAND);
 | 
			
		||||
        
 | 
			
		||||
        my $hsizer = Wx::BoxSizer->new(wxHORIZONTAL);
 | 
			
		||||
| 
						 | 
				
			
			@ -225,7 +223,7 @@ sub load {
 | 
			
		|||
    my $self = shift;
 | 
			
		||||
    
 | 
			
		||||
    my $dir = $Slic3r::GUI::SkeinPanel::last_skein_dir || $Slic3r::GUI::SkeinPanel::last_config_dir || "";
 | 
			
		||||
    my $dialog = Wx::FileDialog->new($self, 'Choose one or more files (STL/OBJ/AMF):', $dir, "", $Slic3r::GUI::SkeinPanel::model_wildcard, wxFD_OPEN | &Wx::wxFD_MULTIPLE | &Wx::wxFD_FILE_MUST_EXIST);
 | 
			
		||||
    my $dialog = Wx::FileDialog->new($self, 'Choose one or more files (STL/OBJ/AMF):', $dir, "", $Slic3r::GUI::SkeinPanel::model_wildcard, wxFD_OPEN | wxFD_MULTIPLE | wxFD_FILE_MUST_EXIST);
 | 
			
		||||
    if ($dialog->ShowModal != wxID_OK) {
 | 
			
		||||
        $dialog->Destroy;
 | 
			
		||||
        return;
 | 
			
		||||
| 
						 | 
				
			
			@ -443,7 +441,7 @@ sub export_gcode {
 | 
			
		|||
    my $self = shift;
 | 
			
		||||
    
 | 
			
		||||
    if ($self->{export_thread}) {
 | 
			
		||||
        Wx::MessageDialog->new($self, "Another slicing job is currently running.", 'Error', wxOK | &Wx::wxICON_ERROR)->ShowModal;
 | 
			
		||||
        Wx::MessageDialog->new($self, "Another slicing job is currently running.", 'Error', wxOK | wxICON_ERROR)->ShowModal;
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
| 
						 | 
				
			
			@ -579,7 +577,7 @@ sub export_stl {
 | 
			
		|||
        $output_file = $print->expanded_output_filepath($output_file);
 | 
			
		||||
        $output_file =~ s/\.gcode$/.stl/i;
 | 
			
		||||
        my $dlg = Wx::FileDialog->new($self, 'Save STL file as:', dirname($output_file),
 | 
			
		||||
            basename($output_file), $Slic3r::GUI::SkeinPanel::model_wildcard, wxFD_SAVE | &Wx::wxFD_OVERWRITE_PROMPT);
 | 
			
		||||
            basename($output_file), $Slic3r::GUI::SkeinPanel::model_wildcard, wxFD_SAVE | wxFD_OVERWRITE_PROMPT);
 | 
			
		||||
        if ($dlg->ShowModal != wxID_OK) {
 | 
			
		||||
            $dlg->Destroy;
 | 
			
		||||
            return;
 | 
			
		||||
| 
						 | 
				
			
			@ -692,12 +690,12 @@ sub repaint {
 | 
			
		|||
        $dc->DrawLine(0, $size[Y]/2, $size[X], $size[Y]/2);
 | 
			
		||||
        $dc->SetTextForeground(Wx::Colour->new(0,0,0));
 | 
			
		||||
        $dc->SetFont(Wx::Font->new(10, wxDEFAULT, wxNORMAL, wxNORMAL));
 | 
			
		||||
        $dc->DrawLabel("X = " . $Slic3r::print_center->[X], Wx::Rect->new(0, 0, $self->GetSize->GetWidth, $self->GetSize->GetHeight), &Wx::wxALIGN_CENTER_HORIZONTAL | &Wx::wxALIGN_BOTTOM);
 | 
			
		||||
        $dc->DrawLabel("X = " . $Slic3r::print_center->[X], Wx::Rect->new(0, 0, $self->GetSize->GetWidth, $self->GetSize->GetHeight), wxALIGN_CENTER_HORIZONTAL | wxALIGN_BOTTOM);
 | 
			
		||||
        $dc->DrawRotatedText("Y = " . $Slic3r::print_center->[Y], 0, $size[Y]/2+15, 90);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    # draw frame
 | 
			
		||||
    $dc->SetPen(Wx::wxBLACK_PEN);
 | 
			
		||||
    $dc->SetPen(wxBLACK_PEN);
 | 
			
		||||
    $dc->SetBrush($parent->{transparent_brush});
 | 
			
		||||
    $dc->DrawRectangle(0, 0, @size);
 | 
			
		||||
    
 | 
			
		||||
| 
						 | 
				
			
			@ -705,11 +703,11 @@ sub repaint {
 | 
			
		|||
    if (!@{$print->objects}) {
 | 
			
		||||
        $dc->SetTextForeground(Wx::Colour->new(150,50,50));
 | 
			
		||||
        $dc->SetFont(Wx::Font->new(14, wxDEFAULT, wxNORMAL, wxNORMAL));
 | 
			
		||||
        $dc->DrawLabel("Drag your objects here", Wx::Rect->new(0, 0, $self->GetSize->GetWidth, $self->GetSize->GetHeight), &Wx::wxALIGN_CENTER_HORIZONTAL | &Wx::wxALIGN_CENTER_VERTICAL);
 | 
			
		||||
        $dc->DrawLabel("Drag your objects here", Wx::Rect->new(0, 0, $self->GetSize->GetWidth, $self->GetSize->GetHeight), wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    # draw thumbnails
 | 
			
		||||
    $dc->SetPen(Wx::wxBLACK_PEN);
 | 
			
		||||
    $dc->SetPen(wxBLACK_PEN);
 | 
			
		||||
    @{$parent->{object_previews}} = ();
 | 
			
		||||
    for my $obj_idx (0 .. $#{$print->objects}) {
 | 
			
		||||
        next unless $parent->{thumbnails}[$obj_idx];
 | 
			
		||||
| 
						 | 
				
			
			@ -852,7 +850,6 @@ sub _y {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
package Slic3r::GUI::Plater::DropTarget;
 | 
			
		||||
 | 
			
		||||
use Wx::DND;
 | 
			
		||||
use base 'Wx::FileDropTarget';
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,8 +5,7 @@ use utf8;
 | 
			
		|||
 | 
			
		||||
use File::Basename qw(basename dirname);
 | 
			
		||||
use Slic3r::Geometry qw(X Y);
 | 
			
		||||
use Wx qw(:sizer :progressdialog wxOK wxICON_INFORMATION wxICON_WARNING wxICON_ERROR wxICON_QUESTION
 | 
			
		||||
    wxOK wxCANCEL wxID_OK wxFD_OPEN wxFD_SAVE wxDEFAULT wxNORMAL);
 | 
			
		||||
use Wx qw(:dialog :filedialog :font :icon :id :misc :notebook :sizer);
 | 
			
		||||
use Wx::Event qw(EVT_BUTTON);
 | 
			
		||||
use base 'Wx::Panel';
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -21,7 +20,7 @@ sub new {
 | 
			
		|||
    my ($parent) = @_;
 | 
			
		||||
    my $self = $class->SUPER::new($parent, -1);
 | 
			
		||||
    
 | 
			
		||||
    my $tabpanel = Wx::Notebook->new($self, -1, Wx::wxDefaultPosition, Wx::wxDefaultSize, &Wx::wxNB_TOP);
 | 
			
		||||
    my $tabpanel = Wx::Notebook->new($self, -1, wxDefaultPosition, wxDefaultSize, wxNB_TOP);
 | 
			
		||||
    $tabpanel->AddPage($self->{plater} = Slic3r::GUI::Plater->new($tabpanel), "Plater");
 | 
			
		||||
    $self->{options_tabs} = {
 | 
			
		||||
        print       => Slic3r::GUI::Tab::Print->new     ($tabpanel, sync_presets_with => $self->{plater}{preset_choosers}{print}),
 | 
			
		||||
| 
						 | 
				
			
			@ -49,7 +48,7 @@ sub new {
 | 
			
		|||
        $buttons_sizer->Add($load_button, 0, wxRIGHT, 5);
 | 
			
		||||
        EVT_BUTTON($self, $load_button, sub { $self->load_config });
 | 
			
		||||
        
 | 
			
		||||
        my $text = Wx::StaticText->new($self, -1, "Remember to check for updates at http://slic3r.org/\nVersion: $Slic3r::VERSION", Wx::wxDefaultPosition, Wx::wxDefaultSize, wxALIGN_RIGHT);
 | 
			
		||||
        my $text = Wx::StaticText->new($self, -1, "Remember to check for updates at http://slic3r.org/\nVersion: $Slic3r::VERSION", wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT);
 | 
			
		||||
        my $font = Wx::Font->new(10, wxDEFAULT, wxNORMAL, wxNORMAL);
 | 
			
		||||
        $text->SetFont($font);
 | 
			
		||||
        $buttons_sizer->Add($text, 1, wxEXPAND | wxALIGN_RIGHT);
 | 
			
		||||
| 
						 | 
				
			
			@ -94,7 +93,7 @@ sub do_slice {
 | 
			
		|||
 | 
			
		||||
        my $input_file;
 | 
			
		||||
        if (!$params{reslice}) {
 | 
			
		||||
            my $dialog = Wx::FileDialog->new($self, 'Choose a file to slice (STL/OBJ/AMF):', $dir, "", $model_wildcard, wxFD_OPEN | &Wx::wxFD_FILE_MUST_EXIST);
 | 
			
		||||
            my $dialog = Wx::FileDialog->new($self, 'Choose a file to slice (STL/OBJ/AMF):', $dir, "", $model_wildcard, wxFD_OPEN | wxFD_FILE_MUST_EXIST);
 | 
			
		||||
            if ($dialog->ShowModal != wxID_OK) {
 | 
			
		||||
                $dialog->Destroy;
 | 
			
		||||
                return;
 | 
			
		||||
| 
						 | 
				
			
			@ -192,7 +191,7 @@ sub save_config {
 | 
			
		|||
    my $dir = $last_config ? dirname($last_config) : $last_config_dir || $last_skein_dir || "";
 | 
			
		||||
    my $filename = $last_config ? basename($last_config) : "config.ini";
 | 
			
		||||
    my $dlg = Wx::FileDialog->new($self, 'Save configuration as:', $dir, $filename, 
 | 
			
		||||
        $ini_wildcard, wxFD_SAVE | &Wx::wxFD_OVERWRITE_PROMPT);
 | 
			
		||||
        $ini_wildcard, wxFD_SAVE | wxFD_OVERWRITE_PROMPT);
 | 
			
		||||
    if ($dlg->ShowModal == wxID_OK) {
 | 
			
		||||
        my $file = $dlg->GetPath;
 | 
			
		||||
        $last_config_dir = dirname($file);
 | 
			
		||||
| 
						 | 
				
			
			@ -207,7 +206,7 @@ sub load_config {
 | 
			
		|||
    
 | 
			
		||||
    my $dir = $last_config ? dirname($last_config) : $last_config_dir || $last_skein_dir || "";
 | 
			
		||||
    my $dlg = Wx::FileDialog->new($self, 'Select configuration to load:', $dir, "config.ini", 
 | 
			
		||||
        $ini_wildcard, wxFD_OPEN | &Wx::wxFD_FILE_MUST_EXIST);
 | 
			
		||||
        $ini_wildcard, wxFD_OPEN | wxFD_FILE_MUST_EXIST);
 | 
			
		||||
    if ($dlg->ShowModal == wxID_OK) {
 | 
			
		||||
        my ($file) = $dlg->GetPaths;
 | 
			
		||||
        $last_config_dir = dirname($file);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,14 +5,14 @@ use utf8;
 | 
			
		|||
 | 
			
		||||
use File::Basename qw(basename);
 | 
			
		||||
use List::Util qw(first);
 | 
			
		||||
use Wx qw(:sizer :progressdialog);
 | 
			
		||||
use Wx::Event qw(EVT_TREE_SEL_CHANGED EVT_CHOICE EVT_BUTTON);
 | 
			
		||||
use Wx qw(:bookctrl :dialog :icon :id :sizer :treectrl);
 | 
			
		||||
use Wx::Event qw(EVT_BUTTON EVT_CHOICE EVT_TREE_SEL_CHANGED);
 | 
			
		||||
use base 'Wx::Panel';
 | 
			
		||||
 | 
			
		||||
sub new {
 | 
			
		||||
    my $class = shift;
 | 
			
		||||
    my ($parent, $title, %params) = @_;
 | 
			
		||||
    my $self = $class->SUPER::new($parent, -1, [-1,-1], [-1,-1], &Wx::wxBK_LEFT);
 | 
			
		||||
    my $self = $class->SUPER::new($parent, -1, [-1,-1], [-1,-1], wxBK_LEFT);
 | 
			
		||||
    
 | 
			
		||||
    $self->{title} = $title;
 | 
			
		||||
    
 | 
			
		||||
| 
						 | 
				
			
			@ -23,13 +23,13 @@ sub new {
 | 
			
		|||
    });
 | 
			
		||||
    
 | 
			
		||||
    # horizontal sizer
 | 
			
		||||
    $self->{sizer} = Wx::BoxSizer->new(&Wx::wxHORIZONTAL);
 | 
			
		||||
    $self->{sizer} = Wx::BoxSizer->new(wxHORIZONTAL);
 | 
			
		||||
    $self->{sizer}->SetSizeHints($self);
 | 
			
		||||
    $self->SetSizer($self->{sizer});
 | 
			
		||||
    
 | 
			
		||||
    # left vertical sizer
 | 
			
		||||
    my $left_sizer = Wx::BoxSizer->new(&Wx::wxVERTICAL);
 | 
			
		||||
    $self->{sizer}->Add($left_sizer, 0, &Wx::wxEXPAND);
 | 
			
		||||
    my $left_sizer = Wx::BoxSizer->new(wxVERTICAL);
 | 
			
		||||
    $self->{sizer}->Add($left_sizer, 0, wxEXPAND);
 | 
			
		||||
    
 | 
			
		||||
    my $left_col_width = 200;
 | 
			
		||||
    
 | 
			
		||||
| 
						 | 
				
			
			@ -41,27 +41,27 @@ sub new {
 | 
			
		|||
        $self->{presets_choice}->SetFont($Slic3r::GUI::small_font);
 | 
			
		||||
        
 | 
			
		||||
        # buttons
 | 
			
		||||
        $self->{btn_save_preset} = Wx::BitmapButton->new($self, -1, Wx::Bitmap->new("$Slic3r::var/disk.png", &Wx::wxBITMAP_TYPE_PNG));
 | 
			
		||||
        $self->{btn_delete_preset} = Wx::BitmapButton->new($self, -1, Wx::Bitmap->new("$Slic3r::var/delete.png", &Wx::wxBITMAP_TYPE_PNG));
 | 
			
		||||
        $self->{btn_save_preset} = Wx::BitmapButton->new($self, -1, Wx::Bitmap->new("$Slic3r::var/disk.png", wxBITMAP_TYPE_PNG));
 | 
			
		||||
        $self->{btn_delete_preset} = Wx::BitmapButton->new($self, -1, Wx::Bitmap->new("$Slic3r::var/delete.png", wxBITMAP_TYPE_PNG));
 | 
			
		||||
        $self->{btn_save_preset}->SetToolTipString("Save current " . lc($title));
 | 
			
		||||
        $self->{btn_delete_preset}->SetToolTipString("Delete this preset");
 | 
			
		||||
        $self->{btn_delete_preset}->Disable;
 | 
			
		||||
        
 | 
			
		||||
        ### These cause GTK warnings:
 | 
			
		||||
        ###my $box = Wx::StaticBox->new($self, -1, "Presets:", [-1, -1], [$left_col_width, 50]);
 | 
			
		||||
        ###my $hsizer = Wx::StaticBoxSizer->new($box, &Wx::wxHORIZONTAL);
 | 
			
		||||
        ###my $hsizer = Wx::StaticBoxSizer->new($box, wxHORIZONTAL);
 | 
			
		||||
        
 | 
			
		||||
        my $hsizer = Wx::BoxSizer->new(&Wx::wxHORIZONTAL);
 | 
			
		||||
        my $hsizer = Wx::BoxSizer->new(wxHORIZONTAL);
 | 
			
		||||
        
 | 
			
		||||
        $left_sizer->Add($hsizer, 0, &Wx::wxEXPAND | &Wx::wxBOTTOM, 5);
 | 
			
		||||
        $hsizer->Add($self->{presets_choice}, 1, &Wx::wxRIGHT | &Wx::wxALIGN_CENTER_VERTICAL, 3);
 | 
			
		||||
        $hsizer->Add($self->{btn_save_preset}, 0, &Wx::wxALIGN_CENTER_VERTICAL);
 | 
			
		||||
        $hsizer->Add($self->{btn_delete_preset}, 0, &Wx::wxALIGN_CENTER_VERTICAL);
 | 
			
		||||
        $left_sizer->Add($hsizer, 0, wxEXPAND | wxBOTTOM, 5);
 | 
			
		||||
        $hsizer->Add($self->{presets_choice}, 1, wxRIGHT | wxALIGN_CENTER_VERTICAL, 3);
 | 
			
		||||
        $hsizer->Add($self->{btn_save_preset}, 0, wxALIGN_CENTER_VERTICAL);
 | 
			
		||||
        $hsizer->Add($self->{btn_delete_preset}, 0, wxALIGN_CENTER_VERTICAL);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    # tree
 | 
			
		||||
    $self->{treectrl} = Wx::TreeCtrl->new($self, -1, [-1, -1], [$left_col_width, -1], &Wx::wxTR_NO_BUTTONS | &Wx::wxTR_HIDE_ROOT | &Wx::wxTR_SINGLE | &Wx::wxTR_NO_LINES);
 | 
			
		||||
    $left_sizer->Add($self->{treectrl}, 1, &Wx::wxEXPAND);
 | 
			
		||||
    $self->{treectrl} = Wx::TreeCtrl->new($self, -1, [-1, -1], [$left_col_width, -1], wxTR_NO_BUTTONS | wxTR_HIDE_ROOT | wxTR_SINGLE | wxTR_NO_LINES);
 | 
			
		||||
    $left_sizer->Add($self->{treectrl}, 1, wxEXPAND);
 | 
			
		||||
    $self->{icons} = Wx::ImageList->new(16, 16, 1);
 | 
			
		||||
    $self->{treectrl}->AssignImageList($self->{icons});
 | 
			
		||||
    $self->{iconcount} = -1;
 | 
			
		||||
| 
						 | 
				
			
			@ -73,7 +73,7 @@ sub new {
 | 
			
		|||
        $self->{sizer}->Remove(1);
 | 
			
		||||
        my $page = $self->{pages}->{ $self->{treectrl}->GetItemText($self->{treectrl}->GetSelection) };
 | 
			
		||||
        $page->Show;
 | 
			
		||||
        $self->{sizer}->Add($page, 1, &Wx::wxEXPAND | &Wx::wxLEFT, 5);
 | 
			
		||||
        $self->{sizer}->Add($page, 1, wxEXPAND | wxLEFT, 5);
 | 
			
		||||
        $self->{sizer}->Layout;
 | 
			
		||||
    });
 | 
			
		||||
    
 | 
			
		||||
| 
						 | 
				
			
			@ -92,7 +92,7 @@ sub new {
 | 
			
		|||
            default => $default,
 | 
			
		||||
            values  => [ map { my $filename = basename($_); $filename =~ /^(.*?)\.ini$/i; $1 } @{$self->{presets}} ],
 | 
			
		||||
        );
 | 
			
		||||
        return unless $dlg->ShowModal == &Wx::wxID_OK;
 | 
			
		||||
        return unless $dlg->ShowModal == wxID_OK;
 | 
			
		||||
        
 | 
			
		||||
        my $file = sprintf "$Slic3r::GUI::datadir/$self->{presets_group}/%s.ini", $dlg->get_name;
 | 
			
		||||
        Slic3r::Config->save($file, $self->{presets_group});
 | 
			
		||||
| 
						 | 
				
			
			@ -106,8 +106,8 @@ sub new {
 | 
			
		|||
    EVT_BUTTON($self, $self->{btn_delete_preset}, sub {
 | 
			
		||||
        my $i = $self->{presets_choice}->GetSelection;
 | 
			
		||||
        return if $i == 0;  # this shouldn't happen but let's trap it anyway
 | 
			
		||||
        my $res = Wx::MessageDialog->new($self, "Are you sure you want to delete the selected preset?", 'Delete Preset', &Wx::wxYES_NO | &Wx::wxNO_DEFAULT | &Wx::wxICON_QUESTION)->ShowModal;
 | 
			
		||||
        return unless $res == &Wx::wxID_YES;
 | 
			
		||||
        my $res = Wx::MessageDialog->new($self, "Are you sure you want to delete the selected preset?", 'Delete Preset', wxYES_NO | wxNO_DEFAULT | wxICON_QUESTION)->ShowModal;
 | 
			
		||||
        return unless $res == wxID_YES;
 | 
			
		||||
        if (-e $self->{presets}[$i-1]) {
 | 
			
		||||
            unlink $self->{presets}[$i-1];
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -159,7 +159,7 @@ sub add_options_page {
 | 
			
		|||
    });
 | 
			
		||||
    
 | 
			
		||||
    my $bitmap = $icon
 | 
			
		||||
        ? Wx::Bitmap->new("$Slic3r::var/$icon", &Wx::wxBITMAP_TYPE_PNG)
 | 
			
		||||
        ? Wx::Bitmap->new("$Slic3r::var/$icon", wxBITMAP_TYPE_PNG)
 | 
			
		||||
        : undef;
 | 
			
		||||
    if ($bitmap) {
 | 
			
		||||
        $self->{icons}->Add($bitmap);
 | 
			
		||||
| 
						 | 
				
			
			@ -260,8 +260,6 @@ sub sync_presets {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
package Slic3r::GUI::Tab::Print;
 | 
			
		||||
use Wx qw(:sizer :progressdialog);
 | 
			
		||||
use Wx::Event qw();
 | 
			
		||||
use base 'Slic3r::GUI::Tab';
 | 
			
		||||
 | 
			
		||||
sub new {
 | 
			
		||||
| 
						 | 
				
			
			@ -366,8 +364,6 @@ sub new {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
package Slic3r::GUI::Tab::Filament;
 | 
			
		||||
use Wx qw(:sizer :progressdialog);
 | 
			
		||||
use Wx::Event qw();
 | 
			
		||||
use base 'Slic3r::GUI::Tab';
 | 
			
		||||
 | 
			
		||||
sub new {
 | 
			
		||||
| 
						 | 
				
			
			@ -408,8 +404,6 @@ sub new {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
package Slic3r::GUI::Tab::Printer;
 | 
			
		||||
use Wx qw(:sizer :progressdialog);
 | 
			
		||||
use Wx::Event qw();
 | 
			
		||||
use base 'Slic3r::GUI::Tab';
 | 
			
		||||
 | 
			
		||||
sub new {
 | 
			
		||||
| 
						 | 
				
			
			@ -463,8 +457,7 @@ sub new {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
package Slic3r::GUI::Tab::Page;
 | 
			
		||||
use Wx qw(:sizer :progressdialog);
 | 
			
		||||
use Wx::Event qw();
 | 
			
		||||
use Wx qw(:sizer);
 | 
			
		||||
use base 'Wx::ScrolledWindow';
 | 
			
		||||
 | 
			
		||||
sub new {
 | 
			
		||||
| 
						 | 
				
			
			@ -474,7 +467,7 @@ sub new {
 | 
			
		|||
    
 | 
			
		||||
    $self->SetScrollbars(1, 1, 1, 1);
 | 
			
		||||
    
 | 
			
		||||
    $self->{vsizer} = Wx::BoxSizer->new(&Wx::wxVERTICAL);
 | 
			
		||||
    $self->{vsizer} = Wx::BoxSizer->new(wxVERTICAL);
 | 
			
		||||
    $self->SetSizer($self->{vsizer});
 | 
			
		||||
    
 | 
			
		||||
    if ($params{optgroups}) {
 | 
			
		||||
| 
						 | 
				
			
			@ -492,7 +485,7 @@ sub append_optgroup {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
package Slic3r::GUI::SavePresetWindow;
 | 
			
		||||
use Wx qw(:sizer);
 | 
			
		||||
use Wx qw(:combobox :dialog :id :sizer);
 | 
			
		||||
use Wx::Event qw(EVT_BUTTON EVT_TEXT_ENTER);
 | 
			
		||||
use base 'Wx::Dialog';
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -503,15 +496,15 @@ sub new {
 | 
			
		|||
    
 | 
			
		||||
    my $text = Wx::StaticText->new($self, -1, "Save " . lc($params{title}) . " as:", [-1, -1], [-1, -1]);
 | 
			
		||||
    $self->{combo} = Wx::ComboBox->new($self, -1, $params{default}, [-1, -1], [-1, -1], $params{values},
 | 
			
		||||
                                       &Wx::wxTE_PROCESS_ENTER);
 | 
			
		||||
    my $buttons = $self->CreateStdDialogButtonSizer(&Wx::wxOK | &Wx::wxCANCEL);
 | 
			
		||||
                                       wxTE_PROCESS_ENTER);
 | 
			
		||||
    my $buttons = $self->CreateStdDialogButtonSizer(wxOK | wxCANCEL);
 | 
			
		||||
    
 | 
			
		||||
    my $sizer = Wx::BoxSizer->new(wxVERTICAL);
 | 
			
		||||
    $sizer->Add($text, 0, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, 10);
 | 
			
		||||
    $sizer->Add($self->{combo}, 0, wxEXPAND | wxLEFT | wxRIGHT, 10);
 | 
			
		||||
    $sizer->Add($buttons, 0, wxEXPAND | wxBOTTOM | wxLEFT | wxRIGHT, 10);
 | 
			
		||||
    
 | 
			
		||||
    EVT_BUTTON($self, &Wx::wxID_OK, \&accept);
 | 
			
		||||
    EVT_BUTTON($self, wxID_OK, \&accept);
 | 
			
		||||
    EVT_TEXT_ENTER($self, $self->{combo}, \&accept);
 | 
			
		||||
    
 | 
			
		||||
    $self->SetSizer($sizer);
 | 
			
		||||
| 
						 | 
				
			
			@ -524,7 +517,7 @@ sub accept {
 | 
			
		|||
    my ($self, $event) = @_;
 | 
			
		||||
 | 
			
		||||
    if (($self->{chosen_name} = $self->{combo}->GetValue) && $self->{chosen_name} =~ /^[a-z0-9 _-]+$/i) {
 | 
			
		||||
        $self->EndModal(&Wx::wxID_OK);
 | 
			
		||||
        $self->EndModal(wxID_OK);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue