[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdevplatform
From: David Nolden <david.nolden.kde () art-master ! de>
Date: 2009-05-20 0:48:22
Message-ID: 1242780502.790330.20424.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 970316 by zwabel:
Show a "Show Documentation" context menu entry for declarations that have \
documentation available.
M +4 -1 interfaces/idocumentationcontroller.h
M +42 -0 shell/documentationcontroller.cpp
M +7 -1 shell/documentationcontroller.h
M +2 -0 shell/plugincontroller.cpp
--- trunk/KDE/kdevplatform/interfaces/idocumentationcontroller.h #970315:970316
@@ -22,7 +22,8 @@
#include <interfaces/idocumentation.h>
namespace KDevelop {
-
+class Context;
+class ContextMenuExtension;
class Declaration;
/**
@@ -41,6 +42,8 @@
/** Show the documentation specified by @p doc. */
virtual void showDocumentation(KSharedPtr< KDevelop::IDocumentation > \
doc)=0; +
+ virtual ContextMenuExtension contextMenuExtension( Context* context ) = 0;
};
}
--- trunk/KDE/kdevplatform/shell/documentationcontroller.cpp #970315:970316
@@ -26,8 +26,13 @@
#include <sublime/view.h>
#include <KDebug>
+#include <QAction>
#include "documentationview.h"
+#include <language/interfaces/codecontext.h>
+#include <interfaces/contextmenuextension.h>
+#include <language/duchain/duchain.h>
+#include <language/duchain/duchainlock.h>
using namespace KDevelop;
@@ -51,6 +56,8 @@
DocumentationController::DocumentationController(Core* core)
: m_factory(new DocumentationViewFactory)
{
+ m_showDocumentation = new QAction(i18n("Show Documentation"), this);
+ connect(m_showDocumentation, SIGNAL(triggered(bool)), \
SLOT(doShowDocumentation())); }
void DocumentationController::initialize()
@@ -60,6 +67,39 @@
}
}
+
+void KDevelop::DocumentationController::doShowDocumentation()
+{
+ KSharedPtr< IDocumentation > doc = \
m_showDocumentation->data().value<KSharedPtr<KDevelop::IDocumentation> >(); + \
if(doc) + showDocumentation(doc);
+}
+
+
+Q_DECLARE_METATYPE(KSharedPtr<KDevelop::IDocumentation>);
+
+KDevelop::ContextMenuExtension \
KDevelop::DocumentationController::contextMenuExtension ( Context* context ) +{
+ ContextMenuExtension menuExt;
+
+ qRegisterMetaType<KSharedPtr<KDevelop::IDocumentation> \
>("KSharedPtr<KDevelop::IDocumentation>"); +
+ DeclarationContext* ctx = dynamic_cast<DeclarationContext*>(context);
+ if(ctx) {
+ DUChainReadLocker lock(DUChain::lock());
+ if(!ctx->declaration().data())
+ return menuExt;
+
+ KSharedPtr< IDocumentation > doc = \
documentationForDeclaration(ctx->declaration().data()); + if(doc) {
+ m_showDocumentation->setData(QVariant::fromValue(doc));
+ menuExt.addAction(ContextMenuExtension::ExtensionGroup, \
m_showDocumentation);; + }
+ }
+
+ return menuExt;
+}
+
KSharedPtr< KDevelop::IDocumentation > \
DocumentationController::documentationForDeclaration(Declaration* decl) {
QList<IPlugin*> \
m_plugins=ICore::self()->pluginController()->allPluginsForExtension(IDocumentationProvider_iid);
@@ -95,3 +135,5 @@
Q_ASSERT(view);
view->showDocumentation(doc);
}
+
+#include "documentationcontroller.moc"
--- trunk/KDE/kdevplatform/shell/documentationcontroller.h #970315:970316
@@ -23,6 +23,7 @@
#include <QObject>
class DocumentationViewFactory;
+class QAction;
namespace KDevelop
{
@@ -30,7 +31,7 @@
class DocumentationController : public QObject, public \
KDevelop::IDocumentationController {
- Q_OBJECT
+ Q_OBJECT
public:
DocumentationController(Core* core);
@@ -38,9 +39,14 @@
virtual KSharedPtr< KDevelop::IDocumentation > \
documentationForDeclaration(KDevelop::Declaration* declaration);
virtual void showDocumentation(KSharedPtr< KDevelop::IDocumentation > doc);
+ virtual ContextMenuExtension contextMenuExtension( Context* context );
+ private slots:
+ void doShowDocumentation();
private:
DocumentationViewFactory* m_factory;
+
+ QAction* m_showDocumentation;
};
}
--- trunk/KDE/kdevplatform/shell/plugincontroller.cpp #970315:970316
@@ -55,6 +55,7 @@
#include "mainwindow.h"
#include "core.h"
#include "shellextension.h"
+#include <interfaces/idocumentationcontroller.h>
namespace KDevelop
{
@@ -581,6 +582,7 @@
exts << plug->contextMenuExtension( context );
}
exts << ICore::self()->debugController()->contextMenuExtension( context );
+ exts << ICore::self()->documentationController()->contextMenuExtension( context \
); return exts;
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic