diff --git a/lib/Slic3r/GUI/Plater.pm b/lib/Slic3r/GUI/Plater.pm index ebb561a9e..5a3c1bb9f 100644 --- a/lib/Slic3r/GUI/Plater.pm +++ b/lib/Slic3r/GUI/Plater.pm @@ -442,7 +442,16 @@ sub new { $self->{"object_info_$field"}->SetFont($Slic3r::GUI::small_font); if ($field eq 'manifold') { $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; + #$self->{object_info_manifold_warning_icon}->Hide; + $self->{"object_info_manifold_warning_icon_show"} = sub { + if ($self->{object_info_manifold_warning_icon}->IsShown() != $_[0]) { + Slic3r::GUI::set_show_manifold_warning_icon($_[0]); + return if (wxTheApp->{app_config}->get("view_mode") eq "simple"); + $self->{object_info_manifold_warning_icon}->Show($_[0]); + $self->Layout + } + }; + $self->{"object_info_manifold_warning_icon_show"}->(0); my $h_sizer = Wx::BoxSizer->new(wxHORIZONTAL); $h_sizer->Add($self->{object_info_manifold_warning_icon}, 0); @@ -511,10 +520,7 @@ sub new { # } if ($scrolled_window_sizer->IsShown(2) != $_[0]) { Slic3r::GUI::set_show_print_info($_[0]); - my $mode = wxTheApp->{app_config}->get("view_mode"); - printf $mode."\n"; - return if ($mode eq "simple"); - print "non-simple\n"; + return if (wxTheApp->{app_config}->get("view_mode") eq "simple"); $scrolled_window_sizer->Show(2, $_[0]); $scrolled_window_panel->Layout } @@ -542,7 +548,8 @@ sub new { $self->{btn_export_stl}, $self->{btn_reslice}, $self->{btn_print}, - $self->{btn_send_gcode} ); + $self->{btn_send_gcode}, + $self->{object_info_manifold_warning_icon} ); } # Last correct selected item for each preset @@ -881,6 +888,9 @@ sub remove { $self->select_object(undef); $self->update; $self->schedule_background_process; + + # Hide the slicing results if the current slicing status is no more valid. + $self->{"print_info_box_show"}->(0); } sub reset { @@ -900,6 +910,9 @@ sub reset { $self->select_object(undef); $self->update; + + # Hide the slicing results if the current slicing status is no more valid. + $self->{"print_info_box_show"}->(0); } sub increase { @@ -2017,7 +2030,8 @@ sub selection_changed { $self->{object_info_facets}->SetLabel(sprintf(L('%d (%d shells)'), $model_object->facets_count, $stats->{number_of_parts})); if (my $errors = sum(@$stats{qw(degenerate_facets edges_fixed facets_removed facets_added facets_reversed backwards_edges)})) { $self->{object_info_manifold}->SetLabel(sprintf(L("Auto-repaired (%d errors)"), $errors)); - $self->{object_info_manifold_warning_icon}->Show; + #$self->{object_info_manifold_warning_icon}->Show; + $self->{"object_info_manifold_warning_icon_show"}->(1); # we don't show normals_fixed because we never provide normals # to admesh, so it generates normals for all facets @@ -2027,14 +2041,16 @@ sub selection_changed { $self->{object_info_manifold_warning_icon}->SetToolTipString($message); } else { $self->{object_info_manifold}->SetLabel(L("Yes")); - $self->{object_info_manifold_warning_icon}->Hide; + #$self->{object_info_manifold_warning_icon}->Hide; + $self->{"object_info_manifold_warning_icon_show"}->(0); } } else { $self->{object_info_facets}->SetLabel($object->facets); } } else { $self->{"object_info_$_"}->SetLabel("") for qw(size volume facets materials manifold); - $self->{object_info_manifold_warning_icon}->Hide; + #$self->{object_info_manifold_warning_icon}->Hide; + $self->{"object_info_manifold_warning_icon_show"}->(0); $self->{object_info_manifold}->SetToolTipString(""); } $self->Layout; diff --git a/xs/src/slic3r/GUI/GUI.cpp b/xs/src/slic3r/GUI/GUI.cpp index 09ede75be..abdeb6c72 100644 --- a/xs/src/slic3r/GUI/GUI.cpp +++ b/xs/src/slic3r/GUI/GUI.cpp @@ -210,7 +210,9 @@ wxButton *g_btn_export_stl = nullptr; wxButton *g_btn_reslice = nullptr; wxButton *g_btn_print = nullptr; wxButton *g_btn_send_gcode = nullptr; +wxStaticBitmap *g_manifold_warning_icon = nullptr; bool g_show_print_info = false; +bool g_show_manifold_warning_icon = false; static void init_label_colours() { @@ -274,7 +276,8 @@ void set_preset_updater(PresetUpdater *updater) void set_objects_from_perl( wxWindow* parent, wxBoxSizer *frequently_changed_parameters_sizer, wxBoxSizer *expert_mode_part_sizer, wxBoxSizer *scrolled_window_sizer, wxButton *btn_export_stl, wxButton *btn_reslice, - wxButton *btn_print, wxButton *btn_send_gcode) + wxButton *btn_print, wxButton *btn_send_gcode, + wxStaticBitmap *manifold_warning_icon) { g_plater = parent; g_frequently_changed_parameters_sizer = frequently_changed_parameters_sizer; @@ -284,6 +287,7 @@ void set_objects_from_perl( wxWindow* parent, wxBoxSizer *frequently_changed_par g_btn_reslice = btn_reslice; g_btn_print = btn_print; g_btn_send_gcode = btn_send_gcode; + g_manifold_warning_icon = manifold_warning_icon; } void set_show_print_info(bool show) @@ -291,6 +295,11 @@ void set_show_print_info(bool show) g_show_print_info = show; } +void set_show_manifold_warning_icon(bool show) +{ + g_show_manifold_warning_icon = show; +} + std::vector& get_tabs_list() { return g_tabs_list; @@ -1122,6 +1131,7 @@ void show_scrolled_window_sizer(bool show) g_scrolled_window_sizer->Show(static_cast(0), show); g_scrolled_window_sizer->Show(1, show); g_scrolled_window_sizer->Show(2, show && g_show_print_info); + g_manifold_warning_icon->Show(show && g_show_manifold_warning_icon); } void update_mode() diff --git a/xs/src/slic3r/GUI/GUI.hpp b/xs/src/slic3r/GUI/GUI.hpp index 1cca99319..4fd8b800a 100644 --- a/xs/src/slic3r/GUI/GUI.hpp +++ b/xs/src/slic3r/GUI/GUI.hpp @@ -20,6 +20,7 @@ class wxBoxSizer; class wxFlexGridSizer; class wxButton; class wxFileDialog; +class wxStaticBitmap; namespace Slic3r { @@ -86,8 +87,10 @@ void set_objects_from_perl( wxWindow* parent, wxButton *btn_export_stl, wxButton *btn_reslice, wxButton *btn_print, - wxButton *btn_send_gcode); + wxButton *btn_send_gcode, + wxStaticBitmap *manifold_warning_icon); void set_show_print_info(bool show); +void set_show_manifold_warning_icon(bool show); AppConfig* get_app_config(); wxApp* get_app(); diff --git a/xs/xsp/GUI.xsp b/xs/xsp/GUI.xsp index b402ab656..6dcb4a6ab 100644 --- a/xs/xsp/GUI.xsp +++ b/xs/xsp/GUI.xsp @@ -97,7 +97,8 @@ void set_objects_from_perl( SV *ui_parent, SV *btn_export_stl, SV *btn_reslice, SV *btn_print, - SV *btn_send_gcode) + SV *btn_send_gcode, + SV *manifold_warning_icon) %code%{ Slic3r::GUI::set_objects_from_perl( (wxWindow *)wxPli_sv_2_object(aTHX_ ui_parent, "Wx::Window"), (wxBoxSizer *)wxPli_sv_2_object(aTHX_ frequently_changed_parameters_sizer, "Wx::BoxSizer"), @@ -106,11 +107,15 @@ void set_objects_from_perl( SV *ui_parent, (wxButton *)wxPli_sv_2_object(aTHX_ btn_export_stl, "Wx::Button"), (wxButton *)wxPli_sv_2_object(aTHX_ btn_reslice, "Wx::Button"), (wxButton *)wxPli_sv_2_object(aTHX_ btn_print, "Wx::Button"), - (wxButton *)wxPli_sv_2_object(aTHX_ btn_send_gcode, "Wx::Button")); %}; + (wxButton *)wxPli_sv_2_object(aTHX_ btn_send_gcode, "Wx::Button"), + (wxStaticBitmap *)wxPli_sv_2_object(aTHX_ manifold_warning_icon, "Wx::StaticBitmap")); %}; void set_show_print_info(bool show) %code%{ Slic3r::GUI::set_show_print_info(show); %}; +void set_show_manifold_warning_icon(bool show) + %code%{ Slic3r::GUI::set_show_manifold_warning_icon(show); %}; + std::string fold_utf8_to_ascii(const char *src) %code%{ RETVAL = Slic3r::fold_utf8_to_ascii(src); %};