]> git.saurik.com Git - wxWidgets.git/blobdiff - demos/forty/scoredg.cpp
fix wxMSW build after wxBrush changes: return wxBRUSHSTYLE_MAX instead of zero; fix...
[wxWidgets.git] / demos / forty / scoredg.cpp
index 84d278412bb9b8c825dfd4392e081d53591a9c19..ecd1bb44f4dde5b848d3e89117d65a1e6902f882 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
 /////////////////////////////////////////////////////////////////////////////
 
-#if defined(__GNUG__) && !defined(__APPLE__)
-#pragma implementation
-#pragma interface
-#endif
-
 // For compilers that support precompilation, includes "wx/wx.h".
 #include "wx/wxprec.h"
 
@@ -30,7 +23,9 @@
 #include "scorefil.h"
 #include "scoredg.h"
 
-#define USE_GRID_FOR_SCORE 0
+// adjust USE_GRID_FOR_SCORE with O or 1 to your preferences
+// by default it takes wxGrid component for score display if available in target port
+#define USE_GRID_FOR_SCORE     wxUSE_GRID
 
 #if USE_GRID_FOR_SCORE
 #include "wx/grid.h"
 class ScoreCanvas : public wxScrolledWindow
 {
 public:
-       ScoreCanvas(wxWindow* parent, ScoreFile* scoreFile, const wxPoint& pos, wxSize& size);
-       virtual ~ScoreCanvas();
+    ScoreCanvas(wxWindow* parent, ScoreFile* scoreFile, const wxPoint& pos, wxSize& size);
+    virtual ~ScoreCanvas();
 
-       void OnDraw(wxDC& dc);
+    void OnDraw(wxDC& dc);
 
 private:
-       wxFont*         m_font;
-       wxString        m_text;
+    wxFont     *m_font;
+    wxString    m_text;
 };
 
 ScoreCanvas::ScoreCanvas(wxWindow* parent, ScoreFile* scoreFile, const wxPoint& pos, wxSize& size) :
-       wxScrolledWindow(parent, -1, pos, size, wxSUNKEN_BORDER)
+    wxScrolledWindow(parent, wxID_ANY, pos, size, wxSUNKEN_BORDER)
 {
     SetBackgroundColour(*wxWHITE);
 #ifdef __WXGTK__
-       m_font = wxTheFontList->FindOrCreateFont(12, wxROMAN, wxNORMAL, wxNORMAL);
+    m_font = wxTheFontList->FindOrCreateFont(12, wxROMAN, wxNORMAL, wxNORMAL);
 #else
-       m_font = wxTheFontList->FindOrCreateFont(10, wxSWISS, wxNORMAL, wxNORMAL);
+    m_font = wxTheFontList->FindOrCreateFont(10, wxSWISS, wxNORMAL, wxNORMAL);
 #endif
 
     wxArrayString players;
-       scoreFile->GetPlayerList( players);
-
-       wxString os;
-
-       os << wxT("Player\tWins\tGames\tScore\n");
-       for (unsigned int i = 0; i < players.Count(); i++)
-       {
-               int wins, games, score;
-               scoreFile->ReadPlayersScore(players[i], wins, games, score);
-               int average = 0;
-               if (games > 0)
-               {
-                       average = (2 * score + games) / (2 * games);
-               }
-
-               os << players[i] << wxT('\t') 
-                  << wins  << wxT('\t')
-                  << games << wxT('\t')
-                  << average << wxT('\n');
-       }
-       os << wxT('\0');
-       m_text = os;
+    scoreFile->GetPlayerList( players);
+
+    wxString os;
+
+    os << wxT("Player\tWins\tGames\tScore\n");
+    for (unsigned int i = 0; i < players.Count(); i++)
+    {
+        int wins, games, score;
+        scoreFile->ReadPlayersScore(players[i], wins, games, score);
+        int average = 0;
+        if (games > 0)
+        {
+            average = (2 * score + games) / (2 * games);
+        }
+
+        os << players[i] << wxT('\t')
+           << wins  << wxT('\t')
+           << games << wxT('\t')
+           << average << wxT('\n');
+    }
+    os << wxT('\0');
+    m_text = os;
 }
 
 ScoreCanvas::~ScoreCanvas()
@@ -89,45 +84,45 @@ ScoreCanvas::~ScoreCanvas()
 
 void ScoreCanvas::OnDraw(wxDC& dc)
 {
-       dc.SetFont(* m_font);
-
-       const wxChar* str = m_text;
-       unsigned int tab = 0;
-       unsigned int tabstops[] = { 5, 100, 150, 200 };
-
-       // get the line spacing for the current font
-       int lineSpacing;
-       {
-               long w, h;
-               dc.GetTextExtent(wxT("Testing"), &w, &h);
-               lineSpacing = (int)h;
-       }
-
-       int y = 0;
-       while (*str)
-       {
-               wxChar text[256];
-               wxChar* dest = text;
-               
-               while (*str && *str >= ' ') *dest++ = *str++;
-               *dest = '\0';
-
-               dc.DrawText(text, tabstops[tab], y);
-
-               if (*str == '\t')
-               {
-                       if (tab < sizeof(tabstops) / sizeof(tabstops[0]) - 1)
-                       {
-                               tab++;
-                       }
-               }
-               else if (*str == '\n')
-               {
-                       tab = 0;
-                       y += lineSpacing;
-               }
-               if (*str) str++;
-       }
+    dc.SetFont(* m_font);
+
+    const wxChar* str = m_text;
+    unsigned int tab = 0;
+    unsigned int tabstops[] = { 5, 100, 150, 200 };
+
+    // get the line spacing for the current font
+    int lineSpacing;
+    {
+        long w, h;
+        dc.GetTextExtent(wxT("Testing"), &w, &h);
+        lineSpacing = (int)h;
+    }
+
+    int y = 0;
+    while (*str)
+    {
+        wxChar text[256];
+        wxChar* dest = text;
+
+        while (*str && *str >= ' ') *dest++ = *str++;
+        *dest = '\0';
+
+        dc.DrawText(text, tabstops[tab], y);
+
+        if (*str == '\t')
+        {
+            if (tab < sizeof(tabstops) / sizeof(tabstops[0]) - 1)
+            {
+                tab++;
+            }
+        }
+        else if (*str == '\n')
+        {
+            tab = 0;
+            y += lineSpacing;
+        }
+        if (*str) str++;
+    }
 }
 #endif
 
@@ -136,31 +131,30 @@ BEGIN_EVENT_TABLE(ScoreDialog, wxDialog)
 END_EVENT_TABLE()
 
 ScoreDialog::ScoreDialog(wxWindow* parent, ScoreFile* file) :
-       wxDialog(parent, wxID_ANY, _("Scores"),
-                       wxDefaultPosition, wxSize(400, 300),
-                       wxDIALOG_MODAL | wxDEFAULT_DIALOG_STYLE),
-       m_scoreFile(file)
+    wxDialog(parent, wxID_ANY, _("Scores"),
+            wxDefaultPosition, wxSize(400, 300)),
+    m_scoreFile(file)
 {
     // create grid with players
     wxArrayString players;
-       file->GetPlayerList(players);
-    
+    file->GetPlayerList(players);
+
     wxSize sz = wxSize(400, 300);
 
 #if USE_GRID_FOR_SCORE
-       wxGrid* list = new wxGrid(this, wxID_ANY, wxDefaultPosition, sz, 0);
+    wxGrid* list = new wxGrid(this, wxID_ANY, wxDefaultPosition, sz, 0);
     list->CreateGrid(players.Count(), 4);
-       for (unsigned int i = 0; i < players.Count(); i++)
-       {
-               int wins, games, score;
+    for (unsigned int i = 0; i < players.Count(); i++)
+    {
+        int wins, games, score;
         wxString string_value;
 
-               file->ReadPlayersScore(players[i], wins, games, score);
-               int average = 0;
-               if (games > 0)
-               {
-                       average = (2 * score + games) / (2 * games);
-               }
+        file->ReadPlayersScore(players[i], wins, games, score);
+        int average = 0;
+        if (games > 0)
+        {
+            average = (2 * score + games) / (2 * games);
+        }
         list->SetCellValue(i,0,players[i]);
         string_value.Printf( _T("%u"), wins );
         list->SetCellValue(i,1,string_value);
@@ -180,30 +174,33 @@ ScoreDialog::ScoreDialog(wxWindow* parent, ScoreFile* file) :
     list->EnableDragRowSize(false);
     list->EnableDragColSize(false);
     list->EnableDragGridSize(false);
+    list->ClearSelection();
+    list->EnableEditing(false);
+    sz.x = wxDefaultCoord;
 #else
-       ScoreCanvas* list = new ScoreCanvas(this, m_scoreFile, wxDefaultPosition, sz);
+    ScoreCanvas* list = new ScoreCanvas(this, m_scoreFile, wxDefaultPosition, sz);
 #endif
 
+    list->SetInitialSize(sz);
+
     // locate and resize with sizers
     wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL );
     topsizer->Add( list, 1, wxALL|wxGROW, 10 );
-    topsizer->Add( new wxButton(this, wxID_OK, _("OK")), 0, wxALIGN_CENTER_HORIZONTAL|wxALL , 10 );
+    wxButton *button = new wxButton(this, wxID_OK);
+    topsizer->Add( button, 0, wxALIGN_CENTER_HORIZONTAL|wxALL , 10 );
+    button->SetFocus();
 
     SetSizer( topsizer );
 
     GetSizer()->Fit(this);
     GetSizer()->SetSizeHints(this);
-    
-    CentreOnParent();
-}
 
-ScoreDialog::~ScoreDialog()
-{
+    CentreOnParent();
 }
 
 void ScoreDialog::Display()
 {
-       Show(true);
+    ShowModal();
 }
 
 void ScoreDialog::OnCloseWindow(wxCloseEvent& WXUNUSED(event))