bool PrinttoolEntry::readEntry(QTextStream &t) { QString line; QStringList args; m_resolutions.setAutoDelete(true); m_depths.setAutoDelete(true); m_resolutions.clear(); m_depths.clear(); while(!t.eof()) { line = getPrintcapLine(t); if(line.isEmpty()) break; if(line == "EndEntry") return !m_name.isEmpty(); QStringList l = splitPrinttoolLine(line); if(l.count() > 1) { if(l[0] == "StartEntry") m_name = l[1]; else if(l[0] == "GSDriver") m_gsdriver = l[1]; else if(l[0] == "About") m_about = l[1]; else if(l[0] == "Description") m_description = l[1]; else if(l[0] == "Resolution" && l.count() > 2) { Resolution *resol = new Resolution; bool ok(false); resol->xdpi = l[1].toInt(&ok); if(ok) resol->ydpi = l[2].toInt(&ok); if(l.count() > 3) resol->comment = l[3]; if(ok) m_resolutions.append(resol); else delete resol; } else if(l[0] == "BitsPerPixel" && l.count() > 1) { BitsPerPixel *dpth = new BitsPerPixel; dpth->bpp = l[1]; if(l.count() > 2) dpth->comment = l[2]; m_depths.append(dpth); } } } return false; }
// Read the element definition file. void KMolCalc::readMwfile(QFile& f) { if (!f.open(IO_ReadOnly)) return; //ERROR QTextStream fs (&f); QString line; while (!fs.eof()) { line = fs.readLine(); SubUnit* s = SubUnit::makeSubUnit(line); elstable->replace(s->getName(), s); } f.close(); }
void ValueMap::load( QTextStream& ts ) { while ( !ts.eof() ) { // until end of file... QString s = ts.readLine(); // line of text excluding '\n' int pos = s.find('='); if( pos > 0 ) // seems not to have a tag { QString key = s.left(pos); QString val = s.mid(pos+1); m_map[key] = val; } } }
QString getPrintcapLine(QTextStream& t, QString *lastcomment) { QString line, buffer, comm; while (!t.eof()) { buffer = t.readLine().stripWhiteSpace(); if (buffer.isEmpty() || buffer[0] == '#') { comm = buffer; continue; } line.append(buffer); if (line.right(1) == "\\") { line.truncate(line.length()-1); line = line.stripWhiteSpace(); } else break; } if (lastcomment) *lastcomment = comm; return line; }
/*************************************************************************** * is called, when the df-command has finished **/ void KDiskFreeSp::dfDone() { readingDFStdErrOut=true; QTextStream t (dfStringErrOut, IO_ReadOnly); QString s=t.readLine(); if ( (s.isEmpty()) || ( s.left(10) != QString::fromLatin1("Filesystem") ) ) kdError() << "Error running df command... got [" << s << "]" << endl; while ( !t.eof() ) { QString u,v; s=t.readLine(); s=s.simplifyWhiteSpace(); if ( !s.isEmpty() ) { //kdDebug(kfile_area) << "GOT: [" << s << "]" << endl; if (s.find(BLANK)<0) // devicename was too long, rest in next line if ( !t.eof() ) { // just appends the next line v=t.readLine(); s=s.append(v); s=s.simplifyWhiteSpace(); //kdDebug(kfile_area) << "SPECIAL GOT: [" << s << "]" << endl; }//if silly linefeed //kdDebug(kfile_area) << "[" << s << "]" << endl; //QString deviceName = s.left(s.find(BLANK)); s=s.remove(0,s.find(BLANK)+1 ); //kdDebug(kfile_area) << " DeviceName: [" << deviceName << "]" << endl; if (!NO_FS_TYPE) s=s.remove(0,s.find(BLANK)+1 ); // eat fs type u=s.left(s.find(BLANK)); unsigned long kBSize = u.toULong(); s=s.remove(0,s.find(BLANK)+1 ); //kdDebug(kfile_area) << " Size: [" << kBSize << "]" << endl; u=s.left(s.find(BLANK)); unsigned long kBUsed = u.toULong(); s=s.remove(0,s.find(BLANK)+1 ); //kdDebug(kfile_area) << " Used: [" << kBUsed << "]" << endl; u=s.left(s.find(BLANK)); unsigned long kBAvail = u.toULong(); s=s.remove(0,s.find(BLANK)+1 ); //kdDebug(kfile_area) << " Avail: [" << kBAvail << "]" << endl; s=s.remove(0,s.find(BLANK)+1 ); // delete the capacity 94% QString mountPoint = s.stripWhiteSpace(); //kdDebug(kfile_area) << " MountPoint: [" << mountPoint << "]" << endl; if ( mountPoint == m_mountPoint ) { //kdDebug(kfile_area) << "Found mount point. Emitting" << endl; emit foundMountPoint( mountPoint, kBSize, kBUsed, kBAvail ); emit foundMountPoint( kBSize, kBUsed, kBAvail, mountPoint ); // sic! } }//if not header }//while further lines available readingDFStdErrOut=false; emit done(); delete this; }
//void modCalcAngDist::processLines( const QFile * fIn ) { void modCalcAngDist::processLines( QTextStream &istream ) { // we open the output file // QTextStream istream(&fIn); QString outputFileName; outputFileName = OutputLineEditBatch->text(); QFile fOut( outputFileName ); fOut.open(IO_WriteOnly); QTextStream ostream(&fOut); QString line; QString space = " "; int i = 0; SkyPoint sp0, sp1; dms ra0B, dec0B, ra1B, dec1B, dist; while ( ! istream.eof() ) { line = istream.readLine(); line.stripWhiteSpace(); //Go through the line, looking for parameters QStringList fields = QStringList::split( " ", line ); i = 0; // Read RA and write in ostream if corresponds if(ra0CheckBatch->isChecked() ) { ra0B = dms::fromString( fields[i],FALSE); i++; } else ra0B = ra0BoxBatch->createDms(FALSE); if ( allRadioBatch->isChecked() ) ostream << ra0B.toHMSString() << space; else if(ra0CheckBatch->isChecked() ) ostream << ra0B.toHMSString() << space; // Read DEC and write in ostream if corresponds if(dec0CheckBatch->isChecked() ) { dec0B = dms::fromString( fields[i], TRUE); i++; } else dec0B = dec0BoxBatch->createDms(); if ( allRadioBatch->isChecked() ) ostream << dec0B.toDMSString() << space; else if(dec0CheckBatch->isChecked() ) ostream << dec0B.toDMSString() << space; // Read RA and write in ostream if corresponds if(ra1CheckBatch->isChecked() ) { ra1B = dms::fromString( fields[i],FALSE); i++; } else ra1B = ra1BoxBatch->createDms(FALSE); if ( allRadioBatch->isChecked() ) ostream << ra1B.toHMSString() << space; else if(ra1CheckBatch->isChecked() ) ostream << ra1B.toHMSString() << space; // Read DEC and write in ostream if corresponds if(dec1CheckBatch->isChecked() ) { dec1B = dms::fromString( fields[i], TRUE); i++; } else dec1B = dec1BoxBatch->createDms(); if ( allRadioBatch->isChecked() ) ostream << dec1B.toDMSString() << space; else if(dec1CheckBatch->isChecked() ) ostream << dec1B.toDMSString() << space; sp0 = SkyPoint (ra0B, dec0B); sp1 = SkyPoint (ra1B, dec1B); dist = sp0.angularDistanceTo(&sp1); ostream << dist.toDMSString() << endl; } fOut.close(); }
void modCalcAzel::processLines( QTextStream &istream ) { // we open the output file // QTextStream istream(&fIn); QString outputFileName; outputFileName = OutputLineEditBatch->text(); QFile fOut( outputFileName ); fOut.open(IO_WriteOnly); QTextStream ostream(&fOut); QString line; QString space = " "; int i = 0; long double jd0, jdf; dms LST; SkyPoint sp; dms raB, decB, latB, longB, azB, elB; double epoch0B; QTime utB; ExtDate dtB; while ( ! istream.eof() ) { line = istream.readLine(); line.stripWhiteSpace(); //Go through the line, looking for parameters QStringList fields = QStringList::split( " ", line ); i = 0; // Read Ut and write in ostream if corresponds if(utCheckBatch->isChecked() ) { utB = QTime::fromString( fields[i] ); i++; } else utB = utBoxBatch->time(); if ( allRadioBatch->isChecked() ) ostream << utB.toString() << space; else if(utCheckBatch->isChecked() ) ostream << utB.toString() << space; // Read date and write in ostream if corresponds if(dateCheckBatch->isChecked() ) { dtB = ExtDate::fromString( fields[i] ); i++; } else dtB = dateBoxBatch->date(); if ( allRadioBatch->isChecked() ) ostream << dtB.toString().append(space); else if(dateCheckBatch->isChecked() ) ostream << dtB.toString().append(space); // Read Longitude and write in ostream if corresponds if (longCheckBatch->isChecked() ) { longB = dms::fromString( fields[i],TRUE); i++; } else longB = longBoxBatch->createDms(TRUE); if ( allRadioBatch->isChecked() ) ostream << longB.toDMSString() << space; else if (longCheckBatch->isChecked() ) ostream << longB.toDMSString() << space; // Read Latitude if (latCheckBatch->isChecked() ) { latB = dms::fromString( fields[i], TRUE); i++; } else latB = latBoxBatch->createDms(TRUE); if ( allRadioBatch->isChecked() ) ostream << latB.toDMSString() << space; else if (latCheckBatch->isChecked() ) ostream << latB.toDMSString() << space; // Read Epoch and write in ostream if corresponds if(epochCheckBatch->isChecked() ) { epoch0B = fields[i].toDouble(); i++; } else epoch0B = getEpoch( epochBoxBatch->text() ); if ( allRadioBatch->isChecked() ) ostream << epoch0B << space; else if(epochCheckBatch->isChecked() ) ostream << epoch0B << space; // We make the first calculations KStarsDateTime dt; dt.setFromEpoch( epoch0B ); jdf = KStarsDateTime(dtB,utB).djd(); jd0 = dt.djd(); LST = KStarsDateTime(dtB,utB).gst().Degrees() + longB.Degrees(); // Equatorial coordinates are the input coords. if (!horInputCoords) { // Read RA and write in ostream if corresponds if(raCheckBatch->isChecked() ) { raB = dms::fromString( fields[i],FALSE); i++; } else raB = raBoxBatch->createDms(FALSE); if ( allRadioBatch->isChecked() ) ostream << raB.toHMSString() << space; else if(raCheckBatch->isChecked() ) ostream << raB.toHMSString() << space; // Read DEC and write in ostream if corresponds if(decCheckBatch->isChecked() ) { decB = dms::fromString( fields[i], TRUE); i++; } else decB = decBoxBatch->createDms(); if ( allRadioBatch->isChecked() ) ostream << decB.toDMSString() << space; else if(decCheckBatch->isChecked() ) ostream << decB.toDMSString() << space; sp = SkyPoint (raB, decB); sp.apparentCoord(jd0, jdf); sp.EquatorialToHorizontal( &LST, &latB ); ostream << sp.az()->toDMSString() << space << sp.alt()->toDMSString() << endl; // Input coords are horizontal coordinates } else { if(azCheckBatch->isChecked() ) { azB = dms::fromString( fields[i],FALSE); i++; } else azB = azBoxBatch->createDms(); if ( allRadioBatch->isChecked() ) ostream << azB.toHMSString() << space; else if(raCheckBatch->isChecked() ) ostream << azB.toHMSString() << space; // Read DEC and write in ostream if corresponds if(elCheckBatch->isChecked() ) { elB = dms::fromString( fields[i], TRUE); i++; } else elB = decBoxBatch->createDms(); if ( allRadioBatch->isChecked() ) ostream << elB.toDMSString() << space; else if(elCheckBatch->isChecked() ) ostream << elB.toDMSString() << space; sp.setAz(azB); sp.setAlt(elB); sp.HorizontalToEquatorial( &LST, &latB ); ostream << sp.ra()->toHMSString() << space << sp.dec()->toDMSString() << endl; } } fOut.close(); }
bool kvoctrainDoc::loadFromLex (QTextStream& is) { langs.clear(); vocabulary.clear(); QString version, info1, s_dummy, title, f_keys, ident, orgID, transID; int i_dummy, type, f_grade, t_grade, lesson; int lines = 10000000; version = is.readLine(); info1 = is.readLine(); ident = extract (info1); orgID = extract (info1); if (orgID.isEmpty()) orgID = "original"; transID = extract (info1); if (transID.isEmpty()) transID = "translation"; if (ident != "LEX" || version != LEX_IDENT_50) { errorLex (1, "invalid file format"); return false; } // first two chars usually give language code: // english ==> en // Deutsch ==> de // italano ==> it langs.push_back (orgID.left(2).lower()); langs.push_back (transID.left(2).lower()); QTextStream params (info1, IO_ReadOnly); params >> i_dummy; params >> i_dummy; params >> i_dummy; params >> i_dummy; params >> i_dummy; params >> i_dummy; params >> i_dummy; params >> i_dummy; params >> i_dummy; params >> i_dummy; params >> i_dummy; params >> i_dummy; params >> i_dummy; params >> lines; s_dummy = is.readLine(); // Font s_dummy = is.readLine(); // Font title = is.readLine(); setTitle (title); s_dummy = is.readLine(); s_dummy = is.readLine(); s_dummy = is.readLine(); s_dummy = is.readLine(); s_dummy = is.readLine(); s_dummy = is.readLine(); s_dummy = is.readLine(); s_dummy = is.readLine(); s_dummy = is.readLine(); s_dummy = is.readLine(); s_dummy = is.readLine(); if (!loadTypeNameLex (is)) return false; if (!loadLessonLex (is)) return false; f_keys = is.readLine(); int ent_percent = (int) lines / 100; float f_ent_percent = (int) lines / 100.0; emit progressChanged(this, 0); for (int i = 0; !is.eof() && i < lines; i++) { if (ent_percent != 0 && (i % ent_percent) == 0 ) { emit progressChanged(this, int(i / f_ent_percent)); } is >> type; is >> i_dummy; is >> i_dummy; is >> i_dummy; is >> i_dummy; is >> i_dummy; is >> i_dummy; is >> i_dummy; is >> t_grade; is >> f_grade; is >> lesson; QString line = is.readLine(); QString s; QString original = extract (line); for (int i = 0; i < 3; i++) { s = extract (line); if (!s.isEmpty()) original += ", " +s; } QString translation = extract (line); for (int i = 0; i < 3; i++) { s = extract (line); if (!s.isEmpty()) translation += ", " +s; } /* ignore rest >> "||||||||||||||||||||||||||||||||||||||||||||||||||||||||" >> "\n"; */ kvoctrainExpr kve (original); kve.setGrade (1, t_grade, false); kve.setGrade (1, f_grade, true); kve.setLesson (lesson); kve.addTranslation (translation); // FIXME: convert attribute to word type ? vocabulary.push_back(kve); } setModified (false); return is.device()->status() == IO_Ok; }
void modCalcEquinox::processLines( QTextStream &istream ) { // we open the output file // QTextStream istream(&fIn); QString outputFileName; outputFileName = OutputLineEditBatch->text(); QFile fOut( outputFileName ); fOut.open(IO_WriteOnly); QTextStream ostream(&fOut); QString line; QString space = " "; int yearB; int i = 0; long double jdsp = 0., jdsu = 0., jdau = 0., jdwin = 0., jdsp1 = 0.; KStarsData *kd = (KStarsData*) parent()->parent()->parent(); KSSun *Sun = new KSSun(kd); while ( ! istream.eof() ) { line = istream.readLine(); line.stripWhiteSpace(); //Go through the line, looking for parameters QStringList fields = QStringList::split( " ", line ); i = 0; // Read year and write in ostream if corresponds if(yearCheckBatch->isChecked() ) { yearB = fields[i].toInt(); i++; } else yearB = yearEditBatch->text().toInt(); if ( allRadioBatch->isChecked() ) ostream << yearB << space; else if(yearCheckBatch->isChecked() ) ostream << yearB << space; jdsp = Sun->springEquinox(yearB); jdsu = Sun->summerSolstice(yearB); jdau = Sun->autumnEquinox(yearB); jdwin = Sun->winterSolstice(yearB); jdsp1 = Sun->springEquinox(yearB+1); KStarsDateTime dts( jdsp ); KStarsDateTime dtu( jdsu ); KStarsDateTime dta( jdau ); KStarsDateTime dtw( jdwin ); ostream << dts.toString(Qt::ISODate) << space << (float)(jdsu - jdsp) << space << dtu.toString(Qt::ISODate) << space << (float)(jdau - jdsu) << space << dta.toString(Qt::ISODate) << space << (float)(jdwin - jdau) << space << dtw.toString(Qt::ISODate) << space << (float)(jdsp1 - jdwin) << endl; } fOut.close(); }
ConversionStatus GettextImportPlugin::readEntry(QTextStream& stream) { //kdDebug( KBABEL ) << k_funcinfo << " START" << endl; enum {Begin,Comment,Msgctxt,Msgid,Msgstr} part=Begin; QString line; bool error=false; bool recoverableError=false; bool seenMsgctxt=false; _msgstr.clear(); _msgstr.append(QString()); _msgid.clear(); _msgid.append(QString()); _msgctxt=QString(); _comment=QString(); _gettextPluralForm=false; _obsolete=false; QStringList::Iterator msgstrIt=_msgstr.begin(); while( !stream.eof() ) { const int pos=stream.device()->at(); line=stream.readLine(); //kdDebug() << "Parsing line: " << line << endl; // ### Qt4: no need of a such a check if(line.isNull()) // file end break; else if ( line.startsWith( "<<<<<<<" ) || line.startsWith( "=======" ) || line.startsWith( ">>>>>>>" ) ) { // We have found a CVS/SVN conflict marker. Abort. // (It cannot be any useful data of the PO file, as otherwise the line would start with at least a quote) kdError(KBABEL) << "CVS/SVN conflict marker found! Aborting!" << endl << line << endl; return PARSE_ERROR; } // remove whitespaces from beginning and end of line line=line.stripWhiteSpace(); if(part==Begin) { // ignore trailing newlines if(line.isEmpty()) continue; if(line.startsWith("#~")) { _obsolete=true; part=Comment; _comment=line; } else if(line.startsWith("#")) { part=Comment; _comment=line; } else if(line.find(QRegExp("^msgctxt\\s*\".*\"$")) != -1) { part=Msgctxt; // remove quotes at beginning and the end of the lines line.remove(QRegExp("^msgctxt\\s*\"")); line.remove(QRegExp("\"$")); _msgctxt=line; seenMsgctxt=true; } else if(line.find(QRegExp("^msgid\\s*\".*\"$")) != -1) { part=Msgid; // remove quotes at beginning and the end of the lines line.remove(QRegExp("^msgid\\s*\"")); line.remove(QRegExp("\"$")); (*(_msgid).begin())=line; } // one of the quotation marks is missing else if(line.find(QRegExp("^msgid\\s*\"?.*\"?$")) != -1) { part=Msgid; // remove quotes at beginning and the end of the lines line.remove(QRegExp("^msgid\\s*\"?")); line.remove(QRegExp("\"$")); (*(_msgid).begin())=line; if(!line.isEmpty()) recoverableError=true; } else { kdDebug(KBABEL) << "no comment, msgctxt or msgid found after a comment: " << line << endl; error=true; break; } } else if(part==Comment) { if(line.isEmpty() && _obsolete ) return OK; if(line.isEmpty() ) continue; else if(line.startsWith("#~")) { _comment+=("\n"+line); _obsolete=true; } else if(line.startsWith("#")) { _comment+=("\n"+line); } else if(line.find(QRegExp("^msgctxt\\s*\".*\"$")) != -1) { part=Msgctxt; // remove quotes at beginning and the end of the lines line.remove(QRegExp("^msgctxt\\s*\"")); line.remove(QRegExp("\"$")); _msgctxt=line; seenMsgctxt=true; } else if(line.find(QRegExp("^msgid\\s*\".*\"$")) != -1) { part=Msgid; // remove quotes at beginning and the end of the lines line.remove(QRegExp("^msgid\\s*\"")); line.remove(QRegExp("\"$")); (*(_msgid).begin())=line; } // one of the quotation marks is missing else if(line.find(QRegExp("^msgid\\s*\"?.*\"?$")) != -1) { part=Msgid; // remove quotes at beginning and the end of the lines line.remove(QRegExp("^msgid\\s*\"?")); line.remove(QRegExp("\"$")); (*(_msgid).begin())=line; if(!line.isEmpty()) recoverableError=true; } else { kdDebug(KBABEL) << "no comment or msgid found after a comment while parsing: " << _comment << endl; error=true; break; } } else if(part==Msgctxt) { if(line.isEmpty()) continue; else if(line.find(QRegExp("^\".*\\n?\"$")) != -1) { // remove quotes at beginning and the end of the lines line.remove(QRegExp("^\"")); line.remove(QRegExp("\"$")); // add Msgctxt line to item if(_msgctxt.isEmpty()) _msgctxt=line; else _msgctxt+=("\n"+line); } else if(line.find(QRegExp("^msgid\\s*\".*\"$")) != -1) { part=Msgid; // remove quotes at beginning and the end of the lines line.remove(QRegExp("^msgid\\s*\"")); line.remove(QRegExp("\"$")); (*(_msgid).begin())=line; } // one of the quotation marks is missing else if(line.find(QRegExp("^msgid\\s*\"?.*\"?$")) != -1) { part=Msgid; // remove quotes at beginning and the end of the lines line.remove(QRegExp("^msgid\\s*\"?")); line.remove(QRegExp("\"$")); (*(_msgid).begin())=line; if(!line.isEmpty()) recoverableError=true; } else { kdDebug(KBABEL) << "no msgid found after a msgctxt while parsing: " << _msgctxt << endl; error=true; break; } } else if(part==Msgid) { if(line.isEmpty()) continue; else if(line.find(QRegExp("^\".*\\n?\"$")) != -1) { // remove quotes at beginning and the end of the lines line.remove(QRegExp("^\"")); line.remove(QRegExp("\"$")); QStringList::Iterator it; if(_gettextPluralForm) it = _msgid.fromLast(); else it = _msgid.begin(); // add Msgid line to item if((*it).isEmpty()) (*it)=line; else (*it)+=("\n"+line); } else if(line.find(QRegExp("^msgid_plural\\s*\".*\"$")) != -1) { part=Msgid; _gettextPluralForm = true; // remove quotes at beginning and the end of the lines line.remove(QRegExp("^msgid_plural\\s*\"")); line.remove(QRegExp("\"$")); _msgid.append(line); } // one of the quotation marks is missing else if(line.find(QRegExp("^msgid_plural\\s*\"?.*\"?$")) != -1) { part=Msgid; _gettextPluralForm = true; // remove quotes at beginning and the end of the lines line.remove(QRegExp("^msgid_plural\\s*\"?")); line.remove(QRegExp("\"$")); _msgid.append(line); if(!line.isEmpty()) recoverableError=true; } else if(!_gettextPluralForm && (line.find(QRegExp("^msgstr\\s*\".*\\n?\"$")) != -1)) { part=Msgstr; // remove quotes at beginning and the end of the lines line.remove(QRegExp("^msgstr\\s*\"?")); line.remove(QRegExp("\"$")); (*msgstrIt)=line; } else if(!_gettextPluralForm && line.find(QRegExp("^msgstr\\s*\"?.*\\n?\"?$")) != -1) { part=Msgstr; // remove quotes at beginning and the end of the lines line.remove(QRegExp("^msgstr\\s*\"?")); line.remove(QRegExp("\"$")); (*msgstrIt)=line; if(!line.isEmpty()) recoverableError=true; } else if( _gettextPluralForm && (line.find(QRegExp("^msgstr\\[0\\]\\s*\".*\\n?\"$")) != -1)) { part=Msgstr; // remove quotes at beginning and the end of the lines line.remove(QRegExp("^msgstr\\[0\\]\\s*\"?")); line.remove(QRegExp("\"$")); (*msgstrIt)=line; } else if( _gettextPluralForm && (line.find(QRegExp("^msgstr\\[0\\]\\s*\"?.*\\n?\"?$")) != -1)) { part=Msgstr; // remove quotes at beginning and the end of the lines line.remove(QRegExp("^msgstr\\[0\\]\\s*\"?")); line.remove(QRegExp("\"$")); (*msgstrIt)=line; if(!line.isEmpty()) recoverableError=true; } else if ( line.startsWith( "#" ) ) { // ### TODO: could this be considered recoverable? kdDebug(KBABEL) << "comment found after a msgid while parsing: " << _msgid.first() << endl; error=true; break; } else if ( line.startsWith( "msgid" ) ) { kdDebug(KBABEL) << "Another msgid found after a msgid while parsing: " << _msgid.first() << endl; error=true; break; } // a line of the msgid with a missing quotation mark else if(line.find(QRegExp("^\"?.+\\n?\"?$")) != -1) { recoverableError=true; // remove quotes at beginning and the end of the lines line.remove(QRegExp("^\"")); line.remove(QRegExp("\"$")); QStringList::Iterator it; if( _gettextPluralForm ) it = _msgid.fromLast(); else it = _msgid.begin(); // add Msgid line to item if((*it).isEmpty()) (*it)=line; else (*it)+=("\n"+line); } else { kdDebug(KBABEL) << "no msgstr found after a msgid while parsing: " << _msgid.first() << endl; error=true; break; } } else if(part==Msgstr) { if(line.isEmpty()) continue; // another line of the msgstr else if(line.find(QRegExp("^\".*\\n?\"$")) != -1) { // remove quotes at beginning and the end of the lines line.remove(QRegExp("^\"")); line.remove(QRegExp("\"$")); if((*msgstrIt).isEmpty()) (*msgstrIt)=line; else (*msgstrIt)+=("\n"+line); } else if( _gettextPluralForm && (line.find(QRegExp("^msgstr\\[[0-9]+\\]\\s*\".*\\n?\"$")) != -1)) { // remove quotes at beginning and the end of the lines line.remove(QRegExp("^msgstr\\[[0-9]+\\]\\s*\"?")); line.remove(QRegExp("\"$")); msgstrIt=_msgstr.append(line); } else if( _gettextPluralForm && (line.find(QRegExp("^msgstr\\[[0-9]\\]\\s*\"?.*\\n?\"?$")) != -1)) { // remove quotes at beginning and the end of the lines line.remove(QRegExp("^msgstr\\[[0-9]\\]\\s*\"?")); line.remove(QRegExp("\"$")); msgstrIt=_msgstr.append(line); if(!line.isEmpty()) recoverableError=true; } else if((line.find(QRegExp("^\\s*msgid")) != -1) || (line.find(QRegExp("^\\s*#")) != -1)) { // We have read successfully one entry, so end loop. stream.device()->at(pos);// reset position in stream to beginning of this line break; } else if(line.startsWith("msgstr")) { kdDebug(KBABEL) << "Another msgstr found after a msgstr while parsing: " << _msgstr.last() << endl; error=true; break; } // another line of the msgstr with a missing quotation mark else if(line.find(QRegExp("^\"?.+\\n?\"?$")) != -1) { recoverableError=true; // remove quotes at beginning and the end of the lines line.remove(QRegExp("^\"")); line.remove(QRegExp("\"$")); if((*msgstrIt).isEmpty()) (*msgstrIt)=line; else (*msgstrIt)+=("\n"+line); } else { kdDebug(KBABEL) << "no msgid or comment found after a msgstr while parsing: " << _msgstr.last() << endl; error=true; break; } } } /* if(_gettextPluralForm) { kdDebug(KBABEL) << "gettext plural form:\n" << "msgid:\n" << _msgid.first() << "\n" << "msgid_plural:\n" << _msgid.last() << "\n" << endl; int counter=0; for(QStringList::Iterator it = _msgstr.begin(); it != _msgstr.end(); ++it) { kdDebug(KBABEL) << "msgstr[" << counter << "]:\n" << (*it) << endl; counter++; } } */ //kdDebug( KBABEL ) << k_funcinfo << " NEAR RETURN" << endl; if(error) return PARSE_ERROR; else if(recoverableError) return RECOVERED_PARSE_ERROR; else { return OK; } }