X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/be5a51fb592f3fa2ba38ac6cd1e488d6d806058c..51248412979029d94d11ea5dab9516831be94914:/demos/forty/scoredg.cpp?ds=sidebyside diff --git a/demos/forty/scoredg.cpp b/demos/forty/scoredg.cpp index c241cff5a7..07cbb2487e 100644 --- a/demos/forty/scoredg.cpp +++ b/demos/forty/scoredg.cpp @@ -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 wxWidgets 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" @@ -38,49 +33,49 @@ 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,74 +131,76 @@ 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 ); + string_value.Printf( wxT("%u"), wins ); list->SetCellValue(i,1,string_value); - string_value.Printf( _T("%u"), games ); + string_value.Printf( wxT("%u"), games ); list->SetCellValue(i,2,string_value); - string_value.Printf( _T("%u"), average ); + string_value.Printf( wxT("%u"), average ); list->SetCellValue(i,3,string_value); } - list->SetColLabelValue(0, _T("Players")); - list->SetColLabelValue(1, _T("Wins")); - list->SetColLabelValue(2, _T("Games")); - list->SetColLabelValue(3, _T("Score")); - list->SetEditable(false); + list->SetColLabelValue(0, wxT("Players")); + list->SetColLabelValue(1, wxT("Wins")); + list->SetColLabelValue(2, wxT("Games")); + list->SetColLabelValue(3, wxT("Score")); + list->EnableEditing(false); list->AutoSizeColumns(); list->AutoSizeRows(); list->SetRowLabelSize(0); 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))