00001
00008 #include <QtCore/QSettings>
00009
00010 #include "HSyntaxHighlighterSettings.h"
00011
00012 HSyntaxHighlighterSettings::HSyntaxHighlighterSettings()
00013 {
00014 modified=true;
00015 }
00016
00017
00018
00019 void HSyntaxHighlighterSettings::saveConfig(QString _fileName) const
00020 {
00021 QSettings settings(_fileName,QSettings::IniFormat);
00022 settings.clear();
00023 QStringList blNames;
00024 foreach(SingleLineHighlightBlock block,singleLine.values())
00025 {
00026 blNames.append(block.getName());
00027 }
00028 settings.setValue("General/Single_Lines_Names",blNames.join("|"));
00029 blNames.clear();
00030
00031 foreach(SingleLineHighlightBlock block,singleLine.values())
00032 {
00033 settings.setValue(block.getName()+"/description",block.getDescription());
00034 settings.setValue(block.getName()+"/pattern",block.getPattern());
00035
00036 QFont font=block.getFont();
00037 settings.setValue(block.getName()+"/Font Family",font.family());
00038 settings.setValue(block.getName()+"/Font Size",font.pointSize());
00039 settings.setValue(block.getName()+"/Font Italic",font.italic());
00040 settings.setValue(block.getName()+"/Font Bold",font.bold());
00041 settings.setValue(block.getName()+"/Font Underline",font.underline());
00042 settings.setValue(block.getName()+"/Font StrikeOut",font.strikeOut());
00043
00044 QString hexColor=QString::number(block.getForegroundColor().rgb(),16);
00045 settings.setValue(block.getName()+"/Foreground Color",hexColor);
00046 hexColor=QString::number(block.getBackgroundColor().rgb(),16);
00047 settings.setValue(block.getName()+"/Background Color",hexColor);
00048 }
00049
00050 foreach(MultiLinesHighlightBlock block, multiLines)
00051 {
00052 blNames.append(block.getName());
00053 }
00054 settings.setValue("General/Multiple_Lines_Names",blNames.join("|"));
00055
00056 foreach(MultiLinesHighlightBlock block, multiLines)
00057 {
00058 settings.setValue(block.getName()+"/description",block.getDescription());
00059 settings.setValue(block.getName()+"/starting pattern",block.getStartingPattern());
00060 settings.setValue(block.getName()+"/ending pattern",block.getEndingPattern());
00061
00062 QFont font=block.getFont();
00063 settings.setValue(block.getName()+"/Font Family",font.family());
00064 settings.setValue(block.getName()+"/Font Size",font.pointSize());
00065 settings.setValue(block.getName()+"/Font Italic",font.italic());
00066 settings.setValue(block.getName()+"/Font Bold",font.bold());
00067 settings.setValue(block.getName()+"/Font Underline",font.underline());
00068 settings.setValue(block.getName()+"/Font StrikeOut",font.strikeOut());
00069
00070 QString hexColor=QString::number(block.getForegroundColor().rgb(),16);
00071 settings.setValue(block.getName()+"/Foreground Color",hexColor);
00072 hexColor=QString::number(block.getBackgroundColor().rgb(),16);
00073 settings.setValue(block.getName()+"/Background Color",hexColor);
00074 }
00075 }
00076
00077 void HSyntaxHighlighterSettings::loadConfig(QString _fileName)
00078 {
00079
00080 QSettings settings(_fileName,QSettings::IniFormat);
00081 QStringList blNames;
00082
00083 blNames=settings.value("General/Single_Lines_Names").toString().split("|");
00084 singleLine.clear();
00085 foreach(QString name,blNames)
00086 {
00087 if(!name.isEmpty())
00088 {
00089 SingleLineHighlightBlock block;
00090 block.setName(name);
00091 block.setDescription(settings.value(block.getName()+"/description").toString());
00092 block.setPattern(settings.value(block.getName()+"/pattern").toString());
00093
00094 QFont font;
00095 font.setFamily(settings.value(block.getName()+"/Font Family").toString());
00096 int pointSize=settings.value(block.getName()+"/Font Size").toInt();
00097 font.setPointSize(pointSize > 0 ? pointSize : 8);
00098 font.setItalic(settings.value(block.getName()+"/Font Italic").toBool());
00099 font.setBold(settings.value(block.getName()+"/Font Bold").toBool());
00100 font.setUnderline(settings.value(block.getName()+"/Font Underline").toBool());
00101 font.setStrikeOut(settings.value(block.getName()+"/Font StrikeOut").toBool());
00102 block.setFont(font);
00103
00104 QColor color=QColor::fromRgb(settings.value(block.getName()+"/Foreground Color").toString().toUInt(0,16));
00105 block.setForegroundColor(color);
00106 color=QColor::fromRgb(settings.value(block.getName()+"/Background Color").toString().toUInt(0,16));
00107 block.setBackgroundColor(color);
00108 singleLine[name]=block;
00109 }
00110 }
00111
00112 blNames=settings.value("General/Multiple_Lines_Names").toString().split("|");
00113 multiLines.clear();
00114 foreach(QString name,blNames)
00115 {
00116 if(!name.isEmpty())
00117 {
00118 MultiLinesHighlightBlock block;
00119 block.setName(name);
00120 block.setDescription(settings.value(block.getName()+"/description").toString());
00121 block.setStartingPattern(settings.value(block.getName()+"/starting pattern").toString());
00122 block.setEndingPattern(settings.value(block.getName()+"/ending pattern").toString());
00123
00124 QFont font;
00125 font.setFamily(settings.value(block.getName()+"/Font Family").toString());
00126 int pointSize=settings.value(block.getName()+"/Font Size").toInt();
00127 font.setPointSize(pointSize>0 ? pointSize : 8);
00128 font.setItalic(settings.value(block.getName()+"/Font Italic").toBool());
00129 font.setBold(settings.value(block.getName()+"/Font Bold").toBool());
00130 font.setUnderline(settings.value(block.getName()+"/Font Underline").toBool());
00131 font.setStrikeOut(settings.value(block.getName()+"/Font StrikeOut").toBool());
00132 block.setFont(font);
00133
00134 QColor color=QColor::fromRgb(settings.value(block.getName()+"/Foreground Color").toString().toUInt(0,16));
00135 block.setForegroundColor(color);
00136 color=QColor::fromRgb(settings.value(block.getName()+"/Background Color").toString().toUInt(0,16));
00137 block.setBackgroundColor(color);
00138
00139 multiLines[name]=block;
00140 }
00141 }
00142 modified=true;
00143 }
00144 QVector<mlFormatingRule> HSyntaxHighlighterSettings::getMultiLinesRules() const
00145 {
00146 mlFormatingRule rule;
00147 QVector<mlFormatingRule> result;
00148
00149 foreach(MultiLinesHighlightBlock block,multiLines)
00150 {
00151 rule.beginingExp=block.getStartingExp();
00152 rule.endingExp=block.getEndingExp();
00153 rule.format=block.getFormat();
00154 result.append(rule);
00155 }
00156 return result;
00157 }
00158 QVector<slFormatingRule> HSyntaxHighlighterSettings::getSingleLineRules() const
00159 {
00160 slFormatingRule rule;
00161 QVector<slFormatingRule> result;
00162
00163 foreach(SingleLineHighlightBlock block,singleLine)
00164 {
00165 rule.exp=block.getExp();
00166 rule.format=block.getFormat();
00167 result.append(rule);
00168 }
00169 return result;
00170 }
00171
00172
00173