void EngineManagementWidget::addEngine() { auto dlg = new EngineConfigurationDialog( EngineConfigurationDialog::AddEngine, this); dlg->setAttribute(Qt::WA_DeleteOnClose); dlg->setReservedNames(m_engineManager->engineNames()); connect(dlg, &EngineConfigurationDialog::accepted, [=]() { m_engineManager->addEngine(dlg->engineConfiguration()); m_hasChanged = true; }); dlg->open(); }
void EngineConfigurationDialog::detectEngineOptions() { if (m_engine != 0) return; if (QObject::sender() != ui->m_detectBtn && ui->m_commandEdit->text() == m_oldCommand && ui->m_workingDirEdit->text() == m_oldPath && ui->m_protocolCombo->currentText() == m_oldProtocol) { emit detectionFinished(); return; } m_oldCommand = ui->m_commandEdit->text(); m_oldPath = ui->m_workingDirEdit->text(); m_oldProtocol = ui->m_protocolCombo->currentText(); ui->m_detectBtn->setEnabled(false); ui->m_restoreBtn->setEnabled(false); ui->m_progressBar->show(); EngineBuilder builder(engineConfiguration()); m_engine = qobject_cast<ChessEngine*>(builder.create(0, 0, this)); if (m_engine != 0) { connect(m_engine, SIGNAL(ready()), this, SLOT(onEngineReady())); connect(m_engine, SIGNAL(disconnected()), this, SLOT(onEngineQuit())); connect(m_engine, SIGNAL(destroyed()), this, SIGNAL(detectionFinished())); connect(m_optionDetectionTimer, SIGNAL(timeout()), m_engine, SLOT(kill())); m_optionDetectionTimer->start(); } else { ui->m_detectBtn->setEnabled(true); ui->m_restoreBtn->setEnabled(true); ui->m_progressBar->hide(); emit detectionFinished(); } }
void EngineManagementWidget::configureEngine(const QModelIndex& index) { // Map the index from the filtered model to the original model int row = m_filteredModel->mapToSource(index).row(); const EngineConfiguration& config = m_engineManager->engineAt(row); QSet<QString> names = m_engineManager->engineNames(); names.remove(config.name()); auto dlg = new EngineConfigurationDialog( EngineConfigurationDialog::ConfigureEngine, this); dlg->setAttribute(Qt::WA_DeleteOnClose); dlg->applyEngineInformation(config); dlg->setReservedNames(names); connect(dlg, &EngineConfigurationDialog::accepted, [=]() { m_engineManager->updateEngineAt(row, dlg->engineConfiguration()); m_hasChanged = true; }); dlg->open(); }