improved sizing of wxBusyInfo window and updated the docs a bit
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12197 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -7,15 +7,40 @@ a message window will be shown.
|
|||||||
For example:
|
For example:
|
||||||
|
|
||||||
\begin{verbatim}
|
\begin{verbatim}
|
||||||
wxBusyInfo wait("Please wait, working...");
|
wxBusyInfo wait("Please wait, working...");
|
||||||
|
|
||||||
for (int i = 0; i < 100000; i++)
|
for (int i = 0; i < 100000; i++)
|
||||||
DoACalculation();
|
{
|
||||||
|
DoACalculation();
|
||||||
|
}
|
||||||
\end{verbatim}
|
\end{verbatim}
|
||||||
|
|
||||||
It works by creating a window in the constructor,
|
It works by creating a window in the constructor,
|
||||||
and deleting it in the destructor.
|
and deleting it in the destructor.
|
||||||
|
|
||||||
|
You may also want to call wxTheApp->Yield() to refresh the window
|
||||||
|
periodically (in case it had been obscured by other windows, for
|
||||||
|
example) like this:
|
||||||
|
|
||||||
|
\begin{verbatim}
|
||||||
|
wxWindowDisabler disableAll;
|
||||||
|
|
||||||
|
wxBusyInfo wait("Please wait, working...");
|
||||||
|
|
||||||
|
for (int i = 0; i < 100000; i++)
|
||||||
|
{
|
||||||
|
DoACalculation();
|
||||||
|
|
||||||
|
if ( !(i % 1000) )
|
||||||
|
wxTheApp->Yield();
|
||||||
|
}
|
||||||
|
\end{verbatim}
|
||||||
|
|
||||||
|
but take care to not cause undesirable reentrancies when doing it (see
|
||||||
|
\helpref{wxApp::Yield()}{wxappyield} for more details). The simplest way to do
|
||||||
|
it is to use \helpref{wxWindowDisabler}{wxwindowdisabler} class as illustrated
|
||||||
|
in the above example.
|
||||||
|
|
||||||
\wxheading{Derived from}
|
\wxheading{Derived from}
|
||||||
|
|
||||||
None
|
None
|
||||||
@@ -28,7 +53,17 @@ None
|
|||||||
|
|
||||||
\membersection{wxBusyInfo::wxBusyInfo}
|
\membersection{wxBusyInfo::wxBusyInfo}
|
||||||
|
|
||||||
\func{}{wxBusyInfo}{\param{const wxString\&}{ msg}}
|
\func{}{wxBusyInfo}{\param{const wxString\&}{ msg}, \param{wxParent }{*parent = NULL}}
|
||||||
|
|
||||||
Constructs a busy info object, displays {\it msg}.
|
Constructs a busy info window as child of {\it parent} and displays {\it msg}
|
||||||
|
in it.
|
||||||
|
|
||||||
|
{\bf NB:} If {\it parent} is not {\tt NULL} you must ensure that it is not
|
||||||
|
closed while the busy info is shown.
|
||||||
|
|
||||||
|
\membersection{wxBusyInfo::\destruct{wxBusyInfo}}
|
||||||
|
|
||||||
|
\func{}{\destruct{wxBusyInfo}}{\void}
|
||||||
|
|
||||||
|
Hides and closes the window containing the information text.
|
||||||
|
|
||||||
|
@@ -39,5 +39,7 @@ Disables all top level windows of the applications with the exception of
|
|||||||
|
|
||||||
\membersection{wxWindowDisabler::\destruct{wxWindowDisabler}}
|
\membersection{wxWindowDisabler::\destruct{wxWindowDisabler}}
|
||||||
|
|
||||||
|
\func{}{\destruct{wxWindowDisabler}}{\void}
|
||||||
|
|
||||||
Reenables back the windows disabled by the constructor.
|
Reenables back the windows disabled by the constructor.
|
||||||
|
|
||||||
|
@@ -26,8 +26,8 @@
|
|||||||
|
|
||||||
class WXDLLEXPORT wxInfoFrame : public wxFrame
|
class WXDLLEXPORT wxInfoFrame : public wxFrame
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
wxInfoFrame(wxWindow *parent, const wxString& message);
|
wxInfoFrame(wxWindow *parent, const wxString& message);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -39,12 +39,13 @@ class WXDLLEXPORT wxInfoFrame : public wxFrame
|
|||||||
|
|
||||||
class WXDLLEXPORT wxBusyInfo : public wxObject
|
class WXDLLEXPORT wxBusyInfo : public wxObject
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
wxBusyInfo(const wxString& message);
|
wxBusyInfo(const wxString& message, wxWindow *parent = NULL);
|
||||||
~wxBusyInfo();
|
|
||||||
|
|
||||||
private:
|
virtual ~wxBusyInfo();
|
||||||
wxInfoFrame *m_InfoFrame;
|
|
||||||
|
private:
|
||||||
|
wxInfoFrame *m_InfoFrame;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@@ -641,7 +641,9 @@ void MyFrame::ShowProgress( wxCommandEvent& WXUNUSED(event) )
|
|||||||
|
|
||||||
void MyFrame::ShowBusyInfo(wxCommandEvent& WXUNUSED(event))
|
void MyFrame::ShowBusyInfo(wxCommandEvent& WXUNUSED(event))
|
||||||
{
|
{
|
||||||
wxBusyInfo info("Sleep^H^H^H^H^HWorkiing, please wait...\n... a bit more");
|
wxWindowDisabler disableAll;
|
||||||
|
|
||||||
|
wxBusyInfo info("Sleep^H^H^H^H^HWorkiing, please wait...", this);
|
||||||
|
|
||||||
for ( int i = 0; i < 30; i++ )
|
for ( int i = 0; i < 30; i++ )
|
||||||
{
|
{
|
||||||
|
@@ -25,18 +25,31 @@
|
|||||||
|
|
||||||
|
|
||||||
wxInfoFrame::wxInfoFrame(wxWindow *parent, const wxString& message)
|
wxInfoFrame::wxInfoFrame(wxWindow *parent, const wxString& message)
|
||||||
: wxFrame(parent, -1, wxT(""), wxPoint(0, 0), wxSize(400, 80), wxTHICK_FRAME | wxSIMPLE_BORDER | wxFRAME_TOOL_WINDOW)
|
: wxFrame(parent, -1, wxT(""),
|
||||||
|
wxDefaultPosition, wxDefaultSize,
|
||||||
|
wxSIMPLE_BORDER | wxFRAME_TOOL_WINDOW)
|
||||||
{
|
{
|
||||||
wxPanel *p = new wxPanel( this );
|
wxPanel *panel = new wxPanel( this );
|
||||||
wxStaticText *s = new wxStaticText( p, -1, message, wxPoint(20, 20), wxSize(360, 40), wxALIGN_CENTER );
|
wxStaticText *text = new wxStaticText(panel, -1, message);
|
||||||
|
|
||||||
|
panel->SetCursor(*wxHOURGLASS_CURSOR);
|
||||||
|
text->SetCursor(*wxHOURGLASS_CURSOR);
|
||||||
|
|
||||||
|
// make the frame of at least the standard size (400*80) but big enough
|
||||||
|
// for the text we show
|
||||||
|
wxSize sizeText = text->GetBestSize();
|
||||||
|
SetClientSize(wxMax(sizeText.x, 340) + 60, wxMax(sizeText.y, 40) + 40);
|
||||||
|
|
||||||
|
// need to size the panel correctly first so that text->Centre() works
|
||||||
|
panel->SetSize(GetClientSize());
|
||||||
|
|
||||||
|
text->Centre(wxBOTH);
|
||||||
Centre(wxBOTH);
|
Centre(wxBOTH);
|
||||||
p->SetCursor(*wxHOURGLASS_CURSOR);
|
|
||||||
s->SetCursor(*wxHOURGLASS_CURSOR);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wxBusyInfo::wxBusyInfo(const wxString& message) : wxObject()
|
wxBusyInfo::wxBusyInfo(const wxString& message, wxWindow *parent)
|
||||||
{
|
{
|
||||||
m_InfoFrame = new wxInfoFrame( (wxWindow*) NULL, message);
|
m_InfoFrame = new wxInfoFrame( parent, message);
|
||||||
m_InfoFrame->Show(TRUE);
|
m_InfoFrame->Show(TRUE);
|
||||||
wxYield();
|
wxYield();
|
||||||
m_InfoFrame->Refresh();
|
m_InfoFrame->Refresh();
|
||||||
|
Reference in New Issue
Block a user