EditorManager: Warn before opening big text files

...since these might lead to out of memory situations and thus to
crashes. The warning and the file size limited is configurable in
Environment > General.

Task-number: QTCREATORBUG-14390
Change-Id: I868ceca0bee5551ed55f0df990ed334a8b539a7d
Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
This commit is contained in:
Nikolai Kosjar
2015-05-12 15:18:26 +02:00
parent c82d287cbf
commit f967b58e87
5 changed files with 172 additions and 8 deletions

View File

@@ -144,8 +144,10 @@ QWidget *GeneralSettings::widget()
m_page->patchChooser->setPath(PatchTool::patchCommand());
m_page->autoSaveCheckBox->setChecked(EditorManagerPrivate::autoSaveEnabled());
m_page->autoSaveInterval->setValue(EditorManagerPrivate::autoSaveInterval());
m_page->resetWarningsButton->setEnabled(InfoBar::anyGloballySuppressed()
|| CheckableMessageBox::hasSuppressedQuestions(ICore::settings()));
m_page->warnBeforeOpeningBigFiles->setChecked(
EditorManagerPrivate::warnBeforeOpeningBigFilesEnabled());
m_page->bigFilesLimitSpinBox->setValue(EditorManagerPrivate::bigFileSizeLimit());
m_page->resetWarningsButton->setEnabled(canResetWarnings());
connect(m_page->resetColorButton, SIGNAL(clicked()),
this, SLOT(resetInterfaceColor()));
@@ -188,6 +190,9 @@ void GeneralSettings::apply()
PatchTool::setPatchCommand(m_page->patchChooser->path());
EditorManagerPrivate::setAutoSaveEnabled(m_page->autoSaveCheckBox->isChecked());
EditorManagerPrivate::setAutoSaveInterval(m_page->autoSaveInterval->value());
EditorManagerPrivate::setWarnBeforeOpeningBigFilesEnabled(
m_page->warnBeforeOpeningBigFiles->isChecked());
EditorManagerPrivate::setBigFileSizeLimit(m_page->bigFilesLimitSpinBox->value());
m_page->themeWidget->apply();
}
@@ -207,6 +212,7 @@ void GeneralSettings::resetWarnings()
{
InfoBar::clearGloballySuppressed();
CheckableMessageBox::resetAllDoNotAskAgainQuestions(ICore::settings());
m_page->warnBeforeOpeningBigFiles->setChecked(true);
m_page->resetWarningsButton->setEnabled(false);
}
@@ -230,6 +236,13 @@ void GeneralSettings::updatePath()
m_page->patchChooser->setEnvironment(env);
}
bool GeneralSettings::canResetWarnings() const
{
return InfoBar::anyGloballySuppressed()
|| CheckableMessageBox::hasSuppressedQuestions(ICore::settings())
|| !EditorManagerPrivate::warnBeforeOpeningBigFilesEnabled();
}
void GeneralSettings::variableHelpDialogCreator(const QString &helpText)
{
if (m_dialog) {