X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/14204c7acc3f89b59b07580da7da3448fb49f23b..07ee782bb86ecf2a7e0b30e53246e4ebb269e3bd:/utils/tex2rtf/src/htmlutil.cpp diff --git a/utils/tex2rtf/src/htmlutil.cpp b/utils/tex2rtf/src/htmlutil.cpp index 654b1d7a14..b384cf9a46 100644 --- a/utils/tex2rtf/src/htmlutil.cpp +++ b/utils/tex2rtf/src/htmlutil.cpp @@ -21,13 +21,20 @@ #endif #ifndef WX_PRECOMP -#include "wx/wx.h" #endif #include "tex2any.h" #include "tex2rtf.h" #include "table.h" +#if !WXWIN_COMPATIBILITY_2_4 +static inline wxChar* copystring(const wxChar* s) + { return wxStrcpy(new wxChar[wxStrlen(s) + 1], s); } +#endif + +extern wxHashTable TexReferences; + + extern void DecToHex(int, char *); void GenerateHTMLIndexFile(char *fname); @@ -76,6 +83,11 @@ static bool inTable = FALSE; // This is defined in the Tex2Any library. extern char *BigBuffer; +// DHS Two-column table dimensions. +static int TwoColWidthA = -1; +static int TwoColWidthB = -1; + + class HyperReference: public wxObject { public: @@ -131,7 +143,7 @@ void SetCurrentChapterName(char *s, char *file) CurrentChapterFile = copystring(file); currentFileName = CurrentChapterFile; - + SetCurrentTopic(s); } void SetCurrentSectionName(char *s, char *file) @@ -172,7 +184,7 @@ void ReopenFile(FILE **fd, char **fileName) { if (*fd) { - fprintf(*fd, "\n\n"); + fprintf(*fd, "\n\n"); fclose(*fd); } fileId ++; @@ -182,7 +194,7 @@ void ReopenFile(FILE **fd, char **fileName) else sprintf(buf, "%s%d.html", FileRoot, fileId); if (*fileName) delete[] *fileName; - *fileName = copystring(FileNameFromPath(buf)); + *fileName = copystring(wxFileNameFromPath(buf)); *fd = fopen(buf, "w"); fprintf(*fd, "\n"); } @@ -225,7 +237,7 @@ void ReopenSectionContentsFile(void) * converting Latex-isms into HTML-isms, such as 2 newlines ->

. * */ - + void ProcessText2HTML(TexChunk *chunk) { bool changed = FALSE; @@ -297,7 +309,7 @@ void ProcessText2HTML(TexChunk *chunk) * and before TraverseDocument is called. * */ - + void Text2HTML(TexChunk *chunk) { Tex2RTFYield(); @@ -374,7 +386,7 @@ void AddBrowseButtons(char *upLabel, char *upFilename, contentsReference = contentsReferenceBuf; sprintf(contentsReference, "\"Contents\"", ConvertCase("contents.gif")); } - + char *upReference = NULL; if (htmlBrowseButtons == HTML_BUTTONS_TEXT) upReference = UpNameString; @@ -384,7 +396,7 @@ void AddBrowseButtons(char *upLabel, char *upFilename, upReference = upReferenceBuf; sprintf(upReference, "\"Up\"", ConvertCase("up.gif")); } - + char *backReference = NULL; if (htmlBrowseButtons == HTML_BUTTONS_TEXT) backReference = "<<"; @@ -394,7 +406,7 @@ void AddBrowseButtons(char *upLabel, char *upFilename, backReference = backReferenceBuf; sprintf(backReference, "\"Previous\"", ConvertCase("back.gif")); } - + char *forwardReference = NULL; if (htmlBrowseButtons == HTML_BUTTONS_TEXT) forwardReference = ">>"; @@ -404,9 +416,9 @@ void AddBrowseButtons(char *upLabel, char *upFilename, forwardReference = forwardReferenceBuf; sprintf(forwardReference, "\"Next\"", ConvertCase("forward.gif")); } - + TexOutput("

"); - + char buf[200]; /* @@ -417,13 +429,13 @@ void AddBrowseButtons(char *upLabel, char *upFilename, if (truncateFilenames) { char buf1[80]; - strcpy(buf1, ConvertCase(FileNameFromPath(FileRoot))); + strcpy(buf1, ConvertCase(wxFileNameFromPath(FileRoot))); sprintf(buf, "\n%s ", buf1, ConvertCase("htm"), contentsReference); } else { char buf1[80]; - strcpy(buf1, ConvertCase(FileNameFromPath(FileRoot))); + strcpy(buf1, ConvertCase(wxFileNameFromPath(FileRoot))); sprintf(buf, "\n%s ", buf1, ConvertCase("_contents.html"), contentsReference); } // TexOutput(""); @@ -556,9 +568,9 @@ char *ParseColourString(char *bkStr, bool *isPicture) int red = atoi(tok1); int green = atoi(tok2); int blue = atoi(tok3); - + strcpy(resStr, "#"); - + char buf[3]; DecToHex(red, buf); strcat(resStr, buf); @@ -574,6 +586,20 @@ char *ParseColourString(char *bkStr, bool *isPicture) else return NULL; } +void OutputFont(void) +{ + // Only output <font face> if explicitly requested by htmlFaceName= directive in + // tex2rtf.ini. Otherwise do NOT set the font because we want to use browser's + // default font: + if (htmlFaceName) + { + // Output <FONT FACE=...> + TexOutput("<FONT FACE=\""); + TexOutput(htmlFaceName); + TexOutput("\">\n"); + } +} + // Output start of <BODY> block void OutputBodyStart(void) { @@ -596,7 +622,7 @@ void OutputBodyStart(void) TexOutput(" BGCOLOR="); TexOutput(s); } } - + // Set foreground text colour, if one is specified if (textColourString) { @@ -628,6 +654,26 @@ void OutputBodyStart(void) } } TexOutput(">\n"); + + OutputFont(); +} + +void HTMLHead() +{ + TexOutput("<head>"); + if (htmlStylesheet) { + TexOutput("<link rel=stylesheet type=\"text/css\" href=\""); + TexOutput(htmlStylesheet); + TexOutput("\">"); + } +}; + +void HTMLHeadTo(FILE* f) +{ + if (htmlStylesheet) + fprintf(f,"<head><link rel=stylesheet type=\"text/css\" href=\"%s\">",htmlStylesheet); + else + fprintf(f,"<head>"); } // Called on start/end of macro examination @@ -660,19 +706,20 @@ void HTMLOnMacro(int macroId, int no_args, bool start) SetCurrentOutput(Chapters); - TexOutput("<head><title>"); + HTMLHead(); + TexOutput("<title>"); OutputCurrentSection(); // Repeat section header TexOutput("</title></head>\n"); OutputBodyStart(); char titleBuf[200]; if (truncateFilenames) - sprintf(titleBuf, "%s.htm", FileNameFromPath(FileRoot)); + sprintf(titleBuf, "%s.htm", wxFileNameFromPath(FileRoot)); else - sprintf(titleBuf, "%s_contents.html", FileNameFromPath(FileRoot)); + sprintf(titleBuf, "%s_contents.html", wxFileNameFromPath(FileRoot)); fprintf(Chapters, "<A NAME=\"%s\"></A>", topicName); - + AddBrowseButtons("", titleBuf, // Up lastTopic, lastFileName, // Last topic topicName, ChaptersName); // This topic @@ -698,8 +745,8 @@ void HTMLOnMacro(int macroId, int no_args, bool start) // Add this section title to the list of keywords if (htmlIndex) { - OutputCurrentSectionToString(wxBuffer); - AddKeyWordForTopic(topicName, wxBuffer, ConvertCase(currentFileName)); + OutputCurrentSectionToString(wxTex2RTFBuffer); + AddKeyWordForTopic(topicName, wxTex2RTFBuffer, ConvertCase(currentFileName)); } } break; @@ -717,7 +764,7 @@ void HTMLOnMacro(int macroId, int no_args, bool start) if (macroId != ltSECTIONSTAR) sectionNo ++; - + SetCurrentOutput(NULL); startedSections = TRUE; @@ -729,7 +776,8 @@ void HTMLOnMacro(int macroId, int no_args, bool start) if (htmlWorkshopFiles) HTMLWorkshopAddToContents(1, topicName, SectionsName); SetCurrentOutput(Sections); - TexOutput("<head><title>"); + HTMLHead(); + TexOutput("<title>"); OutputCurrentSection(); TexOutput("</title></head>\n"); OutputBodyStart(); @@ -760,8 +808,8 @@ void HTMLOnMacro(int macroId, int no_args, bool start) // Add this section title to the list of keywords if (htmlIndex) { - OutputCurrentSectionToString(wxBuffer); - AddKeyWordForTopic(topicName, wxBuffer, currentFileName); + OutputCurrentSectionToString(wxTex2RTFBuffer); + AddKeyWordForTopic(topicName, wxTex2RTFBuffer, currentFileName); } } break; @@ -822,7 +870,8 @@ void HTMLOnMacro(int macroId, int no_args, bool start) if (htmlWorkshopFiles) HTMLWorkshopAddToContents(2, topicName, SubsectionsName); SetCurrentOutput(Subsections); - TexOutput("<head><title>"); + HTMLHead(); + TexOutput("<title>"); OutputCurrentSection(); TexOutput("</title></head>\n"); OutputBodyStart(); @@ -867,8 +916,8 @@ void HTMLOnMacro(int macroId, int no_args, bool start) // Add this section title to the list of keywords if (htmlIndex) { - OutputCurrentSectionToString(wxBuffer); - AddKeyWordForTopic(topicName, wxBuffer, currentFileName); + OutputCurrentSectionToString(wxTex2RTFBuffer); + AddKeyWordForTopic(topicName, wxTex2RTFBuffer, currentFileName); } } @@ -902,7 +951,8 @@ void HTMLOnMacro(int macroId, int no_args, bool start) if (htmlWorkshopFiles) HTMLWorkshopAddToContents(3, topicName, SubsubsectionsName); SetCurrentOutput(Subsubsections); - TexOutput("<head><title>"); + HTMLHead(); + TexOutput("<title>"); OutputCurrentSection(); TexOutput("</title></head>\n"); OutputBodyStart(); @@ -938,15 +988,15 @@ void HTMLOnMacro(int macroId, int no_args, bool start) OutputCurrentSection(); TexOutput("</A><BR>"); */ - if (htmlWorkshopFiles) HTMLWorkshopAddToContents(2, topicName, SectionsName); + if (htmlWorkshopFiles) HTMLWorkshopAddToContents(2, topicName, SectionsName); SetCurrentOutput(Sections); } // Add this section title to the list of keywords if (htmlIndex) { - OutputCurrentSectionToString(wxBuffer); - AddKeyWordForTopic(topicName, wxBuffer, currentFileName); + OutputCurrentSectionToString(wxTex2RTFBuffer); + AddKeyWordForTopic(topicName, wxTex2RTFBuffer, currentFileName); } } } @@ -1018,8 +1068,9 @@ void HTMLOnMacro(int macroId, int no_args, bool start) if (inTabular) { // End cell, start cell - TexOutput("</TD>"); - + + TexOutput("</FONT></TD>"); + // Start new row and cell, setting alignment for the first cell. if (currentColumn < noColumns) currentColumn ++; @@ -1033,7 +1084,7 @@ void HTMLOnMacro(int macroId, int no_args, bool start) { // Convert from points * 20 into pixels. int points = TableData[currentColumn].width / 20; - + // Say the display is 100 DPI (dots/pixels per inch). // There are 72 pts to the inch. So 1pt = 1/72 inch, or 100 * 1/72 dots. int pixels = (int)(points * 100.0 / 72.0); @@ -1042,6 +1093,7 @@ void HTMLOnMacro(int macroId, int no_args, bool start) else sprintf(buf, "\n<TD ALIGN=LEFT>"); TexOutput(buf); + OutputFont(); } else TexOutput("&amp;"); @@ -1070,7 +1122,7 @@ void HTMLOnMacro(int macroId, int no_args, bool start) if (start) { currentColumn = 0; - + // Start new row and cell, setting alignment for the first cell. char buf[100]; if (TableData[currentColumn].justification == 'c') @@ -1081,7 +1133,7 @@ void HTMLOnMacro(int macroId, int no_args, bool start) { // Convert from points * 20 into pixels. int points = TableData[currentColumn].width / 20; - + // Say the display is 100 DPI (dots/pixels per inch). // There are 72 pts to the inch. So 1pt = 1/72 inch, or 100 * 1/72 dots. int pixels = (int)(points * 100.0 / 72.0); @@ -1090,12 +1142,13 @@ void HTMLOnMacro(int macroId, int no_args, bool start) else sprintf(buf, "<TR>\n<TD ALIGN=LEFT>"); TexOutput(buf); + OutputFont(); } else { // End cell and row // Start new row and cell - TexOutput("</TD>\n</TR>\n"); + TexOutput("</FONT></TD>\n</TR>\n"); } break; } @@ -1189,8 +1242,12 @@ void HTMLOnMacro(int macroId, int no_args, bool start) { if ( start ) TexOutput("\n<TABLE>\n"); - else + else { TexOutput("\n</TABLE>\n"); + // DHS + TwoColWidthA = -1; + TwoColWidthB = -1; + } break; } case ltPAR: @@ -1479,7 +1536,7 @@ void HTMLOnMacro(int macroId, int no_args, bool start) if (htmlFrameContents && FrameContents) { SetCurrentOutput(FrameContents); - + // Add a special label for the contents page. TexOutput("<CENTER>\n"); TexOutput("<H3>\n"); @@ -1499,7 +1556,7 @@ void HTMLOnMacro(int macroId, int no_args, bool start) } TexOutput("\n</CENTER>\n"); TexOutput("<P><HR><P>\n"); - + SetCurrentOutput(Titlepage); } */ @@ -1701,7 +1758,7 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start) { if (!suppressNameDecoration) TexOutput("</B>"); } - + if (start && (arg_no == 3)) TexOutput("("); if (!start && (arg_no == 3)) @@ -1793,7 +1850,7 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start) if (start) { char *sec = NULL; - + char *refName = GetArgData(); if (refName) { @@ -1893,7 +1950,11 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start) { if (helpRefText) TraverseChildrenFromChunk(helpRefText); - TexOutput(" (REF NOT FOUND)"); + if (!ignoreBadRefs) + TexOutput(" (REF NOT FOUND)"); + wxString errBuf; + errBuf.Printf("Warning: unresolved reference '%s'", refName); + OnInform((char *)errBuf.c_str()); } } else TexOutput("??"); @@ -1916,11 +1977,11 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start) alignment = " align=left"; else if (macroId == ltIMAGER) alignment = " align=right"; - + // Try to find an XBM or GIF image first. char *filename = copystring(GetArgData()); char buf[500]; - + strcpy(buf, filename); StripExtension(buf); strcat(buf, ".xbm"); @@ -1971,7 +2032,7 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start) { TexOutput("<img src=\""); TexOutput(ConvertCase(wxFileNameFromPath(inlineFilename))); - TexOutput("\""); TexOutput(alignment); TexOutput("></A>"); + TexOutput("\""); TexOutput(alignment); TexOutput(">"); delete[] inlineFilename; } } @@ -1998,7 +2059,7 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start) // Try to find an XBM or GIF image first. char *filename = copystring(GetArgData()); char buf[500]; - + strcpy(buf, filename); StripExtension(buf); strcat(buf, ".xbm"); @@ -2021,7 +2082,7 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start) if (imageFile) delete[] imageFile; imageFile = NULL; - if (f) + if (!f.IsEmpty()) { imageFile = copystring(f); } @@ -2077,6 +2138,7 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start) descriptionItemArg = GetArgChunk(); return FALSE; } + return TRUE; } case ltTWOCOLITEM: case ltTWOCOLITEMRULED: @@ -2089,17 +2151,31 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start) */ if (arg_no == 1) { - if ( start ) - TexOutput("\n<TR><TD VALIGN=TOP>\n"); - else - TexOutput("\n</TD>\n"); + if ( start ) { + // DHS + if (TwoColWidthA > -1) { + char buf[100]; + sprintf(buf,"\n<TR><TD VALIGN=TOP WIDTH=%d>\n",TwoColWidthA); + TexOutput(buf); + } else + TexOutput("\n<TR><TD VALIGN=TOP>\n"); + OutputFont(); + } else + TexOutput("\n</FONT></TD>\n"); } if (arg_no == 2) { - if ( start ) - TexOutput("\n<TD VALIGN=TOP>\n"); - else - TexOutput("\n</TD></TR>\n"); + // DHS + if ( start ) { + if (TwoColWidthB > -1) { + char buf[100]; + sprintf(buf,"\n<TD VALIGN=TOP WIDTH=%d>\n",TwoColWidthB); + TexOutput(buf); + } else + TexOutput("\n<TD VALIGN=TOP>\n"); + OutputFont(); + } else + TexOutput("\n</FONT></TD></TR>\n"); } return TRUE; break; @@ -2153,6 +2229,30 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start) TexOutput("<HR><P>\n"); break; } + // DHS + case ltTWOCOLWIDTHA: + { + if (start) + { + char *val = GetArgData(); + float points = ParseUnitArgument(val); + TwoColWidthA = (int)((points * 100.0) / 72.0); + } + return FALSE; + break; + } + // DHS + case ltTWOCOLWIDTHB: + { + if (start) + { + char *val = GetArgData(); + float points = ParseUnitArgument(val); + TwoColWidthB = (int)((points * 100.0) / 72.0); + } + return FALSE; + break; + } /* * Accents * @@ -2552,7 +2652,7 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start) return FALSE; break; } -*/ +*/ case ltTABULAR: case ltSUPERTABULAR: { @@ -2577,6 +2677,7 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start) if (compatibilityMode) { TexOutput("<TR>\n<TD>"); + OutputFont(); /* for (int i = 0; i < noColumns; i++) { @@ -2613,11 +2714,12 @@ bool HTMLOnArgument(int macroId, int arg_no, bool start) char titleBuf[150]; if (truncateFilenames) - sprintf(titleBuf, "%s.htm", FileNameFromPath(FileRoot)); + sprintf(titleBuf, "%s.htm", wxFileNameFromPath(FileRoot)); else - sprintf(titleBuf, "%s_contents.html", FileNameFromPath(FileRoot)); + sprintf(titleBuf, "%s_contents.html", wxFileNameFromPath(FileRoot)); - TexOutput("<head><title>"); + HTMLHead(); + TexOutput("<title>"); TexOutput(ReferencesNameString); TexOutput("</title></head>\n"); OutputBodyStart(); @@ -2801,7 +2903,7 @@ bool HTMLGo(void) if (TitlepageName) delete[] TitlepageName; TitlepageName = copystring(buf); Titlepage = fopen(buf, "w"); - + if (truncateFilenames) sprintf(buf, "%s_fc.htm", FileRoot); else @@ -2823,7 +2925,7 @@ bool HTMLGo(void) OnError("Cannot open output file!"); return FALSE; } - AddTexRef("contents", FileNameFromPath(TitlepageName), ContentsNameString); + AddTexRef("contents", wxFileNameFromPath(TitlepageName), ContentsNameString); fprintf(Contents, "<P><P><H2>%s</H2><P><P>\n", ContentsNameString); @@ -2856,25 +2958,25 @@ bool HTMLGo(void) if (Chapters) { - fprintf(Chapters, "\n</BODY></HTML>\n"); + fprintf(Chapters, "\n</FONT></BODY></HTML>\n"); fclose(Chapters); Chapters = NULL; } if (Sections) { - fprintf(Sections, "\n</BODY></HTML>\n"); + fprintf(Sections, "\n</FONT></BODY></HTML>\n"); fclose(Sections); Sections = NULL; } if (Subsections && !combineSubSections) { - fprintf(Subsections, "\n</BODY></HTML>\n"); + fprintf(Subsections, "\n</FONT></BODY></HTML>\n"); fclose(Subsections); Subsections = NULL; } if (Subsubsections && !combineSubSections) { - fprintf(Subsubsections, "\n</BODY></HTML>\n"); + fprintf(Subsubsections, "\n</FONT></BODY></HTML>\n"); fclose(Subsubsections); Subsubsections = NULL; } @@ -2895,19 +2997,21 @@ bool HTMLGo(void) if (DocumentTitle) { SetCurrentOutput(tmpTitle); - TexOutput("\n<HTML>\n<HEAD><TITLE>"); + HTMLHead(); + TexOutput("\n<HEAD><TITLE>"); TraverseChildrenFromChunk(DocumentTitle); TexOutput("</TITLE></HEAD>\n"); } else { SetCurrentOutput(tmpTitle); + HTMLHeadTo(tmpTitle); if (contentsString) - fprintf(tmpTitle, "<HEAD><TITLE>%s</TITLE></HEAD>\n\n", contentsString); + fprintf(tmpTitle, "<TITLE>%s</TITLE></HEAD>\n\n", contentsString); else - fprintf(tmpTitle, "<HEAD><TITLE>%s</TITLE></HEAD>\n\n", FileNameFromPath(FileRoot)); + fprintf(tmpTitle, "<TITLE>%s</TITLE></HEAD>\n\n", wxFileNameFromPath(FileRoot)); } - + // Output frame information if (htmlFrameContents) { @@ -2919,16 +3023,16 @@ bool HTMLGo(void) fprintf(tmpTitle, "<FRAMESET COLS=\"30%%,70%%\">\n"); - fprintf(tmpTitle, "<FRAME SRC=\"%s\">\n", ConvertCase(FileNameFromPath(contentsFrameName))); - fprintf(tmpTitle, "<FRAME SRC=\"%s\" NAME=\"mainwindow\">\n", ConvertCase(FileNameFromPath(firstFileName))); + fprintf(tmpTitle, "<FRAME SRC=\"%s\">\n", ConvertCase(wxFileNameFromPath(contentsFrameName))); + fprintf(tmpTitle, "<FRAME SRC=\"%s\" NAME=\"mainwindow\">\n", ConvertCase(wxFileNameFromPath(firstFileName))); fprintf(tmpTitle, "</FRAMESET>\n"); - + fprintf(tmpTitle, "<NOFRAMES>\n"); } // Output <BODY...> to temporary title page OutputBodyStart(); - + // Concat titlepage FILE *fd = fopen(TitlepageName, "r"); if (fd) @@ -2942,7 +3046,7 @@ bool HTMLGo(void) fclose(fd); } - fprintf(tmpTitle, "\n</BODY>\n"); + fprintf(tmpTitle, "\n</FONT></BODY>\n"); if (htmlFrameContents) { @@ -2951,7 +3055,7 @@ bool HTMLGo(void) fprintf(tmpTitle, "\n</HTML>\n"); fclose(tmpTitle); - if (FileExists(TitlepageName)) wxRemoveFile(TitlepageName); + if (wxFileExists(TitlepageName)) wxRemoveFile(TitlepageName); if (!wxRenameFile("title.tmp", TitlepageName)) { wxCopyFile("title.tmp", TitlepageName); @@ -2964,7 +3068,7 @@ bool HTMLGo(void) if (lastTopic) delete[] lastTopic; lastTopic = NULL; - if (FileExists(ContentsName)) wxRemoveFile(ContentsName); + if (wxFileExists(ContentsName)) wxRemoveFile(ContentsName); if (!wxRenameFile(TmpContentsName, ContentsName)) { @@ -3039,31 +3143,44 @@ void GenerateHTMLWorkshopFiles(char *fname) sprintf(buf, "%s.hhp", fname); f = fopen(buf, "wt"); - fprintf(f, + fprintf(f, "[OPTIONS]\n" - "Compatibility=1.1 or later\n" + "Compatibility=1.1\n" + "Full-text search=Yes\n" "Contents file=%s.hhc\n" + "Compiled file=%s.chm\n" + "Default Window=%sHelp\n" "Default topic=%s\n" "Index file=%s.hhk\n" "Title=", - FileNameFromPath(fname), - FileNameFromPath(TitlepageName), - FileNameFromPath(fname) + wxFileNameFromPath(fname), + wxFileNameFromPath(fname), + wxFileNameFromPath(fname), + wxFileNameFromPath(TitlepageName), + wxFileNameFromPath(fname) ); - + if (DocumentTitle) { SetCurrentOutput(f); TraverseChildrenFromChunk(DocumentTitle); } else fprintf(f, "(unknown)"); - + + fprintf(f, "\n\n[WINDOWS]\n" + "%sHelp=,\"%s.hhc\",\"%s.hhk\",\"%s\",,,,,,0x2420,,0x380e,,,,,0,,,", + wxFileNameFromPath(fname), + wxFileNameFromPath(fname), + wxFileNameFromPath(fname), + wxFileNameFromPath(TitlepageName)); + + fprintf(f, "\n\n[FILES]\n"); - fprintf(f, "%s\n", FileNameFromPath(TitlepageName)); - for (int i = 1; i <= fileId; i++) { + fprintf(f, "%s\n", wxFileNameFromPath(TitlepageName)); + for (int i = 1; i <= fileId; i++) { if (truncateFilenames) - sprintf(buf, "%s%d.htm", FileNameFromPath(FileRoot), i); + sprintf(buf, "%s%d.htm", wxFileNameFromPath(FileRoot), i); else - sprintf(buf, "%s%d.html", FileNameFromPath(FileRoot), i); + sprintf(buf, "%s%d.html", wxFileNameFromPath(FileRoot), i); fprintf(f, "%s\n", buf); } fclose(f); @@ -3075,8 +3192,10 @@ void GenerateHTMLWorkshopFiles(char *fname) fprintf(f, "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML//EN\">\n" - "<HTML>\n" - "<HEAD>\n" + "<HTML>\n"); + HTMLHeadTo(f); + fprintf(f, + "\n" "<meta name=\"GENERATOR\" content=\"tex2rtf\">\n" "<!-- Sitemap 1.0 -->\n" "</HEAD><BODY>\n" @@ -3097,7 +3216,7 @@ void GenerateHTMLWorkshopFiles(char *fname) while (node1) { char *s = (char *)node1->Data(); - fprintf(f, + fprintf(f, " <LI> <OBJECT type=\"text/sitemap\">\n" " <param name=\"Local\" value=\"%s#%s\">\n" " <param name=\"Name\" value=\"%s\">\n" @@ -3107,7 +3226,7 @@ void GenerateHTMLWorkshopFiles(char *fname) } } } - + fprintf(f, "</UL>\n"); fclose(f); } @@ -3123,19 +3242,19 @@ void HTMLWorkshopAddToContents(int level, char *s, char *file) if (level > HTMLWorkshopLastLevel) for (i = HTMLWorkshopLastLevel; i < level; i++) - fprintf(HTMLWorkshopContents, "<UL>"); + fprintf(HTMLWorkshopContents, "<UL>"); if (level < HTMLWorkshopLastLevel) for (i = level; i < HTMLWorkshopLastLevel; i++) - fprintf(HTMLWorkshopContents, "</UL>"); - + fprintf(HTMLWorkshopContents, "</UL>"); + SetCurrentOutput(HTMLWorkshopContents); - fprintf(HTMLWorkshopContents, + fprintf(HTMLWorkshopContents, " <LI> <OBJECT type=\"text/sitemap\">\n" " <param name=\"Local\" value=\"%s#%s\">\n" " <param name=\"Name\" value=\"", file, s); OutputCurrentSection(); - fprintf(HTMLWorkshopContents, + fprintf(HTMLWorkshopContents, "\">\n" " </OBJECT>\n"); HTMLWorkshopLastLevel = level; @@ -3146,20 +3265,28 @@ void HTMLWorkshopStartContents() { char buf[300]; sprintf(buf, "%s.hhc", FileRoot); - HTMLWorkshopContents = fopen(buf, "wt"); + HTMLWorkshopContents = fopen(buf, "wt"); HTMLWorkshopLastLevel = 0; - fprintf(HTMLWorkshopContents, + fprintf(HTMLWorkshopContents, "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML//EN\">\n" - "<HTML>\n" - "<HEAD>\n" + "<HTML>\n"); + HTMLHeadTo(HTMLWorkshopContents); + fprintf(HTMLWorkshopContents, + "\n" "<meta name=\"GENERATOR\" content=\"tex2rtf\">\n" "<!-- Sitemap 1.0 -->\n" "</HEAD><BODY>\n" "<OBJECT type=\"text/site properties\">\n" " <param name=\"ImageType\" value=\"Folder\">\n" "</OBJECT>\n" - "<UL>\n"); + "<UL>\n" + "<LI> <OBJECT type=\"text/sitemap\">\n" + "<param name=\"Local\" value=\"%s\">\n" + "<param name=\"Name\" value=\"Contents\">\n</OBJECT>\n", + wxFileNameFromPath(TitlepageName) + ); + }