]> git.saurik.com Git - wxWidgets.git/blobdiff - demos/life/life.h
Null m_select_me when this item is deleted
[wxWidgets.git] / demos / life / life.h
index 4f87eee9813571fa9a95a0cd560fed4ba285df1b..48e9aca92aa8a0809931634ca5ac46dbb1f15930 100644 (file)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        life.h
-// Purpose:     The game of life, created by J. H. Conway
+// Purpose:     The game of Life, created by J. H. Conway
 // Author:      Guillermo Rodriguez Garcia, <guille@iies.es>
 // Modified by:
 // Created:     Jan/2000
@@ -12,7 +12,7 @@
 #ifndef _LIFE_APP_H_
 #define _LIFE_APP_H_
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(__APPLE__)
     #pragma interface "life.h"
 #endif
 
     #include "wx/wx.h"
 #endif
 
+#include "wx/minifram.h"
+
 #include "game.h"
 
+
 // --------------------------------------------------------------------------
 // LifeCanvas
 // --------------------------------------------------------------------------
 
-/* Note that in LifeCanvas, all cell coordinates are
- * named i, j, while screen coordinates are named x, y.
- */
+// Note that in LifeCanvas, all cell coordinates are
+// named i, j, while screen coordinates are named x, y.
+
 class LifeCanvas : public wxWindow
 {
 public:
     // ctor and dtor
-    LifeCanvas(wxWindow* parent, Life* life, bool interactive = TRUE);
+    LifeCanvas(wxWindow* parent, Life* life, bool interactive = true);
     ~LifeCanvas();
 
     // view management
@@ -54,7 +57,7 @@ public:
     void DrawCell(wxInt32 i, wxInt32 j, bool alive);
 
 private:
-    // any class wishing to process wxWindows events must use this macro
+    // any class wishing to process wxWidgets events must use this macro
     DECLARE_EVENT_TABLE()
 
     // draw a cell (parametrized by DC)
@@ -91,19 +94,29 @@ private:
     wxInt32      m_viewportH;       // number of visible cells (h)
     int          m_thumbX;          // horiz. scrollbar thumb position 
     int          m_thumbY;          // vert. scrollbar thumb position 
+    wxInt32      m_mi, m_mj;        // last mouse position 
 };
 
+
 // --------------------------------------------------------------------------
-// LifeTimer
+// LifeNavigator
 // --------------------------------------------------------------------------
 
-// Life timer
-class LifeTimer : public wxTimer
+class LifeNavigator : public wxMiniFrame
 {
 public:
-    void Notify();
+    // ctor
+    LifeNavigator(wxWindow *parent);
+
+private:
+    // any class wishing to process wxWidgets events must use this macro
+    DECLARE_EVENT_TABLE()
+
+    // event handlers
+    void OnClose(wxCloseEvent& event);
 };
 
+
 // --------------------------------------------------------------------------
 // LifeFrame
 // --------------------------------------------------------------------------
@@ -118,30 +131,38 @@ public:
     // member functions
     void UpdateInfoText();
     void UpdateUI();
-    void OnTimer();
 
 private:
-    // any class wishing to process wxWindows events must use this macro
+    // any class wishing to process wxWidgets events must use this macro
     DECLARE_EVENT_TABLE()
 
     // event handlers
     void OnMenu(wxCommandEvent& event);
+    void OnOpen(wxCommandEvent& event);
     void OnSamples(wxCommandEvent& event);
+    void OnNavigate(wxCommandEvent& event);
+    void OnZoom(wxCommandEvent& event);
     void OnSlider(wxScrollEvent& event);
+    void OnTimer(wxTimerEvent& event);
     void OnClose(wxCloseEvent& event);
+
+    // event handler helpers
     void OnStart();
     void OnStop();
-
-    Life         *m_life;  
-    LifeTimer    *m_timer; 
-    LifeCanvas   *m_canvas;
-    wxStaticText *m_text;
-    bool          m_running;
-    bool          m_topspeed;
-    long          m_interval;
-    long          m_tics;
+    void OnStep();
+
+    Life           *m_life;  
+    LifeCanvas     *m_canvas;
+    LifeNavigator  *m_navigator;
+    wxStaticText   *m_text;
+    wxTimer        *m_timer;
+    bool            m_running;
+    bool            m_topspeed;
+    long            m_interval;
+    long            m_tics;
 };
 
+
 // --------------------------------------------------------------------------
 // LifeApp
 // --------------------------------------------------------------------------