gnome-games r7347 - in trunk/glchess: . src/lib src/lib/ggz src/lib/gtkui src/lib/ui



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]