MIME types: Introduce user extensions feature

Creates a new page in the options dialog which allows
the user to modify MIME type's globl patterns and rule-based
magic matchers.

As a side-effect of this feature our MIME database (and related
components) got some improvements.

Reviewed-by: Friedemann Kleint
This commit is contained in:
Leandro Melo
2011-02-22 15:11:50 +01:00
parent c8f19854f9
commit 3db53206c2
15 changed files with 1964 additions and 111 deletions

View File

@@ -40,6 +40,7 @@
#include "editormanager.h"
#include "externaltool.h"
#include "toolsettings.h"
#include "mimetypesettings.h"
#include "fancytabwidget.h"
#include "filemanager.h"
#include "generalsettings.h"
@@ -152,6 +153,7 @@ MainWindow::MainWindow() :
m_generalSettings(new GeneralSettings),
m_shortcutSettings(new ShortcutSettings),
m_toolSettings(new ToolSettings),
m_mimeTypeSettings(new MimeTypeSettings),
m_systemEditor(new SystemEditor),
m_focusToEditor(0),
m_newAction(0),
@@ -256,6 +258,7 @@ MainWindow::~MainWindow()
pm->removeObject(m_shortcutSettings);
pm->removeObject(m_generalSettings);
pm->removeObject(m_toolSettings);
pm->removeObject(m_mimeTypeSettings);
pm->removeObject(m_systemEditor);
delete m_externalToolManager;
m_externalToolManager = 0;
@@ -267,6 +270,8 @@ MainWindow::~MainWindow()
m_generalSettings = 0;
delete m_toolSettings;
m_toolSettings = 0;
delete m_mimeTypeSettings;
m_mimeTypeSettings = 0;
delete m_systemEditor;
m_systemEditor = 0;
delete m_settings;
@@ -325,9 +330,9 @@ bool MainWindow::init(QString *errorMessage)
pm->addObject(m_generalSettings);
pm->addObject(m_shortcutSettings);
pm->addObject(m_toolSettings);
pm->addObject(m_mimeTypeSettings);
pm->addObject(m_systemEditor);
// Add widget to the bottom, we create the view here instead of inside the
// OutputPaneManager, since the StatusBarManager needs to be initialized before
m_outputView = new Core::StatusBarWidget;
@@ -352,8 +357,6 @@ void MainWindow::extensionsInitialized()
readSettings();
updateContext();
registerUserMimeTypes();
emit m_coreImpl->coreAboutToOpen();
show();
emit m_coreImpl->coreOpened();
@@ -1397,15 +1400,3 @@ bool MainWindow::showWarningWithOptions(const QString &title,
}
return false;
}
void MainWindow::registerUserMimeTypes() const
{
// This is to temporarily allow user specific MIME types (without recompilation).
// Be careful with the file contents. Otherwise unpredictable behavior might arise.
const QString &fileName = m_coreImpl->userResourcePath() + QLatin1String("/mimetypes.xml");
if (QFile::exists(fileName)) {
QString error;
if (!m_coreImpl->mimeDatabase()->addMimeTypes(fileName, &error))
qWarning() << error;
}
}