diff options
| author | Marius Nita <marius@cs.pdx.edu> | 2002-11-06 13:51:23 +0000 |
|---|---|---|
| committer | Marius Nita <marius@cs.pdx.edu> | 2002-11-06 13:51:23 +0000 |
| commit | 35fcb62ddd4861f857d93941407e3d87d444b2cc (patch) | |
| tree | 8538b81a0e74689d12ec95fb71f9c4ae6fdf5eab /otk/configuration.hh | |
| parent | 0cf6e32e1cd1659adc6f0a95649302758256207a (diff) | |
added style class, moved util and config to otk
Diffstat (limited to 'otk/configuration.hh')
| -rw-r--r-- | otk/configuration.hh | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/otk/configuration.hh b/otk/configuration.hh new file mode 100644 index 00000000..aeb0131d --- /dev/null +++ b/otk/configuration.hh @@ -0,0 +1,89 @@ +// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*- +#ifndef __configuration_hh +#define __configuration_hh + +/*! @file configuration.hh + @brief Loads, saves, and provides configuration options for the window + manager +*/ + +extern "C" { +#include <X11/Xlib.h> +#include <X11/Xresource.h> +} + +#include <string> + +namespace otk { + +/* + * The Configuration class is a generic wrapper for configuration settings. + * + * This class is used for the global rc/config file, and for styles. + * + * This implementation of the Configuration class wraps an X resource database + * file. + */ +class Configuration { +public: + explicit Configuration(const std::string &file, bool autosave = True); + Configuration(bool autosave = True); + virtual ~Configuration(); + + inline const std::string &file() const { + return static_cast<const std::string &>(_file); + } + void setFile(const std::string &file); + + // defaults to true! + inline bool autoSave() const { + return _autosave; + } + void setAutoSave(bool); + + inline bool isModified() const { + return _modified; + } + + void save(); + bool load(); + bool merge(const std::string &file, bool overwrite = False); + void create(); + + void setValue(const std::string &rname, bool value); + inline void setValue(const std::string &rname, int value) { + setValue(rname, (long) value); + } + inline void setValue(const std::string &rname, unsigned int value) { + setValue(rname, (unsigned long) value); + } + void setValue(const std::string &rname, long value); + void setValue(const std::string &rname, unsigned long value); + void setValue(const std::string &rname, const std::string &value); + void setValue(const std::string &rname, const char *value); + + bool getValue(const std::string &rname, bool &value) const; + inline bool getValue(const std::string &rname, int &value) const { + return getValue(rname, (long) value); + } + inline bool getValue(const std::string &rname, unsigned int &value) const { + return getValue(rname, (unsigned long) value); + } + bool getValue(const std::string &rname, long &value) const; + bool getValue(const std::string &rname, unsigned long &value) const; + bool getValue(const std::string &rname, std::string &value) const; + +private: + std::string createClassName(const std::string &rname) const; + char toUpper(char) const; + + static bool _initialized; + std::string _file; + bool _modified; + bool _autosave; + XrmDatabase _database; +}; + +} + +#endif // __configuration_hh |
