GlslEditor: Simplify completion proposal setup

Change-Id: I6d103eb6471687b1fe18e88a9f2cca375eeed6cd
Reviewed-by: Christian Stenger <christian.stenger@digia.com>
This commit is contained in:
hjk
2014-09-14 21:16:28 +02:00
parent 78a04f0a6d
commit fdc982358e
2 changed files with 15 additions and 18 deletions

View File

@@ -242,6 +242,15 @@ GlslCompletionAssistProcessor::GlslCompletionAssistProcessor()
GlslCompletionAssistProcessor::~GlslCompletionAssistProcessor() GlslCompletionAssistProcessor::~GlslCompletionAssistProcessor()
{} {}
static AssistProposalItem *createCompletionItem(const QString &text, const QIcon &icon, int order = 0)
{
AssistProposalItem *item = new AssistProposalItem;
item->setText(text);
item->setIcon(icon);
item->setOrder(order);
return item;
}
IAssistProposal *GlslCompletionAssistProcessor::perform(const AssistInterface *interface) IAssistProposal *GlslCompletionAssistProcessor::perform(const AssistInterface *interface)
{ {
m_interface.reset(static_cast<const GlslCompletionAssistInterface *>(interface)); m_interface.reset(static_cast<const GlslCompletionAssistInterface *>(interface));
@@ -259,6 +268,7 @@ IAssistProposal *GlslCompletionAssistProcessor::perform(const AssistInterface *i
QList<GLSL::Symbol *> members; QList<GLSL::Symbol *> members;
QStringList specialMembers; QStringList specialMembers;
QList<TextEditor::AssistProposalItem *> m_completions;
bool functionCall = (ch == QLatin1Char('(') && pos == m_interface->position() - 1); bool functionCall = (ch == QLatin1Char('(') && pos == m_interface->position() - 1);
@@ -379,9 +389,9 @@ IAssistProposal *GlslCompletionAssistProcessor::perform(const AssistInterface *i
0 0
}; };
for (int index = 0; attributeNames[index]; ++index) for (int index = 0; attributeNames[index]; ++index)
addCompletion(QString::fromLatin1(attributeNames[index]), m_attributeIcon); m_completions << createCompletionItem(QString::fromLatin1(attributeNames[index]), m_attributeIcon);
for (int index = 0; uniformNames[index]; ++index) for (int index = 0; uniformNames[index]; ++index)
addCompletion(QString::fromLatin1(uniformNames[index]), m_uniformIcon); m_completions << createCompletionItem(QString::fromLatin1(uniformNames[index]), m_uniformIcon);
} }
} }
@@ -389,7 +399,7 @@ IAssistProposal *GlslCompletionAssistProcessor::perform(const AssistInterface *i
QStringList keywords = GLSL::Lexer::keywords(languageVariant(m_interface->mimeType())); QStringList keywords = GLSL::Lexer::keywords(languageVariant(m_interface->mimeType()));
// m_keywordCompletions.clear(); // m_keywordCompletions.clear();
for (int index = 0; index < keywords.size(); ++index) for (int index = 0; index < keywords.size(); ++index)
addCompletion(keywords.at(index), m_keywordIcon); m_completions << createCompletionItem(keywords.at(index), m_keywordIcon);
// m_keywordVariant = languageVariant(m_interface->mimeType()); // m_keywordVariant = languageVariant(m_interface->mimeType());
// } // }
@@ -421,9 +431,9 @@ IAssistProposal *GlslCompletionAssistProcessor::perform(const AssistInterface *i
icon = m_otherIcon; icon = m_otherIcon;
} }
if (specialMembers.contains(s->name())) if (specialMembers.contains(s->name()))
addCompletion(s->name(), icon, SpecialMemberOrder); m_completions << createCompletionItem(s->name(), icon, SpecialMemberOrder);
else else
addCompletion(s->name(), icon); m_completions << createCompletionItem(s->name(), icon);
} }
m_startPosition = pos + 1; m_startPosition = pos + 1;
@@ -469,17 +479,6 @@ bool GlslCompletionAssistProcessor::acceptsIdleEditor() const
return isActivationChar(ch); return isActivationChar(ch);
} }
void GlslCompletionAssistProcessor::addCompletion(const QString &text,
const QIcon &icon,
int order)
{
AssistProposalItem *item = new AssistProposalItem;
item->setText(text);
item->setIcon(icon);
item->setOrder(order);
m_completions.append(item);
}
// ----------------------------- // -----------------------------
// GlslCompletionAssistInterface // GlslCompletionAssistInterface
// ----------------------------- // -----------------------------

View File

@@ -109,11 +109,9 @@ public:
private: private:
TextEditor::IAssistProposal *createHintProposal(const QVector<GLSL::Function *> &symbols); TextEditor::IAssistProposal *createHintProposal(const QVector<GLSL::Function *> &symbols);
bool acceptsIdleEditor() const; bool acceptsIdleEditor() const;
void addCompletion(const QString &text, const QIcon &icon, int order = 0);
int m_startPosition; int m_startPosition;
QScopedPointer<const GlslCompletionAssistInterface> m_interface; QScopedPointer<const GlslCompletionAssistInterface> m_interface;
QList<TextEditor::AssistProposalItem *> m_completions;
QIcon m_keywordIcon; QIcon m_keywordIcon;
QIcon m_varIcon; QIcon m_varIcon;