Example #1
0
 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
                                     ))
Example #2
0
 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
             ))
Example #3
0
 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
             ))