r4518 - developers/erin_yueh/pythonEFL-sudoku/src

erin_yueh at docs.openmoko.org erin_yueh at docs.openmoko.org
Wed Jul 9 09:33:07 CEST 2008


Author: erin_yueh
Date: 2008-07-09 09:33:06 +0200 (Wed, 09 Jul 2008)
New Revision: 4518

Modified:
   developers/erin_yueh/pythonEFL-sudoku/src/sudoku_ui.py
Log:
add undo function (Erin Yueh)


Modified: developers/erin_yueh/pythonEFL-sudoku/src/sudoku_ui.py
===================================================================
--- developers/erin_yueh/pythonEFL-sudoku/src/sudoku_ui.py	2008-07-09 06:32:20 UTC (rev 4517)
+++ developers/erin_yueh/pythonEFL-sudoku/src/sudoku_ui.py	2008-07-09 07:33:06 UTC (rev 4518)
@@ -93,9 +93,32 @@
                     text.color_set(10,10,10,200)
                 elif(value==0):
                     text.color_set(0,255,255,255)
+        ee.data["undo_counter"] = 0
+        ee.data["undo_track"] = []
         print 'clear all data!!'
-    elif(source =='undo' or source == 'redo'):
-        print 'undo or redo'
+    elif(source =='undo'):
+        print 'undo'
+        if(ee.data["undo_counter"] == 0):
+            return
+        print ee.data["undo_counter"], ee.data["undo_track"]
+        undo_counter = ee.data["undo_counter"]
+        (addr,value) = ee.data["undo_track"][undo_counter-1]
+        ee.data["undo_track"].pop()
+        
+        i = int(addr) / 9
+        j = int(addr) % 9
+        original_value = ee.data["puzzle_clone"][i][j]
+        text = ee.data["button"+str(addr)]
+        print i,j,original_value,text
+        text.text_set(str(original_value))
+        text.color_set(100,255,0,255)
+        ee.data["puzzle"][i][j] = original_value
+        text.data["value"] = original_value
+        if(undo_counter>0):
+            ee.data["undo_counter"] = undo_counter-1
+    elif(source == 'redo'):
+        print 'redo'
+        print ee.data["undo_counter"], ee.data["undo_track"]
     elif(source == 'solve'):
         print 'is solved?!'
         if(solve() == False):
@@ -105,6 +128,8 @@
     elif(source == 'create'):
         print 'create'
         createNewPuzzle()
+        ee.data["undo_counter"] = 0
+        ee.data["undo_track"] = []
     else: 
         # fill in key number
         if(ee.data["clicking"]):
@@ -121,8 +146,17 @@
                 text.color_set(255,0,0,255)
             else: 
                 text.color_set(255,255,255,255)
-            puzzle = ee.data["puzzle"]    
-            puzzle[i][j] = int(source)    
+            # real fill in the value to puzzle data
+            puzzle = ee.data["puzzle"]
+            puzzle[i][j] = int(source)
+            # record the step
+            undo_counter = ee.data["undo_counter"]
+            ee.data["undo_counter"] = undo_counter +1
+            step = (int(addr),int(source))
+            track = ee.data["undo_track"]
+            track.append(step)
+            print 'counter:',ee.data["undo_counter"]
+            print 'track:',track
     return True
 
 def puzzle_key_cb(zoom_in, emission, source):
@@ -220,6 +254,8 @@
     ee.data["puzzle"] = puzzle
     ee.data["puzzle_clone"] = puzzle_clone
     
+    ee.data["undo_counter"] = 0
+    ee.data["undo_track"] = []
     
     element_w = 455 / 9
     element_h = 455 / 9 
@@ -247,7 +283,7 @@
                 text.data["fixed"] = False
             text_data = "button" + str(addr)
             ee.data[text_data] = text
-    
+
     ee.show()
     #ecore.animator_add(animate_line)
     #ecore.animator_frametime_set(1.0 / 30.0)   





More information about the commitlog mailing list