gnome-games r7347 - in trunk/glchess: . src/lib src/lib/ggz src/lib/gtkui src/lib/ui
- From: rancell svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-games r7347 - in trunk/glchess: . src/lib src/lib/ggz src/lib/gtkui src/lib/ui
- Date: Mon, 11 Feb 2008 10:49:53 +0000 (GMT)
Author: rancell
Date: Mon Feb 11 10:49:52 2008
New Revision: 7347
URL: http://svn.gnome.org/viewvc/gnome-games?rev=7347&view=rev
Log:
Fix a number of bugs when switching GGZ servers
Modified:
trunk/glchess/ChangeLog
trunk/glchess/src/lib/ggz/client.py
trunk/glchess/src/lib/gtkui/gtkui.py
trunk/glchess/src/lib/gtkui/network.py
trunk/glchess/src/lib/network.py
trunk/glchess/src/lib/ui/ui.py
Modified: trunk/glchess/src/lib/ggz/client.py
==============================================================================
--- trunk/glchess/src/lib/ggz/client.py (original)
+++ trunk/glchess/src/lib/ggz/client.py Mon Feb 11 10:49:52 2008
@@ -410,7 +410,7 @@
self.client.feedback.roomUpdated(player.lastRoom)
self.client.feedback.playerRemoved(player)
-
+
def closed(self, errno = 0):
print 'SEVERE: GGZ connection closed: error %d' % errno
self.client.setState(self.client.STATE_DISCONNECTED)
Modified: trunk/glchess/src/lib/gtkui/gtkui.py
==============================================================================
--- trunk/glchess/src/lib/gtkui/gtkui.py (original)
+++ trunk/glchess/src/lib/gtkui/gtkui.py Mon Feb 11 10:49:52 2008
@@ -201,6 +201,7 @@
properties={gnome.PARAM_APP_DATADIR: APP_DATA_DIR})
self.feedback = feedback
+ self._watches = {}
self.__networkGames = {}
self.__saveGameDialogs = {}
self.__joinGameDialogs = []
@@ -289,7 +290,11 @@
def watchFileDescriptor(self, fd):
"""Extends ui.UI"""
- gobject.io_add_watch(fd, gobject.IO_IN | gobject.IO_HUP, self.__readData)
+ self._watches[fd] = gobject.io_add_watch(fd, gobject.IO_IN | gobject.IO_HUP, self.__readData)
+
+ def unwatchFileDescriptor(self, fd):
+ """Extends ui.UI"""
+ gobject.source_remove(self._watches.pop(fd))
def writeFileDescriptor(self, fd):
"""Extends ui.UI"""
Modified: trunk/glchess/src/lib/gtkui/network.py
==============================================================================
--- trunk/glchess/src/lib/gtkui/network.py (original)
+++ trunk/glchess/src/lib/gtkui/network.py Mon Feb 11 10:49:52 2008
@@ -32,7 +32,7 @@
self.profileModel = gtk.ListStore(gobject.TYPE_PYOBJECT, str)
iter = self.profileModel.append()
- self.profileModel.set(iter, 0, None, 1, 'Disconnected')
+ self.profileModel.set(iter, 0, None, 1, _('Disconnected'))
widget = self.__gui.get_widget('server_combo')
widget.set_model(self.profileModel)
@@ -325,6 +325,10 @@
if atBottom:
view.scroll_mark_onscreen(mark)
+ def clearText(self):
+ buffer = self.__gui.get_widget('chat_textview').get_buffer()
+ buffer.delete(buffer.get_start_iter(), buffer.get_end_iter())
+
def close(self):
"""Called by glchess.ui.UIController"""
self.__gui.get_widget('network_game_dialog').hide()
Modified: trunk/glchess/src/lib/network.py
==============================================================================
--- trunk/glchess/src/lib/network.py (original)
+++ trunk/glchess/src/lib/network.py Mon Feb 11 10:49:52 2008
@@ -8,6 +8,8 @@
import ui
import game
+_ = gettext.gettext
+
class GGZServer:
pass
@@ -57,19 +59,21 @@
self.ui = ui
self.feedback = feedback
self.socket = None
+ self.fd = -1
def logXML(self, text):
self.logWindow.addText(text, 'input')
-
+
def logBinary(self, data):
self.logWindow.addBinary(data, 'input')
def connect(self, host, port):
self.close()
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ self.fd = self.socket.fileno()
self.socket.setblocking(False)
- self.ui.application.ioHandlers[self.socket.fileno()] = self
- self.ui.controller.watchFileDescriptor(self.socket.fileno())
+ self.ui.application.ioHandlers[self.fd] = self
+ self.ui.controller.watchFileDescriptor(self.fd)
try:
self.socket.connect((host, port))
@@ -99,9 +103,10 @@
def close(self):
if self.socket is None:
return
- # FIXME: Unregister fd events
+ self.ui.controller.unwatchFileDescriptor(self.fd)
self.socket.close()
self.socket = None
+ self.fd = -1
def read(self):
try:
@@ -162,10 +167,11 @@
self.dialog.controller.clearError()
def onDisconnected(self):
- self.dialog.controller.setError('Disconnected', 'You have been disconnected from the server')
+ self.dialog.controller.setError(_('Disconnected'), _('You have been disconnected from the server'))
def openChannel(self, feedback):
print 'Open Channel'
+ self.setBusy(True)
socket = GGZChannel(self.dialog.ui, feedback)
socket.connect(self.profile.host, self.profile.port)
return socket
@@ -210,7 +216,7 @@
return
description = table.description
if len(description) == 0:
- description = gettext.gettext('No description')
+ description = _('No description')
nUsed = 0
for seat in table.seats:
if seat.type == 'bot' or seat.user != '':
@@ -330,10 +336,12 @@
self.decoder.close()
self.decoder = None
+ self.controller.clearError()
self.controller.setSensitive(False)
self.controller.clearRooms()
self.controller.clearPlayers()
self.controller.clearTables()
+ self.controller.clearText()
self.profile = profile
if profile is None:
Modified: trunk/glchess/src/lib/ui/ui.py
==============================================================================
--- trunk/glchess/src/lib/ui/ui.py (original)
+++ trunk/glchess/src/lib/ui/ui.py Mon Feb 11 10:49:52 2008
@@ -406,7 +406,10 @@
When data is available onReadFileDescriptor() is called.
"""
assert(False)
-
+
+ def unwatchFileDescriptor(self, fd):
+ assert(False)
+
def writeFileDescriptor(self, fd):
"""Notify when a file descriptor can be written to.
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]