gnome-games r7299 - in trunk/gnome-sudoku: . src/lib
- From: thinkle svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-games r7299 - in trunk/gnome-sudoku: . src/lib
- Date: Sat, 2 Feb 2008 14:35:43 +0000 (GMT)
Author: thinkle
Date: Sat Feb 2 14:35:43 2008
New Revision: 7299
URL: http://svn.gnome.org/viewvc/gnome-games?rev=7299&view=rev
Log:
2008-02-02 Thomas Hinkle <tmhinkle gmail com>
* src/lib/defaults.py.in (PUZZLE_DIR): Add PUZZLE_DIR parameter to
point to where default starter puzzles are stored.
* src/lib/sudoku_maker.py (SudokuMaker.load): Use PUZZLE_DIR from
defaults to load puzzles (fixes in-place running of gnome-sudoku).
(SudokuMaker.get_puzzles): Add parameter 'exclude' which is a list
of puzzles not to include in results. This allows caller to exclude
saved games (which SudokuMaker doesn't know about)
* src/lib/game_selector.py (NewOrSavedGameSelector.make_new_game_model):
Exclude saved games from list of new games.
Modified:
trunk/gnome-sudoku/ChangeLog
trunk/gnome-sudoku/src/lib/defaults.py.in
trunk/gnome-sudoku/src/lib/game_selector.py
trunk/gnome-sudoku/src/lib/sudoku_maker.py
Modified: trunk/gnome-sudoku/src/lib/defaults.py.in
==============================================================================
--- trunk/gnome-sudoku/src/lib/defaults.py.in (original)
+++ trunk/gnome-sudoku/src/lib/defaults.py.in Sat Feb 2 14:35:43 2008
@@ -8,12 +8,14 @@
LOCALEDIR = os.path.join(APP_DATA_DIR, 'locale')
GLADE_DIR = os.path.join(APP_DATA_DIR,'gnome-sudoku')
BASE_DIR = os.path.join(APP_DATA_DIR,'gnome-sudoku')
+ PUZZLE_DIR = os.path.join(APP_DATA_DIR,'gnome-sudoku','puzzles')
else:
APP_DATA_DIR = os.path.join('@abs_top_builddir@', 'gnome-sudoku', 'data')
IMAGE_DIR = os.path.join('@abs_top_builddir@', 'gnome-sudoku', 'images')
LOCALEDIR = os.path.join(APP_DATA_DIR, 'locale')
GLADE_DIR = os.path.join('@abs_top_builddir@', 'gnome-sudoku', 'glade')
- BASE_DIR = os.path.join('@abs_top_builddir@', 'gnome-sudoku', 'data')
+ BASE_DIR = os.path.join('@abs_top_builddir@', 'gnome-sudoku', 'data')
+ PUZZLE_DIR = BASE_DIR
DOMAIN = 'gnome-games'
gettext.bindtextdomain(DOMAIN, LOCALEDIR)
Modified: trunk/gnome-sudoku/src/lib/game_selector.py
==============================================================================
--- trunk/gnome-sudoku/src/lib/game_selector.py (original)
+++ trunk/gnome-sudoku/src/lib/game_selector.py Sat Feb 2 14:35:43 2008
@@ -67,6 +67,7 @@
self.glade.get_widget('newGameLabel').set_mnemonic_widget(
self.new_game_view
)
+ self.saved_games = saver.SudokuTracker().list_saved_games()
self.make_new_game_model()
self.new_game_view.set_model(self.new_game_model)
self.new_game_view.set_markup_column(0)
@@ -91,12 +92,17 @@
@simple_debug
def make_new_game_model (self):
# Description, Pixbuf, Puzzle (str)
- self.new_game_model = gtk.ListStore(str,gtk.gdk.Pixbuf,str)
+ self.new_game_model = gtk.ListStore(str,gtk.gdk.Pixbuf,str)
+ saved_games_to_exclude = [
+ g['game'].split('\n')[0] for g in self.saved_games
+ ]
for cat in DR.ordered_categories:
rng = DR.categories[cat]; label = DR.label_by_cat[cat]
#puzzle,diff = self.sudoku_maker.get_new_puzzle(.01*random.randint(*[r*100 for r in rng]))
#diff_val = diff.value
- puzzle,diff_val = self.sudoku_maker.get_puzzles(1,[cat],new=True)[0]
+ puzzle,diff_val = self.sudoku_maker.get_puzzles(1,[cat],new=True,
+ exclude=saved_games_to_exclude
+ )[0]
#print 'Got new puzzle for ',cat,'difficulty:',diff
grid = sudoku.sudoku_grid_from_string(puzzle).grid
self.new_game_model.append(('<b><i>'+label+'</i></b>',
@@ -111,9 +117,7 @@
def make_saved_game_model (self):
# Description, Image, Last-Access time (for sorting), Puzzle (jar)
self.saved_game_model = gtk.ListStore(str,gtk.gdk.Pixbuf,int,gobject.TYPE_PYOBJECT)
- t = saver.SudokuTracker()
- for g in t.list_saved_games():
- #print 'game',g
+ for g in self.saved_games:
game = g['game'].split('\n')[0]
grid = sudoku.sudoku_grid_from_string(game)
sr = sudoku.SudokuRater(grid.grid)
Modified: trunk/gnome-sudoku/src/lib/sudoku_maker.py
==============================================================================
--- trunk/gnome-sudoku/src/lib/sudoku_maker.py (original)
+++ trunk/gnome-sudoku/src/lib/sudoku_maker.py Sat Feb 2 14:35:43 2008
@@ -328,9 +328,14 @@
for cat in sudoku.DifficultyRating.categories:
if not os.path.exists(os.path.join(self.pickle_to,
cat.replace(' ','_'))):
- shutil.copy(os.path.join(os.path.join(BASE_DIR,'puzzles'),cat.replace(' ','_')),
- os.path.join(self.pickle_to,cat.replace(' ','_'))
- )
+ try:
+ shutil.copy(os.path.join(os.path.join(PUZZLE_DIR),cat.replace(' ','_')),
+ os.path.join(self.pickle_to,cat.replace(' ','_')))
+ except:
+ print 'Problem copying base puzzles'
+ print 'Attempted to copy from ',os.path.join(os.path.join(PUZZLE_DIR),cat.replace(' ','_'))
+ print 'to',os.path.join(self.pickle_to,cat.replace(' ','_'))
+ raise
def get_new_puzzle (self, difficulty, new=True):
"""Return puzzle with difficulty near difficulty.
@@ -402,7 +407,8 @@
puzzle_list.append(puzzle)
return puzzle_list
- def get_puzzles (self, n, levels, new=True):
+ def get_puzzles (self, n, levels, new=True,
+ exclude=[]):
"""Return a list of n puzzles and difficulty values (as floats).
The puzzles will correspond as closely as possible to levels.
@@ -436,7 +442,7 @@
print 'WARNING: invalid line %s in file %s'%(line,files[lev])
continue
if sudoku.is_valid_puzzle(p):
- if not new or p not in self.played:
+ if (p not in exclude) and (not new or p not in self.played):
puzzles.append((p,float(d)))
i += 1
else:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]