MsgDialog: Some code refactoring.
Use style for whole Dialog instead of wxWindowID for just one default button
This commit is contained in:
parent
e8be7b2ecd
commit
a3f6ce1ac6
5 changed files with 24 additions and 44 deletions
|
@ -865,7 +865,7 @@ bool GUI_App::check_older_app_config(Semver current_version, bool backup)
|
||||||
"\n\nIf you select yes, PrusaSlicer will copy all profiles and other files from found folder to the current one."
|
"\n\nIf you select yes, PrusaSlicer will copy all profiles and other files from found folder to the current one."
|
||||||
"\nIf you select no, you will start with clean installation with configuration wizard.")
|
"\nIf you select no, you will start with clean installation with configuration wizard.")
|
||||||
, m_older_data_dir_path, last_semver.to_string())
|
, m_older_data_dir_path, last_semver.to_string())
|
||||||
, _L("PrusaSlicer"), wxICON_QUESTION | wxYES_NO);
|
, _L("PrusaSlicer"), /*wxICON_QUESTION | */wxYES_NO);
|
||||||
if (msg.ShowModal() == wxID_YES) {
|
if (msg.ShowModal() == wxID_YES) {
|
||||||
std::string snapshot_id;
|
std::string snapshot_id;
|
||||||
if (backup) {
|
if (backup) {
|
||||||
|
|
|
@ -25,7 +25,7 @@ namespace Slic3r {
|
||||||
namespace GUI {
|
namespace GUI {
|
||||||
|
|
||||||
|
|
||||||
MsgDialog::MsgDialog(wxWindow *parent, const wxString &title, const wxString &headline, wxWindowID button_id, wxBitmap bitmap)
|
MsgDialog::MsgDialog(wxWindow *parent, const wxString &title, const wxString &headline, long style, wxBitmap bitmap)
|
||||||
: wxDialog(parent ? parent : dynamic_cast<wxWindow*>(wxGetApp().mainframe), wxID_ANY, title, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
|
: wxDialog(parent ? parent : dynamic_cast<wxWindow*>(wxGetApp().mainframe), wxID_ANY, title, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
|
||||||
, boldfont(wxGetApp().normal_font())
|
, boldfont(wxGetApp().normal_font())
|
||||||
, content_sizer(new wxBoxSizer(wxVERTICAL))
|
, content_sizer(new wxBoxSizer(wxVERTICAL))
|
||||||
|
@ -49,12 +49,6 @@ MsgDialog::MsgDialog(wxWindow *parent, const wxString &title, const wxString &he
|
||||||
rightsizer->Add(content_sizer, 1, wxEXPAND);
|
rightsizer->Add(content_sizer, 1, wxEXPAND);
|
||||||
btn_sizer->AddStretchSpacer();
|
btn_sizer->AddStretchSpacer();
|
||||||
|
|
||||||
if (button_id != wxID_NONE) {
|
|
||||||
auto *button = new wxButton(this, button_id);
|
|
||||||
button->SetFocus();
|
|
||||||
btn_sizer->Add(button);
|
|
||||||
}
|
|
||||||
|
|
||||||
logo = new wxStaticBitmap(this, wxID_ANY, bitmap.IsOk() ? bitmap : wxNullBitmap);
|
logo = new wxStaticBitmap(this, wxID_ANY, bitmap.IsOk() ? bitmap : wxNullBitmap);
|
||||||
|
|
||||||
topsizer->Add(logo, 0, wxALL, BORDER);
|
topsizer->Add(logo, 0, wxALL, BORDER);
|
||||||
|
@ -64,6 +58,8 @@ MsgDialog::MsgDialog(wxWindow *parent, const wxString &title, const wxString &he
|
||||||
main_sizer->Add(new StaticLine(this), 0, wxEXPAND | wxLEFT | wxRIGHT, HORIZ_SPACING);
|
main_sizer->Add(new StaticLine(this), 0, wxEXPAND | wxLEFT | wxRIGHT, HORIZ_SPACING);
|
||||||
main_sizer->Add(btn_sizer, 0, wxALL | wxEXPAND, VERT_SPACING);
|
main_sizer->Add(btn_sizer, 0, wxALL | wxEXPAND, VERT_SPACING);
|
||||||
|
|
||||||
|
apply_style(style);
|
||||||
|
|
||||||
SetSizerAndFit(main_sizer);
|
SetSizerAndFit(main_sizer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -83,9 +79,9 @@ void MsgDialog::apply_style(long style)
|
||||||
if (style & wxNO) add_btn(wxID_NO);
|
if (style & wxNO) add_btn(wxID_NO);
|
||||||
if (style & wxCANCEL) add_btn(wxID_CANCEL);
|
if (style & wxCANCEL) add_btn(wxID_CANCEL);
|
||||||
|
|
||||||
logo->SetBitmap(create_scaled_bitmap(style & wxICON_WARNING ? "exclamation" :
|
logo->SetBitmap( create_scaled_bitmap(style & wxICON_WARNING ? "exclamation" :
|
||||||
style & wxICON_INFORMATION ? "info" :
|
style & wxICON_INFORMATION ? "info" :
|
||||||
style & wxICON_QUESTION ? "question" : "PrusaSlicer"/*"_192px_grayscale.png"*/, this, 84));
|
style & wxICON_QUESTION ? "question" : "PrusaSlicer", this, 64, style & wxICON_ERROR));
|
||||||
}
|
}
|
||||||
|
|
||||||
void MsgDialog::finalize()
|
void MsgDialog::finalize()
|
||||||
|
@ -161,18 +157,17 @@ static void add_msg_content(wxWindow* parent, wxBoxSizer* content_sizer, wxStrin
|
||||||
msg_escaped = std::string("<pre><code>") + msg_escaped + "</code></pre>";
|
msg_escaped = std::string("<pre><code>") + msg_escaped + "</code></pre>";
|
||||||
html->SetPage("<html><body bgcolor=\"" + bgr_clr_str + "\"><font color=\"" + text_clr_str + "\">" + wxString::FromUTF8(msg_escaped.data()) + "</font></body></html>");
|
html->SetPage("<html><body bgcolor=\"" + bgr_clr_str + "\"><font color=\"" + text_clr_str + "\">" + wxString::FromUTF8(msg_escaped.data()) + "</font></body></html>");
|
||||||
content_sizer->Add(html, 1, wxEXPAND);
|
content_sizer->Add(html, 1, wxEXPAND);
|
||||||
|
wxGetApp().UpdateDarkUI(html);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ErrorDialog
|
// ErrorDialog
|
||||||
|
|
||||||
ErrorDialog::ErrorDialog(wxWindow *parent, const wxString &msg, bool monospaced_font)
|
ErrorDialog::ErrorDialog(wxWindow *parent, const wxString &msg, bool monospaced_font)
|
||||||
: MsgDialog(parent, wxString::Format(_(L("%s error")), SLIC3R_APP_NAME),
|
: MsgDialog(parent, wxString::Format(_(L("%s error")), SLIC3R_APP_NAME),
|
||||||
wxString::Format(_(L("%s has encountered an error")), SLIC3R_APP_NAME),
|
wxString::Format(_(L("%s has encountered an error")), SLIC3R_APP_NAME), wxOK)
|
||||||
wxID_NONE)
|
|
||||||
, msg(msg)
|
, msg(msg)
|
||||||
{
|
{
|
||||||
add_msg_content(this, content_sizer, msg, monospaced_font);
|
add_msg_content(this, content_sizer, msg, monospaced_font);
|
||||||
add_btn(wxID_OK, true);
|
|
||||||
|
|
||||||
// Use a small bitmap with monospaced font, as the error text will not be wrapped.
|
// Use a small bitmap with monospaced font, as the error text will not be wrapped.
|
||||||
logo->SetBitmap(create_scaled_bitmap("PrusaSlicer_192px_grayscale.png", this, monospaced_font ? 48 : /*1*/84));
|
logo->SetBitmap(create_scaled_bitmap("PrusaSlicer_192px_grayscale.png", this, monospaced_font ? 48 : /*1*/84));
|
||||||
|
@ -189,10 +184,9 @@ WarningDialog::WarningDialog(wxWindow *parent,
|
||||||
const wxString& caption/* = wxEmptyString*/,
|
const wxString& caption/* = wxEmptyString*/,
|
||||||
long style/* = wxOK*/)
|
long style/* = wxOK*/)
|
||||||
: MsgDialog(parent, caption.IsEmpty() ? wxString::Format(_L("%s warning"), SLIC3R_APP_NAME) : caption,
|
: MsgDialog(parent, caption.IsEmpty() ? wxString::Format(_L("%s warning"), SLIC3R_APP_NAME) : caption,
|
||||||
wxString::Format(_L("%s has a warning")+":", SLIC3R_APP_NAME), wxID_NONE)
|
wxString::Format(_L("%s has a warning")+":", SLIC3R_APP_NAME), style)
|
||||||
{
|
{
|
||||||
add_msg_content(this, content_sizer, message);
|
add_msg_content(this, content_sizer, message);
|
||||||
apply_style(style);
|
|
||||||
finalize();
|
finalize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -203,10 +197,9 @@ MessageDialog::MessageDialog(wxWindow* parent,
|
||||||
const wxString& message,
|
const wxString& message,
|
||||||
const wxString& caption/* = wxEmptyString*/,
|
const wxString& caption/* = wxEmptyString*/,
|
||||||
long style/* = wxOK*/)
|
long style/* = wxOK*/)
|
||||||
: MsgDialog(parent, caption.IsEmpty() ? wxString::Format(_L("%s info"), SLIC3R_APP_NAME) : caption, wxEmptyString, wxID_NONE)
|
: MsgDialog(parent, caption.IsEmpty() ? wxString::Format(_L("%s info"), SLIC3R_APP_NAME) : caption, wxEmptyString, style)
|
||||||
{
|
{
|
||||||
add_msg_content(this, content_sizer, message);
|
add_msg_content(this, content_sizer, message);
|
||||||
apply_style(style);
|
|
||||||
finalize();
|
finalize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -217,16 +210,16 @@ RichMessageDialog::RichMessageDialog(wxWindow* parent,
|
||||||
const wxString& message,
|
const wxString& message,
|
||||||
const wxString& caption/* = wxEmptyString*/,
|
const wxString& caption/* = wxEmptyString*/,
|
||||||
long style/* = wxOK*/)
|
long style/* = wxOK*/)
|
||||||
: MsgDialog(parent, caption.IsEmpty() ? wxString::Format(_L("%s info"), SLIC3R_APP_NAME) : caption, wxEmptyString, wxID_NONE)
|
: MsgDialog(parent, caption.IsEmpty() ? wxString::Format(_L("%s info"), SLIC3R_APP_NAME) : caption, wxEmptyString, style)
|
||||||
{
|
{
|
||||||
add_msg_content(this, content_sizer, message);
|
add_msg_content(this, content_sizer, message);
|
||||||
|
|
||||||
m_checkBox = new wxCheckBox(this, wxID_ANY, m_checkBoxText);
|
m_checkBox = new wxCheckBox(this, wxID_ANY, m_checkBoxText);
|
||||||
|
wxGetApp().UpdateDarkUI(m_checkBox);
|
||||||
m_checkBox->Bind(wxEVT_CHECKBOX, [this](wxCommandEvent&) { m_checkBoxValue = m_checkBox->GetValue(); });
|
m_checkBox->Bind(wxEVT_CHECKBOX, [this](wxCommandEvent&) { m_checkBoxValue = m_checkBox->GetValue(); });
|
||||||
|
|
||||||
btn_sizer->Insert(0, m_checkBox, wxALIGN_CENTER_VERTICAL);
|
btn_sizer->Insert(0, m_checkBox, wxALIGN_CENTER_VERTICAL);
|
||||||
|
|
||||||
apply_style(style);
|
|
||||||
finalize();
|
finalize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -245,13 +238,10 @@ int RichMessageDialog::ShowModal()
|
||||||
// InfoDialog
|
// InfoDialog
|
||||||
|
|
||||||
InfoDialog::InfoDialog(wxWindow* parent, const wxString &title, const wxString& msg)
|
InfoDialog::InfoDialog(wxWindow* parent, const wxString &title, const wxString& msg)
|
||||||
: MsgDialog(parent, wxString::Format(_L("%s information"), SLIC3R_APP_NAME), title)
|
: MsgDialog(parent, wxString::Format(_L("%s information"), SLIC3R_APP_NAME), title, wxOK | wxICON_INFORMATION)
|
||||||
, msg(msg)
|
, msg(msg)
|
||||||
{
|
{
|
||||||
add_msg_content(this, content_sizer, msg);
|
add_msg_content(this, content_sizer, msg);
|
||||||
// Set info bitmap
|
|
||||||
logo->SetBitmap(create_scaled_bitmap("info", this, 84));
|
|
||||||
|
|
||||||
finalize();
|
finalize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -41,8 +41,7 @@ protected:
|
||||||
HORIZ_SPACING = 5,
|
HORIZ_SPACING = 5,
|
||||||
};
|
};
|
||||||
|
|
||||||
// button_id is an id of a button that can be added by default, use wxID_NONE to disable
|
MsgDialog(wxWindow *parent, const wxString &title, const wxString &headline, long style = wxOK, wxBitmap bitmap = wxNullBitmap);
|
||||||
MsgDialog(wxWindow *parent, const wxString &title, const wxString &headline, wxWindowID button_id = wxID_OK, wxBitmap bitmap = wxNullBitmap);
|
|
||||||
|
|
||||||
void add_btn(wxWindowID btn_id, bool set_focus = false);
|
void add_btn(wxWindowID btn_id, bool set_focus = false);
|
||||||
void apply_style(long style);
|
void apply_style(long style);
|
||||||
|
|
|
@ -2487,7 +2487,7 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_
|
||||||
"The internal unit of PrusaSlicer are millimeters. Do you want to recalculate the dimensions of the object?",
|
"The internal unit of PrusaSlicer are millimeters. Do you want to recalculate the dimensions of the object?",
|
||||||
"The dimensions of some objects from file %s seem to be defined in meters.\n"
|
"The dimensions of some objects from file %s seem to be defined in meters.\n"
|
||||||
"The internal unit of PrusaSlicer are millimeters. Do you want to recalculate the dimensions of these objects?", model.objects.size()), from_path(filename)) + "\n",
|
"The internal unit of PrusaSlicer are millimeters. Do you want to recalculate the dimensions of these objects?", model.objects.size()), from_path(filename)) + "\n",
|
||||||
_L("The object is too small"), wxICON_WARNING | wxYES | wxNO);
|
_L("The object is too small"), wxICON_QUESTION | wxYES_NO);
|
||||||
dlg.ShowCheckBox(_L("Apply to all the remaining small objects being loaded."));
|
dlg.ShowCheckBox(_L("Apply to all the remaining small objects being loaded."));
|
||||||
int answer = dlg.ShowModal();
|
int answer = dlg.ShowModal();
|
||||||
if (dlg.IsCheckBoxChecked())
|
if (dlg.IsCheckBoxChecked())
|
||||||
|
@ -2509,7 +2509,7 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_
|
||||||
"The internal unit of PrusaSlicer are millimeters. Do you want to recalculate the dimensions of the object?",
|
"The internal unit of PrusaSlicer are millimeters. Do you want to recalculate the dimensions of the object?",
|
||||||
"The dimensions of some objects from file %s seem to be defined in inches.\n"
|
"The dimensions of some objects from file %s seem to be defined in inches.\n"
|
||||||
"The internal unit of PrusaSlicer are millimeters. Do you want to recalculate the dimensions of these objects?", model.objects.size()), from_path(filename)) + "\n",
|
"The internal unit of PrusaSlicer are millimeters. Do you want to recalculate the dimensions of these objects?", model.objects.size()), from_path(filename)) + "\n",
|
||||||
_L("The object is too small"), wxICON_WARNING | wxYES | wxNO);
|
_L("The object is too small"), wxICON_QUESTION | wxYES_NO);
|
||||||
dlg.ShowCheckBox(_L("Apply to all the remaining small objects being loaded."));
|
dlg.ShowCheckBox(_L("Apply to all the remaining small objects being loaded."));
|
||||||
int answer = dlg.ShowModal();
|
int answer = dlg.ShowModal();
|
||||||
if (dlg.IsCheckBoxChecked())
|
if (dlg.IsCheckBoxChecked())
|
||||||
|
|
|
@ -156,7 +156,7 @@ MsgUpdateConfig::~MsgUpdateConfig() {}
|
||||||
//MsgUpdateForced
|
//MsgUpdateForced
|
||||||
|
|
||||||
MsgUpdateForced::MsgUpdateForced(const std::vector<Update>& updates) :
|
MsgUpdateForced::MsgUpdateForced(const std::vector<Update>& updates) :
|
||||||
MsgDialog(nullptr, wxString::Format(_(L("%s incompatibility")), SLIC3R_APP_NAME), _(L("You must install a configuration update.")) + " ", wxID_NONE)
|
MsgDialog(nullptr, wxString::Format(_(L("%s incompatibility")), SLIC3R_APP_NAME), _(L("You must install a configuration update.")) + " ", wxICON_ERROR)
|
||||||
{
|
{
|
||||||
auto* text = new wxStaticText(this, wxID_ANY, wxString::Format(_(L(
|
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"
|
"%s will now start updates. Otherwise it won't be able to start.\n\n"
|
||||||
|
@ -165,7 +165,6 @@ MsgUpdateForced::MsgUpdateForced(const std::vector<Update>& updates) :
|
||||||
"Updated configuration bundles:"
|
"Updated configuration bundles:"
|
||||||
)), SLIC3R_APP_NAME));
|
)), SLIC3R_APP_NAME));
|
||||||
|
|
||||||
logo->SetBitmap(create_scaled_bitmap("PrusaSlicer_192px_grayscale.png", this, 192));
|
|
||||||
|
|
||||||
text->Wrap(CONTENT_WIDTH * wxGetApp().em_unit());
|
text->Wrap(CONTENT_WIDTH * wxGetApp().em_unit());
|
||||||
content_sizer->Add(text);
|
content_sizer->Add(text);
|
||||||
|
@ -210,7 +209,7 @@ MsgUpdateForced::MsgUpdateForced(const std::vector<Update>& updates) :
|
||||||
btn_exit->Bind(wxEVT_BUTTON, exiter);
|
btn_exit->Bind(wxEVT_BUTTON, exiter);
|
||||||
btn_ok->Bind(wxEVT_BUTTON, exiter);
|
btn_ok->Bind(wxEVT_BUTTON, exiter);
|
||||||
|
|
||||||
Fit();
|
finalize();
|
||||||
}
|
}
|
||||||
|
|
||||||
MsgUpdateForced::~MsgUpdateForced() {}
|
MsgUpdateForced::~MsgUpdateForced() {}
|
||||||
|
@ -219,10 +218,8 @@ MsgUpdateForced::~MsgUpdateForced() {}
|
||||||
|
|
||||||
MsgDataIncompatible::MsgDataIncompatible(const std::unordered_map<std::string, wxString> &incompats) :
|
MsgDataIncompatible::MsgDataIncompatible(const std::unordered_map<std::string, wxString> &incompats) :
|
||||||
MsgDialog(nullptr, wxString::Format(_(L("%s incompatibility")), SLIC3R_APP_NAME),
|
MsgDialog(nullptr, wxString::Format(_(L("%s incompatibility")), SLIC3R_APP_NAME),
|
||||||
wxString::Format(_(L("%s configuration is incompatible")), SLIC3R_APP_NAME), wxID_NONE)
|
wxString::Format(_(L("%s configuration is incompatible")), SLIC3R_APP_NAME), /*wxID_NONE | */wxICON_ERROR)
|
||||||
{
|
{
|
||||||
logo->SetBitmap(create_scaled_bitmap("PrusaSlicer_192px_grayscale.png", this, 192));
|
|
||||||
|
|
||||||
auto *text = new wxStaticText(this, wxID_ANY, wxString::Format(_(L(
|
auto *text = new wxStaticText(this, wxID_ANY, wxString::Format(_(L(
|
||||||
"This version of %s is not compatible with currently installed configuration bundles.\n"
|
"This version of %s is not compatible with currently installed configuration bundles.\n"
|
||||||
"This probably happened as a result of running an older %s after using a newer one.\n\n"
|
"This probably happened as a result of running an older %s after using a newer one.\n\n"
|
||||||
|
@ -265,7 +262,7 @@ MsgDataIncompatible::MsgDataIncompatible(const std::unordered_map<std::string, w
|
||||||
btn_exit->Bind(wxEVT_BUTTON, exiter);
|
btn_exit->Bind(wxEVT_BUTTON, exiter);
|
||||||
btn_reconf->Bind(wxEVT_BUTTON, exiter);
|
btn_reconf->Bind(wxEVT_BUTTON, exiter);
|
||||||
|
|
||||||
Fit();
|
finalize();
|
||||||
}
|
}
|
||||||
|
|
||||||
MsgDataIncompatible::~MsgDataIncompatible() {}
|
MsgDataIncompatible::~MsgDataIncompatible() {}
|
||||||
|
@ -303,9 +300,7 @@ MsgDataLegacy::MsgDataLegacy() :
|
||||||
content_sizer->Add(link);
|
content_sizer->Add(link);
|
||||||
content_sizer->AddSpacer(VERT_SPACING);
|
content_sizer->AddSpacer(VERT_SPACING);
|
||||||
|
|
||||||
wxGetApp().UpdateDlgDarkUI(this);
|
finalize();
|
||||||
|
|
||||||
Fit();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MsgDataLegacy::~MsgDataLegacy() {}
|
MsgDataLegacy::~MsgDataLegacy() {}
|
||||||
|
@ -314,7 +309,7 @@ MsgDataLegacy::~MsgDataLegacy() {}
|
||||||
// MsgNoUpdate
|
// MsgNoUpdate
|
||||||
|
|
||||||
MsgNoUpdates::MsgNoUpdates() :
|
MsgNoUpdates::MsgNoUpdates() :
|
||||||
MsgDialog(nullptr, _(L("Configuration updates")), _(L("No updates available")))
|
MsgDialog(nullptr, _(L("Configuration updates")), _(L("No updates available")), wxICON_ERROR)
|
||||||
{
|
{
|
||||||
|
|
||||||
auto* text = new wxStaticText(this, wxID_ANY, wxString::Format(
|
auto* text = new wxStaticText(this, wxID_ANY, wxString::Format(
|
||||||
|
@ -327,11 +322,7 @@ MsgNoUpdates::MsgNoUpdates() :
|
||||||
content_sizer->Add(text);
|
content_sizer->Add(text);
|
||||||
content_sizer->AddSpacer(VERT_SPACING);
|
content_sizer->AddSpacer(VERT_SPACING);
|
||||||
|
|
||||||
logo->SetBitmap(create_scaled_bitmap("PrusaSlicer_192px_grayscale.png", this, 192));
|
finalize();
|
||||||
|
|
||||||
wxGetApp().UpdateDlgDarkUI(this);
|
|
||||||
|
|
||||||
Fit();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MsgNoUpdates::~MsgNoUpdates() {}
|
MsgNoUpdates::~MsgNoUpdates() {}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue