From a0e6c7a076c2b63eb5027757a8d398a8715152b4 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Thu, 11 Nov 2021 10:30:47 +0100 Subject: [PATCH] Follow up https://github.com/prusa3d/PrusaSlicer/commit/a3f6ce1ac6a37c10e078672215c93bc0d705cab0 --- src/slic3r/GUI/MsgDialog.cpp | 8 ++--- src/slic3r/GUI/MsgDialog.hpp | 2 +- src/slic3r/GUI/PrintHostDialogs.cpp | 16 +++------ src/slic3r/GUI/UpdateDialogs.cpp | 52 +++++++++-------------------- 4 files changed, 25 insertions(+), 53 deletions(-) diff --git a/src/slic3r/GUI/MsgDialog.cpp b/src/slic3r/GUI/MsgDialog.cpp index 1cf522417..961dfb5f3 100644 --- a/src/slic3r/GUI/MsgDialog.cpp +++ b/src/slic3r/GUI/MsgDialog.cpp @@ -63,9 +63,9 @@ MsgDialog::MsgDialog(wxWindow *parent, const wxString &title, const wxString &he SetSizerAndFit(main_sizer); } -void MsgDialog::add_btn(wxWindowID btn_id, bool set_focus /*= false*/) +void MsgDialog::add_btn(wxWindowID btn_id, bool set_focus /*= false*/, const wxString& label/* = wxString()*/) { - wxButton* btn = new wxButton(this, btn_id); + wxButton* btn = new wxButton(this, btn_id, label); if (set_focus) btn->SetFocus(); btn_sizer->Add(btn, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, HORIZ_SPACING); @@ -75,7 +75,7 @@ void MsgDialog::add_btn(wxWindowID btn_id, bool set_focus /*= false*/) void MsgDialog::apply_style(long style) { if (style & wxOK) add_btn(wxID_OK, true); - if (style & wxYES) add_btn(wxID_YES); + if (style & wxYES) add_btn(wxID_YES, true); if (style & wxNO) add_btn(wxID_NO); if (style & wxCANCEL) add_btn(wxID_CANCEL); @@ -118,7 +118,7 @@ static void add_msg_content(wxWindow* parent, wxBoxSizer* content_sizer, wxStrin wxFont font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); wxFont monospace = wxGetApp().code_font(); wxColour text_clr = wxGetApp().get_label_clr_default(); - wxColour bgr_clr = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW); + wxColour bgr_clr = parent->GetBackgroundColour(); //wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW); auto text_clr_str = wxString::Format(wxT("#%02X%02X%02X"), text_clr.Red(), text_clr.Green(), text_clr.Blue()); auto bgr_clr_str = wxString::Format(wxT("#%02X%02X%02X"), bgr_clr.Red(), bgr_clr.Green(), bgr_clr.Blue()); const int font_size = font.GetPointSize(); diff --git a/src/slic3r/GUI/MsgDialog.hpp b/src/slic3r/GUI/MsgDialog.hpp index e49c29b85..b2d0a157b 100644 --- a/src/slic3r/GUI/MsgDialog.hpp +++ b/src/slic3r/GUI/MsgDialog.hpp @@ -43,7 +43,7 @@ protected: MsgDialog(wxWindow *parent, const wxString &title, const wxString &headline, long style = wxOK, wxBitmap bitmap = wxNullBitmap); - void add_btn(wxWindowID btn_id, bool set_focus = false); + void add_btn(wxWindowID btn_id, bool set_focus = false, const wxString& label = wxString()); void apply_style(long style); void finalize(); diff --git a/src/slic3r/GUI/PrintHostDialogs.cpp b/src/slic3r/GUI/PrintHostDialogs.cpp index 4fd45f380..313df2f77 100644 --- a/src/slic3r/GUI/PrintHostDialogs.cpp +++ b/src/slic3r/GUI/PrintHostDialogs.cpp @@ -39,7 +39,7 @@ static const char *CONFIG_KEY_PRINT = "printhost_print"; static const char *CONFIG_KEY_GROUP = "printhost_group"; PrintHostSendDialog::PrintHostSendDialog(const fs::path &path, bool can_start_print, const wxArrayString &groups) - : MsgDialog(static_cast(wxGetApp().mainframe), _L("Send G-Code to printer host"), _L("Upload to Printer Host with the following filename:"), wxID_NONE) + : MsgDialog(static_cast(wxGetApp().mainframe), _L("Send G-Code to printer host"), _L("Upload to Printer Host with the following filename:"), wxOK | wxCANCEL) , txt_filename(new wxTextCtrl(this, wxID_ANY)) , box_print(can_start_print ? new wxCheckBox(this, wxID_ANY, _L("Start printing after upload")) : nullptr) , combo_groups(!groups.IsEmpty() ? new wxComboBox(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, groups, wxCB_READONLY) : nullptr) @@ -70,10 +70,6 @@ PrintHostSendDialog::PrintHostSendDialog(const fs::path &path, bool can_start_pr combo_groups->SetValue(recent_group); } - auto* szr = CreateStdDialogButtonSizer(wxOK | wxCANCEL); - auto* btn_ok = szr->GetAffirmativeButton(); - btn_sizer->Add(szr); - wxString recent_path = from_u8(app_config->get("recent", CONFIG_KEY_PATH)); if (recent_path.Length() > 0 && recent_path[recent_path.Length() - 1] != '/') { recent_path += '/'; @@ -88,23 +84,19 @@ PrintHostSendDialog::PrintHostSendDialog(const fs::path &path, bool can_start_pr wxString suffix = recent_path.substr(recent_path.find_last_of('.')); - btn_ok->Bind(wxEVT_BUTTON, [this, suffix](wxCommandEvent&) { + static_cast(FindWindowById(wxID_OK, this))->Bind(wxEVT_BUTTON, [this, suffix](wxCommandEvent&) { wxString path = txt_filename->GetValue(); // .gcode suffix control if (!path.Lower().EndsWith(suffix.Lower())) { - //wxMessageDialog msg_wingow(this, wxString::Format(_L("Upload filename doesn't end with \"%s\". Do you wish to continue?"), suffix), wxString(SLIC3R_APP_NAME), wxYES | wxNO); MessageDialog msg_wingow(this, wxString::Format(_L("Upload filename doesn't end with \"%s\". Do you wish to continue?"), suffix), wxString(SLIC3R_APP_NAME), wxYES | wxNO); if (msg_wingow.ShowModal() == wxID_NO) return; } EndDialog(wxID_OK); - }); + }); - wxGetApp().UpdateDlgDarkUI(this); - - Fit(); - CenterOnParent(); + finalize(); #ifdef __linux__ // On Linux with GTK2 when text control lose the focus then selection (colored background) disappears but text color stay white diff --git a/src/slic3r/GUI/UpdateDialogs.cpp b/src/slic3r/GUI/UpdateDialogs.cpp index 552ca43be..5f09ffe30 100644 --- a/src/slic3r/GUI/UpdateDialogs.cpp +++ b/src/slic3r/GUI/UpdateDialogs.cpp @@ -89,7 +89,7 @@ MsgUpdateConfig::MsgUpdateConfig(const std::vector &updates, bool force_ MsgDialog(nullptr, force_before_wizard ? _L("Opening Configuration Wizard") : _L("Configuration update"), force_before_wizard ? _L("PrusaSlicer is not using the newest configuration available.\n" "Configuration Wizard may not offer the latest printers, filaments and SLA materials to be installed. ") : - _L("Configuration update is available"), wxID_NONE) + _L("Configuration update is available"), wxOK) { auto *text = new wxStaticText(this, wxID_ANY, _(L( "Would you like to install it?\n\n" @@ -133,22 +133,14 @@ MsgUpdateConfig::MsgUpdateConfig(const std::vector &updates, bool force_ content_sizer->Add(versions); content_sizer->AddSpacer(2*VERT_SPACING); - auto* btn_ok = new wxButton(this, wxID_OK, force_before_wizard ? _L("Install") : "OK"); - btn_sizer->Add(btn_ok); - btn_sizer->AddSpacer(HORIZ_SPACING); + add_btn(wxID_OK, true, force_before_wizard ? _L("Install") : "OK"); if (force_before_wizard) { - auto* btn_no_install = new wxButton(this, wxID_ANY, "Don't install"); - btn_no_install->Bind(wxEVT_BUTTON, [this](wxEvent&) { this->EndModal(wxID_CLOSE); }); - btn_sizer->Add(btn_no_install); - btn_sizer->AddSpacer(HORIZ_SPACING); + add_btn(wxID_CLOSE, false, _L("Don't install")); + static_cast(FindWindowById(wxID_CLOSE, this))->Bind(wxEVT_BUTTON, [this](const wxCommandEvent&) { this->EndModal(wxID_CLOSE); }); } - auto* btn_cancel = new wxButton(this, wxID_CANCEL); - btn_sizer->Add(btn_cancel); - btn_ok->SetFocus(); + add_btn(wxID_CANCEL); - wxGetApp().UpdateDlgDarkUI(this); - - Fit(); + finalize(); } MsgUpdateConfig::~MsgUpdateConfig() {} @@ -156,7 +148,7 @@ MsgUpdateConfig::~MsgUpdateConfig() {} //MsgUpdateForced MsgUpdateForced::MsgUpdateForced(const std::vector& updates) : - MsgDialog(nullptr, wxString::Format(_(L("%s incompatibility")), SLIC3R_APP_NAME), _(L("You must install a configuration update.")) + " ", wxICON_ERROR) + MsgDialog(nullptr, wxString::Format(_(L("%s incompatibility")), SLIC3R_APP_NAME), _(L("You must install a configuration update.")) + " ", wxOK | wxICON_ERROR) { auto* text = new wxStaticText(this, wxID_ANY, wxString::Format(_(L( "%s will now start updates. Otherwise it won't be able to start.\n\n" @@ -197,17 +189,10 @@ MsgUpdateForced::MsgUpdateForced(const std::vector& updates) : content_sizer->Add(versions); content_sizer->AddSpacer(2 * VERT_SPACING); - - auto* btn_exit = new wxButton(this, wxID_EXIT, wxString::Format(_(L("Exit %s")), SLIC3R_APP_NAME)); - btn_sizer->Add(btn_exit); - btn_sizer->AddSpacer(HORIZ_SPACING); - auto* btn_ok = new wxButton(this, wxID_OK); - btn_sizer->Add(btn_ok); - btn_ok->SetFocus(); - auto exiter = [this](const wxCommandEvent& evt) { this->EndModal(evt.GetId()); }; - btn_exit->Bind(wxEVT_BUTTON, exiter); - btn_ok->Bind(wxEVT_BUTTON, exiter); + add_btn(wxID_EXIT, false, wxString::Format(_L("Exit %s"), SLIC3R_APP_NAME)); + for (auto ID : { wxID_EXIT, wxID_OK }) + static_cast(FindWindowById(ID, this))->Bind(wxEVT_BUTTON, [this](const wxCommandEvent& evt) { this->EndModal(evt.GetId()); }); finalize(); } @@ -218,7 +203,7 @@ MsgUpdateForced::~MsgUpdateForced() {} MsgDataIncompatible::MsgDataIncompatible(const std::unordered_map &incompats) : MsgDialog(nullptr, wxString::Format(_(L("%s incompatibility")), SLIC3R_APP_NAME), - wxString::Format(_(L("%s configuration is incompatible")), SLIC3R_APP_NAME), /*wxID_NONE | */wxICON_ERROR) + wxString::Format(_(L("%s configuration is incompatible")), SLIC3R_APP_NAME), wxICON_ERROR) { auto *text = new wxStaticText(this, wxID_ANY, wxString::Format(_(L( "This version of %s is not compatible with currently installed configuration bundles.\n" @@ -251,16 +236,11 @@ MsgDataIncompatible::MsgDataIncompatible(const std::unordered_mapAdd(versions); content_sizer->AddSpacer(2*VERT_SPACING); - auto *btn_exit = new wxButton(this, wxID_EXIT, wxString::Format(_(L("Exit %s")), SLIC3R_APP_NAME)); - btn_sizer->Add(btn_exit); - btn_sizer->AddSpacer(HORIZ_SPACING); - auto *btn_reconf = new wxButton(this, wxID_REPLACE, _(L("Re-configure"))); - btn_sizer->Add(btn_reconf); - btn_exit->SetFocus(); + add_btn(wxID_REPLACE, true, _L("Re-configure")); + add_btn(wxID_EXIT, false, wxString::Format(_L("Exit %s"), SLIC3R_APP_NAME)); - auto exiter = [this](const wxCommandEvent& evt) { this->EndModal(evt.GetId()); }; - btn_exit->Bind(wxEVT_BUTTON, exiter); - btn_reconf->Bind(wxEVT_BUTTON, exiter); + for (auto ID : {wxID_EXIT, wxID_REPLACE}) + static_cast(FindWindowById(ID, this))->Bind(wxEVT_BUTTON, [this](const wxCommandEvent& evt) { this->EndModal(evt.GetId()); }); finalize(); } @@ -309,7 +289,7 @@ MsgDataLegacy::~MsgDataLegacy() {} // MsgNoUpdate MsgNoUpdates::MsgNoUpdates() : - MsgDialog(nullptr, _(L("Configuration updates")), _(L("No updates available")), wxICON_ERROR) + MsgDialog(nullptr, _(L("Configuration updates")), _(L("No updates available")), wxICON_ERROR | wxOK) { auto* text = new wxStaticText(this, wxID_ANY, wxString::Format(