mirror of https://github.com/vitalif/openscad
76 lines
1.7 KiB
C++
76 lines
1.7 KiB
C++
#pragma once
|
|
|
|
#include <map>
|
|
#include <list>
|
|
#include <string>
|
|
|
|
#include "value.h"
|
|
|
|
namespace Settings {
|
|
|
|
class SettingsEntry
|
|
{
|
|
private:
|
|
std::string _category;
|
|
std::string _name;
|
|
Value _value;
|
|
Value _range;
|
|
Value _default;
|
|
|
|
public:
|
|
const std::string & category() const;
|
|
const std::string & name() const;
|
|
|
|
virtual const Value & defaultValue() const;
|
|
virtual const Value & range() const;
|
|
virtual bool is_default() const;
|
|
|
|
protected:
|
|
SettingsEntry(const std::string category, const std::string name, const Value range, const Value def);
|
|
virtual ~SettingsEntry();
|
|
|
|
friend class Settings;
|
|
};
|
|
|
|
class Settings
|
|
{
|
|
public:
|
|
static SettingsEntry showWarningsIn3dView;
|
|
static SettingsEntry indentationWidth;
|
|
static SettingsEntry tabWidth;
|
|
static SettingsEntry lineWrap;
|
|
static SettingsEntry lineWrapIndentationStyle;
|
|
static SettingsEntry lineWrapIndentation;
|
|
static SettingsEntry lineWrapVisualizationBegin;
|
|
static SettingsEntry lineWrapVisualizationEnd;
|
|
static SettingsEntry showWhitespace;
|
|
static SettingsEntry showWhitespaceSize;
|
|
static SettingsEntry autoIndent;
|
|
static SettingsEntry indentStyle;
|
|
static SettingsEntry tabKeyFunction;
|
|
static SettingsEntry highlightCurrentLine;
|
|
static SettingsEntry enableBraceMatching;
|
|
|
|
static Settings *inst(bool erase = false);
|
|
|
|
void visit(class Visitor& visitor);
|
|
|
|
Value defaultValue(const SettingsEntry& entry);
|
|
Value get(const SettingsEntry& entry);
|
|
void set(SettingsEntry& entry, const Value val);
|
|
|
|
private:
|
|
Settings();
|
|
virtual ~Settings();
|
|
};
|
|
|
|
class Visitor
|
|
{
|
|
public:
|
|
Visitor();
|
|
virtual ~Visitor();
|
|
|
|
virtual void handle(SettingsEntry& entry) const = 0;
|
|
};
|
|
|
|
} |