summaryrefslogtreecommitdiff
path: root/otk/configuration.hh
diff options
context:
space:
mode:
authorMarius Nita <marius@cs.pdx.edu>2002-11-06 13:51:23 +0000
committerMarius Nita <marius@cs.pdx.edu>2002-11-06 13:51:23 +0000
commit35fcb62ddd4861f857d93941407e3d87d444b2cc (patch)
tree8538b81a0e74689d12ec95fb71f9c4ae6fdf5eab /otk/configuration.hh
parent0cf6e32e1cd1659adc6f0a95649302758256207a (diff)
added style class, moved util and config to otk
Diffstat (limited to 'otk/configuration.hh')
-rw-r--r--otk/configuration.hh89
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