void QQuickAbstractFileDialog::setNameFilters(const QStringList &f) { m_options->setNameFilters(f); if (f.isEmpty()) selectNameFilter(QString()); else if (!f.contains(selectedNameFilter())) selectNameFilter(f.first()); emit nameFiltersChanged(); }
int InviwoFileDialog::exec() { QFileDialog::setNameFilters(extensions_); QFileDialog::setSidebarUrls(sidebarURLs_); // use filter used for this path type last time QString filter{getPreviousExtension(pathType_)}; if (extensions_.contains(filter)) { QFileDialog::selectNameFilter(filter); } // initialize selected filter selectedFilter_ = getMatchingFileExtension(filter); if (!currentPath_.isEmpty()) { QFileDialog::setDirectory(currentPath_); } int ret = QFileDialog::exec(); if (ret == QDialog::Accepted) { setPreviousPath(pathType_, directory().absolutePath()); setPreviousExtension(pathType_, selectedNameFilter()); } return ret; }
QString QG_FileDialog::getSaveFile(RS2::FormatType* type){ setAcceptMode ( QFileDialog::AcceptSave ); // read default settings: RS_SETTINGS->beginGroup("/Paths"); QString defDir = RS_SETTINGS->readEntry("/Save", RS_SYSTEM->getHomeDir()); /* QString defFilter = RS_SETTINGS->readEntry("/SaveFilter", "Drawing Exchange DXF 2000 (*.dxf)");*/ RS_SETTINGS->endGroup(); if(!defDir.endsWith("/") && !defDir.endsWith("\\")) defDir += QDir::separator(); RS_DEBUG->print("defDir: %s", defDir.toLatin1().data()); // setup filters QStringList filters; #ifdef JWW_WRITE_SUPPORT filters << fDxfrw2007 << fDxfrw2004 << fDxfrw2000 << fDxfrw14 << fDxfrw12 << fJww << fLff << fCxf; #else filters << fDxfrw2007 << fDxfrw2004 << fDxfrw2000 << fDxfrw14 << fDxfrw12 << fLff << fCxf; #endif ftype = RS2::FormatDXFRW; RS_DEBUG->print("defFilter: %s", fDxfrw2007.toLatin1().data()); // when defFilter is added the below should use the default extension. // generate an untitled name QString fn = tr("Untitled"); if(QFile::exists( defDir + fn + getExtension( ftype ) )) { int fileCount = 1; while(QFile::exists( defDir + fn + QString("%1").arg(fileCount) + getExtension(ftype)) ) ++fileCount; fn += QString("%1").arg(fileCount); } // initialize dialog properties setWindowTitle(tr("Save %1 As").arg(name)); setFileMode(QFileDialog::AnyFile); setDirectory(defDir); setNameFilters(filters); selectNameFilter(fDxfrw2007); selectFile(fn); auto ext=getExtension(ftype); if(ext.size()==4){ if(ext[0]=='.') ext.remove(0,1); } if(ext.size()==3) setDefaultSuffix (ext); // only return non empty string when we have a complete, user approved, file name. if (exec()!=QDialog::Accepted) return QString(""); QStringList fl = selectedFiles(); if (fl.isEmpty()) return QString(""); QFileInfo fi = QFileInfo( fl[0] ); fn = QDir::toNativeSeparators( fi.absoluteFilePath() ); getType(selectedNameFilter()); if (type) *type = ftype; // append default extension: if (!fi.fileName().endsWith(".dxf",Qt::CaseInsensitive)) fn += getExtension(ftype); // store new default settings: RS_SETTINGS->beginGroup("/Paths"); RS_SETTINGS->writeEntry("/Save", fi.absolutePath()); //RS_SETTINGS->writeEntry("/SaveFilter", fileDlg->selectedFilter()); RS_SETTINGS->endGroup(); return fn; }
QString QG_FileDialog::getOpenFile(RS2::FormatType* type){ // bool fileAccepted = false; setAcceptMode ( QFileDialog::AcceptOpen ); // read default settings: RS_SETTINGS->beginGroup("/Paths"); QString defDir = RS_SETTINGS->readEntry("/Open", RS_SYSTEM->getHomeDir()); QString open_filter = RS_SETTINGS->readEntry("/OpenFilter", fDxfrw); RS_SETTINGS->endGroup(); RS_DEBUG->print("defDir: %s", defDir.toLatin1().data()); QString fn = ""; QStringList filters; #ifdef DWGSUPPORT filters << fDxfrw << fDxf1 << fDwg << fLff << fCxf << fJww; #else filters << fDxfrw << fDxf1 << fLff << fCxf << fJww; #endif setWindowTitle(tr("Open %1").arg(name)); setNameFilters(filters); setDirectory(defDir); setFileMode(QFileDialog::ExistingFile); selectNameFilter(open_filter); ftype= RS2::FormatDXFRW; RS_DEBUG->print("defFilter: %s", fDxfrw.toLatin1().data()); /* preview RVT PORT preview is currently not supported by QT4 RS_Graphic* gr = new RS_Graphic; QG_GraphicView* prev = new QG_GraphicView(parent); prev->setContainer(gr); prev->setBorders(1, 1, 1, 1); fileDlg->setContentsPreviewEnabled(true); fileDlg->setContentsPreview(prev, prev); */ if (exec()==QDialog::Accepted) { QStringList fl = selectedFiles(); if (!fl.isEmpty()) { fn = fl[0]; } fn = QDir::toNativeSeparators( QFileInfo(fn).absoluteFilePath() ); if (type) { getType(selectedNameFilter()); *type = ftype; } // store new default settings: RS_SETTINGS->beginGroup("/Paths"); RS_SETTINGS->writeEntry("/Open", QFileInfo(fn).absolutePath()); RS_SETTINGS->writeEntry("/OpenFilter", selectedNameFilter()); RS_SETTINGS->endGroup(); } RS_DEBUG->print("QG_FileDialog::getOpenFileName: fileName: %s", fn.toLatin1().data()); RS_DEBUG->print("QG_FileDialog::getOpenFileName: OK"); // RVT PORT delete prev; // RVT PORT delete gr; return fn; }