home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wxos2233.zip / wxOS2-2_3_3.zip / wxWindows-2.3.3 / demos / forty / playerdg.cpp < prev    next >
C/C++ Source or Header  |  2002-06-12  |  5KB  |  193 lines

  1. /////////////////////////////////////////////////////////////////////////////
  2. // Name:        playerdg.cpp
  3. // Purpose:     Forty Thieves patience game
  4. // Author:      Chris Breeze
  5. // Modified by:
  6. // Created:     21/07/97
  7. // RCS-ID:      $Id: playerdg.cpp,v 1.4 2002/06/12 13:19:08 JS Exp $
  8. // Copyright:   (c) 1993-1998 Chris Breeze
  9. // Licence:       wxWindows licence
  10. //---------------------------------------------------------------------------
  11. // Last modified: 22nd July 1998 - ported to wxWindows 2.0
  12. /////////////////////////////////////////////////////////////////////////////
  13.  
  14. #ifdef __GNUG__
  15. #pragma implementation
  16. #pragma interface
  17. #endif
  18.  
  19. // For compilers that support precompilation, includes "wx/wx.h".
  20. #include "wx/wxprec.h"
  21.  
  22. #ifdef __BORLANDC__
  23. #pragma hdrstop
  24. #endif
  25.  
  26. #ifndef WX_PRECOMP
  27. #include "wx/wx.h"
  28. #endif
  29.  
  30. #include "scorefil.h"
  31. #include "playerdg.h"
  32.  
  33. const int ID_LISTBOX = 101;
  34.  
  35. BEGIN_EVENT_TABLE(PlayerSelectionDialog, wxDialog)
  36.     EVT_SIZE(PlayerSelectionDialog::OnSize)
  37.     EVT_BUTTON(wxID_OK, PlayerSelectionDialog::ButtonCallback)
  38.     EVT_BUTTON(wxID_CANCEL, PlayerSelectionDialog::ButtonCallback)
  39.     EVT_LISTBOX(ID_LISTBOX, PlayerSelectionDialog::SelectCallback)
  40.     EVT_CLOSE(PlayerSelectionDialog::OnCloseWindow)
  41. END_EVENT_TABLE()
  42.  
  43. PlayerSelectionDialog::PlayerSelectionDialog(
  44.                             wxWindow* parent,
  45.                             ScoreFile* file
  46.                             ) :
  47.     wxDialog(parent, -1, "Player Selection",
  48.             wxDefaultPosition, wxSize(320, 200),
  49.             wxDIALOG_MODAL | wxDEFAULT_DIALOG_STYLE),
  50.     m_scoreFile(file)
  51. {
  52.     // enable constraints
  53.     SetAutoLayout (TRUE);
  54.  
  55.     wxStaticText* msg = new wxStaticText(this, -1, "Please select a name or type a new one:");
  56.  
  57.     wxListBox* list = new wxListBox(
  58.                         this, ID_LISTBOX,
  59.                         wxDefaultPosition, wxDefaultSize,
  60.                         0, 0,
  61.                         wxLB_SINGLE
  62.                         );
  63.     
  64.     wxArrayString players;
  65.     m_scoreFile->GetPlayerList(players);
  66.     for (unsigned int i = 0; i < players.Count(); i++)
  67.     {
  68.         list->Append(players[i]);
  69.     }
  70.  
  71.     m_textField = new wxTextCtrl(this, -1, "", wxDefaultPosition, wxDefaultSize, 0);
  72.  
  73.     m_OK = new wxButton(this, wxID_OK, "OK");
  74.     m_cancel = new wxButton(this, wxID_CANCEL, "Cancel");
  75.  
  76.     wxLayoutConstraints* layout;
  77.  
  78.     // Constrain the msg at the top of the window
  79.     layout = new wxLayoutConstraints;
  80.     layout->left.SameAs        (this,    wxLeft,        10);
  81.     layout->top.SameAs        (this,    wxTop,    10);
  82.     layout->height.AsIs();
  83.     layout->width.AsIs();
  84.     msg->SetConstraints(layout);
  85.  
  86.     // Constrain the OK button
  87.     layout = new wxLayoutConstraints;
  88.     layout->left.SameAs        (this,    wxLeft,        10);
  89.     layout->bottom.SameAs    (this,     wxBottom,    10);
  90.     layout->height.AsIs();
  91.     layout->width.AsIs();
  92.     m_OK->SetConstraints(layout);
  93.  
  94.     // Constrain the OK button
  95.     layout = new wxLayoutConstraints;
  96.     layout->left.RightOf    (m_OK,    10);
  97.     layout->bottom.SameAs    (this,    wxBottom,    10);
  98.     layout->height.AsIs();
  99.     layout->width.AsIs();
  100.     m_cancel->SetConstraints(layout);
  101.  
  102.     // Constrain the Name text entry field
  103.     layout = new wxLayoutConstraints;
  104.     layout->left.SameAs        (this,    wxLeft,        10);
  105.     layout->right.SameAs    (this,    wxRight,    10);
  106.     layout->bottom.SameAs    (m_OK,    wxTop,        10);
  107.     layout->height.AsIs();
  108.     m_textField->SetConstraints(layout);
  109.  
  110.     // Constrain the list of players
  111.     layout = new wxLayoutConstraints;
  112.     layout->left.SameAs        (this,    wxLeft,        10);
  113.     layout->right.SameAs    (this,    wxRight,    10);
  114.     layout->top.Below        (msg,    10);
  115.     layout->bottom.SameAs    (m_textField,    wxTop,    10);
  116.     list->SetConstraints(layout);
  117.  
  118.     wxString prevPlayer = m_scoreFile->GetPreviousPlayer();
  119.     if ((prevPlayer.Length() > 0) && (list->FindString(prevPlayer) != -1))
  120.     {
  121.         list->SetStringSelection(prevPlayer);
  122.         m_textField->SetValue(prevPlayer);
  123.     }
  124.  
  125.     m_textField->SetFocus();
  126.  
  127.     Layout();
  128.     
  129.     CentreOnParent();
  130. }
  131.  
  132. PlayerSelectionDialog::~PlayerSelectionDialog()
  133. {
  134. }
  135.  
  136. void PlayerSelectionDialog::OnSize(wxSizeEvent& WXUNUSED(event))
  137. {
  138.     Layout();
  139. }
  140.  
  141. const wxString& PlayerSelectionDialog::GetPlayersName()
  142. {
  143. /*
  144.     m_player = "";
  145.     Show(TRUE);
  146. */
  147.     return m_player;
  148. }
  149.  
  150. void PlayerSelectionDialog::OnCloseWindow(wxCloseEvent& event)
  151. {
  152.     m_player = "";
  153.     EndModal(wxID_CANCEL);
  154. }
  155.  
  156. void PlayerSelectionDialog::SelectCallback(wxCommandEvent& event)
  157. {
  158.     if (event.GetEventType() == wxEVT_COMMAND_LISTBOX_SELECTED)
  159.     {
  160. //        if (event.IsSelection())
  161.         m_textField->SetValue(event.GetString());
  162.     }
  163. }
  164.  
  165. void PlayerSelectionDialog::ButtonCallback(wxCommandEvent& event)
  166. {
  167.     if (event.GetId() == wxID_OK)
  168.     {
  169.         wxString name = m_textField->GetValue();
  170.         if (!name.IsNull() && name.Length() > 0)
  171.         {
  172.             if (name.Contains('@'))
  173.             {
  174.                 wxMessageBox("Names should not contain the '@' character", "Forty Thieves");
  175.             }
  176.             else
  177.             {
  178.                 m_player = name;
  179.                 EndModal(wxID_OK);
  180.             }
  181.         }
  182.         else
  183.         {
  184.              wxMessageBox("Please enter your name", "Forty Thieves");
  185.         }
  186.     }
  187.     else
  188.     {
  189.         m_player = "";
  190.         EndModal(wxID_CANCEL);
  191.     }
  192. }
  193.