|
From: <umg...@us...> - 2007-07-23 20:09:00
|
Revision: 492
http://svn.sourceforge.net/pybridge/?rev=492&view=rev
Author: umgangee
Date: 2007-07-23 13:07:54 -0700 (Mon, 23 Jul 2007)
Log Message:
-----------
Open table windows in response to successful joinTable() requests, instead of waiting for event_tableJoined(), so internal errors are reported to sys.excepthook instead of the errback attached to joinTable() deferred by caller.
Modified Paths:
--------------
trunk/pybridge/pybridge/ui/window_gametable.py
trunk/pybridge/pybridge/ui/window_main.py
Modified: trunk/pybridge/pybridge/ui/window_gametable.py
===================================================================
--- trunk/pybridge/pybridge/ui/window_gametable.py 2007-07-23 11:55:00 UTC (rev 491)
+++ trunk/pybridge/pybridge/ui/window_gametable.py 2007-07-23 20:07:54 UTC (rev 492)
@@ -50,7 +50,7 @@
def setUp(self):
- self.children = WindowManager()
+ self.children = WindowManager() # Private to this window.
self.eventHandler = SimpleEventHandler(self)
self.player = None
@@ -192,14 +192,14 @@
dialog.destroy()
if response_id == gtk.RESPONSE_OK:
d = client.leaveTable(self.table.id)
- #d.addErrback(self.errback)
+ d.addCallbacks(lambda _: wm.close(self), self.errback)
dialog.connect('response', dialog_response_cb)
dialog.show()
else:
d = client.leaveTable(self.table.id)
- #d.addErrback(self.errback)
+ d.addCallbacks(lambda _: wm.close(self), self.errback)
def on_fullscreen_clicked(self, widget, *args):
Modified: trunk/pybridge/pybridge/ui/window_main.py
===================================================================
--- trunk/pybridge/pybridge/ui/window_main.py 2007-07-23 11:55:00 UTC (rev 491)
+++ trunk/pybridge/pybridge/ui/window_main.py 2007-07-23 20:07:54 UTC (rev 492)
@@ -28,12 +28,13 @@
from pybridge.network.client import client
from eventhandler import SimpleEventHandler
-from manager import WindowManager, wm
+from manager import wm
from dialog_connection import DialogConnection
from dialog_newtable import DialogNewtable
from dialog_preferences import DialogPreferences
from dialog_userinfo import DialogUserInfo
+from window_gametable import WindowGameTable
# TODO: import all Window*Table classes automatically.
from pybridge.games.bridge.ui.window_bridgetable import WindowBridgeTable
@@ -51,9 +52,6 @@
def setUp(self):
- # Use a private WindowManager for table window instances.
- self.tables = WindowManager()
-
# Set up table model and icon view.
self.tableview.set_text_column(0)
self.tableview.set_pixbuf_column(1)
@@ -110,8 +108,9 @@
def event_loggedOut(self):
- for table in self.tables.values():
- self.tables.close(table)
+ for window in wm.values():
+ if isinstance(window, WindowGameTable):
+ wm.close(window)
self.notebook.set_property('sensitive', False)
self.menu_connect.set_property('visible', True)
@@ -119,7 +118,6 @@
self.menu_newtable.set_property('sensitive', False)
#self.newtable.set_property('sensitive', False)
- print self.tableview.get_model()
self.tableview.get_model().clear()
self.userview.get_model().clear()
@@ -157,15 +155,6 @@
pass # Ignore an unrecognised roster.
- def event_joinTable(self, tableid, table):
- window = self.tables.open(WindowBridgeTable, id=tableid)
- window.setTable(table)
-
-
- def event_leaveTable(self, tableid):
- self.tables.close(self.tables[tableid]) # Close window.
-
-
def event_openTable(self, tableid, info):
"""Adds a table to the table listing."""
# Only display table if it supported by client.
@@ -210,12 +199,18 @@
def on_tableview_item_activated(self, iconview, path, *args):
+
+ def joinedTable(table):
+ # TODO: select correct table window class.
+ window = wm.open(WindowBridgeTable, id=tableid)
+ window.setTable(table)
+
model = self.tableview.get_model()
iter = model.get_iter(path)
tableid = model.get_value(iter, 0)
if tableid not in client.tables:
d = client.joinTable(tableid)
- d.addErrback(self.errback)
+ d.addCallbacks(joinedTable, self.errback)
self.jointable.set_property('sensitive', False)
@@ -285,7 +280,8 @@
def on_disconnect_activate(self, widget, *args):
do_disconnect = True
- if len([True for table in self.tables.values() if table.player]) > 0:
+ # TODO: avoid introspection of table windows.
+ if len([True for w in wm.values() if isinstance(w, WindowGameTable) and w.player]) > 0:
dialog = gtk.MessageDialog(parent=self.window,
flags=gtk.DIALOG_MODAL,
type=gtk.MESSAGE_QUESTION)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|