]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/busyinfo.cpp
wxTipWindow can now derived from wxFrame if not wxUSE_POPUPWIN, or
[wxWidgets.git] / src / generic / busyinfo.cpp
index c443c1daa344b1564856b82204f5912e832b9518..ce2e3a45d00466acf3acf23b264eaf22d981315c 100644 (file)
@@ -7,63 +7,62 @@
 /////////////////////////////////////////////////////////////////////////////
 
 #ifdef __GNUG__
-#pragma implementation
+#pragma implementation "busyinfo.h"
 #endif
 
-#include <wx/wxprec.h>
+#include "wx/wxprec.h"
 
 #ifdef __BORDLANDC__
 #pragma hdrstop
 #endif
 
-#ifndef WXPRECOMP
-#include <wx/wx.h>
-#endif
+#if wxUSE_BUSYINFO
 
 #include "wx/busyinfo.h"
-
-
-
+#include "wx/stattext.h"
+#include "wx/panel.h"
+#include "wx/utils.h"
 
 
 wxInfoFrame::wxInfoFrame(wxWindow *parent, const wxString& message)
-    : wxFrame(parent, -1, "", 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);
-    wxStaticText *s = new wxStaticText(p, -1, message, wxPoint(20, 20), wxSize(360, 40), wxALIGN_CENTER);
-    Centre(wxBOTH);
-    p -> SetCursor(*wxHOURGLASS_CURSOR);
-    s -> SetCursor(*wxHOURGLASS_CURSOR);
-}
+    wxPanel *panel = new wxPanel( this );
+    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());
 
-wxBusyInfo::wxBusyInfo(const wxString& message) : wxObject()
+    text->Centre(wxBOTH);
+    Centre(wxBOTH);
+}
+
+wxBusyInfo::wxBusyInfo(const wxString& message, wxWindow *parent)
 {
-    m_InfoFrame = new wxInfoFrame(NULL, message);
-    m_InfoFrame -> Show(TRUE);
+    m_InfoFrame = new wxInfoFrame( parent, message);
+    m_InfoFrame->Show(TRUE);
     wxYield();
-    m_InfoFrame -> Refresh();
+    m_InfoFrame->Refresh();
     wxYield();
 }
 
-
-
 wxBusyInfo::~wxBusyInfo()
 {
-    m_InfoFrame -> Show(FALSE);
-    m_InfoFrame -> Close();
+    m_InfoFrame->Show(FALSE);
+    m_InfoFrame->Close();
     wxYield();
 }
 
-
-
-
-
-
-
-
-
-
+#endif
+  // wxUSE_BUSYINFO