From 4116fac052b9b6f7963b4acf2721a24075692454 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 12 Dec 2004 11:12:25 +0000 Subject: [PATCH] cross-reference types in the generated docs (patch 1038083) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30946 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/changes.txt | 1 + docs/latex/wx/tex2rtf.ini | 2 +- utils/tex2rtf/src/htmlutil.cpp | 109 ++++++++++++++++++++++++++------- 3 files changed, 90 insertions(+), 22 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index a65d67661c..9e9ab3b87c 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -8,6 +8,7 @@ wxWidgets 2.5 Change Log - For more verbose changes, see the manual All: - new classes for reading and writing ZIP files (M.J.Wetherell) +- classes in the manual are now cross-referenced (Zbigniew Zagórski) - Norwegian (Bokmål) translation added (Hans F. Nordhaug) - wxDynamicLibrary::HasSymbol() added - added wxTextInputStream::operator>>(wchar_t) for compilers which support this diff --git a/docs/latex/wx/tex2rtf.ini b/docs/latex/wx/tex2rtf.ini index 24f3523a64..03f2be4974 100644 --- a/docs/latex/wx/tex2rtf.ini +++ b/docs/latex/wx/tex2rtf.ini @@ -45,7 +45,7 @@ ignoreInput = "ltx.tex" \docparam [2]{\parskip{0}{\it #1}\htmlignore{\par}\parskip{10}\indented{1cm}{#2}} \wxheading [1]{{\bf \htmlignore{\fcol{blue}{#1}}\htmlonly{\fcol{red}{#1}}}} \const [0] {{\bf const}} -\constfunc [3] {{\bf #1} {\bf #2}(#3) {\bf const}\index{#2}} +\constfunc [3] {\func{#1}{#2}{#3} {\bf const}\index{#2}} \windowstyle [1] {{\bf #1}\index{#1}} \bftt [1] {\bf{\tt{#1}}} \pythonnote [1] {{\bf \fcol{blue}{wxPython note:}} #1} diff --git a/utils/tex2rtf/src/htmlutil.cpp b/utils/tex2rtf/src/htmlutil.cpp index 7931b51e5a..ec8fdfb658 100644 --- a/utils/tex2rtf/src/htmlutil.cpp +++ b/utils/tex2rtf/src/htmlutil.cpp @@ -29,7 +29,7 @@ #include "tex2any.h" #include "tex2rtf.h" #include "table.h" - +#include #define HTML_FILENAME_PATTERN _T("%s_%s.html") #if !WXWIN_COMPATIBILITY_2_4 @@ -1801,7 +1801,74 @@ void HTMLOnMacro(int macroId, int no_args, bool start) break; } } +/* CheckTypeRef() + should be called at of argument which usually is + type declaration which propably contains name of + documented class + + examples: + HTMLOnArgument + - ltFUNC, + - ltPARAM + - ltCPARAM + + checks: GetArgData() if contains Type Declaration + and can be referenced to some file + prints: + beforetypeafter + + returns: + false - if no reference was found + true - if reference was found and HREF printed +*/ +static bool CheckTypeRef() +{ + wxString typeDecl = GetArgData(); + if( !typeDecl.IsEmpty() ) { + typeDecl.Replace(wxT("\\"),wxT("")); + wxString label = typeDecl; + label.Replace(wxT("const"),wxT("")); + label.Replace(wxT("virtual"),wxT("")); + label.Replace(wxT("static"),wxT("")); + label.Replace(wxT("extern"),wxT("")); + label = label.BeforeFirst('&'); + label = label.BeforeFirst(wxT('*')); + label = label.BeforeFirst(wxT('\\')); + label.Trim(true); label.Trim(false); + wxString typeName = label; + label.MakeLower(); + TexRef *texRef = FindReference((wxChar*)label.c_str()); + + if (texRef && texRef->refFile && wxStrcmp(texRef->refFile, _T("??")) != 0) { + int a = typeDecl.Find(typeName); + wxString before = typeDecl.Mid( 0, a ); + wxString after = typeDecl.Mid( a+typeName.Length() ); + //wxFprintf(stderr,wxT("%s <%s> %s to ... %s#%s !!!!\n"), + // before.c_str(), + // typeName.c_str(), + // after.c_str(), + // texRef->refFile,label.c_str()); + TexOutput(before); + TexOutput(_T("refFile); + TexOutput(_T("#")); + TexOutput(label); + TexOutput(wxT("\">")); + TexOutput(typeName); + TexOutput(wxT("")); + TexOutput(after); + return true; + } else { + //wxFprintf(stderr,wxT("'%s' from (%s) -> label %s NOT FOUND\n"), + // typeName.c_str(), + // typeDecl.c_str(), + // label.c_str()); + return false; + } + } + return false; +} // Called on start/end of argument examination bool HTMLOnArgument(int macroId, int arg_no, bool start) { @@ -1827,8 +1894,13 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start) } case ltFUNC: { - if (start && (arg_no == 1)) + if (start && (arg_no == 1)) { TexOutput(_T("")); + if( CheckTypeRef() ) { + TexOutput(_T(" ")); + return false; + } + } if (!start && (arg_no == 1)) TexOutput(_T(" ")); @@ -1889,27 +1961,21 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start) break; } case ltPARAM: - { - if (start && (arg_no == 1)) - TexOutput(_T("")); - if (!start && (arg_no == 1)) - TexOutput(_T("")); - if (start && (arg_no == 2)) - { - TexOutput(_T("")); - } - if (!start && (arg_no == 2)) - { - TexOutput(_T("")); - } - break; - } case ltCPARAM: { - if (start && (arg_no == 1)) - TexOutput(_T("")); - if (!start && (arg_no == 1)) - TexOutput(_T(" ")); // This is the difference from param - one space! + const wxChar* pend = macroId == ltCPARAM ? + _T(" ") : _T(""); + if( arg_no == 1) { + if( start ) { + TexOutput(_T("")); + if( CheckTypeRef() ) { + TexOutput(pend); + return false; + } + } else { + TexOutput(pend); + } + } if (start && (arg_no == 2)) { TexOutput(_T("")); @@ -1980,6 +2046,7 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start) } break; } + case ltHELPREF: case ltHELPREFN: case ltPOPREF: