00001
00021
00022
00023
00024
00025 #ifndef __SYNFIG_SETTINGS_H
00026 #define __SYNFIG_SETTINGS_H
00027
00028
00029
00030 #include <synfig/string.h>
00031 #include <map>
00032 #include <list>
00033 #include <ETL/stringf>
00034
00035
00036
00037
00038
00039
00040
00041 namespace synfigapp {
00042
00043 class Settings
00044 {
00045 public:
00046
00047 typedef std::list<synfig::String> KeyList;
00048 typedef std::map<synfig::String,synfig::String> ValueBaseMap;
00049 typedef std::map<synfig::String,Settings*> DomainMap;
00050
00051 private:
00052 ValueBaseMap simple_value_map;
00053
00054 DomainMap domain_map;
00055
00056 public:
00057 Settings();
00058 virtual ~Settings();
00059
00060 virtual bool get_value(const synfig::String& key, synfig::String& value)const;
00061 virtual bool set_value(const synfig::String& key,const synfig::String& value);
00062 virtual KeyList get_key_list()const;
00063
00064 synfig::String get_value(const synfig::String& key)const;
00065 void add_domain(Settings* domain, const synfig::String& name);
00066 void remove_domain(const synfig::String& name);
00067
00068 bool load_from_string(const synfig::String& data);
00069 bool save_to_string(synfig::String& data);
00070
00071 bool load_from_file(const synfig::String& filename);
00072 bool save_to_file(const synfig::String& filename)const;
00073 };
00074
00075 };
00076
00077
00078
00079 #endif