Exemple #1
0
bool wxTextFile::OnWrite(wxTextFileType typeNew, const wxMBConv& conv)
{
    wxFileName fn = m_strBufferName;

    // We do NOT want wxPATH_NORM_CASE here, or the case will not
    // be preserved.
    if ( !fn.IsAbsolute() )
        fn.Normalize(wxPATH_NORM_ENV_VARS | wxPATH_NORM_DOTS | wxPATH_NORM_TILDE |
                     wxPATH_NORM_ABSOLUTE | wxPATH_NORM_LONG);

    wxTempFile fileTmp(fn.GetFullPath());

    if ( !fileTmp.IsOpened() ) {
        wxLogError(_("can't write buffer '%s' to disk."), m_strBufferName.c_str());
        return false;
    }

    size_t nCount = GetLineCount();
    for ( size_t n = 0; n < nCount; n++ ) {
        fileTmp.Write(GetLine(n) +
                      GetEOL(typeNew == wxTextFileType_None ? GetLineType(n)
                                                            : typeNew),
                      conv);
    }

    // replace the old file with this one
    return fileTmp.Commit();
}
Exemple #2
0
bool SpeechRecognizerModule::handleAsyncRecognitionCmd(const Bottle& cmd, Bottle& reply)
{
    HRESULT hr;
    string firstVocab = cmd.get(0).asString().c_str();
	if (firstVocab == "getGrammar")
    {
		reply.addString("NOT_IMPLEMENTED");
		return true;
	}

    if (firstVocab == "clear")
    {
        bool everythingIsFine=true;
        SPSTATEHANDLE rootRule;
        everythingIsFine &= SUCCEEDED(m_cpGrammarFromFile->SetGrammarState(SPGS_DISABLED));
        everythingIsFine &= SUCCEEDED(m_cpGrammarFromFile->GetRule(L"rootRule", NULL, SPRAF_TopLevel | SPRAF_Active, TRUE, &rootRule));
        everythingIsFine &= SUCCEEDED(m_cpGrammarFromFile->ClearRule(rootRule));
        everythingIsFine &= SUCCEEDED(hr = m_cpGrammarFromFile->Commit(NULL));
        everythingIsFine &= SUCCEEDED(m_cpGrammarFromFile->SetGrammarState(SPGS_ENABLED));        
        everythingIsFine &= SUCCEEDED(m_cpGrammarFromFile->SetRuleState(NULL, NULL, SPRS_ACTIVE));
        everythingIsFine &= SUCCEEDED(m_cpRecoCtxt->Resume(0));
        reply.addString("Cleared");
        return true;
    }

    if (firstVocab == "addGrammar")
    {    
        string grammar = cmd.get(1).asString().c_str();
        bool everythingIsFine = setGrammarCustom(m_cpGrammarFromFile,grammar,true);
        reply.addString("Added");
        return true;
    }

    if (firstVocab == "loadXML")
    { 
        string xml = cmd.get(1).asString().c_str();
        ofstream fileTmp("grammarTmp.grxml");
        fileTmp<<xml;
        fileTmp.close();

        std::wstring tmp = s2ws("grammarTmp.grxml");
        LPCWSTR cwgrammarfile = tmp.c_str();

        bool everythingIsFine =true;
        //everythingIsFine &= SUCCEEDED( m_cpRecoCtxt->CreateGrammar( 1, &m_cpGrammarFromFile ));
        everythingIsFine &= SUCCEEDED( m_cpGrammarFromFile->SetGrammarState(SPGS_DISABLED));
        everythingIsFine &= SUCCEEDED( m_cpGrammarFromFile->LoadCmdFromFile(cwgrammarfile, SPLO_DYNAMIC));

        everythingIsFine &= SUCCEEDED( m_cpGrammarFromFile->SetGrammarState(SPGS_ENABLED));
        everythingIsFine &= SUCCEEDED(m_cpGrammarFromFile->SetRuleState(NULL, NULL, SPRS_ACTIVE));
        everythingIsFine &= SUCCEEDED(m_cpRecoCtxt->Resume(0));

        refreshFromVocabulories(m_cpGrammarFromFile);
        reply.addString("Loaded");
        return true;
    }

    return false;
}
Exemple #3
0
int ArcWriter::buildArchive(QString sourceDir, QString outputPath)
{
    QHash<quint32, size_offset_t> oldOffsetToNewSizeOffset;

    QFile outputFile(outputPath);

    if(!outputFile.open(QIODevice::WriteOnly))
    {
        return 1;
    }

    // Write entries count and data offset
    outputFile.write((char*)&entriesCount, sizeof(quint32));
    outputFile.write((char*)&dataOffset, sizeof(quint32));

    // Write undecoded header
    outputFile.write(undecodedHeader);

    // Update entries data
    QVector<arc_entry_t>::iterator it;
    QVector<arc_entry_t> sortedEntries(entries);

    qSort(sortedEntries.begin(), sortedEntries.end(), arc_entry_t::lessThan);

    quint32 accumOffset = sortedEntries.begin()->offset;
    for( it = sortedEntries.begin(); it != sortedEntries.end(); ++it)
    {
        arc_entry_t entry = *it;
        QString fileName = offsetToFileName.value(entry.offset);

        QString path = sourceDir + QString("\\") + fileName;
        QFile fileTmp(path);
        fileTmp.open(QIODevice::ReadOnly);

        quint32 realSize = fileTmp.size();

        fileTmp.close();

        oldOffsetToNewSizeOffset.insert(it->offset, size_offset_t(realSize, accumOffset));

        accumOffset += realSize;
    }

    sortedEntries.clear();

    // Write entries list
    for( it = entries.begin(); it != entries.end(); ++it)
    {
        arc_entry_t entry = *it;

        // Apply corrections
        size_offset_t newInfo = oldOffsetToNewSizeOffset.value(entry.offset);
        entry.offset = newInfo.offset;
        entry.size = newInfo.size;

        outputFile.write((char*)&entry, sizeof(arc_entry_t));
    }

    // Copy files data
    QVector<QString>::iterator file_it;

    for( file_it = files.begin(); file_it != files.end(); ++file_it)
    {
        QString path = sourceDir + QString("\\") + *file_it;
        QFile fileIn(path);

        if(!fileIn.open(QIODevice::ReadOnly))
        {
            fprintf(stderr, "File [%s] open failed!\n", path.toAscii().data());
            return 1;
        }

        /*if (checkSize && (fileIn.size() != file_it->second))
        {
            fprintf(stderr, "File [%s] size check failed!\n", path.toAscii().data());
            return 1;
        }*/

        outputFile.write(fileIn.readAll());
        fileIn.close();
    }

    outputFile.close();

    return 0;
}
void TelechargerFichier::nouveauTelechargement(const QString lien)
{
	show();
	emit DesactiverIcone();

	if (lien.isEmpty() && lineLien->text().isEmpty())
		return;

	QUrl urlFichier = lineLien->text();

	if (!lien.isEmpty())
		urlFichier = lien;

	QUrlInfo infosUrl;
		infosUrl.setName(lineLien->text());

	if (!lien.isEmpty())
		infosUrl.setName(lien);


	if (infosUrl.isFile())
	{
		QFileInfo infosDL(infosUrl.name());

		if (QMessageBox::question(this, "Multiuso", "Voulez-vous enregistrer <em>« " + infosDL.fileName() + " »</em> ?",
					QMessageBox::Yes | QMessageBox::No) == QMessageBox::No)
			return;


		QSettings emplacementDossier(Multiuso::appDirPath() + "/ini/config.ini", QSettings::IniFormat);

		QDir dir;
			dir.mkpath(emplacementDossier.value("telechargements/dossier").toString() + "/Multiuso - Téléchargements");

		QFile fileTmp(emplacementDossier.value("telechargements/dossier").toString() + "/Multiuso - Téléchargements/" + infosDL.fileName());

		if (fileTmp.exists())
		{
			int reponse = QMessageBox::question(this, "Multiuso", "Le fichier <em>« " + infosDL.fileName() + " »</em> existe déjà !<br />"
					"Voulez-vous le remplacer ?", QMessageBox::Yes | QMessageBox::No);

			if (reponse == QMessageBox::Yes)
				fileTmp.remove();

			else
				return;
		}

		QNetworkRequest requete(urlFichier);

		QNetworkAccessManager *manager = new QNetworkAccessManager;

		QNetworkReply *reponse = manager->get(requete);

		connect(reponse, SIGNAL(downloadProgress(qint64, qint64)), this, SLOT(telechargementContinue(qint64, qint64)));
		connect(reponse, SIGNAL(finished()), this, SLOT(finTelechargement()));

		reponses << reponse;

		QProgressBar *progression = new QProgressBar;

		progressionsTelechargements << progression;

		nomsFichiers << infosDL.fileName();

		QString nomDuFichierActuel = infosDL.fileName();
			nomDuFichierActuel = Multiuso::htmlspecialchars(nomDuFichierActuel);

		QTableWidgetItem *nom = new QTableWidgetItem(nomDuFichierActuel);
			nom->setFlags(nom->flags() & ~Qt::ItemIsEditable);

		QTableWidgetItem *statut = new QTableWidgetItem("En attente...");
			statut->setFlags(statut->flags() & ~Qt::ItemIsEditable);

		QPushButton *annuler = new QPushButton;
			annuler->setToolTip("Téléchargement n°" + QString::number(listeTelechargements->rowCount() + 1));
			annuler->setIcon(QIcon(":/icones/telechargements/annuler.png"));
			connect(annuler, SIGNAL(clicked()), this, SLOT(annulerTelechargement()));

		int ligne = listeTelechargements->rowCount();

		listeTelechargements->setRowCount(listeTelechargements->rowCount() + 1);
		listeTelechargements->setCellWidget(ligne, 0, annuler);
		listeTelechargements->setItem(ligne, 1, nom);
		listeTelechargements->setCellWidget(ligne, 2, progression);
		listeTelechargements->setItem(ligne, 3, statut);

		listeTelechargements->resizeColumnsToContents();
		listeTelechargements->horizontalHeader()->setStretchLastSection(true);
	}
}
Exemple #5
0
bool SpeechRecognizerModule::handleRecognitionCmd(const Bottle& cmd, Bottle& reply)
{
    string firstVocab = cmd.get(0).asString().c_str();

    if (firstVocab == "timeout")
    {
        m_timeout = cmd.get(1).asInt();
        //reply.addInt(true);
        return false;
    }

    else if (firstVocab == "dictation")
    {
        bool everythingIsFine = TRUE;
        everythingIsFine &= SUCCEEDED(m_cpGrammarDictation->SetDictationState( SPRS_ACTIVE ));
        yInfo() <<"Dictation is on..." ;

        if (!USE_LEGACY)
        {
            reply.addList() = waitNextRecognition(m_timeout);
        }
        else
        {   
            list< pair<string, double> > results = waitNextRecognitionLEGACY(m_timeout);
            if (results.size()>0)
				for(list< pair<string, double> >::iterator it = results.begin(); it != results.end(); it++)
				{
					reply.addString(it->first.c_str());
					reply.addDouble(it->second);
				}
			else
				reply.addString("-1");
        }
        yInfo() <<"Dictation is off...";

        //Turn off dictation and go back to the file grammar
        everythingIsFine &= SUCCEEDED(m_cpGrammarDictation->SetDictationState( SPRS_INACTIVE ));
        everythingIsFine &=SUCCEEDED(m_cpGrammarFromFile->SetGrammarState(SPGS_ENABLED));  
        //reply.addInt(true);
        return true;
    }    
    // If we are not in dictation then we set and switch to the runtimeGrammar
    else if (firstVocab == "grammarXML")
    {
        string xml = cmd.get(1).asString().c_str();
        ofstream fileTmp("grammarTmp.grxml");
        fileTmp<<xml;
        fileTmp.close();

        std::wstring tmp = s2ws("grammarTmp.grxml");
        LPCWSTR cwgrammarfile = tmp.c_str();

        bool everythingIsFine =true;
        everythingIsFine &= SUCCEEDED( m_cpGrammarRuntime->SetGrammarState(SPGS_DISABLED));
        everythingIsFine &= SUCCEEDED( m_cpGrammarRuntime->LoadCmdFromFile(cwgrammarfile, SPLO_DYNAMIC));
        everythingIsFine &= SUCCEEDED(m_cpGrammarRuntime->SetRuleState(NULL, NULL, SPRS_ACTIVE));
        everythingIsFine &= SUCCEEDED(m_cpRecoCtxt->Resume(0));

        refreshFromVocabulories(m_cpGrammarRuntime);

        //reply.addInt(everythingIsFine);
    }

    else if (firstVocab == "choices")
    {
        string choices ="";
        for (int wI = 1; wI < cmd.size(); wI++)
        {
            choices+=cmd.get(wI).asString().c_str();
            if (wI<cmd.size()-1)
                choices+="|";
        }
        setGrammarCustom(m_cpGrammarRuntime,choices,false);
    }
    else if (firstVocab == "grammarSimple")
    {
        string RADStyle = cmd.get(1).asString().c_str();
        yInfo() <<"Setting runtime grammar to : "<<RADStyle ;
        setGrammarCustom(m_cpGrammarRuntime,RADStyle,false);
    }
    else 
    {
        reply.addString("UNKNOWN");
        return false;
    }

    //Disable the from file grammar
    SUCCEEDED(m_cpGrammarFromFile->SetGrammarState(SPGS_DISABLED)); 
    SUCCEEDED(m_cpGrammarRuntime->SetGrammarState(SPGS_ENABLED));         

    //Force blocking recognition
    if (!USE_LEGACY)
    {
        reply.addList() = waitNextRecognition(m_timeout);
    }
    else
    {   
        list< pair<string, double> > results = waitNextRecognitionLEGACY(m_timeout);
        if (results.size()>0)
			for(list< pair<string, double> >::iterator it = results.begin(); it != results.end(); it++)
			{
				reply.addString(it->first.c_str());
				reply.addDouble(it->second);
			}
		else
			reply.addString("-1");
    }
    //Disable the runtime grammar
    SUCCEEDED(m_cpGrammarRuntime->SetGrammarState(SPGS_DISABLED));   
    SUCCEEDED(m_cpGrammarFromFile->SetGrammarState(SPGS_ENABLED));        
    return true;
}