forked from qt-creator/qt-creator
Delay widget creation of options pages till their category is shown
Also add the alternative way: IOptionsPageProvider, which states a category, and is asked for a list of options pages for that category when it is shown. Task-number: QTCREATORBUG-3131
This commit is contained in:
@@ -315,6 +315,8 @@ void CMakeSettingsPage::saveSettings() const
|
||||
|
||||
void CMakeSettingsPage::apply()
|
||||
{
|
||||
if (!m_pathchooser) // page was never shown
|
||||
return;
|
||||
if (m_cmakeExecutable == m_pathchooser->path())
|
||||
return;
|
||||
m_cmakeExecutable = m_pathchooser->path();
|
||||
|
||||
@@ -54,7 +54,7 @@ using namespace Core;
|
||||
using namespace Core::Internal;
|
||||
|
||||
CommandMappings::CommandMappings(QObject *parent)
|
||||
: IOptionsPage(parent)
|
||||
: IOptionsPage(parent), m_page(0)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -140,7 +140,10 @@ void CommandMappings::setTargetHeader(const QString &s)
|
||||
|
||||
void CommandMappings::finish()
|
||||
{
|
||||
if (!m_page) // page was never shown
|
||||
return;
|
||||
delete m_page;
|
||||
m_page = 0;
|
||||
}
|
||||
|
||||
void CommandMappings::commandChanged(QTreeWidgetItem *current)
|
||||
|
||||
@@ -34,14 +34,19 @@
|
||||
\mainclass
|
||||
\brief The IOptionsPage is an interface for providing options pages.
|
||||
|
||||
You need to subclass this interface and put an instance of your subclass
|
||||
into the plugin manager object pool (e.g. ExtensionSystem::PluginManager::addObject).
|
||||
Guidelines for implementing:
|
||||
\list
|
||||
\o id() is an id used for filtering when calling ICore:: showOptionsDialog()
|
||||
\o displayName() is the (translated) name for display.
|
||||
\o category() is the category used for filtering when calling ICore:: showOptionsDialog()
|
||||
\o displayCategory() is the translated category
|
||||
\o id() is a unique identifier for referencing this page
|
||||
\o displayName() is the (translated) name for display
|
||||
\o category() is the unique id for the category that the page should be displayed in
|
||||
\o displayCategory() is the translated name of the category
|
||||
\o createPage() is called to retrieve the widget to show in the preferences dialog
|
||||
The widget will be destroyed by the widget hierarchy when the dialog closes
|
||||
\o apply() is called to store the settings. It should detect if any changes have been
|
||||
made and store those.
|
||||
\o matches() is used for the options dialog search filter.
|
||||
made and store those
|
||||
\o finish() is called directly before the preferences dialog closes
|
||||
\o matches() is used for the options dialog search filter
|
||||
\endlist
|
||||
*/
|
||||
|
||||
@@ -60,6 +60,29 @@ public:
|
||||
virtual void finish() = 0;
|
||||
};
|
||||
|
||||
/*
|
||||
Alternative way for providing option pages instead of adding IOptionsPage
|
||||
objects into the plugin manager pool. Should only be used if creation of the
|
||||
actual option pages is not possible or too expensive at Qt Creator startup.
|
||||
(Like the designer integration, which needs to initialize designer plugins
|
||||
before the options pages get available.)
|
||||
*/
|
||||
|
||||
class CORE_EXPORT IOptionsPageProvider : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
IOptionsPageProvider(QObject *parent = 0) : QObject(parent) {}
|
||||
virtual ~IOptionsPageProvider() {}
|
||||
|
||||
virtual QString category() const = 0;
|
||||
virtual QString displayCategory() const = 0;
|
||||
virtual QIcon categoryIcon() const = 0;
|
||||
|
||||
virtual QList<IOptionsPage *> pages() const = 0;
|
||||
};
|
||||
|
||||
} // namespace Core
|
||||
|
||||
#endif // IOPTIONSPAGE_H
|
||||
|
||||
@@ -72,7 +72,8 @@ public:
|
||||
QString id;
|
||||
QString displayName;
|
||||
QIcon icon;
|
||||
QList<IOptionsPage*> pages;
|
||||
QList<IOptionsPage *> pages;
|
||||
QList<IOptionsPageProvider *> providers;
|
||||
int index;
|
||||
QTabWidget *tabWidget;
|
||||
};
|
||||
@@ -86,7 +87,8 @@ public:
|
||||
int rowCount(const QModelIndex &parent = QModelIndex()) const;
|
||||
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
|
||||
|
||||
void setPages(const QList<IOptionsPage*> &pages);
|
||||
void setPages(const QList<IOptionsPage*> &pages,
|
||||
const QList<IOptionsPageProvider *> &providers);
|
||||
const QList<Category*> &categories() const { return m_categories; }
|
||||
|
||||
private:
|
||||
@@ -130,7 +132,8 @@ QVariant CategoryModel::data(const QModelIndex &index, int role) const
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
void CategoryModel::setPages(const QList<IOptionsPage*> &pages)
|
||||
void CategoryModel::setPages(const QList<IOptionsPage*> &pages,
|
||||
const QList<IOptionsPageProvider *> &providers)
|
||||
{
|
||||
// Clear any previous categories
|
||||
qDeleteAll(m_categories);
|
||||
@@ -143,13 +146,32 @@ void CategoryModel::setPages(const QList<IOptionsPage*> &pages)
|
||||
if (!category) {
|
||||
category = new Category;
|
||||
category->id = categoryId;
|
||||
category->displayName = page->displayCategory();
|
||||
category->icon = page->categoryIcon();
|
||||
category->pages.append(page);
|
||||
category->tabWidget = 0;
|
||||
category->index = -1;
|
||||
m_categories.append(category);
|
||||
} else {
|
||||
category->pages.append(page);
|
||||
}
|
||||
if (category->displayName.isEmpty())
|
||||
category->displayName = page->displayCategory();
|
||||
if (category->icon.isNull())
|
||||
category->icon = page->categoryIcon();
|
||||
category->pages.append(page);
|
||||
}
|
||||
|
||||
foreach (IOptionsPageProvider *provider, providers) {
|
||||
const QString &categoryId = provider->category();
|
||||
Category *category = findCategoryById(categoryId);
|
||||
if (!category) {
|
||||
category = new Category;
|
||||
category->id = categoryId;
|
||||
category->tabWidget = 0;
|
||||
category->index = -1;
|
||||
m_categories.append(category);
|
||||
}
|
||||
if (category->displayName.isEmpty())
|
||||
category->displayName = provider->displayCategory();
|
||||
if (category->icon.isNull())
|
||||
category->icon = provider->categoryIcon();
|
||||
category->providers.append(provider);
|
||||
}
|
||||
|
||||
reset();
|
||||
@@ -277,26 +299,8 @@ SettingsDialog::SettingsDialog(QWidget *parent) :
|
||||
setWindowTitle(tr("Options"));
|
||||
#endif
|
||||
|
||||
m_model->setPages(m_pages);
|
||||
|
||||
// Create the tab widgets with the pages in each category
|
||||
const QList<Category*> &categories = m_model->categories();
|
||||
for (int i = 0; i < categories.size(); ++i) {
|
||||
Category *category = categories.at(i);
|
||||
|
||||
QTabWidget *tabWidget = new QTabWidget;
|
||||
for (int j = 0; j < category->pages.size(); ++j) {
|
||||
IOptionsPage *page = category->pages.at(j);
|
||||
QWidget *widget = page->createPage(0);
|
||||
tabWidget->addTab(widget, page->displayName());
|
||||
}
|
||||
|
||||
connect(tabWidget, SIGNAL(currentChanged(int)),
|
||||
this, SLOT(currentTabChanged(int)));
|
||||
|
||||
category->tabWidget = tabWidget;
|
||||
category->index = m_stackedLayout->addWidget(tabWidget);
|
||||
}
|
||||
m_model->setPages(m_pages,
|
||||
ExtensionSystem::PluginManager::instance()->getObjects<IOptionsPageProvider>());
|
||||
|
||||
m_proxyModel->setSourceModel(m_model);
|
||||
m_proxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
|
||||
@@ -383,6 +387,7 @@ void SettingsDialog::createGui()
|
||||
mainGridLayout->addWidget(buttonBox, 2, 0, 1, 2);
|
||||
mainGridLayout->setColumnStretch(1, 4);
|
||||
setLayout(mainGridLayout);
|
||||
setMinimumSize(1070, 680);
|
||||
}
|
||||
|
||||
SettingsDialog::~SettingsDialog()
|
||||
@@ -392,7 +397,7 @@ SettingsDialog::~SettingsDialog()
|
||||
void SettingsDialog::showCategory(int index)
|
||||
{
|
||||
Category *category = m_model->categories().at(index);
|
||||
|
||||
ensureCategoryWidget(category);
|
||||
// Update current category and page
|
||||
m_currentCategory = category->id;
|
||||
const int currentTabIndex = category->tabWidget->currentIndex();
|
||||
@@ -408,6 +413,29 @@ void SettingsDialog::showCategory(int index)
|
||||
updateEnabledTabs(category, m_filterLineEdit->text());
|
||||
}
|
||||
|
||||
void SettingsDialog::ensureCategoryWidget(Category *category)
|
||||
{
|
||||
if (category->tabWidget != 0)
|
||||
return;
|
||||
foreach (const IOptionsPageProvider *provider, category->providers) {
|
||||
category->pages += provider->pages();
|
||||
}
|
||||
qStableSort(category->pages.begin(), category->pages.end(), optionsPageLessThan);
|
||||
|
||||
QTabWidget *tabWidget = new QTabWidget;
|
||||
for (int j = 0; j < category->pages.size(); ++j) {
|
||||
IOptionsPage *page = category->pages.at(j);
|
||||
QWidget *widget = page->createPage(0);
|
||||
tabWidget->addTab(widget, page->displayName());
|
||||
}
|
||||
|
||||
connect(tabWidget, SIGNAL(currentChanged(int)),
|
||||
this, SLOT(currentTabChanged(int)));
|
||||
|
||||
category->tabWidget = tabWidget;
|
||||
category->index = m_stackedLayout->addWidget(tabWidget);
|
||||
}
|
||||
|
||||
void SettingsDialog::updateEnabledTabs(Category *category, const QString &searchText)
|
||||
{
|
||||
for (int i = 0; i < category->pages.size(); ++i) {
|
||||
|
||||
@@ -93,6 +93,7 @@ private:
|
||||
void showCategory(int index);
|
||||
void showPage(const QString &categoryId, const QString &pageId);
|
||||
void updateEnabledTabs(Category *category, const QString &searchText);
|
||||
void ensureCategoryWidget(Category *category);
|
||||
|
||||
const QList<Core::IOptionsPage*> m_pages;
|
||||
|
||||
|
||||
@@ -53,7 +53,7 @@ using namespace Core::Internal;
|
||||
|
||||
|
||||
GeneralSettings::GeneralSettings():
|
||||
m_dialog(0)
|
||||
m_page(0), m_dialog(0)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -188,6 +188,8 @@ bool GeneralSettings::matches(const QString &s) const
|
||||
|
||||
void GeneralSettings::apply()
|
||||
{
|
||||
if (!m_page) // wasn't shown, can't be changed
|
||||
return;
|
||||
int currentIndex = m_page->languageBox->currentIndex();
|
||||
setLanguage(m_page->languageBox->itemData(currentIndex, Qt::UserRole).toString());
|
||||
// Apply the new base color if accepted
|
||||
@@ -205,7 +207,10 @@ void GeneralSettings::apply()
|
||||
|
||||
void GeneralSettings::finish()
|
||||
{
|
||||
if (!m_page) // page was never shown
|
||||
return;
|
||||
delete m_page;
|
||||
m_page = 0;
|
||||
}
|
||||
|
||||
void GeneralSettings::resetInterfaceColor()
|
||||
|
||||
@@ -96,7 +96,7 @@ FileShareProtocolSettings FileShareProtocolSettingsWidget::settings() const
|
||||
// ----------FileShareProtocolSettingsPage
|
||||
FileShareProtocolSettingsPage::FileShareProtocolSettingsPage(const QSharedPointer<FileShareProtocolSettings> &s,
|
||||
QObject *parent) :
|
||||
Core::IOptionsPage(parent), m_settings(s)
|
||||
Core::IOptionsPage(parent), m_settings(s), m_widget(0)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -134,6 +134,8 @@ QWidget *FileShareProtocolSettingsPage::createPage(QWidget *parent)
|
||||
|
||||
void FileShareProtocolSettingsPage::apply()
|
||||
{
|
||||
if (!m_widget) // page was never shown
|
||||
return;
|
||||
const FileShareProtocolSettings newSettings = m_widget->settings();
|
||||
if (newSettings != *m_settings) {
|
||||
*m_settings = newSettings;
|
||||
|
||||
@@ -76,7 +76,7 @@ Settings SettingsWidget::settings()
|
||||
}
|
||||
|
||||
SettingsPage::SettingsPage(const QSharedPointer<Settings> &settings) :
|
||||
m_settings(settings)
|
||||
m_settings(settings), m_widget(0)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -121,7 +121,8 @@ QWidget *SettingsPage::createPage(QWidget *parent)
|
||||
|
||||
void SettingsPage::apply()
|
||||
{
|
||||
QTC_ASSERT(m_widget, return)
|
||||
if (!m_widget) // page was never shown
|
||||
return;
|
||||
const Settings newSettings = m_widget->settings();
|
||||
if (newSettings != *m_settings) {
|
||||
*m_settings = newSettings;
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
using namespace CppTools::Internal;
|
||||
|
||||
CompletionSettingsPage::CompletionSettingsPage()
|
||||
: m_page(new Ui_CompletionSettingsPage)
|
||||
: m_page(0)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -62,6 +62,7 @@ QString CompletionSettingsPage::displayName() const
|
||||
QWidget *CompletionSettingsPage::createPage(QWidget *parent)
|
||||
{
|
||||
QWidget *w = new QWidget(parent);
|
||||
m_page = new Ui_CompletionSettingsPage;
|
||||
m_page->setupUi(w);
|
||||
|
||||
const TextEditor::CompletionSettings &settings =
|
||||
@@ -113,6 +114,8 @@ QWidget *CompletionSettingsPage::createPage(QWidget *parent)
|
||||
|
||||
void CompletionSettingsPage::apply()
|
||||
{
|
||||
if (!m_page) // page was never shown
|
||||
return;
|
||||
TextEditor::CompletionSettings settings;
|
||||
settings.m_caseSensitivity = caseSensitivity();
|
||||
settings.m_completionTrigger = completionTrigger();
|
||||
@@ -151,3 +154,11 @@ TextEditor::CompletionTrigger CompletionSettingsPage::completionTrigger() const
|
||||
return TextEditor::AutomaticCompletion;
|
||||
}
|
||||
}
|
||||
|
||||
void CompletionSettingsPage::finish()
|
||||
{
|
||||
if (!m_page) // page was never shown
|
||||
return;
|
||||
delete m_page;
|
||||
m_page = 0;
|
||||
}
|
||||
|
||||
@@ -55,7 +55,7 @@ public:
|
||||
|
||||
QWidget *createPage(QWidget *parent);
|
||||
void apply();
|
||||
void finish() { }
|
||||
void finish();
|
||||
virtual bool matches(const QString &) const;
|
||||
|
||||
private:
|
||||
|
||||
@@ -139,6 +139,7 @@ void GdbOptionsPage::writeGdbBinarySettings() /* static */
|
||||
}
|
||||
|
||||
GdbOptionsPage::GdbOptionsPage()
|
||||
: m_ui(0)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -170,67 +171,68 @@ QIcon GdbOptionsPage::categoryIcon() const
|
||||
QWidget *GdbOptionsPage::createPage(QWidget *parent)
|
||||
{
|
||||
QWidget *w = new QWidget(parent);
|
||||
m_ui.setupUi(w);
|
||||
m_ui.gdbChooserWidget->setGdbBinaries(gdbBinaryToolChainMap);
|
||||
m_ui.scriptFileChooser->setExpectedKind(Utils::PathChooser::File);
|
||||
m_ui.scriptFileChooser->setPromptDialogTitle(tr("Choose Location of Startup Script File"));
|
||||
m_ui = new Ui::GdbOptionsPage;
|
||||
m_ui->setupUi(w);
|
||||
m_ui->gdbChooserWidget->setGdbBinaries(gdbBinaryToolChainMap);
|
||||
m_ui->scriptFileChooser->setExpectedKind(Utils::PathChooser::File);
|
||||
m_ui->scriptFileChooser->setPromptDialogTitle(tr("Choose Location of Startup Script File"));
|
||||
|
||||
m_group.clear();
|
||||
m_group.insert(debuggerCore()->action(GdbScriptFile),
|
||||
m_ui.scriptFileChooser);
|
||||
m_ui->scriptFileChooser);
|
||||
m_group.insert(debuggerCore()->action(GdbEnvironment),
|
||||
m_ui.environmentEdit);
|
||||
m_ui->environmentEdit);
|
||||
m_group.insert(debuggerCore()->action(AdjustBreakpointLocations),
|
||||
m_ui.checkBoxAdjustBreakpointLocations);
|
||||
m_ui->checkBoxAdjustBreakpointLocations);
|
||||
m_group.insert(debuggerCore()->action(GdbWatchdogTimeout),
|
||||
m_ui.spinBoxGdbWatchdogTimeout);
|
||||
m_ui->spinBoxGdbWatchdogTimeout);
|
||||
|
||||
m_group.insert(debuggerCore()->action(UseMessageBoxForSignals),
|
||||
m_ui.checkBoxUseMessageBoxForSignals);
|
||||
m_ui->checkBoxUseMessageBoxForSignals);
|
||||
m_group.insert(debuggerCore()->action(SkipKnownFrames),
|
||||
m_ui.checkBoxSkipKnownFrames);
|
||||
m_ui->checkBoxSkipKnownFrames);
|
||||
m_group.insert(debuggerCore()->action(EnableReverseDebugging),
|
||||
m_ui.checkBoxEnableReverseDebugging);
|
||||
m_ui->checkBoxEnableReverseDebugging);
|
||||
m_group.insert(debuggerCore()->action(GdbWatchdogTimeout), 0);
|
||||
|
||||
#if 1
|
||||
m_ui.groupBoxPluginDebugging->hide();
|
||||
m_ui->groupBoxPluginDebugging->hide();
|
||||
#else // The related code (handleAqcuiredInferior()) is disabled as well.
|
||||
m_group.insert(debuggerCore()->action(AllPluginBreakpoints),
|
||||
m_ui.radioButtonAllPluginBreakpoints);
|
||||
m_ui->radioButtonAllPluginBreakpoints);
|
||||
m_group.insert(debuggerCore()->action(SelectedPluginBreakpoints),
|
||||
m_ui.radioButtonSelectedPluginBreakpoints);
|
||||
m_ui->radioButtonSelectedPluginBreakpoints);
|
||||
m_group.insert(debuggerCore()->action(NoPluginBreakpoints),
|
||||
m_ui.radioButtonNoPluginBreakpoints);
|
||||
m_ui->radioButtonNoPluginBreakpoints);
|
||||
m_group.insert(debuggerCore()->action(SelectedPluginBreakpointsPattern),
|
||||
m_ui.lineEditSelectedPluginBreakpointsPattern);
|
||||
m_ui->lineEditSelectedPluginBreakpointsPattern);
|
||||
#endif
|
||||
|
||||
m_ui.lineEditSelectedPluginBreakpointsPattern->
|
||||
m_ui->lineEditSelectedPluginBreakpointsPattern->
|
||||
setEnabled(debuggerCore()->action(SelectedPluginBreakpoints)->value().toBool());
|
||||
connect(m_ui.radioButtonSelectedPluginBreakpoints, SIGNAL(toggled(bool)),
|
||||
m_ui.lineEditSelectedPluginBreakpointsPattern, SLOT(setEnabled(bool)));
|
||||
connect(m_ui->radioButtonSelectedPluginBreakpoints, SIGNAL(toggled(bool)),
|
||||
m_ui->lineEditSelectedPluginBreakpointsPattern, SLOT(setEnabled(bool)));
|
||||
|
||||
// FIXME
|
||||
m_ui.environmentEdit->hide();
|
||||
m_ui.labelEnvironment->hide();
|
||||
m_ui->environmentEdit->hide();
|
||||
m_ui->labelEnvironment->hide();
|
||||
|
||||
if (m_searchKeywords.isEmpty()) {
|
||||
QLatin1Char sep(' ');
|
||||
QTextStream(&m_searchKeywords)
|
||||
<< sep << m_ui.groupBoxLocations->title()
|
||||
<< sep << m_ui.labelEnvironment->text()
|
||||
<< sep << m_ui.labelGdbStartupScript->text()
|
||||
<< sep << m_ui.labelGdbWatchdogTimeout->text()
|
||||
<< sep << m_ui.checkBoxEnableReverseDebugging->text()
|
||||
<< sep << m_ui.checkBoxSkipKnownFrames->text()
|
||||
<< sep << m_ui.checkBoxUseMessageBoxForSignals->text()
|
||||
<< sep << m_ui.checkBoxAdjustBreakpointLocations->text()
|
||||
<< sep << m_ui.groupBoxPluginDebugging->title()
|
||||
<< sep << m_ui.radioButtonAllPluginBreakpoints->text()
|
||||
<< sep << m_ui.radioButtonSelectedPluginBreakpoints->text()
|
||||
<< sep << m_ui.labelSelectedPluginBreakpoints->text()
|
||||
<< sep << m_ui.radioButtonNoPluginBreakpoints->text()
|
||||
<< sep << m_ui->groupBoxLocations->title()
|
||||
<< sep << m_ui->labelEnvironment->text()
|
||||
<< sep << m_ui->labelGdbStartupScript->text()
|
||||
<< sep << m_ui->labelGdbWatchdogTimeout->text()
|
||||
<< sep << m_ui->checkBoxEnableReverseDebugging->text()
|
||||
<< sep << m_ui->checkBoxSkipKnownFrames->text()
|
||||
<< sep << m_ui->checkBoxUseMessageBoxForSignals->text()
|
||||
<< sep << m_ui->checkBoxAdjustBreakpointLocations->text()
|
||||
<< sep << m_ui->groupBoxPluginDebugging->title()
|
||||
<< sep << m_ui->radioButtonAllPluginBreakpoints->text()
|
||||
<< sep << m_ui->radioButtonSelectedPluginBreakpoints->text()
|
||||
<< sep << m_ui->labelSelectedPluginBreakpoints->text()
|
||||
<< sep << m_ui->radioButtonNoPluginBreakpoints->text()
|
||||
;
|
||||
m_searchKeywords.remove(QLatin1Char('&'));
|
||||
}
|
||||
@@ -239,17 +241,22 @@ QWidget *GdbOptionsPage::createPage(QWidget *parent)
|
||||
|
||||
void GdbOptionsPage::apply()
|
||||
{
|
||||
if (!m_ui) // page never shown
|
||||
return;
|
||||
m_group.apply(Core::ICore::instance()->settings());
|
||||
|
||||
if (m_ui.gdbChooserWidget->isDirty()) {
|
||||
if (m_ui->gdbChooserWidget->isDirty()) {
|
||||
gdbBinariesChanged = true;
|
||||
gdbBinaryToolChainMap = m_ui.gdbChooserWidget->gdbBinaries();
|
||||
m_ui.gdbChooserWidget->clearDirty();
|
||||
gdbBinaryToolChainMap = m_ui->gdbChooserWidget->gdbBinaries();
|
||||
m_ui->gdbChooserWidget->clearDirty();
|
||||
}
|
||||
}
|
||||
|
||||
void GdbOptionsPage::finish()
|
||||
{
|
||||
if (!m_ui) // page never shown
|
||||
return;
|
||||
delete m_ui;
|
||||
m_ui = 0;
|
||||
m_group.finish();
|
||||
}
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@ public:
|
||||
static void writeGdbBinarySettings();
|
||||
|
||||
private:
|
||||
Ui::GdbOptionsPage m_ui;
|
||||
Ui::GdbOptionsPage *m_ui;
|
||||
Utils::SavedActionSet m_group;
|
||||
QString m_searchKeywords;
|
||||
};
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
# include "cppsettingspage.h"
|
||||
#endif
|
||||
|
||||
#include "settingspage.h"
|
||||
#include "designerconstants.h"
|
||||
|
||||
#include <coreplugin/icore.h>
|
||||
@@ -84,6 +85,7 @@ bool FormEditorPlugin::initialize(const QStringList &arguments, QString *error)
|
||||
initializeTemplates();
|
||||
|
||||
addAutoReleasedObject(new FormEditorFactory);
|
||||
addAutoReleasedObject(new SettingsPageProvider);
|
||||
|
||||
// Ensure that loading designer translations is done before FormEditorW is instantiated
|
||||
const QString locale = Core::ICore::instance()->userInterfaceLanguage();
|
||||
@@ -97,18 +99,9 @@ bool FormEditorPlugin::initialize(const QStringList &arguments, QString *error)
|
||||
qApp->installTranslator(qtr);
|
||||
}
|
||||
error->clear();
|
||||
// Delayed loading: Make sure settings pages are there if options
|
||||
// dialog is requested.
|
||||
connect(Core::ICore::instance(), SIGNAL(optionsDialogRequested()),
|
||||
this, SLOT(ensurePluginInitialized()));
|
||||
return true;
|
||||
}
|
||||
|
||||
void FormEditorPlugin::ensurePluginInitialized()
|
||||
{
|
||||
FormEditorW::instance()->ensureInitStage(FormEditorW::RegisterPlugins);
|
||||
}
|
||||
|
||||
void FormEditorPlugin::extensionsInitialized()
|
||||
{
|
||||
// 4) test and make sure everything works (undo, saving, editors, opening/closing multiple files, dirtiness etc)
|
||||
|
||||
@@ -57,9 +57,6 @@ public:
|
||||
bool initialize(const QStringList &arguments, QString *error_message = 0);
|
||||
void extensionsInitialized();
|
||||
|
||||
public slots:
|
||||
void ensurePluginInitialized();
|
||||
|
||||
private:
|
||||
|
||||
void initializeTemplates();
|
||||
|
||||
@@ -186,7 +186,6 @@ FormEditorW::FormEditorW() :
|
||||
|
||||
foreach (QDesignerOptionsPageInterface *designerPage, m_formeditor->optionsPages()) {
|
||||
SettingsPage *settingsPage = new SettingsPage(designerPage);
|
||||
ExtensionSystem::PluginManager::instance()->addObject(settingsPage);
|
||||
m_settingsPages.append(settingsPage);
|
||||
}
|
||||
|
||||
@@ -213,10 +212,8 @@ FormEditorW::~FormEditorW()
|
||||
}
|
||||
|
||||
delete m_formeditor;
|
||||
foreach (SettingsPage *settingsPage, m_settingsPages) {
|
||||
ExtensionSystem::PluginManager::instance()->removeObject(settingsPage);
|
||||
delete settingsPage;
|
||||
}
|
||||
qDeleteAll(m_settingsPages);
|
||||
m_settingsPages.clear();
|
||||
delete m_integration;
|
||||
|
||||
m_self = 0;
|
||||
@@ -389,6 +386,11 @@ void FormEditorW::initDesignerSubWindows()
|
||||
m_designerSubWindows[ActionEditorSubWindow] = ae;
|
||||
}
|
||||
|
||||
QList<Core::IOptionsPage *> FormEditorW::optionsPages() const
|
||||
{
|
||||
return m_settingsPages;
|
||||
}
|
||||
|
||||
void FormEditorW::ensureInitStage(InitializationStage s)
|
||||
{
|
||||
if (Designer::Constants::Internal::debug)
|
||||
|
||||
@@ -32,7 +32,8 @@
|
||||
|
||||
#include "designerconstants.h"
|
||||
|
||||
#include "coreplugin/icontext.h"
|
||||
#include <coreplugin/icontext.h>
|
||||
#include <coreplugin/dialogs/ioptionspage.h>
|
||||
|
||||
#include <QtCore/QMap>
|
||||
#include <QtCore/QObject>
|
||||
@@ -85,12 +86,10 @@ class DesignerContext;
|
||||
* The plugin uses this stage at first by calling ensureInitStage().
|
||||
* Requesting an editor via instance() will fully initialize the class.
|
||||
* This is based on the assumption that the Designer settings work with
|
||||
* no plugins loaded. If that does not work, full initialization can be
|
||||
* triggered by connection to the ICore::optionsDialogRequested() signal.
|
||||
* no plugins loaded.
|
||||
*
|
||||
* The form editor shows a read-only XML editor in edit mode and Qt Designer
|
||||
* in Design mode. It connects to void EditorManager::currentEditorChanged()
|
||||
* and switches modes if a designer XML editor is activated. */
|
||||
* in Design mode. */
|
||||
class FormEditorW : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
@@ -117,6 +116,7 @@ public:
|
||||
inline QWidget * const*designerSubWindows() const { return m_designerSubWindows; }
|
||||
|
||||
EditorData activeEditor() const;
|
||||
QList<Core::IOptionsPage *> optionsPages() const;
|
||||
|
||||
private slots:
|
||||
void activateEditMode(int id);
|
||||
@@ -178,7 +178,7 @@ private:
|
||||
QAction *m_lockAction;
|
||||
QAction *m_resetLayoutAction;
|
||||
|
||||
QList<SettingsPage *> m_settingsPages;
|
||||
QList<Core::IOptionsPage *> m_settingsPages;
|
||||
QActionGroup *m_actionGroupEditMode;
|
||||
QAction *m_actionPrint;
|
||||
QAction *m_actionPreview;
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
|
||||
#include "settingspage.h"
|
||||
#include "designerconstants.h"
|
||||
#include "formeditorw.h"
|
||||
|
||||
#include <extensionsystem/pluginmanager.h>
|
||||
#include "qt_private/abstractoptionspage_p.h"
|
||||
@@ -37,7 +38,7 @@
|
||||
using namespace Designer::Internal;
|
||||
|
||||
SettingsPage::SettingsPage(QDesignerOptionsPageInterface *designerPage) :
|
||||
m_designerPage(designerPage)
|
||||
m_designerPage(designerPage), m_initialized(false)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -72,15 +73,52 @@ QIcon SettingsPage::categoryIcon() const
|
||||
|
||||
QWidget *SettingsPage::createPage(QWidget *parent)
|
||||
{
|
||||
m_initialized = true;
|
||||
return m_designerPage->createPage(parent);
|
||||
}
|
||||
|
||||
void SettingsPage::apply()
|
||||
{
|
||||
m_designerPage->apply();
|
||||
if (m_initialized)
|
||||
m_designerPage->apply();
|
||||
}
|
||||
|
||||
void SettingsPage::finish()
|
||||
{
|
||||
m_designerPage->finish();
|
||||
if (m_initialized)
|
||||
m_designerPage->finish();
|
||||
}
|
||||
|
||||
SettingsPageProvider::SettingsPageProvider(QObject *parent)
|
||||
: IOptionsPageProvider(parent), m_initialized(false)
|
||||
{
|
||||
}
|
||||
|
||||
SettingsPageProvider::~SettingsPageProvider()
|
||||
{
|
||||
}
|
||||
|
||||
QString SettingsPageProvider::category() const
|
||||
{
|
||||
return QLatin1String(Designer::Constants::SETTINGS_CATEGORY);
|
||||
}
|
||||
|
||||
QString SettingsPageProvider::displayCategory() const
|
||||
{
|
||||
return QCoreApplication::translate("Designer", Designer::Constants::SETTINGS_TR_CATEGORY);
|
||||
}
|
||||
|
||||
QIcon SettingsPageProvider::categoryIcon() const
|
||||
{
|
||||
return QIcon(QLatin1String(Designer::Constants::SETTINGS_CATEGORY_ICON));
|
||||
}
|
||||
|
||||
QList<Core::IOptionsPage *> SettingsPageProvider::pages() const
|
||||
{
|
||||
if (!m_initialized) {
|
||||
// get options pages from designer
|
||||
m_initialized = true;
|
||||
FormEditorW::ensureInitStage(FormEditorW::RegisterPlugins);
|
||||
}
|
||||
return FormEditorW::instance()->optionsPages();
|
||||
}
|
||||
|
||||
@@ -61,6 +61,25 @@ public:
|
||||
|
||||
private:
|
||||
QDesignerOptionsPageInterface *m_designerPage;
|
||||
bool m_initialized;
|
||||
};
|
||||
|
||||
class SettingsPageProvider : public Core::IOptionsPageProvider
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
SettingsPageProvider(QObject *parent = 0);
|
||||
~SettingsPageProvider();
|
||||
|
||||
QString category() const;
|
||||
QString displayCategory() const;
|
||||
QIcon categoryIcon() const;
|
||||
|
||||
QList<Core::IOptionsPage *> pages() const;
|
||||
|
||||
private:
|
||||
mutable bool m_initialized;
|
||||
};
|
||||
|
||||
} // namespace Internal
|
||||
|
||||
@@ -54,6 +54,7 @@
|
||||
using namespace Help::Internal;
|
||||
|
||||
GeneralSettingsPage::GeneralSettingsPage()
|
||||
: m_ui(0)
|
||||
{
|
||||
m_font = qApp->font();
|
||||
#if !defined(QT_NO_WEBKIT)
|
||||
@@ -90,10 +91,10 @@ QIcon GeneralSettingsPage::categoryIcon() const
|
||||
QWidget *GeneralSettingsPage::createPage(QWidget *parent)
|
||||
{
|
||||
QWidget *widget = new QWidget(parent);
|
||||
|
||||
m_ui.setupUi(widget);
|
||||
m_ui.sizeComboBox->setEditable(false);
|
||||
m_ui.styleComboBox->setEditable(false);
|
||||
m_ui = new Ui::GeneralSettingsPage;
|
||||
m_ui->setupUi(widget);
|
||||
m_ui->sizeComboBox->setEditable(false);
|
||||
m_ui->styleComboBox->setEditable(false);
|
||||
|
||||
Core::HelpManager *manager = Core::HelpManager::instance();
|
||||
m_font = qVariantValue<QFont>(manager->customValue(QLatin1String("font"),
|
||||
@@ -109,58 +110,60 @@ QWidget *GeneralSettingsPage::createPage(QWidget *parent)
|
||||
m_homePage = manager->customValue(QLatin1String("DefaultHomePage"),
|
||||
Help::Constants::AboutBlank).toString();
|
||||
}
|
||||
m_ui.homePageLineEdit->setText(m_homePage);
|
||||
m_ui->homePageLineEdit->setText(m_homePage);
|
||||
|
||||
const int startOption = manager->customValue(QLatin1String("StartOption"),
|
||||
Help::Constants::ShowLastPages).toInt();
|
||||
m_ui.helpStartComboBox->setCurrentIndex(startOption);
|
||||
m_ui->helpStartComboBox->setCurrentIndex(startOption);
|
||||
|
||||
m_contextOption = manager->customValue(QLatin1String("ContextHelpOption"),
|
||||
Help::Constants::SideBySideIfPossible).toInt();
|
||||
m_ui.contextHelpComboBox->setCurrentIndex(m_contextOption);
|
||||
m_ui->contextHelpComboBox->setCurrentIndex(m_contextOption);
|
||||
|
||||
connect(m_ui.currentPageButton, SIGNAL(clicked()), this, SLOT(setCurrentPage()));
|
||||
connect(m_ui.blankPageButton, SIGNAL(clicked()), this, SLOT(setBlankPage()));
|
||||
connect(m_ui.defaultPageButton, SIGNAL(clicked()), this, SLOT(setDefaultPage()));
|
||||
connect(m_ui->currentPageButton, SIGNAL(clicked()), this, SLOT(setCurrentPage()));
|
||||
connect(m_ui->blankPageButton, SIGNAL(clicked()), this, SLOT(setBlankPage()));
|
||||
connect(m_ui->defaultPageButton, SIGNAL(clicked()), this, SLOT(setDefaultPage()));
|
||||
|
||||
HelpViewer *viewer = CentralWidget::instance()->currentHelpViewer();
|
||||
if (!viewer)
|
||||
m_ui.currentPageButton->setEnabled(false);
|
||||
m_ui->currentPageButton->setEnabled(false);
|
||||
|
||||
m_ui.errorLabel->setVisible(false);
|
||||
connect(m_ui.importButton, SIGNAL(clicked()), this, SLOT(importBookmarks()));
|
||||
connect(m_ui.exportButton, SIGNAL(clicked()), this, SLOT(exportBookmarks()));
|
||||
m_ui->errorLabel->setVisible(false);
|
||||
connect(m_ui->importButton, SIGNAL(clicked()), this, SLOT(importBookmarks()));
|
||||
connect(m_ui->exportButton, SIGNAL(clicked()), this, SLOT(exportBookmarks()));
|
||||
|
||||
if (m_searchKeywords.isEmpty()) {
|
||||
QTextStream(&m_searchKeywords) << ' ' << m_ui.contextHelpLabel->text()
|
||||
<< ' ' << m_ui.startPageLabel->text() << ' ' << m_ui.homePageLabel->text()
|
||||
<< ' ' << m_ui.bookmarkGroupBox->title();
|
||||
QTextStream(&m_searchKeywords) << ' ' << m_ui->contextHelpLabel->text()
|
||||
<< ' ' << m_ui->startPageLabel->text() << ' ' << m_ui->homePageLabel->text()
|
||||
<< ' ' << m_ui->bookmarkGroupBox->title();
|
||||
m_searchKeywords.remove(QLatin1Char('&'));
|
||||
}
|
||||
|
||||
m_returnOnClose = manager->customValue(QLatin1String("ReturnOnClose"),
|
||||
false).toBool();
|
||||
m_ui.m_returnOnClose->setChecked(m_returnOnClose);
|
||||
m_ui->m_returnOnClose->setChecked(m_returnOnClose);
|
||||
|
||||
return widget;
|
||||
}
|
||||
|
||||
void GeneralSettingsPage::apply()
|
||||
{
|
||||
if (!m_ui) // page was never shown
|
||||
return;
|
||||
QFont newFont;
|
||||
const QString &family = m_ui.familyComboBox->currentFont().family();
|
||||
const QString &family = m_ui->familyComboBox->currentFont().family();
|
||||
newFont.setFamily(family);
|
||||
|
||||
int fontSize = 14;
|
||||
int currentIndex = m_ui.sizeComboBox->currentIndex();
|
||||
int currentIndex = m_ui->sizeComboBox->currentIndex();
|
||||
if (currentIndex != -1)
|
||||
fontSize = m_ui.sizeComboBox->itemData(currentIndex).toInt();
|
||||
fontSize = m_ui->sizeComboBox->itemData(currentIndex).toInt();
|
||||
newFont.setPointSize(fontSize);
|
||||
|
||||
QString fontStyle = QLatin1String("Normal");
|
||||
currentIndex = m_ui.styleComboBox->currentIndex();
|
||||
currentIndex = m_ui->styleComboBox->currentIndex();
|
||||
if (currentIndex != -1)
|
||||
fontStyle = m_ui.styleComboBox->itemText(currentIndex);
|
||||
fontStyle = m_ui->styleComboBox->itemText(currentIndex);
|
||||
newFont.setBold(m_fontDatabase.bold(family, fontStyle));
|
||||
if (fontStyle.contains(QLatin1String("Italic")))
|
||||
newFont.setStyle(QFont::StyleItalic);
|
||||
@@ -180,15 +183,15 @@ void GeneralSettingsPage::apply()
|
||||
emit fontChanged();
|
||||
}
|
||||
|
||||
QString homePage = m_ui.homePageLineEdit->text();
|
||||
QString homePage = m_ui->homePageLineEdit->text();
|
||||
if (homePage.isEmpty())
|
||||
homePage = Help::Constants::AboutBlank;
|
||||
manager->setCustomValue(QLatin1String("HomePage"), homePage);
|
||||
|
||||
const int startOption = m_ui.helpStartComboBox->currentIndex();
|
||||
const int startOption = m_ui->helpStartComboBox->currentIndex();
|
||||
manager->setCustomValue(QLatin1String("StartOption"), startOption);
|
||||
|
||||
const int helpOption = m_ui.contextHelpComboBox->currentIndex();
|
||||
const int helpOption = m_ui->contextHelpComboBox->currentIndex();
|
||||
if (m_contextOption != helpOption) {
|
||||
m_contextOption = helpOption;
|
||||
manager->setCustomValue(QLatin1String("ContextHelpOption"), helpOption);
|
||||
@@ -201,7 +204,7 @@ void GeneralSettingsPage::apply()
|
||||
emit contextHelpOptionChanged();
|
||||
}
|
||||
|
||||
const bool close = m_ui.m_returnOnClose->isChecked();
|
||||
const bool close = m_ui->m_returnOnClose->isChecked();
|
||||
if (m_returnOnClose != close) {
|
||||
m_returnOnClose = close;
|
||||
manager->setCustomValue(QLatin1String("ReturnOnClose"), close);
|
||||
@@ -213,24 +216,24 @@ void GeneralSettingsPage::setCurrentPage()
|
||||
{
|
||||
HelpViewer *viewer = CentralWidget::instance()->currentHelpViewer();
|
||||
if (viewer)
|
||||
m_ui.homePageLineEdit->setText(viewer->source().toString());
|
||||
m_ui->homePageLineEdit->setText(viewer->source().toString());
|
||||
}
|
||||
|
||||
void GeneralSettingsPage::setBlankPage()
|
||||
{
|
||||
m_ui.homePageLineEdit->setText(Help::Constants::AboutBlank);
|
||||
m_ui->homePageLineEdit->setText(Help::Constants::AboutBlank);
|
||||
}
|
||||
|
||||
void GeneralSettingsPage::setDefaultPage()
|
||||
{
|
||||
const QString &defaultHomePage = Core::HelpManager::instance()
|
||||
->customValue(QLatin1String("DefaultHomePage"), QString()).toString();
|
||||
m_ui.homePageLineEdit->setText(defaultHomePage);
|
||||
m_ui->homePageLineEdit->setText(defaultHomePage);
|
||||
}
|
||||
|
||||
void GeneralSettingsPage::importBookmarks()
|
||||
{
|
||||
m_ui.errorLabel->setVisible(false);
|
||||
m_ui->errorLabel->setVisible(false);
|
||||
|
||||
QString fileName = QFileDialog::getOpenFileName(0, tr("Import Bookmarks"),
|
||||
QDir::currentPath(), tr("Files (*.xbel)"));
|
||||
@@ -246,13 +249,13 @@ void GeneralSettingsPage::importBookmarks()
|
||||
return;
|
||||
}
|
||||
|
||||
m_ui.errorLabel->setVisible(true);
|
||||
m_ui.errorLabel->setText(tr("There was an error while importing bookmarks!"));
|
||||
m_ui->errorLabel->setVisible(true);
|
||||
m_ui->errorLabel->setText(tr("There was an error while importing bookmarks!"));
|
||||
}
|
||||
|
||||
void GeneralSettingsPage::exportBookmarks()
|
||||
{
|
||||
m_ui.errorLabel->setVisible(false);
|
||||
m_ui->errorLabel->setVisible(false);
|
||||
|
||||
QString fileName = QFileDialog::getSaveFileName(0, tr("Save File"),
|
||||
"untitled.xbel", tr("Files (*.xbel)"));
|
||||
@@ -277,18 +280,18 @@ void GeneralSettingsPage::updateFontSize()
|
||||
if (pointSizes.empty())
|
||||
pointSizes = QFontDatabase::standardSizes();
|
||||
|
||||
m_ui.sizeComboBox->clear();
|
||||
m_ui.sizeComboBox->setCurrentIndex(-1);
|
||||
m_ui.sizeComboBox->setEnabled(!pointSizes.empty());
|
||||
m_ui->sizeComboBox->clear();
|
||||
m_ui->sizeComboBox->setCurrentIndex(-1);
|
||||
m_ui->sizeComboBox->setEnabled(!pointSizes.empty());
|
||||
|
||||
// try to maintain selection or select closest.
|
||||
if (!pointSizes.empty()) {
|
||||
QString n;
|
||||
foreach (int pointSize, pointSizes)
|
||||
m_ui.sizeComboBox->addItem(n.setNum(pointSize), QVariant(pointSize));
|
||||
m_ui->sizeComboBox->addItem(n.setNum(pointSize), QVariant(pointSize));
|
||||
const int closestIndex = closestPointSizeIndex(m_font.pointSize());
|
||||
if (closestIndex != -1)
|
||||
m_ui.sizeComboBox->setCurrentIndex(closestIndex);
|
||||
m_ui->sizeComboBox->setCurrentIndex(closestIndex);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -297,32 +300,32 @@ void GeneralSettingsPage::updateFontStyle()
|
||||
const QString &fontStyle = m_fontDatabase.styleString(m_font);
|
||||
const QStringList &styles = m_fontDatabase.styles(m_font.family());
|
||||
|
||||
m_ui.styleComboBox->clear();
|
||||
m_ui.styleComboBox->setCurrentIndex(-1);
|
||||
m_ui.styleComboBox->setEnabled(!styles.empty());
|
||||
m_ui->styleComboBox->clear();
|
||||
m_ui->styleComboBox->setCurrentIndex(-1);
|
||||
m_ui->styleComboBox->setEnabled(!styles.empty());
|
||||
|
||||
if (!styles.empty()) {
|
||||
int normalIndex = -1;
|
||||
const QString normalStyle = QLatin1String("Normal");
|
||||
foreach (const QString &style, styles) {
|
||||
// try to maintain selection or select 'normal' preferably
|
||||
const int newIndex = m_ui.styleComboBox->count();
|
||||
m_ui.styleComboBox->addItem(style);
|
||||
const int newIndex = m_ui->styleComboBox->count();
|
||||
m_ui->styleComboBox->addItem(style);
|
||||
if (fontStyle == style) {
|
||||
m_ui.styleComboBox->setCurrentIndex(newIndex);
|
||||
m_ui->styleComboBox->setCurrentIndex(newIndex);
|
||||
} else {
|
||||
if (fontStyle == normalStyle)
|
||||
normalIndex = newIndex;
|
||||
}
|
||||
}
|
||||
if (m_ui.styleComboBox->currentIndex() == -1 && normalIndex != -1)
|
||||
m_ui.styleComboBox->setCurrentIndex(normalIndex);
|
||||
if (m_ui->styleComboBox->currentIndex() == -1 && normalIndex != -1)
|
||||
m_ui->styleComboBox->setCurrentIndex(normalIndex);
|
||||
}
|
||||
}
|
||||
|
||||
void GeneralSettingsPage::updateFontFamily()
|
||||
{
|
||||
m_ui.familyComboBox->setCurrentFont(m_font);
|
||||
m_ui->familyComboBox->setCurrentFont(m_font);
|
||||
}
|
||||
|
||||
int GeneralSettingsPage::closestPointSizeIndex(int desiredPointSize) const
|
||||
@@ -331,9 +334,9 @@ int GeneralSettingsPage::closestPointSizeIndex(int desiredPointSize) const
|
||||
int closestIndex = -1;
|
||||
int closestAbsError = 0xFFFF;
|
||||
|
||||
const int pointSizeCount = m_ui.sizeComboBox->count();
|
||||
const int pointSizeCount = m_ui->sizeComboBox->count();
|
||||
for (int i = 0; i < pointSizeCount; i++) {
|
||||
const int itemPointSize = m_ui.sizeComboBox->itemData(i).toInt();
|
||||
const int itemPointSize = m_ui->sizeComboBox->itemData(i).toInt();
|
||||
const int absError = qAbs(desiredPointSize - itemPointSize);
|
||||
if (absError < closestAbsError) {
|
||||
closestIndex = i;
|
||||
@@ -353,3 +356,11 @@ bool GeneralSettingsPage::matches(const QString &s) const
|
||||
{
|
||||
return m_searchKeywords.contains(s, Qt::CaseInsensitive);
|
||||
}
|
||||
|
||||
void GeneralSettingsPage::finish()
|
||||
{
|
||||
if (!m_ui) // page was never shown
|
||||
return;
|
||||
delete m_ui;
|
||||
m_ui = 0;
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ public:
|
||||
|
||||
QWidget *createPage(QWidget *parent);
|
||||
void apply();
|
||||
void finish() {}
|
||||
void finish();
|
||||
virtual bool matches(const QString &s) const;
|
||||
|
||||
signals:
|
||||
@@ -85,7 +85,7 @@ private:
|
||||
bool m_returnOnClose;
|
||||
|
||||
QString m_searchKeywords;
|
||||
Ui::GeneralSettingsPage m_ui;
|
||||
Ui::GeneralSettingsPage *m_ui;
|
||||
};
|
||||
|
||||
} // Internal
|
||||
|
||||
@@ -109,6 +109,8 @@ QWidget *SettingsPage::createPage(QWidget *parent)
|
||||
|
||||
void SettingsPage::apply()
|
||||
{
|
||||
if (!m_widget) // page was never shown
|
||||
return;
|
||||
BauhausPlugin::pluginInstance()->setSettings(m_widget->settings());
|
||||
}
|
||||
|
||||
|
||||
@@ -161,6 +161,8 @@ QWidget *QuickToolBarSettingsPage::createPage(QWidget *parent)
|
||||
|
||||
void QuickToolBarSettingsPage::apply()
|
||||
{
|
||||
if (!m_widget) // page was never shown
|
||||
return;
|
||||
m_widget->settings().set();
|
||||
}
|
||||
|
||||
|
||||
@@ -411,7 +411,8 @@ QWidget *S60DevicesPreferencePane::createPage(QWidget *parent)
|
||||
|
||||
void S60DevicesPreferencePane::apply()
|
||||
{
|
||||
QTC_ASSERT(m_widget, return)
|
||||
if (!m_widget) // page was never shown
|
||||
return;
|
||||
|
||||
m_devices->setDevices(m_widget->devices());
|
||||
}
|
||||
|
||||
@@ -133,6 +133,8 @@ QWidget *QtOptionsPage::createPage(QWidget *parent)
|
||||
|
||||
void QtOptionsPage::apply()
|
||||
{
|
||||
if (!m_widget) // page was never shown
|
||||
return;
|
||||
m_widget->finish();
|
||||
|
||||
QtVersionManager *vm = QtVersionManager::instance();
|
||||
|
||||
@@ -49,7 +49,7 @@ struct BehaviorSettingsPage::BehaviorSettingsPagePrivate
|
||||
explicit BehaviorSettingsPagePrivate(const BehaviorSettingsPageParameters &p);
|
||||
|
||||
const BehaviorSettingsPageParameters m_parameters;
|
||||
Ui::BehaviorSettingsPage m_page;
|
||||
Ui::BehaviorSettingsPage *m_page;
|
||||
|
||||
TabSettings m_tabSettings;
|
||||
StorageSettings m_storageSettings;
|
||||
@@ -60,7 +60,7 @@ struct BehaviorSettingsPage::BehaviorSettingsPagePrivate
|
||||
|
||||
BehaviorSettingsPage::BehaviorSettingsPagePrivate::BehaviorSettingsPagePrivate
|
||||
(const BehaviorSettingsPageParameters &p)
|
||||
: m_parameters(p)
|
||||
: m_parameters(p), m_page(0)
|
||||
{
|
||||
if (const QSettings *s = Core::ICore::instance()->settings()) {
|
||||
m_tabSettings.fromSettings(m_parameters.settingsPrefix, s);
|
||||
@@ -94,30 +94,31 @@ QString BehaviorSettingsPage::displayName() const
|
||||
QWidget *BehaviorSettingsPage::createPage(QWidget *parent)
|
||||
{
|
||||
QWidget *w = new QWidget(parent);
|
||||
m_d->m_page.setupUi(w);
|
||||
m_d->m_page = new Ui::BehaviorSettingsPage;
|
||||
m_d->m_page->setupUi(w);
|
||||
settingsToUI();
|
||||
if (m_d->m_searchKeywords.isEmpty()) {
|
||||
QLatin1Char sep(' ');
|
||||
QTextStream(&m_d->m_searchKeywords)
|
||||
<< m_d->m_page.insertSpaces->text()
|
||||
<< sep << m_d->m_page.autoInsertSpaces->text()
|
||||
<< sep << m_d->m_page.autoIndent->text()
|
||||
<< sep << m_d->m_page.smartBackspace->text()
|
||||
<< sep << m_d->m_page.indentBlocksLabel->text()
|
||||
<< sep << m_d->m_page.continuationAlignLabel->text()
|
||||
<< sep << m_d->m_page.tabKeyIndentLabel->text()
|
||||
<< sep << m_d->m_page.cleanWhitespace->text()
|
||||
<< sep << m_d->m_page.inEntireDocument->text()
|
||||
<< sep << m_d->m_page.cleanIndentation->text()
|
||||
<< sep << m_d->m_page.addFinalNewLine->text()
|
||||
<< sep << m_d->m_page.encodingLabel->text()
|
||||
<< sep << m_d->m_page.utf8BomLabel->text()
|
||||
<< sep << m_d->m_page.mouseNavigation->text()
|
||||
<< sep << m_d->m_page.scrollWheelZooming->text()
|
||||
<< sep << m_d->m_page.groupBoxTabAndIndentSettings->title()
|
||||
<< sep << m_d->m_page.groupBoxStorageSettings->title()
|
||||
<< sep << m_d->m_page.groupBoxEncodings->title()
|
||||
<< sep << m_d->m_page.groupBoxMouse->title();
|
||||
<< m_d->m_page->insertSpaces->text()
|
||||
<< sep << m_d->m_page->autoInsertSpaces->text()
|
||||
<< sep << m_d->m_page->autoIndent->text()
|
||||
<< sep << m_d->m_page->smartBackspace->text()
|
||||
<< sep << m_d->m_page->indentBlocksLabel->text()
|
||||
<< sep << m_d->m_page->continuationAlignLabel->text()
|
||||
<< sep << m_d->m_page->tabKeyIndentLabel->text()
|
||||
<< sep << m_d->m_page->cleanWhitespace->text()
|
||||
<< sep << m_d->m_page->inEntireDocument->text()
|
||||
<< sep << m_d->m_page->cleanIndentation->text()
|
||||
<< sep << m_d->m_page->addFinalNewLine->text()
|
||||
<< sep << m_d->m_page->encodingLabel->text()
|
||||
<< sep << m_d->m_page->utf8BomLabel->text()
|
||||
<< sep << m_d->m_page->mouseNavigation->text()
|
||||
<< sep << m_d->m_page->scrollWheelZooming->text()
|
||||
<< sep << m_d->m_page->groupBoxTabAndIndentSettings->title()
|
||||
<< sep << m_d->m_page->groupBoxStorageSettings->title()
|
||||
<< sep << m_d->m_page->groupBoxEncodings->title()
|
||||
<< sep << m_d->m_page->groupBoxMouse->title();
|
||||
m_d->m_searchKeywords.remove(QLatin1Char('&'));
|
||||
}
|
||||
|
||||
@@ -143,18 +144,20 @@ QWidget *BehaviorSettingsPage::createPage(QWidget *parent)
|
||||
name += QLatin1String(" / ");
|
||||
name += QString::fromLatin1(alias);
|
||||
}
|
||||
m_d->m_page.encodingBox->addItem(name);
|
||||
m_d->m_page->encodingBox->addItem(name);
|
||||
if (defaultTextCodec == codec)
|
||||
m_d->m_page.encodingBox->setCurrentIndex(i);
|
||||
m_d->m_page->encodingBox->setCurrentIndex(i);
|
||||
}
|
||||
|
||||
m_d->m_page.utf8BomBox->setCurrentIndex(Core::EditorManager::instance()->utf8BomSetting());
|
||||
m_d->m_page->utf8BomBox->setCurrentIndex(Core::EditorManager::instance()->utf8BomSetting());
|
||||
|
||||
return w;
|
||||
}
|
||||
|
||||
void BehaviorSettingsPage::apply()
|
||||
{
|
||||
if (!m_d->m_page) // page was never shown
|
||||
return;
|
||||
TabSettings newTabSettings;
|
||||
StorageSettings newStorageSettings;
|
||||
BehaviorSettings newBehaviorSettings;
|
||||
@@ -190,61 +193,69 @@ void BehaviorSettingsPage::apply()
|
||||
|
||||
QSettings* settings = Core::ICore::instance()->settings();
|
||||
settings->setValue(QLatin1String(Core::Constants::SETTINGS_DEFAULTTEXTENCODING),
|
||||
m_codecs.at(m_d->m_page.encodingBox->currentIndex())->name());
|
||||
m_codecs.at(m_d->m_page->encodingBox->currentIndex())->name());
|
||||
|
||||
Core::EditorManager::instance()->setUtf8BomSetting(
|
||||
Core::IFile::Utf8BomSetting(m_d->m_page.utf8BomBox->currentIndex()));
|
||||
Core::IFile::Utf8BomSetting(m_d->m_page->utf8BomBox->currentIndex()));
|
||||
}
|
||||
|
||||
void BehaviorSettingsPage::finish()
|
||||
{
|
||||
if (!m_d->m_page) // page was never shown
|
||||
return;
|
||||
delete m_d->m_page;
|
||||
m_d->m_page = 0;
|
||||
}
|
||||
|
||||
void BehaviorSettingsPage::settingsFromUI(TabSettings &tabSettings,
|
||||
StorageSettings &storageSettings,
|
||||
BehaviorSettings &behaviorSettings) const
|
||||
{
|
||||
tabSettings.m_spacesForTabs = m_d->m_page.insertSpaces->isChecked();
|
||||
tabSettings.m_autoSpacesForTabs = m_d->m_page.autoInsertSpaces->isChecked();
|
||||
tabSettings.m_autoIndent = m_d->m_page.autoIndent->isChecked();
|
||||
tabSettings.m_smartBackspace = m_d->m_page.smartBackspace->isChecked();
|
||||
tabSettings.m_tabSize = m_d->m_page.tabSize->value();
|
||||
tabSettings.m_indentSize = m_d->m_page.indentSize->value();
|
||||
tabSettings.m_indentBraces = m_d->m_page.indentBlocksBehavior->currentIndex() >= 1;
|
||||
tabSettings.m_doubleIndentBlocks = m_d->m_page.indentBlocksBehavior->currentIndex() >= 2;
|
||||
tabSettings.m_spacesForTabs = m_d->m_page->insertSpaces->isChecked();
|
||||
tabSettings.m_autoSpacesForTabs = m_d->m_page->autoInsertSpaces->isChecked();
|
||||
tabSettings.m_autoIndent = m_d->m_page->autoIndent->isChecked();
|
||||
tabSettings.m_smartBackspace = m_d->m_page->smartBackspace->isChecked();
|
||||
tabSettings.m_tabSize = m_d->m_page->tabSize->value();
|
||||
tabSettings.m_indentSize = m_d->m_page->indentSize->value();
|
||||
tabSettings.m_indentBraces = m_d->m_page->indentBlocksBehavior->currentIndex() >= 1;
|
||||
tabSettings.m_doubleIndentBlocks = m_d->m_page->indentBlocksBehavior->currentIndex() >= 2;
|
||||
|
||||
tabSettings.m_tabKeyBehavior = (TabSettings::TabKeyBehavior)m_d->m_page.tabKeyBehavior->currentIndex();
|
||||
tabSettings.m_continuationAlignBehavior = (TabSettings::ContinuationAlignBehavior)m_d->m_page.continuationAlignBehavior->currentIndex();
|
||||
tabSettings.m_tabKeyBehavior = (TabSettings::TabKeyBehavior)m_d->m_page->tabKeyBehavior->currentIndex();
|
||||
tabSettings.m_continuationAlignBehavior = (TabSettings::ContinuationAlignBehavior)m_d->m_page->continuationAlignBehavior->currentIndex();
|
||||
|
||||
storageSettings.m_cleanWhitespace = m_d->m_page.cleanWhitespace->isChecked();
|
||||
storageSettings.m_inEntireDocument = m_d->m_page.inEntireDocument->isChecked();
|
||||
storageSettings.m_cleanIndentation = m_d->m_page.cleanIndentation->isChecked();
|
||||
storageSettings.m_addFinalNewLine = m_d->m_page.addFinalNewLine->isChecked();
|
||||
storageSettings.m_cleanWhitespace = m_d->m_page->cleanWhitespace->isChecked();
|
||||
storageSettings.m_inEntireDocument = m_d->m_page->inEntireDocument->isChecked();
|
||||
storageSettings.m_cleanIndentation = m_d->m_page->cleanIndentation->isChecked();
|
||||
storageSettings.m_addFinalNewLine = m_d->m_page->addFinalNewLine->isChecked();
|
||||
|
||||
behaviorSettings.m_mouseNavigation = m_d->m_page.mouseNavigation->isChecked();
|
||||
behaviorSettings.m_scrollWheelZooming = m_d->m_page.scrollWheelZooming->isChecked();
|
||||
behaviorSettings.m_mouseNavigation = m_d->m_page->mouseNavigation->isChecked();
|
||||
behaviorSettings.m_scrollWheelZooming = m_d->m_page->scrollWheelZooming->isChecked();
|
||||
}
|
||||
|
||||
void BehaviorSettingsPage::settingsToUI()
|
||||
{
|
||||
const TabSettings &tabSettings = m_d->m_tabSettings;
|
||||
m_d->m_page.insertSpaces->setChecked(tabSettings.m_spacesForTabs);
|
||||
m_d->m_page.autoInsertSpaces->setChecked(tabSettings.m_autoSpacesForTabs);
|
||||
m_d->m_page.autoIndent->setChecked(tabSettings.m_autoIndent);
|
||||
m_d->m_page.smartBackspace->setChecked(tabSettings.m_smartBackspace);
|
||||
m_d->m_page.tabSize->setValue(tabSettings.m_tabSize);
|
||||
m_d->m_page.indentSize->setValue(tabSettings.m_indentSize);
|
||||
m_d->m_page.indentBlocksBehavior->setCurrentIndex(tabSettings.m_indentBraces ?
|
||||
m_d->m_page->insertSpaces->setChecked(tabSettings.m_spacesForTabs);
|
||||
m_d->m_page->autoInsertSpaces->setChecked(tabSettings.m_autoSpacesForTabs);
|
||||
m_d->m_page->autoIndent->setChecked(tabSettings.m_autoIndent);
|
||||
m_d->m_page->smartBackspace->setChecked(tabSettings.m_smartBackspace);
|
||||
m_d->m_page->tabSize->setValue(tabSettings.m_tabSize);
|
||||
m_d->m_page->indentSize->setValue(tabSettings.m_indentSize);
|
||||
m_d->m_page->indentBlocksBehavior->setCurrentIndex(tabSettings.m_indentBraces ?
|
||||
(tabSettings.m_doubleIndentBlocks ? 2 : 1)
|
||||
: 0);
|
||||
m_d->m_page.tabKeyBehavior->setCurrentIndex(tabSettings.m_tabKeyBehavior);
|
||||
m_d->m_page.continuationAlignBehavior->setCurrentIndex(tabSettings.m_continuationAlignBehavior);
|
||||
m_d->m_page->tabKeyBehavior->setCurrentIndex(tabSettings.m_tabKeyBehavior);
|
||||
m_d->m_page->continuationAlignBehavior->setCurrentIndex(tabSettings.m_continuationAlignBehavior);
|
||||
|
||||
const StorageSettings &storageSettings = m_d->m_storageSettings;
|
||||
m_d->m_page.cleanWhitespace->setChecked(storageSettings.m_cleanWhitespace);
|
||||
m_d->m_page.inEntireDocument->setChecked(storageSettings.m_inEntireDocument);
|
||||
m_d->m_page.cleanIndentation->setChecked(storageSettings.m_cleanIndentation);
|
||||
m_d->m_page.addFinalNewLine->setChecked(storageSettings.m_addFinalNewLine);
|
||||
m_d->m_page->cleanWhitespace->setChecked(storageSettings.m_cleanWhitespace);
|
||||
m_d->m_page->inEntireDocument->setChecked(storageSettings.m_inEntireDocument);
|
||||
m_d->m_page->cleanIndentation->setChecked(storageSettings.m_cleanIndentation);
|
||||
m_d->m_page->addFinalNewLine->setChecked(storageSettings.m_addFinalNewLine);
|
||||
|
||||
const BehaviorSettings &behaviorSettings = m_d->m_behaviorSettings;
|
||||
m_d->m_page.mouseNavigation->setChecked(behaviorSettings.m_mouseNavigation);
|
||||
m_d->m_page.scrollWheelZooming->setChecked(behaviorSettings.m_scrollWheelZooming);
|
||||
m_d->m_page->mouseNavigation->setChecked(behaviorSettings.m_mouseNavigation);
|
||||
m_d->m_page->scrollWheelZooming->setChecked(behaviorSettings.m_scrollWheelZooming);
|
||||
}
|
||||
|
||||
const TabSettings &BehaviorSettingsPage::tabSettings() const
|
||||
@@ -264,5 +275,5 @@ const BehaviorSettings &BehaviorSettingsPage::behaviorSettings() const
|
||||
|
||||
bool BehaviorSettingsPage::matches(const QString &s) const
|
||||
{
|
||||
return m_d->m_searchKeywords.contains(s, Qt::CaseInsensitive);
|
||||
return m_d->m_searchKeywords.contains(s, Qt::CaseInsensitive);
|
||||
}
|
||||
|
||||
@@ -62,7 +62,7 @@ public:
|
||||
|
||||
QWidget *createPage(QWidget *parent);
|
||||
void apply();
|
||||
void finish() { }
|
||||
void finish();
|
||||
bool matches(const QString &s) const;
|
||||
|
||||
const TabSettings &tabSettings() const;
|
||||
|
||||
@@ -43,14 +43,14 @@ struct DisplaySettingsPage::DisplaySettingsPagePrivate
|
||||
explicit DisplaySettingsPagePrivate(const DisplaySettingsPageParameters &p);
|
||||
|
||||
const DisplaySettingsPageParameters m_parameters;
|
||||
Ui::DisplaySettingsPage m_page;
|
||||
Ui::DisplaySettingsPage *m_page;
|
||||
DisplaySettings m_displaySettings;
|
||||
QString m_searchKeywords;
|
||||
};
|
||||
|
||||
DisplaySettingsPage::DisplaySettingsPagePrivate::DisplaySettingsPagePrivate
|
||||
(const DisplaySettingsPageParameters &p)
|
||||
: m_parameters(p)
|
||||
: m_parameters(p), m_page(0)
|
||||
{
|
||||
if (const QSettings *s = Core::ICore::instance()->settings()) {
|
||||
m_displaySettings.fromSettings(m_parameters.settingsPrefix, s);
|
||||
@@ -82,18 +82,19 @@ QString DisplaySettingsPage::displayName() const
|
||||
QWidget *DisplaySettingsPage::createPage(QWidget *parent)
|
||||
{
|
||||
QWidget *w = new QWidget(parent);
|
||||
m_d->m_page.setupUi(w);
|
||||
m_d->m_page = new Ui::DisplaySettingsPage;
|
||||
m_d->m_page->setupUi(w);
|
||||
settingsToUI();
|
||||
if (m_d->m_searchKeywords.isEmpty()) {
|
||||
QTextStream(&m_d->m_searchKeywords) << m_d->m_page.displayLineNumbers->text()
|
||||
<< ' ' << m_d->m_page.highlightCurrentLine->text()
|
||||
<< ' ' << m_d->m_page.displayFoldingMarkers->text()
|
||||
<< ' ' << m_d->m_page.highlightBlocks->text()
|
||||
<< ' ' << m_d->m_page.visualizeWhitespace->text()
|
||||
<< ' ' << m_d->m_page.animateMatchingParentheses->text()
|
||||
<< ' ' << m_d->m_page.enableTextWrapping->text()
|
||||
<< ' ' << m_d->m_page.autoFoldFirstComment->text()
|
||||
<< ' ' << m_d->m_page.centerOnScroll->text();
|
||||
QTextStream(&m_d->m_searchKeywords) << m_d->m_page->displayLineNumbers->text()
|
||||
<< ' ' << m_d->m_page->highlightCurrentLine->text()
|
||||
<< ' ' << m_d->m_page->displayFoldingMarkers->text()
|
||||
<< ' ' << m_d->m_page->highlightBlocks->text()
|
||||
<< ' ' << m_d->m_page->visualizeWhitespace->text()
|
||||
<< ' ' << m_d->m_page->animateMatchingParentheses->text()
|
||||
<< ' ' << m_d->m_page->enableTextWrapping->text()
|
||||
<< ' ' << m_d->m_page->autoFoldFirstComment->text()
|
||||
<< ' ' << m_d->m_page->centerOnScroll->text();
|
||||
m_d->m_searchKeywords.remove(QLatin1Char('&'));
|
||||
}
|
||||
return w;
|
||||
@@ -101,43 +102,53 @@ QWidget *DisplaySettingsPage::createPage(QWidget *parent)
|
||||
|
||||
void DisplaySettingsPage::apply()
|
||||
{
|
||||
if (!m_d->m_page) // page was never shown
|
||||
return;
|
||||
DisplaySettings newDisplaySettings;
|
||||
|
||||
settingsFromUI(newDisplaySettings);
|
||||
setDisplaySettings(newDisplaySettings);
|
||||
}
|
||||
|
||||
void DisplaySettingsPage::finish()
|
||||
{
|
||||
if (!m_d->m_page) // page was never shown
|
||||
return;
|
||||
delete m_d->m_page;
|
||||
m_d->m_page = 0;
|
||||
}
|
||||
|
||||
void DisplaySettingsPage::settingsFromUI(DisplaySettings &displaySettings) const
|
||||
{
|
||||
displaySettings.m_displayLineNumbers = m_d->m_page.displayLineNumbers->isChecked();
|
||||
displaySettings.m_textWrapping = m_d->m_page.enableTextWrapping->isChecked();
|
||||
displaySettings.m_showWrapColumn = m_d->m_page.showWrapColumn->isChecked();
|
||||
displaySettings.m_wrapColumn = m_d->m_page.wrapColumn->value();
|
||||
displaySettings.m_visualizeWhitespace = m_d->m_page.visualizeWhitespace->isChecked();
|
||||
displaySettings.m_displayFoldingMarkers = m_d->m_page.displayFoldingMarkers->isChecked();
|
||||
displaySettings.m_highlightCurrentLine = m_d->m_page.highlightCurrentLine->isChecked();
|
||||
displaySettings.m_highlightBlocks = m_d->m_page.highlightBlocks->isChecked();
|
||||
displaySettings.m_animateMatchingParentheses = m_d->m_page.animateMatchingParentheses->isChecked();
|
||||
displaySettings.m_markTextChanges = m_d->m_page.markTextChanges->isChecked();
|
||||
displaySettings.m_autoFoldFirstComment = m_d->m_page.autoFoldFirstComment->isChecked();
|
||||
displaySettings.m_centerCursorOnScroll = m_d->m_page.centerOnScroll->isChecked();
|
||||
displaySettings.m_displayLineNumbers = m_d->m_page->displayLineNumbers->isChecked();
|
||||
displaySettings.m_textWrapping = m_d->m_page->enableTextWrapping->isChecked();
|
||||
displaySettings.m_showWrapColumn = m_d->m_page->showWrapColumn->isChecked();
|
||||
displaySettings.m_wrapColumn = m_d->m_page->wrapColumn->value();
|
||||
displaySettings.m_visualizeWhitespace = m_d->m_page->visualizeWhitespace->isChecked();
|
||||
displaySettings.m_displayFoldingMarkers = m_d->m_page->displayFoldingMarkers->isChecked();
|
||||
displaySettings.m_highlightCurrentLine = m_d->m_page->highlightCurrentLine->isChecked();
|
||||
displaySettings.m_highlightBlocks = m_d->m_page->highlightBlocks->isChecked();
|
||||
displaySettings.m_animateMatchingParentheses = m_d->m_page->animateMatchingParentheses->isChecked();
|
||||
displaySettings.m_markTextChanges = m_d->m_page->markTextChanges->isChecked();
|
||||
displaySettings.m_autoFoldFirstComment = m_d->m_page->autoFoldFirstComment->isChecked();
|
||||
displaySettings.m_centerCursorOnScroll = m_d->m_page->centerOnScroll->isChecked();
|
||||
}
|
||||
|
||||
void DisplaySettingsPage::settingsToUI()
|
||||
{
|
||||
const DisplaySettings &displaySettings = m_d->m_displaySettings;
|
||||
m_d->m_page.displayLineNumbers->setChecked(displaySettings.m_displayLineNumbers);
|
||||
m_d->m_page.enableTextWrapping->setChecked(displaySettings.m_textWrapping);
|
||||
m_d->m_page.showWrapColumn->setChecked(displaySettings.m_showWrapColumn);
|
||||
m_d->m_page.wrapColumn->setValue(displaySettings.m_wrapColumn);
|
||||
m_d->m_page.visualizeWhitespace->setChecked(displaySettings.m_visualizeWhitespace);
|
||||
m_d->m_page.displayFoldingMarkers->setChecked(displaySettings.m_displayFoldingMarkers);
|
||||
m_d->m_page.highlightCurrentLine->setChecked(displaySettings.m_highlightCurrentLine);
|
||||
m_d->m_page.highlightBlocks->setChecked(displaySettings.m_highlightBlocks);
|
||||
m_d->m_page.animateMatchingParentheses->setChecked(displaySettings.m_animateMatchingParentheses);
|
||||
m_d->m_page.markTextChanges->setChecked(displaySettings.m_markTextChanges);
|
||||
m_d->m_page.autoFoldFirstComment->setChecked(displaySettings.m_autoFoldFirstComment);
|
||||
m_d->m_page.centerOnScroll->setChecked(displaySettings.m_centerCursorOnScroll);
|
||||
m_d->m_page->displayLineNumbers->setChecked(displaySettings.m_displayLineNumbers);
|
||||
m_d->m_page->enableTextWrapping->setChecked(displaySettings.m_textWrapping);
|
||||
m_d->m_page->showWrapColumn->setChecked(displaySettings.m_showWrapColumn);
|
||||
m_d->m_page->wrapColumn->setValue(displaySettings.m_wrapColumn);
|
||||
m_d->m_page->visualizeWhitespace->setChecked(displaySettings.m_visualizeWhitespace);
|
||||
m_d->m_page->displayFoldingMarkers->setChecked(displaySettings.m_displayFoldingMarkers);
|
||||
m_d->m_page->highlightCurrentLine->setChecked(displaySettings.m_highlightCurrentLine);
|
||||
m_d->m_page->highlightBlocks->setChecked(displaySettings.m_highlightBlocks);
|
||||
m_d->m_page->animateMatchingParentheses->setChecked(displaySettings.m_animateMatchingParentheses);
|
||||
m_d->m_page->markTextChanges->setChecked(displaySettings.m_markTextChanges);
|
||||
m_d->m_page->autoFoldFirstComment->setChecked(displaySettings.m_autoFoldFirstComment);
|
||||
m_d->m_page->centerOnScroll->setChecked(displaySettings.m_centerCursorOnScroll);
|
||||
}
|
||||
|
||||
const DisplaySettings &DisplaySettingsPage::displaySettings() const
|
||||
|
||||
@@ -60,7 +60,7 @@ public:
|
||||
|
||||
QWidget *createPage(QWidget *parent);
|
||||
void apply();
|
||||
void finish() { }
|
||||
void finish();
|
||||
virtual bool matches(const QString &s) const;
|
||||
|
||||
const DisplaySettings &displaySettings() const;
|
||||
|
||||
@@ -129,7 +129,7 @@ public:
|
||||
TextEditor::FormatDescriptions m_descriptions;
|
||||
FontSettings m_value;
|
||||
FontSettings m_lastValue;
|
||||
Ui::FontSettingsPage ui;
|
||||
Ui::FontSettingsPage *m_ui;
|
||||
SchemeListModel *m_schemeListModel;
|
||||
bool m_refreshingSchemeList;
|
||||
QString m_searchKeywords;
|
||||
@@ -180,6 +180,7 @@ FontSettingsPagePrivate::FontSettingsPagePrivate(const TextEditor::FormatDescrip
|
||||
m_displayName(displayName),
|
||||
m_settingsGroup(Utils::settingsKey(category)),
|
||||
m_descriptions(fd),
|
||||
m_ui(0),
|
||||
m_schemeListModel(new SchemeListModel),
|
||||
m_refreshingSchemeList(false)
|
||||
{
|
||||
@@ -331,28 +332,29 @@ QString FontSettingsPage::displayName() const
|
||||
QWidget *FontSettingsPage::createPage(QWidget *parent)
|
||||
{
|
||||
QWidget *w = new QWidget(parent);
|
||||
d_ptr->ui.setupUi(w);
|
||||
d_ptr->ui.schemeComboBox->setModel(d_ptr->m_schemeListModel);
|
||||
d_ptr->m_ui = new Ui::FontSettingsPage;
|
||||
d_ptr->m_ui->setupUi(w);
|
||||
d_ptr->m_ui->schemeComboBox->setModel(d_ptr->m_schemeListModel);
|
||||
|
||||
QFontDatabase db;
|
||||
const QStringList families = db.families();
|
||||
d_ptr->ui.familyComboBox->addItems(families);
|
||||
d_ptr->m_ui->familyComboBox->addItems(families);
|
||||
const int idx = families.indexOf(d_ptr->m_value.family());
|
||||
d_ptr->ui.familyComboBox->setCurrentIndex(idx);
|
||||
d_ptr->m_ui->familyComboBox->setCurrentIndex(idx);
|
||||
|
||||
d_ptr->ui.antialias->setChecked(d_ptr->m_value.antialias());
|
||||
d_ptr->ui.zoomSpinBox->setValue(d_ptr->m_value.fontZoom());
|
||||
d_ptr->m_ui->antialias->setChecked(d_ptr->m_value.antialias());
|
||||
d_ptr->m_ui->zoomSpinBox->setValue(d_ptr->m_value.fontZoom());
|
||||
|
||||
d_ptr->ui.schemeEdit->setFormatDescriptions(d_ptr->m_descriptions);
|
||||
d_ptr->ui.schemeEdit->setBaseFont(d_ptr->m_value.font());
|
||||
d_ptr->ui.schemeEdit->setColorScheme(d_ptr->m_value.colorScheme());
|
||||
d_ptr->m_ui->schemeEdit->setFormatDescriptions(d_ptr->m_descriptions);
|
||||
d_ptr->m_ui->schemeEdit->setBaseFont(d_ptr->m_value.font());
|
||||
d_ptr->m_ui->schemeEdit->setColorScheme(d_ptr->m_value.colorScheme());
|
||||
|
||||
connect(d_ptr->ui.familyComboBox, SIGNAL(currentIndexChanged(QString)), this, SLOT(fontFamilySelected(QString)));
|
||||
connect(d_ptr->ui.sizeComboBox, SIGNAL(currentIndexChanged(QString)), this, SLOT(fontSizeSelected(QString)));
|
||||
connect(d_ptr->ui.zoomSpinBox, SIGNAL(valueChanged(int)), this, SLOT(fontZoomChanged()));
|
||||
connect(d_ptr->ui.schemeComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(colorSchemeSelected(int)));
|
||||
connect(d_ptr->ui.copyButton, SIGNAL(clicked()), this, SLOT(copyColorScheme()));
|
||||
connect(d_ptr->ui.deleteButton, SIGNAL(clicked()), this, SLOT(confirmDeleteColorScheme()));
|
||||
connect(d_ptr->m_ui->familyComboBox, SIGNAL(currentIndexChanged(QString)), this, SLOT(fontFamilySelected(QString)));
|
||||
connect(d_ptr->m_ui->sizeComboBox, SIGNAL(currentIndexChanged(QString)), this, SLOT(fontSizeSelected(QString)));
|
||||
connect(d_ptr->m_ui->zoomSpinBox, SIGNAL(valueChanged(int)), this, SLOT(fontZoomChanged()));
|
||||
connect(d_ptr->m_ui->schemeComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(colorSchemeSelected(int)));
|
||||
connect(d_ptr->m_ui->copyButton, SIGNAL(clicked()), this, SLOT(copyColorScheme()));
|
||||
connect(d_ptr->m_ui->deleteButton, SIGNAL(clicked()), this, SLOT(confirmDeleteColorScheme()));
|
||||
|
||||
|
||||
updatePointSizes();
|
||||
@@ -361,12 +363,12 @@ QWidget *FontSettingsPage::createPage(QWidget *parent)
|
||||
if (d_ptr->m_searchKeywords.isEmpty()) {
|
||||
QLatin1Char sep(' ');
|
||||
d_ptr->m_searchKeywords =
|
||||
d_ptr->ui.fontGroupBox->title() + sep
|
||||
+ d_ptr->ui.familyLabel->text() + sep
|
||||
+ d_ptr->ui.sizeLabel->text() + sep
|
||||
+ d_ptr->ui.zoomLabel->text() + sep
|
||||
+ d_ptr->ui.antialias->text() + sep
|
||||
+ d_ptr->ui.colorSchemeGroupBox->title();
|
||||
d_ptr->m_ui->fontGroupBox->title() + sep
|
||||
+ d_ptr->m_ui->familyLabel->text() + sep
|
||||
+ d_ptr->m_ui->sizeLabel->text() + sep
|
||||
+ d_ptr->m_ui->zoomLabel->text() + sep
|
||||
+ d_ptr->m_ui->antialias->text() + sep
|
||||
+ d_ptr->m_ui->colorSchemeGroupBox->title();
|
||||
d_ptr->m_searchKeywords.remove(QLatin1Char('&'));
|
||||
}
|
||||
return w;
|
||||
@@ -375,7 +377,7 @@ QWidget *FontSettingsPage::createPage(QWidget *parent)
|
||||
void FontSettingsPage::fontFamilySelected(const QString &family)
|
||||
{
|
||||
d_ptr->m_value.setFamily(family);
|
||||
d_ptr->ui.schemeEdit->setBaseFont(d_ptr->m_value.font());
|
||||
d_ptr->m_ui->schemeEdit->setBaseFont(d_ptr->m_value.font());
|
||||
updatePointSizes();
|
||||
}
|
||||
|
||||
@@ -383,13 +385,13 @@ void FontSettingsPage::updatePointSizes()
|
||||
{
|
||||
// Update point sizes
|
||||
const int oldSize = d_ptr->m_value.fontSize();
|
||||
if (d_ptr->ui.sizeComboBox->count()) {
|
||||
const QString curSize = d_ptr->ui.sizeComboBox->currentText();
|
||||
if (d_ptr->m_ui->sizeComboBox->count()) {
|
||||
const QString curSize = d_ptr->m_ui->sizeComboBox->currentText();
|
||||
bool ok = true;
|
||||
int oldSize = curSize.toInt(&ok);
|
||||
if (!ok)
|
||||
oldSize = d_ptr->m_value.fontSize();
|
||||
d_ptr->ui.sizeComboBox->clear();
|
||||
d_ptr->m_ui->sizeComboBox->clear();
|
||||
}
|
||||
const QList<int> sizeLst = pointSizesForSelectedFont();
|
||||
int idx = -1;
|
||||
@@ -397,16 +399,16 @@ void FontSettingsPage::updatePointSizes()
|
||||
for (; i < sizeLst.count(); ++i) {
|
||||
if (idx == -1 && sizeLst.at(i) >= oldSize)
|
||||
idx = i;
|
||||
d_ptr->ui.sizeComboBox->addItem(QString::number(sizeLst.at(i)));
|
||||
d_ptr->m_ui->sizeComboBox->addItem(QString::number(sizeLst.at(i)));
|
||||
}
|
||||
if (idx != -1)
|
||||
d_ptr->ui.sizeComboBox->setCurrentIndex(idx);
|
||||
d_ptr->m_ui->sizeComboBox->setCurrentIndex(idx);
|
||||
}
|
||||
|
||||
QList<int> FontSettingsPage::pointSizesForSelectedFont() const
|
||||
{
|
||||
QFontDatabase db;
|
||||
const QString familyName = d_ptr->ui.familyComboBox->currentText();
|
||||
const QString familyName = d_ptr->m_ui->familyComboBox->currentText();
|
||||
QList<int> sizeLst = db.pointSizes(familyName);
|
||||
if (!sizeLst.isEmpty())
|
||||
return sizeLst;
|
||||
@@ -426,13 +428,13 @@ void FontSettingsPage::fontSizeSelected(const QString &sizeString)
|
||||
const int size = sizeString.toInt(&ok);
|
||||
if (ok) {
|
||||
d_ptr->m_value.setFontSize(size);
|
||||
d_ptr->ui.schemeEdit->setBaseFont(d_ptr->m_value.font());
|
||||
d_ptr->m_ui->schemeEdit->setBaseFont(d_ptr->m_value.font());
|
||||
}
|
||||
}
|
||||
|
||||
void FontSettingsPage::fontZoomChanged()
|
||||
{
|
||||
d_ptr->m_value.setFontZoom(d_ptr->ui.zoomSpinBox->value());
|
||||
d_ptr->m_value.setFontZoom(d_ptr->m_ui->zoomSpinBox->value());
|
||||
}
|
||||
|
||||
void FontSettingsPage::colorSchemeSelected(int index)
|
||||
@@ -446,16 +448,16 @@ void FontSettingsPage::colorSchemeSelected(int index)
|
||||
const ColorSchemeEntry &entry = d_ptr->m_schemeListModel->colorSchemeAt(index);
|
||||
readOnly = entry.readOnly;
|
||||
d_ptr->m_value.loadColorScheme(entry.fileName, d_ptr->m_descriptions);
|
||||
d_ptr->ui.schemeEdit->setColorScheme(d_ptr->m_value.colorScheme());
|
||||
d_ptr->m_ui->schemeEdit->setColorScheme(d_ptr->m_value.colorScheme());
|
||||
}
|
||||
d_ptr->ui.copyButton->setEnabled(index != -1);
|
||||
d_ptr->ui.deleteButton->setEnabled(!readOnly);
|
||||
d_ptr->ui.schemeEdit->setReadOnly(readOnly);
|
||||
d_ptr->m_ui->copyButton->setEnabled(index != -1);
|
||||
d_ptr->m_ui->deleteButton->setEnabled(!readOnly);
|
||||
d_ptr->m_ui->schemeEdit->setReadOnly(readOnly);
|
||||
}
|
||||
|
||||
void FontSettingsPage::copyColorScheme()
|
||||
{
|
||||
QInputDialog *dialog = new QInputDialog(d_ptr->ui.copyButton->window());
|
||||
QInputDialog *dialog = new QInputDialog(d_ptr->m_ui->copyButton->window());
|
||||
dialog->setAttribute(Qt::WA_DeleteOnClose);
|
||||
dialog->setInputMode(QInputDialog::TextInput);
|
||||
dialog->setWindowTitle(tr("Copy Color Scheme"));
|
||||
@@ -468,7 +470,7 @@ void FontSettingsPage::copyColorScheme()
|
||||
|
||||
void FontSettingsPage::copyColorScheme(const QString &name)
|
||||
{
|
||||
int index = d_ptr->ui.schemeComboBox->currentIndex();
|
||||
int index = d_ptr->m_ui->schemeComboBox->currentIndex();
|
||||
if (index == -1)
|
||||
return;
|
||||
|
||||
@@ -483,7 +485,7 @@ void FontSettingsPage::copyColorScheme(const QString &name)
|
||||
maybeSaveColorScheme();
|
||||
|
||||
// Make sure we're copying the current version
|
||||
d_ptr->m_value.setColorScheme(d_ptr->ui.schemeEdit->colorScheme());
|
||||
d_ptr->m_value.setColorScheme(d_ptr->m_ui->schemeEdit->colorScheme());
|
||||
|
||||
ColorScheme scheme = d_ptr->m_value.colorScheme();
|
||||
scheme.setDisplayName(name);
|
||||
@@ -496,7 +498,7 @@ void FontSettingsPage::copyColorScheme(const QString &name)
|
||||
|
||||
void FontSettingsPage::confirmDeleteColorScheme()
|
||||
{
|
||||
const int index = d_ptr->ui.schemeComboBox->currentIndex();
|
||||
const int index = d_ptr->m_ui->schemeComboBox->currentIndex();
|
||||
if (index == -1)
|
||||
return;
|
||||
|
||||
@@ -508,7 +510,7 @@ void FontSettingsPage::confirmDeleteColorScheme()
|
||||
tr("Delete Color Scheme"),
|
||||
tr("Are you sure you want to delete this color scheme permanently?"),
|
||||
QMessageBox::Discard | QMessageBox::Cancel,
|
||||
d_ptr->ui.deleteButton->window());
|
||||
d_ptr->m_ui->deleteButton->window());
|
||||
|
||||
// Change the text and role of the discard button
|
||||
QPushButton *deleteButton = static_cast<QPushButton*>(messageBox->button(QMessageBox::Discard));
|
||||
@@ -524,7 +526,7 @@ void FontSettingsPage::confirmDeleteColorScheme()
|
||||
|
||||
void FontSettingsPage::deleteColorScheme()
|
||||
{
|
||||
const int index = d_ptr->ui.schemeComboBox->currentIndex();
|
||||
const int index = d_ptr->m_ui->schemeComboBox->currentIndex();
|
||||
QTC_ASSERT(index != -1, return)
|
||||
|
||||
const ColorSchemeEntry &entry = d_ptr->m_schemeListModel->colorSchemeAt(index);
|
||||
@@ -536,15 +538,15 @@ void FontSettingsPage::deleteColorScheme()
|
||||
|
||||
void FontSettingsPage::maybeSaveColorScheme()
|
||||
{
|
||||
if (d_ptr->m_value.colorScheme() == d_ptr->ui.schemeEdit->colorScheme())
|
||||
if (d_ptr->m_value.colorScheme() == d_ptr->m_ui->schemeEdit->colorScheme())
|
||||
return;
|
||||
|
||||
QMessageBox *messageBox = new QMessageBox(QMessageBox::Warning,
|
||||
tr("Color Scheme Changed"),
|
||||
tr("The color scheme \"%1\" was modified, do you want to save the changes?")
|
||||
.arg(d_ptr->ui.schemeEdit->colorScheme().displayName()),
|
||||
.arg(d_ptr->m_ui->schemeEdit->colorScheme().displayName()),
|
||||
QMessageBox::Discard | QMessageBox::Save,
|
||||
d_ptr->ui.schemeComboBox->window());
|
||||
d_ptr->m_ui->schemeComboBox->window());
|
||||
|
||||
// Change the text of the discard button
|
||||
QPushButton *discardButton = static_cast<QPushButton*>(messageBox->button(QMessageBox::Discard));
|
||||
@@ -553,7 +555,7 @@ void FontSettingsPage::maybeSaveColorScheme()
|
||||
messageBox->setDefaultButton(QMessageBox::Save);
|
||||
|
||||
if (messageBox->exec() == QMessageBox::Save) {
|
||||
const ColorScheme &scheme = d_ptr->ui.schemeEdit->colorScheme();
|
||||
const ColorScheme &scheme = d_ptr->m_ui->schemeEdit->colorScheme();
|
||||
scheme.save(d_ptr->m_value.colorSchemeFileName());
|
||||
}
|
||||
}
|
||||
@@ -594,7 +596,7 @@ void FontSettingsPage::refreshColorSchemeList()
|
||||
|
||||
d_ptr->m_refreshingSchemeList = true;
|
||||
d_ptr->m_schemeListModel->setColorSchemes(colorSchemes);
|
||||
d_ptr->ui.schemeComboBox->setCurrentIndex(selected);
|
||||
d_ptr->m_ui->schemeComboBox->setCurrentIndex(selected);
|
||||
d_ptr->m_refreshingSchemeList = false;
|
||||
}
|
||||
|
||||
@@ -605,16 +607,18 @@ void FontSettingsPage::delayedChange()
|
||||
|
||||
void FontSettingsPage::apply()
|
||||
{
|
||||
d_ptr->m_value.setAntialias(d_ptr->ui.antialias->isChecked());
|
||||
if (!d_ptr->m_ui) // page was never shown
|
||||
return;
|
||||
d_ptr->m_value.setAntialias(d_ptr->m_ui->antialias->isChecked());
|
||||
|
||||
if (d_ptr->m_value.colorScheme() != d_ptr->ui.schemeEdit->colorScheme()) {
|
||||
if (d_ptr->m_value.colorScheme() != d_ptr->m_ui->schemeEdit->colorScheme()) {
|
||||
// Update the scheme and save it under the name it already has
|
||||
d_ptr->m_value.setColorScheme(d_ptr->ui.schemeEdit->colorScheme());
|
||||
d_ptr->m_value.setColorScheme(d_ptr->m_ui->schemeEdit->colorScheme());
|
||||
const ColorScheme &scheme = d_ptr->m_value.colorScheme();
|
||||
scheme.save(d_ptr->m_value.colorSchemeFileName());
|
||||
}
|
||||
|
||||
int index = d_ptr->ui.schemeComboBox->currentIndex();
|
||||
int index = d_ptr->m_ui->schemeComboBox->currentIndex();
|
||||
if (index != -1) {
|
||||
const ColorSchemeEntry &entry = d_ptr->m_schemeListModel->colorSchemeAt(index);
|
||||
if (entry.fileName != d_ptr->m_value.colorSchemeFileName())
|
||||
@@ -637,8 +641,12 @@ void FontSettingsPage::saveSettings()
|
||||
|
||||
void FontSettingsPage::finish()
|
||||
{
|
||||
if (!d_ptr->m_ui) // page was never shown
|
||||
return;
|
||||
// If changes were applied, these are equal. Otherwise restores last value.
|
||||
d_ptr->m_value = d_ptr->m_lastValue;
|
||||
delete d_ptr->m_ui;
|
||||
d_ptr->m_ui = 0;
|
||||
}
|
||||
|
||||
const FontSettings &FontSettingsPage::fontSettings() const
|
||||
|
||||
@@ -53,14 +53,15 @@ struct HighlighterSettingsPage::HighlighterSettingsPagePrivate
|
||||
|
||||
HighlighterSettings m_settings;
|
||||
|
||||
Ui::HighlighterSettingsPage m_page;
|
||||
Ui::HighlighterSettingsPage *m_page;
|
||||
};
|
||||
|
||||
HighlighterSettingsPage::HighlighterSettingsPagePrivate::
|
||||
HighlighterSettingsPagePrivate(const QString &id) :
|
||||
m_id(id),
|
||||
m_displayName(tr("Generic Highlighter")),
|
||||
m_settingsPrefix(QLatin1String("Text"))
|
||||
m_settingsPrefix(QLatin1String("Text")),
|
||||
m_page(0)
|
||||
{}
|
||||
|
||||
HighlighterSettingsPage::HighlighterSettingsPage(const QString &id, QObject *parent) :
|
||||
@@ -90,27 +91,28 @@ QString HighlighterSettingsPage::displayName() const
|
||||
QWidget *HighlighterSettingsPage::createPage(QWidget *parent)
|
||||
{
|
||||
QWidget *w = new QWidget(parent);
|
||||
m_d->m_page.setupUi(w);
|
||||
m_d->m_page.definitionFilesPath->setExpectedKind(Utils::PathChooser::Directory);
|
||||
m_d->m_page.definitionFilesPath->addButton(tr("Download Definitions"), this,
|
||||
m_d->m_page = new Ui::HighlighterSettingsPage;
|
||||
m_d->m_page->setupUi(w);
|
||||
m_d->m_page->definitionFilesPath->setExpectedKind(Utils::PathChooser::Directory);
|
||||
m_d->m_page->definitionFilesPath->addButton(tr("Download Definitions"), this,
|
||||
SLOT(requestAvailableDefinitionsMetaData()));
|
||||
m_d->m_page.fallbackDefinitionFilesPath->setExpectedKind(Utils::PathChooser::Directory);
|
||||
m_d->m_page.fallbackDefinitionFilesPath->addButton(tr("Autodetect"), this,
|
||||
m_d->m_page->fallbackDefinitionFilesPath->setExpectedKind(Utils::PathChooser::Directory);
|
||||
m_d->m_page->fallbackDefinitionFilesPath->addButton(tr("Autodetect"), this,
|
||||
SLOT(resetDefinitionsLocation()));
|
||||
|
||||
settingsToUI();
|
||||
|
||||
if (m_d->m_searchKeywords.isEmpty()) {
|
||||
QTextStream(&m_d->m_searchKeywords) << m_d->m_page.definitionFilesGroupBox->title()
|
||||
<< m_d->m_page.locationLabel->text()
|
||||
<< m_d->m_page.alertWhenNoDefinition->text()
|
||||
<< m_d->m_page.useFallbackLocation->text()
|
||||
<< m_d->m_page.ignoreLabel->text();
|
||||
QTextStream(&m_d->m_searchKeywords) << m_d->m_page->definitionFilesGroupBox->title()
|
||||
<< m_d->m_page->locationLabel->text()
|
||||
<< m_d->m_page->alertWhenNoDefinition->text()
|
||||
<< m_d->m_page->useFallbackLocation->text()
|
||||
<< m_d->m_page->ignoreLabel->text();
|
||||
}
|
||||
|
||||
connect(m_d->m_page.useFallbackLocation, SIGNAL(clicked(bool)),
|
||||
connect(m_d->m_page->useFallbackLocation, SIGNAL(clicked(bool)),
|
||||
this, SLOT(setFallbackLocationState(bool)));
|
||||
connect(m_d->m_page.definitionFilesPath, SIGNAL(validChanged(bool)),
|
||||
connect(m_d->m_page->definitionFilesPath, SIGNAL(validChanged(bool)),
|
||||
this, SLOT(setDownloadDefinitionsState(bool)));
|
||||
connect(w, SIGNAL(destroyed()), this, SLOT(ignoreDownloadReply()));
|
||||
|
||||
@@ -119,6 +121,8 @@ QWidget *HighlighterSettingsPage::createPage(QWidget *parent)
|
||||
|
||||
void HighlighterSettingsPage::apply()
|
||||
{
|
||||
if (!m_d->m_page) // page was not shown
|
||||
return;
|
||||
if (settingsChanged())
|
||||
settingsFromUI();
|
||||
|
||||
@@ -128,6 +132,14 @@ void HighlighterSettingsPage::apply()
|
||||
}
|
||||
}
|
||||
|
||||
void HighlighterSettingsPage::finish()
|
||||
{
|
||||
if (!m_d->m_page) // page was not shown
|
||||
return;
|
||||
delete m_d->m_page;
|
||||
m_d->m_page = 0;
|
||||
}
|
||||
|
||||
bool HighlighterSettingsPage::matches(const QString &s) const
|
||||
{
|
||||
return m_d->m_searchKeywords.contains(s, Qt::CaseInsensitive);
|
||||
@@ -139,34 +151,34 @@ const HighlighterSettings &HighlighterSettingsPage::highlighterSettings() const
|
||||
}
|
||||
|
||||
void HighlighterSettingsPage::settingsFromUI()
|
||||
{
|
||||
{
|
||||
if (!m_requestMimeTypeRegistration && (
|
||||
m_d->m_settings.definitionFilesPath() != m_d->m_page.definitionFilesPath->path() ||
|
||||
m_d->m_settings.definitionFilesPath() != m_d->m_page->definitionFilesPath->path() ||
|
||||
m_d->m_settings.fallbackDefinitionFilesPath() !=
|
||||
m_d->m_page.fallbackDefinitionFilesPath->path() ||
|
||||
m_d->m_settings.useFallbackLocation() != m_d->m_page.useFallbackLocation->isChecked())) {
|
||||
m_d->m_page->fallbackDefinitionFilesPath->path() ||
|
||||
m_d->m_settings.useFallbackLocation() != m_d->m_page->useFallbackLocation->isChecked())) {
|
||||
m_requestMimeTypeRegistration = true;
|
||||
}
|
||||
|
||||
m_d->m_settings.setDefinitionFilesPath(m_d->m_page.definitionFilesPath->path());
|
||||
m_d->m_settings.setFallbackDefinitionFilesPath(m_d->m_page.fallbackDefinitionFilesPath->path());
|
||||
m_d->m_settings.setAlertWhenNoDefinition(m_d->m_page.alertWhenNoDefinition->isChecked());
|
||||
m_d->m_settings.setUseFallbackLocation(m_d->m_page.useFallbackLocation->isChecked());
|
||||
m_d->m_settings.setIgnoredFilesPatterns(m_d->m_page.ignoreEdit->text());
|
||||
m_d->m_settings.setDefinitionFilesPath(m_d->m_page->definitionFilesPath->path());
|
||||
m_d->m_settings.setFallbackDefinitionFilesPath(m_d->m_page->fallbackDefinitionFilesPath->path());
|
||||
m_d->m_settings.setAlertWhenNoDefinition(m_d->m_page->alertWhenNoDefinition->isChecked());
|
||||
m_d->m_settings.setUseFallbackLocation(m_d->m_page->useFallbackLocation->isChecked());
|
||||
m_d->m_settings.setIgnoredFilesPatterns(m_d->m_page->ignoreEdit->text());
|
||||
if (QSettings *s = Core::ICore::instance()->settings())
|
||||
m_d->m_settings.toSettings(m_d->m_settingsPrefix, s);
|
||||
}
|
||||
|
||||
void HighlighterSettingsPage::settingsToUI()
|
||||
{
|
||||
m_d->m_page.definitionFilesPath->setPath(m_d->m_settings.definitionFilesPath());
|
||||
m_d->m_page.fallbackDefinitionFilesPath->setPath(m_d->m_settings.fallbackDefinitionFilesPath());
|
||||
m_d->m_page.alertWhenNoDefinition->setChecked(m_d->m_settings.alertWhenNoDefinition());
|
||||
m_d->m_page.useFallbackLocation->setChecked(m_d->m_settings.useFallbackLocation());
|
||||
m_d->m_page.ignoreEdit->setText(m_d->m_settings.ignoredFilesPatterns());
|
||||
m_d->m_page->definitionFilesPath->setPath(m_d->m_settings.definitionFilesPath());
|
||||
m_d->m_page->fallbackDefinitionFilesPath->setPath(m_d->m_settings.fallbackDefinitionFilesPath());
|
||||
m_d->m_page->alertWhenNoDefinition->setChecked(m_d->m_settings.alertWhenNoDefinition());
|
||||
m_d->m_page->useFallbackLocation->setChecked(m_d->m_settings.useFallbackLocation());
|
||||
m_d->m_page->ignoreEdit->setText(m_d->m_settings.ignoredFilesPatterns());
|
||||
|
||||
setFallbackLocationState(m_d->m_page.useFallbackLocation->isChecked());
|
||||
setDownloadDefinitionsState(m_d->m_page.definitionFilesPath->isValid());
|
||||
setFallbackLocationState(m_d->m_page->useFallbackLocation->isChecked());
|
||||
setDownloadDefinitionsState(m_d->m_page->definitionFilesPath->isValid());
|
||||
}
|
||||
|
||||
void HighlighterSettingsPage::resetDefinitionsLocation()
|
||||
@@ -176,7 +188,7 @@ void HighlighterSettingsPage::resetDefinitionsLocation()
|
||||
QMessageBox::information(0, tr("Autodetect Definitions"),
|
||||
tr("No pre-installed definitions could be found."));
|
||||
else
|
||||
m_d->m_page.fallbackDefinitionFilesPath->setPath(location);
|
||||
m_d->m_page->fallbackDefinitionFilesPath->setPath(location);
|
||||
}
|
||||
|
||||
void HighlighterSettingsPage::requestAvailableDefinitionsMetaData()
|
||||
@@ -206,43 +218,43 @@ void HighlighterSettingsPage::ignoreDownloadReply()
|
||||
void HighlighterSettingsPage::manageDefinitions(const QList<HighlightDefinitionMetaData> &metaData)
|
||||
{
|
||||
ManageDefinitionsDialog dialog(metaData,
|
||||
m_d->m_page.definitionFilesPath->path() + QLatin1Char('/'),
|
||||
m_d->m_page.definitionFilesPath->buttonAtIndex(1)->window());
|
||||
m_d->m_page->definitionFilesPath->path() + QLatin1Char('/'),
|
||||
m_d->m_page->definitionFilesPath->buttonAtIndex(1)->window());
|
||||
if (dialog.exec() && !m_requestMimeTypeRegistration)
|
||||
m_requestMimeTypeRegistration = true;
|
||||
setDownloadDefinitionsState(m_d->m_page.definitionFilesPath->isValid());
|
||||
setDownloadDefinitionsState(m_d->m_page->definitionFilesPath->isValid());
|
||||
}
|
||||
|
||||
void HighlighterSettingsPage::showError()
|
||||
{
|
||||
QMessageBox::critical(m_d->m_page.definitionFilesPath->buttonAtIndex(1)->window(),
|
||||
QMessageBox::critical(m_d->m_page->definitionFilesPath->buttonAtIndex(1)->window(),
|
||||
tr("Error connecting to server."),
|
||||
tr("Not possible to retrieve data."));
|
||||
setDownloadDefinitionsState(m_d->m_page.definitionFilesPath->isValid());
|
||||
setDownloadDefinitionsState(m_d->m_page->definitionFilesPath->isValid());
|
||||
}
|
||||
|
||||
void HighlighterSettingsPage::setFallbackLocationState(bool checked)
|
||||
{
|
||||
m_d->m_page.fallbackDefinitionFilesPath->setEnabled(checked);
|
||||
m_d->m_page->fallbackDefinitionFilesPath->setEnabled(checked);
|
||||
}
|
||||
|
||||
void HighlighterSettingsPage::setDownloadDefinitionsState(bool valid)
|
||||
{
|
||||
m_d->m_page.definitionFilesPath->buttonAtIndex(1)->setEnabled(valid);
|
||||
m_d->m_page->definitionFilesPath->buttonAtIndex(1)->setEnabled(valid);
|
||||
}
|
||||
|
||||
bool HighlighterSettingsPage::settingsChanged() const
|
||||
{
|
||||
if (m_d->m_settings.definitionFilesPath() != m_d->m_page.definitionFilesPath->path())
|
||||
{
|
||||
if (m_d->m_settings.definitionFilesPath() != m_d->m_page->definitionFilesPath->path())
|
||||
return true;
|
||||
if (m_d->m_settings.fallbackDefinitionFilesPath() !=
|
||||
m_d->m_page.fallbackDefinitionFilesPath->path())
|
||||
m_d->m_page->fallbackDefinitionFilesPath->path())
|
||||
return true;
|
||||
if (m_d->m_settings.alertWhenNoDefinition() != m_d->m_page.alertWhenNoDefinition->isChecked())
|
||||
if (m_d->m_settings.alertWhenNoDefinition() != m_d->m_page->alertWhenNoDefinition->isChecked())
|
||||
return true;
|
||||
if (m_d->m_settings.useFallbackLocation() != m_d->m_page.useFallbackLocation->isChecked())
|
||||
if (m_d->m_settings.useFallbackLocation() != m_d->m_page->useFallbackLocation->isChecked())
|
||||
return true;
|
||||
if (m_d->m_settings.ignoredFilesPatterns() != m_d->m_page.ignoreEdit->text())
|
||||
if (m_d->m_settings.ignoredFilesPatterns() != m_d->m_page->ignoreEdit->text())
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -56,7 +56,7 @@ public:
|
||||
|
||||
QWidget *createPage(QWidget *parent);
|
||||
void apply();
|
||||
void finish() {}
|
||||
void finish();
|
||||
bool matches(const QString &s) const;
|
||||
|
||||
const HighlighterSettings &highlighterSettings() const;
|
||||
|
||||
Reference in New Issue
Block a user