[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    playground/games/kmj/src
From:       Wolfgang Rohdewald <wolfgang () rohdewald ! de>
Date:       2009-08-02 21:59:59
Message-ID: 1249250399.973319.16228.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1006049 by wrohdewald:

prepare fore a generic toggleWidget for all togglable widgets:
- ScoringDialog: change toggleScoring to toggleWidget
- put the scoringDialog into QAction.data


 M  +20 -14    playfield.py  


--- trunk/playground/games/kmj/src/playfield.py #1006048:1006049
@@ -874,7 +874,7 @@
 
     def isWinner(self, game):
         """check in the scoringDialog"""
-        winner = game.scoringDialog.winner if game.scoringDialog else None
+        winner = game.scoringDialog.winner or None
         return self == winner
 
     def mjString(self, game):
@@ -1165,7 +1165,7 @@
         names = ['Wolfgang',  'Petra',  'Klaus',  'Heide']
         Query(['insert into player(name) values("%s")' % x for x in names])
 
-    def kmjAction(self,  name, icon, slot=None, shortcut=None):
+    def kmjAction(self,  name, icon, slot=None, shortcut=None, data=None):
         """simplify defining actions"""
         res = KAction(self)
         res.setIcon(KIcon(icon))
@@ -1175,6 +1175,7 @@
         if shortcut:
             res.setShortcut( Qt.CTRL + shortcut)
             res.setShortcutContext(Qt.ApplicationShortcut)
+        res.setData(QVariant(data))
         return res
 
     def tileClicked(self, event, tile):
@@ -1233,10 +1234,10 @@
         self.actionNewGame = self.kmjAction("new", "document-new", self.newGame, \
                Qt.Key_N)
         self.actionQuit = self.kmjAction("quit", "application-exit", self.quit, \
                Qt.Key_Q)
         self.actionPlayers = self.kmjAction("players",  "personal",  \
                self.slotPlayers)
-        self.actionScoring = self.kmjAction("scoring", "draw-freehand", \
shortcut=Qt.Key_S) +        self.actionScoring = self.kmjAction("scoring", \
"draw-freehand", shortcut=Qt.Key_S, data=ScoringDialog)  \
self.actionScoring.setEnabled(False)  self.actionScoring.setCheckable(True)
-        self.connect(self.actionScoring, SIGNAL('toggled(bool)'), \
self.toggleScoring) +        self.connect(self.actionScoring, \
                SIGNAL('toggled(bool)'), self.toggleWidget)
         self.actionAngle = self.kmjAction("angle",  "object-rotate-left",  \
                self.changeAngle, Qt.Key_G)
         self.actionFullscreen = KToggleFullScreenAction(self.actionCollection())
         self.actionFullscreen.setShortcut(Qt.CTRL + Qt.Key_F)
@@ -1505,18 +1506,23 @@
             self.explainView.refresh()
         self.actionScoring.setEnabled(True)
 
-    def toggleScoring(self, checked):
-        """scoring window visibility has changed"""
+    def toggleWidget(self, checked):
+        """user has toggled widget visibility with an action"""
+        action = self.sender()
+        data = action.data().toPyObject()
         if checked:
-            if not self.scoringDialog:
-                self.scoringDialog = ScoringDialog(self)
-                self.connect(self.scoringDialog.btnSave, SIGNAL('clicked(bool)'), \
                self.saveHand)
-                self.connect(self.scoringDialog, SIGNAL('scoringClosed()'), \
                self.scoringClosed)
-            self.scoringDialog.show()
-            self.scoringDialog.raise_()
+            if isinstance(data, type):
+                data = data(self)
+                self.sender().setData(QVariant(data))
+                if isinstance(data, ScoringDialog):
+                    self.scoringDialog = data
+                    self.connect(data.btnSave, SIGNAL('clicked(bool)'), \
self.saveHand) +                    self.connect(data, \
SIGNAL('scoringClosed()'),self.scoringClosed) +            data.show()
+            data.raise_()
         else:
-            if self.scoringDialog:
-                self.scoringDialog.hide()
+            assert data
+            data.hide()
 
     def scoringClosed(self):
         """the scoring window has been closed with ALT-F4 or similar"""


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic