def unsaved_changes(self): # dialog to be called to # check for unsaved changes to # the current game # if current game has unsaved changes # or is not saved in database # ask user if he wants save it # # returns # 1) QMessageBox.Discard if the user discarded # 2) QMessageBox.Cancel if the user canceled # 3) QMessageBox.Save if the user chose to save # saves the game before returning in case 3) if (self.model.database.index_current_game == None or self.model.gamestate.unsaved_changes): dlg_changes = DialogSaveChanges() ret = dlg_changes.exec_() if (ret == QMessageBox.Save): # if game is not in db append if (self.model.database.index_current_game == None): self.mainAppWindow.gameMenuController.editGameData() self.model.database.append_game( self.model.gamestate.current) else: self.model.database.update_game( self.model.database.index_current_game, self.model.gamestate.current) self.mainAppWindow.save.setEnabled(False) return ret else: return QMessageBox.Discard
def browse_games(self): mainWindow = self.mainAppWindow self.model.database.reload_if_necessary(mainWindow) selectedGame = 0 mainWindow.gamestateController.on_enter_moves_mode() dlg = DialogBrowsePgn(self.model.database) if dlg.exec_() == QDialog.Accepted: items = dlg.table.selectedItems() if(len(items) > 0): selectedGame = int(items[0].text())-1 loaded_game = self.model.database.load_game(selectedGame) if(not loaded_game == None): # if the user wants to load a game, but the current open # game has still unsaved changes or hasn't been saved at all, # ask user what to do cancel = False if(self.model.database.index_current_game == None or self.model.gamestate.unsaved_changes): changes_dialog = DialogSaveChanges() ret = changes_dialog.exec_() if(ret == QMessageBox.Save): if(self.model.database.index_current_game == None): self.gs_ctr.editGameData() self.model.database.append_game(self.model.gamestate.current) else: self.model.database.update_game(self.model.database.index_current_game,\ self.model.gamestate.current) self.mainAppWindow.save.setEnabled(False) if(ret == QMessageBox.Cancel): cancel = True if(not cancel): self.model.gamestate.current = loaded_game self.mainAppWindow.chessboard_view.update() self.mainAppWindow.chessboard_view.emit(SIGNAL("statechanged()")) self.model.gamestate.unsaved_changes = False self.mainAppWindow.save.setEnabled(False) self.mainAppWindow.setLabels() self.mainAppWindow.moves_edit_view.setFocus() self.model.gamestate.init_game_tree(self.mainAppWindow) self.mainAppWindow.moves_edit_view.setFocus()