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