00001 00007 #ifndef HSYNTAXHIGHLIGHTERSETTINGS_H_ 00008 #define HSYNTAXHIGHLIGHTERSETTINGS_H_ 00009 #include <QtCore/QString> 00010 #include <QtCore/QVector> 00011 #include <QtGui/QTextCharFormat> 00012 #include <QtCore/QCoreApplication> 00013 00014 #include "HighlightBlock.h" 00021 struct slFormatingRule 00022 { 00023 QRegExp exp; 00024 QTextCharFormat format; 00025 }; 00031 struct mlFormatingRule 00032 { 00033 QRegExp beginingExp; 00034 QRegExp endingExp; 00035 QTextCharFormat format; 00036 }; 00037 00046 class HSyntaxHighlighterSettings 00047 { 00053 friend class HSyntaxHighlighterDialog; 00054 private: 00055 QMap<QString,SingleLineHighlightBlock> singleLine; 00056 QMap<QString,MultiLinesHighlightBlock> multiLines; 00057 00062 bool modified; 00063 00064 public: 00069 bool changed() const 00070 { 00071 return modified; 00072 } 00073 00078 void cached() 00079 { 00080 modified=false; 00081 } 00088 void saveConfig(QString _fileName=QCoreApplication::applicationDirPath()+"/default.ini") const; 00089 00096 void loadConfig(QString _fileName=QCoreApplication::applicationDirPath()+"/default.ini"); 00097 00102 HSyntaxHighlighterSettings(); 00107 ~HSyntaxHighlighterSettings(){}; 00113 QVector<slFormatingRule> getSingleLineRules() const; 00114 00120 QVector<mlFormatingRule> getMultiLinesRules() const; 00121 00127 void addBlock(const QString& _name,HighlightBlock::HighlighType _type=HighlightBlock::sl) 00128 { 00129 if (!blockExists(_name)) 00130 { 00131 if (_type==HighlightBlock::sl) 00132 { 00133 SingleLineHighlightBlock block; 00134 block.setName(_name); 00135 singleLine.insert(_name,block); 00136 } 00137 else if (_type==HighlightBlock::ml) 00138 { 00139 MultiLinesHighlightBlock block; 00140 block.setName(_name); 00141 multiLines.insert(_name,block); 00142 } 00143 } 00144 modified=true; 00145 } 00146 00152 bool blockExists(const QString& _name) const 00153 { 00154 return singleLine.contains(_name)||multiLines.contains(_name); 00155 } 00160 void removeBlock(const QString& _name) 00161 { 00162 if (singleLine.contains(_name)) 00163 singleLine.remove(_name); 00164 else if (multiLines.contains(_name)) 00165 multiLines.remove(_name); 00166 00167 modified=true; 00168 } 00169 void renameBlock(const QString& _oldName,const QString& _newName) 00170 { 00171 if (singleLine.contains(_oldName)) 00172 { 00173 SingleLineHighlightBlock temp=singleLine.take(_oldName); 00174 temp.setName(_newName); 00175 singleLine.insert(_newName,temp); 00176 } 00177 else if (multiLines.contains(_oldName)) 00178 { 00179 MultiLinesHighlightBlock temp=multiLines.take(_oldName); 00180 temp.setName(_newName); 00181 multiLines.insert(_newName,temp); 00182 } 00183 modified=true; 00184 } 00185 }; 00186 00187 #endif /* HSYNTAXHIGHLIGHTERSETTINGS_H_ */
1.5.8