Implemented settings dialog.
This commit is contained in:
parent
8926b24226
commit
a25bedd770
@ -104,7 +104,6 @@ data/appsettings.cpp
|
||||
data/inifile.cpp
|
||||
data/instancebase.cpp
|
||||
data/instancemodel.cpp
|
||||
data/settingsbase.cpp
|
||||
data/stdinstance.cpp
|
||||
|
||||
gui/mainwindow.cpp
|
||||
@ -126,9 +125,9 @@ data/appsettings.h
|
||||
data/inifile.h
|
||||
data/instancebase.h
|
||||
data/instancemodel.h
|
||||
data/settingsbase.h
|
||||
data/stdinstance.h
|
||||
|
||||
util/apputils.h
|
||||
util/pathutils.h
|
||||
|
||||
multimc_pragma.h
|
||||
|
@ -21,8 +21,7 @@ SOURCES += main.cpp\
|
||||
data/inifile.cpp \
|
||||
gui/settingsdialog.cpp \
|
||||
gui/modeditwindow.cpp \
|
||||
data/appsettings.cpp \
|
||||
data/settingsbase.cpp
|
||||
util/appsettings.cpp
|
||||
|
||||
HEADERS += gui/mainwindow.h \
|
||||
data/instancebase.h \
|
||||
@ -32,10 +31,8 @@ HEADERS += gui/mainwindow.h \
|
||||
data/inifile.h \
|
||||
gui/settingsdialog.h \
|
||||
gui/modeditwindow.h \
|
||||
data/appsettings.h \
|
||||
data/settingsbase.h \
|
||||
util/settingsmacros.h \
|
||||
util/settingsmacrosundef.h
|
||||
util/apputils.h \
|
||||
util/appsettings.h
|
||||
|
||||
FORMS += gui/mainwindow.ui \
|
||||
gui/settingsdialog.ui \
|
||||
|
@ -15,8 +15,26 @@
|
||||
|
||||
#include "appsettings.h"
|
||||
|
||||
AppSettings::AppSettings(QString fileName) :
|
||||
SettingsBase(fileName)
|
||||
AppSettings* settings;
|
||||
|
||||
SettingsBase::SettingsBase(QObject *parent) :
|
||||
QObject(parent)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
AppSettings::AppSettings(QObject *parent) :
|
||||
SettingsBase(parent)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
QVariant AppSettings::getValue(const QString& name, QVariant defVal) const
|
||||
{
|
||||
return config.value(name, defVal);
|
||||
}
|
||||
|
||||
void AppSettings::setValue(const QString& name, QVariant val)
|
||||
{
|
||||
config.setValue(name, val);
|
||||
}
|
||||
|
@ -16,12 +16,97 @@
|
||||
#ifndef APPSETTINGS_H
|
||||
#define APPSETTINGS_H
|
||||
|
||||
#include "settingsbase.h"
|
||||
#include <QObject>
|
||||
#include <QSettings>
|
||||
#include <QColor>
|
||||
|
||||
#include "util/apputils.h"
|
||||
#include "util/osutils.h"
|
||||
|
||||
#if WINDOWS
|
||||
#define JPATHKEY "JavaPathWindows"
|
||||
#elif OSX
|
||||
#define JPATHKEY "JavaPathOSX"
|
||||
#else
|
||||
#define JPATHKEY "JavaPathLinux"
|
||||
#endif
|
||||
|
||||
#define DEFINE_SETTING_ADVANCED(funcName, name, valType, defVal) \
|
||||
virtual valType get ## funcName() const { return getValue(name, defVal).value<valType>(); } \
|
||||
virtual void set ## funcName(valType value) { setValue(name, value); }
|
||||
|
||||
#define DEFINE_SETTING(name, valType, defVal) \
|
||||
DEFINE_SETTING_ADVANCED(name, STR_VAL(name), valType, defVal)
|
||||
|
||||
#define DEFINE_OVERRIDE_SETTING(overrideName) \
|
||||
|
||||
|
||||
class SettingsBase : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit SettingsBase(QObject *parent = 0);
|
||||
|
||||
// Updates
|
||||
DEFINE_SETTING(UseDevBuilds, bool, false)
|
||||
DEFINE_SETTING(AutoUpdate, bool, true)
|
||||
|
||||
// Folders
|
||||
DEFINE_SETTING(InstanceDir, QString, "instances")
|
||||
DEFINE_SETTING(CentralModsDir, QString, "mods")
|
||||
DEFINE_SETTING(LWJGLDir, QString, "lwjgl")
|
||||
|
||||
// Console
|
||||
DEFINE_SETTING(ShowConsole, bool, true)
|
||||
DEFINE_SETTING(AutoCloseConsole, bool, true)
|
||||
|
||||
// Console Colors
|
||||
DEFINE_SETTING(SysMessageColor, QColor, QColor(Qt::blue))
|
||||
DEFINE_SETTING(StdOutColor, QColor, QColor(Qt::black))
|
||||
DEFINE_SETTING(StdErrColor, QColor, QColor(Qt::red))
|
||||
|
||||
// Window Size
|
||||
DEFINE_SETTING(LaunchCompatMode, bool, false)
|
||||
DEFINE_SETTING(LaunchMaximized, bool, false)
|
||||
DEFINE_SETTING(MinecraftWinWidth, int, 854)
|
||||
DEFINE_SETTING(MinecraftWinHeight, int, 480)
|
||||
|
||||
// Auto login
|
||||
DEFINE_SETTING(AutoLogin, bool, false)
|
||||
|
||||
// Memory
|
||||
DEFINE_SETTING(MinMemAlloc, int, 512)
|
||||
DEFINE_SETTING(MaxMemAlloc, int, 1024)
|
||||
|
||||
// Java Settings
|
||||
DEFINE_SETTING_ADVANCED(JavaPath, JPATHKEY, QString, "java")
|
||||
DEFINE_SETTING(JvmArgs, QString, "")
|
||||
|
||||
// Custom Commands
|
||||
DEFINE_SETTING(PreLaunchCommand, QString, "")
|
||||
DEFINE_SETTING(PostExitCommand, QString, "")
|
||||
|
||||
protected:
|
||||
virtual QVariant getValue(const QString& name, QVariant defVal = QVariant()) const = 0;
|
||||
virtual void setValue(const QString& name, QVariant val) = 0;
|
||||
};
|
||||
|
||||
class AppSettings : public SettingsBase
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
AppSettings(QString fileName);
|
||||
explicit AppSettings(QObject *parent = 0);
|
||||
|
||||
protected:
|
||||
virtual QVariant getValue(const QString &name, QVariant defVal = QVariant()) const;
|
||||
virtual void setValue(const QString& name, QVariant val);
|
||||
|
||||
QSettings config;
|
||||
};
|
||||
|
||||
#undef DEFINE_SETTING_ADVANCED
|
||||
#undef DEFINE_SETTING
|
||||
|
||||
extern AppSettings* settings;
|
||||
|
||||
#endif // APPSETTINGS_H
|
||||
|
@ -1,33 +0,0 @@
|
||||
/* Copyright 2013 MultiMC Contributors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef SETTINGSBASE_H
|
||||
#define SETTINGSBASE_H
|
||||
|
||||
#include <QSettings>
|
||||
|
||||
#include "settingsmacros.h"
|
||||
|
||||
class SettingsBase : public QSettings
|
||||
{
|
||||
public:
|
||||
SettingsBase(QString fileName);
|
||||
|
||||
|
||||
};
|
||||
|
||||
#include "settingsmacrosundef.h"
|
||||
|
||||
#endif // SETTINGSBASE_H
|
@ -15,8 +15,8 @@
|
||||
|
||||
#include "stdinstance.h"
|
||||
|
||||
StdInstance::StdInstance(QString rootDir) :
|
||||
InstanceBase(rootDir)
|
||||
StdInstance::StdInstance(QString rootDir, QObject* parent) :
|
||||
InstanceBase(rootDir, parent)
|
||||
{
|
||||
|
||||
}
|
||||
|
@ -22,7 +22,7 @@
|
||||
class StdInstance : public InstanceBase
|
||||
{
|
||||
public:
|
||||
explicit StdInstance(QString rootDir);
|
||||
explicit StdInstance(QString rootDir, QObject *parent = 0);
|
||||
};
|
||||
|
||||
#endif // STDINSTANCE_H
|
||||
|
@ -16,13 +16,19 @@
|
||||
#include "settingsdialog.h"
|
||||
#include "ui_settingsdialog.h"
|
||||
|
||||
#include "data/appsettings.h"
|
||||
|
||||
#include <QFileDialog>
|
||||
#include <QMessageBox>
|
||||
|
||||
SettingsDialog::SettingsDialog(QWidget *parent) :
|
||||
QDialog(parent),
|
||||
ui(new Ui::SettingsDialog)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
loadSettings(settings);
|
||||
updateCheckboxStuff();
|
||||
}
|
||||
|
||||
SettingsDialog::~SettingsDialog()
|
||||
@ -32,10 +38,10 @@ SettingsDialog::~SettingsDialog()
|
||||
|
||||
void SettingsDialog::updateCheckboxStuff()
|
||||
{
|
||||
ui->minMemSpinBox->setEnabled(!(ui->compatModeCheckBox->isChecked() ||
|
||||
ui->maximizedCheckBox->isChecked()));
|
||||
ui->maxMemSpinBox->setEnabled(!(ui->compatModeCheckBox->isChecked() ||
|
||||
ui->maximizedCheckBox->isChecked()));
|
||||
ui->windowWidthSpinBox->setEnabled(!(ui->compatModeCheckBox->isChecked() ||
|
||||
ui->maximizedCheckBox->isChecked()));
|
||||
ui->windowHeightSpinBox->setEnabled(!(ui->compatModeCheckBox->isChecked() ||
|
||||
ui->maximizedCheckBox->isChecked()));
|
||||
|
||||
ui->maximizedCheckBox->setEnabled(!ui->compatModeCheckBox->isChecked());
|
||||
}
|
||||
@ -75,3 +81,101 @@ void SettingsDialog::on_maximizedCheckBox_clicked(bool checked)
|
||||
Q_UNUSED(checked);
|
||||
updateCheckboxStuff();
|
||||
}
|
||||
|
||||
void SettingsDialog::on_buttonBox_accepted()
|
||||
{
|
||||
applySettings(settings);
|
||||
}
|
||||
|
||||
void SettingsDialog::applySettings(SettingsBase *s)
|
||||
{
|
||||
// Special cases
|
||||
|
||||
// Warn about dev builds.
|
||||
if (!ui->devBuildsCheckBox->isChecked())
|
||||
{
|
||||
s->setUseDevBuilds(false);
|
||||
}
|
||||
else if (!s->getUseDevBuilds())
|
||||
{
|
||||
int response = QMessageBox::question(this, "Development builds",
|
||||
"Development builds contain experimental features "
|
||||
"and may be unstable. Are you sure you want to enable them?");
|
||||
if (response == QMessageBox::Yes)
|
||||
{
|
||||
s->setUseDevBuilds(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Updates
|
||||
s->setAutoUpdate(ui->autoUpdateCheckBox->isChecked());
|
||||
|
||||
// Folders
|
||||
// TODO: Offer to move instances to new instance folder.
|
||||
s->setInstanceDir(ui->instDirTextBox->text());
|
||||
s->setCentralModsDir(ui->modsDirTextBox->text());
|
||||
s->setLWJGLDir(ui->lwjglDirTextBox->text());
|
||||
|
||||
// Console
|
||||
s->setShowConsole(ui->showConsoleCheck->isChecked());
|
||||
s->setAutoCloseConsole(ui->autoCloseConsoleCheck->isChecked());
|
||||
|
||||
// Window Size
|
||||
s->setLaunchCompatMode(ui->compatModeCheckBox->isChecked());
|
||||
s->setLaunchMaximized(ui->maximizedCheckBox->isChecked());
|
||||
s->setMinecraftWinWidth(ui->windowWidthSpinBox->value());
|
||||
s->setMinecraftWinHeight(ui->windowHeightSpinBox->value());
|
||||
|
||||
// Auto Login
|
||||
s->setAutoLogin(ui->autoLoginCheckBox->isChecked());
|
||||
|
||||
// Memory
|
||||
s->setMinMemAlloc(ui->minMemSpinBox->value());
|
||||
s->setMaxMemAlloc(ui->maxMemSpinBox->value());
|
||||
|
||||
// Java Settings
|
||||
s->setJavaPath(ui->javaPathTextBox->text());
|
||||
s->setJvmArgs(ui->jvmArgsTextBox->text());
|
||||
|
||||
// Custom Commands
|
||||
s->setPreLaunchCommand(ui->preLaunchCmdTextBox->text());
|
||||
s->setPostExitCommand(ui->postExitCmdTextBox->text());
|
||||
}
|
||||
|
||||
void SettingsDialog::loadSettings(SettingsBase *s)
|
||||
{
|
||||
// Updates
|
||||
ui->autoUpdateCheckBox->setChecked(s->getAutoUpdate());
|
||||
ui->devBuildsCheckBox->setChecked(s->getUseDevBuilds());
|
||||
|
||||
// Folders
|
||||
ui->instDirTextBox->setText(s->getInstanceDir());
|
||||
ui->modsDirTextBox->setText(s->getCentralModsDir());
|
||||
ui->lwjglDirTextBox->setText(s->getLWJGLDir());
|
||||
|
||||
// Console
|
||||
ui->showConsoleCheck->setChecked(s->getShowConsole());
|
||||
ui->autoCloseConsoleCheck->setChecked(s->getAutoCloseConsole());
|
||||
|
||||
// Window Size
|
||||
ui->compatModeCheckBox->setChecked(s->getLaunchCompatMode());
|
||||
ui->maximizedCheckBox->setChecked(s->getLaunchMaximized());
|
||||
ui->windowWidthSpinBox->setValue(s->getMinecraftWinWidth());
|
||||
ui->windowHeightSpinBox->setValue(s->getMinecraftWinHeight());
|
||||
|
||||
// Auto Login
|
||||
ui->autoLoginCheckBox->setChecked(s->getAutoLogin());
|
||||
|
||||
// Memory
|
||||
ui->minMemSpinBox->setValue(s->getMinMemAlloc());
|
||||
ui->maxMemSpinBox->setValue(s->getMaxMemAlloc());
|
||||
|
||||
// Java Settings
|
||||
ui->javaPathTextBox->setText(s->getJavaPath());
|
||||
ui->jvmArgsTextBox->setText(s->getJvmArgs());
|
||||
|
||||
// Custom Commands
|
||||
ui->preLaunchCmdTextBox->setText(s->getPreLaunchCommand());
|
||||
ui->postExitCmdTextBox->setText(s->getPostExitCommand());
|
||||
}
|
||||
|
@ -18,6 +18,8 @@
|
||||
|
||||
#include <QDialog>
|
||||
|
||||
class SettingsBase;
|
||||
|
||||
namespace Ui {
|
||||
class SettingsDialog;
|
||||
}
|
||||
@ -32,6 +34,9 @@ public:
|
||||
|
||||
void updateCheckboxStuff();
|
||||
|
||||
void applySettings(SettingsBase* s);
|
||||
void loadSettings(SettingsBase* s);
|
||||
|
||||
private slots:
|
||||
void on_instDirBrowseBtn_clicked();
|
||||
|
||||
@ -43,6 +48,8 @@ private slots:
|
||||
|
||||
void on_maximizedCheckBox_clicked(bool checked);
|
||||
|
||||
void on_buttonBox_accepted();
|
||||
|
||||
private:
|
||||
Ui::SettingsDialog *ui;
|
||||
};
|
||||
|
@ -158,88 +158,6 @@
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="consoleTab">
|
||||
<attribute name="title">
|
||||
<string>Console</string>
|
||||
</attribute>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="consoleSettingsBox">
|
||||
<property name="title">
|
||||
<string>Console Settings</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="showConsoleCheck">
|
||||
<property name="text">
|
||||
<string>Show console while the game is running?</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="autoCloseConsoleCheck">
|
||||
<property name="text">
|
||||
<string>Automatically close console when the game quits?</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="consoleColorsBox">
|
||||
<property name="title">
|
||||
<string>Instance Console Colors</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="labelSysMessageColor">
|
||||
<property name="text">
|
||||
<string>System message color:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLineEdit" name="sysMsgColorTextBox"/>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="labelOutputMsgColor">
|
||||
<property name="text">
|
||||
<string>Output message color:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLineEdit" name="outMsgColorTextBox"/>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="labelErrorMessageColor">
|
||||
<property name="text">
|
||||
<string>Error message color:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QLineEdit" name="errMsgColorTextBox"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="consoleVerticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="minecraftTab">
|
||||
<attribute name="title">
|
||||
<string>Minecraft</string>
|
||||
@ -315,10 +233,33 @@
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="consoleSettingsBox">
|
||||
<property name="title">
|
||||
<string>Console Settings</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="showConsoleCheck">
|
||||
<property name="text">
|
||||
<string>Show console while the game is running?</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="autoCloseConsoleCheck">
|
||||
<property name="text">
|
||||
<string>Automatically close console when the game quits?</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="autoLoginCheckBox">
|
||||
<property name="text">
|
||||
<string>Login automatically when an instance launches?</string>
|
||||
<string>Login automatically when an instance icon is double clicked?</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
7
main.cpp
7
main.cpp
@ -1,3 +1,4 @@
|
||||
|
||||
/* Copyright 2013 MultiMC Contributors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -16,10 +17,16 @@
|
||||
#include "gui/mainwindow.h"
|
||||
#include <QApplication>
|
||||
|
||||
#include "data/appsettings.h"
|
||||
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QApplication app(argc, argv);
|
||||
app.setOrganizationName("Forkk");
|
||||
app.setApplicationName("MultiMC 5");
|
||||
|
||||
settings = new AppSettings(&app);
|
||||
|
||||
MainWindow mainWin;
|
||||
mainWin.show();
|
||||
|
@ -13,10 +13,9 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "settingsbase.h"
|
||||
#ifndef APPUTILS_H
|
||||
#define APPUTILS_H
|
||||
|
||||
SettingsBase::SettingsBase(QString fileName) :
|
||||
QSettings(fileName, QSettings::IniFormat)
|
||||
{
|
||||
|
||||
}
|
||||
#define STR_VAL(val) # val
|
||||
|
||||
#endif // APPUTILS_H
|
@ -13,14 +13,15 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef SETTINGSMACROSUNDEF_H
|
||||
#define SETTINGSMACROSUNDEF_H
|
||||
#ifndef OSUTILS_H
|
||||
#define OSUTILS_H
|
||||
|
||||
#undef DEFINE_SETTING
|
||||
#undef DEFINE_SETTING_STR
|
||||
#undef DEFINE_SETTING_BOOL
|
||||
#undef DEFINE_SETTING_INT
|
||||
#if defined _WIN32 | defined _WIN64
|
||||
#define WINDOWS 1
|
||||
#elif __APPLE__ & __MACH__
|
||||
#define OSX 1
|
||||
#elif __linux__
|
||||
#define LINUX 1
|
||||
#endif
|
||||
|
||||
#undef STR_VAL
|
||||
|
||||
#endif // SETTINGSMACROSUNDEF_H
|
||||
#endif // OSUTILS_H
|
@ -1,35 +0,0 @@
|
||||
/* Copyright 2013 MultiMC Contributors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef SETTINGSMACROS_H
|
||||
#define SETTINGSMACROS_H
|
||||
|
||||
#define STR_VAL(val) # val
|
||||
|
||||
#define DEFINE_SETTING(funcName, name, defVal, typeName, toFunc) \
|
||||
virtual typeName Get ## funcName() const { return value(name). ## toFunc(); } \
|
||||
virtual void Set ## funcName(typeName value) { setValue(name, value); } \
|
||||
virtual void Reset ## funcName() {
|
||||
|
||||
#define DEFINE_SETTING_STR(name, defVal) \
|
||||
DEFINE_SETTING(name, STR_VAL(name), defVal, QString, toString)
|
||||
|
||||
#define DEFINE_SETTING_BOOL(name, defVal) \
|
||||
DEFINE_SETTING(name, STR_VAL(name), defVal, bool, toBool)
|
||||
|
||||
#define DEFINE_SETTING_INT(name, defVal) \
|
||||
DEFINE_SETTING(name, STR_VAL(name), defVal, int, toInt)
|
||||
|
||||
#endif // SETTINGSMACROS_H
|
Loading…
Reference in New Issue
Block a user