renaming and moving samples around
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5300 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
192
demos/forty/scoredg.cpp
Normal file
192
demos/forty/scoredg.cpp
Normal file
@@ -0,0 +1,192 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: scoredg.cpp
|
||||
// Purpose: Forty Thieves patience game
|
||||
// Author: Chris Breeze
|
||||
// Modified by:
|
||||
// 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
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifdef __GNUG__
|
||||
#pragma implementation
|
||||
#pragma interface
|
||||
#endif
|
||||
|
||||
// For compilers that support precompilation, includes "wx/wx.h".
|
||||
#include "wx/wxprec.h"
|
||||
|
||||
#ifdef __BORLANDC__
|
||||
#pragma hdrstop
|
||||
#endif
|
||||
|
||||
#ifndef WX_PRECOMP
|
||||
#include "wx/wx.h"
|
||||
#endif
|
||||
|
||||
#if wxUSE_IOSTREAMH
|
||||
#if defined(__WXMSW__) && !defined(__GNUWIN32__) && !defined(__MWERKS__)
|
||||
#include <strstrea.h>
|
||||
#else
|
||||
#include <strstream.h>
|
||||
#endif
|
||||
#else
|
||||
#include <strstream>
|
||||
using namespace std;
|
||||
#endif
|
||||
#include "scorefil.h"
|
||||
#include "scoredg.h"
|
||||
|
||||
class ScoreCanvas : public wxScrolledWindow
|
||||
{
|
||||
public:
|
||||
ScoreCanvas(wxWindow* parent, ScoreFile* scoreFile);
|
||||
virtual ~ScoreCanvas();
|
||||
|
||||
void OnDraw(wxDC& dc);
|
||||
|
||||
private:
|
||||
wxFont* m_font;
|
||||
wxString m_text;
|
||||
};
|
||||
|
||||
|
||||
ScoreCanvas::ScoreCanvas(wxWindow* parent, ScoreFile* scoreFile) :
|
||||
wxScrolledWindow(parent)
|
||||
{
|
||||
#ifdef __WXGTK__
|
||||
m_font = wxTheFontList->FindOrCreateFont(12, wxROMAN, wxNORMAL, wxNORMAL);
|
||||
#else
|
||||
m_font = wxTheFontList->FindOrCreateFont(10, wxSWISS, wxNORMAL, wxNORMAL);
|
||||
#endif
|
||||
|
||||
wxArrayString players;
|
||||
scoreFile->GetPlayerList( players);
|
||||
|
||||
ostrstream os;
|
||||
|
||||
os << "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] << '\t'
|
||||
<< wins << '\t'
|
||||
<< games << '\t'
|
||||
<< average << '\n';
|
||||
}
|
||||
os << '\0';
|
||||
char* str = os.str();
|
||||
m_text = str;
|
||||
delete str;
|
||||
}
|
||||
|
||||
ScoreCanvas::~ScoreCanvas()
|
||||
{
|
||||
}
|
||||
|
||||
void ScoreCanvas::OnDraw(wxDC& dc)
|
||||
{
|
||||
dc.SetFont(* m_font);
|
||||
|
||||
const char* 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("Testing", &w, &h);
|
||||
lineSpacing = (int)h;
|
||||
}
|
||||
|
||||
int y = 0;
|
||||
while (*str)
|
||||
{
|
||||
char text[256];
|
||||
char* 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++;
|
||||
}
|
||||
}
|
||||
|
||||
BEGIN_EVENT_TABLE(ScoreDialog, wxDialog)
|
||||
EVT_CLOSE(ScoreDialog::OnCloseWindow)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
ScoreDialog::ScoreDialog(
|
||||
wxWindow* parent,
|
||||
ScoreFile* file
|
||||
) :
|
||||
wxDialog(parent, -1, "Scores",
|
||||
wxDefaultPosition, wxSize(310, 200),
|
||||
wxDIALOG_MODAL | wxDEFAULT_DIALOG_STYLE),
|
||||
m_scoreFile(file)
|
||||
{
|
||||
// enable constraints
|
||||
SetAutoLayout (TRUE);
|
||||
|
||||
ScoreCanvas* list = new ScoreCanvas(this, m_scoreFile);
|
||||
m_OK = new wxButton(this, wxID_OK, "OK");
|
||||
|
||||
wxLayoutConstraints* 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 list of players
|
||||
layout = new wxLayoutConstraints;
|
||||
layout->left.SameAs (this, wxLeft, 10);
|
||||
layout->right.SameAs (this, wxRight, 10);
|
||||
layout->top.SameAs (this, wxTop, 10);
|
||||
layout->bottom.SameAs (m_OK, wxTop, 10);
|
||||
list->SetConstraints(layout);
|
||||
|
||||
Layout();
|
||||
}
|
||||
|
||||
ScoreDialog::~ScoreDialog()
|
||||
{
|
||||
}
|
||||
|
||||
void ScoreDialog::Display()
|
||||
{
|
||||
Show(TRUE);
|
||||
}
|
||||
|
||||
void ScoreDialog::OnCloseWindow(wxCloseEvent& event)
|
||||
{
|
||||
EndModal(wxID_OK);
|
||||
}
|
Reference in New Issue
Block a user