Пример #1
0
void ReportEditWidget::saveToFile()
{
    QFileDialog dlg;
    dlg.setAcceptMode(QFileDialog::AcceptSave);
    dlg.setFileMode(QFileDialog::AnyFile);
    dlg.setViewMode(QFileDialog::List);

    QStringList filters;
    filters << tr("All reports (*.xml *.ncr *.ods)");
    filters << tr("NcReport (*.ncr)");
    filters << tr("CuteReport (*.xml)");
    filters << tr("OO Calc (*.ods)");
    filters << tr("All files (*.*)");
    dlg.setNameFilters(filters);

    QString ext;
    int type = ui->cmbType->currentKey().toInt();
    switch (type) {
    case Report::NcReportEngine :
        ext = ".ncr";
        dlg.selectFilter(filters.at(1));
        break;
    case Report::CuteReportEngine :
        ext = ".xml";
        dlg.selectFilter(filters.at(2));
        break;
    case Report::OpenOfficeEngine :
        ext = ".ods";
        dlg.selectFilter(filters.at(3));
        break;
    default:
        break;
    }

    dlg.selectFile(ui->edName->text() + ext);
    if (dlg.exec() == QDialog::Accepted) {
        QFile f(dlg.selectedFiles().first());
        if (!f.open(QIODevice::WriteOnly)) {
            QMessageBox::critical(this, tr("Save"), f.errorString());
            return;
        }

        f.write(m_data.toUtf8());
        f.close();
    }
}
Пример #2
0
void
pfmPage::slotPFMFileBrowse ()
{
    QStringList         files, filters;
    QString             file;


    QFileDialog *fd = new QFileDialog (this, tr ("pfmLoadM Open PFM Structure"));
    fd->setViewMode (QFileDialog::List);


    //  Always add the current working directory and the last used directory to the sidebar URLs in case we're running from the command line.
    //  This function is in the nvutility library.

    setSidebarUrls (fd, pfm_global->output_dir);


    filters << tr ("PFM (*.pfm)");

    fd->setFilters (filters);
    fd->setFileMode (QFileDialog::AnyFile);
    fd->selectFilter (tr ("PFM (*.pfm)"));

    if (fd->exec () == QDialog::Accepted)
    {
        //  Save the directory that we were in when we selected a file.

        pfm_global->output_dir = fd->directory ().absolutePath ();

        files = fd->selectedFiles ();

        pfm_def->name = files.at (0);


        if (!pfm_def->name.isEmpty())
        {
            if (!pfm_def->name.endsWith (".pfm")) pfm_def->name.append (".pfm");


            //  This will trigger slotPFMFileEdit.

            pfm_file_edit->setText (pfm_def->name);
        }
    }
}
Пример #3
0
void
pfmPage::slotAreaFileBrowse ()
{
    QFileDialog fd (this, tr ("pfmLoadM Area File"));
    fd.setViewMode (QFileDialog::List);


    //  Always add the current working directory and the last used directory to the sidebar URLs in case we're running from the command line.
    //  This function is in the nvutility library.

    setSidebarUrls (&fd, pfm_global->area_dir);


    QStringList filters;
    filters << tr ("Area file (*.ARE *.are *.afs)");

    fd.setFilters (filters);
    fd.setFileMode (QFileDialog::ExistingFile);
    fd.selectFilter (tr ("Area file (*.ARE *.are *.afs)"));


    QStringList files;
    if (fd.exec () == QDialog::Accepted)
    {
        //  Save the directory that we were in when we selected a file.

        pfm_global->area_dir = fd.directory ().absolutePath ();

        files = fd.selectedFiles ();

        pfm_def->area = files.at (0);


        if (!pfm_def->area.isEmpty())
        {
            area_edit->setText (pfm_def->area);

            if (!pfm_file_edit->text ().isEmpty () && !area_edit->text ().isEmpty ()) setButtonText (QWizard::NextButton, tr ("Next"));
        }
    }
}
Пример #4
0
void
pfmPage::slotFeatureFileBrowse ()
{
    QFileDialog *fd = new QFileDialog (this, tr ("pfmLoadM Feature File"));
    fd->setViewMode (QFileDialog::List);


    //  Always add the current working directory and the last used directory to the sidebar URLs in case we're running from the command line.
    //  This function is in the nvutility library.

    setSidebarUrls (fd, pfm_global->feature_dir);


    QStringList filters;
    filters << tr ("Binary Feature Data (*.bfd)");

    fd->setFilters (filters);
    fd->setFileMode (QFileDialog::ExistingFile);
    fd->selectFilter (tr ("Binary Feature Data (*.bfd)"));


    QStringList files;
    if (fd->exec () == QDialog::Accepted)
    {
        //  Save the directory that we were in when we selected a file.

        pfm_global->feature_dir = fd->directory ().absolutePath ();

        files = fd->selectedFiles ();

        pfm_def->feature = files.at (0);


        if (!pfm_def->feature.isEmpty())
        {
            feature_edit->setText (pfm_def->feature);
        }
    }
}
Пример #5
0
/**
 * Shows a dialog for choosing a file name. Saving the file is up to
 * the caller.
 *
 * @param type Will contain the file type that was chosen by the user.
 *             Can be NULL to be ignored.
 *
 * @return File name with path and extension to determine the file type
 *         or an empty string if the dialog was cancelled.
 */
QString QG_FileDialog::getSaveFileName(QWidget* parent, RS2::FormatType* type) {
    // 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 2007 (*.dxf)");
    //QString defFilter = "Drawing Exchange (*.dxf)";
    RS_SETTINGS->endGroup();

    // prepare file save as dialog:
    QFileDialog* fileDlg = new QFileDialog(parent,"Save as");
    QStringList filters;
    bool done = false;
    bool cancel = false;
    QString fn = "";

    filters.append("Drawing Exchange DXF 2007 (*.dxf)");
    filters.append("Drawing Exchange DXF 2004 (*.dxf)");
    filters.append("Drawing Exchange DXF 2000 (*.dxf)");
    filters.append("Drawing Exchange DXF R14 (*.dxf)");
    filters.append("Drawing Exchange DXF R12 (*.dxf)");
    filters.append("LFF Font (*.lff)");
    filters.append("Font (*.cxf)");
    filters.append("JWW (*.jww)");

    fileDlg->setFilters(filters);
    fileDlg->setFileMode(QFileDialog::AnyFile);
    fileDlg->setWindowTitle(QObject::tr("Save Drawing As"));
    fileDlg->setDirectory(defDir);
    fileDlg->setAcceptMode(QFileDialog::AcceptSave);
    fileDlg->selectFilter(defFilter);

    // run dialog:
    do {
        // accepted:
        if (fileDlg->exec()==QDialog::Accepted) {
            QStringList fl = fileDlg->selectedFiles();
            if (!fl.isEmpty())
                fn = fl[0];
            fn = QDir::toNativeSeparators( QFileInfo(fn).absoluteFilePath() );
            cancel = false;

            // append default extension:
            // TODO, since we are starting to suppor tmore extensions, we need to find a better way to add the default
            if (QFileInfo(fn).fileName().indexOf('.')==-1) {
                if (fileDlg->selectedFilter()=="LFF Font (*.lff)") {
                    fn+=".lff";
                } else if (fileDlg->selectedFilter()=="Font (*.cxf)") {
                        fn+=".cxf";
                } else {
                    fn+=".dxf";
                }
            }

            // set format:
            if (type!=NULL) {
                if (fileDlg->selectedNameFilter()=="LFF Font (*.lff)") {
                    *type = RS2::FormatLFF;
                } else if (fileDlg->selectedNameFilter()=="Font (*.cxf)") {
                    *type = RS2::FormatCXF;
                } else if (fileDlg->selectedNameFilter()=="Drawing Exchange DXF 2004 (*.dxf)") {
                    *type = RS2::FormatDXFRW2004;
                } else if (fileDlg->selectedNameFilter()=="Drawing Exchange DXF 2000 (*.dxf)") {
                    *type = RS2::FormatDXFRW2000;
                } else if (fileDlg->selectedNameFilter()=="Drawing Exchange DXF R14 (*.dxf)") {
                    *type = RS2::FormatDXFRW14;
                } else if (fileDlg->selectedNameFilter()=="Drawing Exchange DXF R12 (*.dxf)") {
                    *type = RS2::FormatDXFRW12;
                } else if (fileDlg->selectedNameFilter()=="JWW (*.jww)") {
                    *type = RS2::FormatJWW;
                } else {
                    *type = RS2::FormatDXFRW;
                }
            }

#if !defined (_WIN32) && !defined (__APPLE__)
            // overwrite warning:
            if(QFileInfo(fn).exists()) {
                int choice =
                        QMessageBox::warning(parent, QObject::tr("Save Drawing As"),
                                             QObject::tr("%1 already exists.\n"
                                                         "Do you want to replace it?")
                                             .arg(fn),
                                             QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel,QMessageBox::Cancel);

                switch (choice) {
                case QMessageBox::Yes:
                    done = true;
                    break;
                default:
                    done = false;
                    break;
                }
            } else {
                done = true;
            }
#else
            done = true;
#endif


        } else {
            done = true;
            cancel = true;
            fn = "";
        }
    } while(!done);

    // store new default settings:
    if (!cancel) {
        RS_SETTINGS->beginGroup("/Paths");
        RS_SETTINGS->writeEntry("/Save", QFileInfo(fn).absolutePath());
        //RS_SETTINGS->writeEntry("/SaveFilter", fileDlg->selectedFilter());
        RS_SETTINGS->endGroup();
    }

    delete fileDlg;

    return fn;
}
Пример #6
0
/* static */
QStringList QIFileDialog::getOpenFileNames (const QString &aStartWith,
                                            const QString &aFilters,
                                            QWidget       *aParent,
                                            const QString &aCaption,
                                            QString       *aSelectedFilter /* = 0 */,
                                            bool           aResolveSymlinks /* = true */,
                                            bool           aSingleFile /* = false */)
{
/* It seems, running QFileDialog in separate thread is NOT needed under windows any more: */
#if defined (VBOX_WS_WIN) && (QT_VERSION < 0x040403)

    /**
     *  QEvent class reimplementation to carry Win32 API native dialog's
     *  result folder information
     */
    class GetOpenFileNameEvent : public OpenNativeDialogEvent
    {
    public:

        enum { TypeId = QEvent::User + 3 };

        GetOpenFileNameEvent (const QString &aResult)
            : OpenNativeDialogEvent (aResult, (QEvent::Type) TypeId) {}
    };

    /**
     *  QThread class reimplementation to open Win32 API native file dialog
     */
    class Thread : public QThread
    {
    public:

        Thread (QWidget *aParent, QObject *aTarget,
                const QString &aStartWith, const QString &aFilters,
                const QString &aCaption) :
                mParent (aParent), mTarget (aTarget),
                mStartWith (aStartWith), mFilters (aFilters),
                mCaption (aCaption) {}

        virtual void run()
        {
            QString result;

            QString workDir;
            QString initSel;
            QFileInfo fi (mStartWith);

            if (fi.isDir())
                workDir = mStartWith;
            else
            {
                workDir = fi.absolutePath();
                initSel = fi.fileName();
            }

            workDir = QDir::toNativeSeparators (workDir);
            if (!workDir.endsWith ("\\"))
                workDir += "\\";

            QString title = mCaption.isNull() ? tr ("Select a file") : mCaption;

            QWidget *topParent = windowManager().realParentWindow(mParent ? mParent : windowManager().mainWindowShown());
            QString winFilters = winFilter (mFilters);
            AssertCompile (sizeof (TCHAR) == sizeof (QChar));
            TCHAR buf [1024];
            if (initSel.length() > 0 && initSel.length() < sizeof (buf))
                memcpy (buf, initSel.isNull() ? 0 : initSel.utf16(),
                        (initSel.length() + 1) * sizeof (TCHAR));
            else
                buf [0] = 0;

            OPENFILENAME ofn;
            memset (&ofn, 0, sizeof (OPENFILENAME));

            ofn.lStructSize = sizeof (OPENFILENAME);
            ofn.hwndOwner = topParent ? topParent->winId() : 0;
            ofn.lpstrFilter = (TCHAR *)(winFilters.isNull() ? 0 : winFilters.utf16());
            ofn.lpstrFile = buf;
            ofn.nMaxFile = sizeof (buf) - 1;
            ofn.lpstrInitialDir = (TCHAR *)(workDir.isNull() ? 0 : workDir.utf16());
            ofn.lpstrTitle = (TCHAR *)(title.isNull() ? 0 : title.utf16());
            ofn.Flags = (OFN_NOCHANGEDIR | OFN_HIDEREADONLY |
                          OFN_EXPLORER | OFN_ENABLEHOOK |
                          OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST);
            ofn.lpfnHook = OFNHookProc;

            if (GetOpenFileName (&ofn))
            {
                result = QString::fromUtf16 ((ushort *) ofn.lpstrFile);
            }

            // qt_win_eatMouseMove();
            MSG msg = {0, 0, 0, 0, 0, 0, 0};
            while (PeekMessage (&msg, 0, WM_MOUSEMOVE, WM_MOUSEMOVE, PM_REMOVE));
            if (msg.message == WM_MOUSEMOVE)
                PostMessage (msg.hwnd, msg.message, 0, msg.lParam);

            result = result.isEmpty() ? result : QFileInfo (result).absoluteFilePath();

            QApplication::postEvent (mTarget, new GetOpenFileNameEvent (result));
        }

    private:

        QWidget *mParent;
        QObject *mTarget;
        QString mStartWith;
        QString mFilters;
        QString mCaption;
    };

    if (aSelectedFilter)
        *aSelectedFilter = QString::null;

    /* Local event loop to run while waiting for the result from another
     * thread */
    QEventLoop loop;

    QString startWith = QDir::toNativeSeparators (aStartWith);
    LoopObject loopObject ((QEvent::Type) GetOpenFileNameEvent::TypeId, loop);

    if (aParent)
        aParent->setWindowModality (Qt::WindowModal);

    Thread openDirThread (aParent, &loopObject, startWith, aFilters, aCaption);
    openDirThread.start();
    loop.exec();
    openDirThread.wait();

    if (aParent)
        aParent->setWindowModality (Qt::NonModal);

    return QStringList() << loopObject.result();

#elif defined (VBOX_WS_X11) && (QT_VERSION < 0x040400)

    /* Here is workaround for Qt4.3 bug with QFileDialog which crushes when
     * gets initial path as hidden directory if no hidden files are shown.
     * See http://trolltech.com/developer/task-tracker/index_html?method=entry&id=193483
     * for details */
    QFileDialog dlg (aParent);
    dlg.setWindowTitle (aCaption);
    dlg.setDirectory (aStartWith);
    dlg.setFilter (aFilters);
    if (aSingleFile)
        dlg.setFileMode (QFileDialog::ExistingFile);
    else
        dlg.setFileMode (QFileDialog::ExistingFiles);
    if (aSelectedFilter)
        dlg.selectFilter (*aSelectedFilter);
    dlg.setResolveSymlinks (aResolveSymlinks);
    QAction *hidden = dlg.findChild <QAction*> ("qt_show_hidden_action");
    if (hidden)
    {
        hidden->trigger();
        hidden->setVisible (false);
    }
    return dlg.exec() == QDialog::Accepted ? dlg.selectedFiles() : QStringList() << QString::null;

#elif defined (VBOX_WS_MAC) && (QT_VERSION >= 0x040600) && (QT_VERSION < 0x050000)

    /* After 4.5 exec ignores the Qt::Sheet flag.
     * See "New Ways of Using Dialogs" in http://doc.trolltech.com/qq/QtQuarterly30.pdf why.
     * We want the old behavior for file-save dialog. Unfortunately there is a bug in Qt 4.5.x
     * which result in showing the native & the Qt dialog at the same time. */
    QFileDialog dlg(aParent);
    dlg.setWindowTitle(aCaption);

    /* Some predictive algorithm which seems missed in native code. */
    QDir dir(aStartWith);
    while (!dir.isRoot() && !dir.exists())
        dir = QDir(QFileInfo(dir.absolutePath()).absolutePath());
    const QString strDirectory = dir.absolutePath();
    if (!strDirectory.isNull())
        dlg.setDirectory(strDirectory);
    if (strDirectory != aStartWith)
        dlg.selectFile(QFileInfo(aStartWith).absoluteFilePath());

    dlg.setNameFilter(aFilters);
    if (aSingleFile)
        dlg.setFileMode(QFileDialog::ExistingFile);
    else
        dlg.setFileMode(QFileDialog::ExistingFiles);
    if (aSelectedFilter)
        dlg.selectFilter(*aSelectedFilter);
    dlg.setResolveSymlinks(aResolveSymlinks);

    QEventLoop eventLoop;
    QObject::connect(&dlg, SIGNAL(finished(int)),
                     &eventLoop, SLOT(quit()));
    dlg.open();
    eventLoop.exec();

    return dlg.result() == QDialog::Accepted ? dlg.selectedFiles() : QStringList() << QString();

#else

    QFileDialog::Options o;
    if (!aResolveSymlinks)
        o |= QFileDialog::DontResolveSymlinks;
# if defined (VBOX_WS_X11)
    /** @todo see http://bugs.kde.org/show_bug.cgi?id=210904, make it conditional
     *        when this bug is fixed (xtracker 5167)
     *        Apparently not necessary anymore (xtracker 5748)! */
//    if (vboxGlobal().isKWinManaged())
//      o |= QFileDialog::DontUseNativeDialog;
# endif

    if (aSingleFile)
        return QStringList() << QFileDialog::getOpenFileName (aParent, aCaption, aStartWith,
                                                              aFilters, aSelectedFilter, o);
    else
        return QFileDialog::getOpenFileNames (aParent, aCaption, aStartWith,
                                              aFilters, aSelectedFilter, o);
#endif
}
Пример #7
0
void mosaicPage::slotTxtFileBrowse ()
{
  QStringList         files, filters;
  QString             file;


  QFileDialog *fd = new QFileDialog (this, tr ("pfmChartsImage Select Mission Parameters File"));
  fd->setViewMode (QFileDialog::List);


  //  Always add the current working directory and the last used directory to the sidebar URLs in case we're running from the command line.
  //  This function is in the nvutility library.

  setSidebarUrls (fd, options->param_dir);


  filters << tr ("Text (*.txt)");

  fd->setFilters (filters);
  fd->setFileMode (QFileDialog::ExistingFile);
  fd->selectFilter (tr ("Text (*.txt)"));

  if (fd->exec () == QDialog::Accepted)
    {
      files = fd->selectedFiles ();

      QString txt_file_name = files.at (0);


      if (!txt_file_name.isEmpty())
        {
          txt_file_edit->setText (txt_file_name);

	  NV_CHAR txt_file[512];
	  strcpy (txt_file, txt_file_name.toAscii ());

	  FILE *fp;

	  if ((fp = fopen (txt_file, "r")) == NULL)
	    {
	      QMessageBox::warning (this, tr ("Select Mission Parameters File"),
				    tr ("The file ") + txt_file_name + 
				    tr (" could not be opened.") +
				    tr ("  The error message returned was:\n\n") +
				    QString (strerror (errno)));

              return;
	    }


	  NV_CHAR string[128];
	  NV_FLOAT64 roll_bias = 0.0, pitch_bias = 0.0, heading_bias = 0.0, pixel_size = 0.0, focal_length = 0.0, 
	    col_offset = 0.0, row_offset = 0.0, time_delay = 0.0;
          NV_INT32 ms;

	  while (fgets (string, sizeof (string), fp) != NULL)
	    {
	      if (strstr (string, "camera_boresight_roll:"))
		sscanf (string, "camera_boresight_roll: %lf", &roll_bias);

	      if (strstr (string, "camera_boresight_pitch:"))
		sscanf (string, "camera_boresight_pitch: %lf", &pitch_bias);

	      if (strstr (string, "camera_boresight_heading:"))
		sscanf (string, "camera_boresight_heading: %lf", &heading_bias);

	      if (strstr (string, "pixel_size:"))
		sscanf (string, "pixel_size: %lf", &pixel_size);

	      if (strstr (string, "focal_length:"))
		sscanf (string, "focal_length: %lf", &focal_length);

	      if (strstr (string, "principal_point_offsets:"))
		sscanf (string, "principal_point_offsets: %lf, %lf", &col_offset, &row_offset);

	      if (strstr (string, "camera_trig_delay:"))
                {
                  sscanf (string, "camera_trig_delay: %d", &ms);
                  time_delay = (NV_FLOAT64) ms / 1000.0;
                }
	    }
	  fclose (fp);

	  timeSpin->setValue (time_delay);
	  rollSpin->setValue (roll_bias);
	  pitchSpin->setValue (pitch_bias);
	  headingSpin->setValue (heading_bias);
	  focalSpin->setValue (focal_length);
	  pixelSpin->setValue (pixel_size);
	  colSpin->setValue (col_offset);
	  rowSpin->setValue (row_offset);
        }

      options->param_dir = fd->directory ().absolutePath ();
    }
}