OcrEngine::EngineError KadmosDialog::findClassifiers() { findClassifierPath(); KLocale *locale = KGlobal::locale(); const QStringList allCountries = locale->allCountriesList(); for (QStringList::const_iterator it = allCountries.constBegin(); it!=allCountries.constEnd(); ++it) { m_longCountry2short[locale->countryCodeToName(*it)] = *it; } m_longCountry2short[i18n("European Countries")] = "eu"; m_longCountry2short[CNTRY_CZ] = "cz"; m_longCountry2short[CNTRY_GB] = "us"; QStringList lst; /* custom Path */ if( ! m_customClassifierPath.isEmpty() ) { QDir dir( m_customClassifierPath ); QStringList lst1 = dir.entryList(QStringList("ttf*.rec")); for ( QStringList::Iterator it = lst1.begin(); it != lst1.end(); ++it ) { lst << m_customClassifierPath + *it; } lst1 = dir.entryList(QStringList("hand*.rec")); for ( QStringList::Iterator it = lst1.begin(); it != lst1.end(); ++it ) { lst << m_customClassifierPath + *it; } lst1 = dir.entryList(QStringList("norm*.rec")); for ( QStringList::Iterator it = lst1.begin(); it != lst1.end(); ++it ) { lst << m_customClassifierPath + *it; } } else { /* standard location */ KStandardDirs stdDir; kDebug() << "Starting to read resources"; lst = stdDir.findAllResources("data", "kooka/classifiers/*.rec", KStandardDirs::Recursive|KStandardDirs::NoDuplicates); } /* no go through lst and sort out hand-, ttf- and norm classifier */ for ( QStringList::Iterator it = lst.begin(); it != lst.end(); ++it ) { kDebug() << "Checking file:" << (*it); QFileInfo fi(*it); QString name = fi.fileName().toLower(); if (name.startsWith("ttf")) { QString lang = name.mid(3,2); if( allCountries.contains(lang) ) { QString lngCountry = locale->countryCodeToName(lang); if( lngCountry.isEmpty() ) lngCountry = name; m_ttfClassifier << lngCountry; kDebug() << "TTF: Insert country" << lngCountry; } else if( lang == "cz" ) { m_ttfClassifier << CNTRY_CZ; } else if( lang == "us" ) { m_ttfClassifier << CNTRY_GB; } else { m_ttfClassifier << name; kDebug() << "TTF: Unknown country"; } } else if( name.startsWith( "hand" ) ) { QString lang = name.mid(4,2); if( allCountries.contains(lang) ) { QString lngCountry = locale->countryCodeToName(lang); if( lngCountry.isEmpty() ) lngCountry = name; m_handClassifier << lngCountry; } else if( lang == "cz" ) { m_handClassifier << i18n( "Czech Republic, Slovakia"); } else if( lang == "us" ) { m_handClassifier << i18n( "Great Britain, USA" ); } else { kDebug() << "HAND: Unknown country" << lang; m_handClassifier << name; } } else if( name.startsWith( "norm" )) { m_haveNorm = true; } kDebug() << "Found classifier:" << (*it); m_classifierPath << *it; } if( m_handClassifier.count()+m_ttfClassifier.count()>0 ) { /* There are classifiers */ return OcrEngine::ENG_OK; } else { /* Classifier are missing */ return OcrEngine::ENG_DATA_MISSING; } }