2 // File : QAD_Settings.cxx
3 // Created : Tue Sep 04 09:28:02 2001
4 // Author : Nicolas REJNERI
7 // Copyright : Open CASCADE
11 #include "QAD_Settings.h"
19 #include <qtextstream.h>
22 Class QAD_Settings is a base class for different kind of settings
23 (identifying strings and values).
25 QAD_Settings::QAD_Settings(QString _sectionName,
26 QChar _nameStarter, QChar _nameStopper,
27 QChar _valueStarter, QChar _valueStopper)
29 sectionName = _sectionName;
30 nameStarter = _nameStarter;
31 nameStopper = _nameStopper;
32 valueStarter = _valueStarter;
33 valueStopper = _valueStopper;
34 settingList.setAutoDelete(true);
40 QAD_Settings::QAD_Settings(QString _sectionName,
45 sectionName = _sectionName;
46 nameStarter = _nameStarter;
47 nameStopper = _separator;
48 valueStopper = _valueStopper;
50 settingList.setAutoDelete(true);
55 QAD_Settings::QAD_Settings(QChar _nameStopper, QChar _valueStarter,
60 nameStopper = _nameStopper;
61 valueStarter = _valueStarter;
62 valueStopper = _valueStopper;
63 settingList.setAutoDelete(true);
70 QAD_Settings::~QAD_Settings()
78 void QAD_Settings::clear()
85 Adds a setting. If a setting with the given name is already defined it
88 void QAD_Settings::addSetting(QString _name, QString _value, bool _autoValue)
90 // Remove all settings with the same name:
91 removeSettings(_name.simplifyWhiteSpace());
94 QAD_Setting* newSetting = new QAD_Setting(_name.simplifyWhiteSpace(),
95 _value.simplifyWhiteSpace(),
97 settingList.append(newSetting);
102 Adds an int setting. If a setting with the given name is already defined it
105 void QAD_Settings::addSetting(QString _name, int _value, bool _autoValue)
108 strVal.setNum(_value);
110 addSetting(_name, strVal, _autoValue);
114 Adds a double setting. If a setting with the given name is already defined it
117 void QAD_Settings::addSetting(QString _name, double _value, bool _autoValue)
120 strVal.setNum(_value);
122 addSetting(_name, strVal, _autoValue);
127 Removes all setting with the given name (should be unique anyway).
129 bool QAD_Settings::removeSettings(QString name)
134 for(s=settingList.first(); s!=0;) {
135 if(s->getName()==name) {
136 settingList.remove(s);
137 s=settingList.current();
141 s=settingList.next();
150 Removes all setting which are not automatically generated.
152 void QAD_Settings::removeNonAutoSettings()
156 for(s=settingList.first(); s!=0;) {
157 if(!s->isAutoValue()) {
158 settingList.remove(s);
159 s=settingList.current();
162 s=settingList.next();
169 Gets the setting value of the given setting.
171 QString QAD_Settings::getSetting(QString name)
175 for(s=settingList.first(); s!=0; s=settingList.next()) {
176 if(s->getName()==name) return s->getValue();
183 Replaces variables in the given string by their values.
185 QString QAD_Settings::replace(QString str)
187 if(!str.contains('$')) return str;
190 QString result=str.copy();
194 // Replace until we have no occurences of variables or recursive counter>16:
197 for(t=settingList.first(); t!=0; t=settingList.next()) {
198 if(result.contains('$')) {
201 i = result.find(QRegExp("\\$" + t->getName() + "[^a-zA-z0-9_]"), i);
203 result.replace(i, (int)t->getName().length()+1, t->getValue());
218 Returns true if list contains given setting
220 bool QAD_Settings::hasSetting(QString name)
224 for(s=settingList.first(); s!=0; s=settingList.next()) {
225 if(s->getName()==name) return true;