Пример #1
0
void GtkFileDialog::setNameFilters(const QStringList &filters) {
    GtkDialog *gtkDialog = d->gtkDialog();
    foreach (GtkFileFilter *filter, _filters)
        Libs::gtk_file_chooser_remove_filter(Libs::gtk_file_chooser_cast(gtkDialog), filter);

    _filters.clear();
    _filterNames.clear();

    for_const (auto &filter, filters) {
        GtkFileFilter *gtkFilter = Libs::gtk_file_filter_new();
        auto name = filter;//.left(filter.indexOf(QLatin1Char('(')));
        auto extensions = cleanFilterList(filter);

        Libs::gtk_file_filter_set_name(gtkFilter, name.isEmpty() ? extensions.join(QStringLiteral(", ")).toUtf8() : name.toUtf8());
        for_const (auto &ext, extensions) {
            auto caseInsensitiveExt = QString();
            caseInsensitiveExt.reserve(4 * ext.size());
            for_const (auto ch, ext) {
                auto chLower = ch.toLower();
                auto chUpper = ch.toUpper();
                if (chLower != chUpper) {
                    caseInsensitiveExt.append('[').append(chLower).append(chUpper).append(']');
                } else {
                    caseInsensitiveExt.append(ch);
                }
            }
Пример #2
0
void GtkFileDialog::setNameFilters(const QStringList &filters) {
    GtkDialog *gtkDialog = d->gtkDialog();
    foreach (GtkFileFilter *filter, _filters)
        Libs::gtk_file_chooser_remove_filter(Libs::gtk_file_chooser_cast(gtkDialog), filter);

    _filters.clear();
    _filterNames.clear();

    foreach (const QString &filter, filters) {
        GtkFileFilter *gtkFilter = Libs::gtk_file_filter_new();
        const QString name = filter.left(filter.indexOf(QLatin1Char('(')));
        const QStringList extensions = cleanFilterList(filter);

        Libs::gtk_file_filter_set_name(gtkFilter, name.isEmpty() ? extensions.join(QStringLiteral(", ")).toUtf8() : name.toUtf8());
        foreach (const QString &ext, extensions)
            Libs::gtk_file_filter_add_pattern(gtkFilter, ext.toUtf8());

        Libs::gtk_file_chooser_add_filter(Libs::gtk_file_chooser_cast(gtkDialog), gtkFilter);

        _filters.insert(filter, gtkFilter);
        _filterNames.insert(gtkFilter, filter);
    }