/////////////////////////////////////////////////////////////////////////////
#include <stdio.h>
-#include "wx/wx.h"
#include "wx/utils.h"
#include "wx/list.h"
#include "wx/hash.h"
+#include "wx/tokenzr.h"
#include "wxhlpblk.h"
/*
#ifdef __WXMSW__
- const int MAX_LINE_BUFFER_SIZE = 600;
+ const unsigned long MAX_LINE_BUFFER_SIZE = 600;
#else
- const int MAX_LINE_BUFFER_SIZE = 11000;
+ const unsigned long MAX_LINE_BUFFER_SIZE = 11000;
#endif
class TexMacroDef: public wxObject
{
public:
int no_args;
- char *name;
+ wxChar *name;
bool ignore;
int forbidden;
int macroId;
- TexMacroDef(int the_id, const char *the_name, int n, bool ig, bool forbidLevel = FORBID_OK);
+ TexMacroDef(int the_id, const wxChar *the_name, int n, bool ig, bool forbidLevel = FORBID_OK);
~TexMacroDef(void);
};
int type;
// char *name;
TexMacroDef *def;
- char *value;
+ wxChar *value;
int macroId;
int no_args;
int argn;
// to find there's only one page in it. We might force a book to be used if
// a top-level topic has no children (?)
bool hasChildren;
- char *filename;
+ wxChar *filename;
wxStringList *keywords;
- TexTopic(char *f = NULL);
+ TexTopic(wxChar *f = NULL);
~TexTopic(void);
};
extern wxHashTable TopicTable;
-void AddKeyWordForTopic(char *topic, char *entry, char *filename = NULL);
+void AddKeyWordForTopic(wxChar *topic, wxChar *entry, wxChar *filename = NULL);
void ClearKeyWordTable(void);
+extern wxChar wxTex2RTFBuffer[];
extern TexChunk *TopLevel;
extern wxHashTable MacroDefs;
extern wxStringList IgnorableInputFiles; // Ignorable \input files, e.g. psbox.tex
-bool read_a_line(char *buf);
-bool TexLoadFile(char *filename);
-int ParseArg(TexChunk *thisArg, wxList& children, char *buffer, int pos,
- char *environment = NULL, bool parseArgToBrace = TRUE, TexChunk *customMacroArgs = NULL);
-int ParseMacroBody(const char *macro_name, TexChunk *parent, int no_args,
- char *buffer, int pos, char *environment = NULL, bool parseArgToBrace = TRUE, TexChunk *customMacroArgs = NULL);
+bool read_a_line(wxChar *buf);
+bool TexLoadFile(wxChar *filename);
+int ParseArg(TexChunk *thisArg, wxList& children, wxChar *buffer, int pos,
+ wxChar *environment = NULL, bool parseArgToBrace = true, TexChunk *customMacroArgs = NULL);
+int ParseMacroBody(const wxChar *macro_name, TexChunk *parent, int no_args,
+ wxChar *buffer, int pos, wxChar *environment = NULL, bool parseArgToBrace = true, TexChunk *customMacroArgs = NULL);
void TraverseDocument(void);
-void TraverseFromChunk(TexChunk *chunk, wxNode *thisNode = NULL, bool childrenOnly = FALSE);
-#define TraverseChildrenFromChunk(arg) TraverseFromChunk(arg, NULL, TRUE)
+void TraverseFromChunk(TexChunk *chunk, wxNode *thisNode = NULL, bool childrenOnly = false);
+#define TraverseChildrenFromChunk(arg) TraverseFromChunk(arg, NULL, true)
void SetCurrentOutput(FILE *fd);
void SetCurrentOutputs(FILE *fd1, FILE *fd2);
extern FILE *CurrentOutput1;
extern FILE *CurrentOutput2;
-void AddMacroDef(int the_id, const char *name, int n, bool ignore = FALSE, bool forbidden = FALSE);
+void AddMacroDef(int the_id, const wxChar *name, int n, bool ignore = false, bool forbidden = false);
void TexInitialize(int bufSize);
void TexCleanUp(void);
-void TexOutput(const char *s, bool ordinaryText = FALSE);
-char *GetArgData(TexChunk *chunk);
-char *GetArgData(void); // Get the string for the current argument
+void TexOutput(const wxChar *s, bool ordinaryText = false);
+wxChar *GetArgData(TexChunk *chunk);
+wxChar *GetArgData(void); // Get the string for the current argument
int GetNoArgs(void); // Get the number of arguments for the current macro
TexChunk *GetArgChunk(void); // Get the chunk for the current argument
TexChunk *GetTopLevelChunk(void); // Get the chunk for the top level
bool IsArgOptional(void); // Is this argument an optional argument?
void DefineDefaultMacros(void); // Optional set of default macros
int GetCurrentColumn(void); // number of characters on current line
-char *ConvertCase(char *s); // Convert case, according to upperCaseNames setting.
+wxChar *ConvertCase(wxChar *s); // Convert case, according to upperCaseNames setting.
extern wxPathList TexPathList; // Path list, can be used for file searching.
+#if !WXWIN_COMPATIBILITY_2
+extern bool StringMatch(const wxChar *one, const wxChar *two, bool subString = true, bool exact = false);
+#endif
+
// Define a variable value from the .ini file
-char *RegisterSetting(char *settingName, char *settingValue, bool interactive = TRUE);
+wxChar *RegisterSetting(wxChar *settingName, wxChar *settingValue, bool interactive = true);
// Major document styles
#define LATEX_REPORT 1
extern TexChunk *DocumentDate;
extern int DocumentStyle;
extern int MinorDocumentStyle;
-extern char *BibliographyStyleString;
-extern char *DocumentStyleString;
-extern char *MinorDocumentStyleString;
+extern wxChar *BibliographyStyleString;
+extern wxChar *DocumentStyleString;
+extern wxChar *MinorDocumentStyleString;
extern int normalFont;
extern int smallFont;
extern bool indexSubsections; // put subsections in index
extern bool compatibilityMode;
extern bool generateHPJ; // Generate WinHelp HPJ file
-extern char *winHelpTitle; // Title for Windows Help file
+extern wxChar *winHelpTitle; // Title for Windows Help file
extern int defaultTableColumnWidth;
-extern char *bitmapMethod;
+extern wxChar *bitmapMethod;
extern bool truncateFilenames; // Truncate for DOS
extern int winHelpVersion; // Version e.g. 4 for Win95
extern bool winHelpContents; // Generate .cnt file
extern bool htmlIndex; // Generate .htx HTML index file
extern bool htmlFrameContents; // Use frames for HTML contents page
+extern wxChar *htmlStylesheet; // Use this CSS stylesheet for HTML pages
extern int contentsDepth; // Depth of contents for linear RTF files
extern bool upperCaseNames; // Filenames; default is lower case
-extern char *backgroundImageString; // HTML background image
-extern char *backgroundColourString; // HTML background colour
-extern char *textColourString; // HTML text colour
-extern char *linkColourString; // HTML link colour
-extern char *followedLinkColourString; // HTML followed link colour
+extern wxChar *backgroundImageString; // HTML background image
+extern wxChar *backgroundColourString; // HTML background colour
+extern wxChar *textColourString; // HTML text colour
+extern wxChar *linkColourString; // HTML link colour
+extern wxChar *followedLinkColourString; // HTML followed link colour
extern bool combineSubSections; // Stop splitting files below section
extern bool htmlWorkshopFiles; // generate HTML Help Workshop project files
extern bool ignoreBadRefs; // Don't insert (REF NOT FOUND)
-extern char *htmlFaceName; // HTML face name
+extern wxChar *htmlFaceName; // HTML face name
// Names to help with internationalisation
-extern char *ContentsNameString;
-extern char *AbstractNameString;
-extern char *GlossaryNameString;
-extern char *ReferencesNameString;
-extern char *FiguresNameString;
-extern char *TablesNameString;
-extern char *FigureNameString;
-extern char *TableNameString;
-extern char *IndexNameString;
-extern char *ChapterNameString;
-extern char *SectionNameString;
-extern char *SubsectionNameString;
-extern char *SubsubsectionNameString;
-extern char *UpNameString;
+extern wxChar *ContentsNameString;
+extern wxChar *AbstractNameString;
+extern wxChar *GlossaryNameString;
+extern wxChar *ReferencesNameString;
+extern wxChar *FiguresNameString;
+extern wxChar *TablesNameString;
+extern wxChar *FigureNameString;
+extern wxChar *TableNameString;
+extern wxChar *IndexNameString;
+extern wxChar *ChapterNameString;
+extern wxChar *SectionNameString;
+extern wxChar *SubsectionNameString;
+extern wxChar *SubsubsectionNameString;
+extern wxChar *UpNameString;
/*
* HTML button identifiers: what kind of browse buttons
extern TexChunk * CentreFooterEven;
extern TexChunk * RightHeaderEven;
extern TexChunk * RightFooterEven;
-extern char * PageStyle;
+extern wxChar * PageStyle;
// Repeat the currentSection, either real (Chapter) or simulated (References)
extern void OutputCurrentSection(void);
-extern void OutputCurrentSectionToString(char *buf);
-extern void OutputChunkToString(TexChunk *chunk, char *buf);
-
-extern char *fakeCurrentSection;
+extern void OutputCurrentSectionToString(wxChar *buf);
+extern void OutputChunkToString(TexChunk *chunk, wxChar *buf);
// Called by Tex2Any to simulate a section
-extern void FakeCurrentSection(char *fakeSection, bool addToContents = TRUE);
+extern void FakeCurrentSection(wxChar *fakeSection, bool addToContents = true);
/*
* Local to Tex2Any library
*
*/
-extern char *currentArgData;
+extern wxChar *currentArgData;
extern bool haveArgData; // If TRUE, we're simulating the data.
-void StartSimulateArgument(char *data);
+void StartSimulateArgument(wxChar *data);
void EndSimulateArgument(void);
/*
bool DefaultOnArgument(int macroId, int arg_no, bool start);
// Called on error
-void OnError(const char *msg);
+void OnError(const wxChar *msg);
// Called for information
-void OnInform(const char *msg);
+void OnInform(const wxChar *msg);
// Special yield wrapper
-void Tex2RTFYield(bool force = FALSE);
+void Tex2RTFYield(bool force = false);
/*
* Useful utilities
// Look for \label macro, use this ref name if found or
// make up a topic name otherwise.
-char *FindTopicName(TexChunk *chunk);
+wxChar *FindTopicName(TexChunk *chunk);
// Force the current topic to be this (e.g. force 'references' label).
-void ForceTopicName(const char *name);
+void ForceTopicName(const wxChar *name);
void ResetTopicCounter(void);
// Parse unit eg. 14, 12pt, 34cm and return value in points.
-int ParseUnitArgument(char *unitArg);
+int ParseUnitArgument(wxChar *unitArg);
// Set small, large, normal etc. point sizes for reference size
void SetFontSizes(int pointSize);
*
*/
-void StripExtension(char *buffer);
+void StripExtension(wxChar *buffer);
/*
* Reference structure
class TexRef: public wxObject
{
public:
- char *refLabel; // Reference label
- char *refFile; // Reference filename (can be NULL)
- char *sectionNumber; // Section or figure number (as a string)
- char *sectionName; // name e.g. 'section'
- TexRef(const char *label, const char *file, const char *section, const char *sectionN = NULL);
+ wxChar *refLabel; // Reference label
+ wxChar *refFile; // Reference filename (can be NULL)
+ wxChar *sectionNumber; // Section or figure number (as a string)
+ wxChar *sectionName; // name e.g. 'section'
+ TexRef(const wxChar *label, const wxChar *file, const wxChar *section, const wxChar *sectionN = NULL);
~TexRef(void);
};
*
*/
-void AddTexRef(char *name, char *file = NULL, char *sectionName = NULL,
+void AddTexRef(wxChar *name, wxChar *file = NULL, wxChar *sectionName = NULL,
int chapter = 0, int section = 0, int subsection = 0, int subsubsection = 0);
/*
* Read and write reference file (.ref), to resolve refs for second pass.
*
*/
-void WriteTexReferences(char *filename);
-void ReadTexReferences(char *filename);
+void WriteTexReferences(wxChar *filename);
+void ReadTexReferences(wxChar *filename);
/*
* Bibliography stuff
class BibEntry: public wxObject
{
public:
- char *key;
+ wxChar *key;
/*
* book, inbook, article, phdthesis, inproceedings, techreport
*/
- char *type;
+ wxChar *type;
/*
* Possible fields
*
*/
- char *editor;
- char *title;
- char *booktitle;
- char *author;
- char *journal;
- char *volume;
- char *number;
- char *year;
- char *month;
- char *pages;
- char *chapter;
- char *publisher;
- char *address;
- char *institution;
- char *organization;
- char *comment;
+ wxChar *editor;
+ wxChar *title;
+ wxChar *booktitle;
+ wxChar *author;
+ wxChar *journal;
+ wxChar *volume;
+ wxChar *number;
+ wxChar *year;
+ wxChar *month;
+ wxChar *pages;
+ wxChar *chapter;
+ wxChar *publisher;
+ wxChar *address;
+ wxChar *institution;
+ wxChar *organization;
+ wxChar *comment;
inline BibEntry(void)
{
extern wxList BibList;
extern wxStringList CitationList;
-bool ReadBib(char *filename);
+bool ReadBib(wxChar *filename);
void OutputBib(void);
void ResolveBibReferences(void);
-void AddCitation(char *citeKey);
-TexRef *FindReference(char *key);
+void AddCitation(wxChar *citeKey);
+TexRef *FindReference(wxChar *key);
/*
* Ability to customize, or at least suppress unknown macro errors
class CustomMacro: public wxObject
{
public:
- char *macroName;
- char *macroBody;
+ wxChar *macroName;
+ wxChar *macroBody;
int noArgs;
- inline CustomMacro(char *name, int args, char *body)
+ inline CustomMacro(wxChar *name, int args, wxChar *body)
{
noArgs = args;
- macroName = copystring(name);
+ macroName = wxStrcpy(new wxChar[wxStrlen(name) + 1], name);
if (body)
- macroBody = copystring(body);
+ macroBody = wxStrcpy(new wxChar[wxStrlen(body) + 1], body);
else
macroBody = NULL;
}
~CustomMacro();
};
-bool ReadCustomMacros(char *filename);
+bool ReadCustomMacros(wxChar *filename);
void ShowCustomMacros(void);
-CustomMacro *FindCustomMacro(char *name);
-char *ParseMultifieldString(char *s, int *pos);
+CustomMacro *FindCustomMacro(wxChar *name);
+wxChar *ParseMultifieldString(wxChar *s, int *pos);
/*
* Colour table stuff
class ColourTableEntry: public wxObject
{
public:
- char *name;
+ wxChar *name;
unsigned int red;
unsigned int green;
unsigned int blue;
- ColourTableEntry(const char *theName, unsigned int r, unsigned int g, unsigned int b);
+ ColourTableEntry(const wxChar *theName, unsigned int r, unsigned int g, unsigned int b);
~ColourTableEntry(void);
};
extern wxList ColourTable;
-extern void AddColour(const char *theName, unsigned int r, unsigned int g, unsigned int b);
-extern int FindColourPosition(char *theName);
+extern void AddColour(const wxChar *theName, unsigned int r, unsigned int g, unsigned int b);
+extern int FindColourPosition(wxChar *theName);
// Converts e.g. "red" -> "#FF0000"
-extern bool FindColourHTMLString(char *theName, char *buf);
+extern bool FindColourHTMLString(wxChar *theName, wxChar *buf);
extern void InitialiseColourTable(void);
#define ltABSTRACT 1