void PFSViewMainWin::setFrame( pfs::Frame *frame ) { QApplication::setOverrideCursor( QCursor( Qt::WaitCursor ) ); pfsView->setFrame( frame ); lumRange->setHistogramImage(pfsView->getPrimaryChannel()); updateChannelSelection(); updateZoomValue(); const char *luminanceTag = frame->getTags()->getString( "LUMINANCE" ); if( luminanceTag != NULL && !strcmp( luminanceTag, "DISPLAY" ) ) { setLumMappingMethod(0); lumRange->lowDynamicRange(); } updateRangeWindow(); // Set the window caption to the name of the frame, if it is given const char *fileName = frame->getTags()->getString( "FILE_NAME" ); QString qLuminance( "" ); if( luminanceTag!=NULL ) qLuminance=QString(" (") + QString(luminanceTag) + QString(")"); if( fileName == NULL ) setWindowTitle( QString( "pfsview" ) ); else { QString qFileName( fileName ); if( qFileName.length() > 30 ) setWindowTitle( QString( "pfsview: ... " ) + QString( fileName ).right( 30 ) + qLuminance); else setWindowTitle( QString( "pfsview: " ) + QString( fileName ) + qLuminance); } updateMenuEnable( ); QApplication::restoreOverrideCursor(); }
bool mitk::QmitkIOUtil::SaveToFileWriter( mitk::FileWriterWithInformation::Pointer fileWriter, mitk::BaseData::Pointer data, const std::string fileName ) { // Ensure a valid filename QString qFileName(QString::fromStdString(fileName)); QString qProposedFileName(qFileName); if(qFileName.isEmpty()) { qProposedFileName.append(fileWriter->GetDefaultFilename()); } qProposedFileName.append(fileWriter->GetDefaultExtension()); qFileName = GetFileNameWithQDialog("Save file", qProposedFileName, QString::fromAscii(fileWriter->GetFileDialogPattern())); //do nothing if the user presses cancel if ( qFileName.isEmpty() ) return false; // Check if an extension exists already and if not, append the default extension if ( !qFileName.contains( QRegExp("\\.\\w+$") ) ) { qFileName.append( fileWriter->GetDefaultExtension() ); } else { std::string extension = itksys::SystemTools::GetFilenameLastExtension( qFileName.toLocal8Bit().constData() ); if (!fileWriter->IsExtensionValid(extension)) { return false; } } //Write only if a valid name was set if(qFileName.isEmpty() == false) { fileWriter->SetFileName( qFileName.toLocal8Bit().constData() ); fileWriter->DoWrite( data ); } return true; }
bool FlpImport::tryZIPImport( trackContainer * _tc ) { // see if the file is a zip file closeFile(); const QFile &thefile = file(); int err = 0; struct zip *zfile = zip_open(qPrintable(thefile.fileName()), 0, &err); if( zfile == NULL ) { if( err == ZIP_ER_NOZIP ) { printf("flp import (zip): not a valid zip file\n"); } else if( err == ZIP_ER_OPEN ) { printf("flp import (zip): error opening file\n"); } else if( err == ZIP_ER_READ || err == ZIP_ER_SEEK ) { printf("flp import (zip): error reading file\n"); } else { printf("flp import (zip): unknown error opening zip file\n"); } return false; } // valid zip file // get temporary directory QString tmpName; { QTemporaryFile qtmp; if( qtmp.open() ) { tmpName = qtmp.fileName(); } else { zip_close(zfile); printf("flp import (zip): error getting temporary folder\n"); return false; } } QDir tmpDir = QDir::temp(); tmpDir.mkdir(tmpName); tmpDir.cd(tmpName); // unzip everything to the temp folder int buf_size = getpagesize(); char buf[buf_size]; int numFiles = zip_get_num_files(zfile); int i; bool foundFLP = false; QString flpFile = ""; for( i=0; i<numFiles; ++i ) { const char* fileName = zip_get_name(zfile, i, 0); if( fileName != NULL ) { struct zip_file *unzipFile = zip_fopen_index(zfile, i, 0); if( unzipFile != NULL ) { // we have a handle to read, now get a handle to the outfile QFile out(tmpDir.absolutePath() + QDir::separator() + fileName); out.open(QIODevice::WriteOnly); // ok we have handles on both, now do buffered writing bool readErr = false; while(true) { // read into buffer int numRead = zip_fread(unzipFile, buf, buf_size); if( numRead == -1 ) { readErr = true; printf("flp import (zip): error while reading %s " "from zip file\n", fileName); break; } out.write( buf, numRead ); if( numRead < buf_size ) break; } // we successfully read this file, check if it is // the .flp file QString qFileName(fileName); if( qFileName.endsWith(".flp") ) { foundFLP = true; flpFile = out.fileName(); } // clean up out.close(); zip_fclose(unzipFile); } else { printf("flp import (zip): unable to get %s out of %s\n", fileName, qPrintable(thefile.fileName()) ); } } } zip_close(zfile); // make sure there was a .flp file in the archive if( ! foundFLP ) { printf("flp import (zip): no .flp file found in archive\n"); return false; } // use the flp_import plugin to load the .flp file // which was extracted to the temp dir setFile(flpFile); m_fileBase = QFileInfo( flpFile ).path(); return tryFLPImport( _tc ); }
void mitk::QmitkIOUtil::SaveBaseDataWithDialog(mitk::BaseData* data, std::string fileName, QWidget* parent) { try { if (data != NULL) { /* //########### Check if we can save as standard image type via itkImageWriter mitk::Image::Pointer image = dynamic_cast<mitk::Image*>(data); QString classname(data->GetNameOfClass()); if ( image.IsNotNull() && (classname.compare("Image")==0 || classname.compare("SeedsImage")==0 ) ) { SaveImageWithDialog(image, fileName, parent); return; //succes. we can return } //########### End Check if we can save as standard image type via itkImageWriter */ //########### Check if we can save as standard pointset type via mitkPointSetWriter mitk::PointSet::Pointer pointset = dynamic_cast<mitk::PointSet*>(data); if(pointset.IsNotNull()) { SavePointSetWithDialog(pointset, fileName, parent); return; //succes. we can return } //########### End Check if we can save as standard pointset type via mitkPointSetWriter //########### Check if we can save as standard surface type via mitkVtkSurfaceWriter mitk::Surface::Pointer surface = dynamic_cast<mitk::Surface*>(data); if(surface.IsNotNull()) { SaveSurfaceWithDialog(surface, fileName, parent); return; //succes. we can return } //########### End Check if we can save as standard surface type via mitkVtkSurfaceWriter //########### None standard data type was found, try to save with extensions. // now try the file writers provided by the CoreObjectFactory mitk::CoreObjectFactory::FileWriterList fileWriters = mitk::CoreObjectFactory::GetInstance()->GetFileWriters(); mitk::CoreObjectFactory::FileWriterList fileWriterCandidates; QString fileDialogPattern; for (mitk::CoreObjectFactory::FileWriterList::iterator it = fileWriters.begin() ; it != fileWriters.end() ; ++it) { if ( (*it)->CanWriteBaseDataType(data) ) { fileWriterCandidates.push_back(*it); fileDialogPattern += QString::fromStdString((*it)->GetFileDialogPattern()) + ";;"; } } if (!fileWriterCandidates.empty()) { // remove last ';;' from pattern fileDialogPattern.remove( fileDialogPattern.size()-2, 2); // Ensure a valid filename QString qFileName(QString::fromStdString(fileName)); QString qProposedFileName( qFileName ); QString selectedFilter; if(qFileName.isEmpty()) { qProposedFileName.append(fileWriterCandidates.front()->GetDefaultFilename()); } qProposedFileName.append(fileWriterCandidates.front()->GetDefaultExtension()); qFileName = GetFileNameWithQDialog("Save file", qProposedFileName, fileDialogPattern, &selectedFilter); //do nothing if the user presses cancel if ( qFileName.isEmpty() ) return; std::string ext = itksys::SystemTools::GetFilenameLastExtension(qFileName.toStdString()); QString extension = QString::fromStdString(ext); //QString extension = "."+QFileInfo(qFileName).completeSuffix(); for (mitk::CoreObjectFactory::FileWriterList::iterator it = fileWriterCandidates.begin() ; it != fileWriterCandidates.end() ; ++it) { if ((*it)->IsExtensionValid(extension.toStdString())) { (*it)->SetFileName( qPrintable(qFileName) ); (*it)->DoWrite( data ); return; } } // if the image extension consists of two parts (e.g. *.nii.gz) we need to check again // with the two last extensions. This is to allow points within the image name. QString qFileNameCopy(qFileName); qFileNameCopy.remove(QString::fromStdString(ext)); std::string ext2 = itksys::SystemTools::GetFilenameLastExtension(qFileNameCopy.toStdString()); ext2.append(ext); extension = QString::fromStdString(ext2); for (mitk::CoreObjectFactory::FileWriterList::iterator it = fileWriterCandidates.begin() ; it != fileWriterCandidates.end() ; ++it) { if ((*it)->IsExtensionValid(extension.toStdString())) { (*it)->SetFileName( qPrintable(qFileName) ); (*it)->DoWrite( data ); return; } } // returns earlier when successful } // no appropriate writer has been found QMessageBox::critical(parent,"ERROR","Could not find file writer for this data type"); return; } }catch(itk::ExceptionObject e) { QMessageBox::critical( parent, "Exception during saving", e.GetDescription(),QMessageBox::Ok, QMessageBox::NoButton, QMessageBox::NoButton); } }