]> git.saurik.com Git - wxWidgets.git/commitdiff
Small changed to wxExtDialog
authorRobert Roebling <robert@roebling.de>
Sun, 4 Jul 1999 13:50:13 +0000 (13:50 +0000)
committerRobert Roebling <robert@roebling.de>
Sun, 4 Jul 1999 13:50:13 +0000 (13:50 +0000)
  Made DnD use long instead of int
  Made DnD sample compile again
  Re-Updated wxTextDialog
  Added GetDefaultSize() to wxButton

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2951 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

18 files changed:
include/wx/generic/extdlgg.h
include/wx/gtk/button.h
include/wx/gtk/dnd.h
include/wx/gtk/textdlg.h
include/wx/gtk1/button.h
include/wx/gtk1/dnd.h
include/wx/gtk1/textdlg.h
samples/dialogs/dialogs.cpp
samples/dnd/dnd.cpp
src/generic/extdlgg.cpp
src/gtk/app.cpp
src/gtk/button.cpp
src/gtk/dnd.cpp
src/gtk/textdlg.cpp
src/gtk1/app.cpp
src/gtk1/button.cpp
src/gtk1/dnd.cpp
src/gtk1/textdlg.cpp

index 7691d1cfbfff4558430c4d3782b06cec2b8be0b9..04d6980dda8058b581279e60e2cc892f002d23d8 100644 (file)
@@ -62,6 +62,14 @@ public:
         { m_clientWindow = clientWindow; }
     wxWindow *GetClientWindow() 
         { return m_clientWindow; }
+    void SetClientWindowMargin( int margin )
+        { m_clientWindowMargin = margin; }
+    int GetClientWindowMargin()
+        { return m_clientWindowMargin; }
+    void SetSpacePerButton( wxSize space )
+        { m_spacePerButton = space; }
+    wxSize GetSpacePerButton()
+        { return m_spacePerButton; }
 
     void AddButton( wxButton *button );
 
@@ -77,7 +85,7 @@ public:
     void OnYes(wxCommandEvent& event);
     void OnNo(wxCommandEvent& event);
     void OnCancel(wxCommandEvent& event);
-
+    
 protected:
     wxWindow      *m_clientWindow;
     long           m_extraStyle;
@@ -85,7 +93,9 @@ protected:
 #if wxUSE_STATLINE
     wxStaticLine  *m_statLine;
 #endif
-    
+    int            m_clientWindowMargin;    
+    wxSize         m_spacePerButton;
+
     wxSize LayoutButtons();
 
 private:
index 596299520de050ad6214653289ebec70d85a2703..3bd5a5f28a8ae585cff67b152058676121a84c31 100644 (file)
@@ -60,6 +60,8 @@ class wxButton: public wxControl
     void SetDefault();
     void SetLabel( const wxString &label );
     bool Enable( bool enable );
+
+    static wxSize GetDefaultSize();
     
   // implementation        
   
index 0e76509e1ab09807074a4126f0cdf8dfe57df315..2dba9cef4928a0c45912398bf4bf913eb1d04323 100644 (file)
@@ -57,17 +57,17 @@ public:
   /* may be overridden to reject certain formats or drops
      on certain areas. always returns TRUE by default
      indicating that you'd accept the data from the drag. */
-  virtual bool OnMove( int x, int y );
+  virtual bool OnMove( long x, long y );
     
   /* has to be overridden to accept a drop event. call 
      IsSupported() to ask which formats are available
      and then call RequestData() to indicate the format 
      you request. */
-  virtual bool OnDrop( int x, int y );
+  virtual bool OnDrop( long x, long y );
   
   /* this gets called once the data has actually arrived. get
      it with GetData(). this has to be overridden. */
-  virtual bool OnData( int x, int y );
+  virtual bool OnData( long x, long y );
 
   /* called from within OnDrop() to request a certain format
      from the drop event. */
@@ -106,12 +106,12 @@ public:
 
   wxTextDropTarget() {}
 
-  virtual bool OnMove( int x, int y );
-  virtual bool OnDrop( int x, int y );
-  virtual bool OnData( int x, int y );
+  virtual bool OnMove( long x, long y );
+  virtual bool OnDrop( long x, long y );
+  virtual bool OnData( long x, long y );
     
   /* you have to override OnDropData to get at the text */
-  virtual bool OnDropText( int x, int y, const wxChar *text ) = 0;
+  virtual bool OnDropText( long x, long y, const wxChar *text ) = 0;
     
 };
 
@@ -129,12 +129,12 @@ public:
   /* see SetId() below for explanation */
   wxPrivateDropTarget( const wxString &id );
   
-  virtual bool OnMove( int x, int y );
-  virtual bool OnDrop( int x, int y );
-  virtual bool OnData( int x, int y );
+  virtual bool OnMove( long x, long y );
+  virtual bool OnDrop( long x, long y );
+  virtual bool OnData( long x, long y );
   
   /* you have to override OnDropData to get at the data */
-  virtual bool OnDropData( int x, int y, void *data, size_t size ) = 0;
+  virtual bool OnDropData( long x, long y, void *data, size_t size ) = 0;
     
   /* the string ID identifies the format of clipboard or DnD data. a word
      processor would e.g. add a wxTextDataObject and a wxPrivateDataObject
@@ -158,12 +158,12 @@ public:
     
   wxFileDropTarget() {}
     
-  virtual bool OnMove( int x, int y );
-  virtual bool OnDrop( int x, int y );
-  virtual bool OnData( int x, int y );
+  virtual bool OnMove( long x, long y );
+  virtual bool OnDrop( long x, long y );
+  virtual bool OnData( long x, long y );
   
   /* you have to override OnDropFiles to get at the file names */
-  virtual bool OnDropFiles( int x, int y, size_t nFiles, const wxChar * const aszFiles[] ) = 0;
+  virtual bool OnDropFiles( long x, long y, size_t nFiles, const wxChar * const aszFiles[] ) = 0;
 
 };
 
index e93dd84f5bc6c133376a166d544ffb09c2ab2554..eb2c899db7b2643b0317af54eb2143fd3996235e 100644 (file)
@@ -18,6 +18,7 @@
 
 #include "wx/setup.h"
 #include "wx/dialog.h"
+#include "wx/extdlg.h"
 
 // Handy dialog functions (will be converted into classes at some point)
 WXDLLEXPORT_DATA(extern const wxChar*) wxGetTextFromUserPromptStr;
index 596299520de050ad6214653289ebec70d85a2703..3bd5a5f28a8ae585cff67b152058676121a84c31 100644 (file)
@@ -60,6 +60,8 @@ class wxButton: public wxControl
     void SetDefault();
     void SetLabel( const wxString &label );
     bool Enable( bool enable );
+
+    static wxSize GetDefaultSize();
     
   // implementation        
   
index 0e76509e1ab09807074a4126f0cdf8dfe57df315..2dba9cef4928a0c45912398bf4bf913eb1d04323 100644 (file)
@@ -57,17 +57,17 @@ public:
   /* may be overridden to reject certain formats or drops
      on certain areas. always returns TRUE by default
      indicating that you'd accept the data from the drag. */
-  virtual bool OnMove( int x, int y );
+  virtual bool OnMove( long x, long y );
     
   /* has to be overridden to accept a drop event. call 
      IsSupported() to ask which formats are available
      and then call RequestData() to indicate the format 
      you request. */
-  virtual bool OnDrop( int x, int y );
+  virtual bool OnDrop( long x, long y );
   
   /* this gets called once the data has actually arrived. get
      it with GetData(). this has to be overridden. */
-  virtual bool OnData( int x, int y );
+  virtual bool OnData( long x, long y );
 
   /* called from within OnDrop() to request a certain format
      from the drop event. */
@@ -106,12 +106,12 @@ public:
 
   wxTextDropTarget() {}
 
-  virtual bool OnMove( int x, int y );
-  virtual bool OnDrop( int x, int y );
-  virtual bool OnData( int x, int y );
+  virtual bool OnMove( long x, long y );
+  virtual bool OnDrop( long x, long y );
+  virtual bool OnData( long x, long y );
     
   /* you have to override OnDropData to get at the text */
-  virtual bool OnDropText( int x, int y, const wxChar *text ) = 0;
+  virtual bool OnDropText( long x, long y, const wxChar *text ) = 0;
     
 };
 
@@ -129,12 +129,12 @@ public:
   /* see SetId() below for explanation */
   wxPrivateDropTarget( const wxString &id );
   
-  virtual bool OnMove( int x, int y );
-  virtual bool OnDrop( int x, int y );
-  virtual bool OnData( int x, int y );
+  virtual bool OnMove( long x, long y );
+  virtual bool OnDrop( long x, long y );
+  virtual bool OnData( long x, long y );
   
   /* you have to override OnDropData to get at the data */
-  virtual bool OnDropData( int x, int y, void *data, size_t size ) = 0;
+  virtual bool OnDropData( long x, long y, void *data, size_t size ) = 0;
     
   /* the string ID identifies the format of clipboard or DnD data. a word
      processor would e.g. add a wxTextDataObject and a wxPrivateDataObject
@@ -158,12 +158,12 @@ public:
     
   wxFileDropTarget() {}
     
-  virtual bool OnMove( int x, int y );
-  virtual bool OnDrop( int x, int y );
-  virtual bool OnData( int x, int y );
+  virtual bool OnMove( long x, long y );
+  virtual bool OnDrop( long x, long y );
+  virtual bool OnData( long x, long y );
   
   /* you have to override OnDropFiles to get at the file names */
-  virtual bool OnDropFiles( int x, int y, size_t nFiles, const wxChar * const aszFiles[] ) = 0;
+  virtual bool OnDropFiles( long x, long y, size_t nFiles, const wxChar * const aszFiles[] ) = 0;
 
 };
 
index e93dd84f5bc6c133376a166d544ffb09c2ab2554..eb2c899db7b2643b0317af54eb2143fd3996235e 100644 (file)
@@ -18,6 +18,7 @@
 
 #include "wx/setup.h"
 #include "wx/dialog.h"
+#include "wx/extdlg.h"
 
 // Handy dialog functions (will be converted into classes at some point)
 WXDLLEXPORT_DATA(extern const wxChar*) wxGetTextFromUserPromptStr;
index a3efceb3557f805e51546f9f51e9fb21687b1dbb..a4fde2951be0fe31ed0ebfe2c99ba7201f05de2a 100644 (file)
@@ -117,8 +117,8 @@ void MyFrame::ExtDialog(wxCommandEvent& WXUNUSED(event) )
     // other platforms. Also, it will not be resizable
     // anywhere.
     
-    wxExtDialog dialog( this, -1, "Test 1 for wxExtDialog", 
-      wxOK|wxFORWARD|wxBACKWARD );
+    wxExtDialog dialog( this, -1, "Test 1 for wxExtDialog", wxOK|wxFORWARD|wxBACKWARD );
+    dialog.AddButton( new wxButton( &dialog, -1, "Custom") );
 
     dialog.SetClientWindow( new wxTextCtrl( &dialog, -1, "Test", wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE ) );
 
@@ -133,7 +133,8 @@ void MyFrame::ExtDialog(wxCommandEvent& WXUNUSED(event) )
     // all platforms.
     
     wxExtDialog dialog2( this, -1, "Test 2 for wxExtDialog", 
-      wxOK|wxFORWARD|wxBACKWARD|wxCANCEL, wxDefaultPosition, wxSize(400,170),
+      wxOK|wxFORWARD|wxBACKWARD|wxCANCEL, 
+      wxDefaultPosition, wxSize(400,170),
       wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER | wxED_BUTTONS_RIGHT | wxED_STATIC_LINE | wxED_CLIENT_MARGIN );
 
     dialog2.SetClientWindow( new wxTextCtrl( &dialog2, -1, "Test", wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE ) );
index 0b3e1c894fc4f87182b30339a64a03bf7620a56d..92b29d29e749dff6570ac2d9eac4b973d94ff860 100644 (file)
 // file names) we drop on them
 // ----------------------------------------------------------------------------
 
-// FIXME this is ugly and should be fixed in the library itself
-#ifdef __WXMSW__
-    typedef long wxDropPointCoord;
-#else // wxGTK
-    typedef int wxDropPointCoord;
-#endif // MSW/GTK
+typedef long wxDropPointCoord;
 
 class DnDText : public wxTextDropTarget
 {
@@ -206,80 +201,14 @@ DnDFrame::DnDFrame(wxFrame *frame, char *title, int x, int y, int w, int h)
     m_ctrlText  = new wxListBox(this, -1, pos, size, 1, &strText, wxLB_HSCROLL);
 
     m_ctrlLog   = new wxTextCtrl(this, -1, "", pos, size,
-            wxTE_MULTILINE | wxTE_READONLY |
-            wxSUNKEN_BORDER );
-
-    // redirect log messages to the text window (don't forget to delete it!)
-    m_pLog = new wxLogTextCtrl(m_ctrlLog);
-    m_pLogPrev = wxLog::SetActiveTarget(m_pLog);
-
-    // associate drop targets with 2 text controls
-    m_ctrlFile->SetDropTarget(new DnDFile(m_ctrlFile));
-    m_ctrlText->SetDropTarget( new DnDText(m_ctrlText) );
-
-    wxLayoutConstraints *c;
-
-    // Top-left listbox
-    c = new wxLayoutConstraints;
-    c->left.SameAs(this, wxLeft);
-    c->top.SameAs(this, wxTop);
-    c->right.PercentOf(this, wxRight, 50);
-    c->height.PercentOf(this, wxHeight, 40);
-    m_ctrlFile->SetConstraints(c);
-
-    // Top-right listbox
-    c = new wxLayoutConstraints;
-    c->left.SameAs    (m_ctrlFile, wxRight);
-    c->top.SameAs     (this, wxTop);
-    c->right.SameAs   (this, wxRight);
-    c->height.PercentOf(this, wxHeight, 40);
-    m_ctrlText->SetConstraints(c);
-
-    // Lower text control
-    c = new wxLayoutConstraints;
-    c->left.SameAs    (this, wxLeft);
-    c->right.SameAs   (this, wxRight);
-    c->height.PercentOf(this, wxHeight, 40);
-    c->top.SameAs(m_ctrlText, wxBottom);
-    m_ctrlLog->SetConstraints(c);
-
-  // construct menu
-  wxMenu *file_menu = new wxMenu;
-  file_menu->Append(Menu_Drag, "&Test drag...");
-  file_menu->AppendSeparator();
-  file_menu->Append(Menu_Quit, "E&xit");
-
-  wxMenu *log_menu = new wxMenu;
-  log_menu->Append(Menu_Clear, "Clear");
-
-  wxMenu *help_menu = new wxMenu;
-  help_menu->Append(Menu_Help, "&Help...");
-  help_menu->AppendSeparator();
-  help_menu->Append(Menu_About, "&About");
-
-  wxMenuBar *menu_bar = new wxMenuBar;
-  menu_bar->Append(file_menu, "&File");
-  menu_bar->Append(log_menu,  "&Log");
-  menu_bar->Append(help_menu, "&Help");
-
-  SetMenuBar(menu_bar);
-
-  // make a panel with 3 subwindows
-  wxPoint pos(0, 0);
-  wxSize  size(400, 200);
-
-  wxString strFile("Drop files here!"), strText("Drop text on me");
-
-  m_ctrlFile  = new wxListBox(this, -1, pos, size, 1, &strFile, wxLB_HSCROLL);
-  m_ctrlText  = new wxListBox(this, -1, pos, size, 1, &strText, wxLB_HSCROLL);
-
-  m_ctrlLog   = new wxTextCtrl(this, -1, "", pos, size,
                                wxTE_MULTILINE | wxTE_READONLY |
                                wxSUNKEN_BORDER );
 
-  // redirect log messages to the text window (don't forget to delete it!)
+#if wxUSE_STD_IOSTREAM  
+// redirect log messages to the text window (don't forget to delete it!)
   m_pLog = new wxLogTextCtrl(m_ctrlLog);
   m_pLogPrev = wxLog::SetActiveTarget(m_pLog);
+#endif
 
   // associate drop targets with 2 text controls
   m_ctrlFile->SetDropTarget(new DnDFile(m_ctrlFile));
@@ -427,10 +356,12 @@ void DnDFrame::OnRightDown(wxMouseEvent &event )
 
 DnDFrame::~DnDFrame()
 {
+#if wxUSE_STD_IOSTREAM  
     if ( m_pLog != NULL ) {
         if ( wxLog::SetActiveTarget(m_pLogPrev) == m_pLog )
             delete m_pLog;
     }
+#endif
 }
 
 // ---------------------------------------------------------------------------
index 77bf06c4bd121eba73187e355cc0a581cd0047f2..7ae0ec2eecc283980b8b594bca8336b2925c3d9e 100644 (file)
@@ -37,8 +37,6 @@
 // wxExtDialog
 //-----------------------------------------------------------------------------
 
-#define STATIC_LINE_MARGIN   15
-#define CLIENT_AREA_MARGIN   10
 #define BUTTON_AREA_MARGIN   10
 
 #if !USE_SHARED_LIBRARY
@@ -70,6 +68,28 @@ bool wxExtDialog::Create( wxWindow *parent, wxWindowID id,
       
     m_extraStyle = extraStyle;
     
+    m_clientWindowMargin = 10;
+    
+    if (m_windowStyle & wxED_BUTTONS_RIGHT)
+    {
+        m_spacePerButton.x = wxButton::GetDefaultSize().x + 18;
+        m_spacePerButton.y = wxButton::GetDefaultSize().y + 8;
+    }
+    else
+    {
+        m_spacePerButton.x = wxButton::GetDefaultSize().x + 8;
+        m_spacePerButton.y = wxButton::GetDefaultSize().y + 18;
+    }
+
+#if defined(__WXGTK__) || defined(__WXMOTIF__)
+    // Under Motif and GTK, the default button has a big frame around
+    // it and to avoid overlapping buttons we make the margin bigger.
+    // We could give other platforms a bigger margin as well, but this
+    // wouldn't be standard L&F.
+    m_spacePerButton.x += 10;
+    m_spacePerButton.y += 10;
+#endif
+       
     wxButton *ok = (wxButton *) NULL;
     wxButton *cancel = (wxButton *) NULL;
     wxButton *yes = (wxButton *) NULL;
@@ -112,7 +132,10 @@ bool wxExtDialog::Create( wxWindow *parent, wxWindowID id,
         AddButton( new wxButton( this, wxID_SETUP, _("Setup")  ) );
 
     if (m_extraStyle & wxMORE) 
-        AddButton( new wxButton( this, wxID_MORE, _("More..")  ) );
+        AddButton( new wxButton( this, wxID_MORE, _("More...")  ) );
+
+    if (m_extraStyle & wxHELP)
+        AddButton( new wxButton( this, wxID_HELP, _("Help")  ) );
 
     if (m_extraStyle & wxCANCEL) 
     {
@@ -211,10 +234,10 @@ void wxExtDialog::OnSize( wxSizeEvent &WXUNUSED(event) )
     if (m_clientWindow)
     {
         if (m_windowStyle & wxED_CLIENT_MARGIN)
-         m_clientWindow->SetSize( CLIENT_AREA_MARGIN,
-                                  CLIENT_AREA_MARGIN,
-                                  client_size.x - 2*CLIENT_AREA_MARGIN,
-                                  client_size.y - 2*CLIENT_AREA_MARGIN );
+         m_clientWindow->SetSize( m_clientWindowMargin,
+                                  m_clientWindowMargin,
+                                  client_size.x - 2*m_clientWindowMargin,
+                                  client_size.y - 2*m_clientWindowMargin );
        else
           m_clientWindow->SetSize( 0, 0, client_size.x, client_size.y );
        
@@ -249,29 +272,22 @@ wxSize wxExtDialog::GetButtonAreaSize()
     
     wxSize ret(0,0);
 
-    // this routine can be improved to measure the string length
-    // of the button text or the bitmap size if using wxBmpButton
-    // or to query the standard button size somehow.
-    
-    int button_size_and_margin_x = 110;
-    int button_size_and_margin_y = 44;
-       
     if (m_windowStyle & wxED_BUTTONS_RIGHT)
     {
-       ret.x = button_size_and_margin_x;
-        ret.y = m_buttons.GetCount()*button_size_and_margin_y + 2*BUTTON_AREA_MARGIN;
+       ret.x = m_spacePerButton.x;
+        ret.y = m_buttons.GetCount()*m_spacePerButton.y + 2*BUTTON_AREA_MARGIN;
 #if wxUSE_STATLINE
         if (m_statLine)
-           ret.x += STATIC_LINE_MARGIN;
+           ret.x += wxStaticLine::GetDefaultSize();
 #endif
     }
     else
     {
-        ret.x = m_buttons.GetCount()*button_size_and_margin_x + 2*BUTTON_AREA_MARGIN;
-       ret.y = button_size_and_margin_y;
+        ret.x = m_buttons.GetCount()*m_spacePerButton.x + 2*BUTTON_AREA_MARGIN;
+       ret.y = m_spacePerButton.y;
 #if wxUSE_STATLINE
         if (m_statLine)
-           ret.y += STATIC_LINE_MARGIN;
+           ret.y += wxStaticLine::GetDefaultSize();
 #endif
     }
     
@@ -288,6 +304,11 @@ wxSize wxExtDialog::LayoutButtons()
     if (m_windowStyle & wxED_BUTTONS_RIGHT)
     {
         area_used.y = client_area.y;
+       wxSize area_used_by_buttons( area_used );
+#if wxUSE_STATLINE
+        if (m_statLine)
+           area_used_by_buttons.x -= wxStaticLine::GetDefaultSize();
+#endif
 
         int space_for_each_button = (client_area.y-2*BUTTON_AREA_MARGIN) / m_buttons.GetCount();
         int n = 0;
@@ -297,12 +318,12 @@ wxSize wxExtDialog::LayoutButtons()
             wxButton *button = (wxButton*)node->Data();
            
            wxSize button_size( button->GetSize() );
-           if (button_size.x < 80) button_size.x = 80;
+           if (button_size.x < wxButton::GetDefaultSize().x) button_size.x = wxButton::GetDefaultSize().x;
            
            int center_of_button_y = n*space_for_each_button + space_for_each_button/2;
            int button_y = BUTTON_AREA_MARGIN + center_of_button_y - button_size.y/2;
            
-           int center_of_button_x = client_area.x - area_used.x/2;
+           int center_of_button_x = client_area.x - area_used_by_buttons.x/2;
            int button_x = center_of_button_x - button_size.x/2;
            
             button->SetSize( button_x, button_y, button_size.x, button_size.y );
@@ -313,7 +334,7 @@ wxSize wxExtDialog::LayoutButtons()
        
 #if wxUSE_STATLINE
         if (m_statLine)
-           m_statLine->SetSize( client_area.x - area_used.x
+           m_statLine->SetSize( client_area.x - area_used_by_buttons.x - wxStaticLine::GetDefaultSize()
                                 0, 
                                 wxStaticLine::GetDefaultSize(), 
                                 client_area.y );
@@ -322,6 +343,11 @@ wxSize wxExtDialog::LayoutButtons()
     else
     {
         area_used.x = client_area.x;
+       wxSize area_used_by_buttons( area_used );
+#if wxUSE_STATLINE
+        if (m_statLine)
+           area_used_by_buttons.y -= wxStaticLine::GetDefaultSize();
+#endif
 
         int space_for_each_button = (client_area.x-2*BUTTON_AREA_MARGIN) / m_buttons.GetCount();
         int n = 0;
@@ -331,12 +357,12 @@ wxSize wxExtDialog::LayoutButtons()
             wxButton *button = (wxButton*)node->Data();
            
            wxSize button_size( button->GetSize() );
-           if (button_size.x < 80) button_size.x = 80;
+           if (button_size.x < wxButton::GetDefaultSize().x) button_size.x = wxButton::GetDefaultSize().x;
            
            int center_of_button_x = n*space_for_each_button + space_for_each_button/2;
            int button_x = BUTTON_AREA_MARGIN + center_of_button_x - button_size.x/2;
            
-           int center_of_button_y = client_area.y - area_used.y/2;
+           int center_of_button_y = client_area.y - area_used_by_buttons.y/2;
            int button_y = center_of_button_y - button_size.y/2;
            
             button->SetSize( button_x, button_y, button_size.x, button_size.y );
@@ -348,7 +374,7 @@ wxSize wxExtDialog::LayoutButtons()
 #if wxUSE_STATLINE
         if (m_statLine)
            m_statLine->SetSize( 0, 
-                                client_area.y - area_used.y,
+                                client_area.y - area_used_by_buttons.y - wxStaticLine::GetDefaultSize(),
                                 client_area.x, 
                                 wxStaticLine::GetDefaultSize() );
 #endif
index a733aede958496b98533f3b35b92ae19e82faf9a..e7ef18726865ce23f54daa3edd3e328e7500aea2 100644 (file)
@@ -225,6 +225,7 @@ void wxapp_install_idle_handler()
     g_isIdle = FALSE;
 }
 
+/*
 #if wxUSE_THREADS
 static gint wxapp_wakeup_timerout_callback( gpointer WXUNUSED(data) )
 {
@@ -232,23 +233,23 @@ static gint wxapp_wakeup_timerout_callback( gpointer WXUNUSED(data) )
     wxTheApp->m_wakeUpTimerTag = 0;
     
 #if (GTK_MINOR_VERSION > 0)
-    /* when getting called from GDK's time-out handler 
-       we are no longer within GDK's grab on the GUI
-       thread so we must lock it here ourselves */
+    // when getting called from GDK's time-out handler 
+    // we are no longer within GDK's grab on the GUI
+    // thread so we must lock it here ourselves
     GDK_THREADS_ENTER ();
 #endif
     
-    /* unblock other threads wishing to do some GUI things */
+    // unblock other threads wishing to do some GUI things
     wxMutexGuiLeave();
     
-    /* wake up other threads */
+    // wake up other threads
     wxUsleep( 1 );
     
-    /* block other thread again  */
+    // block other thread again
     wxMutexGuiEnter();
     
 #if (GTK_MINOR_VERSION > 0)
-    /* release lock again */
+    // release lock again
     GDK_THREADS_LEAVE ();
 #endif
     
@@ -257,6 +258,7 @@ static gint wxapp_wakeup_timerout_callback( gpointer WXUNUSED(data) )
     return TRUE;
 }
 #endif
+*/
 
 //-----------------------------------------------------------------------------
 // wxApp
@@ -277,9 +279,11 @@ wxApp::wxApp()
 
     m_idleTag = gtk_idle_add( wxapp_idle_callback, (gpointer) NULL );
     
+/*
 #if wxUSE_THREADS
     m_wakeUpTimerTag = gtk_timeout_add( 20, wxapp_wakeup_timerout_callback, (gpointer) NULL );
 #endif
+*/
 
     m_colorCube = (unsigned char*) NULL;
 }
@@ -288,9 +292,11 @@ wxApp::~wxApp()
 {
     if (m_idleTag) gtk_idle_remove( m_idleTag );
 
+/*
 #if wxUSE_THREADS
     if (m_wakeUpTimerTag) gtk_timeout_remove( m_wakeUpTimerTag );
 #endif
+*/
     
     if (m_colorCube) free(m_colorCube);
 }
index 613aab8a05068dbb9222ba0b19278b94f099ecbc..cca8c9ebd31e37a414d010cb08ba46b067d8104b 100644 (file)
@@ -120,6 +120,11 @@ void wxButton::SetDefault(void)
     SetSize( m_x, m_y, m_width, m_height );
 }
 
+static wxSize wxButton::GetDefaultSize()
+{
+    return wxSize(80,26);
+}
+
 void wxButton::SetLabel( const wxString &label )
 {
     wxCHECK_RET( m_widget != NULL, _T("invalid button") );
index 9596cf7d135b041d42462931c74cb4a0fd1b4f04..289765439da659237a3cdcdae28045470e02b9db 100644 (file)
@@ -337,17 +337,17 @@ void wxDropTarget::OnLeave()
 {
 }
 
-bool wxDropTarget::OnMove( int WXUNUSED(x), int WXUNUSED(y) )
+bool wxDropTarget::OnMove( long WXUNUSED(x), long WXUNUSED(y) )
 {
     return TRUE;
 }
 
-bool wxDropTarget::OnDrop( int WXUNUSED(x), int WXUNUSED(y) )
+bool wxDropTarget::OnDrop( long WXUNUSED(x), long WXUNUSED(y) )
 {
     return FALSE;
 }
 
-bool wxDropTarget::OnData( int WXUNUSED(x), int WXUNUSED(y) )
+bool wxDropTarget::OnData( long WXUNUSED(x), long WXUNUSED(y) )
 {
     return FALSE;
 }
@@ -472,12 +472,12 @@ void wxDropTarget::RegisterWidget( GtkWidget *widget )
 // wxTextDropTarget
 //-------------------------------------------------------------------------
 
-bool wxTextDropTarget::OnMove( int WXUNUSED(x), int WXUNUSED(y) )
+bool wxTextDropTarget::OnMove( long WXUNUSED(x), long WXUNUSED(y) )
 {
     return IsSupported( wxDF_TEXT );
 }
 
-bool wxTextDropTarget::OnDrop( int WXUNUSED(x), int WXUNUSED(y) )
+bool wxTextDropTarget::OnDrop( long WXUNUSED(x), long WXUNUSED(y) )
 {
     if (IsSupported( wxDF_TEXT ))
     {
@@ -488,7 +488,7 @@ bool wxTextDropTarget::OnDrop( int WXUNUSED(x), int WXUNUSED(y) )
     return FALSE;
 }
 
-bool wxTextDropTarget::OnData( int x, int y )
+bool wxTextDropTarget::OnData( long x, long y )
 {
     wxTextDataObject data;
     if (!GetData( &data )) return FALSE;
@@ -512,12 +512,12 @@ wxPrivateDropTarget::wxPrivateDropTarget( const wxString &id )
     m_id = id;
 }
 
-bool wxPrivateDropTarget::OnMove( int WXUNUSED(x), int WXUNUSED(y) )
+bool wxPrivateDropTarget::OnMove( long WXUNUSED(x), long WXUNUSED(y) )
 {
     return IsSupported( m_id );
 }
 
-bool wxPrivateDropTarget::OnDrop( int WXUNUSED(x), int WXUNUSED(y) )
+bool wxPrivateDropTarget::OnDrop( long WXUNUSED(x), long WXUNUSED(y) )
 {
     if (!IsSupported( m_id ))
     {
@@ -528,7 +528,7 @@ bool wxPrivateDropTarget::OnDrop( int WXUNUSED(x), int WXUNUSED(y) )
     return FALSE;
 }
 
-bool wxPrivateDropTarget::OnData( int x, int y )
+bool wxPrivateDropTarget::OnData( long x, long y )
 {
     if (!IsSupported( m_id )) return FALSE;
 
@@ -544,12 +544,12 @@ bool wxPrivateDropTarget::OnData( int x, int y )
 // A drop target which accepts files (dragged from File Manager or Explorer)
 //----------------------------------------------------------------------------
 
-bool wxFileDropTarget::OnMove( int WXUNUSED(x), int WXUNUSED(y) )
+bool wxFileDropTarget::OnMove( long WXUNUSED(x), long WXUNUSED(y) )
 {
     return IsSupported( wxDF_FILENAME );
 }
 
-bool wxFileDropTarget::OnDrop( int x, int y )
+bool wxFileDropTarget::OnDrop( long x, long y )
 {
     if (IsSupported( wxDF_FILENAME ))
     {
@@ -560,7 +560,7 @@ bool wxFileDropTarget::OnDrop( int x, int y )
     return FALSE;
 }
 
-bool wxFileDropTarget::OnData( int x, int y )
+bool wxFileDropTarget::OnData( long x, long y )
 {
     wxFileDataObject data;
     if (!GetData( &data )) return FALSE;
index 313ab0f8c892201e8ff9146cfee093da0baf740a..5ffe1cafdcdfdfe351db5abf8cd43774fe3b16f7 100644 (file)
 #endif
 
 #ifndef WX_PRECOMP
-#include <stdio.h>
-#include "wx/utils.h"
-#include "wx/dialog.h"
-#include "wx/listbox.h"
-#include "wx/button.h"
-#include "wx/stattext.h"
-#include "wx/textctrl.h"
-#include "wx/layout.h"
-#include "wx/intl.h"
+  #include <stdio.h>
+  #include "wx/utils.h"
+  #include "wx/dialog.h"
+  #include "wx/button.h"
+  #include "wx/stattext.h"
+  #include "wx/textctrl.h"
+  #include "wx/intl.h"
+#endif
+
+#if wxUSE_STATLINE
+  #include "wx/statline.h"
 #endif
 
 #include "wx/gtk/textdlg.h"
 
+/* Split message, using constraints to position controls */
+static wxSize wxSplitMessage2( const wxString &message, wxWindow *parent )
+{
+    int y = 10;
+    int w = 50;
+    wxString line( _T("") );
+    for (size_t pos = 0; pos < message.Len(); pos++)
+    {
+        if (message[pos] == _T('\n'))
+        {
+            if (!line.IsEmpty())
+            {
+                wxStaticText *s1 = new wxStaticText( parent, -1, line, wxPoint(15,y) );
+                wxSize size1( s1->GetSize() );
+                if (size1.x > w) w = size1.x;
+                line = _T("");
+            }
+            y += 18;
+        }
+        else
+        {
+            line += message[pos];
+        }
+    }
+    
+    if (!line.IsEmpty())
+    {
+        wxStaticText *s2 = new wxStaticText( parent, -1, line, wxPoint(15,y) );
+        wxSize size2( s2->GetSize() );
+        if (size2.x > w) w = size2.x;
+    }
+        
+    y += 18;
+    
+    return wxSize(w+30,y);
+}
+
 // wxTextEntryDialog
 
 #if !USE_SHARED_LIBRARY
@@ -44,109 +83,70 @@ END_EVENT_TABLE()
 IMPLEMENT_CLASS(wxTextEntryDialog, wxDialog)
 #endif
 
-// Split message, using constraints to position controls
-static void wxSplitMessage2(const wxChar *message, wxList *messageList, wxWindow *parent, wxRowColSizer *sizer)
-{
-  wxChar *copyMessage = copystring(message);
-  size_t i = 0;
-  size_t len = wxStrlen(copyMessage);
-  wxChar *currentMessage = copyMessage;
-
-//  wxWindow *lastWindow = parent;
-
-  while (i < len) {
-    while ((i < len) && (copyMessage[i] != _T('\n'))) i++;
-    if (i < len) copyMessage[i] = 0;
-    wxStaticText *mess = new wxStaticText(parent, -1, currentMessage);
-
-/*
-    wxLayoutConstraints *c = new wxLayoutConstraints;
-    c->left.SameAs             (parent, wxLeft, 10);
-    c->top.SameAs              (lastWindow, wxBottom, 5);
-    c->right.AsIs                      ();
-    c->height.AsIs                     ();
-
-    mess->SetConstraints(c);
-*/
-    sizer->AddSizerChild(mess);
-
-    messageList->Append(mess);
-
-    currentMessage = copyMessage + i + 1;
-  }
-  delete[] copyMessage;
-}
-
 wxTextEntryDialog::wxTextEntryDialog(wxWindow *parent, const wxString& message, const wxString& caption,
         const wxString& value, long style, const wxPoint& pos):
        wxDialog(parent, -1, caption, pos, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL|wxTAB_TRAVERSAL)
 {
-       m_dialogStyle = style;
-       m_value = value;
-
-       wxBeginBusyCursor();
-
-       wxSizer *topSizer = new wxSizer(this, wxSizerShrink);
-       topSizer->SetBorder(10, 10);
-
-       wxRowColSizer *messageSizer = new wxRowColSizer(topSizer, wxSIZER_COLS, 100);
-       messageSizer->SetName("messageSizer");
-
-//    bool centre = ((style & wxCENTRE) == wxCENTRE);
-
-       wxList messageList;
-       wxSplitMessage2(message, &messageList, this, messageSizer);
-
-       // Insert a spacer
-       wxSpacingSizer *spacingSizer = new wxSpacingSizer(topSizer, wxBelow, messageSizer, 10);
-
-       wxTextCtrl *textCtrl = new wxTextCtrl(this, wxID_TEXT, value, wxPoint(-1, -1), wxSize(350, -1));
-
-       wxRowColSizer *textSizer = new wxRowColSizer(topSizer, wxSIZER_ROWS);
-       textSizer->AddSizerChild(textCtrl);
-       textSizer->SetName("textSizer");
-
-       // Create constraints for the text sizer
-       wxLayoutConstraints *textC = new wxLayoutConstraints;
-       textC->left.SameAs              (messageSizer, wxLeft);
-       textC->top.Below                (spacingSizer);
-       textSizer->SetConstraints(textC);
-
-       // Insert another spacer
-       wxSpacingSizer *spacingSizer2 = new wxSpacingSizer(topSizer, wxBelow, textSizer, 10);
-       spacingSizer->SetName("spacingSizer2");
-
-       // Insert a sizer for the buttons
-       wxRowColSizer *buttonSizer = new wxRowColSizer(topSizer, wxSIZER_ROWS);
-       buttonSizer->SetName("buttonSizer");
-
-       // Specify constraints for the button sizer
-       wxLayoutConstraints *c = new wxLayoutConstraints;
-       c->width.AsIs           ();
-       c->height.AsIs          ();
-       c->top.Below            (spacingSizer2);
-       c->centreX.SameAs       (textSizer, wxCentreX);
-       buttonSizer->SetConstraints(c);
-       buttonSizer->SetSpacing(12,0);
-
-    wxButton *ok = NULL;
-       wxButton *cancel = NULL;
-
-  if (style & wxOK) {
-    ok = new wxButton(this, wxID_OK, _("OK"), wxDefaultPosition, wxSize(75,-1));
-       buttonSizer->AddSizerChild(ok);
-  }
-
-  if (style & wxCANCEL) {
-    cancel = new wxButton(this, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxSize(75,-1));
-       buttonSizer->AddSizerChild(cancel);
-  }
+    m_dialogStyle = style;
+    m_value = value;
+
+    wxBeginBusyCursor();
+
+    wxSize message_size( wxSplitMessage2( message, this ) );
+
+    wxButton *ok = (wxButton *) NULL;
+    wxButton *cancel = (wxButton *) NULL;
+    wxList m_buttons;
+    
+    int y = message_size.y + 15;
+    
+    wxTextCtrl *textCtrl = new wxTextCtrl(this, wxID_TEXT, value, wxPoint(-1, y), wxSize(350, -1));
+    
+    y += 65;
+
+    if (style & wxOK) 
+    {
+        ok = new wxButton( this, wxID_OK, _("OK"), wxPoint(-1,y), wxSize(80,-1) );
+       m_buttons.Append( ok );
+    }
+
+    if (style & wxCANCEL) 
+    {
+        cancel = new wxButton( this, wxID_CANCEL, _("Cancel"), wxPoint(-1,y), wxSize(80,-1) );
+       m_buttons.Append( cancel );
+    }
+
+    if (ok)
+    {
+        ok->SetDefault();
+        ok->SetFocus();
+    }
+
+    int w = wxMax( 350, m_buttons.GetCount() * 100 );
+    w = wxMax( w, message_size.x );
+    int space = w / (m_buttons.GetCount()*2);
+    
+    textCtrl->SetSize( 20, -1, w-10, -1 );
+    
+    int m = 0;
+    wxNode *node = m_buttons.First();
+    while (node)
+    {
+        wxWindow *win = (wxWindow*)node->Data();
+        int x = (m*2+1)*space - 40 + 15;
+        win->Move( x, -1 );
+        node = node->Next();
+        m++;
+    }
+    
+#if wxUSE_STATLINE
+    (void) new wxStaticLine( this, -1, wxPoint(0,y-20), wxSize(w+30, 5) );
+#endif
+    
+    SetSize( w+30, y+40 );
 
-  if (ok)
-    ok->SetDefault();
+    Centre( wxBOTH );
 
-  Layout();
-  Centre(wxBOTH);
 
   wxEndBusyCursor();
 }
index a733aede958496b98533f3b35b92ae19e82faf9a..e7ef18726865ce23f54daa3edd3e328e7500aea2 100644 (file)
@@ -225,6 +225,7 @@ void wxapp_install_idle_handler()
     g_isIdle = FALSE;
 }
 
+/*
 #if wxUSE_THREADS
 static gint wxapp_wakeup_timerout_callback( gpointer WXUNUSED(data) )
 {
@@ -232,23 +233,23 @@ static gint wxapp_wakeup_timerout_callback( gpointer WXUNUSED(data) )
     wxTheApp->m_wakeUpTimerTag = 0;
     
 #if (GTK_MINOR_VERSION > 0)
-    /* when getting called from GDK's time-out handler 
-       we are no longer within GDK's grab on the GUI
-       thread so we must lock it here ourselves */
+    // when getting called from GDK's time-out handler 
+    // we are no longer within GDK's grab on the GUI
+    // thread so we must lock it here ourselves
     GDK_THREADS_ENTER ();
 #endif
     
-    /* unblock other threads wishing to do some GUI things */
+    // unblock other threads wishing to do some GUI things
     wxMutexGuiLeave();
     
-    /* wake up other threads */
+    // wake up other threads
     wxUsleep( 1 );
     
-    /* block other thread again  */
+    // block other thread again
     wxMutexGuiEnter();
     
 #if (GTK_MINOR_VERSION > 0)
-    /* release lock again */
+    // release lock again
     GDK_THREADS_LEAVE ();
 #endif
     
@@ -257,6 +258,7 @@ static gint wxapp_wakeup_timerout_callback( gpointer WXUNUSED(data) )
     return TRUE;
 }
 #endif
+*/
 
 //-----------------------------------------------------------------------------
 // wxApp
@@ -277,9 +279,11 @@ wxApp::wxApp()
 
     m_idleTag = gtk_idle_add( wxapp_idle_callback, (gpointer) NULL );
     
+/*
 #if wxUSE_THREADS
     m_wakeUpTimerTag = gtk_timeout_add( 20, wxapp_wakeup_timerout_callback, (gpointer) NULL );
 #endif
+*/
 
     m_colorCube = (unsigned char*) NULL;
 }
@@ -288,9 +292,11 @@ wxApp::~wxApp()
 {
     if (m_idleTag) gtk_idle_remove( m_idleTag );
 
+/*
 #if wxUSE_THREADS
     if (m_wakeUpTimerTag) gtk_timeout_remove( m_wakeUpTimerTag );
 #endif
+*/
     
     if (m_colorCube) free(m_colorCube);
 }
index 613aab8a05068dbb9222ba0b19278b94f099ecbc..cca8c9ebd31e37a414d010cb08ba46b067d8104b 100644 (file)
@@ -120,6 +120,11 @@ void wxButton::SetDefault(void)
     SetSize( m_x, m_y, m_width, m_height );
 }
 
+static wxSize wxButton::GetDefaultSize()
+{
+    return wxSize(80,26);
+}
+
 void wxButton::SetLabel( const wxString &label )
 {
     wxCHECK_RET( m_widget != NULL, _T("invalid button") );
index 9596cf7d135b041d42462931c74cb4a0fd1b4f04..289765439da659237a3cdcdae28045470e02b9db 100644 (file)
@@ -337,17 +337,17 @@ void wxDropTarget::OnLeave()
 {
 }
 
-bool wxDropTarget::OnMove( int WXUNUSED(x), int WXUNUSED(y) )
+bool wxDropTarget::OnMove( long WXUNUSED(x), long WXUNUSED(y) )
 {
     return TRUE;
 }
 
-bool wxDropTarget::OnDrop( int WXUNUSED(x), int WXUNUSED(y) )
+bool wxDropTarget::OnDrop( long WXUNUSED(x), long WXUNUSED(y) )
 {
     return FALSE;
 }
 
-bool wxDropTarget::OnData( int WXUNUSED(x), int WXUNUSED(y) )
+bool wxDropTarget::OnData( long WXUNUSED(x), long WXUNUSED(y) )
 {
     return FALSE;
 }
@@ -472,12 +472,12 @@ void wxDropTarget::RegisterWidget( GtkWidget *widget )
 // wxTextDropTarget
 //-------------------------------------------------------------------------
 
-bool wxTextDropTarget::OnMove( int WXUNUSED(x), int WXUNUSED(y) )
+bool wxTextDropTarget::OnMove( long WXUNUSED(x), long WXUNUSED(y) )
 {
     return IsSupported( wxDF_TEXT );
 }
 
-bool wxTextDropTarget::OnDrop( int WXUNUSED(x), int WXUNUSED(y) )
+bool wxTextDropTarget::OnDrop( long WXUNUSED(x), long WXUNUSED(y) )
 {
     if (IsSupported( wxDF_TEXT ))
     {
@@ -488,7 +488,7 @@ bool wxTextDropTarget::OnDrop( int WXUNUSED(x), int WXUNUSED(y) )
     return FALSE;
 }
 
-bool wxTextDropTarget::OnData( int x, int y )
+bool wxTextDropTarget::OnData( long x, long y )
 {
     wxTextDataObject data;
     if (!GetData( &data )) return FALSE;
@@ -512,12 +512,12 @@ wxPrivateDropTarget::wxPrivateDropTarget( const wxString &id )
     m_id = id;
 }
 
-bool wxPrivateDropTarget::OnMove( int WXUNUSED(x), int WXUNUSED(y) )
+bool wxPrivateDropTarget::OnMove( long WXUNUSED(x), long WXUNUSED(y) )
 {
     return IsSupported( m_id );
 }
 
-bool wxPrivateDropTarget::OnDrop( int WXUNUSED(x), int WXUNUSED(y) )
+bool wxPrivateDropTarget::OnDrop( long WXUNUSED(x), long WXUNUSED(y) )
 {
     if (!IsSupported( m_id ))
     {
@@ -528,7 +528,7 @@ bool wxPrivateDropTarget::OnDrop( int WXUNUSED(x), int WXUNUSED(y) )
     return FALSE;
 }
 
-bool wxPrivateDropTarget::OnData( int x, int y )
+bool wxPrivateDropTarget::OnData( long x, long y )
 {
     if (!IsSupported( m_id )) return FALSE;
 
@@ -544,12 +544,12 @@ bool wxPrivateDropTarget::OnData( int x, int y )
 // A drop target which accepts files (dragged from File Manager or Explorer)
 //----------------------------------------------------------------------------
 
-bool wxFileDropTarget::OnMove( int WXUNUSED(x), int WXUNUSED(y) )
+bool wxFileDropTarget::OnMove( long WXUNUSED(x), long WXUNUSED(y) )
 {
     return IsSupported( wxDF_FILENAME );
 }
 
-bool wxFileDropTarget::OnDrop( int x, int y )
+bool wxFileDropTarget::OnDrop( long x, long y )
 {
     if (IsSupported( wxDF_FILENAME ))
     {
@@ -560,7 +560,7 @@ bool wxFileDropTarget::OnDrop( int x, int y )
     return FALSE;
 }
 
-bool wxFileDropTarget::OnData( int x, int y )
+bool wxFileDropTarget::OnData( long x, long y )
 {
     wxFileDataObject data;
     if (!GetData( &data )) return FALSE;
index 313ab0f8c892201e8ff9146cfee093da0baf740a..5ffe1cafdcdfdfe351db5abf8cd43774fe3b16f7 100644 (file)
 #endif
 
 #ifndef WX_PRECOMP
-#include <stdio.h>
-#include "wx/utils.h"
-#include "wx/dialog.h"
-#include "wx/listbox.h"
-#include "wx/button.h"
-#include "wx/stattext.h"
-#include "wx/textctrl.h"
-#include "wx/layout.h"
-#include "wx/intl.h"
+  #include <stdio.h>
+  #include "wx/utils.h"
+  #include "wx/dialog.h"
+  #include "wx/button.h"
+  #include "wx/stattext.h"
+  #include "wx/textctrl.h"
+  #include "wx/intl.h"
+#endif
+
+#if wxUSE_STATLINE
+  #include "wx/statline.h"
 #endif
 
 #include "wx/gtk/textdlg.h"
 
+/* Split message, using constraints to position controls */
+static wxSize wxSplitMessage2( const wxString &message, wxWindow *parent )
+{
+    int y = 10;
+    int w = 50;
+    wxString line( _T("") );
+    for (size_t pos = 0; pos < message.Len(); pos++)
+    {
+        if (message[pos] == _T('\n'))
+        {
+            if (!line.IsEmpty())
+            {
+                wxStaticText *s1 = new wxStaticText( parent, -1, line, wxPoint(15,y) );
+                wxSize size1( s1->GetSize() );
+                if (size1.x > w) w = size1.x;
+                line = _T("");
+            }
+            y += 18;
+        }
+        else
+        {
+            line += message[pos];
+        }
+    }
+    
+    if (!line.IsEmpty())
+    {
+        wxStaticText *s2 = new wxStaticText( parent, -1, line, wxPoint(15,y) );
+        wxSize size2( s2->GetSize() );
+        if (size2.x > w) w = size2.x;
+    }
+        
+    y += 18;
+    
+    return wxSize(w+30,y);
+}
+
 // wxTextEntryDialog
 
 #if !USE_SHARED_LIBRARY
@@ -44,109 +83,70 @@ END_EVENT_TABLE()
 IMPLEMENT_CLASS(wxTextEntryDialog, wxDialog)
 #endif
 
-// Split message, using constraints to position controls
-static void wxSplitMessage2(const wxChar *message, wxList *messageList, wxWindow *parent, wxRowColSizer *sizer)
-{
-  wxChar *copyMessage = copystring(message);
-  size_t i = 0;
-  size_t len = wxStrlen(copyMessage);
-  wxChar *currentMessage = copyMessage;
-
-//  wxWindow *lastWindow = parent;
-
-  while (i < len) {
-    while ((i < len) && (copyMessage[i] != _T('\n'))) i++;
-    if (i < len) copyMessage[i] = 0;
-    wxStaticText *mess = new wxStaticText(parent, -1, currentMessage);
-
-/*
-    wxLayoutConstraints *c = new wxLayoutConstraints;
-    c->left.SameAs             (parent, wxLeft, 10);
-    c->top.SameAs              (lastWindow, wxBottom, 5);
-    c->right.AsIs                      ();
-    c->height.AsIs                     ();
-
-    mess->SetConstraints(c);
-*/
-    sizer->AddSizerChild(mess);
-
-    messageList->Append(mess);
-
-    currentMessage = copyMessage + i + 1;
-  }
-  delete[] copyMessage;
-}
-
 wxTextEntryDialog::wxTextEntryDialog(wxWindow *parent, const wxString& message, const wxString& caption,
         const wxString& value, long style, const wxPoint& pos):
        wxDialog(parent, -1, caption, pos, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL|wxTAB_TRAVERSAL)
 {
-       m_dialogStyle = style;
-       m_value = value;
-
-       wxBeginBusyCursor();
-
-       wxSizer *topSizer = new wxSizer(this, wxSizerShrink);
-       topSizer->SetBorder(10, 10);
-
-       wxRowColSizer *messageSizer = new wxRowColSizer(topSizer, wxSIZER_COLS, 100);
-       messageSizer->SetName("messageSizer");
-
-//    bool centre = ((style & wxCENTRE) == wxCENTRE);
-
-       wxList messageList;
-       wxSplitMessage2(message, &messageList, this, messageSizer);
-
-       // Insert a spacer
-       wxSpacingSizer *spacingSizer = new wxSpacingSizer(topSizer, wxBelow, messageSizer, 10);
-
-       wxTextCtrl *textCtrl = new wxTextCtrl(this, wxID_TEXT, value, wxPoint(-1, -1), wxSize(350, -1));
-
-       wxRowColSizer *textSizer = new wxRowColSizer(topSizer, wxSIZER_ROWS);
-       textSizer->AddSizerChild(textCtrl);
-       textSizer->SetName("textSizer");
-
-       // Create constraints for the text sizer
-       wxLayoutConstraints *textC = new wxLayoutConstraints;
-       textC->left.SameAs              (messageSizer, wxLeft);
-       textC->top.Below                (spacingSizer);
-       textSizer->SetConstraints(textC);
-
-       // Insert another spacer
-       wxSpacingSizer *spacingSizer2 = new wxSpacingSizer(topSizer, wxBelow, textSizer, 10);
-       spacingSizer->SetName("spacingSizer2");
-
-       // Insert a sizer for the buttons
-       wxRowColSizer *buttonSizer = new wxRowColSizer(topSizer, wxSIZER_ROWS);
-       buttonSizer->SetName("buttonSizer");
-
-       // Specify constraints for the button sizer
-       wxLayoutConstraints *c = new wxLayoutConstraints;
-       c->width.AsIs           ();
-       c->height.AsIs          ();
-       c->top.Below            (spacingSizer2);
-       c->centreX.SameAs       (textSizer, wxCentreX);
-       buttonSizer->SetConstraints(c);
-       buttonSizer->SetSpacing(12,0);
-
-    wxButton *ok = NULL;
-       wxButton *cancel = NULL;
-
-  if (style & wxOK) {
-    ok = new wxButton(this, wxID_OK, _("OK"), wxDefaultPosition, wxSize(75,-1));
-       buttonSizer->AddSizerChild(ok);
-  }
-
-  if (style & wxCANCEL) {
-    cancel = new wxButton(this, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxSize(75,-1));
-       buttonSizer->AddSizerChild(cancel);
-  }
+    m_dialogStyle = style;
+    m_value = value;
+
+    wxBeginBusyCursor();
+
+    wxSize message_size( wxSplitMessage2( message, this ) );
+
+    wxButton *ok = (wxButton *) NULL;
+    wxButton *cancel = (wxButton *) NULL;
+    wxList m_buttons;
+    
+    int y = message_size.y + 15;
+    
+    wxTextCtrl *textCtrl = new wxTextCtrl(this, wxID_TEXT, value, wxPoint(-1, y), wxSize(350, -1));
+    
+    y += 65;
+
+    if (style & wxOK) 
+    {
+        ok = new wxButton( this, wxID_OK, _("OK"), wxPoint(-1,y), wxSize(80,-1) );
+       m_buttons.Append( ok );
+    }
+
+    if (style & wxCANCEL) 
+    {
+        cancel = new wxButton( this, wxID_CANCEL, _("Cancel"), wxPoint(-1,y), wxSize(80,-1) );
+       m_buttons.Append( cancel );
+    }
+
+    if (ok)
+    {
+        ok->SetDefault();
+        ok->SetFocus();
+    }
+
+    int w = wxMax( 350, m_buttons.GetCount() * 100 );
+    w = wxMax( w, message_size.x );
+    int space = w / (m_buttons.GetCount()*2);
+    
+    textCtrl->SetSize( 20, -1, w-10, -1 );
+    
+    int m = 0;
+    wxNode *node = m_buttons.First();
+    while (node)
+    {
+        wxWindow *win = (wxWindow*)node->Data();
+        int x = (m*2+1)*space - 40 + 15;
+        win->Move( x, -1 );
+        node = node->Next();
+        m++;
+    }
+    
+#if wxUSE_STATLINE
+    (void) new wxStaticLine( this, -1, wxPoint(0,y-20), wxSize(w+30, 5) );
+#endif
+    
+    SetSize( w+30, y+40 );
 
-  if (ok)
-    ok->SetDefault();
+    Centre( wxBOTH );
 
-  Layout();
-  Centre(wxBOTH);
 
   wxEndBusyCursor();
 }