X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b63b07a809f9a3d22596d4971ef5c8971153823a..bc88602a653c5ac9c7a3307d6f52a7ae0e572b41:/utils/tex2rtf/src/texutils.cpp diff --git a/utils/tex2rtf/src/texutils.cpp b/utils/tex2rtf/src/texutils.cpp index 80a35b8ae2..4bbf372ad3 100644 --- a/utils/tex2rtf/src/texutils.cpp +++ b/utils/tex2rtf/src/texutils.cpp @@ -10,10 +10,6 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -47,11 +43,6 @@ using namespace std; #if !WXWIN_COMPATIBILITY_2_4 static inline wxChar* copystring(const wxChar* s) { return wxStrcpy(new wxChar[wxStrlen(s) + 1], s); } -static inline void StringToInt (const wxChar *s, int *number) -{ - if (s && *s && number) - *number = (int) wxStrtol (s, (wxChar **) NULL, 10); -} #endif wxHashTable TexReferences(wxKEY_STRING); @@ -88,20 +79,20 @@ void OutputChunkToString(TexChunk *chunk, wxChar *buf) FILE *tempfd = wxFopen(_T("tmp.tmp"), _T("w")); if (!tempfd) return; - + FILE *old1 = CurrentOutput1; FILE *old2 = CurrentOutput2; - + CurrentOutput1 = tempfd; CurrentOutput2 = NULL; - + TraverseChildrenFromChunk(chunk); - + CurrentOutput1 = old1; CurrentOutput2 = old2; - + fclose(tempfd); - + // Read from file into string tempfd = wxFopen(_T("tmp.tmp"), _T("r")); if (!tempfd) @@ -117,7 +108,7 @@ void OutputChunkToString(TexChunk *chunk, wxChar *buf) buf[i] = 0; else { - buf[i] = ch; + buf[i] = (wxChar)ch; i ++; } } @@ -177,7 +168,7 @@ wxChar *FindTopicName(TexChunk *chunk) { if (forceTopicName) return forceTopicName; - + wxChar *topicName = NULL; static wxChar topicBuf[100]; @@ -216,7 +207,7 @@ wxChar *FindTopicName(TexChunk *chunk) * Snag is that some save a TexChunk, so don't use yet... * */ - + void StartSimulateArgument(wxChar *data) { wxStrcpy(currentArgData, data); @@ -243,13 +234,13 @@ int ParseUnitArgument(wxChar *unitArg) if (unitArg[i] == '\\') unitArg[i] = 0; len = wxStrlen(unitArg); - + if (unitArg && (len > 0) && (isdigit(unitArg[0]) || unitArg[0] == '-')) { wxSscanf(unitArg, _T("%f"), &unitValue); if (len > 1) { - wxChar units[3]; + wxChar units[3]; units[0] = unitArg[len-2]; units[1] = unitArg[len-1]; units[2] = 0; @@ -272,7 +263,7 @@ int ParseUnitArgument(wxChar *unitArg) * IF one exists. Inserts zero into buffer. * */ - + void StripExtension(wxChar *buffer) { int len = wxStrlen(buffer); @@ -339,18 +330,18 @@ void SetFontSizes(int pointSize) } } - + /* * Latex references * */ - + void AddTexRef(wxChar *name, wxChar *file, wxChar *sectionName, int chapter, int section, int subsection, int subsubsection) { TexRef *texRef = (TexRef *)TexReferences.Get(name); if (texRef) TexReferences.Delete(name); - + wxChar buf[100]; buf[0] = 0; /* @@ -399,9 +390,9 @@ void WriteTexReferences(wxChar *filename) wxString name = filename; wxSTD ofstream ostr((char const *)name.fn_str()); if (ostr.bad()) return; - + TexReferences.BeginFind(); - wxNode *node = TexReferences.Next(); + wxHashTable::Node *node = TexReferences.Next(); while (node) { Tex2RTFYield(); @@ -449,7 +440,7 @@ void ReadTexReferences(wxChar *filename) if (!istr.eof()) { istr >> file; - istr >> sectionName; + istr >> sectionName; char ch; istr.get(ch); // Read past space istr.get(ch); @@ -467,17 +458,17 @@ void ReadTexReferences(wxChar *filename) wxString sectionName_string = wxString::FromAscii(sectionName); wxString section_string = wxString::FromAscii(section); - // gt - needed to trick the hash table "TexReferences" into deleting the key + // gt - needed to trick the hash table "TexReferences" into deleting the key // strings it creates in the Put() function, but not the item that is // created here, as that is destroyed elsewhere. Without doing this, there // were massive memory leaks TexReferences.DeleteContents(true); TexReferences.Put( - label_string.c_str(), + label_string.c_str(), new TexRef( - label_string.c_str(), - file_string.c_str(), - section_string.c_str(), + label_string.c_str(), + file_string.c_str(), + section_string.c_str(), sectionName_string.c_str() ) ); @@ -494,26 +485,26 @@ void ReadTexReferences(wxChar *filename) void BibEatWhiteSpace(wxSTD istream& str) { - char ch = str.peek(); - - while (!str.eof() && (ch == ' ' || ch == '\t' || ch == 13 || ch == 10 || ch == EOF)) + char ch = (char)str.peek(); + + while (!str.eof() && (ch == ' ' || ch == '\t' || ch == 13 || ch == 10 || ch == (char)EOF)) { if (ch == 10) BibLine ++; str.get(ch); - if ((ch == EOF) || str.eof()) return; - ch = str.peek(); + if ((ch == (char)EOF) || str.eof()) return; + ch = (char)str.peek(); } // Ignore end-of-line comments if (ch == '%' || ch == ';' || ch == '#') { str.get(ch); - ch = str.peek(); + ch = (char)str.peek(); while (ch != 10 && ch != 13 && !str.eof()) { str.get(ch); - ch = str.peek(); + ch = (char)str.peek(); } BibEatWhiteSpace(str); } @@ -524,14 +515,14 @@ void BibReadWord(wxSTD istream& istr, wxChar *buffer) { int i = 0; buffer[i] = 0; - char ch = istr.peek(); + char ch = (char)istr.peek(); while (!istr.eof() && ch != ' ' && ch != '{' && ch != '(' && ch != 13 && ch != 10 && ch != '\t' && ch != ',' && ch != '=') { istr.get(ch); buffer[i] = ch; i ++; - ch = istr.peek(); + ch = (char)istr.peek(); } buffer[i] = 0; } @@ -541,12 +532,12 @@ void BibReadToEOL(wxSTD istream& istr, wxChar *buffer) { int i = 0; buffer[i] = 0; - char ch = istr.peek(); + char ch = (char)istr.peek(); bool inQuotes = false; if (ch == '"') { istr.get(ch); - ch = istr.peek(); + ch = (char)istr.peek(); inQuotes = true; } // If in quotes, read white space too. If not, @@ -558,7 +549,7 @@ void BibReadToEOL(wxSTD istream& istr, wxChar *buffer) istr.get(ch); buffer[i] = ch; i ++; - ch = istr.peek(); + ch = (char)istr.peek(); } if (ch == '"') istr.get(ch); @@ -572,7 +563,7 @@ void BibReadValue(wxSTD istream& istr, wxChar *buffer, bool ignoreBraces = true, int braceCount = 1; int i = 0; buffer[i] = 0; - char ch = istr.peek(); + char ch = (char)istr.peek(); bool stopping = false; while (!istr.eof() && !stopping) { @@ -585,7 +576,7 @@ void BibReadValue(wxSTD istream& istr, wxChar *buffer, bool ignoreBraces = true, return; } istr.get(ch); - + if (ch == '{') braceCount ++; @@ -617,7 +608,7 @@ void BibReadValue(wxSTD istream& istr, wxChar *buffer, bool ignoreBraces = true, buffer[i] = 0; wxUnusedVar(stopping); } - + bool ReadBib(wxChar *filename) { if (!wxFileExists(filename)) @@ -1103,256 +1094,269 @@ bool StringTobool(wxChar *val) return false; } +void RegisterIntSetting (const wxString& s, int *number) +{ + if (number) + { + long val; + s.ToLong(&val); + *number = (int)val; + } +} + // Define a variable value from the .ini file wxChar *RegisterSetting(wxChar *settingName, wxChar *settingValue, bool interactive) { - static wxChar errorCode[100]; - wxStrcpy(errorCode, _T("OK")); - if (StringMatch(settingName, _T("chapterName"), false, true)) - { - delete[] ChapterNameString; - ChapterNameString = copystring(settingValue); - } - else if (StringMatch(settingName, _T("sectionName"), false, true)) - { - delete[] SectionNameString; - SectionNameString = copystring(settingValue); - } - else if (StringMatch(settingName, _T("subsectionName"), false, true)) - { - delete[] SubsectionNameString; - SubsectionNameString = copystring(settingValue); - } - else if (StringMatch(settingName, _T("subsubsectionName"), false, true)) - { - delete[] SubsubsectionNameString; - SubsubsectionNameString = copystring(settingValue); - } - else if (StringMatch(settingName, _T("indexName"), false, true)) - { - delete[] IndexNameString; - IndexNameString = copystring(settingValue); - } - else if (StringMatch(settingName, _T("contentsName"), false, true)) - { - delete[] ContentsNameString; - ContentsNameString = copystring(settingValue); - } - else if (StringMatch(settingName, _T("glossaryName"), false, true)) - { - delete[] GlossaryNameString; - GlossaryNameString = copystring(settingValue); - } - else if (StringMatch(settingName, _T("referencesName"), false, true)) - { - delete[] ReferencesNameString; - ReferencesNameString = copystring(settingValue); - } - else if (StringMatch(settingName, _T("tablesName"), false, true)) - { - delete[] TablesNameString; - TablesNameString = copystring(settingValue); - } - else if (StringMatch(settingName, _T("figuresName"), false, true)) - { - delete[] FiguresNameString; - FiguresNameString = copystring(settingValue); - } - else if (StringMatch(settingName, _T("tableName"), false, true)) - { - delete[] TableNameString; - TableNameString = copystring(settingValue); - } - else if (StringMatch(settingName, _T("figureName"), false, true)) - { - delete[] FigureNameString; - FigureNameString = copystring(settingValue); - } - else if (StringMatch(settingName, _T("abstractName"), false, true)) - { - delete[] AbstractNameString; - AbstractNameString = copystring(settingValue); - } - else if (StringMatch(settingName, _T("chapterFontSize"), false, true)) - StringToInt(settingValue, &chapterFont); - else if (StringMatch(settingName, _T("sectionFontSize"), false, true)) - StringToInt(settingValue, §ionFont); - else if (StringMatch(settingName, _T("subsectionFontSize"), false, true)) - StringToInt(settingValue, &subsectionFont); - else if (StringMatch(settingName, _T("titleFontSize"), false, true)) - StringToInt(settingValue, &titleFont); - else if (StringMatch(settingName, _T("authorFontSize"), false, true)) - StringToInt(settingValue, &authorFont); - else if (StringMatch(settingName, _T("ignoreInput"), false, true)) - IgnorableInputFiles.Add(wxFileNameFromPath(settingValue)); - else if (StringMatch(settingName, _T("mirrorMargins"), false, true)) - mirrorMargins = StringTobool(settingValue); - else if (StringMatch(settingName, _T("runTwice"), false, true)) - runTwice = StringTobool(settingValue); - else if (StringMatch(settingName, _T("isInteractive"), false, true)) - isInteractive = StringTobool(settingValue); - else if (StringMatch(settingName, _T("headerRule"), false, true)) - headerRule = StringTobool(settingValue); - else if (StringMatch(settingName, _T("footerRule"), false, true)) - footerRule = StringTobool(settingValue); - else if (StringMatch(settingName, _T("combineSubSections"), false, true)) - combineSubSections = StringTobool(settingValue); - else if (StringMatch(settingName, _T("listLabelIndent"), false, true)) - StringToInt(settingValue, &labelIndentTab); - else if (StringMatch(settingName, _T("listItemIndent"), false, true)) - StringToInt(settingValue, &itemIndentTab); - else if (StringMatch(settingName, _T("useUpButton"), false, true)) - useUpButton = StringTobool(settingValue); - else if (StringMatch(settingName, _T("useHeadingStyles"), false, true)) - useHeadingStyles = StringTobool(settingValue); - else if (StringMatch(settingName, _T("useWord"), false, true)) - useWord = StringTobool(settingValue); - else if (StringMatch(settingName, _T("contentsDepth"), false, true)) - StringToInt(settingValue, &contentsDepth); - else if (StringMatch(settingName, _T("generateHPJ"), false, true)) - generateHPJ = StringTobool(settingValue); - else if (StringMatch(settingName, _T("truncateFilenames"), false, true)) - truncateFilenames = StringTobool(settingValue); - else if (StringMatch(settingName, _T("winHelpVersion"), false, true)) - StringToInt(settingValue, &winHelpVersion); - else if (StringMatch(settingName, _T("winHelpContents"), false, true)) - winHelpContents = StringTobool(settingValue); - else if (StringMatch(settingName, _T("htmlIndex"), false, true)) - htmlIndex = StringTobool(settingValue); - else if (StringMatch(settingName, _T("htmlWorkshopFiles"), false, true)) - htmlWorkshopFiles = StringTobool(settingValue); - else if (StringMatch(settingName, _T("htmlFrameContents"), false, true)) - htmlFrameContents = StringTobool(settingValue); - else if (StringMatch(settingName, _T("htmlStylesheet"), false, true)) - { - if (htmlStylesheet) delete[] htmlStylesheet; - htmlStylesheet = copystring(settingValue); - } - else if (StringMatch(settingName, _T("upperCaseNames"), false, true)) - upperCaseNames = StringTobool(settingValue); - else if (StringMatch(settingName, _T("ignoreBadRefs"), false, true)) - ignoreBadRefs = StringTobool(settingValue); - else if (StringMatch(settingName, _T("htmlFaceName"), false, true)) - { - delete[] htmlFaceName; - htmlFaceName = copystring(settingValue); - } - else if (StringMatch(settingName, _T("winHelpTitle"), false, true)) - { - if (winHelpTitle) - delete[] winHelpTitle; - winHelpTitle = copystring(settingValue); - } - else if (StringMatch(settingName, _T("indexSubsections"), false, true)) - indexSubsections = StringTobool(settingValue); - else if (StringMatch(settingName, _T("compatibility"), false, true)) - compatibilityMode = StringTobool(settingValue); - else if (StringMatch(settingName, _T("defaultColumnWidth"), false, true)) - { - StringToInt(settingValue, &defaultTableColumnWidth); - defaultTableColumnWidth = 20*defaultTableColumnWidth; - } - else if (StringMatch(settingName, _T("bitmapMethod"), false, true)) - { - if ((wxStrcmp(settingValue, _T("includepicture")) != 0) && (wxStrcmp(settingValue, _T("hex")) != 0) && - (wxStrcmp(settingValue, _T("import")) != 0)) + wxString settingValueStr( settingValue ); + + static wxChar errorCode[100]; + wxStrcpy(errorCode, _T("OK")); + if (StringMatch(settingName, _T("chapterName"), false, true)) { - if (interactive) - OnError(_T("Unknown bitmapMethod")); - wxStrcpy(errorCode, _T("Unknown bitmapMethod")); + delete[] ChapterNameString; + ChapterNameString = copystring(settingValue); } - else + else if (StringMatch(settingName, _T("sectionName"), false, true)) { - delete[] bitmapMethod; - bitmapMethod = copystring(settingValue); + delete[] SectionNameString; + SectionNameString = copystring(settingValue); } - } - else if (StringMatch(settingName, _T("htmlBrowseButtons"), false, true)) - { - if (wxStrcmp(settingValue, _T("none")) == 0) - htmlBrowseButtons = HTML_BUTTONS_NONE; - else if (wxStrcmp(settingValue, _T("bitmap")) == 0) - htmlBrowseButtons = HTML_BUTTONS_BITMAP; - else if (wxStrcmp(settingValue, _T("text")) == 0) - htmlBrowseButtons = HTML_BUTTONS_TEXT; - else + else if (StringMatch(settingName, _T("subsectionName"), false, true)) { - if (interactive) - OnInform(_T("Initialisation file error: htmlBrowseButtons must be one of none, bitmap, or text.")); - wxStrcpy(errorCode, _T("Initialisation file error: htmlBrowseButtons must be one of none, bitmap, or text.")); + delete[] SubsectionNameString; + SubsectionNameString = copystring(settingValue); } - } - else if (StringMatch(settingName, _T("backgroundImage"), false, true)) - { - backgroundImageString = copystring(settingValue); - } - else if (StringMatch(settingName, _T("backgroundColour"), false, true)) - { - delete[] backgroundColourString; - backgroundColourString = copystring(settingValue); - } - else if (StringMatch(settingName, _T("textColour"), false, true)) - { - textColourString = copystring(settingValue); - } - else if (StringMatch(settingName, _T("linkColour"), false, true)) - { - linkColourString = copystring(settingValue); - } - else if (StringMatch(settingName, _T("followedLinkColour"), false, true)) - { - followedLinkColourString = copystring(settingValue); - } - else if (StringMatch(settingName, _T("conversionMode"), false, true)) - { - if (StringMatch(settingValue, _T("RTF"), false, true)) + else if (StringMatch(settingName, _T("subsubsectionName"), false, true)) { - winHelp = false; convertMode = TEX_RTF; + delete[] SubsubsectionNameString; + SubsubsectionNameString = copystring(settingValue); } - else if (StringMatch(settingValue, _T("WinHelp"), false, true)) + else if (StringMatch(settingName, _T("indexName"), false, true)) { - winHelp = true; convertMode = TEX_RTF; + delete[] IndexNameString; + IndexNameString = copystring(settingValue); } - else if (StringMatch(settingValue, _T("XLP"), false, true) || - StringMatch(settingValue, _T("wxHelp"), false, true)) + else if (StringMatch(settingName, _T("contentsName"), false, true)) { - convertMode = TEX_XLP; + delete[] ContentsNameString; + ContentsNameString = copystring(settingValue); } - else if (StringMatch(settingValue, _T("HTML"), false, true)) + else if (StringMatch(settingName, _T("glossaryName"), false, true)) { - convertMode = TEX_HTML; + delete[] GlossaryNameString; + GlossaryNameString = copystring(settingValue); } - else + else if (StringMatch(settingName, _T("referencesName"), false, true)) { - if (interactive) - OnInform(_T("Initialisation file error: conversionMode must be one of\nRTF, WinHelp, XLP (or wxHelp), HTML.")); - wxStrcpy(errorCode, _T("Initialisation file error: conversionMode must be one of\nRTF, WinHelp, XLP (or wxHelp), HTML.")); + delete[] ReferencesNameString; + ReferencesNameString = copystring(settingValue); + } + else if (StringMatch(settingName, _T("tablesName"), false, true)) + { + delete[] TablesNameString; + TablesNameString = copystring(settingValue); + } + else if (StringMatch(settingName, _T("figuresName"), false, true)) + { + delete[] FiguresNameString; + FiguresNameString = copystring(settingValue); + } + else if (StringMatch(settingName, _T("tableName"), false, true)) + { + delete[] TableNameString; + TableNameString = copystring(settingValue); + } + else if (StringMatch(settingName, _T("figureName"), false, true)) + { + delete[] FigureNameString; + FigureNameString = copystring(settingValue); + } + else if (StringMatch(settingName, _T("abstractName"), false, true)) + { + delete[] AbstractNameString; + AbstractNameString = copystring(settingValue); + } + else if (StringMatch(settingName, _T("chapterFontSize"), false, true)) + RegisterIntSetting(settingValueStr, &chapterFont); + else if (StringMatch(settingName, _T("sectionFontSize"), false, true)) + RegisterIntSetting(settingValueStr, §ionFont); + else if (StringMatch(settingName, _T("subsectionFontSize"), false, true)) + RegisterIntSetting(settingValueStr, &subsectionFont); + else if (StringMatch(settingName, _T("titleFontSize"), false, true)) + RegisterIntSetting(settingValueStr, &titleFont); + else if (StringMatch(settingName, _T("authorFontSize"), false, true)) + RegisterIntSetting(settingValueStr, &authorFont); + else if (StringMatch(settingName, _T("ignoreInput"), false, true)) + IgnorableInputFiles.Add(wxFileNameFromPath(settingValue)); + else if (StringMatch(settingName, _T("mirrorMargins"), false, true)) + mirrorMargins = StringTobool(settingValue); + else if (StringMatch(settingName, _T("runTwice"), false, true)) + runTwice = StringTobool(settingValue); + else if (StringMatch(settingName, _T("isInteractive"), false, true)) + isInteractive = StringTobool(settingValue); + else if (StringMatch(settingName, _T("headerRule"), false, true)) + headerRule = StringTobool(settingValue); + else if (StringMatch(settingName, _T("footerRule"), false, true)) + footerRule = StringTobool(settingValue); + else if (StringMatch(settingName, _T("combineSubSections"), false, true)) + combineSubSections = StringTobool(settingValue); + else if (StringMatch(settingName, _T("listLabelIndent"), false, true)) + RegisterIntSetting(settingValueStr, &labelIndentTab); + else if (StringMatch(settingName, _T("listItemIndent"), false, true)) + RegisterIntSetting(settingValueStr, &itemIndentTab); + else if (StringMatch(settingName, _T("useUpButton"), false, true)) + useUpButton = StringTobool(settingValue); + else if (StringMatch(settingName, _T("useHeadingStyles"), false, true)) + useHeadingStyles = StringTobool(settingValue); + else if (StringMatch(settingName, _T("useWord"), false, true)) + useWord = StringTobool(settingValue); + else if (StringMatch(settingName, _T("contentsDepth"), false, true)) + RegisterIntSetting(settingValueStr, &contentsDepth); + else if (StringMatch(settingName, _T("generateHPJ"), false, true)) + generateHPJ = StringTobool(settingValue); + else if (StringMatch(settingName, _T("truncateFilenames"), false, true)) + truncateFilenames = StringTobool(settingValue); + else if (StringMatch(settingName, _T("winHelpVersion"), false, true)) + RegisterIntSetting(settingValueStr, &winHelpVersion); + else if (StringMatch(settingName, _T("winHelpContents"), false, true)) + winHelpContents = StringTobool(settingValue); + else if (StringMatch(settingName, _T("htmlIndex"), false, true)) + htmlIndex = StringTobool(settingValue); + else if (StringMatch(settingName, _T("htmlWorkshopFiles"), false, true)) + htmlWorkshopFiles = StringTobool(settingValue); + else if (StringMatch(settingName, _T("htmlFrameContents"), false, true)) + htmlFrameContents = StringTobool(settingValue); + else if (StringMatch(settingName, _T("htmlStylesheet"), false, true)) + { + if (htmlStylesheet) + delete[] htmlStylesheet; + htmlStylesheet = copystring(settingValue); + } + else if (StringMatch(settingName, _T("upperCaseNames"), false, true)) + upperCaseNames = StringTobool(settingValue); + else if (StringMatch(settingName, _T("ignoreBadRefs"), false, true)) + ignoreBadRefs = StringTobool(settingValue); + else if (StringMatch(settingName, _T("htmlFaceName"), false, true)) + { + delete[] htmlFaceName; + htmlFaceName = copystring(settingValue); + } + else if (StringMatch(settingName, _T("winHelpTitle"), false, true)) + { + if (winHelpTitle) + delete[] winHelpTitle; + winHelpTitle = copystring(settingValue); + } + else if (StringMatch(settingName, _T("indexSubsections"), false, true)) + indexSubsections = StringTobool(settingValue); + else if (StringMatch(settingName, _T("compatibility"), false, true)) + compatibilityMode = StringTobool(settingValue); + else if (StringMatch(settingName, _T("defaultColumnWidth"), false, true)) + { + RegisterIntSetting(settingValueStr, &defaultTableColumnWidth); + defaultTableColumnWidth = 20*defaultTableColumnWidth; + } + else if (StringMatch(settingName, _T("bitmapMethod"), false, true)) + { + if ((wxStrcmp(settingValue, _T("includepicture")) != 0) && (wxStrcmp(settingValue, _T("hex")) != 0) && + (wxStrcmp(settingValue, _T("import")) != 0)) + { + if (interactive) + OnError(_T("Unknown bitmapMethod")); + wxStrcpy(errorCode, _T("Unknown bitmapMethod")); + } + else + { + delete[] bitmapMethod; + bitmapMethod = copystring(settingValue); + } + } + else if (StringMatch(settingName, _T("htmlBrowseButtons"), false, true)) + { + if (wxStrcmp(settingValue, _T("none")) == 0) + htmlBrowseButtons = HTML_BUTTONS_NONE; + else if (wxStrcmp(settingValue, _T("bitmap")) == 0) + htmlBrowseButtons = HTML_BUTTONS_BITMAP; + else if (wxStrcmp(settingValue, _T("text")) == 0) + htmlBrowseButtons = HTML_BUTTONS_TEXT; + else + { + if (interactive) + OnInform(_T("Initialisation file error: htmlBrowseButtons must be one of none, bitmap, or text.")); + wxStrcpy(errorCode, _T("Initialisation file error: htmlBrowseButtons must be one of none, bitmap, or text.")); + } + } + else if (StringMatch(settingName, _T("backgroundImage"), false, true)) + { + backgroundImageString = copystring(settingValue); + } + else if (StringMatch(settingName, _T("backgroundColour"), false, true)) + { + delete[] backgroundColourString; + backgroundColourString = copystring(settingValue); + } + else if (StringMatch(settingName, _T("textColour"), false, true)) + { + textColourString = copystring(settingValue); + } + else if (StringMatch(settingName, _T("linkColour"), false, true)) + { + linkColourString = copystring(settingValue); + } + else if (StringMatch(settingName, _T("followedLinkColour"), false, true)) + { + followedLinkColourString = copystring(settingValue); + } + else if (StringMatch(settingName, _T("conversionMode"), false, true)) + { + if (StringMatch(settingValue, _T("RTF"), false, true)) + { + winHelp = false; convertMode = TEX_RTF; + } + else if (StringMatch(settingValue, _T("WinHelp"), false, true)) + { + winHelp = true; convertMode = TEX_RTF; + } + else if (StringMatch(settingValue, _T("XLP"), false, true) || + StringMatch(settingValue, _T("wxHelp"), false, true)) + { + convertMode = TEX_XLP; + } + else if (StringMatch(settingValue, _T("HTML"), false, true)) + { + convertMode = TEX_HTML; + } + else + { + if (interactive) + OnInform(_T("Initialisation file error: conversionMode must be one of\nRTF, WinHelp, XLP (or wxHelp), HTML.")); + wxStrcpy(errorCode, _T("Initialisation file error: conversionMode must be one of\nRTF, WinHelp, XLP (or wxHelp), HTML.")); + } + } + else if (StringMatch(settingName, _T("documentFontSize"), false, true)) + { + int n; + RegisterIntSetting(settingValueStr, &n); + if (n == 10 || n == 11 || n == 12) + SetFontSizes(n); + else + { + wxChar buf[200]; + wxSnprintf(buf, sizeof(buf), _T("Initialisation file error: nonstandard document font size %d."), n); + if (interactive) + OnInform(buf); + wxStrcpy(errorCode, buf); + } } - } - else if (StringMatch(settingName, _T("documentFontSize"), false, true)) - { - int n; - StringToInt(settingValue, &n); - if (n == 10 || n == 11 || n == 12) - SetFontSizes(n); else { - wxChar buf[200]; - wxSnprintf(buf, sizeof(buf), _T("Initialisation file error: nonstandard document font size %d."), n); - if (interactive) - OnInform(buf); - wxStrcpy(errorCode, buf); + wxChar buf[200]; + wxSnprintf(buf, sizeof(buf), _T("Initialisation file error: unrecognised setting %s."), settingName); + if (interactive) + OnInform(buf); + wxStrcpy(errorCode, buf); } - } - else - { - wxChar buf[200]; - wxSnprintf(buf, sizeof(buf), _T("Initialisation file error: unrecognised setting %s."), settingName); - if (interactive) - OnInform(buf); - wxStrcpy(errorCode, buf); - } - return errorCode; + return errorCode; } bool ReadCustomMacros(wxChar *filename) @@ -1377,7 +1381,7 @@ bool ReadCustomMacros(wxChar *filename) istr.get(ch); if (istr.eof()) break; - + if (ch != '\\') // Not a macro definition, so must be NAME=VALUE { wxChar settingName[100]; @@ -1426,7 +1430,7 @@ bool ReadCustomMacros(wxChar *filename) BibReadValue(istr, macroBody, false, false); // Don't ignore extra braces if (wxStrlen(macroBody) > 0) macro->macroBody = copystring(macroBody); - + BibEatWhiteSpace(istr); CustomMacroList.Append(macroName, macro); AddMacroDef(ltCUSTOM_MACRO, macroName, noArgs); @@ -1437,7 +1441,7 @@ bool ReadCustomMacros(wxChar *filename) OnInform(mbuf); return true; } - + CustomMacro *FindCustomMacro(wxChar *name) { wxNode *node = CustomMacroList.Find(name); @@ -1458,7 +1462,7 @@ void ShowCustomMacros(void) OnInform(_T("No custom macros loaded.\n")); return; } - + wxChar buf[400]; while (node) { @@ -1506,7 +1510,7 @@ wxChar *ParseMultifieldString(wxChar *allFields, int *pos) buffer[i] = 0; if (oldPos == (*pos)) *pos = len + 1; - + if (i == 0) return NULL; else @@ -1517,7 +1521,7 @@ wxChar *ParseMultifieldString(wxChar *allFields, int *pos) * Colour tables * */ - + ColourTableEntry::ColourTableEntry(const wxChar *theName, unsigned int r, unsigned int g, unsigned int b) { name = copystring(theName); @@ -1575,7 +1579,7 @@ bool FindColourHTMLString(wxChar *theName, wxChar *buf) if (wxStrcmp(theName, entry->name) == 0) { wxStrcpy(buf, _T("#")); - + wxChar buf2[3]; DecToHex(entry->red, buf2); wxStrcat(buf, buf2); @@ -1591,7 +1595,7 @@ bool FindColourHTMLString(wxChar *theName, wxChar *buf) return false; } - + void InitialiseColourTable(void) { // \\red0\\green0\\blue0; @@ -1602,16 +1606,16 @@ void InitialiseColourTable(void) // \\red0\\green255\\blue0; AddColour(_T("green"), 0,255,0); - + // \\red255\\green0\\blue255; AddColour(_T("magenta"), 255,0,255); // \\red255\\green0\\blue0; AddColour(_T("red"), 255,0,0); - + // \\red255\\green255\\blue0; AddColour(_T("yellow"), 255,255,0); - + // \\red255\\green255\\blue255;}"); AddColour(_T("white"), 255,255,255); } @@ -1623,21 +1627,23 @@ void InitialiseColourTable(void) void Tex2RTFYield(bool force) { -#ifdef __WXMSW__ +#ifdef __WINDOWS__ static int yieldCount = 0; - + if (isSync) - return; - + return; + if (force) - yieldCount = 0; + yieldCount = 0; if (yieldCount == 0) { - if (wxTheApp) - wxYield(); - yieldCount = 10; + if (wxTheApp) + wxYield(); + yieldCount = 10; } yieldCount --; +#else + wxUnusedVar(force); #endif } @@ -1655,7 +1661,7 @@ void AddKeyWordForTopic(wxChar *topic, wxChar *entry, wxChar *filename) texTopic->keywords = new wxStringList; TopicTable.Put(topic, texTopic); } - + if (!texTopic->keywords->Member(entry)) texTopic->keywords->Add(entry); } @@ -1663,7 +1669,7 @@ void AddKeyWordForTopic(wxChar *topic, wxChar *entry, wxChar *filename) void ClearKeyWordTable(void) { TopicTable.BeginFind(); - wxNode *node = TopicTable.Next(); + wxHashTable::Node *node = TopicTable.Next(); while (node) { TexTopic *texTopic = (TexTopic *)node->GetData(); @@ -1677,7 +1683,7 @@ void ClearKeyWordTable(void) /* * TexTopic structure */ - + TexTopic::TexTopic(wxChar *f) { if (f) @@ -1704,17 +1710,16 @@ wxChar *ConvertCase(wxChar *s) int i; if (upperCaseNames) for (i = 0; i < len; i ++) - buf[i] = wxToupper(s[i]); + buf[i] = (wxChar)wxToupper(s[i]); else for (i = 0; i < len; i ++) - buf[i] = wxTolower(s[i]); + buf[i] = (wxChar)wxTolower(s[i]); buf[i] = 0; - return buf; + return buf; } -#if !WXWIN_COMPATIBILITY_2 -// if substring is TRUE, search for str1 in str2 -bool StringMatch(const wxChar *str1, const wxChar *str2, bool subString, +// if substring is true, search for str1 in str2 +bool StringMatch(const wxChar *str1, const wxChar *str2, bool subString, bool exact) { if (subString) @@ -1729,7 +1734,6 @@ bool StringMatch(const wxChar *str1, const wxChar *str2, bool subString, return Sstr2.Index(Sstr1) != (size_t)wxNOT_FOUND; } else - return exact ? wxString(str2).Cmp(str1) == 0 : + return exact ? wxString(str2).Cmp(str1) == 0 : wxString(str2).CmpNoCase(str1) == 0; } -#endif