diff options
Diffstat (limited to 'ui/msg_popup.cpp')
-rw-r--r-- | ui/msg_popup.cpp | 225 |
1 files changed, 129 insertions, 96 deletions
diff --git a/ui/msg_popup.cpp b/ui/msg_popup.cpp index 142d2e9e..09bf24c9 100644 --- a/ui/msg_popup.cpp +++ b/ui/msg_popup.cpp @@ -9,179 +9,191 @@ #include <wx+/mouse_move_dlg.h> #include "gui_generated.h" - using namespace zen; -class ErrorDlg : public ErrorDlgGenerated +class ErrorDlg : public MessageDlgGenerated { public: ErrorDlg(wxWindow* parent, int activeButtons, const wxString& messageText, + const wxString& caption, //optional bool* ignoreNextErrors); private: - void OnClose(wxCloseEvent& event); - void OnIgnore(wxCommandEvent& event); - void OnRetry(wxCommandEvent& event); - void OnAbort(wxCommandEvent& event); + void OnClose (wxCloseEvent& event) { EndModal(ReturnErrorDlg::BUTTON_CANCEL); } + void OnCancel(wxCommandEvent& event) { EndModal(ReturnErrorDlg::BUTTON_CANCEL); } + void OnButton1(wxCommandEvent& event); + void OnButton2(wxCommandEvent& event); bool* ignoreErrors; + wxButton& buttonIgnore; // + wxButton& buttonRetry; // map generic controls + wxCheckBox& checkBoxIgnoreErrors; // }; -ErrorDlg::ErrorDlg(wxWindow* parent, const int activeButtons, const wxString& messageText, bool* ignoreNextErrors) : - ErrorDlgGenerated(parent), - ignoreErrors(ignoreNextErrors) +ErrorDlg::ErrorDlg(wxWindow* parent, int activeButtons, const wxString& messageText, const wxString& caption, bool* ignoreNextErrors) : + MessageDlgGenerated(parent), + ignoreErrors(ignoreNextErrors), + buttonIgnore(*m_buttonCustom1), + buttonRetry (*m_buttonCustom2), + checkBoxIgnoreErrors(*m_checkBoxCustom) { #ifdef FFS_WIN new zen::MouseMoveWindow(*this); //allow moving main dialog by clicking (nearly) anywhere...; ownership passed to "this" #endif - m_bitmap10->SetBitmap(GlobalResources::getImage(L"error")); - m_textCtrl8->SetValue(messageText); + SetTitle(!caption.empty() ? caption : _("Error")); + m_bitmapMsgType->SetBitmap(GlobalResources::getImage(L"error")); + m_textCtrlMessage->SetValue(messageText); + checkBoxIgnoreErrors.SetLabel(_("Ignore further errors")); + buttonIgnore.SetLabel(_("&Ignore")); + buttonRetry .SetLabel(_("&Retry")); + buttonIgnore.SetId(wxID_IGNORE); + buttonRetry .SetId(wxID_RETRY); if (ignoreNextErrors) - m_checkBoxIgnoreErrors->SetValue(*ignoreNextErrors); + checkBoxIgnoreErrors.SetValue(*ignoreNextErrors); else - m_checkBoxIgnoreErrors->Hide(); + checkBoxIgnoreErrors.Hide(); if (~activeButtons & ReturnErrorDlg::BUTTON_IGNORE) { - m_buttonIgnore->Hide(); - m_checkBoxIgnoreErrors->Hide(); + buttonIgnore.Hide(); + checkBoxIgnoreErrors.Hide(); } if (~activeButtons & ReturnErrorDlg::BUTTON_RETRY) - m_buttonRetry->Hide(); + buttonRetry.Hide(); - if (~activeButtons & ReturnErrorDlg::BUTTON_ABORT) - m_buttonAbort->Hide(); + if (~activeButtons & ReturnErrorDlg::BUTTON_CANCEL) + m_buttonCancel->Hide(); //set button focus precedence if (activeButtons & ReturnErrorDlg::BUTTON_RETRY) - m_buttonRetry->SetFocus(); + buttonRetry.SetFocus(); else if (activeButtons & ReturnErrorDlg::BUTTON_IGNORE) - m_buttonIgnore->SetFocus(); - else if (activeButtons & ReturnErrorDlg::BUTTON_ABORT) - m_buttonAbort->SetFocus(); + buttonIgnore.SetFocus(); + else if (activeButtons & ReturnErrorDlg::BUTTON_CANCEL) + m_buttonCancel->SetFocus(); Fit(); //child-element widths have changed: image was set } -void ErrorDlg::OnClose(wxCloseEvent& event) -{ - EndModal(ReturnErrorDlg::BUTTON_ABORT); -} - - -void ErrorDlg::OnIgnore(wxCommandEvent& event) +void ErrorDlg::OnButton1(wxCommandEvent& event) //ignore { - if (ignoreErrors) *ignoreErrors = m_checkBoxIgnoreErrors->GetValue(); + if (ignoreErrors) + *ignoreErrors = checkBoxIgnoreErrors.GetValue(); EndModal(ReturnErrorDlg::BUTTON_IGNORE); } -void ErrorDlg::OnRetry(wxCommandEvent& event) +void ErrorDlg::OnButton2(wxCommandEvent& event) //retry { - if (ignoreErrors) *ignoreErrors = m_checkBoxIgnoreErrors->GetValue(); + if (ignoreErrors) + *ignoreErrors = checkBoxIgnoreErrors.GetValue(); EndModal(ReturnErrorDlg::BUTTON_RETRY); } -void ErrorDlg::OnAbort(wxCommandEvent& event) +ReturnErrorDlg::ButtonPressed zen::showErrorDlg(wxWindow* parent, int activeButtons, const wxString& messageText, bool* ignoreNextErrors) { - if (ignoreErrors) *ignoreErrors = m_checkBoxIgnoreErrors->GetValue(); - EndModal(ReturnErrorDlg::BUTTON_ABORT); + ErrorDlg errorDlg(parent, activeButtons, messageText, wxString(), ignoreNextErrors); + errorDlg.Raise(); + return static_cast<ReturnErrorDlg::ButtonPressed>(errorDlg.ShowModal()); } +//######################################################################################## -ReturnErrorDlg::ButtonPressed zen::showErrorDlg(wxWindow* parent, int activeButtons, const wxString& messageText, bool* ignoreNextErrors) +ReturnFatalErrorDlg::ButtonPressed zen::showFatalErrorDlg(wxWindow* parent, int activeButtons, const wxString& messageText, bool* ignoreNextErrors) { - ErrorDlg errorDlg(parent, activeButtons, messageText, ignoreNextErrors); + ErrorDlg errorDlg(parent, activeButtons, messageText, _("Fatal Error"), ignoreNextErrors); errorDlg.Raise(); - return static_cast<ReturnErrorDlg::ButtonPressed>(errorDlg.ShowModal()); + return static_cast<ReturnFatalErrorDlg::ButtonPressed>(errorDlg.ShowModal()); } -//######################################################################################## +//######################################################################################## -class WarningDlg : public WarningDlgGenerated +class WarningDlg : public MessageDlgGenerated { public: WarningDlg(wxWindow* parent, int activeButtons, const wxString& messageText, bool& dontShowAgain); private: - void OnClose(wxCloseEvent& event); - void OnIgnore(wxCommandEvent& event); - void OnSwitch(wxCommandEvent& event); - void OnAbort(wxCommandEvent& event); + void OnClose (wxCloseEvent& event) { EndModal(ReturnWarningDlg::BUTTON_CANCEL); } + void OnCancel(wxCommandEvent& event) { EndModal(ReturnWarningDlg::BUTTON_CANCEL); } + void OnButton1(wxCommandEvent& event); + void OnButton2(wxCommandEvent& event); + bool& dontShowAgain; + wxButton& buttonIgnore; // + wxButton& buttonSwitch; // map generic controls + wxCheckBox& checkBoxDontShowAgain; // }; WarningDlg::WarningDlg(wxWindow* parent, int activeButtons, const wxString& messageText, bool& dontShowDlgAgain) : - WarningDlgGenerated(parent), - dontShowAgain(dontShowDlgAgain) + MessageDlgGenerated(parent), + dontShowAgain(dontShowDlgAgain), + buttonIgnore(*m_buttonCustom1), + buttonSwitch(*m_buttonCustom2), + checkBoxDontShowAgain(*m_checkBoxCustom) + { #ifdef FFS_WIN new zen::MouseMoveWindow(*this); //allow moving main dialog by clicking (nearly) anywhere...; ownership passed to "this" #endif - m_bitmap10->SetBitmap(GlobalResources::getImage(L"warning")); - m_textCtrl8->SetValue(messageText); - m_checkBoxDontShowAgain->SetValue(dontShowAgain); + SetTitle(_("Warning")); + m_bitmapMsgType->SetBitmap(GlobalResources::getImage(L"warning")); + m_textCtrlMessage->SetValue(messageText); + checkBoxDontShowAgain.SetLabel(_("Do not show this dialog again")); + buttonIgnore.SetLabel(_("&Ignore")); + buttonSwitch.SetLabel(_("&Switch")); + buttonIgnore.SetId(wxID_IGNORE); + buttonSwitch.SetId(wxID_MORE); + + checkBoxDontShowAgain.SetValue(dontShowAgain); if (~activeButtons & ReturnWarningDlg::BUTTON_IGNORE) { - m_buttonIgnore->Hide(); - m_checkBoxDontShowAgain->Hide(); + buttonIgnore.Hide(); + checkBoxDontShowAgain.Hide(); } if (~activeButtons & ReturnWarningDlg::BUTTON_SWITCH) - m_buttonSwitch->Hide(); + buttonSwitch.Hide(); - if (~activeButtons & ReturnWarningDlg::BUTTON_ABORT) - m_buttonAbort->Hide(); + if (~activeButtons & ReturnWarningDlg::BUTTON_CANCEL) + m_buttonCancel->Hide(); //set button focus precedence if (activeButtons & ReturnWarningDlg::BUTTON_IGNORE) - m_buttonIgnore->SetFocus(); - else if (activeButtons & ReturnWarningDlg::BUTTON_ABORT) - m_buttonAbort->SetFocus(); + buttonIgnore.SetFocus(); + else if (activeButtons & ReturnWarningDlg::BUTTON_CANCEL) + m_buttonCancel->SetFocus(); Fit(); //child-element widths have changed: image was set } -void WarningDlg::OnClose(wxCloseEvent& event) -{ - EndModal(ReturnWarningDlg::BUTTON_ABORT); -} - - -void WarningDlg::OnIgnore(wxCommandEvent& event) +void WarningDlg::OnButton1(wxCommandEvent& event) //ignore { - dontShowAgain = m_checkBoxDontShowAgain->GetValue(); + dontShowAgain = checkBoxDontShowAgain.GetValue(); EndModal(ReturnWarningDlg::BUTTON_IGNORE); } -void WarningDlg::OnSwitch(wxCommandEvent& event) +void WarningDlg::OnButton2(wxCommandEvent& event) //switch { - dontShowAgain = m_checkBoxDontShowAgain->GetValue(); + dontShowAgain = checkBoxDontShowAgain.GetValue(); EndModal(ReturnWarningDlg::BUTTON_SWITCH); } -void WarningDlg::OnAbort(wxCommandEvent& event) -{ - dontShowAgain = m_checkBoxDontShowAgain->GetValue(); - EndModal(ReturnWarningDlg::BUTTON_ABORT); -} - - ReturnWarningDlg::ButtonPressed zen::showWarningDlg(wxWindow* parent, int activeButtons, const wxString& messageText, bool& dontShowAgain) { WarningDlg warningDlg(parent, activeButtons, messageText, dontShowAgain); @@ -191,77 +203,98 @@ ReturnWarningDlg::ButtonPressed zen::showWarningDlg(wxWindow* parent, int active //######################################################################################## -class QuestionDlg : public QuestionDlgGenerated +class QuestionDlg : public MessageDlgGenerated { public: - QuestionDlg(wxWindow* parent, int activeButtons, const wxString& messageText, CheckBox* checkbox); + QuestionDlg(wxWindow* parent, int activeButtons, const wxString& messageText, const wxString& caption, const wxString& labelYes, const wxString& labelNo, CheckBox* checkbox); private: void OnClose (wxCloseEvent& event) { EndModal(ReturnQuestionDlg::BUTTON_CANCEL); } void OnCancel(wxCommandEvent& event) { EndModal(ReturnQuestionDlg::BUTTON_CANCEL); } - void OnYes(wxCommandEvent& event); - void OnNo (wxCommandEvent& event); + void OnButton1(wxCommandEvent& event); + void OnButton2(wxCommandEvent& event); CheckBox* checkbox_; //optional + wxButton& buttonYes; // map generic controls + wxButton& buttonNo; // }; -QuestionDlg::QuestionDlg(wxWindow* parent, int activeButtons, const wxString& messageText, CheckBox* checkbox) : - QuestionDlgGenerated(parent), - checkbox_(checkbox) +QuestionDlg::QuestionDlg(wxWindow* parent, + int activeButtons, + const wxString& messageText, + const wxString& caption, //optional + const wxString& labelYes, + const wxString& labelNo, + CheckBox* checkbox) : + MessageDlgGenerated(parent), + checkbox_(checkbox), + buttonYes(*m_buttonCustom1), + buttonNo (*m_buttonCustom2) { #ifdef FFS_WIN new zen::MouseMoveWindow(*this); //allow moving main dialog by clicking (nearly) anywhere...; ownership passed to "this" #endif - m_bitmap10->SetBitmap(GlobalResources::getImage(L"question")); - m_textCtrl8->SetValue(messageText); + SetTitle(!caption.empty()? caption : _("Question")); + m_bitmapMsgType->SetBitmap(GlobalResources::getImage(L"question")); + m_textCtrlMessage->SetValue(messageText); + buttonYes.SetLabel(!labelYes.empty() ? labelYes : _("&Yes")); + buttonNo .SetLabel(!labelNo .empty() ? labelNo : _("&No")); + buttonYes.SetId(wxID_YES); + buttonNo .SetId(wxID_NO); if (checkbox_) { - m_checkBox->SetValue(checkbox_->value_); - m_checkBox->SetLabel(checkbox_->label_); + m_checkBoxCustom->SetValue(checkbox_->value_); + m_checkBoxCustom->SetLabel(checkbox_->label_); } else - m_checkBox->Hide(); + m_checkBoxCustom->Hide(); if (~activeButtons & ReturnQuestionDlg::BUTTON_YES) - m_buttonYes->Hide(); + buttonYes.Hide(); if (~activeButtons & ReturnQuestionDlg::BUTTON_NO) - m_buttonNo->Hide(); + buttonNo.Hide(); if (~activeButtons & ReturnQuestionDlg::BUTTON_CANCEL) m_buttonCancel->Hide(); //set button focus precedence if (activeButtons & ReturnQuestionDlg::BUTTON_YES) - m_buttonYes->SetFocus(); + buttonYes.SetFocus(); else if (activeButtons & ReturnQuestionDlg::BUTTON_CANCEL) m_buttonCancel->SetFocus(); else if (activeButtons & ReturnQuestionDlg::BUTTON_NO) - m_buttonNo->SetFocus(); + buttonNo.SetFocus(); Fit(); //child-element widths have changed: image was set } -void QuestionDlg::OnYes(wxCommandEvent& event) +void QuestionDlg::OnButton1(wxCommandEvent& event) //yes { if (checkbox_) - checkbox_->value_ = m_checkBox->GetValue(); + checkbox_->value_ = m_checkBoxCustom->GetValue(); EndModal(ReturnQuestionDlg::BUTTON_YES); } -void QuestionDlg::OnNo(wxCommandEvent& event) +void QuestionDlg::OnButton2(wxCommandEvent& event) //no { if (checkbox_) - checkbox_->value_ = m_checkBox->GetValue(); + checkbox_->value_ = m_checkBoxCustom->GetValue(); EndModal(ReturnQuestionDlg::BUTTON_NO); } -ReturnQuestionDlg::ButtonPressed zen::showQuestionDlg(wxWindow* parent, int activeButtons, const wxString& messageText, CheckBox* checkbox) + +ReturnQuestionDlg::ButtonPressed zen::showQuestionDlg(wxWindow* parent, + int activeButtons, + const wxString& messageText, + const wxString& caption, //optional + const wxString& labelYes, const wxString& labelNo, + CheckBox* checkbox) { - QuestionDlg qtnDlg(parent, activeButtons, messageText, checkbox); + QuestionDlg qtnDlg(parent, activeButtons, messageText, caption, labelYes, labelNo, checkbox); qtnDlg.Raise(); return static_cast<ReturnQuestionDlg::ButtonPressed>(qtnDlg.ShowModal()); } |