2012-10-02 09:12:39 +02:00
|
|
|
/****************************************************************************
|
2008-12-02 12:01:29 +01:00
|
|
|
**
|
2016-01-15 14:58:39 +01:00
|
|
|
** Copyright (C) 2016 The Qt Company Ltd.
|
|
|
|
|
** Contact: https://www.qt.io/licensing/
|
2008-12-02 12:01:29 +01:00
|
|
|
**
|
2012-10-02 09:12:39 +02:00
|
|
|
** This file is part of Qt Creator.
|
2008-12-02 12:01:29 +01:00
|
|
|
**
|
2012-10-02 09:12:39 +02:00
|
|
|
** Commercial License Usage
|
|
|
|
|
** Licensees holding valid commercial Qt licenses may use this file in
|
|
|
|
|
** accordance with the commercial license agreement provided with the
|
|
|
|
|
** Software or, alternatively, in accordance with the terms contained in
|
2016-01-15 14:58:39 +01:00
|
|
|
** a written agreement between you and The Qt Company. For licensing terms
|
|
|
|
|
** and conditions see https://www.qt.io/terms-conditions. For further
|
|
|
|
|
** information use the contact form at https://www.qt.io/contact-us.
|
2008-12-02 14:17:16 +01:00
|
|
|
**
|
2016-01-15 14:58:39 +01:00
|
|
|
** GNU General Public License Usage
|
|
|
|
|
** Alternatively, this file may be used under the terms of the GNU
|
|
|
|
|
** General Public License version 3 as published by the Free Software
|
|
|
|
|
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
|
|
|
|
|
** included in the packaging of this file. Please review the following
|
|
|
|
|
** information to ensure the GNU General Public License requirements will
|
|
|
|
|
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
|
2010-12-17 16:01:08 +01:00
|
|
|
**
|
2012-10-02 09:12:39 +02:00
|
|
|
****************************************************************************/
|
2008-12-02 14:09:21 +01:00
|
|
|
|
2015-01-10 23:40:32 +02:00
|
|
|
#include "fileutils.h"
|
2008-12-02 12:01:29 +01:00
|
|
|
#include "reloadpromptutils.h"
|
2008-12-02 14:09:21 +01:00
|
|
|
|
2012-02-15 10:42:41 +01:00
|
|
|
#include <QCoreApplication>
|
|
|
|
|
#include <QDir>
|
|
|
|
|
#include <QMessageBox>
|
|
|
|
|
#include <QPushButton>
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2014-07-15 23:33:17 +03:00
|
|
|
namespace Utils {
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2015-01-31 20:59:40 +02:00
|
|
|
QTCREATOR_UTILS_EXPORT ReloadPromptAnswer reloadPrompt(const FileName &fileName,
|
2014-07-15 23:33:17 +03:00
|
|
|
bool modified,
|
|
|
|
|
QWidget *parent)
|
2008-12-02 12:01:29 +01:00
|
|
|
{
|
2009-07-13 15:00:20 +02:00
|
|
|
|
2009-10-05 11:06:05 +02:00
|
|
|
const QString title = QCoreApplication::translate("Utils::reloadPrompt", "File Changed");
|
2009-07-13 15:00:20 +02:00
|
|
|
QString msg;
|
|
|
|
|
|
2013-09-06 12:37:30 +02:00
|
|
|
if (modified) {
|
2009-10-05 11:06:05 +02:00
|
|
|
msg = QCoreApplication::translate("Utils::reloadPrompt",
|
2013-09-06 12:37:30 +02:00
|
|
|
"The unsaved file <i>%1</i> has changed outside Qt Creator. "
|
|
|
|
|
"Do you want to reload it and discard your changes?");
|
|
|
|
|
} else {
|
2009-10-05 11:06:05 +02:00
|
|
|
msg = QCoreApplication::translate("Utils::reloadPrompt",
|
2013-09-06 12:37:30 +02:00
|
|
|
"The file <i>%1</i> has changed outside Qt Creator. Do you want to reload it?");
|
|
|
|
|
}
|
2015-01-31 20:59:40 +02:00
|
|
|
msg = msg.arg(fileName.fileName());
|
|
|
|
|
return reloadPrompt(title, msg, fileName.toUserOutput(), parent);
|
2008-12-02 12:01:29 +01:00
|
|
|
}
|
|
|
|
|
|
2014-07-15 23:33:17 +03:00
|
|
|
QTCREATOR_UTILS_EXPORT ReloadPromptAnswer reloadPrompt(const QString &title,
|
|
|
|
|
const QString &prompt,
|
|
|
|
|
const QString &details,
|
|
|
|
|
QWidget *parent)
|
2008-12-02 12:01:29 +01:00
|
|
|
{
|
2010-06-30 15:29:48 +02:00
|
|
|
QMessageBox msg(parent);
|
2013-09-06 12:37:30 +02:00
|
|
|
msg.setStandardButtons(QMessageBox::Yes | QMessageBox::YesToAll | QMessageBox::Close
|
|
|
|
|
| QMessageBox::No | QMessageBox::NoToAll);
|
2010-06-30 15:29:48 +02:00
|
|
|
msg.setDefaultButton(QMessageBox::YesToAll);
|
|
|
|
|
msg.setWindowTitle(title);
|
|
|
|
|
msg.setText(prompt);
|
|
|
|
|
msg.setDetailedText(details);
|
|
|
|
|
|
|
|
|
|
switch (msg.exec()) {
|
2008-12-02 12:01:29 +01:00
|
|
|
case QMessageBox::Yes:
|
|
|
|
|
return ReloadCurrent;
|
|
|
|
|
case QMessageBox::YesToAll:
|
|
|
|
|
return ReloadAll;
|
|
|
|
|
case QMessageBox::No:
|
|
|
|
|
return ReloadSkipCurrent;
|
2012-09-28 14:35:32 +02:00
|
|
|
case QMessageBox::Close:
|
|
|
|
|
return CloseCurrent;
|
2008-12-02 12:01:29 +01:00
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
return ReloadNone;
|
|
|
|
|
}
|
2010-03-19 10:28:05 +01:00
|
|
|
|
2014-07-15 23:33:17 +03:00
|
|
|
QTCREATOR_UTILS_EXPORT FileDeletedPromptAnswer
|
|
|
|
|
fileDeletedPrompt(const QString &fileName, bool triggerExternally, QWidget *parent)
|
2010-03-19 10:28:05 +01:00
|
|
|
{
|
2013-09-06 12:37:30 +02:00
|
|
|
const QString title = QCoreApplication::translate("Utils::fileDeletedPrompt",
|
|
|
|
|
"File has been removed");
|
2010-03-19 10:28:05 +01:00
|
|
|
QString msg;
|
2013-09-06 12:37:30 +02:00
|
|
|
if (triggerExternally) {
|
2011-04-27 15:52:24 +02:00
|
|
|
msg = QCoreApplication::translate("Utils::fileDeletedPrompt",
|
2013-09-06 12:37:30 +02:00
|
|
|
"The file %1 has been removed outside Qt Creator. "
|
|
|
|
|
"Do you want to save it under a different name, or close "
|
|
|
|
|
"the editor?").arg(QDir::toNativeSeparators(fileName));
|
|
|
|
|
} else {
|
2011-04-27 15:52:24 +02:00
|
|
|
msg = QCoreApplication::translate("Utils::fileDeletedPrompt",
|
2013-09-06 12:37:30 +02:00
|
|
|
"The file %1 was removed. "
|
|
|
|
|
"Do you want to save it under a different name, or close "
|
|
|
|
|
"the editor?").arg(QDir::toNativeSeparators(fileName));
|
|
|
|
|
}
|
2010-03-19 10:28:05 +01:00
|
|
|
QMessageBox box(QMessageBox::Question, title, msg, QMessageBox::NoButton, parent);
|
2013-09-06 12:37:30 +02:00
|
|
|
QPushButton *close =
|
|
|
|
|
box.addButton(QCoreApplication::translate("Utils::fileDeletedPrompt", "&Close"),
|
|
|
|
|
QMessageBox::RejectRole);
|
|
|
|
|
QPushButton *closeAll =
|
|
|
|
|
box.addButton(QCoreApplication::translate("Utils::fileDeletedPrompt", "C&lose All"),
|
|
|
|
|
QMessageBox::RejectRole);
|
|
|
|
|
QPushButton *saveas =
|
|
|
|
|
box.addButton(QCoreApplication::translate("Utils::fileDeletedPrompt", "Save &as..."),
|
|
|
|
|
QMessageBox::ActionRole);
|
|
|
|
|
QPushButton *save =
|
|
|
|
|
box.addButton(QCoreApplication::translate("Utils::fileDeletedPrompt", "&Save"),
|
|
|
|
|
QMessageBox::AcceptRole);
|
2010-03-19 10:28:05 +01:00
|
|
|
box.setDefaultButton(saveas);
|
|
|
|
|
box.exec();
|
|
|
|
|
QAbstractButton *clickedbutton = box.clickedButton();
|
Remove braces for single lines of conditions
#!/usr/bin/env ruby
Dir.glob('**/*.cpp') { |file|
# skip ast (excluding paste, astpath, and canv'ast'imer)
next if file =~ /ast[^eip]|keywords\.|qualifiers|preprocessor|names.cpp/i
s = File.read(file)
next if s.include?('qlalr')
orig = s.dup
s.gsub!(/\n *if [^\n]*{\n[^\n]*\n\s+}(\s+else if [^\n]* {\n[^\n]*\n\s+})*(\s+else {\n[^\n]*\n\s+})?\n/m) { |m|
res = $&
if res =~ /^\s*(\/\/|[A-Z_]{3,})/ # C++ comment or macro (Q_UNUSED, SDEBUG), do not touch braces
res
else
res.gsub!('} else', 'else')
res.gsub!(/\n +} *\n/m, "\n")
res.gsub(/ *{$/, '')
end
}
s.gsub!(/ *$/, '')
File.open(file, 'wb').write(s) if s != orig
}
Change-Id: I3b30ee60df0986f66c02132c65fc38a3fbb6bbdc
Reviewed-by: hjk <qthjk@ovi.com>
2013-01-08 03:32:53 +02:00
|
|
|
if (clickedbutton == close)
|
2010-03-19 10:28:05 +01:00
|
|
|
return FileDeletedClose;
|
2013-09-06 11:01:37 +02:00
|
|
|
else if (clickedbutton == closeAll)
|
|
|
|
|
return FileDeletedCloseAll;
|
Remove braces for single lines of conditions
#!/usr/bin/env ruby
Dir.glob('**/*.cpp') { |file|
# skip ast (excluding paste, astpath, and canv'ast'imer)
next if file =~ /ast[^eip]|keywords\.|qualifiers|preprocessor|names.cpp/i
s = File.read(file)
next if s.include?('qlalr')
orig = s.dup
s.gsub!(/\n *if [^\n]*{\n[^\n]*\n\s+}(\s+else if [^\n]* {\n[^\n]*\n\s+})*(\s+else {\n[^\n]*\n\s+})?\n/m) { |m|
res = $&
if res =~ /^\s*(\/\/|[A-Z_]{3,})/ # C++ comment or macro (Q_UNUSED, SDEBUG), do not touch braces
res
else
res.gsub!('} else', 'else')
res.gsub!(/\n +} *\n/m, "\n")
res.gsub(/ *{$/, '')
end
}
s.gsub!(/ *$/, '')
File.open(file, 'wb').write(s) if s != orig
}
Change-Id: I3b30ee60df0986f66c02132c65fc38a3fbb6bbdc
Reviewed-by: hjk <qthjk@ovi.com>
2013-01-08 03:32:53 +02:00
|
|
|
else if (clickedbutton == saveas)
|
2010-03-19 10:28:05 +01:00
|
|
|
return FileDeletedSaveAs;
|
Remove braces for single lines of conditions
#!/usr/bin/env ruby
Dir.glob('**/*.cpp') { |file|
# skip ast (excluding paste, astpath, and canv'ast'imer)
next if file =~ /ast[^eip]|keywords\.|qualifiers|preprocessor|names.cpp/i
s = File.read(file)
next if s.include?('qlalr')
orig = s.dup
s.gsub!(/\n *if [^\n]*{\n[^\n]*\n\s+}(\s+else if [^\n]* {\n[^\n]*\n\s+})*(\s+else {\n[^\n]*\n\s+})?\n/m) { |m|
res = $&
if res =~ /^\s*(\/\/|[A-Z_]{3,})/ # C++ comment or macro (Q_UNUSED, SDEBUG), do not touch braces
res
else
res.gsub!('} else', 'else')
res.gsub!(/\n +} *\n/m, "\n")
res.gsub(/ *{$/, '')
end
}
s.gsub!(/ *$/, '')
File.open(file, 'wb').write(s) if s != orig
}
Change-Id: I3b30ee60df0986f66c02132c65fc38a3fbb6bbdc
Reviewed-by: hjk <qthjk@ovi.com>
2013-01-08 03:32:53 +02:00
|
|
|
else if (clickedbutton == save)
|
2010-03-19 10:28:05 +01:00
|
|
|
return FileDeletedSave;
|
|
|
|
|
return FileDeletedClose;
|
|
|
|
|
}
|
2014-07-15 23:33:17 +03:00
|
|
|
|
|
|
|
|
} // namespace Utils
|