forked from qt-creator/qt-creator
Merge remote-tracking branch 'origin/3.6'
Conflicts: src/plugins/clangcodemodel/clangassistproposalmodel.cpp src/plugins/clangcodemodel/clangassistproposalmodel.h Change-Id: Iba30d2f4d95fa0f551afe58890d15f5835dfb715
This commit is contained in:
@@ -581,6 +581,7 @@ void QuickItemNodeInstance::reparent(const ObjectNodeInstance::Pointer &oldParen
|
|||||||
}
|
}
|
||||||
|
|
||||||
refresh();
|
refresh();
|
||||||
|
if (quickItem()->window())
|
||||||
DesignerSupport::updateDirtyNode(quickItem());
|
DesignerSupport::updateDirtyNode(quickItem());
|
||||||
|
|
||||||
if (instanceIsValidLayoutable(oldParentInstance, oldParentProperty))
|
if (instanceIsValidLayoutable(oldParentInstance, oldParentProperty))
|
||||||
|
@@ -104,15 +104,19 @@ void ClangAssistProposalItem::applyContextualContent(TextEditor::TextEditorWidge
|
|||||||
}
|
}
|
||||||
} else if (ccr.completionKind() == CodeCompletion::KeywordCompletionKind) {
|
} else if (ccr.completionKind() == CodeCompletion::KeywordCompletionKind) {
|
||||||
CompletionChunksToTextConverter converter;
|
CompletionChunksToTextConverter converter;
|
||||||
converter.setAddPlaceHolderPositions(true);
|
converter.setupForKeywords();
|
||||||
converter.setAddSpaces(true);
|
|
||||||
converter.setAddExtraVerticalSpaceBetweenBraces(true);
|
|
||||||
|
|
||||||
converter.parseChunks(ccr.chunks());
|
converter.parseChunks(ccr.chunks());
|
||||||
|
|
||||||
textToBeInserted = converter.text();
|
textToBeInserted = converter.text();
|
||||||
if (converter.hasPlaceholderPositions())
|
if (converter.hasPlaceholderPositions())
|
||||||
cursorOffset = converter.placeholderPositions().at(0) - converter.text().size();
|
cursorOffset = converter.placeholderPositions().at(0) - converter.text().size();
|
||||||
|
} else if (ccr.completionKind() == CodeCompletion::NamespaceCompletionKind) {
|
||||||
|
CompletionChunksToTextConverter converter;
|
||||||
|
|
||||||
|
converter.parseChunks(ccr.chunks()); // Appends "::" after name space name
|
||||||
|
|
||||||
|
textToBeInserted = converter.text();
|
||||||
} else if (!ccr.text().isEmpty()) {
|
} else if (!ccr.text().isEmpty()) {
|
||||||
const TextEditor::CompletionSettings &completionSettings =
|
const TextEditor::CompletionSettings &completionSettings =
|
||||||
TextEditor::TextEditorSettings::instance()->completionSettings();
|
TextEditor::TextEditorSettings::instance()->completionSettings();
|
||||||
|
@@ -43,6 +43,7 @@ ClangAssistProposalModel::ClangAssistProposalModel(
|
|||||||
ClangBackEnd::CompletionCorrection neededCorrection)
|
ClangBackEnd::CompletionCorrection neededCorrection)
|
||||||
: m_neededCorrection(neededCorrection)
|
: m_neededCorrection(neededCorrection)
|
||||||
{
|
{
|
||||||
|
setDetailTextFormat(Qt::RichText);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ClangAssistProposalModel::isSortable(const QString &/*prefix*/) const
|
bool ClangAssistProposalModel::isSortable(const QString &/*prefix*/) const
|
||||||
|
@@ -101,7 +101,8 @@ QList<AssistProposalItem *> toAssistProposalItems(const CodeCompletions &complet
|
|||||||
items.insert(name, item);
|
items.insert(name, item);
|
||||||
item->setText(name);
|
item->setText(name);
|
||||||
item->setOrder(ccr.priority());
|
item->setOrder(ccr.priority());
|
||||||
QString detail = CompletionChunksToTextConverter::convertToToolTip(ccr.chunks());
|
QString detail
|
||||||
|
= CompletionChunksToTextConverter::convertToToolTipWithHtml(ccr.chunks());
|
||||||
|
|
||||||
if (!ccr.briefComment().isEmpty())
|
if (!ccr.briefComment().isEmpty())
|
||||||
detail += QStringLiteral("\n\n") + ccr.briefComment().toString();
|
detail += QStringLiteral("\n\n") + ccr.briefComment().toString();
|
||||||
|
@@ -96,6 +96,13 @@ void CompletionChunksToTextConverter::setPlaceHolderToEmphasize(int placeHolderN
|
|||||||
m_placeHolderPositionToEmphasize = placeHolderNumber;
|
m_placeHolderPositionToEmphasize = placeHolderNumber;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CompletionChunksToTextConverter::setupForKeywords()
|
||||||
|
{
|
||||||
|
setAddPlaceHolderPositions(true);
|
||||||
|
setAddSpaces(true);
|
||||||
|
setAddExtraVerticalSpaceBetweenBraces(true);
|
||||||
|
}
|
||||||
|
|
||||||
const QString &CompletionChunksToTextConverter::text() const
|
const QString &CompletionChunksToTextConverter::text() const
|
||||||
{
|
{
|
||||||
return m_text;
|
return m_text;
|
||||||
@@ -111,7 +118,7 @@ bool CompletionChunksToTextConverter::hasPlaceholderPositions() const
|
|||||||
return m_placeholderPositions.size() > 0;
|
return m_placeholderPositions.size() > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString CompletionChunksToTextConverter::convertToFunctionSignature(
|
QString CompletionChunksToTextConverter::convertToFunctionSignatureWithHtml(
|
||||||
const ClangBackEnd::CodeCompletionChunks &codeCompletionChunks,
|
const ClangBackEnd::CodeCompletionChunks &codeCompletionChunks,
|
||||||
int parameterToEmphasize)
|
int parameterToEmphasize)
|
||||||
{
|
{
|
||||||
@@ -119,6 +126,7 @@ QString CompletionChunksToTextConverter::convertToFunctionSignature(
|
|||||||
converter.setAddPlaceHolderText(true);
|
converter.setAddPlaceHolderText(true);
|
||||||
converter.setAddResultType(true);
|
converter.setAddResultType(true);
|
||||||
|
|
||||||
|
converter.setTextFormat(TextFormat::Html);
|
||||||
converter.setAddOptional(true);
|
converter.setAddOptional(true);
|
||||||
converter.setEmphasizeOptional(true);
|
converter.setEmphasizeOptional(true);
|
||||||
|
|
||||||
@@ -140,7 +148,7 @@ QString CompletionChunksToTextConverter::convertToName(
|
|||||||
return converter.text();
|
return converter.text();
|
||||||
}
|
}
|
||||||
|
|
||||||
QString CompletionChunksToTextConverter::convertToToolTip(
|
QString CompletionChunksToTextConverter::convertToToolTipWithHtml(
|
||||||
const ClangBackEnd::CodeCompletionChunks &codeCompletionChunks)
|
const ClangBackEnd::CodeCompletionChunks &codeCompletionChunks)
|
||||||
{
|
{
|
||||||
CompletionChunksToTextConverter converter;
|
CompletionChunksToTextConverter converter;
|
||||||
@@ -148,6 +156,7 @@ QString CompletionChunksToTextConverter::convertToToolTip(
|
|||||||
converter.setAddSpaces(true);
|
converter.setAddSpaces(true);
|
||||||
converter.setAddExtraVerticalSpaceBetweenBraces(true);
|
converter.setAddExtraVerticalSpaceBetweenBraces(true);
|
||||||
converter.setAddOptional(true);
|
converter.setAddOptional(true);
|
||||||
|
converter.setTextFormat(TextFormat::Html);
|
||||||
converter.setEmphasizeOptional(true);
|
converter.setEmphasizeOptional(true);
|
||||||
converter.setAddResultType(true);
|
converter.setAddResultType(true);
|
||||||
|
|
||||||
@@ -182,7 +191,7 @@ void CompletionChunksToTextConverter::parseDependendOnTheOptionalState(
|
|||||||
void CompletionChunksToTextConverter::parseResultType(const Utf8String &resultTypeText)
|
void CompletionChunksToTextConverter::parseResultType(const Utf8String &resultTypeText)
|
||||||
{
|
{
|
||||||
if (m_addResultType)
|
if (m_addResultType)
|
||||||
m_text += resultTypeText.toString().toHtmlEscaped() + QChar(QChar::Space);
|
m_text += inDesiredTextFormat(resultTypeText) + QChar(QChar::Space);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CompletionChunksToTextConverter::parseText(const Utf8String &text)
|
void CompletionChunksToTextConverter::parseText(const Utf8String &text)
|
||||||
@@ -192,14 +201,14 @@ void CompletionChunksToTextConverter::parseText(const Utf8String &text)
|
|||||||
m_text += QChar(QChar::Space);
|
m_text += QChar(QChar::Space);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_text += text.toString().toHtmlEscaped();
|
m_text += inDesiredTextFormat(text);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CompletionChunksToTextConverter::wrapInCursiveTagIfOptional(
|
void CompletionChunksToTextConverter::wrapInCursiveTagIfOptional(
|
||||||
const ClangBackEnd::CodeCompletionChunk &codeCompletionChunk)
|
const ClangBackEnd::CodeCompletionChunk &codeCompletionChunk)
|
||||||
{
|
{
|
||||||
if (m_addOptional) {
|
if (m_addOptional) {
|
||||||
if (m_emphasizeOptional) {
|
if (m_emphasizeOptional && m_textFormat == TextFormat::Html) {
|
||||||
if (!m_previousCodeCompletionChunk.isOptional() && codeCompletionChunk.isOptional())
|
if (!m_previousCodeCompletionChunk.isOptional() && codeCompletionChunk.isOptional())
|
||||||
m_text += QStringLiteral("<i>");
|
m_text += QStringLiteral("<i>");
|
||||||
else if (m_previousCodeCompletionChunk.isOptional() && !codeCompletionChunk.isOptional())
|
else if (m_previousCodeCompletionChunk.isOptional() && !codeCompletionChunk.isOptional())
|
||||||
@@ -212,7 +221,7 @@ void CompletionChunksToTextConverter::parsePlaceHolder(
|
|||||||
const ClangBackEnd::CodeCompletionChunk &codeCompletionChunk)
|
const ClangBackEnd::CodeCompletionChunk &codeCompletionChunk)
|
||||||
{
|
{
|
||||||
if (m_addPlaceHolderText) {
|
if (m_addPlaceHolderText) {
|
||||||
appendText(codeCompletionChunk.text().toString().toHtmlEscaped(),
|
appendText(inDesiredTextFormat(codeCompletionChunk.text()),
|
||||||
emphasizeCurrentPlaceHolder());
|
emphasizeCurrentPlaceHolder());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -287,6 +296,14 @@ void CompletionChunksToTextConverter::addExtraVerticalSpaceBetweenBraces(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString CompletionChunksToTextConverter::inDesiredTextFormat(const Utf8String &text) const
|
||||||
|
{
|
||||||
|
if (m_textFormat == TextFormat::Html)
|
||||||
|
return text.toString().toHtmlEscaped();
|
||||||
|
else
|
||||||
|
return text.toString();
|
||||||
|
}
|
||||||
|
|
||||||
bool CompletionChunksToTextConverter::emphasizeCurrentPlaceHolder() const
|
bool CompletionChunksToTextConverter::emphasizeCurrentPlaceHolder() const
|
||||||
{
|
{
|
||||||
if (m_addPlaceHolderPositions) {
|
if (m_addPlaceHolderPositions) {
|
||||||
@@ -297,9 +314,14 @@ bool CompletionChunksToTextConverter::emphasizeCurrentPlaceHolder() const
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CompletionChunksToTextConverter::setTextFormat(TextFormat textFormat)
|
||||||
|
{
|
||||||
|
m_textFormat = textFormat;
|
||||||
|
}
|
||||||
|
|
||||||
void CompletionChunksToTextConverter::appendText(const QString &text, bool boldFormat)
|
void CompletionChunksToTextConverter::appendText(const QString &text, bool boldFormat)
|
||||||
{
|
{
|
||||||
if (boldFormat)
|
if (boldFormat && m_textFormat == TextFormat::Html)
|
||||||
m_text += QStringLiteral("<b>") + text + QStringLiteral("</b>");
|
m_text += QStringLiteral("<b>") + text + QStringLiteral("</b>");
|
||||||
else
|
else
|
||||||
m_text += text;
|
m_text += text;
|
||||||
|
@@ -47,23 +47,33 @@ class CompletionChunksToTextConverter
|
|||||||
public:
|
public:
|
||||||
void parseChunks(const ClangBackEnd::CodeCompletionChunks &codeCompletionChunks);
|
void parseChunks(const ClangBackEnd::CodeCompletionChunks &codeCompletionChunks);
|
||||||
|
|
||||||
|
enum class TextFormat {
|
||||||
|
Plain,
|
||||||
|
Html
|
||||||
|
};
|
||||||
|
void setTextFormat(TextFormat textFormat);
|
||||||
void setAddPlaceHolderText(bool addPlaceHolderText);
|
void setAddPlaceHolderText(bool addPlaceHolderText);
|
||||||
void setAddPlaceHolderPositions(bool addPlaceHolderPositions);
|
void setAddPlaceHolderPositions(bool addPlaceHolderPositions);
|
||||||
void setAddResultType(bool addResultType);
|
void setAddResultType(bool addResultType);
|
||||||
void setAddSpaces(bool addSpaces);
|
void setAddSpaces(bool addSpaces);
|
||||||
void setAddExtraVerticalSpaceBetweenBraces(bool addExtraVerticalSpaceBetweenBraces);
|
void setAddExtraVerticalSpaceBetweenBraces(bool addExtraVerticalSpaceBetweenBraces);
|
||||||
void setEmphasizeOptional(bool emphasizeOptional);
|
void setEmphasizeOptional(bool emphasizeOptional); // Only for Html format
|
||||||
void setAddOptional(bool addOptional);
|
void setAddOptional(bool addOptional);
|
||||||
void setPlaceHolderToEmphasize(int placeHolderNumber);
|
void setPlaceHolderToEmphasize(int placeHolderNumber);
|
||||||
|
|
||||||
|
void setupForKeywords();
|
||||||
|
|
||||||
const QString &text() const;
|
const QString &text() const;
|
||||||
const std::vector<int> &placeholderPositions() const;
|
const std::vector<int> &placeholderPositions() const;
|
||||||
bool hasPlaceholderPositions() const;
|
bool hasPlaceholderPositions() const;
|
||||||
|
|
||||||
static QString convertToFunctionSignature(const ClangBackEnd::CodeCompletionChunks &codeCompletionChunks,
|
|
||||||
int parameterToEmphasize = -1);
|
|
||||||
static QString convertToName(const ClangBackEnd::CodeCompletionChunks &codeCompletionChunks);
|
static QString convertToName(const ClangBackEnd::CodeCompletionChunks &codeCompletionChunks);
|
||||||
static QString convertToToolTip(const ClangBackEnd::CodeCompletionChunks &codeCompletionChunks);
|
static QString convertToKeywords(const ClangBackEnd::CodeCompletionChunks &codeCompletionChunks);
|
||||||
|
static QString convertToToolTipWithHtml(const ClangBackEnd::CodeCompletionChunks &codeCompletionChunks);
|
||||||
|
static QString convertToFunctionSignatureWithHtml(
|
||||||
|
const ClangBackEnd::CodeCompletionChunks &codeCompletionChunks,
|
||||||
|
int parameterToEmphasize = -1);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void parse(const ClangBackEnd::CodeCompletionChunk &codeCompletionChunk);
|
void parse(const ClangBackEnd::CodeCompletionChunk &codeCompletionChunk);
|
||||||
void parseDependendOnTheOptionalState(const ClangBackEnd::CodeCompletionChunk &codeCompletionChunk);
|
void parseDependendOnTheOptionalState(const ClangBackEnd::CodeCompletionChunk &codeCompletionChunk);
|
||||||
@@ -76,7 +86,8 @@ private:
|
|||||||
void addExtraVerticalSpaceBetweenBraces();
|
void addExtraVerticalSpaceBetweenBraces();
|
||||||
void addExtraVerticalSpaceBetweenBraces(const ClangBackEnd::CodeCompletionChunks::iterator &);
|
void addExtraVerticalSpaceBetweenBraces(const ClangBackEnd::CodeCompletionChunks::iterator &);
|
||||||
|
|
||||||
void appendText(const QString &text, bool boldFormat = false);
|
QString inDesiredTextFormat(const Utf8String &text) const;
|
||||||
|
void appendText(const QString &text, bool boldFormat = false); // Boldness only in Html format
|
||||||
bool canAddSpace() const;
|
bool canAddSpace() const;
|
||||||
bool isNotOptionalOrAddOptionals(const ClangBackEnd::CodeCompletionChunk &codeCompletionChunk) const;
|
bool isNotOptionalOrAddOptionals(const ClangBackEnd::CodeCompletionChunk &codeCompletionChunk) const;
|
||||||
|
|
||||||
@@ -88,6 +99,7 @@ private:
|
|||||||
ClangBackEnd::CodeCompletionChunk m_previousCodeCompletionChunk;
|
ClangBackEnd::CodeCompletionChunk m_previousCodeCompletionChunk;
|
||||||
QString m_text;
|
QString m_text;
|
||||||
int m_placeHolderPositionToEmphasize = -1;
|
int m_placeHolderPositionToEmphasize = -1;
|
||||||
|
TextFormat m_textFormat = TextFormat::Plain;
|
||||||
bool m_addPlaceHolderText = false;
|
bool m_addPlaceHolderText = false;
|
||||||
bool m_addPlaceHolderPositions = false;
|
bool m_addPlaceHolderPositions = false;
|
||||||
bool m_addResultType = false;
|
bool m_addResultType = false;
|
||||||
|
@@ -58,7 +58,8 @@ QString ClangFunctionHintModel::text(int index) const
|
|||||||
{
|
{
|
||||||
const ClangBackEnd::CodeCompletionChunks chunks = m_functionSymbols.at(index).chunks();
|
const ClangBackEnd::CodeCompletionChunks chunks = m_functionSymbols.at(index).chunks();
|
||||||
const QString signatureWithEmphasizedCurrentParameter
|
const QString signatureWithEmphasizedCurrentParameter
|
||||||
= CompletionChunksToTextConverter::convertToFunctionSignature(chunks, m_currentArgument + 1);
|
= CompletionChunksToTextConverter::convertToFunctionSignatureWithHtml(chunks,
|
||||||
|
m_currentArgument + 1);
|
||||||
|
|
||||||
return signatureWithEmphasizedCurrentParameter;
|
return signatureWithEmphasizedCurrentParameter;
|
||||||
}
|
}
|
||||||
|
@@ -464,6 +464,10 @@ static QString compilerString()
|
|||||||
#elif defined(Q_CC_GNU)
|
#elif defined(Q_CC_GNU)
|
||||||
return QLatin1String("GCC " ) + QLatin1String(__VERSION__);
|
return QLatin1String("GCC " ) + QLatin1String(__VERSION__);
|
||||||
#elif defined(Q_CC_MSVC)
|
#elif defined(Q_CC_MSVC)
|
||||||
|
if (_MSC_VER > 1999)
|
||||||
|
return QLatin1String("MSVC <unknown>");
|
||||||
|
if (_MSC_VER >= 1900) // 1900: MSVC 2015
|
||||||
|
return QLatin1String("MSVC 2015");
|
||||||
if (_MSC_VER >= 1800) // 1800: MSVC 2013 (yearly release cycle)
|
if (_MSC_VER >= 1800) // 1800: MSVC 2013 (yearly release cycle)
|
||||||
return QLatin1String("MSVC ") + QString::number(2008 + ((_MSC_VER / 100) - 13));
|
return QLatin1String("MSVC ") + QString::number(2008 + ((_MSC_VER / 100) - 13));
|
||||||
if (_MSC_VER >= 1500) // 1500: MSVC 2008, 1600: MSVC 2010, ... (2-year release cycle)
|
if (_MSC_VER >= 1500) // 1500: MSVC 2008, 1600: MSVC 2010, ... (2-year release cycle)
|
||||||
|
@@ -49,6 +49,8 @@
|
|||||||
#include <QHBoxLayout>
|
#include <QHBoxLayout>
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
#include <QCheckBox>
|
#include <QCheckBox>
|
||||||
|
#include <QDialogButtonBox>
|
||||||
|
#include <QKeyEvent>
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
#include <QFormLayout>
|
#include <QFormLayout>
|
||||||
#include <QLineEdit>
|
#include <QLineEdit>
|
||||||
@@ -84,6 +86,7 @@ UnstartedAppWatcherDialog::UnstartedAppWatcherDialog(QWidget *parent)
|
|||||||
: QDialog(parent)
|
: QDialog(parent)
|
||||||
{
|
{
|
||||||
setWindowTitle(tr("Attach to Process Not Yet Started"));
|
setWindowTitle(tr("Attach to Process Not Yet Started"));
|
||||||
|
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
||||||
|
|
||||||
m_kitChooser = new DebuggerKitChooser(DebuggerKitChooser::LocalDebugging, this);
|
m_kitChooser = new DebuggerKitChooser(DebuggerKitChooser::LocalDebugging, this);
|
||||||
m_kitChooser->populate();
|
m_kitChooser->populate();
|
||||||
@@ -124,19 +127,11 @@ UnstartedAppWatcherDialog::UnstartedAppWatcherDialog(QWidget *parent)
|
|||||||
m_waitingLabel = new QLabel(QString(), this);
|
m_waitingLabel = new QLabel(QString(), this);
|
||||||
m_waitingLabel->setAlignment(Qt::AlignCenter);
|
m_waitingLabel->setAlignment(Qt::AlignCenter);
|
||||||
|
|
||||||
m_watchingPushButton = new QPushButton(this);
|
QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Close, this);
|
||||||
|
m_watchingPushButton = buttonBox->addButton(tr("Start Watching"), QDialogButtonBox::ActionRole);
|
||||||
m_watchingPushButton->setCheckable(true);
|
m_watchingPushButton->setCheckable(true);
|
||||||
m_watchingPushButton->setChecked(false);
|
m_watchingPushButton->setChecked(false);
|
||||||
m_watchingPushButton->setEnabled(false);
|
m_watchingPushButton->setEnabled(false);
|
||||||
m_watchingPushButton->setText(tr("Start Watching"));
|
|
||||||
|
|
||||||
m_closePushButton = new QPushButton(this);
|
|
||||||
m_closePushButton->setText(tr("Close"));
|
|
||||||
|
|
||||||
QHBoxLayout *buttonsLine = new QHBoxLayout();
|
|
||||||
buttonsLine->addSpacerItem(new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum));
|
|
||||||
buttonsLine->addWidget(m_watchingPushButton);
|
|
||||||
buttonsLine->addWidget(m_closePushButton);
|
|
||||||
|
|
||||||
QFormLayout *mainLayout = new QFormLayout(this);
|
QFormLayout *mainLayout = new QFormLayout(this);
|
||||||
mainLayout->addRow(new QLabel(tr("Kit: "), this), m_kitChooser);
|
mainLayout->addRow(new QLabel(tr("Kit: "), this), m_kitChooser);
|
||||||
@@ -145,7 +140,7 @@ UnstartedAppWatcherDialog::UnstartedAppWatcherDialog(QWidget *parent)
|
|||||||
mainLayout->addRow(m_continueOnAttachCheckBox);
|
mainLayout->addRow(m_continueOnAttachCheckBox);
|
||||||
mainLayout->addRow(m_waitingLabel);
|
mainLayout->addRow(m_waitingLabel);
|
||||||
mainLayout->addItem(new QSpacerItem(20, 0, QSizePolicy::Minimum, QSizePolicy::Expanding));
|
mainLayout->addItem(new QSpacerItem(20, 0, QSizePolicy::Minimum, QSizePolicy::Expanding));
|
||||||
mainLayout->addRow(buttonsLine);
|
mainLayout->addRow(buttonBox);
|
||||||
setLayout(mainLayout);
|
setLayout(mainLayout);
|
||||||
|
|
||||||
connect(m_pathChooser, &Utils::PathChooser::beforeBrowsing,
|
connect(m_pathChooser, &Utils::PathChooser::beforeBrowsing,
|
||||||
@@ -154,8 +149,7 @@ UnstartedAppWatcherDialog::UnstartedAppWatcherDialog(QWidget *parent)
|
|||||||
this, &UnstartedAppWatcherDialog::startStopWatching);
|
this, &UnstartedAppWatcherDialog::startStopWatching);
|
||||||
connect(m_pathChooser, &Utils::PathChooser::pathChanged, this,
|
connect(m_pathChooser, &Utils::PathChooser::pathChanged, this,
|
||||||
&UnstartedAppWatcherDialog::stopAndCheckExecutable);
|
&UnstartedAppWatcherDialog::stopAndCheckExecutable);
|
||||||
connect(m_closePushButton, &QAbstractButton::clicked,
|
connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
|
||||||
this, &QDialog::reject);
|
|
||||||
connect(&m_timer, &QTimer::timeout,
|
connect(&m_timer, &QTimer::timeout,
|
||||||
this, &UnstartedAppWatcherDialog::findProcess);
|
this, &UnstartedAppWatcherDialog::findProcess);
|
||||||
connect(m_kitChooser, &KitChooser::currentIndexChanged,
|
connect(m_kitChooser, &KitChooser::currentIndexChanged,
|
||||||
@@ -165,6 +159,18 @@ UnstartedAppWatcherDialog::UnstartedAppWatcherDialog(QWidget *parent)
|
|||||||
setWaitingState(checkExecutableString() ? NotWatchingState : InvalidWacherState);
|
setWaitingState(checkExecutableString() ? NotWatchingState : InvalidWacherState);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool UnstartedAppWatcherDialog::event(QEvent *e)
|
||||||
|
{
|
||||||
|
if (e->type() == QEvent::ShortcutOverride) {
|
||||||
|
QKeyEvent *ke = static_cast<QKeyEvent *>(e);
|
||||||
|
if (ke->key() == Qt::Key_Escape && !ke->modifiers()) {
|
||||||
|
ke->accept();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return QDialog::event(e);
|
||||||
|
}
|
||||||
|
|
||||||
void UnstartedAppWatcherDialog::selectExecutable()
|
void UnstartedAppWatcherDialog::selectExecutable()
|
||||||
{
|
{
|
||||||
QString path;
|
QString path;
|
||||||
|
@@ -64,6 +64,8 @@ public:
|
|||||||
bool continueOnAttach() const;
|
bool continueOnAttach() const;
|
||||||
void startWatching();
|
void startWatching();
|
||||||
|
|
||||||
|
bool event(QEvent *) override;
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void processFound();
|
void processFound();
|
||||||
|
|
||||||
@@ -93,7 +95,6 @@ private:
|
|||||||
QCheckBox *m_hideOnAttachCheckBox;
|
QCheckBox *m_hideOnAttachCheckBox;
|
||||||
QCheckBox *m_continueOnAttachCheckBox;
|
QCheckBox *m_continueOnAttachCheckBox;
|
||||||
QPushButton *m_watchingPushButton;
|
QPushButton *m_watchingPushButton;
|
||||||
QPushButton *m_closePushButton;
|
|
||||||
ProjectExplorer::DeviceProcessItem m_process;
|
ProjectExplorer::DeviceProcessItem m_process;
|
||||||
QTimer m_timer;
|
QTimer m_timer;
|
||||||
};
|
};
|
||||||
|
@@ -135,6 +135,7 @@ private:
|
|||||||
} // Anonymous
|
} // Anonymous
|
||||||
|
|
||||||
GenericProposalModel::GenericProposalModel()
|
GenericProposalModel::GenericProposalModel()
|
||||||
|
: m_detailTextFormat(Qt::AutoText)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
GenericProposalModel::~GenericProposalModel()
|
GenericProposalModel::~GenericProposalModel()
|
||||||
@@ -150,6 +151,16 @@ void GenericProposalModel::loadContent(const QList<AssistProposalItem *> &items)
|
|||||||
m_idByText.insert(m_originalItems.at(i)->text(), i);
|
m_idByText.insert(m_originalItems.at(i)->text(), i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Qt::TextFormat GenericProposalModel::detailTextFormat() const
|
||||||
|
{
|
||||||
|
return m_detailTextFormat;
|
||||||
|
}
|
||||||
|
|
||||||
|
void GenericProposalModel::setDetailTextFormat(Qt::TextFormat detailTextFormat)
|
||||||
|
{
|
||||||
|
m_detailTextFormat = detailTextFormat;
|
||||||
|
}
|
||||||
|
|
||||||
void GenericProposalModel::reset()
|
void GenericProposalModel::reset()
|
||||||
{
|
{
|
||||||
m_currentItems = m_originalItems;
|
m_currentItems = m_originalItems;
|
||||||
|
@@ -72,12 +72,16 @@ public:
|
|||||||
void setSortingAllowed(bool isAllowed);
|
void setSortingAllowed(bool isAllowed);
|
||||||
bool isSortingAllowed() const;
|
bool isSortingAllowed() const;
|
||||||
|
|
||||||
|
Qt::TextFormat detailTextFormat() const;
|
||||||
|
void setDetailTextFormat(Qt::TextFormat detailTextFormat);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
QList<AssistProposalItem *> m_currentItems;
|
QList<AssistProposalItem *> m_currentItems;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QHash<QString, int> m_idByText;
|
QHash<QString, int> m_idByText;
|
||||||
QList<AssistProposalItem *> m_originalItems;
|
QList<AssistProposalItem *> m_originalItems;
|
||||||
|
Qt::TextFormat m_detailTextFormat;
|
||||||
};
|
};
|
||||||
} // TextEditor
|
} // TextEditor
|
||||||
|
|
||||||
|
@@ -168,6 +168,11 @@ public:
|
|||||||
m_label->setText(text);
|
m_label->setText(text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void setTextFormat(Qt::TextFormat textFormat)
|
||||||
|
{
|
||||||
|
m_label->setTextFormat(textFormat);
|
||||||
|
}
|
||||||
|
|
||||||
// Workaround QTCREATORBUG-11653
|
// Workaround QTCREATORBUG-11653
|
||||||
void calculateMaximumWidth()
|
void calculateMaximumWidth()
|
||||||
{
|
{
|
||||||
@@ -311,6 +316,7 @@ void GenericProposalWidgetPrivate::maybeShowInfoTip()
|
|||||||
|
|
||||||
m_infoFrame->move(m_completionListView->infoFramePos());
|
m_infoFrame->move(m_completionListView->infoFramePos());
|
||||||
m_infoFrame->setText(infoTip);
|
m_infoFrame->setText(infoTip);
|
||||||
|
m_infoFrame->setTextFormat(m_model->detailTextFormat());
|
||||||
m_infoFrame->calculateMaximumWidth();
|
m_infoFrame->calculateMaximumWidth();
|
||||||
m_infoFrame->adjustSize();
|
m_infoFrame->adjustSize();
|
||||||
m_infoFrame->show();
|
m_infoFrame->show();
|
||||||
|
@@ -53,6 +53,7 @@ protected:
|
|||||||
CodeCompletionChunk templateResultType{CodeCompletionChunk::ResultType, Utf8StringLiteral("Foo<int>")};
|
CodeCompletionChunk templateResultType{CodeCompletionChunk::ResultType, Utf8StringLiteral("Foo<int>")};
|
||||||
CodeCompletionChunk enumerationResultType{CodeCompletionChunk::ResultType, Utf8StringLiteral("Enumeration")};
|
CodeCompletionChunk enumerationResultType{CodeCompletionChunk::ResultType, Utf8StringLiteral("Enumeration")};
|
||||||
CodeCompletionChunk functionName{CodeCompletionChunk::TypedText, Utf8StringLiteral("Function")};
|
CodeCompletionChunk functionName{CodeCompletionChunk::TypedText, Utf8StringLiteral("Function")};
|
||||||
|
CodeCompletionChunk namespaceName{CodeCompletionChunk::TypedText, Utf8StringLiteral("Namespace")};
|
||||||
CodeCompletionChunk variableName{CodeCompletionChunk::TypedText, Utf8StringLiteral("Variable")};
|
CodeCompletionChunk variableName{CodeCompletionChunk::TypedText, Utf8StringLiteral("Variable")};
|
||||||
CodeCompletionChunk enumeratorName{CodeCompletionChunk::TypedText, Utf8StringLiteral("Enumerator")};
|
CodeCompletionChunk enumeratorName{CodeCompletionChunk::TypedText, Utf8StringLiteral("Enumerator")};
|
||||||
CodeCompletionChunk enumerationName{CodeCompletionChunk::TypedText, Utf8StringLiteral("Enumeration")};
|
CodeCompletionChunk enumerationName{CodeCompletionChunk::TypedText, Utf8StringLiteral("Enumeration")};
|
||||||
@@ -61,6 +62,7 @@ protected:
|
|||||||
CodeCompletionChunk rightParen{CodeCompletionChunk::RightParen, Utf8StringLiteral(")")};
|
CodeCompletionChunk rightParen{CodeCompletionChunk::RightParen, Utf8StringLiteral(")")};
|
||||||
CodeCompletionChunk comma{CodeCompletionChunk::Comma, Utf8StringLiteral(", ")};
|
CodeCompletionChunk comma{CodeCompletionChunk::Comma, Utf8StringLiteral(", ")};
|
||||||
CodeCompletionChunk semicolon{CodeCompletionChunk::SemiColon, Utf8StringLiteral(";")};
|
CodeCompletionChunk semicolon{CodeCompletionChunk::SemiColon, Utf8StringLiteral(";")};
|
||||||
|
CodeCompletionChunk colonColonText{CodeCompletionChunk::Text, Utf8StringLiteral("::")};
|
||||||
CodeCompletionChunk functionArgumentX{CodeCompletionChunk::Placeholder, Utf8StringLiteral("char x")};
|
CodeCompletionChunk functionArgumentX{CodeCompletionChunk::Placeholder, Utf8StringLiteral("char x")};
|
||||||
CodeCompletionChunk functionArgumentY{CodeCompletionChunk::Placeholder, Utf8StringLiteral("int y")};
|
CodeCompletionChunk functionArgumentY{CodeCompletionChunk::Placeholder, Utf8StringLiteral("int y")};
|
||||||
CodeCompletionChunk functionArgumentZ{CodeCompletionChunk::Placeholder, Utf8StringLiteral("int z")};
|
CodeCompletionChunk functionArgumentZ{CodeCompletionChunk::Placeholder, Utf8StringLiteral("int z")};
|
||||||
@@ -131,7 +133,7 @@ TEST_F(CompletionChunksToTextConverter, ConvertToFunctionSignatureWithOneArgumen
|
|||||||
|
|
||||||
using ClangCodeModel::Internal::CompletionChunksToTextConverter;
|
using ClangCodeModel::Internal::CompletionChunksToTextConverter;
|
||||||
|
|
||||||
ASSERT_THAT(converter.convertToFunctionSignature(completionChunks),
|
ASSERT_THAT(converter.convertToFunctionSignatureWithHtml(completionChunks),
|
||||||
QStringLiteral("int Function(char x)"));
|
QStringLiteral("int Function(char x)"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -143,7 +145,7 @@ TEST_F(CompletionChunksToTextConverter, ConvertToFunctionSignatureWithOneParamet
|
|||||||
functionArgumentX,
|
functionArgumentX,
|
||||||
rightParen});
|
rightParen});
|
||||||
|
|
||||||
ASSERT_THAT(converter.convertToFunctionSignature(completionChunks, 1),
|
ASSERT_THAT(converter.convertToFunctionSignatureWithHtml(completionChunks, 1),
|
||||||
QStringLiteral("int Function(<b>char x</b>)"));
|
QStringLiteral("int Function(<b>char x</b>)"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -155,7 +157,7 @@ TEST_F(CompletionChunksToTextConverter, ConvertToFunctionSignatureWithOneParamet
|
|||||||
functionArgumentX,
|
functionArgumentX,
|
||||||
rightParen});
|
rightParen});
|
||||||
|
|
||||||
ASSERT_THAT(converter.convertToFunctionSignature(completionChunks, -1),
|
ASSERT_THAT(converter.convertToFunctionSignatureWithHtml(completionChunks, -1),
|
||||||
QStringLiteral("int Function(char x)"));
|
QStringLiteral("int Function(char x)"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -169,7 +171,7 @@ TEST_F(CompletionChunksToTextConverter, ConvertToFunctionSignatureWithTwoParamet
|
|||||||
functionArgumentY,
|
functionArgumentY,
|
||||||
rightParen});
|
rightParen});
|
||||||
|
|
||||||
ASSERT_THAT(converter.convertToFunctionSignature(completionChunks, 2),
|
ASSERT_THAT(converter.convertToFunctionSignatureWithHtml(completionChunks, 2),
|
||||||
QStringLiteral("int Function(char x, <b>int y</b>)"));
|
QStringLiteral("int Function(char x, <b>int y</b>)"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -183,7 +185,7 @@ TEST_F(CompletionChunksToTextConverter, ConvertToFunctionSignatureWithTwoParamet
|
|||||||
optionalFunctionArgumentY,
|
optionalFunctionArgumentY,
|
||||||
rightParen});
|
rightParen});
|
||||||
|
|
||||||
ASSERT_THAT(converter.convertToFunctionSignature(completionChunks, 2),
|
ASSERT_THAT(converter.convertToFunctionSignatureWithHtml(completionChunks, 2),
|
||||||
QStringLiteral("int Function(char x<i>, <b>int y</b></i>)"));
|
QStringLiteral("int Function(char x<i>, <b>int y</b></i>)"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -197,7 +199,7 @@ TEST_F(CompletionChunksToTextConverter, ConvertToFunctionSignatureWithTemplateRe
|
|||||||
|
|
||||||
using ClangCodeModel::Internal::CompletionChunksToTextConverter;
|
using ClangCodeModel::Internal::CompletionChunksToTextConverter;
|
||||||
|
|
||||||
ASSERT_THAT(CompletionChunksToTextConverter::convertToFunctionSignature(completionChunks),
|
ASSERT_THAT(CompletionChunksToTextConverter::convertToFunctionSignatureWithHtml(completionChunks),
|
||||||
QStringLiteral("Foo<int> Function(char x)"));
|
QStringLiteral("Foo<int> Function(char x)"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -211,7 +213,7 @@ TEST_F(CompletionChunksToTextConverter, ConvertToFunctionSignatureWithTemplateAr
|
|||||||
|
|
||||||
using ClangCodeModel::Internal::CompletionChunksToTextConverter;
|
using ClangCodeModel::Internal::CompletionChunksToTextConverter;
|
||||||
|
|
||||||
ASSERT_THAT(CompletionChunksToTextConverter::convertToFunctionSignature(completionChunks),
|
ASSERT_THAT(CompletionChunksToTextConverter::convertToFunctionSignatureWithHtml(completionChunks),
|
||||||
QStringLiteral("int Function(const Foo<int> &foo)"));
|
QStringLiteral("int Function(const Foo<int> &foo)"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -227,7 +229,7 @@ TEST_F(CompletionChunksToTextConverter, ConvertFunctionWithOptionalParameter)
|
|||||||
optionalFunctionArgumentZ,
|
optionalFunctionArgumentZ,
|
||||||
rightParen});
|
rightParen});
|
||||||
|
|
||||||
ASSERT_THAT(Converter::convertToToolTip(completionChunks),
|
ASSERT_THAT(Converter::convertToToolTipWithHtml(completionChunks),
|
||||||
QStringLiteral("int Function (char x<i>, int y, int z</i>)"));
|
QStringLiteral("int Function (char x<i>, int y, int z</i>)"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -269,7 +271,7 @@ TEST_F(CompletionChunksToTextConverter, Switch)
|
|||||||
leftBrace,
|
leftBrace,
|
||||||
verticalSpace,
|
verticalSpace,
|
||||||
rightBrace});
|
rightBrace});
|
||||||
setupConverterForKeywords();
|
converter.setupForKeywords();
|
||||||
|
|
||||||
converter.parseChunks(completionChunks);
|
converter.parseChunks(completionChunks);
|
||||||
|
|
||||||
@@ -292,7 +294,7 @@ TEST_F(CompletionChunksToTextConverter, For)
|
|||||||
statements,
|
statements,
|
||||||
verticalSpace,
|
verticalSpace,
|
||||||
rightBrace});
|
rightBrace});
|
||||||
setupConverterForKeywords();
|
converter.setupForKeywords();
|
||||||
|
|
||||||
converter.parseChunks(completionChunks);
|
converter.parseChunks(completionChunks);
|
||||||
|
|
||||||
@@ -306,11 +308,11 @@ TEST_F(CompletionChunksToTextConverter, const_cast)
|
|||||||
rightAngle,
|
rightAngle,
|
||||||
leftParen,
|
leftParen,
|
||||||
rightParen});
|
rightParen});
|
||||||
setupConverterForKeywords();
|
converter.setupForKeywords();
|
||||||
|
|
||||||
converter.parseChunks(completionChunks);
|
converter.parseChunks(completionChunks);
|
||||||
|
|
||||||
ASSERT_THAT(converter.text(), QStringLiteral("const_cast<>()"));
|
ASSERT_THAT(converter.text(), QStringLiteral("const_cast<>()"));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(CompletionChunksToTextConverter, Throw)
|
TEST_F(CompletionChunksToTextConverter, Throw)
|
||||||
@@ -333,7 +335,7 @@ TEST_F(CompletionChunksToTextConverter, ElseIf)
|
|||||||
statements,
|
statements,
|
||||||
verticalSpace,
|
verticalSpace,
|
||||||
rightBrace});
|
rightBrace});
|
||||||
setupConverterForKeywords();
|
converter.setupForKeywords();
|
||||||
|
|
||||||
converter.parseChunks(completionChunks);
|
converter.parseChunks(completionChunks);
|
||||||
|
|
||||||
@@ -348,17 +350,20 @@ TEST_F(CompletionChunksToTextConverter, EnableIfT)
|
|||||||
optionalComma,
|
optionalComma,
|
||||||
optionalEnableIfTType,
|
optionalEnableIfTType,
|
||||||
rightAngle});
|
rightAngle});
|
||||||
setupConverterForKeywords();
|
converter.setupForKeywords();
|
||||||
|
|
||||||
converter.parseChunks(completionChunks);
|
converter.parseChunks(completionChunks);
|
||||||
|
|
||||||
ASSERT_THAT(converter.text(), QStringLiteral("enable_if_t<>"));
|
ASSERT_THAT(converter.text(), QStringLiteral("enable_if_t<>"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void CompletionChunksToTextConverter::setupConverterForKeywords()
|
TEST_F(CompletionChunksToTextConverter, Namespace)
|
||||||
{
|
{
|
||||||
converter.setAddPlaceHolderPositions(true);
|
CodeCompletionChunks completionChunks({namespaceName, colonColonText});
|
||||||
converter.setAddSpaces(true);
|
|
||||||
converter.setAddExtraVerticalSpaceBetweenBraces(true);
|
converter.parseChunks(completionChunks);
|
||||||
|
|
||||||
|
ASSERT_THAT(converter.text(), QStringLiteral("Namespace::"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user