From e3b4a7b206df9e545bc0ba7894e58dfe3fa80d09 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Wed, 24 Oct 2018 12:57:23 +0200 Subject: [PATCH] Fixed incorrect m_wiping_dialog_button showing after appInit --- src/slic3r/GUI/GUI_App.cpp | 8 ++++---- src/slic3r/GUI/GUI_App.hpp | 1 + src/slic3r/GUI/MainFrame.cpp | 16 +--------------- src/slic3r/GUI/Plater.cpp | 13 ++++++++++++- src/slic3r/GUI/Tab.cpp | 10 ++++------ 5 files changed, 22 insertions(+), 26 deletions(-) diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index c1683bba3..cabb57428 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -653,7 +653,7 @@ void GUI_App::load_current_presets() Sidebar& GUI_App::sidebar() { - return mainframe->m_plater->sidebar(); + return plater_->sidebar(); } ObjectManipulation* GUI_App::obj_manipul() @@ -668,17 +668,17 @@ ObjectList* GUI_App::obj_list() Plater* GUI_App::plater() { - return mainframe->m_plater; + return plater_; } wxGLCanvas* GUI_App::canvas3D() { - return mainframe->m_plater->canvas3D(); + return plater_->canvas3D(); } ModelObjectPtrs* GUI_App::model_objects() { - return &mainframe->m_plater->model().objects; + return &plater_->model().objects; } wxNotebook* GUI_App::tab_panel() const diff --git a/src/slic3r/GUI/GUI_App.hpp b/src/slic3r/GUI/GUI_App.hpp index 52d582690..dcb3685d1 100644 --- a/src/slic3r/GUI/GUI_App.hpp +++ b/src/slic3r/GUI/GUI_App.hpp @@ -139,6 +139,7 @@ public: PresetBundle* preset_bundle{ nullptr }; PresetUpdater* preset_updater{ nullptr }; MainFrame* mainframe{ nullptr }; + Plater* plater_{ nullptr }; wxNotebook* tab_panel() const ; diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 8dd8ac3e2..c15532d70 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -139,6 +139,7 @@ void MainFrame::init_tabpanel() if (!m_no_plater) { m_plater = new Slic3r::GUI::Plater(m_tabpanel, this); + wxGetApp().plater_ = m_plater; m_tabpanel->AddPage(m_plater, _(L("Plater"))); } @@ -149,18 +150,6 @@ void MainFrame::init_tabpanel() // or when the preset's "modified" status changes. Bind(EVT_TAB_PRESETS_CHANGED, &MainFrame::on_presets_changed, this); - - // The following event is emited by the C++ Tab implementation on object selection change. -// EVT_COMMAND($self, -1, $OBJECT_SELECTION_CHANGED_EVENT, sub { -// auto obj_idx = event->GetId(); -// // my $child = $event->GetInt == 1 ? 1 : undef; -// // $self->{plater}->select_object($obj_idx < 0 ? undef : $obj_idx, $child); -// // $self->{plater}->item_changed_selection($obj_idx); -// -// auto vol_idx = event->GetInt(); -// m_plater->select_object_from_cpp(obj_idx < 0 ? undef : obj_idx, vol_idx < 0 ? -1 : vol_idx); -// }); - create_preset_tabs(); std::vector tab_names = { "print", "filament", "sla_material", "printer" }; for (auto tab_name : tab_names) @@ -225,9 +214,6 @@ void MainFrame::add_created_tab(Tab* panel) { panel->create_preset_tab(); - // Load the currently selected preset into the GUI, update the preset selection box. - panel->load_current_preset(); - const wxString& tab_name = panel->GetName(); bool add_panel = true; diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 5c5522909..2de1cfbf1 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -244,6 +244,7 @@ public: ~FreqChangedParams() {} wxButton* get_wiping_dialog_button() { return m_wiping_dialog_button; } + void Show(const bool show); }; FreqChangedParams::FreqChangedParams(wxWindow* parent, const int label_width) : @@ -368,6 +369,16 @@ FreqChangedParams::FreqChangedParams(wxWindow* parent, const int label_width) : } +void FreqChangedParams::Show(const bool show) +{ + bool is_wdb_shown = m_wiping_dialog_button->IsShown(); + m_og->sizer->Show(show); + + // correct showing of the FreqChangedParams sizer when m_wiping_dialog_button is hidden + if (show && !is_wdb_shown) + m_wiping_dialog_button->Hide(); +} + // Sidebar / private struct Sidebar::priv @@ -416,7 +427,7 @@ void Sidebar::priv::show_preset_comboboxes() sizer_presets->Show(4, showSLA); sizer_presets->Show(5, showSLA); - frequently_changed_parameters->get_sizer()->Show(!showSLA); + frequently_changed_parameters->Show(!showSLA); wxGetApp().plater()->Layout(); wxGetApp().mainframe->Layout(); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 1897b4779..000270e13 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -215,7 +215,9 @@ void Tab::create_preset_tab() // Initialize the DynamicPrintConfig by default keys/values. build(); rebuild_page_tree(); - update(); +// update(); + // Load the currently selected preset into the GUI, update the preset selection box. + load_current_preset(); } void Tab::load_initial_data() @@ -740,9 +742,7 @@ void Tab::update_wiping_button_visibility() { bool multiple_extruders = dynamic_cast((m_preset_bundle->printers.get_edited_preset().config).option("nozzle_diameter"))->values.size() > 1; bool single_extruder_mm = dynamic_cast( (m_preset_bundle->printers.get_edited_preset().config).option("single_extruder_multi_material"))->value; - if (!wxGetApp().mainframe) - return; - auto wiping_dialog_button = wxGetApp().mainframe->m_plater->sidebar().get_wiping_dialog_button(); + auto wiping_dialog_button = wxGetApp().sidebar().get_wiping_dialog_button(); if (wiping_dialog_button) { wiping_dialog_button->Show(wipe_tower_enabled && multiple_extruders && single_extruder_mm); wiping_dialog_button->GetParent()->Layout(); @@ -1862,8 +1862,6 @@ void TabPrinter::extruders_count_changed(size_t extruders_count){ m_preset_bundle->update_multi_material_filament_presets(); build_extruder_pages(); reload_config(); - if (!wxGetApp().mainframe) - return; on_value_change("extruders_count", extruders_count); wxGetApp().sidebar().update_objects_list_extruder_column(extruders_count); }