Exemplo n.º 1
0
def createPlayerUIGlobals(discoverer):
    global playerItems
    global analyzerItems
    global allEngineItems

    playerItems = []
    analyzerItems = []
    allEngineItems = []

    for variantClass in variants.values():
        playerItems += [[(ipeople, _("Human Being"))]]
    for engine in discoverer.getEngines():
        name = engine["name"]
        c = discoverer.getCountry(engine)
        path = addDataPrefix("flags/%s.png" % c)

        if c and os.path.isfile(path):
            flag_icon = get_pixbuf(path)
        else:
            path = addDataPrefix("flags/unknown.png")
            flag_icon = get_pixbuf(path)

        allEngineItems.append((flag_icon, name))

        for variant in discoverer.getEngineVariants(engine):
            playerItems[variant] += [(flag_icon, name)]

        if discoverer.is_analyzer(engine):
            analyzerItems.append((flag_icon, name))
Exemplo n.º 2
0
    def getEngineVariants(self, engine):
        UCI_without_standard_variant = False
        engine_variants = []
        for variantClass in variants.values():
            if variantClass.standard_rules:
                engine_variants.append(variantClass.variant)
            else:
                if engine.get("variants"):
                    if variantClass.cecp_name in engine.get("variants"):
                        engine_variants.append(variantClass.variant)
                # UCI knows Chess960 only
                if engine.get("options"):
                    for option in engine["options"]:
                        if option["name"] == "UCI_Chess960" and \
                                variantClass.cecp_name == "fischerandom":
                            engine_variants.append(variantClass.variant)
                        elif option["name"] == "UCI_Variant":
                            UCI_without_standard_variant = "chess" not in option["choices"]
                            if variantClass.cecp_name in option["choices"] or \
                                    variantClass.cecp_name.lower().replace("-", "") in option["choices"]:
                                engine_variants.append(variantClass.variant)

        if UCI_without_standard_variant:
            engine_variants.remove(NORMALCHESS)

        return engine_variants
Exemplo n.º 3
0
 def getEngineVariants(self, engine):
     UCI_without_standard_variant = False
     engine_variants = []
     for variantClass in variants.values():
         if variantClass.standard_rules:
             engine_variants.append(variantClass.variant)
         else:
             if engine.get("variants"):
                 if variantClass.cecp_name in engine.get("variants"):
                     engine_variants.append(variantClass.variant)
             # UCI knows Chess960 only
             if engine.get("options"):
                 for option in engine["options"]:
                     if option["name"] == "UCI_Chess960" and \
                             variantClass.cecp_name == "fischerandom":
                         engine_variants.append(variantClass.variant)
                     elif option["name"] == "UCI_Variant":
                         UCI_without_standard_variant = "chess" not in option[
                             "choices"]
                         if variantClass.cecp_name in option["choices"] or \
                                 variantClass.cecp_name.lower().replace("-", "") in option["choices"]:
                             engine_variants.append(variantClass.variant)
     # Fix #1444 Unsupported variant on the home screen
     if UCI_without_standard_variant:
         # this fix causes problems in TaskerManager and newGameDialog
         # TODO: create correct fix
         if 0:
             engine_variants.remove(NORMALCHESS)
     return engine_variants
Exemplo n.º 4
0
 def getEngineVariants(self, engine):
     UCI_without_standard_variant = False
     engine_variants = []
     for variantClass in variants.values():
         if variantClass.standard_rules:
             engine_variants.append(variantClass.variant)
         else:
             if engine.get("variants"):
                 if variantClass.cecp_name in engine.get("variants"):
                     engine_variants.append(variantClass.variant)
             # UCI knows Chess960 only
             if engine.get("options"):
                 for option in engine["options"]:
                     if option["name"] == "UCI_Chess960" and \
                             variantClass.cecp_name == "fischerandom":
                         engine_variants.append(variantClass.variant)
                     elif option["name"] == "UCI_Variant":
                         UCI_without_standard_variant = "chess" not in option["choices"]
                         if variantClass.cecp_name in option["choices"] or \
                                 variantClass.cecp_name.lower().replace("-", "") in option["choices"]:
                             engine_variants.append(variantClass.variant)
     # Fix #1444 Unsupported variant on the home screen
     if UCI_without_standard_variant:
         # this fix causes problems in TaskerManager and newGameDialog
         # TODO: create correct fix
         if 0:
             engine_variants.remove(NORMALCHESS)
     return engine_variants
Exemplo n.º 5
0
    def getEngineVariants(self, engine):
        UCI_without_standard_variant = False
        engine_variants = []
        for variantClass in variants.values():
            if variantClass.standard_rules:
                engine_variants.append(variantClass.variant)
            else:
                if engine.get("variants"):
                    if variantClass.cecp_name in engine.get("variants"):
                        engine_variants.append(variantClass.variant)
                # UCI knows Chess960 only
                if engine.get("options"):
                    for option in engine["options"]:
                        if option["name"] == "UCI_Chess960" and \
                                variantClass.cecp_name == "fischerandom":
                            engine_variants.append(variantClass.variant)
                        elif option["name"] == "UCI_Variant":
                            UCI_without_standard_variant = "chess" not in option[
                                "choices"]
                            if variantClass.cecp_name in option["choices"] or \
                                    variantClass.cecp_name.lower().replace("-", "") in option["choices"]:
                                engine_variants.append(variantClass.variant)

        if UCI_without_standard_variant:
            engine_variants.remove(NORMALCHESS)

        return engine_variants
Exemplo n.º 6
0
def createPlayerUIGlobals(discoverer):
    global playerItems
    global analyzerItems
    global allEngineItems

    playerItems = []
    analyzerItems = []
    allEngineItems = []

    for variantClass in variants.values():
        playerItems += [[(ipeople, _("Human Being"))]]
    for engine in discoverer.getEngines():
        name = engine["name"]
        c = discoverer.getCountry(engine)
        path = addDataPrefix("flags/%s.png" % c)

        if c and os.path.isfile(path):
            flag_icon = get_pixbuf(path)
        else:
            path = addDataPrefix("flags/unknown.png")
            flag_icon = get_pixbuf(path)

        allEngineItems.append((flag_icon, name))

        for variant in discoverer.getEngineVariants(engine):
            playerItems[variant] += [(flag_icon, name)]

        if discoverer.is_analyzer(engine):
            analyzerItems.append((flag_icon, name))
Exemplo n.º 7
0
    def __initVariantRadio(cls, confid, radiobutton, configImage, default):
        model = Gtk.TreeStore(str)
        treeview = Gtk.TreeView(model)
        treeview.set_headers_visible(False)
        treeview.append_column(
            Gtk.TreeViewColumn(None, Gtk.CellRendererText(), text=0))
        alignment = Gtk.Alignment.new(1, 1, 1, 1)
        alignment.set_padding(6, 6, 12, 12)
        alignment.add(treeview)
        ImageMenu.switchWithImage(configImage, alignment)

        groupNames = {
            VARIANTS_BLINDFOLD: _("Blindfold"),
            VARIANTS_ODDS: _("Odds"),
            VARIANTS_SHUFFLE: _("Shuffle"),
            VARIANTS_OTHER: _("Other (standard rules)"),
            VARIANTS_OTHER_NONSTANDARD: _("Other (non standard rules)"),
            VARIANTS_ASEAN: _("Asian variants"),
        }

        specialVariants = [
            v for v in variants.values()
            if v != NormalBoard and v.variant not in UNSUPPORTED
        ]
        specialVariants = sorted(specialVariants,
                                 key=attrgetter("variant_group"))
        groups = groupby(specialVariants, attrgetter("variant_group"))
        pathToVariant = {}
        variantToPath = {}
        for i, (id, group) in enumerate(groups):
            iter = model.append(None, (groupNames[id], ))
            for variant in group:
                subiter = model.append(iter, (variant.name, ))
                path = model.get_path(subiter)
                pathToVariant[path.to_string()] = variant.variant
                variantToPath[variant.variant] = path.to_string()
            treeview.expand_row(Gtk.TreePath(i), True)

        selection = treeview.get_selection()
        selection.set_mode(Gtk.SelectionMode.BROWSE)

        def selfunc(selection, store, path, path_selected, data):
            return path.get_depth() > 1

        selection.set_select_function(selfunc, None)
        variant = conf.get(confid, default)
        if variant in variantToPath:
            selection.select_path(variantToPath[variant])

        def callback(selection):
            model, iter = selection.get_selected()
            if iter:
                radiobutton.set_label("%s" % model.get(iter, 0) + _(" chess"))
                path = model.get_path(iter)
                variant = pathToVariant[path.to_string()]
                conf.set(confid, variant)

        selection.connect("changed", callback)
        callback(selection)
Exemplo n.º 8
0
    def __initVariantRadio(cls, confid, radiobutton, configImage):
        model = Gtk.TreeStore(str)
        treeview = Gtk.TreeView(model)
        treeview.set_headers_visible(False)
        treeview.append_column(Gtk.TreeViewColumn(None,
                                                  Gtk.CellRendererText(),
                                                  text=0))
        alignment = Gtk.Alignment.new(1, 1, 1, 1)
        alignment.set_padding(6, 6, 12, 12)
        alignment.add(treeview)
        ImageMenu.switchWithImage(configImage, alignment)

        groupNames = {VARIANTS_BLINDFOLD: _("Blindfold"),
                      VARIANTS_ODDS: _("Odds"),
                      VARIANTS_SHUFFLE: _("Shuffle"),
                      VARIANTS_OTHER: _("Other (standard rules)"),
                      VARIANTS_OTHER_NONSTANDARD:
                      _("Other (non standard rules)"),
                      VARIANTS_ASEAN: _("Asian variants"), }

        specialVariants = [v
                           for v in variants.values()
                           if v != NormalBoard and v.variant not in UNSUPPORTED
                           ]
        specialVariants = sorted(specialVariants,
                                 key=attrgetter("variant_group"))
        groups = groupby(specialVariants, attrgetter("variant_group"))
        pathToVariant = {}
        variantToPath = {}
        for i, (id, group) in enumerate(groups):
            iter = model.append(None, (groupNames[id], ))
            for variant in group:
                subiter = model.append(iter, (variant.name, ))
                path = model.get_path(subiter)
                pathToVariant[path.to_string()] = variant.variant
                variantToPath[variant.variant] = path.to_string()
            treeview.expand_row(Gtk.TreePath(i), True)

        selection = treeview.get_selection()
        selection.set_mode(Gtk.SelectionMode.BROWSE)

        def selfunc(selection, store, path, path_selected, data):
            return path.get_depth() > 1

        selection.set_select_function(selfunc, None)
        variant = conf.get(confid)
        if variant in variantToPath:
            selection.select_path(variantToPath[variant])

        def callback(selection):
            model, iter = selection.get_selected()
            if iter:
                radiobutton.set_label("%s" % model.get(iter, 0) + _(" chess"))
                path = model.get_path(iter)
                variant = pathToVariant[path.to_string()]
                conf.set(confid, variant)

        selection.connect("changed", callback)
        callback(selection)
Exemplo n.º 9
0
 def setOptionVariant (self, variant):
     if self.features["variants"] is None:
         log.warning("setOptionVariant: engine doesn't support variants", extra={"task":self.defname})
         return
     
     if variant in variants.values() and not variant.standard_rules:
         assert variant.cecp_name in self.features["variants"], \
                 "%s doesn't support %s variant" % (self, variant.cecp_name)
         self.optionQueue.append("variant %s" % variant.cecp_name)
Exemplo n.º 10
0
 def setOptionVariant (self, variant):
     if self.features["variants"] is None:
         log.warning("setOptionVariant: engine doesn't support variants", extra={"task":self.defname})
         return
     
     if variant in variants.values() and not variant.standard_rules:
         assert variant.cecp_name in self.features["variants"], \
                 "%s doesn't support %s variant" % (self, variant.cecp_name)
         self.optionQueue.append("variant %s" % variant.cecp_name)
Exemplo n.º 11
0
 def getEngineVariants (self, engine):
     for variantClass in variants.values():
         if variantClass.standard_rules:
             yield variantClass.board.variant
         else:
             if engine.get("variants"):
                 if variantClass.cecp_name in engine.get("variants"):
                     yield variantClass.board.variant
             # UCI knows Chess960 only
             if variantClass.cecp_name == "fischerandom" and engine.get("options"):
                 for option in engine["options"]:
                     if option["name"] == "UCI_Chess960":
                         yield variantClass.board.variant
Exemplo n.º 12
0
 def getEngineVariants (self, engine):
     for variantClass in variants.values():
         if variantClass.standard_rules:
             yield variantClass.board.variant
         else:
             for feature in engine.findall("cecp-features/feature"):
                 if feature.get("name") == "variants":
                     if variantClass.cecp_name in feature.get('value'):
                         yield variantClass.board.variant
             # UCI knows Chess960 only
             if variantClass.cecp_name == "fischerandom":
                 for option in engine.findall('options/check-option'):
                     if option.get("name") == "UCI_Chess960":
                         yield variantClass.board.variant
Exemplo n.º 13
0
 def getEngineVariants(self, engine):
     for variantClass in variants.values():
         if variantClass.standard_rules:
             yield variantClass.board.variant
         else:
             for feature in engine.findall("cecp-features/feature"):
                 if feature.get("name") == "variants":
                     if variantClass.cecp_name in feature.get('value'):
                         yield variantClass.board.variant
             # UCI knows Chess960 only
             if variantClass.cecp_name == "fischerandom":
                 for option in engine.findall('options/check-option'):
                     if option.get("name") == "UCI_Chess960":
                         yield variantClass.board.variant
Exemplo n.º 14
0
def createPlayerUIGlobals (discoverer):
    global playerItems
    global smallPlayerItems
    for variantClass in variants.values():
        playerItems += [ [(ipeople, _("Human Being"))] ]
        smallPlayerItems += [ [(speople, _("Human Being"))] ]
    for engine in discoverer.getEngines().values():
        name = discoverer.getName(engine)
        c = discoverer.getCountry(engine)
        path = addDataPrefix("flags/%s.png" % c)
        if c and os.path.isfile(path):
            flag_icon = gtk.gdk.pixbuf_new_from_file(path)
        else: flag_icon = inotebook
        for variant in discoverer.getEngineVariants(engine):
            playerItems[variant] += [(flag_icon, name)]
            smallPlayerItems[variant] += [(snotebook, name)]
Exemplo n.º 15
0
 def getEngineVariants (self, engine):
     for variantClass in variants.values():
         if variantClass.standard_rules:
             yield variantClass.board.variant
         else:
             if engine.get("variants"):
                 if variantClass.cecp_name in engine.get("variants"):
                     yield variantClass.board.variant
             # UCI knows Chess960 only
             if engine.get("options"):
                 for option in engine["options"]:
                     if option["name"] == "UCI_Chess960" and variantClass.cecp_name == "fischerandom":
                         yield variantClass.board.variant
                     elif option["name"] == "UCI_Variant":
                         if variantClass.cecp_name in option["choices"] or \
                             variantClass.cecp_name.lower().replace("-", "") in option["choices"]:
                             yield variantClass.board.variant
Exemplo n.º 16
0
 def getEngineVariants (self, engine):
     for variantClass in variants.values():
         if variantClass.standard_rules:
             yield variantClass.variant
         else:
             if engine.get("variants"):
                 if variantClass.cecp_name in engine.get("variants"):
                     yield variantClass.variant
             # UCI knows Chess960 only
             if engine.get("options"):
                 for option in engine["options"]:
                     if option["name"] == "UCI_Chess960" and variantClass.cecp_name == "fischerandom":
                         yield variantClass.variant
                     elif option["name"] == "UCI_Variant":
                         if variantClass.cecp_name in option["choices"] or \
                             variantClass.cecp_name.lower().replace("-", "") in option["choices"]:
                             yield variantClass.variant
Exemplo n.º 17
0
    def __initVariantRadio (cls, confid, radiobutton, configImage, default):
        model = gtk.TreeStore(str)
        treeview = gtk.TreeView(model)
        treeview.set_headers_visible(False)
        treeview.append_column(gtk.TreeViewColumn(None, gtk.CellRendererText(), text=0))
        alignment = gtk.Alignment(1,1,1,1)
        alignment.set_padding(6,6,12,12)
        alignment.add(treeview)
        ImageMenu.switchWithImage(configImage, alignment)

        groupNames = {VARIANTS_BLINDFOLD: _("Blindfold"),
                      VARIANTS_ODDS: _("Odds"),
                      VARIANTS_SHUFFLE: _("Shuffle"),
                      VARIANTS_OTHER: _("Other (standard rules)"),
                      VARIANTS_OTHER_NONSTANDARD: _("Other (non standard rules)"),
                      }
        specialVariants = [v for v in variants.values() if v != NormalChess and 
                                        v.board.variant not in UNSUPPORTED]
        groups = groupby(specialVariants, attrgetter("variant_group"))
        pathToVariant = {}
        variantToPath = {}
        for i, (id, group) in enumerate(groups):
            iter = model.append(None, (groupNames[id],))
            for variant in group:
                subiter = model.append(iter, (variant.name,))
                path = model.get_path(subiter)
                pathToVariant[path] = variant.board.variant
                variantToPath[variant.board.variant] = path
            treeview.expand_row((i,), True)

        selection = treeview.get_selection()
        selection.set_mode(gtk.SELECTION_BROWSE)
        selection.set_select_function(lambda path: len(path) > 1)
        selection.select_path(variantToPath[conf.get(confid, default)])

        def callback (selection):
            model, iter = selection.get_selected()
            if iter:
                radiobutton.set_label("%s" % model.get(iter, 0) + _(" chess"))
                path = model.get_path(iter)
                variant = pathToVariant[path]
                conf.set(confid, variant)
        selection.connect("changed", callback)
        callback(selection)
Exemplo n.º 18
0
    def __initVariantRadio (cls, confid, radiobutton, configImage, default):
        model = gtk.TreeStore(str)
        treeview = gtk.TreeView(model)
        treeview.set_headers_visible(False)
        treeview.append_column(gtk.TreeViewColumn(None, gtk.CellRendererText(), text=0))
        alignment = gtk.Alignment(1,1,1,1)
        alignment.set_padding(6,6,12,12)
        alignment.add(treeview)
        ImageMenu.switchWithImage(configImage, alignment)

        groupNames = {VARIANTS_BLINDFOLD: _("Blindfold"),
                      VARIANTS_ODDS: _("Odds"),
                      VARIANTS_SHUFFLE: _("Shuffle"),
                      VARIANTS_OTHER: _("Other")}
        specialVariants = [v for v in variants.values() if v != NormalChess]
        groups = groupby(specialVariants, attrgetter("variant_group"))
        pathToVariant = {}
        variantToPath = {}
        for i, (id, group) in enumerate(groups):
            iter = model.append(None, (groupNames[id],))
            for variant in group:
                subiter = model.append(iter, (variant.name,))
                path = model.get_path(subiter)
                pathToVariant[path] = variant.board.variant
                variantToPath[variant.board.variant] = path
            treeview.expand_row((i,), True)

        selection = treeview.get_selection()
        selection.set_mode(gtk.SELECTION_BROWSE)
        selection.set_select_function(lambda path: len(path) > 1)
        selection.select_path(variantToPath[conf.get(confid, default)])

        def callback (selection):
            model, iter = selection.get_selected()
            if iter:
                radiobutton.set_label("%s" % model.get(iter, 0) + _(" chess"))
                path = model.get_path(iter)
                variant = pathToVariant[path]
                conf.set(confid, variant)
        selection.connect("changed", callback)
        callback(selection)