Annotation of Amaya/amaya/amaya.h, revision 1.168

1.8       cvs         1: /*
                      2:  *
                      3:  *  (c) COPYRIGHT MIT and INRIA, 1996.
                      4:  *  Please first read the full copyright statement in file COPYRIGHT.
                      5:  *
                      6:  */
                      7: 
1.59      cvs         8: #ifndef AMAYA_H 
1.1       cvs         9: #define AMAYA_H
                     10: 
1.10      cvs        11: /* Thot interface */
                     12: #include "thot_gui.h"
                     13: #include "thot_sys.h"
1.79      cvs        14: #include "appstruct.h"
1.10      cvs        15: #include "application.h"
                     16: #include "attribute.h"
                     17: #include "browser.h"
                     18: #include "content.h"
                     19: #include "dialog.h"
1.103     cvs        20: #include "fileaccess.h"
1.10      cvs        21: #include "interface.h"
                     22: #include "libmsg.h"
                     23: #include "message.h"
                     24: #include "presentation.h"
                     25: #include "selection.h"
                     26: #include "reference.h"
                     27: #include "tree.h"
                     28: #include "view.h"
1.105     cvs        29: #include "uconvert.h"
1.82      cvs        30: #include "undo.h"
1.1       cvs        31: /* Included headerfiles */
1.10      cvs        32: #include "EDITOR.h"
1.1       cvs        33: #include "HTML.h"
1.84      cvs        34: #include "TextFile.h"
1.1       cvs        35: #include "amayamsg.h"
1.156     cvs        36: #include "parser.h"
1.1       cvs        37: 
1.25      cvs        38: #define NAME_LENGTH     32
                     39: 
1.137     cvs        40: #define HTAppName     TEXT("amaya")
1.163     cvs        41: #define HTAppVersion  TEXT("V3.9")
1.158     cvs        42: #define HTAppDate     TEXT ("")
1.130     cvs        43: 
                     44: #define URL_STR       "/"
                     45: #define URL_SEP       '/'
                     46: #define WC_URL_STR    TEXT ("/")
                     47: #define WC_URL_SEP    TEXT ('/')
1.105     cvs        48: 
1.36      cvs        49: 
1.94      cvs        50: /* Number of views used in Amaya */
                     51: #define AMAYA_MAX_VIEW_DOC  7
                     52: 
1.141     cvs        53: /* the type of character convertion we want to make on local URLs */
                     54: typedef enum _ConvertionType
                     55: {
                     56:   AM_CONV_NONE = 0,
                     57:   AM_CONV_URL_SEP = 0x1, /* converts URL_SEPs into DIR_SEPs */
                     58:   AM_CONV_PERCENT = 0x2, /* converts %xx into the equiv. char */
                     59:   AM_CONV_ALL = 0xFFFF   /* do everything */
                     60: }
                     61: ConvertionType;
                     62: 
1.139     cvs        63: /* the HTTP header name we want to make visible to the application */
                     64: typedef enum _AHTHeaderName
                     65:   {
                     66:     AM_HTTP_CONTENT_TYPE = 0,
                     67:     AM_HTTP_CHARSET = 1
                     68:   } 
                     69: AHTHeaderName;
                     70: 
                     71: /* the structure used for exchanging HTTP header info between the net library
                     72:    and amaya */
                     73: typedef struct _AHTHeaders
                     74:   {
                     75:     CHAR_T *content_type;
                     76:     CHAR_T *charset;
                     77:   }
                     78: AHTHeaders;
                     79: 
1.50      cvs        80: /* The structures used for request callbacks */
                     81: typedef void   TIcbf (Document doc, int status, char *urlName,
1.139     cvs        82:                      char *outputfile, const AHTHeaders *http_headers,
1.50      cvs        83:                      const char *data_block, int data_block_size,
                     84:                      void *context);
                     85: 
1.138     cvs        86: typedef void  TTcbf (Document doc, int status, CHAR_T* urlName,
1.139     cvs        87:                      CHAR_T* outputfile, const AHTHeaders *http_headers,
1.50      cvs        88:                      void *context);
                     89: 
1.25      cvs        90: /* How are Network accesses provided ? */
                     91: #include "libwww.h"
1.1       cvs        92: 
1.66      cvs        93: /* The different events to open a new document */
1.41      cvs        94: typedef enum _ClickEvent {
1.73      cvs        95:   CE_ABSOLUTE, CE_RELATIVE, CE_FORM_POST, CE_FORM_GET,
1.153     cvs        96:   CE_HELP, CE_MAKEBOOK, CE_LOG , CE_TEMPLATE, CE_INIT,
                     97:   CE_ANNOT
1.41      cvs        98: } ClickEvent;
1.20      cvs        99: 
                    100: #define NO               0
                    101: #define YES              1
                    102: 
1.165     cvs       103: /* dialogues */
1.20      cvs       104: #define URLForm          1
1.29      cvs       105: #define OpenForm         2
                    106: #define URLName          3
                    107: #define LocalName        4
                    108: #define DirSelect        5
                    109: #define DocSelect        6
1.20      cvs       110: #define StopCommand      7
1.29      cvs       111: #define SaveForm         8
1.20      cvs       112: #define DirSave          9
                    113: #define DocSave         10
                    114: #define ToggleSave      11
1.29      cvs       115: #define NameSave        12
1.30      cvs       116: #define ImgDirSave      13
                    117: #define Label1          14
                    118: #define Label2          15
                    119: #define Label3          16
                    120: #define Label4          17
1.29      cvs       121: #define ConfirmForm     18
                    122: #define ConfirmText     19
1.20      cvs       123: #define AttrHREFForm    20
                    124: #define AttrHREFText    21
                    125: #define FormAnswer      22
1.120     cvs       126: #define RealmText       23
1.20      cvs       127: #define AnswerText      24
                    128: #define NameText        25
                    129: #define PasswordText    26
1.30      cvs       130: #define FilterText      27
                    131: #define ClassForm       28
1.20      cvs       132: #define ClassSelect     29
                    133: #define AClassForm      30
1.30      cvs       134: #define AClassSelect    31
                    135: #define ConfirmSave     32
                    136: #define ConfirmSaveList 33
1.168   ! cvs       137: #define HREFDirSelect   34
        !           138: #define HREFDocSelect   35
        !           139: #define HREFFilterText  36
        !           140: #define HREFLocalName   37
        !           141: #define OptionMenu     38
1.134     cvs       142: /* MAX_SUBMENUS references reserved for submenus of Option menu */
                    143: /* Do not insert new entries here */
1.91      cvs       144: #define MAX_SUBMENUS    400
                    145: #define About1         435
                    146: #define About2         436
                    147: #define About3         437
                    148: #define Version                438
                    149: #define AboutForm              439
1.92      cvs       150: #define TableForm       440
                    151: #define TableRows       441
                    152: #define TableCols       442
                    153: #define TableBorder     443
1.134     cvs       154: #define MathEntityForm  444
                    155: #define MathEntityText  445
1.142     cvs       156: #define TitleForm       446
                    157: #define TitleText       447
                    158: #define MAX_REF         448
1.20      cvs       159: 
1.150     cvs       160: #define FormPrint        1
                    161: #define PrintOptions     2
                    162: #define PaperFormat      3
                    163: #define PrintSupport     4
                    164: #define PPrinterName     5
                    165: #define PaperOrientation 6
                    166: #define PPagesPerSheet   7
                    167: #define PRINT_MAX_REF   8
1.147     cvs       168: 
                    169: #define ImageURL       1
                    170: #define ImageLabel     2
                    171: #define ImageLabel2    3
                    172: #define ImageLabel3    4
                    173: #define ImageLabel4    5
                    174: #define ImageDir       6
                    175: #define ImageSel       7
                    176: #define ImageFilter     8
                    177: #define FormImage      9
                    178: #define RepeatImage    10
                    179: #define FormBackground 11
                    180: #define ImageAlt       12
                    181: #define FormAlt        13
                    182: #define IMAGE_MAX_REF  14
                    183: 
                    184: #define CSSForm         0
                    185: #define CSSSelect       1
                    186: #define MAX_CSS_REF     2
                    187: 
                    188: #define FormMaths 0
                    189: #define MenuMaths 1
                    190: #define MAX_MATHS  2
                    191: 
1.165     cvs       192: #ifdef GRAPHML
                    193: #define FormGraph 0
                    194: #define MenuGraph 1
                    195: #define MAX_GRAPH 2
                    196: #endif /* GRAPHML */
                    197: 
1.11      cvs       198: /* The possible GET/POST/PUT request modes */
                    199: /*synchronous request*/
                    200: #define AMAYA_SYNC     1       /*0x000001 */  
                    201: /*synchronous request with incremental callbacks */
                    202: #define AMAYA_ISYNC    2       /*0x000010 */  
                    203: /*asynchronous request */
1.5       cvs       204: #define AMAYA_ASYNC    4       /*0x000100 */
1.11      cvs       205: /*asynchronous request with incremental callbacks */
1.5       cvs       206: #define AMAYA_IASYNC   8       /*0x001000 */
1.11      cvs       207: /* send the form using the POST HTTP method */
1.5       cvs       208: #define AMAYA_FORM_POST 16     /*0x010000 */
1.11      cvs       209: /* send the form using the GET HTTP method */
1.5       cvs       210: #define AMAYA_FORM_GET  32     /*0x100000 */
1.23      cvs       211: /* bypass caching */
                    212: #define AMAYA_NOCACHE  64
                    213: /* don't follow redirections */
                    214: #define AMAYA_NOREDIR  128
1.48      cvs       215: /* Prevents a stop race condition in ASYNC transfers */
                    216: #define AMAYA_ASYNC_SAFE_STOP  256
1.60      cvs       217: #define AMAYA_LOAD_CSS   512
1.67      cvs       218: #define AMAYA_FLUSH_REQUEST 1024
1.80      cvs       219: #define AMAYA_USE_PRECONDITIONS 2048
1.123     cvs       220: #define AMAYA_LOAD_IMAGE 4096
1.167     kahan     221: /* post an annonation */
                    222: #define AMAYA_FILE_POST 8192
                    223: /* delete an annotation */
                    224: #define AMAYA_DELETE    16384
1.87      cvs       225: 
                    226: /*
                    227:  * Flags to indicate the action to take when the network options
                    228:  * are modified
                    229:  */
                    230: #define AMAYA_CACHE_RESTART 1
                    231: #define AMAYA_PROXY_RESTART 2
1.114     cvs       232: #define AMAYA_LANNEG_RESTART 4
                    233: #define AMAYA_SAFEPUT_RESTART 8
1.87      cvs       234: 
1.26      cvs       235: /*
                    236:  * Flags to indicate the status of the network requests associated
                    237:  * to a document.
                    238:  */
                    239: 
                    240: #define AMAYA_NET_INACTIVE 1
                    241: #define AMAYA_NET_ERROR    2
                    242: #define AMAYA_NET_ACTIVE   4
                    243: 
1.25      cvs       244: /*
                    245:  * Flags for HTParse, specifying which parts of the URL are needed
                    246:  */
                    247: #define AMAYA_PARSE_ACCESS      16  /* Access scheme, e.g. "HTTP" */
                    248: #define AMAYA_PARSE_HOST        8   /* Host name, e.g. "www.w3.org" */
                    249: #define AMAYA_PARSE_PATH        4   /* URL Path, e.g. "pub/WWW/TheProject.html" */
                    250: #define AMAYA_PARSE_ANCHOR      2   /* Fragment identifier, e.g. "news" */
                    251: #define AMAYA_PARSE_PUNCTUATION 1   /* Include delimiters, e.g, "/" and ":" */
                    252: #define AMAYA_PARSE_ALL         31  /* All the parts */
1.1       cvs       253: 
1.149     cvs       254: THOT_EXPORT int          AMAYA;     /* Index of amaya message table */
1.14      cvs       255: THOT_EXPORT int          appArgc;
1.137     cvs       256: THOT_EXPORT CHAR_T**     appArgv;
                    257: THOT_EXPORT CHAR_T       TempFileDirectory[MAX_LENGTH];
1.105     cvs       258: THOT_EXPORT CHAR_T       Answer_text[MAX_LENGTH];
                    259: THOT_EXPORT CHAR_T       Answer_name[NAME_LENGTH];
                    260: THOT_EXPORT CHAR_T       Answer_password[NAME_LENGTH];
                    261: THOT_EXPORT CHAR_T       Display_password[NAME_LENGTH];
                    262: THOT_EXPORT CHAR_T       ScanFilter[NAME_LENGTH]; /* to scan directories    */
1.134     cvs       263: THOT_EXPORT CHAR_T       MathMLEntityName[MAX_LENGTH]; /* entity name typed by the user for a MathML expression */
1.147     cvs       264: THOT_EXPORT CHAR_T       ImgFilter[NAME_LENGTH];
1.137     cvs       265: THOT_EXPORT CHAR_T*      LastURLName;  /* last URL requested               */
                    266: THOT_EXPORT CHAR_T*      DirectoryName;        /* local path of the document       */
                    267: THOT_EXPORT CHAR_T*      DocumentName; /* document name                    */
                    268: THOT_EXPORT CHAR_T*      SavePath;     /* saving path                      */
                    269: THOT_EXPORT CHAR_T*      SaveName;     /* saving name of the document      */
1.105     cvs       270: THOT_EXPORT STRING       ObjectName;   /* document name                    */
                    271: THOT_EXPORT STRING       SaveImgsURL;  /* where to save remote Images      */
                    272: THOT_EXPORT STRING       TargetName;
                    273: THOT_EXPORT STRING       SavingFile;   /* complete path or URL of the document */
1.45      cvs       274: THOT_EXPORT int          Lg_password;
                    275: THOT_EXPORT int          BaseDialog;
1.147     cvs       276: THOT_EXPORT int          BasePrint;
                    277: THOT_EXPORT int          BaseImage;
                    278: THOT_EXPORT int                 MathsDialogue;
1.165     cvs       279: #ifdef GRAPHML
                    280: THOT_EXPORT int                 GraphDialogue;
                    281: #endif /* GRAPHML */
1.147     cvs       282: THOT_EXPORT int                 BaseCSS;
1.14      cvs       283: THOT_EXPORT int          ReturnOption;
1.70      cvs       284: THOT_EXPORT int          NumberRows;
                    285: THOT_EXPORT int          NumberCols;
                    286: THOT_EXPORT int          TBorder;
1.69      cvs       287: THOT_EXPORT int          ReturnOptionMenu;
1.14      cvs       288: THOT_EXPORT Document     CurrentDocument;
                    289: THOT_EXPORT Document     SavingDocument;
                    290: THOT_EXPORT Document     SavingObject;
                    291: THOT_EXPORT Document     AttrHREFdocument;
1.45      cvs       292: THOT_EXPORT Document     DocBook;
                    293: THOT_EXPORT Document     IncludedDocument;
1.14      cvs       294: THOT_EXPORT Element      AttrHREFelement;
1.95      cvs       295: THOT_EXPORT STRING       AttrHREFvalue;
1.14      cvs       296: THOT_EXPORT Document     SelectionDoc;
1.113     cvs       297: THOT_EXPORT ThotBool    IsNewAnchor;
1.115     cvs       298: THOT_EXPORT ThotBool    UseLastTarget;
1.116     cvs       299: THOT_EXPORT ThotBool    LinkAsCSS;
1.98      cvs       300: THOT_EXPORT ThotBool    SaveAsHTML;
                    301: THOT_EXPORT ThotBool    SaveAsXHTML;
                    302: THOT_EXPORT ThotBool    SaveAsText;
                    303: THOT_EXPORT ThotBool     CopyImages;   /* should we copy images in Save As */
                    304: THOT_EXPORT ThotBool     UpdateURLs;   /* should we update URLs in Save As */
                    305: THOT_EXPORT ThotBool     UserAnswer;
                    306: THOT_EXPORT ThotBool     InNewWindow;
                    307: THOT_EXPORT ThotBool     SelectionInPRE;
                    308: THOT_EXPORT ThotBool     SelectionInComment;
                    309: THOT_EXPORT ThotBool     SelectionInEM;
                    310: THOT_EXPORT ThotBool     SelectionInSTRONG;
                    311: THOT_EXPORT ThotBool     SelectionInCITE;
                    312: THOT_EXPORT ThotBool     SelectionInABBR;
                    313: THOT_EXPORT ThotBool     SelectionInACRONYM;
                    314: THOT_EXPORT ThotBool     SelectionInINS;
                    315: THOT_EXPORT ThotBool     SelectionInDEL;
                    316: THOT_EXPORT ThotBool     SelectionInDFN;
                    317: THOT_EXPORT ThotBool     SelectionInCODE;
                    318: THOT_EXPORT ThotBool     SelectionInVAR;
                    319: THOT_EXPORT ThotBool     SelectionInSAMP;
                    320: THOT_EXPORT ThotBool     SelectionInKBD;
                    321: THOT_EXPORT ThotBool     SelectionInI;
                    322: THOT_EXPORT ThotBool     SelectionInB;
                    323: THOT_EXPORT ThotBool     SelectionInTT;
                    324: THOT_EXPORT ThotBool     SelectionInBIG;
                    325: THOT_EXPORT ThotBool     SelectionInSMALL;
1.100     cvs       326: THOT_EXPORT ThotBool     SelectionInSub;
                    327: THOT_EXPORT ThotBool     SelectionInSup;
                    328: THOT_EXPORT ThotBool     SelectionInQuote;
                    329: THOT_EXPORT ThotBool     SelectionInBDO;
1.108     cvs       330: THOT_EXPORT ThotBool     HTMLErrorsFound;
1.157     cvs       331: THOT_EXPORT ThotBool     XMLabort;
1.160     cvs       332: THOT_EXPORT FILE*        ErrFile;
                    333: THOT_EXPORT CHAR_T       ErrFileName [80];
1.53      cvs       334: typedef enum
                    335: {
                    336:   docHTML,
1.74      cvs       337:   docText,
1.75      cvs       338:   docImage,
1.85      cvs       339:   docCSS,
1.110     cvs       340:   docSource,
1.127     cvs       341:   docAnnot,
1.164     cvs       342:   docLog,
                    343:   docSVG,
                    344:   docMath,
1.53      cvs       345: } DocumentType;
1.64      cvs       346: 
                    347: 
                    348: /* a record for data associated with a request */
                    349: typedef struct _DocumentMetaDataElement
                    350: {
1.162     kahan     351:   CHAR_T*    initial_url;      /* if the server returns a different URL name
1.161     kahan     352:                                  after a redirection, we store here the one
                    353:                                  that the browser first asked */
1.166     cvs       354:   CHAR_T*    form_data;        /* form data associated with a URL */
                    355:   ClickEvent method;           /* method used to send this data */
                    356:   ThotBool   put_default_name; /* URL name was concatenated with DEFAULT_NAME*/
1.135     cvs       357:   ThotBool   xmlformat;        /* the document should be exported in xml format */
1.166     cvs       358:   
1.144     kahan     359: #ifdef ANNOTATIONS
                    360:   Document   source_doc;       /* if the document is an annotation,
                    361:                                  this variable giveso the annoted document
                    362:                                  docid */
                    363: #endif /* ANNOTATIONS */
1.64      cvs       364: } DocumentMetaDataElement;
                    365: 
1.1       cvs       366: #define DocumentTableLength 10
1.110     cvs       367: /* URL of each loaded document */
1.137     cvs       368: THOT_EXPORT CHAR_T* DocumentURLs[DocumentTableLength];
1.64      cvs       369: /* Any formdata associated with a URL */
                    370: THOT_EXPORT DocumentMetaDataElement *DocumentMeta[DocumentTableLength];
1.110     cvs       371: /* Type of document */
1.53      cvs       372: THOT_EXPORT DocumentType DocumentTypes[DocumentTableLength];
1.166     cvs       373: /* Document is in read only mode */
                    374: THOT_EXPORT ThotBool ReadOnlyDocument[DocumentTableLength];
1.110     cvs       375: /* identifier of the document displaying the source code */
                    376: THOT_EXPORT Document DocumentSource[DocumentTableLength];
                    377: /* The whole document is loaded when the corresponding entry in FilesLoading is 0 */
1.14      cvs       378: THOT_EXPORT int          FilesLoading[DocumentTableLength];
1.110     cvs       379: /* Status (error, success) of the download of the objects of a document */
                    380: THOT_EXPORT int          DocNetworkStatus[DocumentTableLength];
1.156     cvs       381: /* Status of the XHTML document (basic, strict, transitional) */
                    382: THOT_EXPORT int          ParsingLevel[DocumentTableLength];
1.42      cvs       383: 
1.14      cvs       384: THOT_EXPORT Document     W3Loading;    /* the document being loaded */
1.65      cvs       385: THOT_EXPORT Document     BackupDocument;       /* the current backup */
1.104     cvs       386: 
                    387: /* button indexes */
                    388: THOT_EXPORT int iStop;
                    389: THOT_EXPORT int iBack;
                    390: THOT_EXPORT int iForward;
                    391: THOT_EXPORT int iReload;
                    392: THOT_EXPORT int iHome;
                    393: THOT_EXPORT int iEditor;
                    394: THOT_EXPORT int iSave;
                    395: THOT_EXPORT int iPrint;
                    396: THOT_EXPORT int iFind;
                    397: THOT_EXPORT int iI;
                    398: THOT_EXPORT int iB;
                    399: THOT_EXPORT int iT;
                    400: THOT_EXPORT int iImage;
                    401: THOT_EXPORT int iH1;
                    402: THOT_EXPORT int iH2;
                    403: THOT_EXPORT int iH3;
                    404: THOT_EXPORT int iBullet;
                    405: THOT_EXPORT int iNum;
                    406: THOT_EXPORT int iDL;
                    407: THOT_EXPORT int iLink;
                    408: THOT_EXPORT int iTable;
1.5       cvs       409: 
1.64      cvs       410: #define IMAGE_NOT_LOADED        0
1.1       cvs       411: #define IMAGE_LOCAL            1
                    412: #define IMAGE_LOADED           2
                    413: #define IMAGE_MODIFIED         3
                    414: 
1.109     cvs       415: 
1.27      cvs       416: #ifdef __STDC__
1.137     cvs       417: typedef void (*LoadedImageCallback)(Document doc, Element el, CHAR_T* file, void *extra);
1.27      cvs       418: #else
                    419: typedef void (*LoadedImageCallback)();
                    420: #endif
1.109     cvs       421: 
1.5       cvs       422: typedef struct _ElemImage
                    423:   {
1.27      cvs       424:      Element             currentElement;/* first element using this image */
1.5       cvs       425:      struct _ElemImage  *nextElement;
1.27      cvs       426:      LoadedImageCallback callback;     /* Callback for non-standard handling */
                    427:      void              *extra;         /* any extra info for the CallBack */
1.5       cvs       428:   }
                    429: ElemImage;
                    430: 
                    431: typedef struct _LoadedImageDesc
                    432:   {
1.105     cvs       433:      STRING          originalName;     /* complete URL of the image                */
                    434:      STRING          localName;        /* local name (without path) of the image   */
1.58      cvs       435:      struct _LoadedImageDesc *prevImage;/* double linked list                       */
                    436:      struct _LoadedImageDesc *nextImage;/* easier to unchain                        */
                    437:      Document            document;     /* document concerned                       */
                    438:      struct _ElemImage  *elImage;      /* first element using this image           */
                    439:      int                 imageType;     /* the type of the image                    */
                    440:      int                 status;       /* the status of the image loading          */
1.5       cvs       441:   }
                    442: LoadedImageDesc;
1.109     cvs       443: 
                    444: /* the structure used for storing the context of the 
                    445:    FetchAndDisplayImages_callback function */
                    446: typedef struct _FetchImage_context {
                    447:   STRING base_url;
                    448:   LoadedImageDesc    *desc;
                    449: } FetchImage_context;
                    450: 
1.5       cvs       451: 
1.14      cvs       452: THOT_EXPORT LoadedImageDesc *ImageURLs;
1.31      cvs       453: THOT_EXPORT LoadedImageDesc *ImageLocal;
1.1       cvs       454: 
1.88      cvs       455: /* The default Amaya HOME pages (page shown at boot time */
                    456: 
1.137     cvs       457: #ifdef _WINDOWS
                    458: #      define AMAYA_PAGE  TEXT("\\amaya\\AmayaPage.html")
                    459: #else  /* !_WINDOWS */
                    460: #      define AMAYA_PAGE  TEXT("/amaya/AmayaPage.html")
                    461: #endif /* !_WINDOWS */
                    462: 
                    463: #define   AMAYA_PAGE_DOC  TEXT("http://www.w3.org/Amaya/User/")
                    464: 
                    465: #ifndef MAX_TXT_LEN
                    466: #define MAX_TXT_LEN 1024       /* Max. length of strings */
                    467: #endif  /* MAX_TXT_LEN */
1.88      cvs       468: 
1.25      cvs       469: #endif /* AMAYA_H */

Webmaster