diff options
author | Dimitri van Heesch <dimitri@stack.nl> | 2013-06-24 21:52:06 (GMT) |
---|---|---|
committer | Dimitri van Heesch <dimitri@stack.nl> | 2013-07-02 11:52:40 (GMT) |
commit | dbd559269be1a10cf67ba9e7e92c99fe3c35a217 (patch) | |
tree | 1a0b8fcbe9b3820eea5204547f060765397f56be /src/pycode.l | |
parent | 4f520b36a54c8ef645dd346d0959b07ffe6deecb (diff) | |
download | Doxygen-dbd559269be1a10cf67ba9e7e92c99fe3c35a217.zip Doxygen-dbd559269be1a10cf67ba9e7e92c99fe3c35a217.tar.gz Doxygen-dbd559269be1a10cf67ba9e7e92c99fe3c35a217.tar.bz2 |
Added SOURCE_TOOLTIPS option for advanced tooltip support while source browsing
Diffstat (limited to 'src/pycode.l')
-rw-r--r-- | src/pycode.l | 42 |
1 files changed, 24 insertions, 18 deletions
diff --git a/src/pycode.l b/src/pycode.l index c87f5bb..36d8d35 100644 --- a/src/pycode.l +++ b/src/pycode.l @@ -42,6 +42,7 @@ #include "classlist.h" #include "filedef.h" #include "namespacedef.h" +#include "tooltip.h" // Toggle for some debugging info //#define DBG_CTX(x) fprintf x @@ -429,10 +430,19 @@ static void nextCodeLine() * split into multiple links with the same destination, one for each line. */ static void writeMultiLineCodeLink(CodeOutputInterface &ol, - const char *ref,const char *file, - const char *anchor,const char *text, - const char *tooltip) + Definition *d, + const char *text) { + static bool sourceTooltips = Config_getBool("SOURCE_TOOLTIPS"); + TooltipManager::instance()->addTooltip(d); + QCString ref = d->getReference(); + QCString file = d->getOutputFileBase(); + QCString anchor = d->anchor(); + QCString tooltip; + if (!sourceTooltips) // fall back to simple "title" tooltips + { + tooltip = d->briefDescriptionAsTooltip(); + } bool done=FALSE; char *p=(char *)text; while (!done) @@ -549,11 +559,7 @@ static bool getLinkInScope(const QCString &c, // scope } //printf("d->getReference()=`%s' d->getOutputBase()=`%s' name=`%s' member name=`%s'\n",d->getReference().data(),d->getOutputFileBase().data(),d->name().data(),md->name().data()); - writeMultiLineCodeLink(ol,md->getReference(), - md->getOutputFileBase(), - md->anchor(), - text ? text : memberText, - md->briefDescriptionAsTooltip()); + writeMultiLineCodeLink(ol,md, text ? text : memberText); addToSearchIndex(text ? text : memberText); return TRUE; } @@ -617,7 +623,7 @@ static void generateClassOrGlobalLink(CodeOutputInterface &ol,char *clName, NamespaceDef *nd = getResolvedNamespace(scope); if (nd) { - writeMultiLineCodeLink(ol,nd->getReference(),nd->getOutputFileBase(),nd->anchor(),clName,nd->briefDescriptionAsTooltip()); + writeMultiLineCodeLink(ol,nd,clName); addToSearchIndex(className); return; } @@ -639,7 +645,7 @@ static void generateClassOrGlobalLink(CodeOutputInterface &ol,char *clName, if (cd && cd->isLinkable()) // is it a linkable class { - writeMultiLineCodeLink(ol,cd->getReference(),cd->getOutputFileBase(),cd->anchor(),clName,cd->briefDescriptionAsTooltip()); + writeMultiLineCodeLink(ol,cd,clName); addToSearchIndex(className); if (md) { @@ -667,7 +673,7 @@ static void generateClassOrGlobalLink(CodeOutputInterface &ol,char *clName, if (md) { g_theCallContext.setClass(stripClassName(md->typeString(),md->getOuterScope())); - writeMultiLineCodeLink(ol,md->getReference(),md->getOutputFileBase(),md->anchor(),clName,md->briefDescriptionAsTooltip()); + writeMultiLineCodeLink(ol,md,clName); addToSearchIndex(className); Definition *d = md->getOuterScope()==Doxygen::globalScope ? md->getBodyDef() : md->getOuterScope(); @@ -689,7 +695,7 @@ static void generateClassOrGlobalLink(CodeOutputInterface &ol,char *clName, { //printf("name=%s scope=%s\n",locName.data(),scope.data()); g_theCallContext.setClass(stripClassName(md->typeString(),md->getOuterScope())); - writeMultiLineCodeLink(ol,md->getReference(),md->getOutputFileBase(),md->anchor(),clName,md->briefDescriptionAsTooltip()); + writeMultiLineCodeLink(ol,md,clName); addToSearchIndex(className); Definition *d = md->getOuterScope()==Doxygen::globalScope ? md->getBodyDef() : md->getOuterScope(); @@ -765,7 +771,6 @@ static bool findMemberLink(CodeOutputInterface &ol,Definition *sym,const char *s { ClassDef *cd = (ClassDef*)sym->getOuterScope(); ClassDef *thisCd = (ClassDef *)g_currentDefinition; - QCString anchor=sym->anchor(); if (sym->definitionType()==Definition::TypeMember) { if (g_currentMemberDef) @@ -779,11 +784,7 @@ static bool findMemberLink(CodeOutputInterface &ol,Definition *sym,const char *s // thisCd if (cd==thisCd || (thisCd && thisCd->isBaseClass(cd,TRUE))) { - writeMultiLineCodeLink(ol,sym->getReference(), - sym->getOutputFileBase(), - anchor, - symName, - sym->briefDescriptionAsTooltip()); + writeMultiLineCodeLink(ol,sym,symName); return TRUE; } } @@ -1458,6 +1459,7 @@ void parsePythonCode(CodeOutputInterface &od,const char * /*className*/, //-------------------------------------- if (s.isEmpty()) return; + TooltipManager::instance()->clearTooltips(); g_code = &od; g_inputString = s; g_inputPosition = 0; @@ -1506,6 +1508,10 @@ void parsePythonCode(CodeOutputInterface &od,const char * /*className*/, { endCodeLine(); } + if (fd) + { + TooltipManager::instance()->writeTooltips(*g_code); + } if (cleanupSourceDef) { // delete the temporary file definition used for this example |