76 if(!path.contains(
".sel"))
83 if(!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
84 qDebug()<<
"Error opening selection file";
89 QTextStream in(&file);
92 QString line = in.readLine();
94 if(line.contains(
"%") ==
false && line.contains(
":") ==
true)
96 QStringList firstSplit = line.split(
":");
99 QString key = firstSplit.at(0);
101 QStringList secondSplit = firstSplit.at(1).split(
"|");
104 if(secondSplit.at(secondSplit.size()-1) ==
"")
105 secondSplit.removeLast();
108 selectionMap.insert(key, secondSplit);
122 if(path.find(
".sel") == std::string::npos)
126 selectionMap.clear();
128 std::ifstream inFile(path);
129 if(!inFile.is_open()){
130 qDebug()<<
"Error opening selection file";
136 while(std::getline(inFile, line)){
137 if(line.find(
'%') == std::string::npos && line.find(
':') != std::string::npos){
139 auto colonPos = line.find(
':');
140 std::string key = line.substr(0, colonPos);
141 std::string channelsPart = line.substr(colonPos + 1);
144 std::vector<std::string> channels;
145 std::stringstream stream{channelsPart};
147 while(std::getline(stream, token,
'|')){
148 channels.push_back(token);
152 if(!channels.empty() && channels.back().empty()){
156 selectionMap.insert({key, channels});
168 if(!path.contains(
".mon"))
172 selectionMap.clear();
175 if(!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
176 qDebug()<<
"Error opening montage file";
181 QTextStream in(&file);
182 QString groupName = in.readLine();
183 QStringList channels;
186 QString line = in.readLine();
188 if(line.contains(
":") ==
true) {
189 QStringList secondSplit = line.split(
":");
190 QString key = secondSplit.at(0);
191 channels.append(key);
196 selectionMap.insert(groupName, channels);
208 if(path.find(
".mon") == std::string::npos)
212 selectionMap.clear();
214 std::ifstream inFile(path);
215 if(!inFile.is_open()){
216 qDebug()<<
"Error opening montage file";
219 std::vector<std::string> channels;
221 std::string groupName;
222 std::getline(inFile, groupName);
225 while(std::getline(inFile, line)){
226 if(line.find(
':') != std::string::npos){
227 auto colonPos = line.find(
':');
228 std::string channelName = line.substr(0, colonPos);
229 channels.push_back(channelName);
233 selectionMap.insert({groupName, channels});
243 if(!path.contains(
".sel"))
247 if (!file.open(QIODevice::WriteOnly | QIODevice::Text)){
248 qDebug()<<
"Error opening sel file for writing";
253 QTextStream out(&file);
255 QMultiMap<QString, QStringList>::const_iterator i = selectionMap.constBegin();
256 while (i != selectionMap.constEnd()) {
257 out << i.key() <<
":";
259 for(
int u=0; u<i.value().size() ; u++)
260 out << i.value().at(u) <<
"|";
277 if(path.find(
".sel") == std::string::npos)
280 std::ofstream outFile(path);
281 if (!outFile.is_open()){
282 qDebug()<<
"Error opening sel file for writing";
286 for(
auto& mapElement : selectionMap){
287 outFile << mapElement.first <<
":";
288 for(
auto& vectorElement : mapElement.second){
289 outFile << vectorElement <<
"|";
291 outFile <<
"\n" <<
"\n";
301 for(
auto i = selectionMap.constBegin(); i != selectionMap.constEnd(); i++) {
302 QFileInfo fileInfo(path);
304 QString newPath = QString(
"%1/%2.mon").arg(fileInfo.absolutePath()).arg(i.key());
309 if (!file.open(QIODevice::WriteOnly | QIODevice::Text)){
310 qDebug()<<
"Error opening mon file for writing";
315 QTextStream out(&file);
319 for(
int u=0; u<i.value().size() ; u++)
320 out << i.value().at(u) <<
" : " << i.value().at(u) <<
"\n";
332 for(
auto& mapElement : selectionMap){
333 std::string newPath{path.substr(0, path.find_last_of(
"/") + 1) + mapElement.first +
".mon"};
334 std::ofstream outFile(newPath);
335 if(!outFile.is_open()){
336 qDebug()<<
"Error opening mon file for writing";
340 outFile << mapElement.first <<
"\n";
341 for(
auto& vectorElement : mapElement.second){
342 outFile << vectorElement <<
" : " << vectorElement <<
"\n";