// 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() : wxFrame( (wxFrame *) NULL, wxID_ANY,
- _("Life!"), wxDefaultPosition )
+LifeFrame::LifeFrame() :
+ wxFrame( (wxFrame *) NULL, wxID_ANY, _("Life!"), wxDefaultPosition ),
+ m_navigator(NULL)
{
// frame icon
SetIcon(wxICON(mondrian));
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"));
+#if ! (defined(__SMARTPHONE__) || defined(__POCKETPC__))
menuFile->AppendSeparator();
menuFile->Append(wxID_EXIT, wxGetStockLabel(wxID_EXIT, true, _T("Alt-X")), _("Quit this program"));
menuView->Append(ID_SHOWNAV, _("Navigation &toolbox"), _("Show or hide toolbox"), wxITEM_CHECK);
menuView->Check(ID_SHOWNAV, true);
menuView->AppendSeparator();
+#endif
+
menuView->Append(ID_ORIGIN, _("&Absolute origin"), _("Go to (0, 0)"));
menuView->Append(ID_CENTER, _("&Center of mass"), _("Find center of mass"));
menuView->Append(ID_NORTH, _("&North"), _("Find northernmost cell"));
toolBar->SetToolBitmapSize(wxSize(16, 16));
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
- // PocketPC only works with standard identifiers, and there's restricted space
-#ifndef __POCKETPC__
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 // __POCKETPC__
ADD_TOOL(ID_START, tbBitmaps[5], _("Start"), _("Start"));
ADD_TOOL(wxID_STOP, tbBitmaps[6], wxGetStockLabel(wxID_STOP, false), _("Stop"));
-#endif
toolBar->Realize();
toolBar->EnableTool(wxID_STOP, false); // must be after Realize() !
sizer3->Add( panel1, 1, wxGROW );
sizer3->Add( panel2, 0, wxGROW );
SetSizer( sizer3 );
+
#ifndef __WXWINCE__
sizer3->Fit( this );
// set minimum frame size
sizer3->SetSizeHints( this );
-#endif
- // navigator frame
+ // navigator frame - not appropriate for small devices
m_navigator = new LifeNavigator(this);
+#endif
+
}
LifeFrame::~LifeFrame()
case ID_SHOWNAV:
{
bool checked = GetMenuBar()->GetMenu(1)->IsChecked(ID_SHOWNAV);
- m_navigator->Show(checked);
+ if (m_navigator)
+ m_navigator->Show(checked);
break;
}
case ID_INFO:
}
}
+#if wxUSE_FILEDLG
void LifeFrame::OnOpen(wxCommandEvent& WXUNUSED(event))
{
wxFileDialog filedlg(this,
}
}
}
+#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;
{
// do nothing. I just don't want the background to be erased, you know.
}
-
-