openscad/src/settings.h

76 lines
1.7 KiB
C
Raw Normal View History

2014-09-25 00:18:14 +04:00
#pragma once
#include <map>
2014-12-29 02:29:09 +03:00
#include <list>
2014-09-25 00:18:14 +04:00
#include <string>
#include "value.h"
2014-12-27 04:17:15 +03:00
namespace Settings {
class SettingsEntry
2014-12-29 02:29:09 +03:00
{
private:
std::string _category;
std::string _name;
Value _value;
Value _range;
Value _default;
2014-12-29 02:29:09 +03:00
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;
2014-12-29 02:29:09 +03:00
protected:
SettingsEntry(const std::string category, const std::string name, const Value range, const Value def);
2014-09-25 00:18:14 +04:00
virtual ~SettingsEntry();
2014-12-29 02:29:09 +03:00
2014-09-25 00:18:14 +04:00
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;
2014-12-27 04:17:15 +03:00
2014-09-25 00:18:14 +04:00
static Settings *inst(bool erase = false);
2014-12-29 02:29:09 +03:00
void visit(class Visitor& visitor);
2014-12-29 02:29:09 +03:00
Value defaultValue(const SettingsEntry& entry);
Value get(const SettingsEntry& entry);
void set(SettingsEntry& entry, const Value val);
2014-09-25 00:18:14 +04:00
private:
Settings();
virtual ~Settings();
};
2014-12-27 04:17:15 +03:00
2014-12-29 02:29:09 +03:00
class Visitor
{
public:
Visitor();
virtual ~Visitor();
virtual void handle(SettingsEntry& entry) const = 0;
2014-12-29 02:29:09 +03:00
};
2014-12-27 04:17:15 +03:00
}