forked from qt-creator/qt-creator
Core: Inline mimetypesettingspage.ui
Needed to keep the QCoreApplication::translate for now as the class has a Q_OBJECT creating a different context. Change-Id: I1b1d836be675bdcd2802070032a7ace92838498c Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
@@ -217,6 +217,13 @@ public:
|
|||||||
Stack(std::initializer_list<LayoutItem> items) : LayoutBuilder(StackLayout, items) {}
|
Stack(std::initializer_list<LayoutItem> items) : LayoutBuilder(StackLayout, items) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class QTCREATOR_UTILS_EXPORT Splitter : public LayoutBuilder
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Splitter() : LayoutBuilder(StackLayout) {}
|
||||||
|
Splitter(std::initializer_list<LayoutItem> items) : LayoutBuilder(StackLayout, items) {}
|
||||||
|
};
|
||||||
|
|
||||||
using Space = LayoutBuilder::Space;
|
using Space = LayoutBuilder::Space;
|
||||||
using Span = LayoutBuilder::Span;
|
using Span = LayoutBuilder::Span;
|
||||||
|
|
||||||
|
@@ -129,7 +129,6 @@ add_qtc_plugin(Core
|
|||||||
messageoutputwindow.cpp messageoutputwindow.h
|
messageoutputwindow.cpp messageoutputwindow.h
|
||||||
mimetypemagicdialog.cpp mimetypemagicdialog.h mimetypemagicdialog.ui
|
mimetypemagicdialog.cpp mimetypemagicdialog.h mimetypemagicdialog.ui
|
||||||
mimetypesettings.cpp mimetypesettings.h
|
mimetypesettings.cpp mimetypesettings.h
|
||||||
mimetypesettingspage.ui
|
|
||||||
minisplitter.cpp minisplitter.h
|
minisplitter.cpp minisplitter.h
|
||||||
modemanager.cpp modemanager.h
|
modemanager.cpp modemanager.h
|
||||||
navigationsubwidget.cpp navigationsubwidget.h
|
navigationsubwidget.cpp navigationsubwidget.h
|
||||||
|
@@ -126,7 +126,6 @@ Project {
|
|||||||
"mimetypemagicdialog.ui",
|
"mimetypemagicdialog.ui",
|
||||||
"mimetypesettings.cpp",
|
"mimetypesettings.cpp",
|
||||||
"mimetypesettings.h",
|
"mimetypesettings.h",
|
||||||
"mimetypesettingspage.ui",
|
|
||||||
"minisplitter.cpp",
|
"minisplitter.cpp",
|
||||||
"minisplitter.h",
|
"minisplitter.h",
|
||||||
"modemanager.cpp",
|
"modemanager.cpp",
|
||||||
|
@@ -1,18 +1,21 @@
|
|||||||
// Copyright (C) 2016 The Qt Company Ltd.
|
// Copyright (C) 2016 The Qt Company Ltd.
|
||||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
|
||||||
|
|
||||||
|
#include "mimetypesettings.h"
|
||||||
|
|
||||||
#include "coreconstants.h"
|
#include "coreconstants.h"
|
||||||
#include "icore.h"
|
#include "icore.h"
|
||||||
#include "mimetypemagicdialog.h"
|
#include "mimetypemagicdialog.h"
|
||||||
#include "mimetypesettings.h"
|
|
||||||
#include "ui_mimetypesettingspage.h"
|
|
||||||
#include <coreplugin/editormanager/editormanager.h>
|
#include <coreplugin/editormanager/editormanager.h>
|
||||||
#include <coreplugin/editormanager/ieditorfactory.h>
|
#include <coreplugin/editormanager/ieditorfactory.h>
|
||||||
#include <coreplugin/editormanager/ieditorfactory_p.h>
|
#include <coreplugin/editormanager/ieditorfactory_p.h>
|
||||||
#include <coreplugin/editormanager/iexternaleditor.h>
|
#include <coreplugin/editormanager/iexternaleditor.h>
|
||||||
|
|
||||||
#include <utils/algorithm.h>
|
#include <utils/algorithm.h>
|
||||||
|
#include <utils/fancylineedit.h>
|
||||||
#include <utils/headerviewstretcher.h>
|
#include <utils/headerviewstretcher.h>
|
||||||
|
#include <utils/layoutbuilder.h>
|
||||||
#include <utils/mimeutils.h>
|
#include <utils/mimeutils.h>
|
||||||
#include <utils/qtcassert.h>
|
#include <utils/qtcassert.h>
|
||||||
#include <utils/stringutils.h>
|
#include <utils/stringutils.h>
|
||||||
@@ -22,32 +25,41 @@
|
|||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
|
#include <QGroupBox>
|
||||||
#include <QHash>
|
#include <QHash>
|
||||||
|
#include <QHeaderView>
|
||||||
|
#include <QLabel>
|
||||||
|
#include <QLineEdit>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QPointer>
|
#include <QPointer>
|
||||||
|
#include <QPushButton>
|
||||||
#include <QScopedPointer>
|
#include <QScopedPointer>
|
||||||
#include <QSet>
|
#include <QSet>
|
||||||
|
#include <QSortFilterProxyModel>
|
||||||
|
#include <QSplitter>
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
#include <QStyledItemDelegate>
|
#include <QStyledItemDelegate>
|
||||||
#include <QSortFilterProxyModel>
|
#include <QTreeView>
|
||||||
|
#include <QTreeWidget>
|
||||||
#include <QXmlStreamReader>
|
#include <QXmlStreamReader>
|
||||||
#include <QXmlStreamWriter>
|
#include <QXmlStreamWriter>
|
||||||
|
|
||||||
static const char kModifiedMimeTypesFile[] = "mimetypes/modifiedmimetypes.xml";
|
const char kModifiedMimeTypesFile[] = "mimetypes/modifiedmimetypes.xml";
|
||||||
|
|
||||||
static const char mimeInfoTagC[] = "mime-info";
|
const char mimeInfoTagC[] = "mime-info";
|
||||||
static const char mimeTypeTagC[] = "mime-type";
|
const char mimeTypeTagC[] = "mime-type";
|
||||||
static const char mimeTypeAttributeC[] = "type";
|
const char mimeTypeAttributeC[] = "type";
|
||||||
static const char patternAttributeC[] = "pattern";
|
const char patternAttributeC[] = "pattern";
|
||||||
static const char matchTagC[] = "match";
|
const char matchTagC[] = "match";
|
||||||
static const char matchValueAttributeC[] = "value";
|
const char matchValueAttributeC[] = "value";
|
||||||
static const char matchTypeAttributeC[] = "type";
|
const char matchTypeAttributeC[] = "type";
|
||||||
static const char matchOffsetAttributeC[] = "offset";
|
const char matchOffsetAttributeC[] = "offset";
|
||||||
static const char priorityAttributeC[] = "priority";
|
const char priorityAttributeC[] = "priority";
|
||||||
static const char matchMaskAttributeC[] = "mask";
|
const char matchMaskAttributeC[] = "mask";
|
||||||
|
|
||||||
namespace Core {
|
using namespace Utils;
|
||||||
namespace Internal {
|
|
||||||
|
namespace Core::Internal {
|
||||||
|
|
||||||
class MimeEditorDelegate : public QStyledItemDelegate
|
class MimeEditorDelegate : public QStyledItemDelegate
|
||||||
{
|
{
|
||||||
@@ -254,9 +266,16 @@ public:
|
|||||||
QSortFilterProxyModel *m_filterModel;
|
QSortFilterProxyModel *m_filterModel;
|
||||||
UserMimeTypeHash m_pendingModifiedMimeTypes; // currently edited in the options page
|
UserMimeTypeHash m_pendingModifiedMimeTypes; // currently edited in the options page
|
||||||
QString m_filterPattern;
|
QString m_filterPattern;
|
||||||
Ui::MimeTypeSettingsPage m_ui;
|
|
||||||
QPointer<QWidget> m_widget;
|
QPointer<QWidget> m_widget;
|
||||||
MimeEditorDelegate m_delegate;
|
MimeEditorDelegate m_delegate;
|
||||||
|
|
||||||
|
QTreeView *m_mimeTypesTreeView;
|
||||||
|
QPushButton *m_resetHandlersButton;
|
||||||
|
QLineEdit *m_patternsLineEdit;
|
||||||
|
QTreeWidget *m_magicHeadersTreeWidget;
|
||||||
|
QPushButton *m_addMagicButton;
|
||||||
|
QPushButton *m_editMagicButton;
|
||||||
|
QPushButton *m_removeMagicButton;
|
||||||
};
|
};
|
||||||
|
|
||||||
const QChar MimeTypeSettingsPrivate::kSemiColon(QLatin1Char(';'));
|
const QChar MimeTypeSettingsPrivate::kSemiColon(QLatin1Char(';'));
|
||||||
@@ -277,35 +296,112 @@ MimeTypeSettingsPrivate::~MimeTypeSettingsPrivate() = default;
|
|||||||
|
|
||||||
void MimeTypeSettingsPrivate::configureUi(QWidget *w)
|
void MimeTypeSettingsPrivate::configureUi(QWidget *w)
|
||||||
{
|
{
|
||||||
m_ui.setupUi(w);
|
auto filterLineEdit = new FancyLineEdit;
|
||||||
m_ui.filterLineEdit->setText(m_filterPattern);
|
filterLineEdit->setFiltering(true);
|
||||||
|
|
||||||
|
m_mimeTypesTreeView = new QTreeView;
|
||||||
|
m_mimeTypesTreeView->setEditTriggers(QAbstractItemView::DoubleClicked
|
||||||
|
|QAbstractItemView::EditKeyPressed|QAbstractItemView::SelectedClicked);
|
||||||
|
m_mimeTypesTreeView->setRootIsDecorated(false);
|
||||||
|
m_mimeTypesTreeView->setUniformRowHeights(true);
|
||||||
|
|
||||||
|
auto resetButton = new QPushButton;
|
||||||
|
resetButton->setToolTip(QCoreApplication::translate("Core::Internal::MimeTypeSettingsPage", "Reset all MIME type definitions to their defaults.", nullptr));
|
||||||
|
resetButton->setText(QCoreApplication::translate("Core::Internal::MimeTypeSettingsPage", "Reset MIME Types", nullptr));
|
||||||
|
|
||||||
|
m_resetHandlersButton = new QPushButton;
|
||||||
|
m_resetHandlersButton->setToolTip(QCoreApplication::translate("Core::Internal::MimeTypeSettingsPage", "Reset the assigned handler for all MIME type definitions to the default.", nullptr));
|
||||||
|
m_resetHandlersButton->setText(QCoreApplication::translate("Core::Internal::MimeTypeSettingsPage", "Reset Handlers", nullptr));
|
||||||
|
|
||||||
|
auto patternsLabel = new QLabel;
|
||||||
|
patternsLabel->setText(QCoreApplication::translate("Core::Internal::MimeTypeSettingsPage", "Patterns:", nullptr));
|
||||||
|
|
||||||
|
m_patternsLineEdit = new QLineEdit;
|
||||||
|
m_patternsLineEdit->setToolTip(QCoreApplication::translate("Core::Internal::MimeTypeSettingsPage", "A semicolon-separated list of wildcarded file names.", nullptr));
|
||||||
|
|
||||||
|
m_magicHeadersTreeWidget = new QTreeWidget;
|
||||||
|
m_magicHeadersTreeWidget->setHeaderItem(new QTreeWidgetItem({
|
||||||
|
QCoreApplication::translate("Core::Internal::MimeTypeSettingsPage", "Magic Header"),
|
||||||
|
QCoreApplication::translate("Core::Internal::MimeTypeSettingsPage", "Type"),
|
||||||
|
QCoreApplication::translate("Core::Internal::MimeTypeSettingsPage", "Range"),
|
||||||
|
QCoreApplication::translate("Core::Internal::MimeTypeSettingsPage", "Priority")
|
||||||
|
}));
|
||||||
|
m_magicHeadersTreeWidget->setRootIsDecorated(false);
|
||||||
|
m_magicHeadersTreeWidget->setUniformRowHeights(true);
|
||||||
|
m_magicHeadersTreeWidget->setColumnCount(4);
|
||||||
|
|
||||||
|
m_addMagicButton = new QPushButton;
|
||||||
|
m_addMagicButton->setText(QCoreApplication::translate("Core::Internal::MimeTypeSettingsPage", "Add...", nullptr));
|
||||||
|
|
||||||
|
m_editMagicButton = new QPushButton;
|
||||||
|
m_editMagicButton->setText(QCoreApplication::translate("Core::Internal::MimeTypeSettingsPage", "Edit...", nullptr));
|
||||||
|
|
||||||
|
m_removeMagicButton = new QPushButton;
|
||||||
|
m_removeMagicButton->setText(QCoreApplication::translate("Core::Internal::MimeTypeSettingsPage", "Remove", nullptr));
|
||||||
|
|
||||||
|
auto mimeTypesGroupBox = new QGroupBox;
|
||||||
|
mimeTypesGroupBox->setTitle(QCoreApplication::translate("Core::Internal::MimeTypeSettingsPage", "Registered MIME Types", nullptr));
|
||||||
|
|
||||||
|
auto detailsGroupBox = new QGroupBox;
|
||||||
|
detailsGroupBox->setTitle(QCoreApplication::translate("Core::Internal::MimeTypeSettingsPage", "Details", nullptr));
|
||||||
|
|
||||||
|
auto splitter = new QSplitter(w);
|
||||||
|
splitter->setOrientation(Qt::Vertical);
|
||||||
|
splitter->setChildrenCollapsible(false);
|
||||||
|
splitter->addWidget(mimeTypesGroupBox);
|
||||||
|
splitter->addWidget(detailsGroupBox);
|
||||||
|
|
||||||
|
using namespace Layouting;
|
||||||
|
|
||||||
|
Column {
|
||||||
|
filterLineEdit,
|
||||||
|
m_mimeTypesTreeView,
|
||||||
|
Row { resetButton, m_resetHandlersButton, st }
|
||||||
|
}.attachTo(mimeTypesGroupBox);
|
||||||
|
|
||||||
|
Column {
|
||||||
|
Form { patternsLabel, m_patternsLineEdit, br, },
|
||||||
|
Row {
|
||||||
|
m_magicHeadersTreeWidget,
|
||||||
|
Column {
|
||||||
|
m_addMagicButton,
|
||||||
|
m_editMagicButton,
|
||||||
|
m_removeMagicButton,
|
||||||
|
st
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}.attachTo(detailsGroupBox);
|
||||||
|
|
||||||
|
Column {
|
||||||
|
splitter
|
||||||
|
}.attachTo(w);
|
||||||
|
|
||||||
m_model->load();
|
m_model->load();
|
||||||
connect(m_ui.filterLineEdit, &QLineEdit::textChanged,
|
connect(filterLineEdit, &FancyLineEdit::textChanged,
|
||||||
this, &MimeTypeSettingsPrivate::setFilterPattern);
|
this, &MimeTypeSettingsPrivate::setFilterPattern);
|
||||||
m_ui.mimeTypesTreeView->setModel(m_filterModel);
|
m_mimeTypesTreeView->setModel(m_filterModel);
|
||||||
m_ui.mimeTypesTreeView->setItemDelegate(&m_delegate);
|
m_mimeTypesTreeView->setItemDelegate(&m_delegate);
|
||||||
|
|
||||||
new Utils::HeaderViewStretcher(m_ui.mimeTypesTreeView->header(), 1);
|
new Utils::HeaderViewStretcher(m_mimeTypesTreeView->header(), 1);
|
||||||
|
|
||||||
connect(m_ui.mimeTypesTreeView->selectionModel(), &QItemSelectionModel::currentChanged,
|
connect(m_mimeTypesTreeView->selectionModel(), &QItemSelectionModel::currentChanged,
|
||||||
this, &MimeTypeSettingsPrivate::syncData);
|
this, &MimeTypeSettingsPrivate::syncData);
|
||||||
connect(m_ui.mimeTypesTreeView->selectionModel(), &QItemSelectionModel::currentChanged,
|
connect(m_mimeTypesTreeView->selectionModel(), &QItemSelectionModel::currentChanged,
|
||||||
this, &MimeTypeSettingsPrivate::updatePatternEditAndMagicButtons);
|
this, &MimeTypeSettingsPrivate::updatePatternEditAndMagicButtons);
|
||||||
connect(m_ui.patternsLineEdit, &QLineEdit::textEdited,
|
connect(m_patternsLineEdit, &QLineEdit::textEdited,
|
||||||
this, &MimeTypeSettingsPrivate::handlePatternEdited);
|
this, &MimeTypeSettingsPrivate::handlePatternEdited);
|
||||||
connect(m_ui.addMagicButton, &QPushButton::clicked,
|
connect(m_addMagicButton, &QPushButton::clicked,
|
||||||
this, &MimeTypeSettingsPrivate::addMagicHeader);
|
this, &MimeTypeSettingsPrivate::addMagicHeader);
|
||||||
// TODO
|
// TODO
|
||||||
connect(m_ui.removeMagicButton, &QPushButton::clicked,
|
connect(m_removeMagicButton, &QPushButton::clicked,
|
||||||
this, &MimeTypeSettingsPrivate::removeMagicHeader);
|
this, &MimeTypeSettingsPrivate::removeMagicHeader);
|
||||||
connect(m_ui.editMagicButton, &QPushButton::clicked,
|
connect(m_editMagicButton, &QPushButton::clicked,
|
||||||
this, &MimeTypeSettingsPrivate::editMagicHeader);
|
this, &MimeTypeSettingsPrivate::editMagicHeader);
|
||||||
connect(m_ui.resetButton, &QPushButton::clicked,
|
connect(resetButton, &QPushButton::clicked,
|
||||||
this, &MimeTypeSettingsPrivate::resetMimeTypes);
|
this, &MimeTypeSettingsPrivate::resetMimeTypes);
|
||||||
connect(m_ui.resetHandlersButton, &QPushButton::clicked,
|
connect(m_resetHandlersButton, &QPushButton::clicked,
|
||||||
m_model, &MimeTypeSettingsModel::resetUserDefaults);
|
m_model, &MimeTypeSettingsModel::resetUserDefaults);
|
||||||
connect(m_ui.magicHeadersTreeWidget, &QTreeWidget::itemSelectionChanged,
|
connect(m_magicHeadersTreeWidget, &QTreeWidget::itemSelectionChanged,
|
||||||
this, &MimeTypeSettingsPrivate::updatePatternEditAndMagicButtons);
|
this, &MimeTypeSettingsPrivate::updatePatternEditAndMagicButtons);
|
||||||
|
|
||||||
updatePatternEditAndMagicButtons();
|
updatePatternEditAndMagicButtons();
|
||||||
@@ -315,14 +411,14 @@ void MimeTypeSettingsPrivate::syncData(const QModelIndex ¤t,
|
|||||||
const QModelIndex &previous)
|
const QModelIndex &previous)
|
||||||
{
|
{
|
||||||
Q_UNUSED(previous)
|
Q_UNUSED(previous)
|
||||||
m_ui.patternsLineEdit->clear();
|
m_patternsLineEdit->clear();
|
||||||
m_ui.magicHeadersTreeWidget->clear();
|
m_magicHeadersTreeWidget->clear();
|
||||||
|
|
||||||
if (current.isValid()) {
|
if (current.isValid()) {
|
||||||
const Utils::MimeType ¤tMimeType =
|
const Utils::MimeType ¤tMimeType =
|
||||||
m_model->m_mimeTypes.at(m_filterModel->mapToSource(current).row());
|
m_model->m_mimeTypes.at(m_filterModel->mapToSource(current).row());
|
||||||
UserMimeType modifiedType = m_pendingModifiedMimeTypes.value(currentMimeType.name());
|
UserMimeType modifiedType = m_pendingModifiedMimeTypes.value(currentMimeType.name());
|
||||||
m_ui.patternsLineEdit->setText(
|
m_patternsLineEdit->setText(
|
||||||
modifiedType.isValid() ? modifiedType.globPatterns.join(kSemiColon)
|
modifiedType.isValid() ? modifiedType.globPatterns.join(kSemiColon)
|
||||||
: currentMimeType.globPatterns().join(kSemiColon));
|
: currentMimeType.globPatterns().join(kSemiColon));
|
||||||
|
|
||||||
@@ -340,33 +436,33 @@ void MimeTypeSettingsPrivate::syncData(const QModelIndex ¤t,
|
|||||||
|
|
||||||
void MimeTypeSettingsPrivate::updatePatternEditAndMagicButtons()
|
void MimeTypeSettingsPrivate::updatePatternEditAndMagicButtons()
|
||||||
{
|
{
|
||||||
const QModelIndex &mimeTypeIndex = m_ui.mimeTypesTreeView->currentIndex();
|
const QModelIndex &mimeTypeIndex = m_mimeTypesTreeView->currentIndex();
|
||||||
const bool mimeTypeValid = mimeTypeIndex.isValid();
|
const bool mimeTypeValid = mimeTypeIndex.isValid();
|
||||||
m_ui.patternsLineEdit->setEnabled(mimeTypeValid);
|
m_patternsLineEdit->setEnabled(mimeTypeValid);
|
||||||
m_ui.addMagicButton->setEnabled(mimeTypeValid);
|
m_addMagicButton->setEnabled(mimeTypeValid);
|
||||||
|
|
||||||
const QModelIndex &magicIndex = m_ui.magicHeadersTreeWidget->currentIndex();
|
const QModelIndex &magicIndex = m_magicHeadersTreeWidget->currentIndex();
|
||||||
const bool magicValid = magicIndex.isValid();
|
const bool magicValid = magicIndex.isValid();
|
||||||
|
|
||||||
m_ui.removeMagicButton->setEnabled(magicValid);
|
m_removeMagicButton->setEnabled(magicValid);
|
||||||
m_ui.editMagicButton->setEnabled(magicValid);
|
m_editMagicButton->setEnabled(magicValid);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MimeTypeSettingsPrivate::handlePatternEdited()
|
void MimeTypeSettingsPrivate::handlePatternEdited()
|
||||||
{
|
{
|
||||||
const QModelIndex &modelIndex = m_ui.mimeTypesTreeView->currentIndex();
|
const QModelIndex &modelIndex = m_mimeTypesTreeView->currentIndex();
|
||||||
QTC_ASSERT(modelIndex.isValid(), return);
|
QTC_ASSERT(modelIndex.isValid(), return);
|
||||||
|
|
||||||
int index = m_filterModel->mapToSource(modelIndex).row();
|
int index = m_filterModel->mapToSource(modelIndex).row();
|
||||||
const Utils::MimeType mt = m_model->m_mimeTypes.at(index);
|
const Utils::MimeType mt = m_model->m_mimeTypes.at(index);
|
||||||
ensurePendingMimeType(mt);
|
ensurePendingMimeType(mt);
|
||||||
m_pendingModifiedMimeTypes[mt.name()].globPatterns
|
m_pendingModifiedMimeTypes[mt.name()].globPatterns
|
||||||
= m_ui.patternsLineEdit->text().split(kSemiColon, Qt::SkipEmptyParts);
|
= m_patternsLineEdit->text().split(kSemiColon, Qt::SkipEmptyParts);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MimeTypeSettingsPrivate::addMagicHeaderRow(const MagicData &data)
|
void MimeTypeSettingsPrivate::addMagicHeaderRow(const MagicData &data)
|
||||||
{
|
{
|
||||||
const int row = m_ui.magicHeadersTreeWidget->topLevelItemCount();
|
const int row = m_magicHeadersTreeWidget->topLevelItemCount();
|
||||||
editMagicHeaderRowData(row, data);
|
editMagicHeaderRowData(row, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -378,14 +474,14 @@ void MimeTypeSettingsPrivate::editMagicHeaderRowData(const int row, const MagicD
|
|||||||
item->setText(2, QString::fromLatin1("%1:%2").arg(data.m_rule.startPos()).arg(data.m_rule.endPos()));
|
item->setText(2, QString::fromLatin1("%1:%2").arg(data.m_rule.startPos()).arg(data.m_rule.endPos()));
|
||||||
item->setText(3, QString::number(data.m_priority));
|
item->setText(3, QString::number(data.m_priority));
|
||||||
item->setData(0, Qt::UserRole, QVariant::fromValue(data));
|
item->setData(0, Qt::UserRole, QVariant::fromValue(data));
|
||||||
m_ui.magicHeadersTreeWidget->takeTopLevelItem(row);
|
m_magicHeadersTreeWidget->takeTopLevelItem(row);
|
||||||
m_ui.magicHeadersTreeWidget->insertTopLevelItem(row, item);
|
m_magicHeadersTreeWidget->insertTopLevelItem(row, item);
|
||||||
m_ui.magicHeadersTreeWidget->setCurrentItem(item);
|
m_magicHeadersTreeWidget->setCurrentItem(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MimeTypeSettingsPrivate::addMagicHeader()
|
void MimeTypeSettingsPrivate::addMagicHeader()
|
||||||
{
|
{
|
||||||
const QModelIndex &mimeTypeIndex = m_ui.mimeTypesTreeView->currentIndex();
|
const QModelIndex &mimeTypeIndex = m_mimeTypesTreeView->currentIndex();
|
||||||
QTC_ASSERT(mimeTypeIndex.isValid(), return);
|
QTC_ASSERT(mimeTypeIndex.isValid(), return);
|
||||||
|
|
||||||
int index = m_filterModel->mapToSource(mimeTypeIndex).row();
|
int index = m_filterModel->mapToSource(mimeTypeIndex).row();
|
||||||
@@ -401,16 +497,16 @@ void MimeTypeSettingsPrivate::addMagicHeader()
|
|||||||
|
|
||||||
void MimeTypeSettingsPrivate::removeMagicHeader()
|
void MimeTypeSettingsPrivate::removeMagicHeader()
|
||||||
{
|
{
|
||||||
const QModelIndex &mimeTypeIndex = m_ui.mimeTypesTreeView->currentIndex();
|
const QModelIndex &mimeTypeIndex = m_mimeTypesTreeView->currentIndex();
|
||||||
QTC_ASSERT(mimeTypeIndex.isValid(), return);
|
QTC_ASSERT(mimeTypeIndex.isValid(), return);
|
||||||
|
|
||||||
const QModelIndex &magicIndex = m_ui.magicHeadersTreeWidget->currentIndex();
|
const QModelIndex &magicIndex = m_magicHeadersTreeWidget->currentIndex();
|
||||||
QTC_ASSERT(magicIndex.isValid(), return);
|
QTC_ASSERT(magicIndex.isValid(), return);
|
||||||
|
|
||||||
int index = m_filterModel->mapToSource(mimeTypeIndex).row();
|
int index = m_filterModel->mapToSource(mimeTypeIndex).row();
|
||||||
const Utils::MimeType mt = m_model->m_mimeTypes.at(index);
|
const Utils::MimeType mt = m_model->m_mimeTypes.at(index);
|
||||||
|
|
||||||
QTreeWidgetItem *item = m_ui.magicHeadersTreeWidget->topLevelItem(magicIndex.row());
|
QTreeWidgetItem *item = m_magicHeadersTreeWidget->topLevelItem(magicIndex.row());
|
||||||
QTC_ASSERT(item, return);
|
QTC_ASSERT(item, return);
|
||||||
const MagicData data = item->data(0, Qt::UserRole).value<MagicData>();
|
const MagicData data = item->data(0, Qt::UserRole).value<MagicData>();
|
||||||
|
|
||||||
@@ -421,16 +517,16 @@ void MimeTypeSettingsPrivate::removeMagicHeader()
|
|||||||
|
|
||||||
void MimeTypeSettingsPrivate::editMagicHeader()
|
void MimeTypeSettingsPrivate::editMagicHeader()
|
||||||
{
|
{
|
||||||
const QModelIndex &mimeTypeIndex = m_ui.mimeTypesTreeView->currentIndex();
|
const QModelIndex &mimeTypeIndex = m_mimeTypesTreeView->currentIndex();
|
||||||
QTC_ASSERT(mimeTypeIndex.isValid(), return);
|
QTC_ASSERT(mimeTypeIndex.isValid(), return);
|
||||||
|
|
||||||
const QModelIndex &magicIndex = m_ui.magicHeadersTreeWidget->currentIndex();
|
const QModelIndex &magicIndex = m_magicHeadersTreeWidget->currentIndex();
|
||||||
QTC_ASSERT(magicIndex.isValid(), return);
|
QTC_ASSERT(magicIndex.isValid(), return);
|
||||||
|
|
||||||
int index = m_filterModel->mapToSource(mimeTypeIndex).row();
|
int index = m_filterModel->mapToSource(mimeTypeIndex).row();
|
||||||
const Utils::MimeType mt = m_model->m_mimeTypes.at(index);
|
const Utils::MimeType mt = m_model->m_mimeTypes.at(index);
|
||||||
|
|
||||||
QTreeWidgetItem *item = m_ui.magicHeadersTreeWidget->topLevelItem(magicIndex.row());
|
QTreeWidgetItem *item = m_magicHeadersTreeWidget->topLevelItem(magicIndex.row());
|
||||||
QTC_ASSERT(item, return);
|
QTC_ASSERT(item, return);
|
||||||
const MagicData oldData = item->data(0, Qt::UserRole).value<MagicData>();
|
const MagicData oldData = item->data(0, Qt::UserRole).value<MagicData>();
|
||||||
|
|
||||||
@@ -687,7 +783,6 @@ void MimeEditorDelegate::setModelData(QWidget *editor,
|
|||||||
int(MimeTypeSettingsModel::Role::DefaultHandler));
|
int(MimeTypeSettingsModel::Role::DefaultHandler));
|
||||||
}
|
}
|
||||||
|
|
||||||
} // Internal
|
} // Core::Internal
|
||||||
} // Core
|
|
||||||
|
|
||||||
#include "mimetypesettings.moc"
|
#include "mimetypesettings.moc"
|
||||||
|
@@ -5,8 +5,7 @@
|
|||||||
|
|
||||||
#include <coreplugin/dialogs/ioptionspage.h>
|
#include <coreplugin/dialogs/ioptionspage.h>
|
||||||
|
|
||||||
namespace Core {
|
namespace Core::Internal {
|
||||||
namespace Internal {
|
|
||||||
|
|
||||||
class MimeTypeSettingsPrivate;
|
class MimeTypeSettingsPrivate;
|
||||||
|
|
||||||
@@ -27,5 +26,4 @@ private:
|
|||||||
MimeTypeSettingsPrivate *d;
|
MimeTypeSettingsPrivate *d;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // Internal
|
} // Core::Internal
|
||||||
} // Core
|
|
||||||
|
@@ -1,201 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<ui version="4.0">
|
|
||||||
<class>Core::Internal::MimeTypeSettingsPage</class>
|
|
||||||
<widget class="QWidget" name="Core::Internal::MimeTypeSettingsPage">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>712</width>
|
|
||||||
<height>696</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="windowTitle">
|
|
||||||
<string/>
|
|
||||||
</property>
|
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
|
||||||
<item>
|
|
||||||
<widget class="QSplitter" name="splitter">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Vertical</enum>
|
|
||||||
</property>
|
|
||||||
<property name="childrenCollapsible">
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
<widget class="QGroupBox" name="mimeTypesGroupBox">
|
|
||||||
<property name="title">
|
|
||||||
<string>Registered MIME Types</string>
|
|
||||||
</property>
|
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
|
||||||
<item row="2" column="2">
|
|
||||||
<spacer name="horizontalSpacer">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>476</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="0" colspan="3">
|
|
||||||
<widget class="QLineEdit" name="filterLineEdit">
|
|
||||||
<property name="placeholderText">
|
|
||||||
<string>Filter</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="0" colspan="3">
|
|
||||||
<widget class="QTreeView" name="mimeTypesTreeView">
|
|
||||||
<property name="editTriggers">
|
|
||||||
<set>QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed|QAbstractItemView::SelectedClicked</set>
|
|
||||||
</property>
|
|
||||||
<property name="rootIsDecorated">
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
<property name="uniformRowHeights">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="0">
|
|
||||||
<widget class="QPushButton" name="resetButton">
|
|
||||||
<property name="toolTip">
|
|
||||||
<string>Reset all MIME type definitions to their defaults.</string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Reset MIME Types</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="1">
|
|
||||||
<widget class="QPushButton" name="resetHandlersButton">
|
|
||||||
<property name="toolTip">
|
|
||||||
<string>Reset the assigned handler for all MIME type definitions to the default.</string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Reset Handlers</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
<widget class="QGroupBox" name="detailsGroupBox">
|
|
||||||
<property name="title">
|
|
||||||
<string>Details</string>
|
|
||||||
</property>
|
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_4">
|
|
||||||
<item>
|
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="patternsLabel">
|
|
||||||
<property name="text">
|
|
||||||
<string>Patterns:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QLineEdit" name="patternsLineEdit">
|
|
||||||
<property name="toolTip">
|
|
||||||
<string>A semicolon-separated list of wildcarded file names.</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
|
||||||
<item>
|
|
||||||
<widget class="QTreeWidget" name="magicHeadersTreeWidget">
|
|
||||||
<property name="rootIsDecorated">
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
<property name="uniformRowHeights">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
<property name="columnCount">
|
|
||||||
<number>4</number>
|
|
||||||
</property>
|
|
||||||
<column>
|
|
||||||
<property name="text">
|
|
||||||
<string notr="true">Magic Header</string>
|
|
||||||
</property>
|
|
||||||
</column>
|
|
||||||
<column>
|
|
||||||
<property name="text">
|
|
||||||
<string>Type</string>
|
|
||||||
</property>
|
|
||||||
</column>
|
|
||||||
<column>
|
|
||||||
<property name="text">
|
|
||||||
<string>Range</string>
|
|
||||||
</property>
|
|
||||||
</column>
|
|
||||||
<column>
|
|
||||||
<property name="text">
|
|
||||||
<string>Priority</string>
|
|
||||||
</property>
|
|
||||||
</column>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<layout class="QVBoxLayout" name="verticalLayout">
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="addMagicButton">
|
|
||||||
<property name="text">
|
|
||||||
<string>Add...</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="editMagicButton">
|
|
||||||
<property name="text">
|
|
||||||
<string>Edit...</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="removeMagicButton">
|
|
||||||
<property name="text">
|
|
||||||
<string>Remove</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<spacer name="verticalSpacer_2">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Vertical</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>72</width>
|
|
||||||
<height>18</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
<tabstops>
|
|
||||||
<tabstop>filterLineEdit</tabstop>
|
|
||||||
<tabstop>mimeTypesTreeView</tabstop>
|
|
||||||
<tabstop>resetButton</tabstop>
|
|
||||||
<tabstop>patternsLineEdit</tabstop>
|
|
||||||
<tabstop>magicHeadersTreeWidget</tabstop>
|
|
||||||
<tabstop>addMagicButton</tabstop>
|
|
||||||
<tabstop>editMagicButton</tabstop>
|
|
||||||
<tabstop>removeMagicButton</tabstop>
|
|
||||||
</tabstops>
|
|
||||||
<resources/>
|
|
||||||
<connections/>
|
|
||||||
</ui>
|
|
Reference in New Issue
Block a user