示例#1
0
void
DownloadJob::onUrlRetrieved( const QVariantMap& data )
{
    tDebug() << Q_FUNC_INFO << data;
    QUrl localFile = prepareFilename();
    if ( m_file )
    {
        tLog() << "Recovering from failed download for track:" << toString() << "-" << m_retries << "retries so far.";
        m_finished = false;
        delete m_file;
        m_file = 0;
    }

    tLog() << "Saving download" << m_format.url << "to file:" << localFile << localFile.toLocalFile();

    m_file = new QFile( localFile.toString() );
    m_localFile = localFile.toString();

    if ( m_tryResuming && checkForResumedFile() )
        return;

    m_reply = Tomahawk::Utils::nam()->get( QNetworkRequest( data[ "url" ].toString() ) );

    connect( m_reply, SIGNAL( error( QNetworkReply::NetworkError ) ), SLOT( onDownloadError( QNetworkReply::NetworkError ) ) );
    connect( m_reply, SIGNAL( downloadProgress( qint64, qint64 ) ), SLOT( onDownloadProgress( qint64, qint64 ) ) );
    connect( m_reply, SIGNAL( finished() ), SLOT( onDownloadNetworkFinished() ) );

    setState( Running );
}
示例#2
0
bool
DownloadJob::checkForResumedFile()
{
    tLog() << Q_FUNC_INFO;
    if ( !m_tryResuming )
        return false;

    QUrl localFile = prepareFilename();
    QFileInfo fi( localFile.toString() );

    tLog() << Q_FUNC_INFO << m_fileSize << fi.size();

    if ( fi.size() > 0 && fi.exists() && fi.size() == m_fileSize )
    {
        tLog() << Q_FUNC_INFO << "Detected previously finished download.";
        m_rcvdSize = fi.size();
        m_finished = true;
        onDownloadFinished();
        return true;
    }

    return false;
}
示例#3
0
// Load script from file
// Script is first read into memory buffer and then line beginning with "#!" (line with script interpreter specification in
// Linux) is converted into Squirrel comment. This line must be BEFORE actual script text
static bool LoadScript (const char* fileName)
{
	bool	res  = false;
	FILE*	file = NULL;
	SQChar* buf  = NULL;

	// RVF +
	std::string canonicalizedFilename = prepareFilename(fileName);
	fileName = canonicalizedFilename.c_str();
	// RVF -
	try
	{
#if defined(_MSC_VER) && (_MSC_VER >= 1400)
		if (fopen_s(&file, ConvPath(fileName, SQTrue), "rb"))
			file = NULL;
#else
		file = fopen(ConvPath(fileName, SQTrue), "rb");
#endif
		if (!file)
			throw "Failed to open the file";

		fseek(file, 0, SEEK_END);
		SQInteger size = SQInteger(ftell(file));
		if (!size)
			throw "File is empty";

		buf = (SQChar*)malloc(size + 1);
		if (!buf)
			throw "Not enough memory for script";

		fseek(file, 0, SEEK_SET);
		if (!fread(buf, size, 1, file))
			throw "Failed to read script";

		buf[size - 1] = 0;

		for (SQChar* c = buf; *c; ++c)
		{
			if (!isspace(*c))
			{
				if ((c[0] == '#') && (c[1] == '!'))
					c[0] = c[1] = '/';
				break;
			}
		}

		if (SQ_FAILED(sq_compilebuffer(sqvm, buf, size, fileName, SQTrue)))
			throw "Failed to compile script";

		res = true;
	}

	catch (const char* errMsg)
	{
		PrintError("ERROR: %s: %s.\n", fileName, errMsg);
	}

	if (file)
		fclose(file);

	free(buf);

	return res;
}
示例#4
0
void QmitkToFRecorderWidget::OnStartRecorder()
{
  m_Controls->m_StartRecordingButton->setChecked(true);
  m_Controls->m_RecorderGroupBox->setEnabled(false);
  this->repaint();

  int numOfFrames = m_Controls->m_NumOfFramesSpinBox->value();
  try
  {
    bool fileOK = true;
    bool distanceImageSelected = true;
    bool amplitudeImageSelected = false;
    bool intensityImageSelected = false;
    bool rgbImageSelected = false;
    bool rawDataSelected = false;

    //Set check boxes in dialog according to device properties
    m_ToFImageGrabber->GetCameraDevice()->GetBoolProperty("HasAmplitudeImage",amplitudeImageSelected);
    m_ToFImageGrabber->GetCameraDevice()->GetBoolProperty("HasIntensityImage",intensityImageSelected);
    m_ToFImageGrabber->GetCameraDevice()->GetBoolProperty("HasRGBImage",rgbImageSelected);

    QString tmpFileName("");
    QString selectedFilter("");
    QString imageFileName("");
    mitk::ToFImageWriter::ToFImageType tofImageType;
    tmpFileName = QmitkToFRecorderWidget::getSaveFileName(tofImageType,
      distanceImageSelected, amplitudeImageSelected, intensityImageSelected, rgbImageSelected, rawDataSelected,
      NULL, "Save Image To...", imageFileName, "NRRD Images (*.nrrd);;PIC Images - deprecated (*.pic);;Text (*.csv)", &selectedFilter);

    if (tmpFileName.isEmpty())
    {
      fileOK = false;
    }
    else
    {
      imageFileName = tmpFileName;
    }

    if (fileOK)
    {
      std::string dir = itksys::SystemTools::GetFilenamePath( imageFileName.toStdString() );
      std::string baseFilename = itksys::SystemTools::GetFilenameWithoutLastExtension( imageFileName.toStdString() );
      std::string extension = itksys::SystemTools::GetFilenameLastExtension( imageFileName.toStdString() );

      int integrationTime = this->m_ToFImageGrabber->GetIntegrationTime();
      int modulationFreq = this->m_ToFImageGrabber->GetModulationFrequency();

      QString integrationTimeStr;
      integrationTimeStr.setNum(integrationTime);
      QString modulationFreqStr;
      modulationFreqStr.setNum(modulationFreq);
      QString numOfFramesStr("");
      if (this->m_RecordMode == mitk::ToFImageRecorder::PerFrames)
      {
        numOfFramesStr.setNum(numOfFrames);
      }

      std::string distImageFileName = prepareFilename(dir, baseFilename, modulationFreqStr.toStdString(),
        integrationTimeStr.toStdString(), numOfFramesStr.toStdString(), extension, "_DistanceImage");
      MITK_INFO << "Save distance data to: " << distImageFileName;

      std::string amplImageFileName = prepareFilename(dir, baseFilename, modulationFreqStr.toStdString(),
        integrationTimeStr.toStdString(), numOfFramesStr.toStdString(), extension, "_AmplitudeImage");
      MITK_INFO << "Save amplitude data to: " << amplImageFileName;

      std::string intenImageFileName = prepareFilename(dir, baseFilename, modulationFreqStr.toStdString(),
        integrationTimeStr.toStdString(), numOfFramesStr.toStdString(), extension, "_IntensityImage");
      MITK_INFO << "Save intensity data to: " << intenImageFileName;

      std::string rgbImageFileName = prepareFilename(dir, baseFilename, modulationFreqStr.toStdString(),
        integrationTimeStr.toStdString(), numOfFramesStr.toStdString(), extension, "_RGBImage");
      MITK_INFO << "Save intensity data to: " << rgbImageFileName;

      if (selectedFilter.compare("Text (*.csv)") == 0)
      {
        this->m_ToFImageRecorder->SetFileFormat(".csv");
      }
      else if (selectedFilter.compare("PIC Images - deprecated (*.pic)") == 0)
      {
        //default
        this->m_ToFImageRecorder->SetFileFormat(".pic");

        QMessageBox::warning(NULL, "Deprecated File Format!",
          "Please note that *.pic file format is deprecated and not longer supported! The suggested file format for images is *.nrrd!");
      }
      else if (selectedFilter.compare("NRRD Images (*.nrrd)") == 0)
      {
        this->m_ToFImageRecorder->SetFileFormat(".nrrd");
      }
      else
      {
        QMessageBox::warning(NULL, "Unsupported file format!", "Please specify one of the supported file formats *.nrrd, *.csv!");
        return;
      }

      numOfFrames = m_Controls->m_NumOfFramesSpinBox->value();
      this->m_ToFImageRecorder->SetDistanceImageFileName(distImageFileName);
      this->m_ToFImageRecorder->SetAmplitudeImageFileName(amplImageFileName);
      this->m_ToFImageRecorder->SetIntensityImageFileName(intenImageFileName);
      this->m_ToFImageRecorder->SetRGBImageFileName(rgbImageFileName);
      this->m_ToFImageRecorder->SetToFImageType(tofImageType);
      this->m_ToFImageRecorder->SetDistanceImageSelected(distanceImageSelected);
      this->m_ToFImageRecorder->SetAmplitudeImageSelected(amplitudeImageSelected);
      this->m_ToFImageRecorder->SetIntensityImageSelected(intensityImageSelected);
      this->m_ToFImageRecorder->SetRGBImageSelected(rgbImageSelected);
      this->m_ToFImageRecorder->SetRecordMode(this->m_RecordMode);
      this->m_ToFImageRecorder->SetNumOfFrames(numOfFrames);

      emit RecordingStarted();
      this->m_ToFImageRecorder->StartRecording();
    }
    else
    {
      this->OnRecordingStopped();
    }
  }
  catch(std::exception& e)
  {
    QMessageBox::critical(NULL, "Error", QString(e.what()));
    this->OnRecordingStopped();
  }
}