// 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, "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();
-}
-PlayerSelectionDialog::~PlayerSelectionDialog()
-{
+ m_OK->SetDefault();
}
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 = "";
+ 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_LISTBOX)
+ {
+// 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('@'))
- {
- 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);
+ }
}