|
From: <umg...@us...> - 2008-05-10 09:51:33
|
Revision: 507
http://pybridge.svn.sourceforge.net/pybridge/?rev=507&view=rev
Author: umgangee
Date: 2008-05-10 02:51:38 -0700 (Sat, 10 May 2008)
Log Message:
-----------
A variety of changes, that, for some reason, weren't committed last year.
Modified Paths:
--------------
trunk/pybridge/INSTALL
trunk/pybridge/NEWS
trunk/pybridge/README
trunk/pybridge/locale/src/Makefile
trunk/pybridge/pybridge/__init__.py
trunk/pybridge/pybridge/games/bridge/ui/window_scoresheet.py
trunk/pybridge/pybridge/network/remotetable.py
trunk/pybridge/pybridge/server/database.py
trunk/pybridge/pybridge/ui/dialog_connection.py
trunk/pybridge/pybridge/ui/window_chat.py
trunk/pybridge/pybridge/ui/window_gametable.py
trunk/pybridge/setup.py
trunk/pybridge/tests/bridge/test_deal.py
trunk/pybridge/tests/monkey.py
Modified: trunk/pybridge/INSTALL
===================================================================
--- trunk/pybridge/INSTALL 2007-10-04 16:40:59 UTC (rev 506)
+++ trunk/pybridge/INSTALL 2008-05-10 09:51:38 UTC (rev 507)
@@ -38,7 +38,7 @@
- PyGTK (>= 2.8) - http://www.pygtk.org/
- Cairo (>= 1.0) - http://cairographics.org/
- PyCairo (>= 1.0) - http://cairographics.org/pycairo/
- - ConfigObj (>= 4.0) -http://www.voidspace.org.uk/python/configobj.html
+ - ConfigObj (>= 4.0) - http://www.voidspace.org.uk/python/configobj.html
To run the standalone PyBridge server, the following software is also required:
Modified: trunk/pybridge/NEWS
===================================================================
--- trunk/pybridge/NEWS 2007-10-04 16:40:59 UTC (rev 506)
+++ trunk/pybridge/NEWS 2008-05-10 09:51:38 UTC (rev 507)
@@ -1,3 +1,39 @@
+==========
+0.4.0 (??)
+==========
+
+New features
+------------
+
+ - Architecture:
+
+ - Full support for other games.
+
+
+ - User interface:
+
+ - Separation of bridge table UI from generic table window. Tables for particular games inherit.
+
+ - Enhanced chat support.
+
+
+Bug fixes
+---------
+
+ - Fixed https://bugs.launchpad.net/pybridge/+bug/127974
+
+
+Translations
+------------
+
+ - French: Aldo Reset <al...@pl...>
+
+ - Polish:
+
+ Please help with translating PyBridge into your native language!
+ See https://translations.launchpad.net/pybridge/ to get started.
+
+
=====================
0.3.0 (25 June 2007)
=====================
Modified: trunk/pybridge/README
===================================================================
--- trunk/pybridge/README 2007-10-04 16:40:59 UTC (rev 506)
+++ trunk/pybridge/README 2008-05-10 09:51:38 UTC (rev 507)
@@ -1,6 +1,7 @@
-PyBridge 0.3.0 - a free online bridge game
+PyBridge 0.4.0 - a free online bridge game
http://pybridge.sourceforge.net/
http://sourceforge.net/projects/pybridge/
+https://launchpad.net/pybridge
About PyBridge
@@ -31,12 +32,12 @@
Your feedback, bug reports and ideas for new features are especially welcome.
- - Forums: http://sourceforge.net/forum/?group_id=114287
+ - Bug reports: https://bugs.launchpad.net/pybridge/
- - Bug reports: http://sourceforge.net/tracker/?group_id=114287&atid=667822
+ - Feature ideas: https://blueprints.launchpad.net/pybridge/
+
+ - Translations: https://translations.launchpad.net/pybridge/
- - Feature ideas: http://sourceforge.net/tracker/?group_id=114287&atid=667825
-
If you are a competent (or aspiring!) Python programmer and would like to
contribute code to PyBridge, then please get in touch with the developers!
Modified: trunk/pybridge/locale/src/Makefile
===================================================================
--- trunk/pybridge/locale/src/Makefile 2007-10-04 16:40:59 UTC (rev 506)
+++ trunk/pybridge/locale/src/Makefile 2008-05-10 09:51:38 UTC (rev 507)
@@ -18,12 +18,12 @@
msgmerge -UN $@ $<
#Generic rule for POT files
-%.pot: ../../glade/pybridge.glade ../../pybridge/ui/*.py
+%.pot: ../../glade/pybridge.glade
############
#CREATING $@
############
intltool-extract --type=gettext/glade ../../glade/pybridge.glade
- xgettext -k_ -kN_ --from-code=UTF-8 -o $@ ../../glade/pybridge.glade.h ../../pybridge/ui/*.py
+ xgettext -k_ -kN_ --from-code=UTF-8 -o $@ ../../glade/pybridge.glade.h ../../pybridge/ui/*.py ../../pybridge/games/bridge/ui/*.py
update: $(shell ls *.po)
Modified: trunk/pybridge/pybridge/__init__.py
===================================================================
--- trunk/pybridge/pybridge/__init__.py 2007-10-04 16:40:59 UTC (rev 506)
+++ trunk/pybridge/pybridge/__init__.py 2008-05-10 09:51:38 UTC (rev 507)
@@ -2,7 +2,7 @@
PyBridge - a free online bridge game.
"""
-__version__ = '0.3.0'
+__version__ = '0.4.0'
__author__ = 'Michael Banks <mi...@ba...>'
__license__ = 'GNU General Public License, Version 2 or later'
Modified: trunk/pybridge/pybridge/games/bridge/ui/window_scoresheet.py
===================================================================
--- trunk/pybridge/pybridge/games/bridge/ui/window_scoresheet.py 2007-10-04 16:40:59 UTC (rev 506)
+++ trunk/pybridge/pybridge/games/bridge/ui/window_scoresheet.py 2008-05-10 09:51:38 UTC (rev 507)
@@ -124,10 +124,15 @@
self.window.set_title(_('Score Sheet'))
#self.window.connect('delete_event', self.on_delete_event)
+ self.sw = gtk.ScrolledWindow()
+ self.sw.set_policy(gtk.POLICY_NEVER, gtk.POLICY_ALWAYS)
+ self.sw.set_size_request(-1, 150)
+ self.window.add(self.sw)
+
self.eventHandler = SimpleEventHandler(self)
self.table = None
- self.window.show()
+ self.window.show_all()
def tearDown(self):
@@ -150,7 +155,7 @@
for result in self.table.game.results:
self.scoresheet.add_result(result)
- self.window.add(self.scoresheet)
+ self.sw.add(self.scoresheet)
self.scoresheet.show()
@@ -164,7 +169,6 @@
self.scoresheet.add_result(result)
-
def event_makeCall(self, call, position):
self.update()
Modified: trunk/pybridge/pybridge/network/remotetable.py
===================================================================
--- trunk/pybridge/pybridge/network/remotetable.py 2007-10-04 16:40:59 UTC (rev 506)
+++ trunk/pybridge/pybridge/network/remotetable.py 2008-05-10 09:51:38 UTC (rev 507)
@@ -49,6 +49,8 @@
if state['gamename'] in SUPPORTED_GAMES:
gameclass = SUPPORTED_GAMES[state['gamename']]
self.game = gameclass()
+ # TODO: encapsulate within a try/except block, so errors are not
+ # propagated back to server, and client drops table gracefully.
self.game.setState(state['gamestate'])
else:
raise NameError, "Unsupported game class %s" % state['gamename']
Modified: trunk/pybridge/pybridge/server/database.py
===================================================================
--- trunk/pybridge/pybridge/server/database.py 2007-10-04 16:40:59 UTC (rev 506)
+++ trunk/pybridge/pybridge/server/database.py 2008-05-10 09:51:38 UTC (rev 507)
@@ -99,6 +99,7 @@
# Don't split name field - see http://people.w3.org/rishida/blog/?p=100
realname = UnicodeCol(default=None, length=40)
profile = UnicodeCol(default=None)
+ #country = StringCol(length=2, default=None) # ISO 3166 country code.
created = DateTimeCol(default=datetime.now)
lastLogin = DateTimeCol(default=None)
# friends = MultipleJoin('UserFriend', joinColumn='from_user')
Modified: trunk/pybridge/pybridge/ui/dialog_connection.py
===================================================================
--- trunk/pybridge/pybridge/ui/dialog_connection.py 2007-10-04 16:40:59 UTC (rev 506)
+++ trunk/pybridge/pybridge/ui/dialog_connection.py 2008-05-10 09:51:38 UTC (rev 507)
@@ -41,7 +41,7 @@
self.entry_username.set_text(connection.get('Username', ''))
password = connection.get('Password', '').decode('rot13')
self.entry_password.set_text(password)
- self.check_savepassword.set_active(password != '')
+ self.check_savepassword.set_active(bool(password))
else:
self.entry_portnum.set_text(str(TCP_PORT))
Modified: trunk/pybridge/pybridge/ui/window_chat.py
===================================================================
--- trunk/pybridge/pybridge/ui/window_chat.py 2007-10-04 16:40:59 UTC (rev 506)
+++ trunk/pybridge/pybridge/ui/window_chat.py 2008-05-10 09:51:38 UTC (rev 507)
@@ -115,12 +115,13 @@
# People list display.
self.people = PeopleBox()
hpaned.pack2(self.people, resize=False, shrink=True)
- self.pack1(hpaned, resize=True, shrink=False)
+ self.pack1(hpaned, resize=True, shrink=True)
self.textentry = gtk.TextView()
self.textentry.set_editable(True)
self.textentry.set_property('sensitive', False)
- self.conversation.set_wrap_mode(gtk.WRAP_WORD)
+ self.textentry.set_wrap_mode(gtk.WRAP_WORD)
+ #self.textentry.set_size_request(30, 30)
self.textentry.connect('key_press_event', self.on_textentry_key_pressed)
sw = gtk.ScrolledWindow()
sw.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
@@ -129,7 +130,7 @@
frame.set_shadow_type(gtk.SHADOW_IN)
frame.add(sw)
frame.set_border_width(6)
- self.pack2(frame, resize=False, shrink=False)
+ self.pack2(frame, resize=True, shrink=True)
# Populate conversation textview with text tags.
tagtable = self.conversation.get_buffer().get_tag_table()
@@ -251,6 +252,7 @@
self.chatboxes = {} # Maps Chat objects to their ChatBox instances.
self.notebook = gtk.Notebook()
+ self.notebook.set_scrollable(True)
self.notebook.connect('switch-page', self.on_switch_page)
self.window.add(self.notebook)
self.window.set_border_width(4)
Modified: trunk/pybridge/pybridge/ui/window_gametable.py
===================================================================
--- trunk/pybridge/pybridge/ui/window_gametable.py 2007-10-04 16:40:59 UTC (rev 506)
+++ trunk/pybridge/pybridge/ui/window_gametable.py 2008-05-10 09:51:38 UTC (rev 507)
@@ -89,18 +89,18 @@
self.toolbar.insert(gtk.SeparatorToolItem(), -1)
self.fullscreen = gtk.ToggleToolButton(gtk.STOCK_FULLSCREEN)
+ self.fullscreen.set_label(_('Full Screen'))
self.fullscreen.connect('clicked', self.on_fullscreen_clicked)
- #self.fullscreen.set_tooltip()
self.toolbar.insert(self.fullscreen, -1)
- self.toolbar.insert(gtk.SeparatorToolItem(), -1)
-
self.leavetable = gtk.ToolButton(gtk.STOCK_QUIT)
self.leavetable.set_label(_('Leave Table'))
self.leavetable.connect('clicked', self.on_leavetable_clicked)
self.toolbar.insert(self.leavetable, -1)
+ self.toolbar.insert(gtk.SeparatorToolItem(), -1)
+
def tearDown(self):
# Close all child windows.
for window in self.children.values():
@@ -115,6 +115,12 @@
self.table = None # Dereference table.
+ def errback(self, failure):
+ # TODO: display error in window.
+ print "Error: %s" % failure.getErrorMessage()
+ print failure.getBriefTraceback()
+
+
def setTable(self, table):
"""Set display to follow specified table object.
Modified: trunk/pybridge/setup.py
===================================================================
--- trunk/pybridge/setup.py 2007-10-04 16:40:59 UTC (rev 506)
+++ trunk/pybridge/setup.py 2008-05-10 09:51:38 UTC (rev 507)
@@ -21,7 +21,7 @@
url = 'http://sourceforge.net/projects/pybridge/',
description = 'A free online bridge game.',
download_url = 'http://sourceforge.net/project/showfiles.php?group_id=114287',
- packages = ['pybridge', 'pybridge.bridge', 'pybridge.interfaces', 'pybridge.network', 'pybridge.server', 'pybridge.ui'],
+ packages = ['pybridge', 'pybridge.games', 'pybridge.interfaces', 'pybridge.network', 'pybridge.server', 'pybridge.ui'],
scripts = ['bin/pybridge', 'bin/pybridge-server'],
data_files = [('share/applications', ['bin/pybridge.desktop']),
('share/doc/pybridge', ['AUTHORS', 'COPYING', 'INSTALL', 'NEWS', 'README']),
Modified: trunk/pybridge/tests/bridge/test_deal.py
===================================================================
--- trunk/pybridge/tests/bridge/test_deal.py 2007-10-04 16:40:59 UTC (rev 506)
+++ trunk/pybridge/tests/bridge/test_deal.py 2008-05-10 09:51:38 UTC (rev 507)
@@ -73,6 +73,12 @@
self.assertEqual(Deal.fromIndex(index), deal)
+# def test_toString(self):
+# """Testing toString method over a set of known deals"""
+# for deal in self.samples.values():
+# self.assertEqual(Deal.fromString(deal.toString()))
+
+
def main():
suite = unittest.makeSuite(TestDeck)
unittest.TextTestRunner(verbosity=2).run(suite)
Modified: trunk/pybridge/tests/monkey.py
===================================================================
--- trunk/pybridge/tests/monkey.py 2007-10-04 16:40:59 UTC (rev 506)
+++ trunk/pybridge/tests/monkey.py 2008-05-10 09:51:38 UTC (rev 507)
@@ -150,7 +150,7 @@
# Selection of calls and cards.
- calls = [lambda : Bid(random.choice(Level), random.choice(Strain)),
+ calls = [lambda : Bid(Level.One, random.choice(Strain)),
Pass, Double, Redouble]
def chooseCall(self):
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|