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()
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