{
}
-QStringList Block::members() const
+QList<Symbol *> Block::members() const
{
- return _members.keys();
+ return _members.values();
}
void Block::add(Symbol *symbol)
qDeleteAll(_overloadSets);
}
-QStringList Namespace::members() const
+QList<Symbol *> Namespace::members() const
{
- return _members.keys();
+ return _members.values();
}
void Namespace::add(Symbol *symbol)
} else if (Function *firstFunction = sym->asFunction()) {
OverloadSet *o = new OverloadSet(this);
_overloadSets.append(o);
+ o->setName(symbol->name());
o->addFunction(firstFunction);
o->addFunction(fun);
sym = o;
const Type *elementType() const { return indexElementType(); }
int dimension() const { return _dimension; }
- QStringList members() const { return _members.keys(); }
+ QList<Symbol *> members() const { return _members.values(); }
virtual void add(Symbol *symbol);
virtual Symbol *find(const QString &name) const;
Struct(Scope *scope = 0)
: Scope(scope) {}
- QStringList members() const;
+ QList<Symbol *> members() const;
virtual void add(Symbol *member);
virtual Symbol *find(const QString &name) const;
virtual Symbol *find(const QString &name) const;
- virtual QStringList members() const;
+ virtual QList<Symbol *> members() const;
virtual void add(Symbol *symbol) {
if (! symbol)
return;
return false;
}
-// Temporary workaround until we have proper icons for QML completion items
-static QIcon iconForColor(const QColor &color)
-{
- QPixmap pix(6, 6);
-
- int pixSize = 20;
- QBrush br(color);
-
- QPixmap pm(2 * pixSize, 2 * pixSize);
- QPainter pmp(&pm);
- pmp.fillRect(0, 0, pixSize, pixSize, Qt::lightGray);
- pmp.fillRect(pixSize, pixSize, pixSize, pixSize, Qt::lightGray);
- pmp.fillRect(0, pixSize, pixSize, pixSize, Qt::darkGray);
- pmp.fillRect(pixSize, 0, pixSize, pixSize, Qt::darkGray);
- pmp.fillRect(0, 0, 2 * pixSize, 2 * pixSize, color);
- br = QBrush(pm);
-
- QPainter p(&pix);
- int corr = 1;
- QRect r = pix.rect().adjusted(corr, corr, -corr, -corr);
- p.setBrushOrigin((r.width() % pixSize + pixSize) / 2 + corr, (r.height() % pixSize + pixSize) / 2 + corr);
- p.fillRect(r, br);
-
- p.fillRect(r.width() / 4 + corr, r.height() / 4 + corr,
- r.width() / 2, r.height() / 2,
- QColor(color.rgb()));
- p.drawRect(pix.rect().adjusted(0, 0, -1, -1));
-
- return pix;
-}
-
static const char *glsl_keywords[] =
{ // ### TODO: get the keywords from the lexer
"attribute",
: ICompletionCollector(parent),
m_editor(0),
m_startPosition(-1),
- m_restartCompletion(false)
+ m_restartCompletion(false),
+ m_varIcon(":/glsleditor/images/var.png"),
+ m_functionIcon(":/glsleditor/images/func.png"),
+ m_typeIcon(":/glsleditor/images/type.png"),
+ m_otherIcon(":/glsleditor/images/other.png")
{
- const QIcon keywordIcon = iconForColor(Qt::darkYellow);
+ const QIcon keywordIcon(QLatin1String(":/glsleditor/images/keyword.png"));
for (const char **it = glsl_keywords; *it; ++it) {
TextEditor::CompletionItem item(this);
item.text = QString::fromLatin1(*it);
CPlusPlus::ExpressionUnderCursor expressionUnderCursor;
GLSLTextEditor *edit = qobject_cast<GLSLTextEditor *>(editor->widget());
- const QIcon symbolIcon = iconForColor(Qt::darkCyan);
-
- QStringList members;
+ QList<GLSL::Symbol *> members;
QStringList specialMembers;
bool functionCall = (ch == QLatin1Char('(') && pos == editor->position() - 1);
m_completions += m_keywordCompletions;
}
- foreach (const QString &s, members) {
+ foreach (GLSL::Symbol *s, members) {
TextEditor::CompletionItem item(this);
- item.icon = symbolIcon;
- item.text = s;
- if (specialMembers.contains(s))
+ if (s->asVariable() || s->asArgument())
+ item.icon = m_varIcon;
+ else if (s->asFunction() || s->asOverloadSet())
+ item.icon = m_functionIcon;
+ else if (s->asStruct())
+ item.icon = m_typeIcon;
+ else
+ item.icon = m_otherIcon;
+ item.text = s->name();
+ if (specialMembers.contains(item.text))
item.order = SpecialMemberOrder;
m_completions.append(item);
}