#include "wx/wx.h"
#endif
-#include <wx/hash.h>
+#include "wx/hash.h"
+
+#ifdef new
+#undef new
+#endif
#if wxUSE_IOSTREAMH
#include <iostream.h>
#else
#include <iostream>
#include <fstream>
+using namespace std;
#endif
#include <ctype.h>
static char *forceTopicName = NULL;
-void ForceTopicName(char *name)
+void ForceTopicName(const char *name)
{
if (forceTopicName)
delete[] forceTopicName;
void WriteTexReferences(char *filename)
{
- ofstream ostr(filename);
+ wxSTD ofstream ostr(filename);
if (ostr.bad()) return;
char buf[200];
if (!wxFileExists(filename))
return;
- ifstream istr(filename, ios::in);
+ wxSTD ifstream istr(filename, wxSTD ios::in);
if (istr.bad()) return;
istr.get(ch);
}
section[i] = 0;
+
+ // 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, new TexRef(label, file, section, sectionName));
+ TexReferences.DeleteContents(FALSE);
}
}
}
*
*/
-void BibEatWhiteSpace(istream& str)
+void BibEatWhiteSpace(wxSTD istream& str)
{
char ch = str.peek();
}
// Read word up to { or , or space
-void BibReadWord(istream& istr, char *buffer)
+void BibReadWord(wxSTD istream& istr, char *buffer)
{
int i = 0;
buffer[i] = 0;
}
// Read string (double-quoted or not) to end quote or EOL
-void BibReadToEOL(istream& istr, char *buffer)
+void BibReadToEOL(wxSTD istream& istr, char *buffer)
{
int i = 0;
buffer[i] = 0;
}
// Read }-terminated value, taking nested braces into account.
-void BibReadValue(istream& istr, char *buffer, bool ignoreBraces = TRUE,
+void BibReadValue(wxSTD istream& istr, char *buffer, bool ignoreBraces = TRUE,
bool quotesMayTerminate = TRUE)
{
int braceCount = 1;
if (i >= 4000)
{
char buf[100];
- sprintf(buf, "Sorry, value > 4000 chars in bib file at line %ld, terminating.", BibLine);
- wxFatalError(buf, "Tex2RTF Fatal Error");
+ sprintf(buf, "Sorry, value > 4000 chars in bib file at line %ld.", BibLine);
+ wxLogError(buf, "Tex2RTF Fatal Error");
+ return;
}
istr.get(ch);
return FALSE;
char buf[300];
- ifstream istr(filename, ios::in);
+ wxSTD ifstream istr(filename, wxSTD ios::in);
if (istr.bad()) return FALSE;
BibLine = 1;
else if (StringMatch(settingName, "authorFontSize", FALSE, TRUE))
StringToInt(settingValue, &authorFont);
else if (StringMatch(settingName, "ignoreInput", FALSE, TRUE))
- IgnorableInputFiles.Add(FileNameFromPath(settingValue));
+ IgnorableInputFiles.Add(wxFileNameFromPath(settingValue));
else if (StringMatch(settingName, "mirrorMargins", FALSE, TRUE))
mirrorMargins = StringTobool(settingValue);
else if (StringMatch(settingName, "runTwice", FALSE, TRUE))
htmlWorkshopFiles = StringTobool(settingValue);
else if (StringMatch(settingName, "htmlFrameContents", FALSE, TRUE))
htmlFrameContents = StringTobool(settingValue);
+ else if (StringMatch(settingName, "htmlStylesheet", FALSE, TRUE))
+ {
+ if (htmlStylesheet) delete[] htmlStylesheet;
+ htmlStylesheet = copystring(settingValue);
+ }
else if (StringMatch(settingName, "upperCaseNames", FALSE, TRUE))
upperCaseNames = StringTobool(settingValue);
+ else if (StringMatch(settingName, "ignoreBadRefs", FALSE, TRUE))
+ ignoreBadRefs = StringTobool(settingValue);
+ else if (StringMatch(settingName, "htmlFaceName", FALSE, TRUE))
+ {
+ delete[] htmlFaceName;
+ htmlFaceName = copystring(settingValue);
+ }
else if (StringMatch(settingName, "winHelpTitle", FALSE, TRUE))
{
if (winHelpTitle)
if (!wxFileExists(filename))
return FALSE;
- ifstream istr(filename, ios::in);
+ wxSTD ifstream istr(filename, wxSTD ios::in);
if (istr.bad()) return FALSE;
*
*/
-ColourTableEntry::ColourTableEntry(char *theName, unsigned int r, unsigned int g, unsigned int b)
+ColourTableEntry::ColourTableEntry(const char *theName, unsigned int r, unsigned int g, unsigned int b)
{
name = copystring(theName);
red = r;
delete[] name;
}
-void AddColour(char *theName, unsigned int r, unsigned int g, unsigned int b)
+void AddColour(const char *theName, unsigned int r, unsigned int g, unsigned int b)
{
wxNode *node = ColourTable.Find(theName);
if (node)
* The purpose of this is to reduce the number of times wxYield is
* called, since under Windows this can slow things down.
*/
-
-static int yieldCount = 0;
void Tex2RTFYield(bool force)
{
#ifdef __WXMSW__
- if (isSync)
- return;
+ static int yieldCount = 0;
- if (force)
- yieldCount = 0;
- if (yieldCount == 0)
- {
- if (wxTheApp)
- wxYield();
- yieldCount = 10;
- }
- yieldCount --;
+ if (isSync)
+ return;
+
+ if (force)
+ yieldCount = 0;
+ if (yieldCount == 0)
+ {
+ if (wxTheApp)
+ wxYield();
+ yieldCount = 10;
+ }
+ yieldCount --;
#endif
}
buf[i] = 0;
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,
+ bool exact)
+{
+ if (subString)
+ {
+ wxString Sstr1(str1);
+ wxString Sstr2(str2);
+ if (!exact)
+ {
+ Sstr1.MakeUpper();
+ Sstr2.MakeUpper();
+ }
+ return Sstr2.Index(Sstr1) != wxNOT_FOUND;
+ }
+ else
+ return exact ? wxString(str2).Cmp(str1) == 0 :
+ wxString(str2).CmpNoCase(str1) == 0;
+}
+#endif