// headers, declarations, constants
// ==========================================================================
-#ifdef __GNUG__
- #pragma implementation "life.h"
-#endif
-
// For compilers that support precompilation, includes "wx/wx.h".
#include "wx/wxprec.h"
// Event tables
BEGIN_EVENT_TABLE(LifeFrame, wxFrame)
EVT_MENU (wxID_NEW, LifeFrame::OnMenu)
+#if wxUSE_FILEDLG
EVT_MENU (wxID_OPEN, LifeFrame::OnOpen)
+#endif
EVT_MENU (ID_SAMPLES, LifeFrame::OnSamples)
EVT_MENU (wxID_ABOUT, LifeFrame::OnMenu)
EVT_MENU (wxID_EXIT, LifeFrame::OnMenu)
// --------------------------------------------------------------------------
// frame constructor
-LifeFrame::LifeFrame() :
+LifeFrame::LifeFrame() :
wxFrame( (wxFrame *) NULL, wxID_ANY, _("Life!"), wxDefaultPosition ),
m_navigator(NULL)
{
wxMenu *menuHelp = new wxMenu(wxMENU_TEAROFF);
menuFile->Append(wxID_NEW, wxGetStockLabel(wxID_NEW), _("Start a new game"));
+#if wxUSE_FILEDLG
menuFile->Append(wxID_OPEN, wxGetStockLabel(wxID_OPEN), _("Open an existing Life pattern"));
+#endif
menuFile->Append(ID_SAMPLES, _("&Sample game..."), _("Select a sample configuration"));
-#ifndef __WXWINCE__
+#if ! (defined(__SMARTPHONE__) || defined(__POCKETPC__))
menuFile->AppendSeparator();
menuFile->Append(wxID_EXIT, wxGetStockLabel(wxID_EXIT, true, _T("Alt-X")), _("Quit this program"));
ADD_TOOL(wxID_NEW, tbBitmaps[0], wxGetStockLabel(wxID_NEW, false), _("Start a new game"));
#ifndef __POCKETPC__
+#if wxUSE_FILEDLG
ADD_TOOL(wxID_OPEN, tbBitmaps[1], wxGetStockLabel(wxID_OPEN, false), _("Open an existing Life pattern"));
+#endif // wxUSE_FILEDLG
toolBar->AddSeparator();
ADD_TOOL(wxID_ZOOM_IN, tbBitmaps[2], wxGetStockLabel(wxID_ZOOM_IN, false), _("Zoom in"));
ADD_TOOL(wxID_ZOOM_OUT, tbBitmaps[3], wxGetStockLabel(wxID_ZOOM_OUT, false), _("Zoom out"));
ADD_TOOL(ID_INFO, tbBitmaps[4], _("Description"), _("Show description"));
toolBar->AddSeparator();
-#endif
+#endif // __POCKETPC__
ADD_TOOL(ID_START, tbBitmaps[5], _("Start"), _("Start"));
ADD_TOOL(wxID_STOP, tbBitmaps[6], wxGetStockLabel(wxID_STOP, false), _("Stop"));
}
}
+#if wxUSE_FILEDLG
void LifeFrame::OnOpen(wxCommandEvent& WXUNUSED(event))
{
wxFileDialog filedlg(this,
wxEmptyString,
wxEmptyString,
_("Life patterns (*.lif)|*.lif|All files (*.*)|*.*"),
- wxOPEN | wxFILE_MUST_EXIST);
+ wxFD_OPEN | wxFD_FILE_MUST_EXIST);
if (filedlg.ShowModal() == wxID_OK)
{
}
}
}
+#endif
void LifeFrame::OnSamples(wxCommandEvent& WXUNUSED(event))
{
// canvas constructor
LifeCanvas::LifeCanvas(wxWindow *parent, Life *life, bool interactive)
: wxWindow(parent, wxID_ANY, wxDefaultPosition, wxSize(100, 100),
- wxSUNKEN_BORDER|wxFULL_REPAINT_ON_RESIZE)
+ wxFULL_REPAINT_ON_RESIZE
+#if !defined(__SMARTPHONE__) && !defined(__POCKETPC__)
+ |wxSUNKEN_BORDER
+#else
+ |wxSIMPLE_BORDER
+#endif
+ )
{
m_life = life;
m_interactive = interactive;
dc.SetPen(alive? *wxBLACK_PEN : *wxWHITE_PEN);
dc.SetBrush(alive? *wxBLACK_BRUSH : *wxWHITE_BRUSH);
- dc.BeginDrawing();
DrawCell(i, j, dc);
- dc.EndDrawing();
}
void LifeCanvas::DrawCell(wxInt32 i, wxInt32 j, wxDC &dc)
m_viewportY + m_viewportH,
true);
- dc.BeginDrawing();
-
if (m_cellsize == 1)
{
dc.SetPen(*wxBLACK_PEN);
for (size_t m = 0; m < ncells; m++)
DrawCell(cells[m].i, cells[m].j, dc);
}
- dc.EndDrawing();
}
// event handlers
bool done = m_life->FindMore(&cells, &ncells);
// erase all damaged cells and draw the grid
- dc.BeginDrawing();
dc.SetBrush(*wxWHITE_BRUSH);
if (m_cellsize <= 2)
// last set
for (size_t m = 0; m < ncells; m++)
DrawCell(cells[m].i, cells[m].j, dc);
-
- dc.EndDrawing();
}
void LifeCanvas::OnMouse(wxMouseEvent& event)
wxClientDC dc(this);
dc.SetPen(alive? *wxBLACK_PEN : *wxWHITE_PEN);
dc.SetBrush(alive? *wxBLACK_BRUSH : *wxWHITE_BRUSH);
- dc.BeginDrawing();
// draw a line of cells using Bresenham's algorithm
wxInt32 d, ii, jj, di, ai, si, dj, aj, sj;
DrawCell(ii, jj, dc);
m_mi = ii;
m_mj = jj;
-
- dc.EndDrawing();
}
((LifeFrame *) wxGetApp().GetTopWindow())->UpdateInfoText();
{
// do nothing. I just don't want the background to be erased, you know.
}
-
-