/** * Shows a dialog for choosing a file name. Opening the file is up to * the caller. * * @return File name with path and extension to determine the file type * or an empty string if the dialog was cancelled. */ QString QG_FileDialog::getOpenFileName(QWidget* parent, RS2::FormatType* type) { RS_DEBUG->print("QG_FileDialog::getOpenFileName"); // read default settings: RS_SETTINGS->beginGroup("/Paths"); QString defDir = RS_SETTINGS->readEntry("/Open", RS_SYSTEM->getHomeDir()); //QString defFilter = RS_SETTINGS->readEntry("/OpenFilter", // "Drawing Exchange (*.dxf *.DXF)"); QString defFilter = "Drawing Exchange (*.dxf *.DXF)"; RS_SETTINGS->endGroup(); RS_DEBUG->print("defDir: %s", defDir.toLatin1().data()); RS_DEBUG->print("defFilter: %s", defFilter.toLatin1().data()); QString fDxf(QObject::tr("Drawing Exchange %1").arg("(*.dxf *.DXF)")); #ifdef USE_DXFRW QString fDxfrw(QObject::tr("New Drawing Exchange %1").arg("(*.dxf)")); #endif QString fDxf1(QObject::tr("QCad 1.x file %1").arg("(*.dxf *.DXF)")); QString fLff(QObject::tr("LFF Font %1").arg("(*.lff)")); QString fCxf(QObject::tr("Font %1").arg("(*.cxf)")); QString fJww(QObject::tr("Jww %1").arg("(*.jww)")); RS_DEBUG->print("fDxf: %s", fDxf.toLatin1().data()); #ifdef USE_DXFRW RS_DEBUG->print("fDxfrw: %s", fDxfrw.toLatin1().data()); #endif RS_DEBUG->print("fDxf1: %s", fDxf1.toLatin1().data()); RS_DEBUG->print("fCxf: %s", fCxf.toLatin1().data()); RS_DEBUG->print("fJww: %s", fJww.toLatin1().data()); QString fn = ""; bool cancel = false; QFileDialog* fileDlg = new QFileDialog(parent, "File Dialog"); QStringList filters; filters.append(fDxf); #ifdef USE_DXFRW filters.append(fDxfrw); #endif filters.append(fDxf1); filters.append(fLff); filters.append(fCxf); filters.append(fJww); #if QT_VERSION >= 0x040400 fileDlg->setNameFilters(filters); #else emu_qt44_QFileDialog_setNameFilters(*fileDlg, filters); #endif fileDlg->setFileMode(QFileDialog::ExistingFile); fileDlg->setWindowTitle(QObject::tr("Open Drawing")); fileDlg->setDirectory(defDir); #if QT_VERSION >= 0x040400 fileDlg->selectNameFilter(defFilter); #endif /** 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 (fileDlg->exec()==QDialog::Accepted) { QStringList fl = fileDlg->selectedFiles(); if (!fl.isEmpty()) fn = fl[0]; fn = QDir::convertSeparators( QFileInfo(fn).absoluteFilePath() ); #if QT_VERSION >= 0x040400 if (type!=NULL) { if (fileDlg->selectedNameFilter()==fDxf1) { *type = RS2::FormatDXF1; } else if (fileDlg->selectedNameFilter()==fDxf) { *type = RS2::FormatDXF; #ifdef USE_DXFRW } else if (fileDlg->selectedNameFilter()==fDxfrw) { *type = RS2::FormatDXFRW; #endif } else if (fileDlg->selectedNameFilter()==fCxf) { *type = RS2::FormatCXF; } else if (fileDlg->selectedNameFilter()==fJww) { *type = RS2::FormatJWW; } } #endif cancel = false; } else { cancel = true; } // store new default settings: if (!cancel) { RS_SETTINGS->beginGroup("/Paths"); RS_SETTINGS->writeEntry("/Open", QFileInfo(fn).absolutePath()); RS_SETTINGS->writeEntry("/OpenFilter", fileDlg->selectedFilter()); 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; delete fileDlg; return fn; }
/** * Shows a dialog for choosing a file name. Opening the file is up to * the caller. * * @return File name with path and extension to determine the file type * or an empty string if the dialog was cancelled. */ QString QG_DialogFactory::requestImageOpenDialog() { QString strFileName = ""; // read default settings: RS_SETTINGS->beginGroup("/Paths"); QString defDir = RS_SETTINGS->readEntry("/OpenImage", RS_SYSTEM->getHomeDir()); QString defFilter = RS_SETTINGS->readEntry( "/ImageFilter", ""); RS_SETTINGS->endGroup(); QStringList filters; QString all = ""; bool haveJpeg= false; for(const QByteArray& format: QImageReader::supportedImageFormats()) { if (format.toUpper() == "JPG" || format.toUpper() == "JPEG" ){ if (!haveJpeg) { haveJpeg = true; filters.append("jpeg (*.jpeg *.jpg)"); all += " *.jpeg *.jpg"; } } else { filters.append(QString("%1 (*.%1)").arg(QString(format))); all += QString(" *.%1").arg(QString(format)); } } QString strAllImageFiles = QObject::tr("All Image Files (%1)").arg(all); filters.append(strAllImageFiles); filters.append(QObject::tr("All Files (*.*)")); QFileDialog fileDlg(nullptr, ""); fileDlg.setModal(true); fileDlg.setFileMode(QFileDialog::ExistingFile); fileDlg.setWindowTitle(QObject::tr("Open Image")); fileDlg.setDirectory(defDir); #if QT_VERSION >= 0x040400 fileDlg.setNameFilters(filters); if (defFilter.isEmpty()) defFilter = strAllImageFiles; fileDlg.selectNameFilter(defFilter); #else emu_qt44_QFileDialog_setNameFilters(fileDlg, filters); #endif if (QDialog::Accepted == fileDlg.exec()) { QStringList strSelectedFiles = fileDlg.selectedFiles(); if (!strSelectedFiles.isEmpty()) strFileName = strSelectedFiles.first(); // store new default settings: RS_SETTINGS->beginGroup("/Paths"); RS_SETTINGS->writeEntry("/OpenImage", QFileInfo(strFileName).absolutePath()); #if QT_VERSION < 0x040400 RS_SETTINGS->writeEntry("/ImageFilter", emu_qt44_QFileDialog_selectedNameFilter(fileDlg)); #else RS_SETTINGS->writeEntry("/ImageFilter", fileDlg.selectedNameFilter()); #endif RS_SETTINGS->endGroup(); } return strFileName; }