Пример #1
0
    def _setup(self):
        self.tabs = QTabWidget(self)

        general = QWidget(self.tabs)
        layout = QFormLayout()
        general.setLayout(layout)

        def make_spinbox(title, low, high, tab):
            widget = QSpinBox(tab)
            widget.setRange(low, high)
            widget.valueChanged.connect(self.edited)
            tab.layout().addRow(title, widget)
            return widget

        self.title = MandatoryField(_("Title"), QLineEdit(general))
        self.title.add_to_form(layout)
        self.title.widget.editingFinished.connect(self.edited)

        self.depth = make_spinbox(_("Default depth (half-steps)"), 0, 20,
                                  general)
        self.start_depth = make_spinbox(_("Minimum depth"), 0, 20, general)
        self.max_combination_depth = make_spinbox(_("Forced mode depth"), 0,
                                                  24, general)
        self.dynamic_depth = make_spinbox(_("Static search mode threshold"), 0,
                                          24, general)

        self.deeper_if_bad = QCheckBox(general)
        self.deeper_if_bad.stateChanged.connect(self.edited)
        layout.addRow(_("Think better if situation seem bad"),
                      self.deeper_if_bad)

        self.moves_bound_low = make_spinbox(_("`Few moves' mode bound"), 1, 5,
                                            general)
        self.moves_bound_high = make_spinbox(_("`Too many moves' mode bound"),
                                             5, 50, general)

        self.use_positional_score = QCheckBox(general)
        layout.addRow(_("Use positional score"), self.use_positional_score)
        self.use_positional_score.stateChanged.connect(self.edited)

        self.use_timeout = QCheckBox(general)
        layout.addRow(_("Continue thinking while there is time"),
                      self.use_timeout)
        self.use_timeout.stateChanged.connect(self.edited)
        self.use_timeout.stateChanged.connect(self._on_use_timeout)

        self.timeout = make_spinbox(_("Timeout (seconds)"), 1, 120, general)
        self.timeout.setEnabled(False)

        self.random_opening_depth = make_spinbox(_("Random opening depth"), 1,
                                                 5, general)
        self.random_opening_depth.setToolTip(
            _("Number of first moves to be considered as opening; during these moves, AI will select it's move randomly from several best options"
              ))
        self.random_opening_options = make_spinbox(_("Random opening options"),
                                                   1, 5, general)
        self.random_opening_options.setToolTip(
            _("From how many best options to select during the opening"))

        self.tabs.addTab(general, _("General"))

        evaluator = QWidget(self.tabs)
        layout = QFormLayout()
        evaluator.setLayout(layout)

        self.mobility_weight = make_spinbox(_("Mobility"), 0, 100, evaluator)
        self.backyard_weight = make_spinbox(_("Back row"), -100, 100,
                                            evaluator)
        self.center_weight = make_spinbox(_("Center"), 0, 100, evaluator)
        self.opposite_side_weight = make_spinbox(_("Opposite side"), 0, 100,
                                                 evaluator)
        self.backed_weight = make_spinbox(_("Backed"), 0, 100, evaluator)
        self.asymetry_weight = make_spinbox(_("Asymetry"), -100, 100,
                                            evaluator)
        self.pre_king_weight = make_spinbox(_("Pre-king"), 1, 100, evaluator)
        self.king_coef = make_spinbox(_("King"), 1, 100, evaluator)
        self.attacked_man_coef = make_spinbox(_("Attacked man"), 0, 200,
                                              evaluator)
        self.attacked_king_coef = make_spinbox(_("Attacked king"), 0, 200,
                                               evaluator)

        self.tabs.addTab(evaluator, _("Board evaluation"))

        extra = QWidget(self.tabs)
        layout = QVBoxLayout()
        extra.setLayout(layout)

        self.extra = QTextEdit(general)
        self.extra.textChanged.connect(self.edited)
        layout.addWidget(self.extra)
        self.tabs.addTab(extra, _("Extra options"))

        layout = QVBoxLayout()
        layout.addWidget(self.tabs)

        hbox = QHBoxLayout()

        save = QPushButton(_("Save..."), self)
        save.setIcon(QIcon.fromTheme("document-save"))
        save.setToolTip(_("Save AI settings to JSON file"))
        save.clicked.connect(self._on_save)
        hbox.addWidget(save)

        load = QPushButton(_("Load..."), self)
        load.setIcon(QIcon.fromTheme("document-open"))
        load.setToolTip(_("Load AI settings from JSON file"))
        load.clicked.connect(self._on_load)
        hbox.addWidget(load)

        layout.addLayout(hbox)

        self.setLayout(layout)