From: <umg...@us...> - 2007-07-13 10:29:03
|
Revision: 481 http://svn.sourceforge.net/pybridge/?rev=481&view=rev Author: umgangee Date: 2007-07-13 03:29:04 -0700 (Fri, 13 Jul 2007) Log Message: ----------- Add a trick display widget. Modified Paths: -------------- trunk/pybridge/pybridge/games/bridge/ui/window_bridgetable.py Modified: trunk/pybridge/pybridge/games/bridge/ui/window_bridgetable.py =================================================================== --- trunk/pybridge/pybridge/games/bridge/ui/window_bridgetable.py 2007-07-12 15:44:44 UTC (rev 480) +++ trunk/pybridge/pybridge/games/bridge/ui/window_bridgetable.py 2007-07-13 10:29:04 UTC (rev 481) @@ -69,6 +69,20 @@ +class TrickArea(CardArea): + """A display of the previous trick.""" + + # TODO: consider providing support for user to review all previous tricks. + # However, this may break the Laws of Bridge, and also slow down play. + + border_x, border_y = 6, 6 + + trick_xy = property(lambda s: {s.TOP: (0.5, 0.2), s.BOTTOM: (0.5, 0.8), + s.LEFT: (0.2, 0.5), s.RIGHT: (0.8, 0.5)}) + + + + class ScoreView(gtk.TreeView): """A display of contracts bid, their results and their scores.""" @@ -209,7 +223,6 @@ # Set up CardArea widget. self.cardarea = CardArea(positions=Direction) - #self.cardarea.set_position_mapping(focus=Direction.South) self.cardarea.on_card_clicked = self.on_card_clicked self.cardarea.on_hand_clicked = self.on_hand_clicked @@ -231,14 +244,14 @@ exp.add(frame) self.sidebar.pack_start(exp) -# self.lasttrick = CardArea(positions=Direction) -# self.lasttrick.set_position_mapping(focus=Direction.South) -# frame = gtk.Frame() -# frame.add(self.lasttrick) -# exp = gtk.Expander(_('Last Trick')) -# exp.set_expanded(True) -# exp.add(frame) -# self.sidebar.pack_start(exp) + self.trickarea = TrickArea(positions=Direction) + self.trickarea.set_size_request(-1, 180) + frame = gtk.Frame() + frame.add(self.trickarea) + exp = gtk.Expander(_('Previous Trick')) + exp.set_expanded(True) + exp.add(frame) + self.sidebar.pack_start(exp, expand=False) self.scoreview = ScoreView() sw = gtk.ScrolledWindow() @@ -249,7 +262,7 @@ exp = gtk.Expander(_('Score Sheet')) exp.set_expanded(False) exp.add(frame) - self.sidebar.pack_start(exp) + self.sidebar.pack_start(exp, expand=False) def errback(self, failure): @@ -274,7 +287,10 @@ # If trick play in progress, redraw trick. if self.table.game.play: self.redrawTrick() - # TODO: redraw last trick. + index = max([len(cards) for cards in self.table.game.play.played.values()]) - 2 + if index >= 0: + self.trickarea.set_trick(self.table.game.play.getTrick(index)) + self.setTurnIndicator() for call in self.table.game.bidding.calls: @@ -302,6 +318,7 @@ """Clear bidding history, contract, trick counts.""" self.cardarea.clear() self.biddingview.clear() # Reset bidding history. + self.trickarea.set_trick(None) self.dashboard.set_contract(self.table.game) self.dashboard.set_trickcount(self.table.game) @@ -520,9 +537,9 @@ self.redrawTrick() self.redrawHand(playfrom) -# if len(self.table.game.play.winners) > 0: -# lasttrick = self.table.game.play.getTrick(len(self.table.game.play.winners) - 1) -# self.lasttrick.set_trick(lasttrick) + index = max([len(cards) for cards in self.table.game.play.played.values()]) - 2 + if index >= 0: + self.trickarea.set_trick(self.table.game.play.getTrick(index)) if not self.table.game.inProgress(): self.gameComplete() @@ -559,7 +576,7 @@ def success(r): self.cardarea.set_position_mapping(self.position) - #self.lasttrick.set_position_mapping(self.position) + self.trickarea.set_position_mapping(self.position) if self.table.game.inProgress(): d = self.player.callRemote('getHand') d.addCallbacks(self.table.game.revealHand, self.errback, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <umg...@us...> - 2007-10-04 16:40:59
|
Revision: 506 http://pybridge.svn.sourceforge.net/pybridge/?rev=506&view=rev Author: umgangee Date: 2007-10-04 09:40:59 -0700 (Thu, 04 Oct 2007) Log Message: ----------- Pop-up score sheet in own window, remove expanding frame for bidding view. Modified Paths: -------------- trunk/pybridge/pybridge/games/bridge/ui/window_bridgetable.py Modified: trunk/pybridge/pybridge/games/bridge/ui/window_bridgetable.py =================================================================== --- trunk/pybridge/pybridge/games/bridge/ui/window_bridgetable.py 2007-10-04 16:37:16 UTC (rev 505) +++ trunk/pybridge/pybridge/games/bridge/ui/window_bridgetable.py 2007-10-04 16:40:59 UTC (rev 506) @@ -29,7 +29,7 @@ from pybridge.ui.window_gametable import WindowGameTable from window_bidbox import WindowBidbox -from window_scoresheet import ScoreSheet +from window_scoresheet import WindowScoreSheet class BiddingView(gtk.TreeView): @@ -187,6 +187,12 @@ self.takeseat_menuitems[position] = item self.takeseat.set_menu(menu) + # Set up bridge-specific toolbar buttons. + self.showscores = gtk.ToggleToolButton(gtk.STOCK_EDIT) + self.showscores.set_label(_('Show Scoresheet')) + self.showscores.connect('clicked', self.on_showscores_clicked) + self.toolbar.insert(self.showscores, -1) + # Set up CardArea widget. self.cardarea = CardArea(positions=Direction) @@ -205,10 +211,7 @@ sw.add(self.biddingview) frame = gtk.Frame() frame.add(sw) - exp = gtk.Expander(_('Bidding')) - exp.set_expanded(True) - exp.add(frame) - self.sidebar.pack_start(exp, expand=True) + self.sidebar.pack_start(frame, expand=True) self.trickarea = TrickArea(positions=Direction) self.trickarea.set_size_request(-1, 180) @@ -219,16 +222,16 @@ exp.add(frame) self.sidebar.pack_start(exp, expand=False) - self.scoresheet = ScoreSheet() - sw = gtk.ScrolledWindow() - sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) - sw.add(self.scoresheet) - frame = gtk.Frame() - frame.add(sw) - exp = gtk.Expander(_('Score Sheet')) - exp.set_expanded(False) - exp.add(frame) - self.sidebar.pack_start(exp, expand=False) +# self.scoresheet = ScoreSheet() +# sw = gtk.ScrolledWindow() +# sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) +# sw.add(self.scoresheet) +# frame = gtk.Frame() +# frame.add(sw) +# exp = gtk.Expander(_('Score Sheet')) +# exp.set_expanded(False) +# exp.add(frame) +# self.sidebar.pack_start(exp, expand=False) def setTable(self, table): @@ -263,7 +266,6 @@ bidbox.setCallSelectHandler(self.on_call_selected) bidbox.setTable(self.table, self.position) - # Initialise seat menu and player labels. for position in Direction: player = self.table.players.get(position) # Player name or None. @@ -298,7 +300,7 @@ # Determine and display score in dialog box and score sheet. if self.table.game.contract: - self.scoresheet.add_result(self.table.game.result) + #self.scoresheet.add_result(self.table.game.result) tricksMade = self.table.game.result.tricksMade tricksRequired = self.table.game.contract.bid.level.index + 7 @@ -565,3 +567,15 @@ d = super(WindowBridgeTable, self).on_leaveseat_clicked(widget, *args) d.addCallback(success) + + def on_showscores_clicked(self, widget, *args): + if self.showscores.get_active(): + w = self.children.open(WindowScoreSheet) + # This re-invokes on_showscores_clicked if user closes w. + delete_event = lambda w, e: self.showscores.set_active(False) + w.window.connect('delete_event', delete_event) + w.setTable(self.table) + + else: + self.children.close(self.children[WindowScoreSheet]) + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |