]> git.saurik.com Git - wxWidgets.git/blobdiff - demos/forty/playerdg.cpp
capture mouse to be notified when it exists the popup rect (bug 1372228)
[wxWidgets.git] / demos / forty / playerdg.cpp
index 4c5c48e3fc86fce28ea5f67301521fd5e84ba134..33af2b8953336da349da34abc3e011ed2df04125 100644 (file)
@@ -6,16 +6,9 @@
 // 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"
 
 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(
-                                                       wxWindow* parent,
-                                                       ScoreFile* file
-                                                       ) :
-       wxDialog(parent, -1, _T("Player Selection"),
-                       wxDefaultPosition, wxSize(320, 200),
-                       wxDIALOG_MODAL | wxDEFAULT_DIALOG_STYLE),
-       m_scoreFile(file)
+                            wxWindow* parent,
+                            ScoreFile* file
+                            ) :
+    wxDialog(parent, wxID_ANY, _T("Player Selection"), wxDefaultPosition),
+    m_scoreFile(file)
 {
-       // enable constraints
-       SetAutoLayout (TRUE);
-
-       wxStaticText* msg = new wxStaticText(this, -1, _T("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, _T(""), wxDefaultPosition, wxDefaultSize, 0);
-
-       m_OK = new wxButton(this, wxID_OK, _T("OK"));
-       m_cancel = new wxButton(this, wxID_CANCEL, _T("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();
-    
-    CentreOnParent();
-}
+    wxStaticText* msg = new wxStaticText(this, wxID_ANY, _T("Please select a name or type a new one:"));
 
-PlayerSelectionDialog::~PlayerSelectionDialog()
-{
+    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, 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();
 }
 
 void PlayerSelectionDialog::OnSize(wxSizeEvent& WXUNUSED(event))
 {
-       Layout();
+    Layout();
 }
 
 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 = _T("");
+    m_player = wxEmptyString;
     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)
 {
-       if (event.GetId() == wxID_OK)
-       {
-               wxString name = m_textField->GetValue();
-               if (!name.IsNull() && name.Length() > 0)
-               {
-                       if (name.Contains(_T('@')))
-                       {
-                               wxMessageBox(_T("Names should not contain the '@' character"), _T("Forty Thieves"));
-                       }
-                       else
-                       {
-                               m_player = name;
-                               EndModal(wxID_OK);
-                       }
-               }
-               else
-               {
-                       wxMessageBox(_T("Please enter your name"), _T("Forty Thieves"));
-               }
-       }
-       else
-       {
-               m_player = _T("");
-               EndModal(wxID_CANCEL);
-       }
+    if (event.GetId() == wxID_OK)
+    {
+        wxString name = m_textField->GetValue();
+        if (!name.IsNull() && name.Length() > 0)
+        {
+            if (name.Contains(_T('@')))
+            {
+                wxMessageBox(_T("Names should not contain the '@' character"), _T("Forty Thieves"));
+            }
+            else
+            {
+                m_player = name;
+                EndModal(wxID_OK);
+            }
+        }
+        else
+        {
+             wxMessageBox(_T("Please enter your name"), _T("Forty Thieves"));
+        }
+    }
+    else
+    {
+        m_player = wxEmptyString;
+        EndModal(wxID_CANCEL);
+    }
 }