Ejemplo n.º 1
0
def generalStart(gamemodel, player0tup, player1tup, loaddata=None):
    """ The player tuples are:
        (The type af player in a System.const value,
         A callable creating the player,
         A list of arguments for the callable,
         A preliminary name for the player)

        If loaddata is specified, it should be a tuple of:
        (A text uri or fileobj,
         A Savers.something module with a load function capable of loading it,
         An int of the game in file you want to load,
         The position from where to start the game) """
    log.debug("ionest.generalStart: %s\n %s\n %s\n" %
              (gamemodel, player0tup, player1tup))
    worker = GtkWorker(
        lambda w: workfunc(w, gamemodel, player0tup, player1tup, loaddata))

    def onPublished(worker, vallist):
        for val in vallist:
            # The worker will start by publishing (gmwidg, game)
            if type(val) == tuple:
                gmwidg, game = val
                gamewidget.attachGameWidget(gmwidg)
                gamenanny.nurseGame(gmwidg, game)
                handler.emit("gmwidg_created", gmwidg, game)

            # Then the worker will publish functions setting up widget stuff
            elif callable(val):
                val()

    worker.connect("published", onPublished)

    def onDone(worker, (gmwidg, game)):
        gmwidg.connect("close_clicked", closeGame, game)
        worker.__del__()
Ejemplo n.º 2
0
 def __go (self):
     if self.worker:
         self.worker.cancel()
     self.worker = GtkWorker(lambda worker: PyChess._PyChess__go(self, worker))
     self.worker.connect("published", lambda w, msg: self.extendlog(msg))
     self.worker.connect("done", self.__onMoveCalculated)
     self.worker.execute()
Ejemplo n.º 3
0
 def __go (self):
     self.worker = GtkWorker(lambda worker: PyChess._PyChess__go(self, worker))
     def process (worker, messages): print "\n".join(messages)
     self.worker.connect("published", process)
     def ondone (worker, result):
         if not result: return
         self.board.applyMove(parseSAN(self.board,result))
         print "move %s" % result
     self.worker.connect("done", ondone)
     self.worker.execute()
Ejemplo n.º 4
0
 def __analyze (self):
     self.worker = GtkWorker(lambda worker: PyChess._PyChess__analyze(self, worker))
     def process (worker, messages): print "\n".join(messages)
     self.worker.connect("published", process)
     self.worker.execute()