Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
+42
@@ -0,0 +1,42 @@
|
||||
#
|
||||
# $Id$
|
||||
# $HeadURL$
|
||||
# $Author$
|
||||
#
|
||||
# CMakeLists.txt fuer ProjectSettingsEditor
|
||||
#
|
||||
|
||||
SET (settingsEditor_SRCS
|
||||
function_keys_edit.cpp
|
||||
function_keys_edit.h
|
||||
main.cpp
|
||||
main_window.cpp
|
||||
main_window.h
|
||||
templates.qrc
|
||||
)
|
||||
|
||||
SET (settingsEditor_UICS
|
||||
function_keys_edit.ui
|
||||
main_window.ui
|
||||
)
|
||||
|
||||
QT5_ADD_RESOURCES(settingsEditor_SRCS templates.qrc)
|
||||
|
||||
NGL_WRAP_UI(settingsEditor_SRCS ${settingsEditor_UICS})
|
||||
NGL_ADD_TOOL_ICON(settingsEditor_SRCS)
|
||||
NGL_ADD_EXECUTABLE(ProjectSettingsEditor TOOLSSV TOOLSWS NO_TRANSLATION ${settingsEditor_SRCS} ${settingsEditor_UICS})
|
||||
NGL_TARGET_LINK_LIBRARIES(ProjectSettingsEditor
|
||||
LtsCommandLineParser
|
||||
LtsPluginLoader
|
||||
StylePluginInterface
|
||||
Qt5::Core
|
||||
Qt5::Widgets
|
||||
NGLLogger
|
||||
nglapplication
|
||||
nglwidgets
|
||||
)
|
||||
|
||||
IF (NOT BUILD_RPM)
|
||||
NGL_INSTALL_TARGET(ProjectSettingsEditor)
|
||||
# NGL_INSTALL(TOOLS FILES log4cxx_projectSettingsEditor.props DESTINATION "bin") < file missing
|
||||
ENDIF()
|
||||
+67
@@ -0,0 +1,67 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
*
|
||||
* Helper for editing FunctionKeys
|
||||
*
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
*/
|
||||
|
||||
#include "function_keys_edit.h"
|
||||
#include "ui_function_keys_edit.h"
|
||||
|
||||
#include <QKeySequence>
|
||||
#include <QTableWidgetItem>
|
||||
|
||||
namespace SettingsEditor
|
||||
{
|
||||
|
||||
FunctionKeysEdit::FunctionKeysEdit(QWidget *parent) :
|
||||
QWidget(parent),
|
||||
m_ui(new Ui::FunctionKeysEdit)
|
||||
{
|
||||
m_ui->setupUi(this);
|
||||
// Initialize table
|
||||
m_ui->twKeysEdit->setRowCount(Qt::Key_F12 - Qt::Key_F5 + 1);
|
||||
m_ui->twKeysEdit->resizeColumnToContents(0);
|
||||
for (int i = Qt::Key_F5; i <= Qt::Key_F12; ++i)
|
||||
{
|
||||
QTableWidgetItem *item = new QTableWidgetItem(QKeySequence(i).toString());
|
||||
item->setFlags(Qt::NoItemFlags);
|
||||
m_ui->twKeysEdit->setItem((i - Qt::Key_F5), 0, item);
|
||||
|
||||
item = new QTableWidgetItem(QString());
|
||||
item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsEditable);
|
||||
m_ui->twKeysEdit->setItem((i - Qt::Key_F5), 1, item);
|
||||
}
|
||||
}
|
||||
|
||||
FunctionKeysEdit::~FunctionKeysEdit()
|
||||
{
|
||||
delete m_ui;
|
||||
}
|
||||
|
||||
void FunctionKeysEdit::setValue(const QVariant &value)
|
||||
{
|
||||
const QVariantMap map = value.toMap();
|
||||
|
||||
for (auto it = map.cbegin(); it != map.cend(); ++it)
|
||||
m_ui->twKeysEdit->item(it.key().toInt() - Qt::Key_F5, 1)->setText(it.value().toString());
|
||||
}
|
||||
|
||||
QVariant FunctionKeysEdit::value() const
|
||||
{
|
||||
QVariantMap map;
|
||||
|
||||
for (int i = Qt::Key_F5; i <= Qt::Key_F12; ++i)
|
||||
{
|
||||
const auto item = m_ui->twKeysEdit->item((i - Qt::Key_F5), 1);
|
||||
if (!item->text().isEmpty())
|
||||
map.insert(QString::number(i), item->text());
|
||||
}
|
||||
|
||||
return map;
|
||||
}
|
||||
|
||||
}
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
*
|
||||
* Helper for editing FunctionKeys
|
||||
*
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <QVariant>
|
||||
#include <QWidget>
|
||||
|
||||
namespace Ui
|
||||
{
|
||||
class FunctionKeysEdit;
|
||||
}
|
||||
|
||||
namespace SettingsEditor
|
||||
{
|
||||
// --------------------------------------------------------------------------------
|
||||
// | Class FunctionKeysEdit |
|
||||
// --------------------------------------------------------------------------------
|
||||
class FunctionKeysEdit : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit FunctionKeysEdit(QWidget *parent = nullptr);
|
||||
~FunctionKeysEdit();
|
||||
|
||||
void setValue(const QVariant &value);
|
||||
QVariant value() const;
|
||||
|
||||
private:
|
||||
Ui::FunctionKeysEdit *m_ui;
|
||||
};
|
||||
|
||||
}
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>FunctionKeysEdit</class>
|
||||
<widget class="QWidget" name="FunctionKeysEdit">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>754</width>
|
||||
<height>440</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item row="0" column="0">
|
||||
<widget class="QTableWidget" name="twKeysEdit">
|
||||
<property name="columnCount">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<attribute name="horizontalHeaderStretchLastSection">
|
||||
<bool>true</bool>
|
||||
</attribute>
|
||||
<attribute name="verticalHeaderVisible">
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>Key</string>
|
||||
</property>
|
||||
</column>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>Function Identifier</string>
|
||||
</property>
|
||||
</column>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
Executable
+46
@@ -0,0 +1,46 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* Settings Editor -> creating and editing existing default settings
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
*/
|
||||
|
||||
#include "main_window.h"
|
||||
|
||||
#include <LtsCommandLineParser/LtsCommandLineParser.h>
|
||||
#include <NGLLogger/INGLLogger.h>
|
||||
#include <nglapplication/nglapplication.h>
|
||||
#include <LtsPluginManager/lts_plugin_loader.h>
|
||||
#include <PluginInterfaces/style_plugin_interface.h>
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
NGLApplication app(argc, argv);
|
||||
app.createLogger("SettingsEditor", "log4cxx_settingsEditor.props");
|
||||
NGL::INGLLogger &logger = app.baseLogger();
|
||||
QCoreApplication::setApplicationName(QLatin1String("Settings Editor"));
|
||||
QCoreApplication::setOrganizationName(QLatin1String("RME"));
|
||||
|
||||
LtsPluginManager::LtsPluginLoader::getInstance()->loadPlugins(LtsPluginManager::PluginType::STYLE,
|
||||
nullptr,
|
||||
{QStringLiteral("rde.light")}); // load style plugin
|
||||
|
||||
int retval = 0;
|
||||
STARTUP_LOG(logger);
|
||||
{
|
||||
QScopedPointer<SettingsEditor::MainWindow> mw(new SettingsEditor::MainWindow);
|
||||
|
||||
mw->setWindowTitle(QLatin1String("ProjectSettingsEditor"));
|
||||
|
||||
mw->show();
|
||||
|
||||
app.setQuitOnLastWindowClosed(true);
|
||||
|
||||
retval = app.exec();
|
||||
|
||||
SHUTDOWN_LOG(logger);
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
+404
@@ -0,0 +1,404 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
*
|
||||
* MainWindow for settings editor
|
||||
*
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
*/
|
||||
|
||||
#include "main_window.h"
|
||||
#include "ui_main_window.h"
|
||||
|
||||
#include <NGLLogger/INGLLogger.h>
|
||||
|
||||
#include <QAction>
|
||||
#include <QFile>
|
||||
#include <QFileDialog>
|
||||
#include <QJsonArray>
|
||||
#include <QJsonDocument>
|
||||
#include <QJsonObject>
|
||||
#include <QJsonValue>
|
||||
#include <QMenu>
|
||||
#include <QMessageBox>
|
||||
|
||||
namespace SettingsEditor
|
||||
{
|
||||
|
||||
MainWindow::MainWindow(QWidget *parent)
|
||||
: NGLMainWindow(parent)
|
||||
, m_ui(new Ui::MainWindow)
|
||||
{
|
||||
m_ui->setupUi(this);
|
||||
|
||||
enableTextEdit(false);
|
||||
|
||||
QMenu *fileMenu = m_menu[QLatin1String("File")];
|
||||
fileMenu->addSeparator();
|
||||
|
||||
QAction *action;
|
||||
action = new QAction(tr("Load Settings"), this);
|
||||
action->setShortcut(QKeySequence(tr("Ctrl+l")));
|
||||
connect(action, &QAction::triggered, this, &MainWindow::onLoadFromExport);
|
||||
fileMenu->addAction(action);
|
||||
|
||||
action = new QAction(tr("Save Settings"), this);
|
||||
action->setShortcut(QKeySequence(tr("Ctrl+s")));
|
||||
connect(action, &QAction::triggered, this, &MainWindow::onSaveSettings);
|
||||
fileMenu->addAction(action);
|
||||
|
||||
action = new QAction(tr("Export Settings"), this);
|
||||
action->setShortcut(QKeySequence(tr("Ctrl+e")));
|
||||
connect(action, &QAction::triggered, this, &MainWindow::onExportSettings);
|
||||
fileMenu->addAction(action);
|
||||
|
||||
action = new QAction(tr("Load Default"), this);
|
||||
action->setShortcut(QKeySequence(tr("Ctrl+d")));
|
||||
connect(action, &QAction::triggered, this, &MainWindow::onLoadPresetFromTemplate);
|
||||
fileMenu->addAction(action);
|
||||
|
||||
onLoadPresetFromTemplate();
|
||||
|
||||
m_ui->twPath->expandAll();
|
||||
|
||||
connect(m_ui->twPath, &QTreeWidget::currentItemChanged, this, &MainWindow::oncurrentItemChanged);
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow()
|
||||
{
|
||||
delete m_ui;
|
||||
}
|
||||
|
||||
void MainWindow::oncurrentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous)
|
||||
{
|
||||
if (previous)
|
||||
{
|
||||
if (previous->parent())
|
||||
{
|
||||
QPair<SettingType, QVariant> value = m_data.value(craftKey(previous->parent()->text(0), previous->text(0)));
|
||||
|
||||
switch (value.first)
|
||||
{
|
||||
case StringList:
|
||||
value.second = QVariant(m_ui->teValueEdit->toPlainText().split(QRegularExpression{QStringLiteral(R"-((\r\n?|\n))-")}));
|
||||
break;
|
||||
case FunctionKeys:
|
||||
value.second = QVariant(m_ui->functionKeysEdit->value());
|
||||
break;
|
||||
case Json:
|
||||
case String:
|
||||
value.second = QVariant(m_ui->teValueEdit->toPlainText());
|
||||
break;
|
||||
case Boolean:
|
||||
value.second = m_ui->cbBoolValue->isChecked();
|
||||
break;
|
||||
}
|
||||
const QString key(craftKey(previous->parent()->text(0), previous->text(0)));
|
||||
if (m_data[key] != value)
|
||||
{
|
||||
setWindowModified(true);
|
||||
m_data[key] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (current)
|
||||
{
|
||||
if (current->parent())
|
||||
{
|
||||
const auto it = m_data.constFind(craftKey(current->parent()->text(0), current->text(0)));
|
||||
const QVariant &val = it.value().second;
|
||||
switch (it.value().first)
|
||||
{
|
||||
case StringList:
|
||||
enableTextEdit();
|
||||
m_ui->teValueEdit->setPlainText(val.toStringList().join(QLatin1Char('\n')));
|
||||
break;
|
||||
case Json:
|
||||
enableTextEdit();
|
||||
m_ui->teValueEdit->setPlainText(val.toString());
|
||||
break;
|
||||
case String:
|
||||
enableTextEdit();
|
||||
m_ui->teValueEdit->setPlainText(val.toString());
|
||||
break;
|
||||
case FunctionKeys:
|
||||
enableFunctionKeyEdit();
|
||||
m_ui->functionKeysEdit->setValue(val);
|
||||
break;
|
||||
case Boolean:
|
||||
enableBoolEdit();
|
||||
m_ui->cbBoolValue->setChecked(val.toBool());
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
enableTextEdit(false);
|
||||
}
|
||||
else
|
||||
enableTextEdit(false);
|
||||
}
|
||||
|
||||
void MainWindow::onSaveSettings()
|
||||
{
|
||||
if (saveSettings(m_settingsFileName))
|
||||
setWindowModified(false);
|
||||
}
|
||||
|
||||
void MainWindow::onExportSettings()
|
||||
{
|
||||
// save current data in edit field
|
||||
oncurrentItemChanged(m_ui->twPath->currentItem(), m_ui->twPath->currentItem());
|
||||
|
||||
const QString filename = QFileDialog::getSaveFileName(this,
|
||||
tr("Save File"),
|
||||
QStringLiteral("project_settings.json"),
|
||||
tr("Project Settings files (*.json)"));
|
||||
saveSettings(filename);
|
||||
}
|
||||
|
||||
bool MainWindow::saveSettings(const QString &filename)
|
||||
{
|
||||
if (filename.isEmpty())
|
||||
return false;
|
||||
|
||||
QFile f(filename);
|
||||
if (!f.open(QIODevice::WriteOnly))
|
||||
{
|
||||
QMessageBox::warning(this, tr("Error writing file"),
|
||||
tr("Could not write file '%1', error: %2").arg(filename, f.errorString()));
|
||||
return false;
|
||||
}
|
||||
|
||||
QJsonObject obj;
|
||||
for (int t = 0; t < m_ui->twPath->topLevelItemCount(); ++t)
|
||||
{
|
||||
QJsonObject tlObj;
|
||||
const QTreeWidgetItem *tlItem = m_ui->twPath->topLevelItem(t);
|
||||
for (int g = 0; g < tlItem->childCount(); ++g)
|
||||
{
|
||||
QJsonObject groupObj;
|
||||
const QTreeWidgetItem *groupItem = tlItem->child(g);
|
||||
const QString groupName = groupItem->text(0);
|
||||
for (int i = 0; i < groupItem->childCount(); ++i)
|
||||
{
|
||||
const QTreeWidgetItem *item = groupItem->child(i);
|
||||
const QString itemName = item->text(0);
|
||||
const QString key = craftKey(groupName, itemName);
|
||||
const QString type = typeToString(m_data[craftKey(groupName, itemName)].first);
|
||||
QJsonValue val;
|
||||
switch (m_data[craftKey(groupName, itemName)].first)
|
||||
{
|
||||
case String:
|
||||
val = m_data[key].second.toString();
|
||||
break;
|
||||
case FunctionKeys:
|
||||
val = m_data[key].second.toString();
|
||||
break;
|
||||
case Json:
|
||||
val = QJsonDocument::fromJson(m_data[key].second.toByteArray()).object();
|
||||
break;
|
||||
case StringList:
|
||||
{
|
||||
QJsonArray arr;
|
||||
const QStringList sl = m_data[key].second.toStringList();
|
||||
for (const QString &s : sl)
|
||||
arr.append(s);
|
||||
val = arr;
|
||||
break;
|
||||
}
|
||||
case Boolean:
|
||||
val = m_data[key].second.toBool();
|
||||
break;
|
||||
}
|
||||
groupObj[itemName] = QJsonObject{{QStringLiteral("Default"), val}, {QStringLiteral("Type"), type}};
|
||||
}
|
||||
tlObj[groupName] = groupObj;
|
||||
}
|
||||
obj[tlItem->text(0)] = tlObj;
|
||||
}
|
||||
QJsonDocument doc(obj);
|
||||
f.write(doc.toJson());
|
||||
f.close();
|
||||
return true;
|
||||
}
|
||||
|
||||
void MainWindow::onLoadFromExport()
|
||||
{
|
||||
const QString filename = QFileDialog::getOpenFileName(this,
|
||||
tr("Load File"),
|
||||
QString(),
|
||||
tr("Project Settings files (*.json)"));
|
||||
|
||||
if (filename.isEmpty())
|
||||
return;
|
||||
|
||||
QFile input(filename);
|
||||
if (!input.open(QIODevice::ReadOnly))
|
||||
return;
|
||||
|
||||
if (loadSettings(filename))
|
||||
{
|
||||
m_settingsFileName = filename;
|
||||
setWindowTitle(filename + QStringLiteral("[*]"));
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::onLoadPresetFromTemplate()
|
||||
{
|
||||
loadSettings(QStringLiteral(":/project_settings.json"));
|
||||
}
|
||||
|
||||
bool MainWindow::loadSettings(const QString &filename)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << "Loading settings from " << filename;
|
||||
QFile f(filename);
|
||||
if (!f.open(QIODevice::ReadOnly))
|
||||
{
|
||||
QMessageBox::warning(this, tr("Error reading file"),
|
||||
tr("Could not read file '%1', error: %2").arg(filename, f.errorString()));
|
||||
return false;
|
||||
}
|
||||
|
||||
bool firstLoad = m_data.isEmpty();
|
||||
|
||||
QJsonParseError jErr;
|
||||
const QByteArray ba = f.readAll();
|
||||
const QJsonObject settings = QJsonDocument::fromJson(ba, &jErr).object();
|
||||
if (jErr.error != QJsonParseError::NoError)
|
||||
{
|
||||
if (jErr.offset >= 0)
|
||||
{
|
||||
QByteArray code = ba.mid(jErr.offset - 40, 80);
|
||||
QMessageBox::warning(this, tr("Json parser error"),
|
||||
tr("%1 (fragment: '%2')").arg(jErr.errorString(), QString::fromUtf8(code)));
|
||||
}
|
||||
else
|
||||
{
|
||||
QMessageBox::warning(this, tr("Json parser error"),
|
||||
jErr.errorString());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
const QStringList &settingsKeys = settings.keys();
|
||||
|
||||
for (const auto &setting : settingsKeys)
|
||||
{
|
||||
QTreeWidgetItem *settingTreeItem = firstLoad ? new QTreeWidgetItem(m_ui->twPath, QStringList(setting)) : nullptr; // only build tree on first load
|
||||
|
||||
const QJsonObject groups = settings.value(setting).toObject();
|
||||
const QStringList &groupKeys = groups.keys();
|
||||
for (const auto &group : groupKeys)
|
||||
{
|
||||
QTreeWidgetItem *groupTreeItem = firstLoad ? new QTreeWidgetItem(settingTreeItem, QStringList(group)) : nullptr; // only build tree on first load
|
||||
const QStringList &itemKeys = groups[group].toObject().keys();
|
||||
for (const auto &key : itemKeys)
|
||||
{
|
||||
if (groupTreeItem)
|
||||
groupTreeItem->addChild(new QTreeWidgetItem(QStringList(key)));
|
||||
|
||||
const QJsonObject obj = groups[group].toObject()[key].toObject();
|
||||
const auto strType = obj[QStringLiteral("Type")].toString();
|
||||
const auto type = stringToType(strType);
|
||||
const QJsonValue jVal =obj[QStringLiteral("Default")];
|
||||
QVariant val;
|
||||
switch (type)
|
||||
{
|
||||
case Json:
|
||||
val = QJsonDocument(jVal.toObject()).toJson();
|
||||
break;
|
||||
case StringList:
|
||||
{
|
||||
const QJsonArray arr = jVal.toArray();
|
||||
QStringList sl;
|
||||
sl.reserve(arr.size());
|
||||
for (const auto &ele : arr)
|
||||
sl.push_back(ele.toString());
|
||||
val = sl;
|
||||
break;
|
||||
}
|
||||
case FunctionKeys:
|
||||
val = jVal.toVariant();
|
||||
break;
|
||||
case String:
|
||||
val = jVal.toString();
|
||||
break;
|
||||
case Boolean:
|
||||
val = jVal.toBool();
|
||||
break;
|
||||
}
|
||||
m_data.insert(craftKey(group, key), qMakePair(type, val));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// load new data into edit field
|
||||
oncurrentItemChanged(m_ui->twPath->currentItem(), nullptr); // nullptr -> prevent saving existing data
|
||||
return true;
|
||||
}
|
||||
|
||||
void MainWindow::enableTextEdit(bool enabled)
|
||||
{
|
||||
m_ui->stackedWidget->setCurrentIndex(0);
|
||||
m_ui->teValueEdit->setEnabled(enabled);
|
||||
}
|
||||
|
||||
void MainWindow::enableFunctionKeyEdit()
|
||||
{
|
||||
m_ui->stackedWidget->setCurrentIndex(2);
|
||||
}
|
||||
|
||||
void MainWindow::enableBoolEdit()
|
||||
{
|
||||
m_ui->stackedWidget->setCurrentIndex(1);
|
||||
}
|
||||
|
||||
void MainWindow::setVersionView()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
QString MainWindow::craftKey(const QString &group, const QString &key)
|
||||
{
|
||||
return group + QLatin1Char('.') + key;
|
||||
}
|
||||
|
||||
QString MainWindow::typeToString(SettingType t)
|
||||
{
|
||||
switch (t)
|
||||
{
|
||||
case String:
|
||||
return QStringLiteral("String");
|
||||
case StringList:
|
||||
return QStringLiteral("StringList");
|
||||
case Json:
|
||||
return QStringLiteral("Json");
|
||||
case FunctionKeys:
|
||||
return QStringLiteral("FunctionKeys");
|
||||
case Boolean:
|
||||
return QStringLiteral("Boolean");
|
||||
}
|
||||
Q_ASSERT(false);
|
||||
return QStringLiteral("Unknown (%1)").arg(t);
|
||||
}
|
||||
|
||||
MainWindow::SettingType MainWindow::stringToType(const QString &s)
|
||||
{
|
||||
if (s == typeToString(String))
|
||||
return String;
|
||||
if (s == typeToString(StringList))
|
||||
return StringList;
|
||||
if (s == typeToString(Json))
|
||||
return Json;
|
||||
if (s == typeToString(FunctionKeys))
|
||||
return FunctionKeys;
|
||||
if (s == typeToString(Boolean))
|
||||
return Boolean;
|
||||
Q_ASSERT(false);
|
||||
return String;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
+71
@@ -0,0 +1,71 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
*
|
||||
* MainWindow for settings editor
|
||||
*
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <nglwidgets/nglmainwindow.h>
|
||||
|
||||
#include <QMap>
|
||||
#include <QPair>
|
||||
#include <QTreeWidgetItem>
|
||||
#include <QString>
|
||||
#include <QVariant>
|
||||
|
||||
namespace Ui
|
||||
{
|
||||
class MainWindow;
|
||||
}
|
||||
|
||||
namespace SettingsEditor
|
||||
{
|
||||
// --------------------------------------------------------------------------------
|
||||
// | Class MainWindow |
|
||||
// --------------------------------------------------------------------------------
|
||||
class MainWindow : public NGLMainWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit MainWindow(QWidget *parent = nullptr);
|
||||
~MainWindow();
|
||||
|
||||
private slots:
|
||||
void oncurrentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous);
|
||||
void onSaveSettings();
|
||||
void onExportSettings();
|
||||
void onLoadFromExport();
|
||||
void onLoadPresetFromTemplate();
|
||||
|
||||
private:
|
||||
bool saveSettings(const QString &filename);
|
||||
bool loadSettings(const QString &filename);
|
||||
enum SettingType
|
||||
{
|
||||
String = 1,
|
||||
StringList = 2,
|
||||
Json = 3,
|
||||
FunctionKeys = 4,
|
||||
Boolean = 5,
|
||||
};
|
||||
|
||||
void enableTextEdit(bool enabled = true);
|
||||
void enableFunctionKeyEdit();
|
||||
void enableBoolEdit();
|
||||
void setVersionView();
|
||||
static QString craftKey(const QString &group, const QString &key);
|
||||
static QString typeToString(SettingType t);
|
||||
static SettingType stringToType(const QString &s);
|
||||
|
||||
QMap<QString, QPair<SettingType, QVariant>> m_data;
|
||||
QString m_settingsFileName;
|
||||
|
||||
Ui::MainWindow *m_ui;
|
||||
};
|
||||
}
|
||||
+174
@@ -0,0 +1,174 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>MainWindow</class>
|
||||
<widget class="QMainWindow" name="MainWindow">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>800</width>
|
||||
<height>500</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string notr="true">MainWindow</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="centralWidget">
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QSplitter" name="splitter">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<widget class="QTreeWidget" name="twPath">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>100</width>
|
||||
<height>100</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="columnCount">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<attribute name="headerVisible">
|
||||
<bool>true</bool>
|
||||
</attribute>
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>Path</string>
|
||||
</property>
|
||||
</column>
|
||||
</widget>
|
||||
<widget class="QStackedWidget" name="stackedWidget">
|
||||
<property name="currentIndex">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="pgTextEdit">
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item row="0" column="0">
|
||||
<widget class="QTextEdit" name="teValueEdit"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="pgBoolean">
|
||||
<layout class="QGridLayout" name="gridLayout_3">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item row="0" column="0">
|
||||
<widget class="QCheckBox" name="cbBoolValue">
|
||||
<property name="text">
|
||||
<string>Active</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="pgFunctionKeys">
|
||||
<layout class="QGridLayout" name="gridLayout_2">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item row="0" column="0">
|
||||
<widget class="SettingsEditor::FunctionKeysEdit" name="functionKeysEdit" native="true">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>SettingsEditor::FunctionKeysEdit</class>
|
||||
<extends>QWidget</extends>
|
||||
<header>function_keys_edit.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<tabstops>
|
||||
<tabstop>twPath</tabstop>
|
||||
</tabstops>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
+741
@@ -0,0 +1,741 @@
|
||||
{
|
||||
"DefaultOperatorSettings": {
|
||||
"AesFilter": {
|
||||
"Context": {
|
||||
"Default": {
|
||||
"1": {
|
||||
"activated": true,
|
||||
"afterglow": 10000,
|
||||
"created": true,
|
||||
"limitOnChargeTypes": false,
|
||||
"limitOnParties": false,
|
||||
"prepared": true,
|
||||
"showDetails": true
|
||||
},
|
||||
"2": {
|
||||
"activated": true,
|
||||
"afterglow": 10000,
|
||||
"created": true,
|
||||
"limitOnChargeTypes": false,
|
||||
"limitOnParties": false,
|
||||
"prepared": true,
|
||||
"showDetails": true
|
||||
},
|
||||
"3": {
|
||||
"activated": true,
|
||||
"afterglow": 10000,
|
||||
"created": true,
|
||||
"limitOnChargeTypes": false,
|
||||
"limitOnParties": false,
|
||||
"prepared": true,
|
||||
"showDetails": true
|
||||
},
|
||||
"4": {
|
||||
"activated": true,
|
||||
"afterglow": 10000,
|
||||
"created": true,
|
||||
"limitOnChargeTypes": false,
|
||||
"limitOnParties": false,
|
||||
"prepared": true,
|
||||
"showDetails": true
|
||||
},
|
||||
"5": {
|
||||
"activated": true,
|
||||
"afterglow": 10000,
|
||||
"created": true,
|
||||
"limitOnChargeTypes": false,
|
||||
"limitOnParties": false,
|
||||
"prepared": true,
|
||||
"showDetails": true
|
||||
},
|
||||
"6": {
|
||||
"activated": true,
|
||||
"afterglow": 10000,
|
||||
"created": true,
|
||||
"limitOnChargeTypes": false,
|
||||
"limitOnParties": false,
|
||||
"prepared": true,
|
||||
"showDetails": true
|
||||
},
|
||||
"7": {
|
||||
"activated": true,
|
||||
"afterglow": 10000,
|
||||
"created": true,
|
||||
"limitOnChargeTypes": false,
|
||||
"limitOnParties": false,
|
||||
"prepared": true,
|
||||
"showDetails": true
|
||||
},
|
||||
"8": {
|
||||
"activated": true,
|
||||
"afterglow": 10000,
|
||||
"created": true,
|
||||
"limitOnChargeTypes": false,
|
||||
"limitOnParties": false,
|
||||
"prepared": true,
|
||||
"showDetails": true
|
||||
}
|
||||
},
|
||||
"Type": "Json"
|
||||
}
|
||||
},
|
||||
"FunctionBars": {
|
||||
"Functions": {
|
||||
"Default": [
|
||||
],
|
||||
"Type": "StringList"
|
||||
}
|
||||
},
|
||||
"FunctionKeys": {
|
||||
"Functions": {
|
||||
"Default": "",
|
||||
"Type": "FunctionKeys"
|
||||
}
|
||||
},
|
||||
"SymbolFilter": {
|
||||
"Context": {
|
||||
"Default": {
|
||||
"SymbolTeamAppearances": [
|
||||
{
|
||||
"id": 0,
|
||||
"isVisible": true,
|
||||
"showDesignator": true,
|
||||
"showTacticalIdentifier": true
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"isVisible": true,
|
||||
"showDesignator": true,
|
||||
"showTacticalIdentifier": true
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"isVisible": true,
|
||||
"showDesignator": true,
|
||||
"showTacticalIdentifier": true
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"isVisible": true,
|
||||
"showDesignator": true,
|
||||
"showTacticalIdentifier": true
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"isVisible": true,
|
||||
"showDesignator": true,
|
||||
"showTacticalIdentifier": true
|
||||
}
|
||||
],
|
||||
"bitErrorVisibility": 0,
|
||||
"colExpCollapsed": [
|
||||
],
|
||||
"colExpHidden": [
|
||||
],
|
||||
"hiddenTypeFilter": [
|
||||
],
|
||||
"hitLineDisplayLength": 10000,
|
||||
"manipulationVisibility": 0,
|
||||
"movementTrackLengthMSec": 600000,
|
||||
"positionOutOfDateVisibility": 0,
|
||||
"simulatedPositionVisibility": 3,
|
||||
"symbolFireEventFlashing": 10000,
|
||||
"symbolScale": 1,
|
||||
"symbolTransparency": 0,
|
||||
"unitSymbolPosition": 0
|
||||
},
|
||||
"Type": "Json"
|
||||
}
|
||||
}
|
||||
},
|
||||
"ProjectSettings": {
|
||||
"Functionalities": {
|
||||
"IdentifierList": {
|
||||
"Default": [
|
||||
"ParticipantStatus:ProtectionLevel",
|
||||
"ParticipantStatus:PersonalProtection",
|
||||
"ParticipantStatus:CheatingCheck",
|
||||
"ParticipantStatus:HgrSearchMode",
|
||||
"Exercises:CanBeLinked",
|
||||
"Exercises:HasHlaInterface"
|
||||
],
|
||||
"Type": "StringList"
|
||||
}
|
||||
},
|
||||
"Office": {
|
||||
"Type": {
|
||||
"Default": "LibreOffice",
|
||||
"Type": "String"
|
||||
}
|
||||
},
|
||||
"MgrsSquaresOffsets": {
|
||||
"xOffset": {
|
||||
"Default": "0",
|
||||
"Type": "String"
|
||||
},
|
||||
"yOffset": {
|
||||
"Default": "0",
|
||||
"Type": "String"
|
||||
}
|
||||
},
|
||||
"SituationMap": {
|
||||
"SettingsJson": {
|
||||
"Default": {
|
||||
},
|
||||
"Type": "Json"
|
||||
},
|
||||
"enableNavigateBelowGround": {
|
||||
"Default": false,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableBaseSurfaceOpacity": {
|
||||
"Default": false,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableDamageVisualizationAtBuilding2Map": {
|
||||
"Default": false,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableAssetsInResourceMode": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableTrainingAreaBorder": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableEtsSymbols": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enable3dMap": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
}
|
||||
},
|
||||
"aes": {
|
||||
"enableAirSupport": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableBiologicalContamination": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableChemicalContamination": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableBorderlines": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableChargeAdministration": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableRocket": {
|
||||
"Default": false,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableDangerAreas": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableAreaExplosionArtillery": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableAreaExplosionMortar": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableSingleExplosionArtillery": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableCentralExplosionArtillery": {
|
||||
"Default": false,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableSingleExplosionMortar": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableExplosionCluster": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableFunctionalAreas": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableMineAreas": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableMineAreasResetDusMines": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableDusSingleMine": {
|
||||
"Default": false,
|
||||
"Type": "Boolean",
|
||||
"Comment": "DusEinzelMinenSimulator, AHTC"
|
||||
},
|
||||
"enableMineCorridors": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableMineSingleVirtual": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableNuclearContaminations": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableTechnicalAreas": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableTechnicalAreasSound": {
|
||||
"Default": false,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableGuezDusMines": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableGasPipes": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableChargeEffect": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
}
|
||||
},
|
||||
"alm": {
|
||||
"enableEmergencyCalls": {
|
||||
"Default": false,
|
||||
"Type": "Boolean"
|
||||
}
|
||||
},
|
||||
"avm": {
|
||||
"recording": {
|
||||
"Default": false,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableAudioVideoManagement": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableVideoImport": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableAudioVideoPlaybacks": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableCombatNetRadioEdit": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableCombatNetRadioFrequencyPlanningEdit": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableElectronicWarfareMeasures": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableMobileVideoSystem": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"mvsRDesktopIP": {
|
||||
"Default": "",
|
||||
"Type": "String"
|
||||
},
|
||||
"mvsUser": {
|
||||
"Default": "",
|
||||
"Type": "String"
|
||||
},
|
||||
"mvsPassword": {
|
||||
"Default": "",
|
||||
"Type": "String"
|
||||
},
|
||||
"hfRanges": {
|
||||
"Default": { "Ranges" : [
|
||||
{ "min" : 2000000, "max" : 29975000 }
|
||||
] },
|
||||
"Type": "Json"
|
||||
},
|
||||
"uhfRanges": {
|
||||
"Default": { "Ranges" : [
|
||||
{ "min" : 225000, "max" : 249975 },
|
||||
{ "min" : 300000, "max" : 399975 }
|
||||
] },
|
||||
"Type": "Json"
|
||||
}
|
||||
},
|
||||
"bld": {
|
||||
"enableGuiDestroyRooms": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"useExactPositioning": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"egcuUsesOnlyOneRelay": {
|
||||
"Default": false,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableSoundZones": {
|
||||
"Default": false,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableFloorParticipantCount": {
|
||||
"Default": false,
|
||||
"Type": "Boolean"
|
||||
}
|
||||
},
|
||||
"cod": {
|
||||
"enableCodificationTables": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableShowCodificationTableBLUFOR": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableShowCodificationTableOPFOR": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
}
|
||||
},
|
||||
"dat": {
|
||||
"enableDatabaseAdministrationTools": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
}
|
||||
},
|
||||
"esm": {
|
||||
"enableEffectShowManagement": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
}
|
||||
},
|
||||
"evl": {
|
||||
"enableEvaluationsElements": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableEvaluations": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
}
|
||||
},
|
||||
"exm": {
|
||||
"enableEditPhases": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableExerciseTerminatedToStopped": {
|
||||
"Default": false,
|
||||
"Type": "Boolean"
|
||||
}
|
||||
},
|
||||
"flt": {
|
||||
"enableAES_FilterEdit": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableBuildingComponentFilterEdit": {
|
||||
"Default": false,
|
||||
"Type": "Boolean"
|
||||
}
|
||||
},
|
||||
"gim": {
|
||||
"enableIED_Pairing": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
}
|
||||
},
|
||||
"gna": {
|
||||
"enableGuezNasat": {
|
||||
"Default": false,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"midasRDesktopIP": {
|
||||
"Default": "",
|
||||
"Type": "String"
|
||||
},
|
||||
"midasUser": {
|
||||
"Default": "",
|
||||
"Type": "String"
|
||||
},
|
||||
"midasPassword": {
|
||||
"Default": "",
|
||||
"Type": "String"
|
||||
}
|
||||
},
|
||||
"ism": {
|
||||
"enableResPlanDialog": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableOverviewDialog": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableAssetListDialog": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableMpListDialog": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableBuildingListDialog": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableMpMapSelectionDialog": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableApproachingPointsDialog": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableOverviewMountedPointDialog": {
|
||||
"Default": false,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableSetRecordingDialog": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
}
|
||||
},
|
||||
"mdm": {
|
||||
"enableShowMeteoDataStations": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableEditStaticMeteoData": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
}
|
||||
},
|
||||
"msg": {
|
||||
"enableMessages": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
}
|
||||
},
|
||||
"obd": {
|
||||
"ocPdfDownloadFolderId": {
|
||||
"Default": "25",
|
||||
"Type": "String"
|
||||
}
|
||||
},
|
||||
"opm": {
|
||||
"enableShutdownWorkstations": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
}
|
||||
},
|
||||
"ore": {
|
||||
"enableOnlineReports": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
}
|
||||
},
|
||||
"pdm": {
|
||||
"EquipmentLanguages": {
|
||||
"Default": "1,2,3,4,5,6",
|
||||
"Type": "String"
|
||||
},
|
||||
"SystemLanguages": {
|
||||
"Default": "de_DE, en_GB, en_US",
|
||||
"Type": "String"
|
||||
}
|
||||
},
|
||||
"ppm": {
|
||||
"enableSupportParticipantsOrganise": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableSupportParticipantsEdit": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableMSDL_ImExport": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableHlaForceIdentifier": {
|
||||
"Default": false,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"hasVulnerabilityStateLightDamage": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"hasVulnerabilityStateMediumDamage": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"hasVulnerabilityStateHeavyDamage": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"hasVulnerabilityStateMobilityKill": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"hasVulnerabilityStateVisibleMobilityKill": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"hasVulnerabilityStateWeaponSystemDamage": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"hasVulnerabilityStateVisibleWeaponSystemDamage": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"hasVulnerabilityStateTemporarySeverance": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
}
|
||||
},
|
||||
"pws": {
|
||||
"enableProjection": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
}
|
||||
},
|
||||
"smo": {
|
||||
"nagios": {
|
||||
"Default": "http://tgvmmon02.guez.live/GUEZ/check_mk/login.py?_origtarget=/GUEZ/check_mk/index.py&_username=ctc&_password=ctc11de&_login=1",
|
||||
"Type": "String"
|
||||
},
|
||||
"sps": {
|
||||
"Default": "http://ecvmssm01.guez.live/startseite.html",
|
||||
"Type": "String"
|
||||
},
|
||||
"enableSps": {
|
||||
"Default": false,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableEquipmentErrorRegistration": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableHandgrenadeAndMineSearchShow": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableEGCUMonitor": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableFaultMessage": {
|
||||
"Default": false,
|
||||
"Type": "Boolean"
|
||||
}
|
||||
},
|
||||
"rep": {
|
||||
"enableReports": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableAddUnitPowerReport": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableAddParticipantDistanceReport": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableAddNBCReport": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableAddFiringsReport": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableAddMineAreaReport": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableAddChargeResupplyReport": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableAddChargeAdministrationReport": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableAddVehicleRepairReport": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableAddAirSupportReport": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableAddBuildingDamageReport": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableAddExplosiveDeviceReport": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableAddDecontaminationReport": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableAddSanitationMaterialReport": {
|
||||
"Default": false,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableAddTreatmentReport": {
|
||||
"Default": false,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableAddMedevacNineLinerReport": {
|
||||
"Default": false,
|
||||
"Type": "Boolean"
|
||||
}
|
||||
},
|
||||
"tln": {
|
||||
"showEffectSimulationEvents": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"showEnterLeaveEvents": {
|
||||
"Default": true,
|
||||
"Type": "Boolean"
|
||||
},
|
||||
"enableListEvents": {
|
||||
"Default": false,
|
||||
"Type": "Boolean"
|
||||
}
|
||||
},
|
||||
"pre": {
|
||||
"disableTopics": {
|
||||
"Default": [],
|
||||
"Type": "StringList"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>project_settings.json</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
Reference in new issue
Block a user