diff -r 6b13e4c2e97b -r b75c6cce02e2 src/config.h
--- a/src/config.h Mon Jan 20 23:44:22 2014 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,192 +0,0 @@
-/*
- * LDForge: LDraw parts authoring CAD
- * Copyright (C) 2013, 2014 Santeri Piippo
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-#ifndef LDFORGE_CONFIG_H
-#define LDFORGE_CONFIG_H
-
-#include "property.h"
-#include "types.h"
-
-// =============================================================================
-#include
-#include
-#include
-class QSettings;
-
-#define MAX_INI_LINE 512
-#define MAX_CONFIG 512
-
-#define cfg(T, NAME, DEFAULT) \
- Config::T##Type NAME; \
- T##Config config_##NAME (&NAME, #NAME, DEFAULT);
-
-#define extern_cfg(T, NAME) extern Config::T##Type NAME;
-
-// =========================================================
-class Config
-{
- PROPERTY (private, QString, Name, STR_OPS, STOCK_WRITE)
-
- public:
- enum Type
- {
- EIntType,
- EStringType,
- EFloatType,
- EBoolType,
- EKeySequenceType,
- EListType,
- EVertexType,
- };
-
- using IntType = int;
- using StringType = QString;
- using FloatType = float;
- using BoolType = bool;
- using KeySequenceType = QKeySequence;
- using ListType = QList;
- using VertexType = Vertex;
-
- Config (QString name);
-
- virtual QVariant getDefaultAsVariant() const = 0;
- virtual Type getType() const = 0;
- virtual bool isDefault() const = 0;
- virtual void loadFromVariant (const QVariant& val) = 0;
- virtual void resetValue() = 0;
- virtual QVariant toVariant() const = 0;
-
- // ------------------------------------------
- static bool load();
- static bool save();
- static void reset();
- static QString dirpath();
- static QString filepath (QString file);
-
- protected:
- static void addToArray (Config* ptr);
-};
-
-// =============================================================================
-#define IMPLEMENT_CONFIG(NAME) \
-public: \
- using ValueType = Config::NAME##Type; \
- \
- NAME##Config (ValueType* valueptr, QString name, ValueType def) : \
- Config (name), \
- m_valueptr (valueptr), \
- m_default (def) \
- { \
- Config::addToArray (this); \
- *m_valueptr = def; \
- } \
- \
- inline ValueType getValue() const \
- { \
- return *m_valueptr; \
- } \
- \
- inline void setValue (ValueType val) \
- { \
- *m_valueptr = val; \
- } \
- \
- virtual Config::Type getType() const \
- { \
- return Config::E##NAME##Type; \
- } \
- \
- virtual void resetValue() \
- { \
- *m_valueptr = m_default; \
- } \
- \
- virtual const ValueType& getDefault() const \
- { \
- return m_default; \
- } \
- \
- virtual bool isDefault() const \
- { \
- return *m_valueptr == m_default; \
- } \
- \
- virtual void loadFromVariant (const QVariant& val) \
- { \
- *m_valueptr = val.value(); \
- } \
- \
- virtual QVariant toVariant() const \
- { \
- return QVariant::fromValue (*m_valueptr); \
- } \
- \
- virtual QVariant getDefaultAsVariant() const \
- { \
- return QVariant::fromValue (m_default); \
- } \
- \
- static NAME##Config* getByName (QString name); \
- \
-private: \
- ValueType* m_valueptr; \
- ValueType m_default;
-
-// =============================================================================
-class IntConfig : public Config
-{
- IMPLEMENT_CONFIG (Int)
-};
-
-// =============================================================================
-class StringConfig : public Config
-{
- IMPLEMENT_CONFIG (String)
-};
-
-// =============================================================================
-class FloatConfig : public Config
-{
- IMPLEMENT_CONFIG (Float)
-};
-
-// =============================================================================
-class BoolConfig : public Config
-{
- IMPLEMENT_CONFIG (Bool)
-};
-
-// =============================================================================
-class KeySequenceConfig : public Config
-{
- IMPLEMENT_CONFIG (KeySequence)
-};
-
-// =============================================================================
-class ListConfig : public Config
-{
- IMPLEMENT_CONFIG (List)
-};
-
-// =============================================================================
-class VertexConfig : public Config
-{
- IMPLEMENT_CONFIG (Vertex)
-};
-
-#endif // LDFORGE_CONFIG_H