Allow updating wxBusyInfo text while it's shown

Add UpdateText() and UpdateLabel() updating the text (i.e. possibly
containing markup) or the label (just plain text) shown in the window.

Closes #14743.

Closes https://github.com/Kvaz1r/wxWidgets.git BusyInfoUpdateText14743
This commit is contained in:
Kvaz1r
2019-09-07 16:31:28 +03:00
committed by Vadim Zeitlin
parent 32eb6f1a2c
commit 16b08c6ef9
3 changed files with 43 additions and 14 deletions

View File

@@ -17,6 +17,7 @@
class WXDLLIMPEXP_FWD_CORE wxFrame; class WXDLLIMPEXP_FWD_CORE wxFrame;
class WXDLLIMPEXP_FWD_CORE wxWindow; class WXDLLIMPEXP_FWD_CORE wxWindow;
class WXDLLIMPEXP_FWD_CORE wxControl;
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------
// wxBusyInfo // wxBusyInfo
@@ -37,12 +38,16 @@ public:
Init(wxBusyInfoFlags().Parent(parent).Label(message)); Init(wxBusyInfoFlags().Parent(parent).Label(message));
} }
void UpdateText(const wxString& str);
void UpdateLabel(const wxString& str);
virtual ~wxBusyInfo(); virtual ~wxBusyInfo();
private: private:
void Init(const wxBusyInfoFlags& flags); void Init(const wxBusyInfoFlags& flags);
wxFrame *m_InfoFrame; wxFrame *m_InfoFrame;
wxControl *m_text;
wxDECLARE_NO_COPY_CLASS(wxBusyInfo); wxDECLARE_NO_COPY_CLASS(wxBusyInfo);
}; };

View File

@@ -111,6 +111,23 @@ public:
*/ */
wxBusyInfo(const wxString& msg, wxWindow* parent = NULL); wxBusyInfo(const wxString& msg, wxWindow* parent = NULL);
/**
Update the information text.
The @a text string may contain markup as described in
wxControl::SetLabelMarkup().
@since 3.1.3
*/
void UpdateText(const wxString& str);
/**
Same as UpdateText() but doesn't interpret the string as containing markup.
@since 3.1.3
*/
void UpdateLabel(const wxString& str);
/** /**
Hides and closes the window containing the information text. Hides and closes the window containing the information text.
*/ */

View File

@@ -79,24 +79,21 @@ void wxBusyInfo::Init(const wxBusyInfoFlags& flags)
// Vertically center the text in the window. // Vertically center the text in the window.
sizer->AddStretchSpacer(); sizer->AddStretchSpacer();
wxControl* text;
#if wxUSE_MARKUP #if wxUSE_MARKUP
m_text = new wxStaticTextWithMarkupSupport(panel, wxID_ANY, wxString(),
wxDefaultPosition,
wxDefaultSize,
wxALIGN_CENTRE);
if ( !flags.m_text.empty() ) if ( !flags.m_text.empty() )
{ m_text->SetLabelMarkup(flags.m_text);
text = new wxStaticTextWithMarkupSupport(panel, wxID_ANY, wxString(),
wxDefaultPosition,
wxDefaultSize,
wxALIGN_CENTRE);
text->SetLabelMarkup(flags.m_text);
}
else else
m_text->SetLabelText(flags.m_label);
#else
m_text = new wxStaticText(panel, wxID_ANY, wxString());
m_text->SetLabelText(flags.m_label);
#endif // wxUSE_MARKUP #endif // wxUSE_MARKUP
{
text = new wxStaticText(panel, wxID_ANY, wxString());
text->SetLabelText(flags.m_label);
}
sizer->Add(text, wxSizerFlags().DoubleBorder().Centre()); sizer->Add(m_text, wxSizerFlags().DoubleBorder().Centre());
sizer->AddStretchSpacer(); sizer->AddStretchSpacer();
@@ -106,7 +103,7 @@ void wxBusyInfo::Init(const wxBusyInfoFlags& flags)
{ {
if ( title ) if ( title )
title->SetForegroundColour(flags.m_foreground); title->SetForegroundColour(flags.m_foreground);
text->SetForegroundColour(flags.m_foreground); m_text->SetForegroundColour(flags.m_foreground);
} }
if ( flags.m_background.IsOk() ) if ( flags.m_background.IsOk() )
@@ -131,6 +128,16 @@ void wxBusyInfo::Init(const wxBusyInfoFlags& flags)
m_InfoFrame->Update(); m_InfoFrame->Update();
} }
void wxBusyInfo::UpdateText(const wxString& str)
{
m_text->SetLabelMarkup(str);
}
void wxBusyInfo::UpdateLabel(const wxString& str)
{
m_text->SetLabelText(str);
}
wxBusyInfo::~wxBusyInfo() wxBusyInfo::~wxBusyInfo()
{ {
m_InfoFrame->Show(false); m_InfoFrame->Show(false);