def run(cls, fenstr, variant): cls._ensureReady() if cls.widgets["newgamedialog"].props.visible: cls.widgets["newgamedialog"].present() return cls._hideOthers() for button in ("copy_button", "clear_button", "paste_button", "initial_button"): cls.widgets[button].show() cls.widgets["newgamedialog"].set_title(_("Setup Position")) cls.widgets["setupPositionSidePanel"].show() cls.setupmodel = SetupModel() cls.board_control = BoardControl(cls.setupmodel, {}, setup_position=True) cls.setupmodel.curplayer = SetupPlayer(cls.board_control) cls.setupmodel.connect("game_changed", cls.game_changed) child = cls.widgets["setupBoardDock"].get_child() if child is not None: cls.widgets["setupBoardDock"].remove(child) cls.widgets["setupBoardDock"].add(cls.board_control) cls.board_control.show_all() if fenstr is not None: lboard = LBoard(variant) lboard.applyFen(fenstr) cls.setupmodel.boards = [cls.setupmodel.variant(setup=fenstr, lboard=lboard)] cls.setupmodel.variations = [cls.setupmodel.boards] cls.ini_widgets(fenstr, lboard) else: fenstr = cls.get_fen() cls.ini_widgets(True) cls.widgets["fen_entry"].set_text(fenstr) cls.setupmodel.start() cls.board_control.emit("action", "SETUP", None, fenstr) def _validate(gamemodel): try: fenstr = cls.get_fen() cls.setupmodel.variant(setup=fenstr) return True except (AssertionError, LoadingError, SyntaxError) as e: d = Gtk.MessageDialog(mainwindow(), type=Gtk.MessageType.WARNING, buttons=Gtk.ButtonsType.OK, message_format=e.args[0]) if len(e.args) > 1: d.format_secondary_text(e.args[1]) d.connect("response", lambda d, a: d.hide()) d.show() return False def _callback(gamemodel, p0, p1): text = cls.get_fen() perspective = perspective_manager.get_perspective("games") create_task(perspective.generalStart( gamemodel, p0, p1, (StringIO(text), fen, 0, -1))) cls._generalRun(_callback, _validate)
def run(cls): cls._ensureReady() if cls.widgets["newgamedialog"].props.visible: cls.widgets["newgamedialog"].present() print("de return") return cls._hideOthers() for button in ("copy_button", "clear_button", "paste_button"): cls.widgets[button].show() cls.widgets["newgamedialog"].set_title(_("Setup Position")) cls.widgets["setupPositionSidePanel"].show() cls.setupmodel = SetupModel() cls.board_control = BoardControl(cls.setupmodel, {}, setup_position=True) cls.setupmodel.curplayer = SetupPlayer(cls.board_control) cls.setupmodel.connect("game_changed", cls.game_changed) child = cls.widgets["setupBoardDock"].get_child() if child is not None: cls.widgets["setupBoardDock"].remove(child) cls.widgets["setupBoardDock"].add(cls.board_control) cls.board_control.show_all() cls.ini_widgets(True) cls.widgets["fen_entry"].set_text(cls.get_fen()) cls.setupmodel.start() def _validate(gamemodel): try: text = cls.get_fen() lboard = cls.setupmodel.variant(setup=text).board return True except (AssertionError, LoadingError, SyntaxError) as e: d = Gtk.MessageDialog(type=Gtk.MessageType.WARNING, buttons=Gtk.ButtonsType.OK, message_format=e.args[0]) if len(e.args) > 1: d.format_secondary_text(e.args[1]) d.connect("response", lambda d, a: d.hide()) d.show() return False def _callback(gamemodel, p0, p1): text = cls.get_fen() ionest.generalStart(gamemodel, p0, p1, (StringIO(text), fen, 0, -1)) cls._generalRun(_callback, _validate)
def ini_widgets_from_query(self, query): """ Set filter dialog widget values based on query dict key-value pairs """ for rule in ("white", "black", "event", "site", "eco_from", "eco_to", "annotator"): if rule in query: self.widgets[rule].set_text(query[rule]) else: self.widgets[rule].set_text("") for rule in ("elo_from", "elo_to", "year_from", "year_to"): if rule in query: self.widgets[rule].set_value(query[rule]) else: self.widgets[rule].set_value(0) if "ignore_tag_colors" in query: self.widgets["ignore_tag_colors"].set_active(True) else: self.widgets["ignore_tag_colors"].set_active(False) if "result" in query: if query["result"] == "1-0": self.widgets["result_1_0"].set_active(True) elif query["result"] == "0-1": self.widgets["result_0_1"].set_active(True) elif query["result"] == "1/2-1/2": self.widgets["result_1_2"].set_active(True) elif query["result"] == "*": self.widgets["result_0_0"].set_active(True) else: self.widgets["result_1_0"].set_active(False) self.widgets["result_0_1"].set_active(False) self.widgets["result_1_2"].set_active(False) self.widgets["result_0_0"].set_active(False) q = None white0 = "" black0 = "" if "material" in query: q = query["material"] if "imbalance" in query: q = query["imbalance"] self.widgets["imbalance"].set_active(True) else: self.widgets["imbalance"].set_active(False) self.widgets["ignore_material_colors"].set_active(False) if type(q) is list and len(q) == 2: if "material" in query: _, white0, black0 = q[0].split("K") _, white1, black1 = q[1].split("K") else: white0, black0 = q[0].split("v") white1, black1 = q[1].split("v") if white0 == black1 and black0 == white1: self.widgets["ignore_material_colors"].set_active(True) elif q is not None: if "material" in query: _, white0, black0 = q.split("K") else: white0, black0 = q.split("v") for piece in "QRBNP": w = white0.count(piece) self.widgets["w%s" % piece.lower()].set_value(w if w > 0 else 0) b = black0.count(piece) self.widgets["b%s" % piece.lower()].set_value(b if b > 0 else 0) if "white-move" in query: self.widgets["white_move"].set_text(", ".join(query["white-move"])) else: self.widgets["white_move"].set_text("") if "black-move" in query: self.widgets["black_move"].set_text(", ".join(query["black-move"])) else: self.widgets["black_move"].set_text("") moved = "moved" in query for piece in "pnbrqk": active = moved and piece.upper() in query["moved"] self.widgets["moved_%s" % piece].set_active(active) captured = "captured" in query for piece in "pnbrq": active = captured and piece.upper() in query["captured"] self.widgets["captured_%s" % piece].set_active(active) if captured and query["captured"] == "": self.widgets["captured_0"].set_active(True) else: self.widgets["captured_0"].set_active(False) if "stm" in query: self.widgets["stm"].set_active(True) if query["stm"] == "white": self.widgets["stm_white"].set_active(True) else: self.widgets["stm_black"].set_active(True) else: self.widgets["stm"].set_active(False) if "sub-fen" in query: sub_fen = query["sub-fen"] fen_str = "%s/prnsqkPRNSQK w" % sub_fen else: sub_fen = "" fen_str = "8/8/8/8/8/8/8/8/prnsqkPRNSQK w" self.widgets["sub_fen"].set_text(sub_fen) # Add a BoardControl widget to dock and initialize it with a new SetupModel self.setupmodel = SetupModel() self.board_control = BoardControl(self.setupmodel, {}, setup_position=True, setup_sub_fen=True) self.setupmodel.curplayer = SetupPlayer(self.board_control) self.setupmodel.connect("game_changed", self.game_changed) child = self.widgets["setup_pattern_dock"].get_child() if child is not None: self.widgets["setup_pattern_dock"].remove(child) self.widgets["setup_pattern_dock"].add(self.board_control) self.board_control.show_all() self.setupmodel.boards = [self.setupmodel.variant(setup=fen_str)] self.setupmodel.variations = [self.setupmodel.boards] self.setupmodel.start() textbuffer = self.widgets["scout_textbuffer"] textbuffer.set_text("")