def make_new_game_model (self): # Description, Pixbuf, Puzzle (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 sudoku.DifficultyRating.ordered_categories: label = sudoku.DifficultyRating.label_by_cat[cat] puzzles = self.sudoku_maker.get_puzzles(1, [cat], new = True, exclude = saved_games_to_exclude ) if puzzles: puzzle, diff_val = puzzles[0] else: print 'WARNING: Repeating puzzle for difficulty %s -- generate more puzzles to avoid this.' % cat puzzles = self.sudoku_maker.get_puzzles(1, [cat], new = False) if puzzles: puzzle, diff_val = puzzles[0] lpuz = list(puzzle) lpuz.reverse() # we reverse the puzzle so it at least looks different :-) puzzle = '' for n in lpuz: puzzle += n else: print 'WARNING: No puzzle for difficulty', cat continue grid = sudoku.sudoku_grid_from_string(puzzle).grid self.new_game_model.append(('<b><i>' + label + '</i></b>', sudoku_thumber.make_pixbuf(grid, None, color_from_difficulty(diff_val) ), puzzle ))
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) for g in self.saved_games: game = g['game'].split('\n')[0] grid = sudoku.sudoku_grid_from_string(game) sr = sudoku.SudokuRater(grid.grid) sdifficulty = sr.difficulty() lastPlayedText = _("Last Played %(timeAgo)s") % {'timeAgo': format_friendly_date(g['saved_at'])} levelText = _("%(level)s puzzle") % {'level': sdifficulty.value_string()} durationText = _("Played for %(duration)s") % { 'duration': format_time(g['timer.active_time'], round_at = 15, friendly = True)} desc = "<b><i>%s</i></b>\n<span size='small'><i>%s</i>\n<i>%s.</i></span>" % ( levelText, lastPlayedText, durationText, ) self.saved_game_model.append(( desc, sudoku_thumber.make_pixbuf(grid.grid, sudoku.sudoku_grid_from_string(g['game'].split('\n')[1].replace(' ', '')).grid, color_from_difficulty(sdifficulty.value) ), g['saved_at'], g ))
def make_saved_game_model (self): # Description, Image, Last-Access time (for sorting), Puzzle (jar) self.saved_game_model = Gtk.ListStore(str, GdkPixbuf.Pixbuf, int, GObject.TYPE_PYOBJECT) for g in self.saved_games: game = g['game'].split('\n')[0] grid = sudoku.sudoku_grid_from_string(game) sr = sudoku.SudokuRater(grid.grid) sdifficulty = sr.difficulty() lastPlayedText = self.format_friendly_date(g['saved_at']) try: levelText = {'easy': _('Easy puzzle'), 'medium': _('Medium puzzle'), 'hard': _('Hard puzzle'), 'very hard': _('Very hard puzzle')}[sdifficulty.value_category()] except KeyError: levelText = sdifficulty.value_category() tim = g['timer.active_time'] if tim >= 3600.0: hours = int(tim / 3600) durationText = ngettext("Played for %d hour", "Played for %d hours", hours) % hours elif tim >= 60.0: minutes = int(tim / 60) durationText = ngettext("Played for %d minute", "Played for %d minutes", minutes) % minutes else: seconds = int(tim) durationText = ngettext("Played for %d second", "Played for %d seconds", seconds) % seconds desc = "<b><i>%s</i></b>\n<span size='small'><i>%s</i>\n<i>%s.</i></span>" % ( levelText, lastPlayedText, durationText, ) self.saved_game_model.append(( desc, sudoku_thumber.make_pixbuf(grid.grid, sudoku.sudoku_grid_from_string(g['game'].split('\n')[1].replace(' ', '')).grid, color_from_difficulty(sdifficulty.value) ), g['saved_at'], g ))