]> git.saurik.com Git - wxWidgets.git/blobdiff - demos/forty/canvas.cpp
Don't do the wx cleanup if wxPython didn't do the initialization.
[wxWidgets.git] / demos / forty / canvas.cpp
index d2be8edcf1c9a83617392f2b67d37db364f16d26..81e7985234fa46c35d79f9c6b5c9d54952559e66 100644 (file)
@@ -68,6 +68,8 @@ FortyCanvas::~FortyCanvas()
        UpdateScores();
        delete m_game;
        delete m_scoreFile;
+    delete m_handCursor;
+    delete m_arrowCursor;
 }
 
 
@@ -92,7 +94,7 @@ void FortyCanvas::OnDraw(wxDC& dc)
 {
        dc.SetFont(* m_font);
        m_game->Redraw(dc);
-
+#if 0
        // if player name not set (and selection dialog is not displayed)
        // then ask the player for their name
        if (m_player.Length() == 0 && !m_playerDialog)
@@ -109,7 +111,7 @@ void FortyCanvas::OnDraw(wxDC& dc)
                        m_game->DisplayScore(dc);
                        m_playerDialog->Destroy();
                        m_playerDialog = 0;
-                       Refresh();
+                        Refresh(false);
                }
                else
                {
@@ -117,8 +119,40 @@ void FortyCanvas::OnDraw(wxDC& dc)
                        ((wxFrame*)GetParent())->Close(TRUE);
                }
        }
+#endif
 }
 
+void FortyCanvas::ShowPlayerDialog()
+{
+       // if player name not set (and selection dialog is not displayed)
+       // then ask the player for their name
+       if (m_player.Length() == 0 && !m_playerDialog)
+       {
+               m_playerDialog = new PlayerSelectionDialog(this, m_scoreFile);
+               m_playerDialog->ShowModal();
+               m_player = m_playerDialog->GetPlayersName();
+               if (m_player.Length() > 0)
+               {
+                       // user entered a name - lookup their score
+                       int wins, games, score;
+                       m_scoreFile->ReadPlayersScore(m_player, wins, games, score);
+                       m_game->NewPlayer(wins, games, score);
+                        
+                        wxClientDC dc(this);
+                        dc.SetFont(* m_font);
+                       m_game->DisplayScore(dc);
+                       m_playerDialog->Destroy();
+                       m_playerDialog = 0;
+                        Refresh(false);
+               }
+               else
+               {
+                       // user cancelled the dialog - exit the app
+                       ((wxFrame*)GetParent())->Close(TRUE);
+               }
+        }
+}
+        
 /*
 Called when the main frame is closed
 */
@@ -232,3 +266,8 @@ void FortyCanvas::Redo()
        dc.SetFont(* m_font);
        m_game->Redo(dc);
 }
+
+void FortyCanvas::LayoutGame()
+{
+       m_game->Layout();
+}