1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
/*
SPDX-FileCopyrightText: 2008 Niko Sams <niko.sams@gmail.com>
SPDX-License-Identifier: LGPL-2.0-only
*/
#include "phpducontext.h"
#include <language/duchain/topducontext.h>
#include <language/duchain/duchainregister.h>
#include <language/duchain/topducontextdata.h>
#include <language/util/includeitem.h>
#include <KIO/Global>
#include "navigation/navigationwidget.h"
namespace Php
{
using namespace KDevelop;
typedef PhpDUContext<TopDUContext> PhpTopDUContext;
REGISTER_DUCHAIN_ITEM_WITH_DATA(PhpTopDUContext, TopDUContextData);
typedef PhpDUContext<DUContext> PhpNormalDUContext;
REGISTER_DUCHAIN_ITEM_WITH_DATA(PhpNormalDUContext, DUContextData);
template<>
KDevelop::AbstractNavigationWidget* PhpDUContext<TopDUContext>::createNavigationWidget(Declaration* decl, TopDUContext* topContext, KDevelop::AbstractNavigationWidget::DisplayHints hints) const
{
if (decl == nullptr) {
return nullptr;
} else if ( decl->kind() == Declaration::Import ) {
QUrl u( decl->identifier().toString() );
IncludeItem i;
i.pathNumber = -1;
i.name = u.fileName();
i.isDirectory = false;
i.basePath = KIO::upUrl(u);
return new NavigationWidget( i, TopDUContextPointer(topContext), hints );
} else {
return new NavigationWidget(DeclarationPointer(decl), TopDUContextPointer(topContext ? topContext : this->topContext()), hints);
}
}
template<>
KDevelop::AbstractNavigationWidget* PhpDUContext<DUContext>::createNavigationWidget(Declaration* decl, TopDUContext* topContext, KDevelop::AbstractNavigationWidget::DisplayHints hints) const
{
if (decl == nullptr) {
if (owner())
return new NavigationWidget(DeclarationPointer(owner()), TopDUContextPointer(topContext ? topContext : this->topContext()), hints);
else
return nullptr;
} else {
return new NavigationWidget(DeclarationPointer(decl), TopDUContextPointer(topContext ? topContext : this->topContext()), hints);
}
}
}
|