gnome-games r7647 - in trunk/glchess: . src/lib
- From: rancell svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-games r7647 - in trunk/glchess: . src/lib
- Date: Sun, 11 May 2008 09:58:57 +0100 (BST)
Author: rancell
Date: Sun May 11 08:58:57 2008
New Revision: 7647
URL: http://svn.gnome.org/viewvc/gnome-games?rev=7647&view=rev
Log:
Correctly move games from the history (~/.gnome2/glchess/history) when the user selects a file to save to.
Modified:
trunk/glchess/ChangeLog
trunk/glchess/src/lib/display.py
trunk/glchess/src/lib/history.py
trunk/glchess/src/lib/main.py
Modified: trunk/glchess/src/lib/display.py
==============================================================================
--- trunk/glchess/src/lib/display.py (original)
+++ trunk/glchess/src/lib/display.py Sun May 11 08:58:57 2008
@@ -520,30 +520,20 @@
def save(self, fileName = None):
"""Called by ui.ViewFeedback"""
- if fileName is None:
- fileName = self.game.fileName
- assert(fileName is not None)
+ # If filename supplied take out of the history
+ if fileName is not None:
+ if self.game.inHistory:
+ self.game.inHistory = False
+ if self.game.fileName is not None:
+ self.game.application.history.rename(self.game.fileName, fileName)
+ self.game.fileName = fileName
+ return self.game.save()
- try:
- f = file(fileName, 'w')
- except IOError, e:
- return e.args[1]
-
- self.game.application.logger.addLine('Saving game %s to %s' % (repr(self.game.name), fileName))
-
- pgnGame = chess.pgn.PGNGame()
- self.game.toPGN(pgnGame)
-
- lines = pgnGame.getLines()
- for line in lines:
- f.write(line + '\n')
- f.write('\n')
- f.close()
-
- self.game.fileName = fileName
-
def getFileName(self):
"""Called by ui.ViewFeedback"""
+ # If in the history then prompt for a new name
+ if self.game.inHistory:
+ return None
return self.game.fileName
def resign(self):
@@ -551,7 +541,7 @@
p = self.game.getHumanPlayer()
if p is not None:
p.resign()
-
+
def claimDraw(self):
"""Called by ui.ViewFeedback"""
# TODO: Have the UI ask if the player wants to make a move first or claim now (or abort)
Modified: trunk/glchess/src/lib/history.py
==============================================================================
--- trunk/glchess/src/lib/history.py (original)
+++ trunk/glchess/src/lib/history.py Sun May 11 08:58:57 2008
@@ -93,6 +93,28 @@
return fileName
+ def rename(self, oldName, newName):
+ try:
+ os.unlink(oldName)
+ except OSError:
+ print 'Failed to remove game from history'
+
+ try:
+ f = file(UNFINISHED_FILE, 'r')
+ lines = f.readlines()
+ f.close()
+
+ f = file(UNFINISHED_FILE, 'w')
+ for line in lines:
+ l = line.strip()
+ if l == oldName:
+ f.write(newName + '\n')
+ else:
+ f.write(l + '\n')
+ f.close()
+ except IOError:
+ print 'Failed to update unfinished list'
+
def save(self, g, fileName):
"""Save a game in the history.
@@ -127,7 +149,7 @@
f = file(UNFINISHED_FILE, 'w')
for line in lines:
l = line.strip()
- if l == fileName and result != chess.pgn.RESULT_INCOMPLETE:
+ if l == fileName and result == chess.pgn.RESULT_INCOMPLETE:
continue
f.write(l + '\n')
if result == chess.pgn.RESULT_INCOMPLETE:
Modified: trunk/glchess/src/lib/main.py
==============================================================================
--- trunk/glchess/src/lib/main.py (original)
+++ trunk/glchess/src/lib/main.py Sun May 11 08:58:57 2008
@@ -292,12 +292,26 @@
def save(self):
"""Save this game"""
- if len(self.getMoves()) < 2:
- return
pgnGame = chess.pgn.PGNGame()
self.toPGN(pgnGame)
- self.application.history.save(pgnGame, self.fileName)
+ if self.inHistory:
+ # Don't bother if haven't made any significant moves
+ if len(self.getMoves()) < 2:
+ return
+ self.application.history.save(pgnGame, self.fileName)
+ else:
+ try:
+ f = file(self.fileName, 'w')
+ lines = pgnGame.getLines()
+ for line in lines:
+ f.write(line + '\n')
+ f.write('\n')
+ f.close()
+ except IOError, e:
+ return e.args[1]
+
self.setNeedsSaving(False)
+ self.application.logger.addLine('Saved game %s to %s' % (repr(self.name), self.fileName))
class UI(ui.UIFeedback):
"""
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]