]> git.saurik.com Git - wxWidgets.git/blobdiff - demos/forty/playerdg.cpp
Fix a crash in wxExecute() in wxMSW too.
[wxWidgets.git] / demos / forty / playerdg.cpp
index 674758143b9697be9130980cca731b6a39502adb..b1b1f71e070018c1c24a46e444c4ec48b5feabbd 100644 (file)
@@ -6,16 +6,9 @@
 // Created:     21/07/97
 // RCS-ID:      $Id$
 // Copyright:   (c) 1993-1998 Chris Breeze
 // Created:     21/07/97
 // RCS-ID:      $Id$
 // Copyright:   (c) 1993-1998 Chris Breeze
-// Licence:    wxWindows licence
-//---------------------------------------------------------------------------
-// Last modified: 22nd July 1998 - ported to wxWindows 2.0
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 /////////////////////////////////////////////////////////////////////////////
 
-#ifdef __GNUG__
-#pragma implementation
-#pragma interface
-#endif
-
 // For compilers that support precompilation, includes "wx/wx.h".
 #include "wx/wxprec.h"
 
 // For compilers that support precompilation, includes "wx/wx.h".
 #include "wx/wxprec.h"
 
 const int ID_LISTBOX = 101;
 
 BEGIN_EVENT_TABLE(PlayerSelectionDialog, wxDialog)
 const int ID_LISTBOX = 101;
 
 BEGIN_EVENT_TABLE(PlayerSelectionDialog, wxDialog)
-       EVT_SIZE(PlayerSelectionDialog::OnSize)
-       EVT_BUTTON(wxID_OK, PlayerSelectionDialog::ButtonCallback)
-       EVT_BUTTON(wxID_CANCEL, PlayerSelectionDialog::ButtonCallback)
-       EVT_LISTBOX(ID_LISTBOX, PlayerSelectionDialog::SelectCallback)
+    EVT_SIZE(PlayerSelectionDialog::OnSize)
+    EVT_BUTTON(wxID_OK, PlayerSelectionDialog::ButtonCallback)
+    EVT_BUTTON(wxID_CANCEL, PlayerSelectionDialog::ButtonCallback)
+    EVT_LISTBOX(ID_LISTBOX, PlayerSelectionDialog::SelectCallback)
     EVT_CLOSE(PlayerSelectionDialog::OnCloseWindow)
 END_EVENT_TABLE()
 
 PlayerSelectionDialog::PlayerSelectionDialog(
     EVT_CLOSE(PlayerSelectionDialog::OnCloseWindow)
 END_EVENT_TABLE()
 
 PlayerSelectionDialog::PlayerSelectionDialog(
-                                                       wxWindow* parent,
-                                                       ScoreFile* file
-                                                       ) :
-       wxDialog(parent, -1, "Player Selection",
-                       wxDefaultPosition, wxSize(320, 200),
-                       wxDIALOG_MODAL | wxDEFAULT_DIALOG_STYLE),
-       m_scoreFile(file)
+                            wxWindow* parent,
+                            ScoreFile* file
+                            ) :
+    wxDialog(parent, wxID_ANY, wxT("Player Selection"), wxDefaultPosition),
+    m_scoreFile(file)
 {
 {
-       // enable constraints
-       SetAutoLayout (TRUE);
-
-       wxStaticText* msg = new wxStaticText(this, -1, "Please select a name or type a new one:");
-
-       wxListBox* list = new wxListBox(
-                                               this, ID_LISTBOX,
-                                               wxDefaultPosition, wxDefaultSize,
-                                               0, 0,
-                                               wxLB_SINGLE
-                                               );
-    
-       wxArrayString players;
-       m_scoreFile->GetPlayerList(players);
-       for (unsigned int i = 0; i < players.Count(); i++)
-       {
-               list->Append(players[i]);
-       }
-
-       m_textField = new wxTextCtrl(this, -1, "", wxDefaultPosition, wxDefaultSize, 0);
-
-       m_OK = new wxButton(this, wxID_OK, "OK");
-       m_cancel = new wxButton(this, wxID_CANCEL, "Cancel");
-
-       wxLayoutConstraints* layout;
-
-       // Constrain the msg at the top of the window
-       layout = new wxLayoutConstraints;
-       layout->left.SameAs             (this,  wxLeft,         10);
-       layout->top.SameAs              (this,  wxTop,  10);
-       layout->height.AsIs();
-       layout->width.AsIs();
-       msg->SetConstraints(layout);
-
-       // Constrain the OK button
-       layout = new wxLayoutConstraints;
-       layout->left.SameAs             (this,  wxLeft,         10);
-       layout->bottom.SameAs   (this,   wxBottom,      10);
-       layout->height.AsIs();
-       layout->width.AsIs();
-       m_OK->SetConstraints(layout);
-
-       // Constrain the OK button
-       layout = new wxLayoutConstraints;
-       layout->left.RightOf    (m_OK,  10);
-       layout->bottom.SameAs   (this,  wxBottom,       10);
-       layout->height.AsIs();
-       layout->width.AsIs();
-       m_cancel->SetConstraints(layout);
-
-       // Constrain the Name text entry field
-       layout = new wxLayoutConstraints;
-       layout->left.SameAs             (this,  wxLeft,         10);
-       layout->right.SameAs    (this,  wxRight,        10);
-       layout->bottom.SameAs   (m_OK,  wxTop,          10);
-       layout->height.AsIs();
-       m_textField->SetConstraints(layout);
-
-       // Constrain the list of players
-       layout = new wxLayoutConstraints;
-       layout->left.SameAs             (this,  wxLeft,         10);
-       layout->right.SameAs    (this,  wxRight,        10);
-       layout->top.Below               (msg,   10);
-       layout->bottom.SameAs   (m_textField,   wxTop,  10);
-       list->SetConstraints(layout);
-
-       wxString prevPlayer = m_scoreFile->GetPreviousPlayer();
-       if ((prevPlayer.Length() > 0) && (list->FindString(prevPlayer) != -1))
-       {
-               list->SetStringSelection(prevPlayer);
-               m_textField->SetValue(prevPlayer);
-       }
-
-    m_textField->SetFocus();
-
-       Layout();
-    
+    wxStaticText* msg = new wxStaticText(this, wxID_ANY, wxT("Please select a name or type a new one:"));
+
+    wxListBox* list = new wxListBox(
+                        this, ID_LISTBOX,
+                        wxDefaultPosition, wxSize(-1, 150),
+                        0, 0,
+                        wxLB_SINGLE
+                        );
+
+    wxArrayString players;
+    m_scoreFile->GetPlayerList(players);
+    for (unsigned int i = 0; i < players.Count(); i++)
+    {
+        list->Append(players[i]);
+    }
+
+    m_textField = new wxTextCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize);
+
+    m_OK = new wxButton(this, wxID_OK);
+    m_cancel = new wxButton(this, wxID_CANCEL);
+
+    wxBoxSizer *button_sizer = new wxBoxSizer( wxHORIZONTAL );
+    button_sizer->Add( m_OK, 0, wxALL, 10 );
+    button_sizer->Add( m_cancel, 0, wxALL, 10 );
+
+    wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL );
+    topsizer->Add( msg, 0, wxALL , 10 );
+    topsizer->Add( list, 1, wxEXPAND | wxLEFT | wxRIGHT, 10 );
+    topsizer->Add( m_textField, 0, wxEXPAND | wxLEFT | wxRIGHT | wxTOP, 10 );
+    topsizer->Add( button_sizer, 0, wxALIGN_LEFT );
+
+    SetSizer( topsizer );
+
+    topsizer->SetSizeHints( this );
+
     CentreOnParent();
     CentreOnParent();
-}
 
 
-PlayerSelectionDialog::~PlayerSelectionDialog()
-{
+    m_OK->SetDefault();
 }
 
 void PlayerSelectionDialog::OnSize(wxSizeEvent& WXUNUSED(event))
 {
 }
 
 void PlayerSelectionDialog::OnSize(wxSizeEvent& WXUNUSED(event))
 {
-       Layout();
+    Layout();
 }
 
 const wxString& PlayerSelectionDialog::GetPlayersName()
 {
 /*
 }
 
 const wxString& PlayerSelectionDialog::GetPlayersName()
 {
 /*
-       m_player = "";
-       Show(TRUE);
+    m_player = wxEmptyString;
+    Show(true);
 */
 */
-       return m_player;
+    return m_player;
 }
 
 }
 
-void PlayerSelectionDialog::OnCloseWindow(wxCloseEvent& event)
+void PlayerSelectionDialog::OnCloseWindow(wxCloseEvent& WXUNUSED(event))
 {
 {
-       m_player = "";
+    m_player = wxEmptyString;
     EndModal(wxID_CANCEL);
 }
 
 void PlayerSelectionDialog::SelectCallback(wxCommandEvent& event)
 {
     EndModal(wxID_CANCEL);
 }
 
 void PlayerSelectionDialog::SelectCallback(wxCommandEvent& event)
 {
-       if (event.GetEventType() == wxEVT_COMMAND_LISTBOX_SELECTED)
-       {
-//         if (event.IsSelection())
-               m_textField->SetValue(event.GetString());
-       }
+    if (event.GetEventType() == wxEVT_COMMAND_LISTBOX_SELECTED)
+    {
+//        if (event.IsSelection())
+        m_textField->SetValue(event.GetString());
+    }
 }
 
 void PlayerSelectionDialog::ButtonCallback(wxCommandEvent& event)
 {
 }
 
 void PlayerSelectionDialog::ButtonCallback(wxCommandEvent& event)
 {
-       if (event.GetId() == wxID_OK)
-       {
-               wxString name = m_textField->GetValue();
-               if (!name.IsNull() && name.Length() > 0)
-               {
-                       if (name.Contains('@'))
-                       {
-                               wxMessageBox("Names should not contain the '@' character", "Forty Thieves");
-                       }
-                       else
-                       {
-                               m_player = name;
-                               EndModal(wxID_OK);
-                       }
-               }
-               else
-               {
-                       wxMessageBox("Please enter your name", "Forty Thieves");
-               }
-       }
-       else
-       {
-               m_player = "";
-               EndModal(wxID_CANCEL);
-       }
+    if (event.GetId() == wxID_OK)
+    {
+        wxString name = m_textField->GetValue();
+        if ( !name.empty() )
+        {
+            if (name.Contains(wxT('@')))
+            {
+                wxMessageBox(wxT("Names should not contain the '@' character"), wxT("Forty Thieves"));
+            }
+            else
+            {
+                m_player = name;
+                EndModal(wxID_OK);
+            }
+        }
+        else
+        {
+             wxMessageBox(wxT("Please enter your name"), wxT("Forty Thieves"));
+        }
+    }
+    else
+    {
+        m_player = wxEmptyString;
+        EndModal(wxID_CANCEL);
+    }
 }
 }