Ejemplo n.º 1
0
QString ShowSaveFileDialog(QWidget* parent, const QString& title, const QString& directory, const QString& filter) {
#if defined(OS_WIN) || defined(OS_MACOSX)
  return QFileDialog::getSaveFileName(parent, title, directory, filter);
#else
  QFileDialog dialog(parent, title, directory, filter);
  if (parent) {
    dialog.setWindowModality(Qt::WindowModal);
  }
  QRegExp filter_regex(QLatin1String("(?:^\\*\\.(?!.*\\()|\\(\\*\\.)(\\w+)"));
  QStringList filters = filter.split(QLatin1String(";;"));
  if (!filters.isEmpty()) {
    dialog.setNameFilter(filters.first());
    if (filter_regex.indexIn(filters.first()) != -1) {
      dialog.setDefaultSuffix(filter_regex.cap(1));
    }
  }
  dialog.setAcceptMode(QFileDialog::AcceptSave);
  if (dialog.exec() == QDialog::Accepted) {
    QString file_name = dialog.selectedFiles().first();
    QFileInfo info(file_name);
    if (info.suffix().isEmpty() && !dialog.selectedNameFilter().isEmpty()) {
      if (filter_regex.indexIn(dialog.selectedNameFilter()) != -1) {
        QString extension = filter_regex.cap(1);
        file_name += QLatin1String(".") + extension;
      }
    }
    return file_name;
  } else {
    return QString();
  }
#endif
}
Ejemplo n.º 2
0
void dtkPlotViewToolBar::onExport(void)
{
    const QList<QByteArray> imageFormats = QImageWriter::supportedImageFormats();

    QStringList filters;
    filters += "PDF Documents (*.pdf)";
#ifndef QWT_NO_SVG
    filters += "SVG Documents (*.svg)";
#endif
    filters += "Postscript Documents (*.ps)";

    for(int i = 0; i < imageFormats.size(); i++) {
        QString imageFilter;
        imageFilter += imageFormats[i].toUpper();
        imageFilter += " (*.";
        imageFilter += imageFormats[i];
        imageFilter += ")";
        filters += imageFilter;
    }

    QFileDialog *dialog = new QFileDialog(0, "Export plot", QDir::homePath(), filters.join(";;"));
    dialog->setStyleSheet("background-color: none ; color: none; background: none;");
    dialog->setAcceptMode(QFileDialog::AcceptSave);
    dialog->setConfirmOverwrite(true);
    dialog->setFileMode(QFileDialog::AnyFile);

    QRegExp filter_regex(QLatin1String("(?:^\\*\\.(?!.*\\()|\\(\\*\\.)(\\w+)"));
    if (dialog->exec() == QDialog::Accepted) {
        QString fileName = dialog->selectedFiles().first();
        QFileInfo info(fileName);
        if (info.suffix().isEmpty() && !dialog->selectedNameFilter().isEmpty()) {
            if (filter_regex.indexIn(dialog->selectedNameFilter()) != -1) {
                QString extension = filter_regex.cap(1);
                fileName += QLatin1String(".") + extension;
            }
        }
        this->onExport(fileName);
    }
}
Ejemplo n.º 3
0
Filter::Filter( const std::string& str )
    : m_str( str )
{
    {
        // option

        boost::smatch m;
        const char* e =
            "(?x)"
            "(^[\t]+)"
            "<Filter .+? >"
            ;

        if ( boost::regex_search( m_str, m, Utility::create_regex(e) ) )
        {
            m_options = Utility::extract_options_from_string( m.str() );
            m_indent = m.str(1);
            //Utility::output_options( std::cout, m_options );
        }
    }

    // next level tabs
    size_t tabs = m_indent.size() + 1;

    {
        std::stringstream filter_regex_strm;
        filter_regex_strm
            << "(?x)"
            << "^[\t]{" << tabs << "} <Filter  .+? >"
            << ".+?"
            << "^[\t]{" << tabs << "} </Filter>"
            ;
        boost::regex filter_regex( filter_regex_strm.str() );
        boost::sregex_iterator it( m_str.begin(), m_str.end(), filter_regex );
        boost::sregex_iterator end;

        for ( ; it != end; ++it )
        {
            //std::cout << it->str() << std::endl;
            FilterPtr filter( new Filter(it->str()) );
            m_filters.push_back( filter );
        }
    }

    {
        std::stringstream file_regex_strm;
        file_regex_strm
            << "(?x)"
            << "^[\t]{" << tabs << "} <File \\b  .+? >"
            << ".+?"
            << "^[\t]{" << tabs << "} </File>"
            ;
        boost::regex file_regex( file_regex_strm.str() );
        boost::sregex_iterator it( m_str.begin(), m_str.end(), file_regex );
        boost::sregex_iterator end;

        for ( ; it != end; ++it )
        {
            //std::cout << it->str() << std::endl;
            FilePtr file( new File(it->str()) );
            m_files.push_back( file );
        }
    }
}