Пример #1
0
   def __init__(self):
      super(ChessFiles, self).__init__()
      self.inFileName = self.getConfigItem(ValidConfig.ImportFile["name"])
      self.outFileName = self.getConfigItem(ValidConfig.ExportFile["name"])

      self.attemptInputFileOpen(self.inFileName)
      self.attemptOutputFileOpen(self.outFileName)

      self.pgnFile = PgnFile()
Пример #2
0
class ChessFiles(ConfigFile):
   """This class handles all file reads and writes for the chess program and provides an interface
      for interacting with PGN files"""

   def __init__(self):
      super(ChessFiles, self).__init__()
      self.inFileName = self.getConfigItem(ValidConfig.ImportFile["name"])
      self.outFileName = self.getConfigItem(ValidConfig.ExportFile["name"])

      self.attemptInputFileOpen(self.inFileName)
      self.attemptOutputFileOpen(self.outFileName)

      self.pgnFile = PgnFile()


   def __del__(self):
      super(self.__class__, self).__del__()
      self.closeInFile()
      self.closeOutFile()

   def attemptInputFileOpen(self, filename):
      self.inFileStatus = "Ready"
      fileDir = os.path.abspath(self.getConfigItem(ValidConfig.FileDir["name"]))
      filename = os.path.join(fileDir, filename)
      try:
         self.inFile = open(filename)
      except (OSError,IOError):
         self.inFile = None
         self.inFileStatus = "Cannot open input file."

   def closeInFile(self):
      if self.inFile != None:
         self.inFile.close()

   def attemptOutputFileOpen(self, filename):
      self.outFileStatus = "Ready"
      fileDir = os.path.abspath(self.getConfigItem(ValidConfig.FileDir["name"]))
      filename = os.path.join(fileDir, filename)
      try:
         self.outFile = open(filename, "a");
      except (OSError,IOError):
         self.outFile = None
         self.outFileStatus = "Cannot open output file."

   def closeOutFile(self):
      if self.outFile != None:
         self.outFile.close()

   def changeInputFile(self, infile):
      self.closeInFile()
      self.attemptInputFileOpen(infile)

   def changeOutputFile(self, outfile):
      self.closeOutFile()
      self.attemptOutputFileOpen(outfile)
      
   #Start PGN specific functions

   def resetPgnFile(self):
      self.pgnFile.reset()

   def appendMoveForWrite(self, move):
      self.pgnFile.saveMove(move)
      
   def setTag(self, tagName, tagValue):
      self.pgnFile.saveTag(tagName, tagValue)

   def writeGame(self):
      self.outFile.seek(0)
      self.outFile.truncate(0)
      self.outFile.write(str(self.pgnFile))
      self.outFile.flush()

   def getPgnErrorString(self):
      return self.pgnFile.getParseErrorString()

   def readPgn(self):
      self.resetPgnFile()
      self.inFile.seek(0)
      return self.pgnFile.parseFile(self.inFile)

   def getNumberOfGames(self):
      return self.pgnFile.getNumberOfGames()
   
   def getGameHeaders(self):
      return self.pgnFile.getGameInfo()
   
   def selectGame(self, game):
      return self.pgnFile.selectCurrentGame(game)

   def readMoves(self):
      return [move.san for move in self.pgnFile.getMoves()]
      
   def getTag(self, tagName):
      return self.pgnFile.getTag(tagName)
      
   def getTags(self):
      return self.pgnFile.getTags()

   def deleteTag(self, tagName):
      self.pgnFile.deleteTag(tagName)
         
   def resetCurrentGame(self):
      self.pgnFile.resetCurrentGame()
      
   def resetCurrentGameMoves(self):
      self.pgnFile.resetCurrentGameMoves()
     
   def startNewGame(self):
      self.pgnFile.newGame()
   
   def getCurrentGameIndex(self):
      return self.pgnFile.currentGameIndex