Fixed recreate_GUI() after language change.

This commit is contained in:
YuSanka 2018-12-19 17:38:41 +01:00
parent 4c55f1ce9e
commit c40b8aba24
4 changed files with 23 additions and 18 deletions

View File

@ -137,7 +137,7 @@ bool GUI_App::OnInit()
std::cerr << "Creating main frame..." << std::endl; std::cerr << "Creating main frame..." << std::endl;
if (wxImage::FindHandler(wxBITMAP_TYPE_PNG) == nullptr) if (wxImage::FindHandler(wxBITMAP_TYPE_PNG) == nullptr)
wxImage::AddHandler(new wxPNGHandler()); wxImage::AddHandler(new wxPNGHandler());
mainframe = new MainFrame(no_plater, false); mainframe = new MainFrame();
sidebar().obj_list()->init_objects(); // propagate model objects to object list sidebar().obj_list()->init_objects(); // propagate model objects to object list
update_mode(); update_mode();
SetTopWindow(mainframe); SetTopWindow(mainframe);
@ -277,8 +277,8 @@ void GUI_App::recreate_GUI()
{ {
std::cerr << "recreate_GUI" << std::endl; std::cerr << "recreate_GUI" << std::endl;
auto topwindow = GetTopWindow(); MainFrame* topwindow = dynamic_cast<MainFrame*>(GetTopWindow());
mainframe = new MainFrame(no_plater,false); mainframe = new MainFrame();
sidebar().obj_list()->init_objects(); // propagate model objects to object list sidebar().obj_list()->init_objects(); // propagate model objects to object list
update_mode(); update_mode();
@ -287,6 +287,20 @@ void GUI_App::recreate_GUI()
topwindow->Destroy(); topwindow->Destroy();
} }
m_printhost_job_queue.reset(new PrintHostJobQueue(mainframe->printhost_queue_dlg()));
CallAfter([this]() {
// temporary workaround for the correct behavior of the Scrolled sidebar panel
auto& panel = sidebar();
if (panel.obj_list()->GetMinHeight() > 200) {
wxWindowUpdateLocker noUpdates_sidebar(&panel);
panel.obj_list()->SetMinSize(wxSize(-1, 200));
panel.Layout();
}
});
mainframe->Show(true);
// On OSX the UI was not initialized correctly if the wizard was called // On OSX the UI was not initialized correctly if the wizard was called
// before the UI was up and running. // before the UI was up and running.
CallAfter([]() { CallAfter([]() {

View File

@ -71,7 +71,6 @@ static wxString dots("…", wxConvUTF8);
class GUI_App : public wxApp class GUI_App : public wxApp
{ {
bool no_plater{ false };
bool app_conf_exists{ false }; bool app_conf_exists{ false };
// Lock to guard the callback stack // Lock to guard the callback stack

View File

@ -28,10 +28,8 @@
namespace Slic3r { namespace Slic3r {
namespace GUI { namespace GUI {
MainFrame::MainFrame(const bool no_plater, const bool loaded) : MainFrame::MainFrame() :
wxFrame(NULL, wxID_ANY, SLIC3R_BUILD, wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE), wxFrame(NULL, wxID_ANY, SLIC3R_BUILD, wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE),
m_no_plater(no_plater),
m_loaded(loaded),
m_printhost_queue_dlg(new PrintHostQueueDialog(this)) m_printhost_queue_dlg(new PrintHostQueueDialog(this))
{ {
// Load the icon either from the exe, or from the ico file. // Load the icon either from the exe, or from the ico file.
@ -125,11 +123,9 @@ void MainFrame::init_tabpanel()
} }
}); });
if (!m_no_plater) { m_plater = new Slic3r::GUI::Plater(m_tabpanel, this);
m_plater = new Slic3r::GUI::Plater(m_tabpanel, this); wxGetApp().plater_ = m_plater;
wxGetApp().plater_ = m_plater; m_tabpanel->AddPage(m_plater, _(L("Plater")));
m_tabpanel->AddPage(m_plater, _(L("Plater")));
}
// The following event is emited by Tab implementation on config value change. // The following event is emited by Tab implementation on config value change.
Bind(EVT_TAB_VALUE_CHANGED, &MainFrame::on_value_changed, this); Bind(EVT_TAB_VALUE_CHANGED, &MainFrame::on_value_changed, this);

View File

@ -42,10 +42,7 @@ struct PresetTab {
class MainFrame : public wxFrame class MainFrame : public wxFrame
{ {
bool m_no_plater; bool m_loaded {false};
bool m_loaded;
int m_lang_ch_event;
int m_preferences_event;
wxString m_qs_last_input_file = wxEmptyString; wxString m_qs_last_input_file = wxEmptyString;
wxString m_qs_last_output_file = wxEmptyString; wxString m_qs_last_output_file = wxEmptyString;
@ -71,8 +68,7 @@ class MainFrame : public wxFrame
bool can_delete_all() const; bool can_delete_all() const;
public: public:
MainFrame() {} MainFrame();
MainFrame(const bool no_plater, const bool loaded);
~MainFrame() {} ~MainFrame() {}
Plater* plater() { return m_plater; } Plater* plater() { return m_plater; }