1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-02-09 13:14:02 +02:00

Added new settings to Launcher:

- UI Scaling selection
- Allied AI selection
- Separate main/secondary mod repo
This commit is contained in:
Ivan Savenko 2023-06-29 15:41:12 +03:00
parent 814a4b9455
commit 21c45bd84f
6 changed files with 501 additions and 392 deletions

View File

@ -270,7 +270,7 @@
"type" : "object", "type" : "object",
"additionalProperties" : false, "additionalProperties" : false,
"default" : {}, "default" : {},
"required" : [ "server", "port", "localInformation", "playerAI", "friendlyAI","neutralAI", "enemyAI", "reconnect", "uuid", "names" ], "required" : [ "server", "port", "localInformation", "playerAI", "alliedAI", "friendlyAI", "neutralAI", "enemyAI", "reconnect", "uuid", "names" ],
"properties" : { "properties" : {
"server" : { "server" : {
"type" : "string", "type" : "string",
@ -288,6 +288,10 @@
"type" : "string", "type" : "string",
"default" : "Nullkiller" "default" : "Nullkiller"
}, },
"alliedAI" : {
"type" : "string",
"default" : "VCAI"
},
"friendlyAI" : { "friendlyAI" : {
"type" : "string", "type" : "string",
"default" : "BattleAI" "default" : "BattleAI"
@ -397,16 +401,37 @@
"type" : "object", "type" : "object",
"default" : {}, "default" : {},
"additionalProperties" : false, "additionalProperties" : false,
"required" : [ "setupCompleted", "repositoryURL", "enableInstalledMods", "autoCheckRepositories", "updateOnStartup", "updateConfigUrl", "lobbyUrl", "lobbyPort", "lobbyUsername", "connectionTimeout" ], "required" : [
"properties" : { "setupCompleted",
"repositoryURL" : { "defaultRepositoryEnabled",
"type" : "array", "defaultRepositoryURL",
"default" : [ "extraRepositoryURL",
"https://raw.githubusercontent.com/vcmi/vcmi-mods-repository/develop/vcmi-1.3.json" "extraRepositoryEnabled",
"enableInstalledMods",
"autoCheckRepositories",
"updateOnStartup",
"updateConfigUrl",
"lobbyUrl",
"lobbyPort",
"lobbyUsername",
"connectionTimeout"
], ],
"items" : { "properties" : {
"type" : "string" "defaultRepositoryEnabled" : {
} "type" : "boolean",
"default" : true,
},
"defaultRepositoryURL" : {
"type" : "string",
"default" : "https://raw.githubusercontent.com/vcmi/vcmi-mods-repository/develop/vcmi-1.3.json",
},
"extraRepositoryEnabled" : {
"type" : "boolean",
"default" : false,
},
"extraRepositoryURL" : {
"type" : "string",
"default" : "",
}, },
"setupCompleted" : { "setupCompleted" : {
"type" : "boolean", "type" : "boolean",

View File

@ -90,11 +90,8 @@ void CModListView::setupModsView()
CModListView::CModListView(QWidget * parent) CModListView::CModListView(QWidget * parent)
: QWidget(parent) : QWidget(parent)
, settingsListener(settings.listen["launcher"]["repositoryURL"])
, ui(new Ui::CModListView) , ui(new Ui::CModListView)
, repositoriesChanged(false)
{ {
settingsListener([&](const JsonNode &){ repositoriesChanged = true; });
ui->setupUi(this); ui->setupUi(this);
setupModModel(); setupModModel();
@ -128,15 +125,25 @@ CModListView::CModListView(QWidget * parent)
void CModListView::loadRepositories() void CModListView::loadRepositories()
{ {
manager->resetRepositories(); manager->resetRepositories();
for(auto entry : settings["launcher"]["repositoryURL"].Vector())
QStringList repositories;
if (settings["launcher"]["defaultRepositoryEnabled"].Bool())
repositories.push_back(QString::fromStdString(settings["launcher"]["defaultRepositoryURL"].String()));
if (settings["launcher"]["extraRepositoryEnabled"].Bool())
repositories.push_back(QString::fromStdString(settings["launcher"]["extraRepositoryURL"].String()));
for(auto entry : repositories)
{ {
QString str = QString::fromUtf8(entry.String().c_str()); if (entry.isEmpty())
continue;
// URL must be encoded to something else to get rid of symbols illegal in file names // URL must be encoded to something else to get rid of symbols illegal in file names
auto hashed = QCryptographicHash::hash(str.toUtf8(), QCryptographicHash::Md5); auto hashed = QCryptographicHash::hash(entry.toUtf8(), QCryptographicHash::Md5);
auto hashedStr = QString::fromUtf8(hashed.toHex()); auto hashedStr = QString::fromUtf8(hashed.toHex());
downloadFile(hashedStr + ".json", str, "repository index"); downloadFile(hashedStr + ".json", entry, "repository index");
} }
} }
@ -148,19 +155,6 @@ CModListView::~CModListView()
delete ui; delete ui;
} }
void CModListView::showEvent(QShowEvent * event)
{
QWidget::showEvent(event);
if(repositoriesChanged)
{
repositoriesChanged = false;
if(settings["launcher"]["autoCheckRepositories"].Bool())
{
loadRepositories();
}
}
}
static QString replaceIfNotEmpty(QVariant value, QString pattern) static QString replaceIfNotEmpty(QVariant value, QString pattern)
{ {
if(value.canConvert<QStringList>()) if(value.canConvert<QStringList>())

View File

@ -35,11 +35,6 @@ class CModListView : public QWidget
CModFilterModel * filterModel; CModFilterModel * filterModel;
CDownloadManager * dlManager; CDownloadManager * dlManager;
SettingsListener settingsListener;
bool repositoriesChanged;
void showEvent(QShowEvent * event) override;
void setupModModel(); void setupModModel();
void setupFilterModel(); void setupFilterModel();
void setupModsView(); void setupModsView();

View File

@ -79,22 +79,25 @@ void CSettingsView::loadSettings()
else else
ui->comboBoxFullScreen->setCurrentIndex(settings["video"]["fullscreen"].Bool()); ui->comboBoxFullScreen->setCurrentIndex(settings["video"]["fullscreen"].Bool());
#endif #endif
ui->spinBoxInterfaceScaling->setValue(settings["video"]["resolution"]["scaling"].Float());
ui->comboBoxFriendlyAI->setCurrentText(QString::fromStdString(settings["server"]["friendlyAI"].String())); ui->comboBoxFriendlyAI->setCurrentText(QString::fromStdString(settings["server"]["friendlyAI"].String()));
ui->comboBoxNeutralAI->setCurrentText(QString::fromStdString(settings["server"]["neutralAI"].String())); ui->comboBoxNeutralAI->setCurrentText(QString::fromStdString(settings["server"]["neutralAI"].String()));
ui->comboBoxEnemyAI->setCurrentText(QString::fromStdString(settings["server"]["enemyAI"].String())); ui->comboBoxEnemyAI->setCurrentText(QString::fromStdString(settings["server"]["enemyAI"].String()));
ui->comboBoxPlayerAI->setCurrentText(QString::fromStdString(settings["server"]["playerAI"].String())); ui->comboBoxEnemyPlayerAI->setCurrentText(QString::fromStdString(settings["server"]["playerAI"].String()));
ui->spinBoxNetworkPort->setValue(settings["server"]["port"].Integer()); ui->spinBoxNetworkPort->setValue(settings["server"]["port"].Integer());
ui->comboBoxAutoCheck->setCurrentIndex(settings["launcher"]["autoCheckRepositories"].Bool()); ui->comboBoxAutoCheck->setCurrentIndex(settings["launcher"]["autoCheckRepositories"].Bool());
JsonNode urls = settings["launcher"]["repositoryURL"]; ui->lineEditRepositoryDefault->setText(QString::fromStdString(settings["launcher"]["defaultRepositoryURL"].String()));
ui->plainTextEditRepos->blockSignals(true); // Do not report loading as change of data ui->lineEditRepositoryExtra->setText(QString::fromStdString(settings["launcher"]["extraRepositoryURL"].String()));
ui->plainTextEditRepos->clear();
for(auto entry : urls.Vector()) ui->lineEditRepositoryDefault->setEnabled(settings["launcher"]["defaultRepositoryEnabled"].Bool());
ui->plainTextEditRepos->appendPlainText(QString::fromUtf8(entry.String().c_str())); ui->lineEditRepositoryExtra->setEnabled(settings["launcher"]["extraRepositoryEnabled"].Bool());
ui->plainTextEditRepos->blockSignals(false);
ui->checkBoxRepositoryDefault->setChecked(settings["launcher"]["defaultRepositoryEnabled"].Bool());
ui->checkBoxRepositoryExtra->setChecked(settings["launcher"]["extraRepositoryEnabled"].Bool());
ui->lineEditUserDataDir->setText(pathToQString(VCMIDirs::get().userDataPath())); ui->lineEditUserDataDir->setText(pathToQString(VCMIDirs::get().userDataPath()));
ui->lineEditGameDir->setText(pathToQString(VCMIDirs::get().binaryPath())); ui->lineEditGameDir->setText(pathToQString(VCMIDirs::get().binaryPath()));
@ -254,24 +257,6 @@ void CSettingsView::on_spinBoxNetworkPort_valueChanged(int arg1)
node->Float() = arg1; node->Float() = arg1;
} }
void CSettingsView::on_plainTextEditRepos_textChanged()
{
Settings node = settings.write["launcher"]["repositoryURL"];
QStringList list = ui->plainTextEditRepos->toPlainText().split('\n');
node->Vector().clear();
for(QString line : list)
{
if(line.trimmed().size() > 0)
{
JsonNode entry;
entry.String() = line.trimmed().toUtf8().data();
node->Vector().push_back(entry);
}
}
}
void CSettingsView::on_openTempDir_clicked() void CSettingsView::on_openTempDir_clicked()
{ {
QDesktopServices::openUrl(QUrl::fromLocalFile(QFileInfo(ui->lineEditTempDir->text()).absoluteFilePath())); QDesktopServices::openUrl(QUrl::fromLocalFile(QFileInfo(ui->lineEditTempDir->text()).absoluteFilePath()));
@ -293,11 +278,6 @@ void CSettingsView::on_comboBoxShowIntro_currentIndexChanged(int index)
node->Bool() = index; node->Bool() = index;
} }
void CSettingsView::on_changeGameDataDir_clicked()
{
}
void CSettingsView::on_comboBoxAutoSave_currentIndexChanged(int index) void CSettingsView::on_comboBoxAutoSave_currentIndexChanged(int index)
{ {
Settings node = settings.write["general"]["saveFrequency"]; Settings node = settings.write["general"]["saveFrequency"];
@ -441,3 +421,31 @@ void CSettingsView::on_comboBoxLanguageBase_currentIndexChanged(int index)
QString selectedLanguage = ui->comboBoxLanguageBase->itemData(index).toString(); QString selectedLanguage = ui->comboBoxLanguageBase->itemData(index).toString();
node->String() = selectedLanguage.toStdString(); node->String() = selectedLanguage.toStdString();
} }
void CSettingsView::on_checkBoxRepositoryDefault_stateChanged(int arg1)
{
Settings node = settings.write["launcher"]["defaultRepositoryEnabled"];
node->Bool() = arg1;
ui->lineEditRepositoryDefault->setEnabled(arg1);
}
void CSettingsView::on_checkBoxRepositoryExtra_stateChanged(int arg1)
{
Settings node = settings.write["launcher"]["extraRepositoryEnabled"];
node->Bool() = arg1;
ui->lineEditRepositoryExtra->setEnabled(arg1);
}
void CSettingsView::on_lineEditRepositoryExtra_textEdited(const QString &arg1)
{
Settings node = settings.write["launcher"]["extraRepositoryURL"];
node->String() = arg1.toStdString();
}
void CSettingsView::on_spinBoxInterfaceScaling_valueChanged(int arg1)
{
Settings node = settings.write["video"]["resolution"]["scaling"];
node->Float() = arg1;
}

View File

@ -40,12 +40,10 @@ private slots:
void on_comboBoxNeutralAI_currentTextChanged(const QString & arg1); void on_comboBoxNeutralAI_currentTextChanged(const QString & arg1);
void on_comboBoxEnemyAI_currentTextChanged(const QString & arg1); void on_comboBoxEnemyAI_currentTextChanged(const QString & arg1);
void on_spinBoxNetworkPort_valueChanged(int arg1); void on_spinBoxNetworkPort_valueChanged(int arg1);
void on_plainTextEditRepos_textChanged();
void on_openTempDir_clicked(); void on_openTempDir_clicked();
void on_openUserDataDir_clicked(); void on_openUserDataDir_clicked();
void on_openGameDataDir_clicked(); void on_openGameDataDir_clicked();
void on_comboBoxShowIntro_currentIndexChanged(int index); void on_comboBoxShowIntro_currentIndexChanged(int index);
void on_changeGameDataDir_clicked();
void on_comboBoxAutoCheck_currentIndexChanged(int index); void on_comboBoxAutoCheck_currentIndexChanged(int index);
void on_comboBoxDisplayIndex_currentIndexChanged(int index); void on_comboBoxDisplayIndex_currentIndexChanged(int index);
void on_comboBoxAutoSave_currentIndexChanged(int index); void on_comboBoxAutoSave_currentIndexChanged(int index);
@ -57,6 +55,14 @@ private slots:
void on_comboBoxLanguageBase_currentIndexChanged(int index); void on_comboBoxLanguageBase_currentIndexChanged(int index);
void on_checkBoxRepositoryDefault_stateChanged(int arg1);
void on_checkBoxRepositoryExtra_stateChanged(int arg1);
void on_lineEditRepositoryExtra_textEdited(const QString &arg1);
void on_spinBoxInterfaceScaling_valueChanged(int arg1);
private: private:
Ui::CSettingsView * ui; Ui::CSettingsView * ui;

View File

@ -6,8 +6,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>842</width> <width>832</width>
<height>363</height> <height>350</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@ -113,16 +113,207 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>620</width> <width>610</width>
<height>745</height> <height>786</height>
</rect> </rect>
</property> </property>
<layout class="QGridLayout" name="gridLayout" columnstretch="3,0,0,0"> <layout class="QGridLayout" name="gridLayout" columnstretch="3,0,1,1,1">
<item row="19" column="1" colspan="3"> <item row="22" column="0">
<widget class="QComboBox" name="comboBoxEnemyAI"> <widget class="QLabel" name="labelDataDirs">
<property name="editable"> <property name="font">
<bool>false</bool> <font>
<weight>75</weight>
<bold>true</bold>
</font>
</property> </property>
<property name="text">
<string>Data Directories</string>
</property>
</widget>
</item>
<item row="5" column="4">
<widget class="QPushButton" name="pushButtonTranslation">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="labelLanguageBase">
<property name="text">
<string>Heroes III Data Language</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="labelLanguage">
<property name="text">
<string>VCMI Language</string>
</property>
</widget>
</item>
<item row="25" column="0">
<widget class="QLabel" name="labelTempDir">
<property name="text">
<string>Log files directory</string>
</property>
</widget>
</item>
<item row="16" column="0">
<widget class="QLabel" name="labelArtificialIntelligence">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Artificial Intelligence</string>
</property>
</widget>
</item>
<item row="24" column="0">
<widget class="QLabel" name="labelUserDataDir">
<property name="text">
<string>User data directory</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="labelTranslation">
<property name="text">
<string>Heroes III Translation</string>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QLabel" name="labelBuildVersionDesc">
<property name="text">
<string>Build version</string>
</property>
</widget>
</item>
<item row="12" column="0">
<widget class="QLabel" name="labelInterfaceScaling">
<property name="text">
<string>Interface Scaling</string>
</property>
</widget>
</item>
<item row="7" column="1" colspan="4">
<widget class="QComboBox" name="comboBoxAutoSave">
<property name="currentIndex">
<number>1</number>
</property>
<item>
<property name="text">
<string>Off</string>
</property>
</item>
<item>
<property name="text">
<string>On</string>
</property>
</item>
</widget>
</item>
<item row="11" column="0">
<widget class="QLabel" name="labelFullScreen">
<property name="text">
<string>Fullscreen</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="labelGeneral">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>General</string>
</property>
</widget>
</item>
<item row="19" column="0">
<widget class="QLabel" name="labelNeutralAI">
<property name="text">
<string>Neutral AI</string>
</property>
</widget>
</item>
<item row="6" column="1" colspan="4">
<widget class="QSpinBox" name="spinBoxNetworkPort">
<property name="minimum">
<number>1024</number>
</property>
<property name="maximum">
<number>65535</number>
</property>
<property name="value">
<number>3030</number>
</property>
</widget>
</item>
<item row="21" column="0">
<widget class="QLabel" name="labelEnemyAI">
<property name="text">
<string>Enemy AI</string>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QLabel" name="labelAutoSave">
<property name="text">
<string>Autosave</string>
</property>
</widget>
</item>
<item row="10" column="0">
<widget class="QLabel" name="labelResolution">
<property name="text">
<string>Resolution</string>
</property>
</widget>
</item>
<item row="5" column="1" colspan="3">
<widget class="QLabel" name="labelTranslationStatus">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="17" column="1" colspan="4">
<widget class="QComboBox" name="comboBoxEnemyPlayerAI">
<property name="currentText">
<string notr="true">VCAI</string>
</property>
<item>
<property name="text">
<string notr="true">VCAI</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">Nullkiller</string>
</property>
</item>
</widget>
</item>
<item row="8" column="1" colspan="4">
<widget class="QLineEdit" name="lineEditBuildVersion">
<property name="text">
<string notr="true"/>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="19" column="1" colspan="4">
<widget class="QComboBox" name="comboBoxNeutralAI">
<property name="currentText"> <property name="currentText">
<string notr="true">BattleAI</string> <string notr="true">BattleAI</string>
</property> </property>
@ -138,13 +329,6 @@
</item> </item>
</widget> </widget>
</item> </item>
<item row="1" column="0">
<widget class="QLabel" name="labelLanguage">
<property name="text">
<string>VCMI Language</string>
</property>
</widget>
</item>
<item row="6" column="0"> <item row="6" column="0">
<widget class="QLabel" name="labelNetworkPort"> <widget class="QLabel" name="labelNetworkPort">
<property name="text"> <property name="text">
@ -152,31 +336,101 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="11" column="0"> <item row="25" column="1" colspan="3">
<widget class="QLabel" name="labelFullScreen"> <widget class="QLineEdit" name="lineEditTempDir">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text"> <property name="text">
<string>Fullscreen</string> <string notr="true">/home/user/.vcmi</string>
</property>
<property name="readOnly">
<bool>true</bool>
</property> </property>
</widget> </widget>
</item> </item>
<item row="10" column="0"> <item row="14" column="1" colspan="4">
<widget class="QLabel" name="labelResolution"> <widget class="QComboBox" name="comboBoxDisplayIndex"/>
</item>
<item row="29" column="0">
<widget class="QLabel" name="labelRepositoryExtra">
<property name="text"> <property name="text">
<string>Resolution</string> <string>Additional repository</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="17" column="0"> <item row="23" column="0">
<widget class="QLabel" name="labelNeutralAI"> <widget class="QLabel" name="labelGameDir">
<property name="text"> <property name="text">
<string>Neutral AI</string> <string>Game data directory</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="7" column="0"> <item row="13" column="0">
<widget class="QLabel" name="labelAutoSave"> <widget class="QLabel" name="labelShowIntro">
<property name="text"> <property name="text">
<string>Autosave</string> <string>Show intro</string>
</property>
</widget>
</item>
<item row="15" column="0">
<widget class="QLabel" name="labelCursorType">
<property name="text">
<string>Cursor</string>
</property>
</widget>
</item>
<item row="24" column="4">
<widget class="QPushButton" name="openUserDataDir">
<property name="text">
<string>Open</string>
</property>
</widget>
</item>
<item row="27" column="0">
<widget class="QLabel" name="labelAutoCheck">
<property name="text">
<string>Check on startup</string>
</property>
</widget>
</item>
<item row="1" column="1" colspan="4">
<widget class="QComboBox" name="comboBoxLanguage"/>
</item>
<item row="24" column="1" colspan="3">
<widget class="QLineEdit" name="lineEditUserDataDir">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string notr="true">/home/user/.vcmi</string>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="18" column="1" colspan="4">
<widget class="QComboBox" name="comboBoxAlliedPlayerAI">
<property name="currentText">
<string notr="true">VCAI</string>
</property>
<item>
<property name="text">
<string notr="true">VCAI</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">Nullkiller</string>
</property>
</item>
</widget>
</item>
<item row="25" column="4">
<widget class="QPushButton" name="openTempDir">
<property name="text">
<string>Open</string>
</property> </property>
</widget> </widget>
</item> </item>
@ -193,40 +447,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="23" column="1" colspan="2"> <item row="20" column="1" colspan="4">
<widget class="QLineEdit" name="lineEditTempDir">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string notr="true">/home/user/.vcmi</string>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="13" column="1" colspan="3">
<widget class="QComboBox" name="comboBoxDisplayIndex"/>
</item>
<item row="14" column="0">
<widget class="QLabel" name="labelCursorType">
<property name="text">
<string>Cursor</string>
</property>
</widget>
</item>
<item row="22" column="3">
<widget class="QPushButton" name="openUserDataDir">
<property name="text">
<string>Open</string>
</property>
</widget>
</item>
<item row="1" column="1" colspan="3">
<widget class="QComboBox" name="comboBoxLanguage"/>
</item>
<item row="18" column="1" colspan="3">
<widget class="QComboBox" name="comboBoxFriendlyAI"> <widget class="QComboBox" name="comboBoxFriendlyAI">
<property name="editable"> <property name="editable">
<bool>false</bool> <bool>false</bool>
@ -246,7 +467,58 @@
</item> </item>
</widget> </widget>
</item> </item>
<item row="11" column="1" colspan="3"> <item row="18" column="0">
<widget class="QLabel" name="labelAlliedPlayerAI">
<property name="text">
<string>Adventure Map Allies</string>
</property>
</widget>
</item>
<item row="13" column="1" colspan="4">
<widget class="QComboBox" name="comboBoxShowIntro">
<property name="currentIndex">
<number>1</number>
</property>
<item>
<property name="text">
<string>Off</string>
</property>
</item>
<item>
<property name="text">
<string>On</string>
</property>
</item>
</widget>
</item>
<item row="21" column="1" colspan="4">
<widget class="QComboBox" name="comboBoxEnemyAI">
<property name="editable">
<bool>false</bool>
</property>
<property name="currentText">
<string notr="true">BattleAI</string>
</property>
<item>
<property name="text">
<string notr="true">BattleAI</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">StupidAI</string>
</property>
</item>
</widget>
</item>
<item row="17" column="0">
<widget class="QLabel" name="labelEnemyPlayerAI">
<property name="text">
<string>Adventure Map Enemies</string>
</property>
</widget>
</item>
<item row="11" column="1" colspan="4">
<widget class="QComboBox" name="comboBoxFullScreen"> <widget class="QComboBox" name="comboBoxFullScreen">
<property name="currentIndex"> <property name="currentIndex">
<number>0</number> <number>0</number>
@ -268,142 +540,48 @@
</item> </item>
</widget> </widget>
</item> </item>
<item row="6" column="1" colspan="3"> <item row="23" column="4">
<widget class="QSpinBox" name="spinBoxNetworkPort"> <widget class="QPushButton" name="openGameDataDir">
<property name="minimum">
<number>1024</number>
</property>
<property name="maximum">
<number>65535</number>
</property>
<property name="value">
<number>3030</number>
</property>
</widget>
</item>
<item row="23" column="3">
<widget class="QPushButton" name="openTempDir">
<property name="text"> <property name="text">
<string>Open</string> <string>Open</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="7" column="1" colspan="3">
<widget class="QComboBox" name="comboBoxAutoSave">
<property name="currentIndex">
<number>1</number>
</property>
<item>
<property name="text">
<string>Off</string>
</property>
</item>
<item>
<property name="text">
<string>On</string>
</property>
</item>
</widget>
</item>
<item row="20" column="0"> <item row="20" column="0">
<widget class="QLabel" name="labelDataDirs"> <widget class="QLabel" name="labelFriendlyAI">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text"> <property name="text">
<string>Data Directories</string> <string>Friendly AI</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="21" column="2"> <item row="10" column="1" colspan="4">
<widget class="QPushButton" name="changeGameDataDir">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Change</string>
</property>
</widget>
</item>
<item row="22" column="0">
<widget class="QLabel" name="labelUserDataDir">
<property name="text">
<string>User data directory</string>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QLabel" name="labelBuildVersionDesc">
<property name="text">
<string>Build version</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="labelGeneral">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>General</string>
</property>
</widget>
</item>
<item row="12" column="0">
<widget class="QLabel" name="labelShowIntro">
<property name="text">
<string>Show intro</string>
</property>
</widget>
</item>
<item row="25" column="2" colspan="2">
<widget class="QPushButton" name="updatesButton">
<property name="text">
<string>Update now</string>
</property>
</widget>
</item>
<item row="13" column="0">
<widget class="QLabel" name="labelDisplayIndex">
<property name="text">
<string>Display index</string>
</property>
</widget>
</item>
<item row="21" column="1">
<widget class="QLineEdit" name="lineEditGameDir">
<property name="text">
<string notr="true">/usr/share/vcmi</string>
</property>
</widget>
</item>
<item row="17" column="1" colspan="3">
<widget class="QComboBox" name="comboBoxNeutralAI">
<property name="currentText">
<string notr="true">BattleAI</string>
</property>
<item>
<property name="text">
<string notr="true">BattleAI</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">StupidAI</string>
</property>
</item>
</widget>
</item>
<item row="10" column="1" colspan="3">
<widget class="QComboBox" name="comboBoxResolution"/> <widget class="QComboBox" name="comboBoxResolution"/>
</item> </item>
<item row="24" column="0"> <item row="15" column="1" colspan="4">
<widget class="QComboBox" name="comboBoxCursorType">
<item>
<property name="text">
<string>Hardware</string>
</property>
</item>
<item>
<property name="text">
<string>Software</string>
</property>
</item>
</widget>
</item>
<item row="28" column="0">
<widget class="QLabel" name="labelRepositoryDefault">
<property name="text">
<string>Default repository</string>
</property>
</widget>
</item>
<item row="4" column="1" colspan="4">
<widget class="QComboBox" name="comboBoxLanguageBase"/>
</item>
<item row="26" column="0">
<widget class="QLabel" name="labelRepositories"> <widget class="QLabel" name="labelRepositories">
<property name="font"> <property name="font">
<font> <font>
@ -416,68 +594,34 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="18" column="0"> <item row="14" column="0">
<widget class="QLabel" name="labelFriendlyAI"> <widget class="QLabel" name="labelDisplayIndex">
<property name="text"> <property name="text">
<string>Friendly AI</string> <string>Display index</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="25" column="0"> <item row="28" column="1">
<widget class="QLabel" name="labelAutoCheck"> <widget class="QCheckBox" name="checkBoxRepositoryDefault">
<property name="text">
<string>Check on startup</string>
</property>
</widget>
</item>
<item row="12" column="1" colspan="3">
<widget class="QComboBox" name="comboBoxShowIntro">
<property name="currentIndex">
<number>1</number>
</property>
<item>
<property name="text">
<string>Off</string>
</property>
</item>
<item>
<property name="text">
<string>On</string>
</property>
</item>
</widget>
</item>
<item row="22" column="1" colspan="2">
<widget class="QLineEdit" name="lineEditUserDataDir">
<property name="enabled"> <property name="enabled">
<bool>false</bool> <bool>true</bool>
</property> </property>
<property name="text"> <property name="text">
<string notr="true">/home/user/.vcmi</string> <string/>
</property> </property>
<property name="readOnly"> <property name="checked">
<bool>true</bool> <bool>true</bool>
</property> </property>
</widget> </widget>
</item> </item>
<item row="21" column="0"> <item row="29" column="2" colspan="3">
<widget class="QLabel" name="labelGameDir"> <widget class="QLineEdit" name="lineEditRepositoryExtra">
<property name="text"> <property name="text">
<string>Extra data directory</string> <string notr="true"/>
</property> </property>
</widget> </widget>
</item> </item>
<item row="21" column="3"> <item row="27" column="1" colspan="2">
<widget class="QPushButton" name="openGameDataDir">
<property name="text">
<string>Open</string>
</property>
</widget>
</item>
<item row="4" column="1" colspan="3">
<widget class="QComboBox" name="comboBoxLanguageBase"/>
</item>
<item row="25" column="1">
<widget class="QComboBox" name="comboBoxAutoCheck"> <widget class="QComboBox" name="comboBoxAutoCheck">
<property name="currentIndex"> <property name="currentIndex">
<number>1</number> <number>1</number>
@ -494,32 +638,15 @@
</item> </item>
</widget> </widget>
</item> </item>
<item row="4" column="0"> <item row="27" column="3" colspan="2">
<widget class="QLabel" name="labelLanguageBase"> <widget class="QPushButton" name="updatesButton">
<property name="text"> <property name="text">
<string>Heroes III Data Language</string> <string>Update now</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="16" column="1" colspan="3"> <item row="28" column="2" colspan="3">
<widget class="QComboBox" name="comboBoxPlayerAI"> <widget class="QLineEdit" name="lineEditRepositoryDefault">
<property name="currentText">
<string notr="true">VCAI</string>
</property>
<item>
<property name="text">
<string notr="true">VCAI</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">Nullkiller</string>
</property>
</item>
</widget>
</item>
<item row="8" column="1" colspan="3">
<widget class="QLineEdit" name="lineEditBuildVersion">
<property name="text"> <property name="text">
<string notr="true"/> <string notr="true"/>
</property> </property>
@ -528,82 +655,36 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="19" column="0"> <item row="29" column="1">
<widget class="QLabel" name="labelEnemyAI"> <widget class="QCheckBox" name="checkBoxRepositoryExtra">
<property name="text">
<string>Enemy AI</string>
</property>
</widget>
</item>
<item row="26" column="0" colspan="4">
<widget class="QPlainTextEdit" name="plainTextEditRepos">
<property name="lineWrapMode">
<enum>QPlainTextEdit::NoWrap</enum>
</property>
<property name="plainText">
<string notr="true">http://downloads.vcmi.eu/Mods/repository.json</string>
</property>
</widget>
</item>
<item row="14" column="1" colspan="3">
<widget class="QComboBox" name="comboBoxCursorType">
<item>
<property name="text">
<string>Hardware</string>
</property>
</item>
<item>
<property name="text">
<string>Software</string>
</property>
</item>
</widget>
</item>
<item row="15" column="0">
<widget class="QLabel" name="labelArtificialIntelligence">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Artificial Intelligence</string>
</property>
</widget>
</item>
<item row="23" column="0">
<widget class="QLabel" name="labelTempDir">
<property name="text">
<string>Log files directory</string>
</property>
</widget>
</item>
<item row="16" column="0">
<widget class="QLabel" name="labelPlayerAI">
<property name="text">
<string>Adventure Map AI</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="labelTranslation">
<property name="text">
<string>Heroes III Translation</string>
</property>
</widget>
</item>
<item row="5" column="3">
<widget class="QPushButton" name="pushButtonTranslation">
<property name="text"> <property name="text">
<string/> <string/>
</property> </property>
<property name="checked">
<bool>true</bool>
</property>
</widget> </widget>
</item> </item>
<item row="5" column="1" colspan="2"> <item row="23" column="1" colspan="3">
<widget class="QLabel" name="labelTranslationStatus"> <widget class="QLineEdit" name="lineEditGameDir">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text"> <property name="text">
<string/> <string notr="true">/usr/share/vcmi</string>
</property>
</widget>
</item>
<item row="12" column="1" colspan="4">
<widget class="QSpinBox" name="spinBoxInterfaceScaling">
<property name="minimum">
<number>50</number>
</property>
<property name="maximum">
<number>400</number>
</property>
<property name="singleStep">
<number>10</number>
</property> </property>
</widget> </widget>
</item> </item>