def closeGame(gmwidg, game): if not game.isChanged(): response = gtk.RESPONSE_OK else: d = gtk.MessageDialog(type=gtk.MESSAGE_WARNING) d.add_button(_("Close _without Saving"), gtk.RESPONSE_OK) d.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL) if game.uri: d.add_button(gtk.STOCK_SAVE, gtk.RESPONSE_YES) else: d.add_button(gtk.STOCK_SAVE_AS, gtk.RESPONSE_YES) gmwidg.bringToFront() d.set_markup( _("<b><big>Save the current game before you close it?</big></b>")) d.format_secondary_text( _("It is not possible later to continue the game,\nif you don't save it." )) response = d.run() d.destroy() if response == gtk.RESPONSE_YES: # Test if cancel was pressed in the save-file-dialog if saveGame(game) != gtk.RESPONSE_ACCEPT: response = gtk.RESPONSE_CANCEL if response not in (gtk.RESPONSE_DELETE_EVENT, gtk.RESPONSE_CANCEL): if game.status in UNFINISHED_STATES: game.end(ABORTED, ABORTED_AGREEMENT) game.terminate() gamewidget.delGameWidget(gmwidg) return response
def closeGame (gmwidg, game): if not game.isChanged(): response = gtk.RESPONSE_OK else: d = gtk.MessageDialog (type = gtk.MESSAGE_WARNING) d.add_button(_("Close _without Saving"), gtk.RESPONSE_OK) d.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL) if game.uri: d.add_button(gtk.STOCK_SAVE, gtk.RESPONSE_YES) else: d.add_button(gtk.STOCK_SAVE_AS, gtk.RESPONSE_YES) gmwidg.bringToFront() d.set_markup(_("<b><big>Save the current game before you close it?</big></b>")) d.format_secondary_text (_( "It is not possible later to continue the game,\nif you don't save it.")) response = d.run() d.destroy() if response == gtk.RESPONSE_YES: # Test if cancel was pressed in the save-file-dialog if saveGame(game) != gtk.RESPONSE_ACCEPT: response = gtk.RESPONSE_CANCEL if response not in (gtk.RESPONSE_DELETE_EVENT, gtk.RESPONSE_CANCEL): if game.status in UNFINISHED_STATES: game.end(ABORTED, ABORTED_AGREEMENT) game.terminate() gamewidget.delGameWidget (gmwidg) return response
def closeGame(gmwidg, game): log.debug("ionest.closeGame") response = None if not game.isChanged(): response = Gtk.ResponseType.OK else: markup = "<b><big>" + \ _("Save the current game before you close it?") + \ "</big></b>" if conf.get("autoSave", False): x = saveGamePGN(game) if x: response = Gtk.ResponseType.OK else: markup = "<b><big>" + \ _("Unable to save to configured file. Save the current game before you close it?") + \ "</big></b>" if response is None: d = Gtk.MessageDialog(type=Gtk.MessageType.WARNING) d.add_button(_("Close _without Saving"), Gtk.ResponseType.OK) d.add_button(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL) if game.uri: d.add_button(Gtk.STOCK_SAVE, Gtk.ResponseType.YES) else: d.add_button(Gtk.STOCK_SAVE_AS, Gtk.ResponseType.YES) gmwidg.bringToFront() d.set_markup(markup) d.format_secondary_text( _("It is not possible later to continue the game,\nif you don't save it." )) response = d.run() d.destroy() if response == Gtk.ResponseType.YES: # Test if cancel was pressed in the save-file-dialog if saveGame(game) != Gtk.ResponseType.ACCEPT: response = Gtk.ResponseType.CANCEL if response not in (Gtk.ResponseType.DELETE_EVENT, Gtk.ResponseType.CANCEL): if game.status in UNFINISHED_STATES: game.end(ABORTED, ABORTED_AGREEMENT) game.terminate() gamewidget.delGameWidget(gmwidg) return response
def closeGame (gmwidg, game): log.debug("ionest.closeGame") response = None if not game.isChanged(): response = Gtk.ResponseType.OK else: markup = "<b><big>" + \ _("Save the current game before you close it?") + \ "</big></b>" if conf.get("autoSave", False): x = saveGamePGN(game) if x: response = Gtk.ResponseType.OK else: markup = "<b><big>" + \ _("Unable to save to configured file. Save the current game before you close it?") + \ "</big></b>" if response is None: d = Gtk.MessageDialog (type = Gtk.MessageType.WARNING) d.add_button(_("Close _without Saving"), Gtk.ResponseType.OK) d.add_button(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL) if game.uri: d.add_button(Gtk.STOCK_SAVE, Gtk.ResponseType.YES) else: d.add_button(Gtk.STOCK_SAVE_AS, Gtk.ResponseType.YES) gmwidg.bringToFront() d.set_markup(markup) d.format_secondary_text (_( "It is not possible later to continue the game,\nif you don't save it.")) response = d.run() d.destroy() if response == Gtk.ResponseType.YES: # Test if cancel was pressed in the save-file-dialog if saveGame(game) != Gtk.ResponseType.ACCEPT: response = Gtk.ResponseType.CANCEL if response not in (Gtk.ResponseType.DELETE_EVENT, Gtk.ResponseType.CANCEL): if game.status in UNFINISHED_STATES: game.end(ABORTED, ABORTED_AGREEMENT) game.terminate() gamewidget.delGameWidget (gmwidg) return response
def closeGame(gmwidg, game): if not game.isChanged(): response = Gtk.ResponseType.OK else: #if conf.get("autoSave", False): # Autosave option from preferences? #game.save(None, Savers.database, append=False) #response = Gtk.ResponseType.OK #else d = Gtk.MessageDialog(type=Gtk.MessageType.WARNING) d.add_button(_("Close _without Saving"), Gtk.ResponseType.OK) d.add_button(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL) if game.uri: d.add_button(Gtk.STOCK_SAVE, Gtk.ResponseType.YES) else: d.add_button(Gtk.STOCK_SAVE_AS, Gtk.ResponseType.YES) gmwidg.bringToFront() d.set_markup( _("<b><big>Save the current game before you close it?</big></b>")) d.format_secondary_text( _("It is not possible later to continue the game,\nif you don't save it." )) response = d.run() d.destroy() if response == Gtk.ResponseType.YES: # Test if cancel was pressed in the save-file-dialog if saveGame(game) != Gtk.ResponseType.ACCEPT: response = Gtk.ResponseType.CANCEL if response not in (Gtk.ResponseType.DELETE_EVENT, Gtk.ResponseType.CANCEL): if game.status in UNFINISHED_STATES: game.end(ABORTED, ABORTED_AGREEMENT) game.terminate() gamewidget.delGameWidget(gmwidg) return response
def closeGame (gmwidg, game): if not game.isChanged(): response = Gtk.ResponseType.OK else: #if conf.get("autoSave", False): # Autosave option from preferences? #game.save(None, Savers.database, append=False) #response = Gtk.ResponseType.OK #else d = Gtk.MessageDialog (type = Gtk.MessageType.WARNING) d.add_button(_("Close _without Saving"), Gtk.ResponseType.OK) d.add_button(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL) if game.uri: d.add_button(Gtk.STOCK_SAVE, Gtk.ResponseType.YES) else: d.add_button(Gtk.STOCK_SAVE_AS, Gtk.ResponseType.YES) gmwidg.bringToFront() d.set_markup(_("<b><big>Save the current game before you close it?</big></b>")) d.format_secondary_text (_( "It is not possible later to continue the game,\nif you don't save it.")) response = d.run() d.destroy() if response == Gtk.ResponseType.YES: # Test if cancel was pressed in the save-file-dialog if saveGame(game) != Gtk.ResponseType.ACCEPT: response = Gtk.ResponseType.CANCEL if response not in (Gtk.ResponseType.DELETE_EVENT, Gtk.ResponseType.CANCEL): if game.status in UNFINISHED_STATES: game.end(ABORTED, ABORTED_AGREEMENT) game.terminate() gamewidget.delGameWidget (gmwidg) return response
def closeAllGames(pairs): changedPairs = [(gmwidg, game) for gmwidg, game in pairs if game.isChanged()] if len(changedPairs) == 0: response = gtk.RESPONSE_OK elif len(changedPairs) == 1: response = closeGame(*changedPairs[0]) else: widgets = GladeWidgets("saveGamesDialog.glade") dialog = widgets["saveGamesDialog"] heading = widgets["saveGamesDialogHeading"] saveLabel = widgets["saveGamesDialogSaveLabel"] treeview = widgets["saveGamesDialogTreeview"] heading.set_markup("<big><b>" + ngettext("There is %d game with unsaved moves.", "There are %d games with unsaved moves.", len(changedPairs)) % len(changedPairs) + " " + _("Save moves before closing?") + "</b></big>") liststore = gtk.ListStore(bool, str) treeview.set_model(liststore) renderer = gtk.CellRendererToggle() renderer.props.activatable = True treeview.append_column(gtk.TreeViewColumn("", renderer, active=0)) treeview.append_column( gtk.TreeViewColumn("", gtk.CellRendererText(), text=1)) for gmwidg, game in changedPairs: liststore.append( (True, "%s %s %s" % (game.players[0], _("vs."), game.players[1]))) def callback(cell, path): if path: liststore[path][0] = not liststore[path][0] saves = len(tuple(row for row in liststore if row[0])) saveLabel.set_text( ngettext("_Save %d document", "_Save %d documents", saves) % saves) saveLabel.set_use_underline(True) renderer.connect("toggled", callback) callback(None, None) while True: response = dialog.run() if response == gtk.RESPONSE_YES: for i in xrange(len(liststore) - 1, -1, -1): checked, name = liststore[i] if checked: gmwidg, game = changedPairs[i] if saveGame(game) == gtk.RESPONSE_ACCEPT: del pairs[i] liststore.remove(liststore.get_iter((i, ))) game.end(ABORTED, ABORTED_AGREEMENT) gamewidget.delGameWidget(gmwidg) else: break else: break else: break dialog.destroy() if response not in (gtk.RESPONSE_DELETE_EVENT, gtk.RESPONSE_CANCEL): for gmwidg, game in pairs: game.end(ABORTED, ABORTED_AGREEMENT) game.terminate() return response
def closeAllGames (pairs): changedPairs = [(gmwidg, game) for gmwidg, game in pairs if game.isChanged()] if len(changedPairs) == 0: response = Gtk.ResponseType.OK #if conf.get("autoSave", False): # Autosave option from preferences? #for gmwidg, game in changedPairs: #game.save(None, Savers.database, append=False) #response = Gtk.ResponseType.OK #else: elif len(changedPairs) == 1: response = closeGame(*changedPairs[0]) else: widgets = GladeWidgets("saveGamesDialog.glade") dialog = widgets["saveGamesDialog"] heading = widgets["saveGamesDialogHeading"] saveLabel = widgets["saveGamesDialogSaveLabel"] treeview = widgets["saveGamesDialogTreeview"] heading.set_markup("<big><b>" + ngettext("There is %d game with unsaved moves.", "There are %d games with unsaved moves.", len(changedPairs)) % len(changedPairs) + " " + _("Save moves before closing?") + "</b></big>") liststore = Gtk.ListStore(bool, str) treeview.set_model(liststore) renderer = Gtk.CellRendererToggle() renderer.props.activatable = True treeview.append_column(Gtk.TreeViewColumn("", renderer, active=0)) treeview.append_column(Gtk.TreeViewColumn("", Gtk.CellRendererText(), text=1)) for gmwidg, game in changedPairs: liststore.append((True, "%s %s %s" % (game.players[0], _("vs."), game.players[1]))) def callback (cell, path): if path: liststore[path][0] = not liststore[path][0] saves = len(tuple(row for row in liststore if row[0])) saveLabel.set_text(ngettext("_Save %d document", "_Save %d documents", saves) % saves) saveLabel.set_use_underline(True) renderer.connect("toggled", callback) callback(None, None) while True: response = dialog.run() if response == Gtk.ResponseType.YES: for i in range(len(liststore)-1, -1, -1): checked, name = liststore[i] if checked: gmwidg, game = changedPairs[i] if saveGame(game) == Gtk.ResponseType.ACCEPT: del pairs[i] liststore.remove(liststore.get_iter((i,))) game.end(ABORTED, ABORTED_AGREEMENT) gamewidget.delGameWidget(gmwidg) else: break else: break else: break dialog.destroy() if response not in (Gtk.ResponseType.DELETE_EVENT, Gtk.ResponseType.CANCEL): for gmwidg, game in pairs: game.end(ABORTED, ABORTED_AGREEMENT) game.terminate() return response
def closeGame(self, gmwidg): log.debug("ionest.closeGame") response = None if not gmwidg.gamemodel.isChanged(): response = Gtk.ResponseType.OK else: markup = "<b><big>" + _( "Save the current game before you close it?") + "</big></b>" if conf.get("autoSave", False): x = self.saveGamePGN(gmwidg.gamemodel) if x: response = Gtk.ResponseType.OK else: markup = "<b><big>" + _( "Unable to save to configured file. \ Save the current game before you close it?" ) + "</big></b>" if response is None: d = Gtk.MessageDialog(type=Gtk.MessageType.WARNING) d.add_button(_("Close _without Saving"), Gtk.ResponseType.OK) d.add_button(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL) if gmwidg.gamemodel.uri: d.add_button(Gtk.STOCK_SAVE, Gtk.ResponseType.YES) else: d.add_button(Gtk.STOCK_SAVE_AS, Gtk.ResponseType.YES) gmwidg.bringToFront() d.set_markup(markup) d.format_secondary_text( _("It is not possible later to continue the game,\nif you don't save it." )) response = d.run() d.destroy() if response == Gtk.ResponseType.YES: # Test if cancel was pressed in the save-file-dialog if self.saveGame(gmwidg.gamemodel) != Gtk.ResponseType.ACCEPT: response = Gtk.ResponseType.CANCEL if response not in (Gtk.ResponseType.DELETE_EVENT, Gtk.ResponseType.CANCEL): if gmwidg.gamemodel.status in UNFINISHED_STATES: gmwidg.gamemodel.end(ABORTED, ABORTED_AGREEMENT) gmwidg.disconnect(self.gmwidg_cids[gmwidg]) del self.gmwidg_cids[gmwidg] for cid in self.notify_cids[gmwidg]: conf.notify_remove(cid) del self.notify_cids[gmwidg] if gmwidg.board in self.board_cids: gmwidg.board.disconnect(self.board_cids[gmwidg.board]) del self.board_cids[gmwidg.board] gamewidget.delGameWidget(gmwidg) self.gamewidgets.remove(gmwidg) gmwidg.gamemodel.terminate() if len(self.gamewidgets) == 0: for widget in MENU_ITEMS: gamewidget.getWidgets()[widget].set_property( 'sensitive', False) return response
def closeAllGames(self, gamewidgets): log.debug("ionest.closeAllGames") response = None changedPairs = [(gmwidg, gmwidg.gamemodel) for gmwidg in gamewidgets if gmwidg.gamemodel.isChanged()] if len(changedPairs) == 0: response = Gtk.ResponseType.OK elif len(changedPairs) == 1: response = self.closeGame(changedPairs[0][0]) else: markup = "<big><b>" + ngettext("There is %d game with unsaved moves.", "There are %d games with unsaved moves.", len(changedPairs)) % len(changedPairs) + " " + \ _("Save moves before closing?") + "</b></big>" for gmwidg, game in changedPairs: if not gmwidg.gamemodel.isChanged(): response = Gtk.ResponseType.OK else: if conf.get("autoSave", False): x = self.saveGamePGN(game) if x: response = Gtk.ResponseType.OK else: response = None markup = "<b><big>" + _( "Unable to save to configured file. \ Save the games before closing?" ) + "</big></b>" break if response is None: widgets = GladeWidgets("saveGamesDialog.glade") dialog = widgets["saveGamesDialog"] heading = widgets["saveGamesDialogHeading"] saveLabel = widgets["saveGamesDialogSaveLabel"] treeview = widgets["saveGamesDialogTreeview"] heading.set_markup(markup) liststore = Gtk.ListStore(bool, str) treeview.set_model(liststore) renderer = Gtk.CellRendererToggle() renderer.props.activatable = True treeview.append_column( Gtk.TreeViewColumn("", renderer, active=0)) treeview.append_column( Gtk.TreeViewColumn("", Gtk.CellRendererText(), text=1)) for gmwidg, game in changedPairs: liststore.append( (True, "%s %s %s" % (game.players[0], _("vs."), game.players[1]))) def callback(cell, path): if path: liststore[path][0] = not liststore[path][0] saves = len(tuple(row for row in liststore if row[0])) saveLabel.set_text( ngettext("_Save %d document", "_Save %d documents", saves) % saves) saveLabel.set_use_underline(True) renderer.connect("toggled", callback) callback(None, None) while True: response = dialog.run() if response == Gtk.ResponseType.YES: for i in range(len(liststore) - 1, -1, -1): checked, name = liststore[i] if checked: cgmwidg, cgame = changedPairs[i] if self.saveGame( cgame) == Gtk.ResponseType.ACCEPT: liststore.remove(liststore.get_iter((i, ))) del changedPairs[i] if cgame.status in UNFINISHED_STATES: cgame.end(ABORTED, ABORTED_AGREEMENT) cgame.terminate() gamewidget.delGameWidget(cgmwidg) else: break else: break else: break dialog.destroy() if response not in (Gtk.ResponseType.DELETE_EVENT, Gtk.ResponseType.CANCEL): pairs = [(gmwidg, gmwidg.gamemodel) for gmwidg in gamewidgets] for gmwidg, game in pairs: if game.status in UNFINISHED_STATES: game.end(ABORTED, ABORTED_AGREEMENT) game.terminate() if gmwidg.notebookKey in gamewidget.key2gmwidg: gamewidget.delGameWidget(gmwidg) return response
def closeAllGames (pairs): log.debug("ionest.closeAllGames") response = None changedPairs = [(gmwidg, game) for gmwidg, game in pairs if game.isChanged()] if len(changedPairs) == 0: response = Gtk.ResponseType.OK elif len(changedPairs) == 1: response = closeGame(*changedPairs[0]) else: markup = "<big><b>" + \ ngettext("There is %d game with unsaved moves.", "There are %d games with unsaved moves.", len(changedPairs)) % len(changedPairs) + \ " " + _("Save moves before closing?") + \ "</b></big>" if conf.get("autoSave", False): for gmwidg, game in changedPairs: x = saveGamePGN(game) if x: response = Gtk.ResponseType.OK else: response = None markup = "<b><big>" + \ _("Unable to save to configured file. Save the games before closing?") + \ "</big></b>" break res if response is None: widgets = GladeWidgets("saveGamesDialog.glade") dialog = widgets["saveGamesDialog"] heading = widgets["saveGamesDialogHeading"] saveLabel = widgets["saveGamesDialogSaveLabel"] treeview = widgets["saveGamesDialogTreeview"] heading.set_markup(markup) liststore = Gtk.ListStore(bool, str) treeview.set_model(liststore) renderer = Gtk.CellRendererToggle() renderer.props.activatable = True treeview.append_column(Gtk.TreeViewColumn("", renderer, active=0)) treeview.append_column(Gtk.TreeViewColumn("", Gtk.CellRendererText(), text=1)) for gmwidg, game in changedPairs: liststore.append((True, "%s %s %s" % (game.players[0], _("vs."), game.players[1]))) def callback (cell, path): if path: liststore[path][0] = not liststore[path][0] saves = len(tuple(row for row in liststore if row[0])) saveLabel.set_text(ngettext("_Save %d document", "_Save %d documents", saves) % saves) saveLabel.set_use_underline(True) renderer.connect("toggled", callback) callback(None, None) while True: response = dialog.run() if response == Gtk.ResponseType.YES: for i in range(len(liststore)-1, -1, -1): checked, name = liststore[i] if checked: gmwidg, game = changedPairs[i] if saveGame(game) == Gtk.ResponseType.ACCEPT: liststore.remove(liststore.get_iter((i,))) del changedPairs[i] if game.status in UNFINISHED_STATES: game.end(ABORTED, ABORTED_AGREEMENT) game.terminate() gamewidget.delGameWidget(gmwidg) else: break else: break else: break dialog.destroy() if response not in (Gtk.ResponseType.DELETE_EVENT, Gtk.ResponseType.CANCEL): pairs = [(gmwidg, game) for gmwidg, game in pairs] for gmwidg, game in pairs: if game.status in UNFINISHED_STATES: game.end(ABORTED, ABORTED_AGREEMENT) game.terminate() if gmwidg.notebookKey in gamewidget.key2gmwidg: gamewidget.delGameWidget(gmwidg) return response
def closeGame(self, gmwidg): log.debug("ionest.closeGame") response = None if not gmwidg.gamemodel.isChanged(): response = Gtk.ResponseType.OK else: markup = "<b><big>" + _("Save the current game before you close it?") + "</big></b>" if conf.get("autoSave", False): x = self.saveGamePGN(gmwidg.gamemodel) if x: response = Gtk.ResponseType.OK else: markup = "<b><big>" + _("Unable to save to configured file. \ Save the current game before you close it?") + "</big></b>" if response is None: d = Gtk.MessageDialog(type=Gtk.MessageType.WARNING) d.add_button(_("Close _without Saving"), Gtk.ResponseType.OK) d.add_button(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL) if gmwidg.gamemodel.uri: d.add_button(Gtk.STOCK_SAVE, Gtk.ResponseType.YES) else: d.add_button(Gtk.STOCK_SAVE_AS, Gtk.ResponseType.YES) gmwidg.bringToFront() d.set_markup(markup) d.format_secondary_text(_( "It is not possible later to continue the game,\nif you don't save it.")) response = d.run() d.destroy() if response == Gtk.ResponseType.YES: # Test if cancel was pressed in the save-file-dialog if self.saveGame(gmwidg.gamemodel) != Gtk.ResponseType.ACCEPT: response = Gtk.ResponseType.CANCEL if response not in (Gtk.ResponseType.DELETE_EVENT, Gtk.ResponseType.CANCEL): if gmwidg.gamemodel.status in UNFINISHED_STATES: gmwidg.gamemodel.end(ABORTED, ABORTED_AGREEMENT) gmwidg.disconnect(self.gmwidg_cids[gmwidg]) del self.gmwidg_cids[gmwidg] for cid in self.notify_cids[gmwidg]: conf.notify_remove(cid) del self.notify_cids[gmwidg] if gmwidg.board in self.board_cids: gmwidg.board.disconnect(self.board_cids[gmwidg.board]) del self.board_cids[gmwidg.board] gamewidget.delGameWidget(gmwidg) self.gamewidgets.remove(gmwidg) gmwidg.gamemodel.terminate() if len(self.gamewidgets) == 0: for widget in MENU_ITEMS: gamewidget.getWidgets()[widget].set_property('sensitive', False) return response