mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-30 12:11:15 -06:00 
			
		
		
		
	Merge branch 'master' of https://github.com/prusa3d/Slic3r into opengl_to_cpp
This commit is contained in:
		
						commit
						32063cbe23
					
				
					 12 changed files with 115 additions and 55 deletions
				
			
		|  | @ -225,7 +225,13 @@ sub new { | |||
|         $self->{btoolbar}->Add($self->{"btn_layer_editing"}); | ||||
|     } | ||||
| 
 | ||||
|     $self->{list} = Wx::ListView->new($self, -1, wxDefaultPosition, wxDefaultSize, | ||||
|     ### Scrolled Window for info boxes | ||||
|     my $scrolled_window_sizer = Wx::BoxSizer->new(wxVERTICAL); | ||||
|     my $scrolled_window_panel = Wx::ScrolledWindow->new($self, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); | ||||
|     $scrolled_window_panel->SetSizer($scrolled_window_sizer); | ||||
|     $scrolled_window_panel->SetScrollbars(1, 1, 1, 1);     | ||||
| 
 | ||||
|     $self->{list} = Wx::ListView->new($scrolled_window_panel, -1, wxDefaultPosition, wxDefaultSize, | ||||
|         wxLC_SINGLE_SEL | wxLC_REPORT | wxBORDER_SUNKEN | wxTAB_TRAVERSAL | wxWANTS_CHARS ); | ||||
|     $self->{list}->InsertColumn(0, L("Name"), wxLIST_FORMAT_LEFT, 145); | ||||
|     $self->{list}->InsertColumn(1, L("Copies"), wxLIST_FORMAT_CENTER, 45); | ||||
|  | @ -405,12 +411,12 @@ sub new { | |||
| 
 | ||||
|         my $frequently_changed_parameters_sizer = Wx::BoxSizer->new(wxHORIZONTAL); | ||||
|         Slic3r::GUI::add_frequently_changed_parameters($self, $frequently_changed_parameters_sizer, $presets); | ||||
|          | ||||
| 
 | ||||
|         my $object_info_sizer; | ||||
|         { | ||||
|             my $box = Wx::StaticBox->new($self, -1, L("Info")); | ||||
|             my $box = Wx::StaticBox->new($scrolled_window_panel, -1, L("Info")); | ||||
|             $object_info_sizer = Wx::StaticBoxSizer->new($box, wxVERTICAL); | ||||
|             $object_info_sizer->SetMinSize([350,-1]); | ||||
|             $object_info_sizer->SetMinSize([300,-1]); | ||||
|             my $grid_sizer = Wx::FlexGridSizer->new(3, 4, 5, 5); | ||||
|             $grid_sizer->SetFlexibleDirection(wxHORIZONTAL); | ||||
|             $grid_sizer->AddGrowableCol(1, 1); | ||||
|  | @ -426,14 +432,14 @@ sub new { | |||
|             ); | ||||
|             while (my $field = shift @info) { | ||||
|                 my $label = shift @info; | ||||
|                 my $text = Wx::StaticText->new($self, -1, "$label:", wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT); | ||||
|                 my $text = Wx::StaticText->new($scrolled_window_panel, -1, "$label:", wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT); | ||||
|                 $text->SetFont($Slic3r::GUI::small_font); | ||||
|                 $grid_sizer->Add($text, 0); | ||||
|                  | ||||
|                 $self->{"object_info_$field"} = Wx::StaticText->new($self, -1, "", wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT); | ||||
|                 $self->{"object_info_$field"} = Wx::StaticText->new($scrolled_window_panel, -1, "", wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT); | ||||
|                 $self->{"object_info_$field"}->SetFont($Slic3r::GUI::small_font); | ||||
|                 if ($field eq 'manifold') { | ||||
|                     $self->{object_info_manifold_warning_icon} = Wx::StaticBitmap->new($self, -1, Wx::Bitmap->new(Slic3r::var("error.png"), wxBITMAP_TYPE_PNG)); | ||||
|                     $self->{object_info_manifold_warning_icon} = Wx::StaticBitmap->new($scrolled_window_panel, -1, Wx::Bitmap->new(Slic3r::var("error.png"), wxBITMAP_TYPE_PNG)); | ||||
|                     $self->{object_info_manifold_warning_icon}->Hide; | ||||
|                      | ||||
|                     my $h_sizer = Wx::BoxSizer->new(wxHORIZONTAL); | ||||
|  | @ -448,9 +454,9 @@ sub new { | |||
| 
 | ||||
|         my $print_info_sizer; | ||||
|         { | ||||
|             my $box = Wx::StaticBox->new($self, -1, L("Sliced Info")); | ||||
|             my $box = Wx::StaticBox->new($scrolled_window_panel, -1, L("Sliced Info")); | ||||
|             $print_info_sizer = Wx::StaticBoxSizer->new($box, wxVERTICAL); | ||||
|             $print_info_sizer->SetMinSize([350,-1]); | ||||
|             $print_info_sizer->SetMinSize([300,-1]); | ||||
|             my $grid_sizer = Wx::FlexGridSizer->new(2, 2, 5, 5); | ||||
|             $grid_sizer->SetFlexibleDirection(wxHORIZONTAL); | ||||
|             $grid_sizer->AddGrowableCol(1, 1); | ||||
|  | @ -465,11 +471,11 @@ sub new { | |||
|             ); | ||||
|             while (my $field = shift @info) { | ||||
|                 my $label = shift @info; | ||||
|                 my $text = Wx::StaticText->new($self, -1, "$label:", wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT); | ||||
|                 my $text = Wx::StaticText->new($scrolled_window_panel, -1, "$label:", wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT); | ||||
|                 $text->SetFont($Slic3r::GUI::small_font); | ||||
|                 $grid_sizer->Add($text, 0); | ||||
|                  | ||||
|                 $self->{"print_info_$field"} = Wx::StaticText->new($self, -1, "", wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT); | ||||
|                 $self->{"print_info_$field"} = Wx::StaticText->new($scrolled_window_panel, -1, "", wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT); | ||||
|                 $self->{"print_info_$field"}->SetFont($Slic3r::GUI::small_font); | ||||
|                 $grid_sizer->Add($self->{"print_info_$field"}, 0); | ||||
|             } | ||||
|  | @ -484,18 +490,24 @@ sub new { | |||
|         $buttons_sizer->Add($self->{btn_send_gcode}, 0, wxALIGN_RIGHT, 0); | ||||
|         $buttons_sizer->Add($self->{btn_export_gcode}, 0, wxALIGN_RIGHT, 0); | ||||
|          | ||||
|         $scrolled_window_sizer->Add($self->{list}, 1, wxEXPAND, 5); | ||||
|         $scrolled_window_sizer->Add($object_info_sizer, 0, wxEXPAND, 0); | ||||
|         $scrolled_window_sizer->Add($print_info_sizer, 0, wxEXPAND, 0); | ||||
| 
 | ||||
|         my $right_sizer = Wx::BoxSizer->new(wxVERTICAL); | ||||
|         $right_sizer->Add($presets, 0, wxEXPAND | wxTOP, 10) if defined $presets; | ||||
|         $right_sizer->Add($frequently_changed_parameters_sizer, 0, wxEXPAND | wxTOP, 0) if defined $frequently_changed_parameters_sizer; | ||||
|         $right_sizer->Add($buttons_sizer, 0, wxEXPAND | wxBOTTOM, 5); | ||||
|         $right_sizer->Add($self->{list}, 1, wxEXPAND, 5); | ||||
|         $right_sizer->Add($object_info_sizer, 0, wxEXPAND, 0); | ||||
|         $right_sizer->Add($print_info_sizer, 0, wxEXPAND, 0); | ||||
|         $right_sizer->Add($scrolled_window_panel, 1, wxEXPAND | wxALL, 1); | ||||
|         # Callback for showing / hiding the print info box. | ||||
|         $self->{"print_info_box_show"} = sub { | ||||
|             if ($right_sizer->IsShown(5) != $_[0]) {  | ||||
|                 $right_sizer->Show(5, $_[0]);  | ||||
|                 $self->Layout | ||||
| #            if ($right_sizer->IsShown(5) != $_[0]) {  | ||||
| #                $right_sizer->Show(5, $_[0]);  | ||||
| #                $self->Layout | ||||
| #            } | ||||
|             if ($scrolled_window_sizer->IsShown(2) != $_[0]) {  | ||||
|                 $scrolled_window_sizer->Show(2, $_[0]);  | ||||
|                 $scrolled_window_panel->Layout | ||||
|             } | ||||
|         }; | ||||
|         # Show the box initially, let it be shown after the slicing is finished. | ||||
|  | @ -700,7 +712,7 @@ sub load_files { | |||
|                 . "Instead of considering them as multiple objects, should I consider\n" | ||||
|                 . "this file as a single object having multiple parts?\n"), | ||||
|                 L('Multi-part object detected'), wxICON_WARNING | wxYES | wxNO); | ||||
|             $model->convert_multipart_object if $dialog->ShowModal(scalar(@$nozzle_dmrs)) == wxID_YES; | ||||
|             $model->convert_multipart_object(scalar(@$nozzle_dmrs)) if $dialog->ShowModal() == wxID_YES; | ||||
|         } | ||||
|          | ||||
|         if ($one_by_one) { | ||||
|  | @ -717,7 +729,7 @@ sub load_files { | |||
|             . "Instead of considering them as multiple objects, should I consider\n" | ||||
|             . "these files to represent a single object having multiple parts?\n"), | ||||
|             L('Multi-part object detected'), wxICON_WARNING | wxYES | wxNO); | ||||
|         $new_model->convert_multipart_object if $dialog->ShowModal(scalar(@$nozzle_dmrs)) == wxID_YES; | ||||
|         $new_model->convert_multipart_object(scalar(@$nozzle_dmrs)) if $dialog->ShowModal() == wxID_YES; | ||||
|         push @obj_idx, $self->load_model_objects(@{$new_model->objects}); | ||||
|     } | ||||
| 
 | ||||
|  |  | |||
|  | @ -32,7 +32,7 @@ sub new { | |||
|     $self->{on_instances_moved} = sub {}; | ||||
|     $self->{on_wipe_tower_moved} = sub {}; | ||||
| 
 | ||||
|     $self->{objects_volumes_idxs} = (); | ||||
|     $self->{objects_volumes_idxs} = []; | ||||
|          | ||||
|     $self->on_select(sub { | ||||
|         my ($volume_idx) = @_; | ||||
|  | @ -188,8 +188,8 @@ sub update_volumes_selection { | |||
| 
 | ||||
|     foreach my $obj_idx (0..$#{$self->{model}->objects}) { | ||||
|         if ($self->{objects}[$obj_idx]->selected) { | ||||
|             my @volume_idxs = @{$self->{objects_volumes_idxs}[$obj_idx]}; | ||||
|             $self->select_volume($_) for @volume_idxs; | ||||
|             my $volume_idxs = $self->{objects_volumes_idxs}->[$obj_idx]; | ||||
|             $self->select_volume($_) for @{$volume_idxs}; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -207,7 +207,7 @@ sub reload_scene { | |||
| 
 | ||||
|     $self->{reload_delayed} = 0; | ||||
| 
 | ||||
|     $self->{objects_volumes_idxs} = ();     | ||||
|     $self->{objects_volumes_idxs} = [];     | ||||
|     foreach my $obj_idx (0..$#{$self->{model}->objects}) { | ||||
|         my @volume_idxs = $self->load_object($self->{model}, $self->{print}, $obj_idx); | ||||
|         push(@{$self->{objects_volumes_idxs}}, \@volume_idxs); | ||||
|  |  | |||
|  | @ -58,6 +58,13 @@ sub new { | |||
|         [40,-1], wxALIGN_CENTRE_HORIZONTAL); | ||||
|     $z_label_high->SetFont($Slic3r::GUI::small_font); | ||||
| 
 | ||||
|     my $z_label_low_idx = $self->{z_label_low_idx} = Wx::StaticText->new($self, -1, "", wxDefaultPosition, | ||||
|         [40,-1], wxALIGN_CENTRE_HORIZONTAL); | ||||
|     $z_label_low_idx->SetFont($Slic3r::GUI::small_font); | ||||
|     my $z_label_high_idx = $self->{z_label_high_idx} = Wx::StaticText->new($self, -1, "", wxDefaultPosition, | ||||
|         [40,-1], wxALIGN_CENTRE_HORIZONTAL); | ||||
|     $z_label_high_idx->SetFont($Slic3r::GUI::small_font); | ||||
|          | ||||
|     $self->single_layer(0); | ||||
|     my $checkbox_singlelayer = $self->{checkbox_singlelayer} = Wx::CheckBox->new($self, -1, L("1 Layer")); | ||||
|      | ||||
|  | @ -103,11 +110,13 @@ sub new { | |||
|     my $hsizer = Wx::BoxSizer->new(wxHORIZONTAL); | ||||
|     my $vsizer = Wx::BoxSizer->new(wxVERTICAL); | ||||
|     my $vsizer_outer = Wx::BoxSizer->new(wxVERTICAL); | ||||
|     $vsizer->Add($slider_low, 3, 0, 0); | ||||
|     $vsizer->Add($z_label_low, 0, 0, 0); | ||||
|     $vsizer->Add($slider_low, 3, wxALIGN_CENTER_HORIZONTAL, 0); | ||||
|     $vsizer->Add($z_label_low_idx, 0, wxALIGN_CENTER_HORIZONTAL, 0); | ||||
|     $vsizer->Add($z_label_low, 0, wxALIGN_CENTER_HORIZONTAL, 0); | ||||
|     $hsizer->Add($vsizer, 0, wxEXPAND, 0); | ||||
|     $vsizer = Wx::BoxSizer->new(wxVERTICAL); | ||||
|     $vsizer->Add($slider_high, 3, 0, 0); | ||||
|     $vsizer->Add($slider_high, 3, wxALIGN_CENTER_HORIZONTAL, 0); | ||||
|     $vsizer->Add($z_label_high_idx, 0, wxALIGN_CENTER_HORIZONTAL, 0); | ||||
|     $vsizer->Add($z_label_high, 0, 0, 0); | ||||
|     $hsizer->Add($vsizer, 0, wxEXPAND, 0); | ||||
|     $vsizer_outer->Add($hsizer, 3, wxALIGN_CENTER_HORIZONTAL, 0); | ||||
|  | @ -325,6 +334,8 @@ sub load_print { | |||
|         $self->slider_high->Hide; | ||||
|         $self->{z_label_low}->SetLabel(""); | ||||
|         $self->{z_label_high}->SetLabel(""); | ||||
|         $self->{z_label_low_idx}->SetLabel(""); | ||||
|         $self->{z_label_high_idx}->SetLabel(""); | ||||
|         $self->canvas->reset_legend_texture(); | ||||
|         $self->canvas->Refresh;  # clears canvas | ||||
|         return; | ||||
|  | @ -427,6 +438,10 @@ sub set_z_range | |||
|     return if !$self->enabled; | ||||
|     $self->{z_label_low}->SetLabel(sprintf '%.2f', $z_low); | ||||
|     $self->{z_label_high}->SetLabel(sprintf '%.2f', $z_high); | ||||
|     my $z_idx_low = 1 + $self->slider_low->GetValue; | ||||
|     my $z_idx_high = 1 + $self->slider_high->GetValue; | ||||
|     $self->{z_label_low_idx}->SetLabel(sprintf '%d', $z_idx_low); | ||||
|     $self->{z_label_high_idx}->SetLabel(sprintf '%d', $z_idx_high); | ||||
|     $self->canvas->set_toolpaths_range($z_low - 1e-6, $z_high + 1e-6); | ||||
|     $self->canvas->Refresh if $self->IsShown; | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Enrico Turri
						Enrico Turri