From kde-commits Fri Jul 31 22:52:59 2009 From: Wolfgang Rohdewald Date: Fri, 31 Jul 2009 22:52:59 +0000 To: kde-commits Subject: playground/games/kmj/src Message-Id: <1249080779.983120.4043.nullmailer () svn ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=124908078806930 SVN commit 1005395 by wrohdewald: CTRL-S now toggles visibility of scoring dialog M +36 -26 playfield.py --- trunk/playground/games/kmj/src/playfield.py #1005394:1005395 @@ -677,6 +677,7 @@ """the user pressed ALT-F4""" self.hide() event.ignore() + self.emit(SIGNAL('scoringClosed()')) def __getWinner(self): """getter for winner""" @@ -1164,12 +1165,16 @@ names = ['Wolfgang', 'Petra', 'Klaus', 'Heide'] Query(['insert into player(name) values("%s")' % x for x in names]) - def kmjAction(self, name, icon, slot): + def kmjAction(self, name, icon, slot=None, shortcut=None): """simplify defining actions""" res = KAction(self) res.setIcon(KIcon(icon)) - self.connect(res, SIGNAL('triggered()'), slot) + if slot: + self.connect(res, SIGNAL('triggered()'), slot) self.actionCollection().addAction(name, res) + if shortcut: + res.setShortcut( Qt.CTRL + shortcut) + res.setShortcutContext(Qt.ApplicationShortcut) return res def tileClicked(self, event, tile): @@ -1225,31 +1230,27 @@ self.centralView.setFocusPolicy(Qt.StrongFocus) self.backgroundName = util.PREF.backgroundName self._adjustView() - self.actionNewGame = self.kmjAction("new", "document-new", self.newGame) - self.actionNewGame.setShortcut( Qt.CTRL + Qt.Key_N) - self.actionQuit = self.kmjAction("quit", "application-exit", self.quit) - self.actionQuit.setShortcut( Qt.CTRL + Qt.Key_Q) + 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", self.enterHand) - self.actionScoring.setShortcut( Qt.CTRL + Qt.Key_S) + self.actionScoring = self.kmjAction("scoring", "draw-freehand", shortcut=Qt.Key_S) self.actionScoring.setEnabled(False) - self.actionAngle = self.kmjAction("angle", "object-rotate-left", self.changeAngle) - self.actionAngle.setShortcut( Qt.CTRL + Qt.Key_A) + self.actionScoring.setCheckable(True) + self.connect(self.actionScoring, SIGNAL('toggled(bool)'), self.toggleScoring) + 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) + self.actionFullscreen.setShortcutContext(Qt.ApplicationShortcut) self.actionFullscreen.setWindow(self) - self.actionFullscreen.setShortcut( Qt.CTRL + Qt.SHIFT + Qt.Key_F) self.actionCollection().addAction("fullscreen", self.actionFullscreen) self.connect(self.actionFullscreen, SIGNAL('toggled(bool)'), self.fullScreen) - self.actionGames = self.kmjAction("load", "document-open", self.games) - self.actionGames.setShortcut( Qt.CTRL + Qt.Key_L) + self.actionGames = self.kmjAction("load", "document-open", self.games, Qt.Key_L) self.actionScoreTable = self.kmjAction("scoreTable", "format-list-ordered", - self.showScoreTable) - self.actionScoreTable.setShortcut( Qt.CTRL + Qt.Key_T) + self.showScoreTable, Qt.Key_T) self.actionScoreTable.setEnabled(False) self.actionExplain = self.kmjAction("explain", "applications-education", self.explain) self.actionExplain.setEnabled(True) - QMetaObject.connectSlotsByName(self) def fullScreen(self, toggle): @@ -1499,14 +1500,23 @@ self.explainView.refresh() self.actionScoring.setEnabled(True) - def enterHand(self): - """compute and save the scores. Makes player names immutable.""" - if not self.handDialog: - self.handDialog = EnterHand(self) - self.connect(self.handDialog.btnSave, SIGNAL('clicked(bool)'), self.saveHand) - self.handDialog.show() - self.handDialog.raise_() + def toggleScoring(self, checked): + """scoring window visibility has changed""" + if checked: + if not self.handDialog: + self.handDialog = EnterHand(self) + self.connect(self.handDialog.btnSave, SIGNAL('clicked(bool)'), self.saveHand) + self.connect(self.handDialog, SIGNAL('scoringClosed()'), self.scoringClosed) + self.handDialog.show() + self.handDialog.raise_() + else: + if self.handDialog: + self.handDialog.hide() + def scoringClosed(self): + """the scoring window has been closed with ALT-F4 or similar""" + self.actionScoring.setChecked(False) + def saveHand(self): """save hand to data base, update score table and balance in status line""" self.winner = self.handDialog.winner @@ -1543,7 +1553,8 @@ def initGame(self): """reset things to empty""" - for dlg in [self.scoreTableWindow, self.handDialog]: + self.actionScoring.setChecked(False) + for dlg in [self.scoreTableWindow]: if dlg: dlg.hide() dlg.setParent(None) @@ -1637,8 +1648,7 @@ if result: self.selectorBoard.setEnabled(False) self.actionScoring.setEnabled(False) - if self.handDialog: - self.handDialog.hide() + self.actionScoring.setChecked(False) return result def rotateWinds(self):